
[space] Litmus Documentation

[title] Litmus Documentation
[path] /

# Litmus Documentation

You have reached the documentation index. Pick a documentation set below to get
where you were headed.

## Platform

- [Litmus Edge](https://docs.litmus.io/litmusedge) - current 4.0.x. Earlier versions: [3.16.x](https://docs.litmus.io/litmusedge-v2), [3.11.x and older](https://docs.litmus.io/litmusedge-v1)
- [Litmus Edge Manager](https://docs.litmus.io/edgemanager)
- [Litmus Unify](https://docs.litmus.io/unify) - current 2.0.x. Earlier version: [UNS 1.3.x](https://docs.litmus.io/uns)
- [Solutions](https://docs.litmus.io/solutions)

## Build and automate

- [Litmus API Portal](https://docs.litmus.io/api-docs) - REST and GraphQL reference for Edge, Edge Manager, and Unify
- [Litmus SDK - Python](https://docs.litmus.io/sdk) - Python client and the litmus-cli command line tool
- [Litmus MCP Server](https://docs.litmus.io/litmus-mcp-server) - Model Context Protocol server for AI agents

## Get help

- [Support portal](https://support.litmus.io) - raise a ticket and track it
- [Central Portal](https://portal.litmus.io) - downloads, licences, and your account

Looking for the main documentation home page? Go to [docs.litmus.io](https://docs.litmus.io/).

[space] Litmus API Portal (/api-docs)

[title] Digital Twins
[path] API Reference/

# Digital Twins (LE)

42 endpoints in 4.0.x. GraphQL on `/digitaltwins/v2`. Model hierarchical asset / data trees ("twins") that mirror physical equipment and roll up tag data.

:::BlockQuote
**Run these endpoints:** open the [Digital Twins folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#731012ed-3420-488c-8118-008c360625ea).
:::

## Capabilities

- Define a **Model** (the schema / hierarchy template)
- Instantiate a Model as a **Root Node**, then add **Child Nodes** under it
- Bind nodes to DeviceHub tags
- Query the tree (list, search, get-by-path)
- Import / export models as JSON

## Typical operations

| Operation                    | Purpose                          |
| ---------------------------- | -------------------------------- |
| `ListModels`                 | All models defined on the edge   |
| `CreateModel`                | Define a new model schema        |
| `UpdateModel`, `DeleteModel` | Edit / remove                    |
| `ImportModel`, `ExportModel` | JSON round-trip                  |
| `CreateRootNode`             | Instantiate a model              |
| `CreateNode`                 | Add a child node                 |
| `GetNode`, `GetNodeByPath`   | Read                             |
| `UpdateNode`, `DeleteNode`   | Mutate                           |
| `BindTagToNode`              | Attach a DeviceHub tag to a node |

:::BlockQuote
For the LEM counterpart (push twins to many edges), see [LEM Digital Twins / Asset Management]().
:::


[title] Operations
[path] /


[title] DeviceHub Browse (Bulk Tag Discovery)
[path] Workflows/

# DeviceHub Browse (Bulk Tag Discovery)

**UI trigger**: DeviceHub -> Browse -> Select tags -> Create All.

The Browse workflow auto-discovers a device's full address space (e.g. all OPC UA nodes or Modbus registers) and lets users select which ones to import as tags - without manually entering each one.

## Step table

| Step | API Name                          | Method | Endpoint / GraphQL Operation                                     | Input                              | Output / What to capture                                   |
| ---- | --------------------------------- | ------ | ---------------------------------------------------------------- | ---------------------------------- | ---------------------------------------------------------- |
| 1    | Create Browse Task                | `POST` | `{{edgeUrl}}/devicehub/v2` -> `CreateBrowseTask`                 | Device ID + browse params          | Browse Task `ID`                                           |
| 2    | Start Browse Task                 | `POST` | `{{edgeUrl}}/devicehub/v2` -> `StartBrowseTasks`                 | Browse Task `ID` from step 1       | Task starts crawling                                       |
| 3    | List Browse Tasks (poll)          | `POST` | `{{edgeUrl}}/devicehub/v2` -> `ListBrowseTasks`                  | -                                  | Poll until `Status = Completed`                            |
| 4    | Get Browse Task Folders           | `POST` | `{{edgeUrl}}/devicehub/v2` -> `BrowseTask_GetFoldersForTreeView` | Browse Task `ID`                   | Folder tree of discovered address space                    |
| 5    | Get Browse Folder Items           | `POST` | `{{edgeUrl}}/devicehub/v2` -> `BrowseTask_GetFolderItems`        | Folder path within the browse task | Items (tags/nodes) in that folder                          |
| 6    | Cart Add Items                    | `POST` | `{{edgeUrl}}/devicehub/v2` -> `Cart_AddItems`                    | Selected item IDs from step 5      | Items added to cart (`Added`, `Skipped`, `Updated` counts) |
| 6b   | Cart Update Properties (optional) | `POST` | `{{edgeUrl}}/devicehub/v2` -> `Cart_UpdateProperties`            | Cart item IDs + property overrides | Updated counts                                             |
| 7    | Cart Create All Registers         | `POST` | `{{edgeUrl}}/devicehub/v2` -> `Cart_CreateAllRegisters`          | No input - processes entire cart   | `Created`, `Skipped`, `Updated` counts - tags now exist    |

## Also useful

`Download Browse Tags` (`GET /devicehub/browsing/download_csv/task/{task_id}`) exports discovered tags to CSV before committing. Lets users review in Excel before creating.

## Driver support

Browse only works on drivers that support it (38 of \~146). OPC UA Advanced, AB Logix, Siemens S7CommPlus, and most modern Ethernet drivers do. Modbus (no enumeration capability), Generator (simulator), and several legacy serial drivers do not. See [Browse and Discovery]() for the support matrix.

## See also

- [Browse and Discovery concept]()
- [OPC UA Advanced Driver]()

[title] Upload Custom CA Certificate (LE)
[path] Workflows/

# Upload Custom CA Certificate (LE)

**UI trigger**: System -> Network -> Certificates -> *Upload Custom CA Certificate*.

:::BlockQuote
No Step 0 here - the certificate store doesn't require clearing existing sessions first.
:::

## Step table

| Step | Name in Collection                   | Method | Endpoint                               | Body / Notes                      | Output                        |
| ---- | ------------------------------------ | ------ | -------------------------------------- | --------------------------------- | ----------------------------- |
| 1    | Step 1: Upload Custom CA Certificate | `POST` | `{{edgeUrl}}/dm/certstore`             | `{"size": <cert_bytes>}`          | `{"id": "<upload_id>"}`       |
| 2    | Step 2: Upload Custom Certificate    | `PUT`  | `{{edgeUrl}}/dm/certstore/{upload_id}` | Binary `.pem` / `.crt` file bytes | 200 OK, certificate installed |

Once installed, the edge can connect to internal services signed by your CA without `-k` / `verify=False` workarounds. See [SSL Certificates]().

[title] SSL Certificates
[path] Getting Started/

# SSL Certificates

Litmus Edge ships with a self-signed certificate. Until you install your own CA, clients will reject the connection.

## Quick fix (development only)

Disable certificate verification on the client:

| Tool                   | Flag                                                      |
| ---------------------- | --------------------------------------------------------- |
| cURL                   | `-k` or `--insecure`                                      |
| Python `requests`      | `verify=False`                                            |
| Postman                | Settings -> General -> "SSL certificate verification" off |
| Node `https` / `fetch` | `rejectUnauthorized: false`                               |

```bash
curl -k "https://<edge-host>/devicehub/version" -H "Authorization: Bearer $TOKEN"
```

:::BlockQuote
Never do this against production traffic. It opens you to MITM.
:::

## Production fix

Install a CA-signed certificate on the edge:

1. System -> Network -> Certificates -> Upload Custom Certificate
2. Or use the Upload Custom CA Certificate workflow: see [Upload Custom CA Certificate (LE)](docId:28rH--yWuRRNllnEREt4Y)

Once installed, drop `-k` / `verify=False` from your clients.

## Trusting the edge's self-signed cert

If you don't want a public CA cert but still want clients to validate, export the edge's self-signed cert and add it to your client's trust store:

```bash
echo | openssl s_client -connect <edge-host>:443 -servername <edge-host> 2>/dev/null \
  | openssl x509 > edge.crt

# Python
export REQUESTS_CA_BUNDLE=$(pwd)/edge.crt

# curl
curl --cacert edge.crt "https://<edge-host>/devicehub/version" ...
```


[title] Resumable Uploads
[path] Concepts/

# Resumable Uploads

Litmus Edge uses a three-step resumable upload pattern for any operation that ingests a file: templates, backups, certificates, analytics models. The pattern is the same; only the path changes.

## The pattern

| Phase             | Method   | What it does                               | Body                |
| ----------------- | -------- | ------------------------------------------ | ------------------- |
| 0. Clear          | `DELETE` | Remove any incomplete/stale upload session | none                |
| 1. Create session | `POST`   | Declare file size, get a session `id` back | `{"size": <bytes>}` |
| 2. Upload         | `PUT`    | Stream the file bytes into the session     | binary file body    |

:::BlockQuote
**Why DELETE first?** If a previous upload was interrupted (network drop, browser close), the session persists on the server. Deleting it first ensures a clean state and prevents 409 Conflict.
:::

## Endpoints that use it

| Workflow                | Base path                        | Page           |
| ----------------------- | -------------------------------- | -------------- |
| Apply / Upload Template | `/dm/template/v2`                | [Workflow 1]() |
| Restore Backup          | `/dm/backup/v2`                  | [Workflow 2]() |
| Upload Custom CA        | `/dm/certstore` (no DELETE step) | [Workflow 3]() |
| Upload Analytics Model  | `/analytics/v2/upload_model/v2`  | [Workflow 4]() |

## Step 2 (PUT) URL shapes

The PUT URL is slightly different per module:

| Module          | PUT URL shape                                       |
| --------------- | --------------------------------------------------- |
| Template        | `/dm/template/v2/{session_id}/resume`               |
| Backup          | `/dm/backup/v2/{session_id}/resume`                 |
| Cert store      | `/dm/certstore/{session_id}` (no `/resume` suffix)  |
| Analytics model | `/analytics/v2/upload_model/v2/resume/{session_id}` |

## Example: apply a template

```bash
# Step 0: clear any stale session
curl -X DELETE "$EDGE/dm/template/v2" \
  -H "Authorization: Bearer $TOKEN"

# Step 1: declare size
SIZE=$(stat -c%s mytemplate.zip)
ID=$(curl -sX POST "$EDGE/dm/template/v2" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"size\": $SIZE}" | jq -r .id)

# Step 2: upload bytes
curl -X PUT "$EDGE/dm/template/v2/$ID/resume" \
  -H "Authorization: Bearer $TOKEN" \
  --data-binary @mytemplate.zip
```

## LEM uploads are different

LEM does **not** use this pattern. LEM ML model upload uses a pre-signed S3 URL:

1. `POST .../mlModel/{filename}/upload-url` returns a signed S3 URL
2. `PUT <signed url>` uploads bytes **directly to S3** (no auth header needed - SigV4 is baked into the URL)
3. `POST .../mlModel/{filename}` commits / registers the model in LEM

See [Upload AI/ML Model to LEM]().

[title] Analytics
[path] API Reference/

# Analytics (LE)

39 endpoints in 4.0.x. REST under `/analytics/...`. Run real-time computations on DeviceHub tag values - thresholds, aggregations, custom Python, and TensorFlow inference.

:::BlockQuote
**Run these endpoints:** open the [Analytics folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#cb468825-dca2-4803-94b7-fcafa4a08169).
:::

## Capabilities

- **Processors**: per-tag or per-group calculation jobs (sliding-window aggregates, custom expressions)
- **Groups**: group multiple tags for batch processing
- **AI Models**: upload TensorFlow models, run inference against tag values

## Typical operations

### Processors

| Endpoint                                | Purpose |
| --------------------------------------- | ------- |
| `GET /analytics/processors`             | List    |
| `POST /analytics/processors`            | Create  |
| `PUT /analytics/processors/{id}`        | Update  |
| `DELETE /analytics/processors/{id}`     | Delete  |
| `POST /analytics/processors/{id}/start` | Start   |
| `POST /analytics/processors/{id}/stop`  | Stop    |

### Groups

| Endpoint                        | Purpose |
| ------------------------------- | ------- |
| `GET /analytics/groups`         | List    |
| `POST /analytics/groups`        | Create  |
| `PUT /analytics/groups/{id}`    | Update  |
| `DELETE /analytics/groups/{id}` | Delete  |

### AI Model upload (resumable, 3 steps)

| Step           | Method | Endpoint                                               |
| -------------- | ------ | ------------------------------------------------------ |
| Clear          | DELETE | `/analytics/v2/upload_model/v2`                        |
| Create session | POST   | `/analytics/v2/upload_model/v2` (body: `{size, name}`) |
| Upload bytes   | PUT    | `/analytics/v2/upload_model/v2/resume/{id}`            |

See [Upload Analytics Model workflow]().

[title] Error Handling
[path] Operations/

# Error Handling

How Litmus APIs report errors and what to do about them.

## REST: HTTP status codes

Standard codes, used as you'd expect:

| Code      | Meaning          | Common cause                                                 |
| --------- | ---------------- | ------------------------------------------------------------ |
| 200 / 201 | Success          | --                                                           |
| 204       | No content       | DELETE returned successfully                                 |
| 400       | Validation error | Bad body, missing required field                             |
| 401       | Unauthorized     | Token expired, wrong client\_id/secret, wrong header for LEM |
| 403       | Forbidden        | Token is valid but the user / client lacks permission        |
| 404       | Not found        | Wrong path prefix or unknown resource ID                     |
| 409       | Conflict         | Resumable upload session already open (run DELETE first)     |
| 5xx       | Server error     | Check edge / LEM logs                                        |

Error body shape:

```json
{
  "error": "<short code>",
  "message": "<human readable>"
}
```

## GraphQL: 200 with errors array

GraphQL endpoints (`/devicehub/v2`, `/digitaltwins/v2`, `/cc/v2`, `/opcua/v2`, `/mqtt/gql`) return HTTP 200 even on failure. Errors live in the body:

```json
{
  "data": null,
  "errors": [
    {
      "message": "Driver not found: 12345",
      "path": ["CreateDevice"],
      "extensions": { "code": "NOT_FOUND" }
    }
  ]
}
```

**Always check&#x20;**`body.errors`**&#x20;before reading&#x20;**`body.data` - a non-null `errors` array means the operation failed even though the HTTP status is 200.

Some GraphQL responses return partial data alongside errors (e.g. one entry in a list failed). The contract is: data is what succeeded; errors lists what didn't.

## LEM async-task: per-subtask status

LEM async-task subtasks each carry a `status`:

| Status        | Meaning                                     |
| ------------- | ------------------------------------------- |
| `PENDING`     | Queued, not started                         |
| `IN_PROGRESS` | Running                                     |
| `SUCCESS`     | Done OK                                     |
| `FAILED`      | Done with error; check `errorMessage` field |

A parent task can have some subtasks succeed and some fail. Inspect each subtask, don't aggregate.

## Common 401 traps

| Product          | Header                                           | Wrong header symptom                                      |
| ---------------- | ------------------------------------------------ | --------------------------------------------------------- |
| LE               | `Authorization: Bearer <token>`                  | 401 with "invalid token"                                  |
| LEM `/api/v1/`   | `X-AuthToken: <token>`                           | 401 - using `Bearer` returns "missing token"              |
| LEM `/admin/v1/` | `X-AuthToken: <token>`                           | Same as above                                             |
| LEM `/mpcs/`     | `Authorization: <token>` (no `Bearer` prefix)    | 401 if you add `Bearer` or use `X-AuthToken`              |
| LUNS             | `Authorization: Bearer <token>` (Keycloak token) | 401 if you use the LE token instead of the UNS-issued one |

## Retries

- **Idempotent ops** (GET, PUT, DELETE on a specific ID): safe to retry on 5xx and timeout.
- **POST&#x20;**`CreateX`: not safe to retry blindly - may create duplicates. Either retry with a client-side deduplication key or verify the resource via List before retrying.
- **Async-task launch**: 5xx during step 3 = retry safe (no taskId returned). 5xx during polling = retry safe.
- **Resumable uploads**: if step 2 (PUT bytes) fails, run step 0 (DELETE) and start over - the partial bytes are discarded.

[title] Flows Manager
[path] API Reference/

# Flows Manager (LE)

12 endpoints in 4.0.x. REST under `/flows/...`. Litmus Edge embeds a Node-RED-derived flow engine for low-code data routing and transformation.

:::BlockQuote
**Run these endpoints:** open the [Flows Manager folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#4eefb657-0cff-4940-9a75-cdb640195136).
:::

## Capabilities

- List / create / update / delete flows
- Import / export flow definitions as JSON
- Start, stop, restart the flow engine
- Inspect installed flow nodes

## Typical operations

| Endpoint                 | Purpose                   |
| ------------------------ | ------------------------- |
| `GET /flows/list`        | All flows                 |
| `POST /flows`            | Create a flow             |
| `PUT /flows/{id}`        | Update                    |
| `DELETE /flows/{id}`     | Delete                    |
| `POST /flows/import`     | Import JSON               |
| `GET /flows/export/{id}` | Export JSON               |
| `POST /flows/start`      | Start engine              |
| `POST /flows/stop`       | Stop engine               |
| `GET /flows/nodes`       | Installed flow node types |
| `GET /flows/status`      | Engine health             |


[title] Pagination
[path] Operations/

# Pagination

Conventions vary across modules and protocols. This page documents what's common and where exceptions live.

## REST list endpoints

Most REST list endpoints accept query params:

| Param    | Default     | Notes                                          |
| -------- | ----------- | ---------------------------------------------- |
| `offset` | 0           | Zero-indexed                                   |
| `limit`  | 50 (varies) | Max varies per endpoint; some allow up to 1000 |
| `sort`   | varies      | `field:asc` / `field:desc`                     |
| `filter` | none        | Endpoint-specific                              |

Response shape (typical):

```json
{
  "items": [ ... ],
  "total": 1234,
  "offset": 0,
  "limit": 50
}
```

Use `total` to know how many pages remain.

## GraphQL list operations

Most GraphQL list operations accept an `input` object:

```graphql
query {
  ListDevices(input: {
    Limit: 100,
    Offset: 0,
    Filter: { Name: { Contains: "PLC" } },
    Sort: [{ Field: "Name", Order: "ASC" }]
  }) {
    Items { ID Name }
    Total
  }
}
```

Field casing follows the operation's schema (LE DeviceHub uses PascalCase; LEM uses camelCase). Check the operation on `api.litmus.io` to confirm.

## LEM async-task subtasks

`GET /api/v1/async-task/{taskId}/subtasks` returns **all** subtasks - usually small, no pagination.

`GET /api/v1/async-task/subtasks` (cross-task history) accepts `from` / `to` timestamp filters; pagination via `offset` and `limit`.

## When in doubt

- The endpoint's example on `api.litmus.io` shows the actual parameter names and casing.
- Default limits are conservative - prefer pagination over assuming "all rows fit".
- For very large lists (e.g. tags across thousands of devices), filter at the source (`Filter` in GraphQL, query params in REST) instead of paginating the entire set.

[title] Getting Started
[path] /

# Overview

The Litmus APIs expose everything that powers the Litmus Edge UI, Litmus Edge Manager, and Litmus UNS. Anything you can do in the product UI can be done over the API.

:::BlockQuote
**Tip:** Once you have auth working, you can run every endpoint interactively at [Litmus API Portal](https://api.litmus.io/view/2s9Y5R1RvG) without writing any code.
:::

## Where to find what

| You want...                                                      | Go to                             |
| ---------------------------------------------------------------- | --------------------------------- |
| Per-endpoint request / response schema, try-it-out, code samples | `https://api.litmus.io`           |
| Agent-readable endpoint catalog (LLMs, scripts)                  | `https://api.litmus.io/agents`    |
| Concepts, getting started, multi-step workflows (this site)      | `https://docs.litmus.io/api-docs` |

These three surfaces are designed to be used together. This site is the **navigation and concepts layer** that tells you how the products fit together and which endpoint to reach for; the visual portal at `api.litmus.io` is where you get the schema and run calls.

## What this site covers

- How to authenticate (OAuth2 client credentials)
- Base URLs and environment setup for each product
- Section-level orientation per product / module
- Multi-step workflows the UI runs behind a single button click (create-device-with-tags, browse-and-import, deploy-application, backup-restore, etc.)

## Who this is for

- Integrators connecting Litmus Edge / Manager / UNS to external systems
- Customers automating fleet operations (provisioning, app deploy, backups, alerts)
- Solution engineers and partners building on top of Litmus

## What you need

- A running Litmus Edge / LEM / UNS instance (cloud or on-prem)
- OAuth2 client credentials (Admin generates these from the product UI)
- An HTTP client - cURL, Postman, Python `requests`, or the Litmus Python SDK

## Next steps

1. [Authentication]() - obtain a Bearer token
2. [Base URLs and environments]() - what hostnames/paths to call
3. [First API call]() - confirm everything works end to end
4. [Try it live](https://api.litmus.io)

[title] Base URLs and Environments
[path] Getting Started/

# Base URLs and Environments

Each product has its own host and URL conventions. The most common cause of "my call returns 404" is hitting the wrong base URL or prefix.

## Litmus Edge

Single base URL, multiple module paths.

| Module                     | Path prefix                                           | Protocol       |
| -------------------------- | ----------------------------------------------------- | -------------- |
| Auth                       | `/auth/v3/...`                                        | REST           |
| DeviceHub                  | `/devicehub/v2` (GraphQL) and `/devicehub/...` (REST) | GraphQL + REST |
| Digital Twins              | `/digitaltwins/v2`                                    | GraphQL        |
| DataHub                    | `/datahub/...`                                        | REST           |
| Flows Manager              | `/flows/...`                                          | REST           |
| Analytics                  | `/analytics/...`                                      | REST           |
| Applications               | `/apps/...`                                           | REST           |
| Integration                | `/cc/v2`                                              | GraphQL        |
| OPC UA                     | `/opcua/v2`                                           | GraphQL        |
| System / Device Management | `/dm/...`                                             | REST           |

In Postman / environment files this is `{{edgeUrl}}`.

## Litmus Edge Manager

LEM has **three distinct host/path prefixes**:

| Prefix                          | Used by                                                                 | Roughly         | Auth header                          |
| ------------------------------- | ----------------------------------------------------------------------- | --------------- | ------------------------------------ |
| `{{LEM_URL}}/api/v1/...`        | Main fleet API (projects, devices, alerts, backups, marketplace deploy) | \~158 endpoints | `X-AuthToken`                        |
| `{{LEM_adminURL}}/admin/v1/...` | Admin console (companies, users, LEM-level backups, instance alerts)    | \~144 endpoints | `X-AuthToken`                        |
| `{{LEM_URL}}/mpcs/...`          | Marketplace catalog management                                          | \~13 endpoints  | `Authorization` (no `Bearer` prefix) |

`{{LEM_adminURL}}` typically points to port 8446 on the LEM host. Confirm with your admin.

### Common LEM URL variables

| Variable                                 | Frequency | Notes                             |
| ---------------------------------------- | --------- | --------------------------------- |
| `{{project_id}}`                         | \~99      | LEM project the device belongs to |
| `{{edge_device_id}}`                     | \~48      | Target edge device                |
| `{{company_name}}`                       | \~13      | Company (admin/v1 calls)          |
| `{{marketplace_catalog_id}}`             | \~11      | Catalog under `/mpcs/`            |
| `{{marketplace_catalog_application_id}}` | \~10      | App in a marketplace catalog      |

## Litmus UNS

UNS is **GraphQL-only**. All operations target a single endpoint:

```javascript
POST {{uns_url}}/mqtt/gql
```

The documented sections (Dashboard / UNS / Security / MQTT / Integrations / Tools) are organizational groupings - every request hits `/mqtt/gql` with a different GraphQL operation. There is no REST surface.

## Environment file template

For Postman / scripts:

```javascript
edgeUrl = https://<your-edge-host>
LEM_URL = https://<your-lem-host>
LEM_adminURL = https://<your-lem-host>:8446
uns_url = https://<your-uns-host>

client_id = <le-client-id>
client_secret = <le-client-secret>
LEM_AdminApiToken = <lem-admin-token>
```


[title] Authentication
[path] Getting Started/

# Authentication

All Litmus APIs use OAuth2 `client_credentials`. You exchange a `client_id` and `client_secret` for a short-lived Bearer token, then send that token on every subsequent API call.

## Litmus Edge

### Token endpoint

```javascript
POST {{edgeUrl}}/auth/v3/oauth/token
```

:::BlockQuote
Important: use `/auth/v3/oauth/token`. The Keycloak admin URL (`/auth/realms/...`) you may see in the Edge admin UI is **not** the API token endpoint.
:::

### Request

```bash
curl -X POST "https://<edge-host>/auth/v3/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "client_id=<your_client_id>" \
  -d "client_secret=<your_client_secret>"
```

### Response

```json
{
  "access_token": "eyJhbGciOi...",
  "token_type": "Bearer",
  "expires_in": 3600
}
```

### Using the token

```bash
curl "https://<edge-host>/devicehub/version" \
  -H "Authorization: Bearer eyJhbGciOi..."
```

## Litmus Edge Manager (LEM)

LEM uses a long-lived admin API token rather than OAuth2 exchange. Generate one from the LEM Admin Console.

Two headers are used depending on the endpoint prefix:

| Endpoint prefix | Header                                 |
| --------------- | -------------------------------------- |
| `/api/v1/...`   | `X-AuthToken: <token>`                 |
| `/admin/v1/...` | `X-AuthToken: <token>`                 |
| `/mpcs/...`     | `Authorization: <token>` (no `Bearer`) |

:::BlockQuote
Sending the wrong header returns 401. The `/mpcs/` marketplace endpoints use a plain `Authorization` header value, the other prefixes use `X-AuthToken`. See [LEM base URLs]().
:::

## Litmus UNS

UNS uses OAuth2 password grant against its bundled Keycloak.

```javascript
POST {{uns_url}}/auth/realms/standalone/protocol/openid-connect/token
```

Body (form-encoded): `grant_type=password`, `client_id`, `username`, `password`.

The returned `access_token` is sent as `Authorization: Bearer <token>` on every `/mqtt/gql` GraphQL call.

## Token lifetime and refresh

- LE tokens default to 1 hour (`expires_in: 3600`). Re-fetch before expiry.
- LEM admin tokens are long-lived; rotate via the Admin Console.
- UNS tokens follow the Keycloak realm policy (typically 15-60 minutes).

## Where to get credentials

| Product     | Where                                             |
| ----------- | ------------------------------------------------- |
| Litmus Edge | System -> Settings -> Users -> API Clients        |
| LEM         | Admin Console -> API Tokens                       |
| LUNS        | Admin -> Users (use the configured Keycloak user) |


[title] First API Call
[path] Getting Started/

# Your First API Call

A 60-second sanity check: get a token, hit one endpoint, see a 200.

:::BlockQuote
**Run this call live:** every example on this page also lives in the [Litmus API collection](https://api.litmus.io/view/2s9Y5R1RvG). Open the collection, fork it, paste your token, and hit Send.
:::

## 1. Get a token

```bash
TOKEN=$(curl -sk -X POST "https://<edge-host>/auth/v3/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "client_id=$CLIENT_ID" \
  -d "client_secret=$CLIENT_SECRET" | jq -r .access_token)
```

`-k` skips TLS verification - use only against self-signed dev instances. See [SSL Certificates]() before doing this in production.

## 2. Call a read-only endpoint

```bash
curl -sk "https://<edge-host>/devicehub/version" \
  -H "Authorization: Bearer $TOKEN"
```

Expected: a JSON object with a `Version` field. If you see this, auth and routing work.

## 3. Try a GraphQL call

DeviceHub is GraphQL. List drivers on the edge:

```bash
curl -sk -X POST "https://<edge-host>/devicehub/v2" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"query { ListDriverGroups { ID Name Drivers { ID Name } } }"}'
```

:::BlockQuote
GraphQL endpoints return HTTP 200 even on errors. Check the `errors` key in the response body, not just the status code. See [GraphQL vs REST]().
:::

## Python equivalent

```python
import os, requests

EDGE = os.environ["EDGE_URL"]
r = requests.post(
    f"{EDGE}/auth/v3/oauth/token",
    data={
        "grant_type": "client_credentials",
        "client_id": os.environ["CLIENT_ID"],
        "client_secret": os.environ["CLIENT_SECRET"],
    },
    verify=False,
)
token = r.json()["access_token"]

v = requests.get(f"{EDGE}/devicehub/version",
                 headers={"Authorization": f"Bearer {token}"},
                 verify=False)
print(v.json())
```

## Troubleshooting

| Symptom                          | Likely cause                                                                                   |
| -------------------------------- | ---------------------------------------------------------------------------------------------- |
| `401 Unauthorized`               | Token expired, wrong client\_id/secret, or wrong header (LEM uses `X-AuthToken`, not `Bearer`) |
| `404 Not Found`                  | Wrong base URL or path prefix - see [Base URLs]()                                              |
| `SSL: CERTIFICATE_VERIFY_FAILED` | Self-signed cert - see [SSL Certificates]()                                                    |
| GraphQL returns 200 but no data  | Check `errors` key in the body, not just HTTP status                                           |


[title] Products
[path] /

# Products

Litmus offers three products, each with its own API surface. They are designed to work together (edges register with the manager, edges and the manager publish to UNS), but each can also be used standalone.

Every endpoint in every product is also runnable in the [Litmus API Portal](https://api.litmus.io), our executable Postman collection.

## Product Matrix

| Product                       | What it does                                                                                                | API style         | Versions covered | Run live                                                                                                             |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Litmus Edge** (LE)          | On-device runtime. Connects to industrial assets, normalises tags, runs analytics, flows, and applications. | REST + GraphQL    | 4.0.x, 3.16.x    | [Litmus API Portal: Litmus Edge folder](https://api.litmus.io/view/2s9Y5R1RvG#997384db-8d7d-4df6-bf13-a125f5883106)  |
| **Litmus Edge Manager** (LEM) | Fleet control plane. Edge provisioning, app deployment, backups, alerts, asset hierarchy across many edges. | REST (3 prefixes) | 2.31.x, 2.26.x   | [Litmus API Portal: Edge Manager folder](https://api.litmus.io/view/2s9Y5R1RvG#fa19f00d-c1ae-4dfd-8b3a-08698c2c9c59) |
| **Litmus Unify** (LUNS)       | Unified namespace and MQTT broker. Canonical hierarchy of every tag in your operation, with ACL management. | GraphQL only      | Current          | [Litmus API Portal: Litmus Unify folder](https://api.litmus.io/view/2s9Y5R1RvG#c3f795a0-533e-4e2d-ae41-27c1986faace) |

## Endpoint Counts

Counts are pulled from the live collection on the [Litmus API Portal](https://api.litmus.io). They drift only when a new product version ships.

### Litmus Edge

| Service       | 4.0.x   | 3.16.x  |
| ------------- | ------- | ------- |
| Dashboard     | 22      | 22      |
| DeviceHub     | 342     | 35      |
| Digital Twins | 42      | 38      |
| DataHub       | 16      | 16      |
| Flows Manager | 12      | 6       |
| Analytics     | 39      | 15      |
| Applications  | 69      | 69      |
| Integration   | 112     | 29      |
| OPC UA        | 27      | 27      |
| System        | 185     | 180     |
| **Total**     | **866** | **437** |

### Litmus Edge Manager

| Service                          | 2.31.x  | 2.26.x  |
| -------------------------------- | ------- | ------- |
| Companies                        | 5       | 5       |
| Edge Lifecycle Management        | 144     | 134     |
| Digital Twins / Asset Management | 9       | 8       |
| Admin Console APIs               | 146     | 115     |
| **Total**                        | **304** | **262** |

### Litmus Unify

| Service      | Current |
| ------------ | ------- |
| Dashboard    | 4       |
| UNS          | 7       |
| Security     | 10      |
| MQTT         | 4       |
| Integrations | 2       |
| Tools        | 1       |
| **Total**    | **28**  |

## Where to Start

- Building or controlling **one** edge runtime: read the [Litmus Edge product page](), then run endpoints in the [Litmus API Portal](https://api.litmus.io/view/2s9Y5R1RvG#997384db-8d7d-4df6-bf13-a125f5883106).
- Managing **many** edges across sites or customers: read the [Litmus Edge Manager product page](), then [run endpoints](https://api.litmus.io/view/2s9Y5R1RvG#fa19f00d-c1ae-4dfd-8b3a-08698c2c9c59).
- Publishing into or querying the **Unified Namespace**: read the [Litmus Unify product page](), then [run endpoints](https://api.litmus.io/view/2s9Y5R1RvG#c3f795a0-533e-4e2d-ae41-27c1986faace).
- End-to-end recipes that span products: see [Workflows]() here, or [47 worked examples in the Litmus API Portal](https://api.litmus.io/view/2s9Y5R1RvG#e7f328dd-c01f-496b-8f61-927ac6d619e8).
- Already know the endpoint you need? Skip the narrative and [open the Litmus API Portal](https://api.litmus.io).

[title] Litmus Unify
[path] Products/

# Litmus Unify (LUNS)

Litmus UNS is the Unified Namespace - an MQTT broker plus structured namespace plus account / ACL management plane. Edges publish here; downstream systems subscribe.

## GraphQL-only

LUNS exposes a **single endpoint** for all operations:

```javascript
POST {{uns_url}}/mqtt/gql
```

All 28 documented endpoints share this URL. The folder structure in the API portal (Dashboard / UNS / Security / MQTT / Integrations / Tools) is organizational - the actual operation is in the GraphQL query/mutation body.

:::BlockQuote
There is no REST surface for LUNS. If a tutorial tells you to call `POST /uns/account`, that's wrong - it's `POST /mqtt/gql` with a `createAccount` mutation in the body.
:::

## Module map (logical, not URL)

| Section      | Purpose                                         | Endpoints |
| ------------ | ----------------------------------------------- | --------- |
| Dashboard    | Broker stats, connected client counts           | 4         |
| UNS          | Namespace hierarchy, models, instances          | 7         |
| Security     | Accounts, ACL rules, tokens, LE activation      | 10        |
| MQTT         | Topic listing, retained messages, broker config | 4         |
| Integrations | Bridges to external brokers / cloud             | 2         |
| Tools        | Diagnostics, exports                            | 1         |

## Auth

OAuth2 password grant against the embedded Keycloak:

```javascript
POST {{uns_url}}/auth/realms/standalone/protocol/openid-connect/token
```

Form body: `grant_type=password`, `client_id`, `username`, `password`. The returned `access_token` is sent as `Authorization: Bearer <token>` on every `/mqtt/gql` call.

## First call

```bash
curl -sk -X POST "https://<uns-host>/mqtt/gql" \
  -H "Authorization: Bearer $UNS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"query { account { id username acType enabled } }"}'
```

## Common operations

| Operation                  | GraphQL                                                   |
| -------------------------- | --------------------------------------------------------- |
| List accounts              | `query { account { ... } }`                               |
| Create account             | `mutation { createAccount(input: { ... }) { id } }`       |
| Add ACL rule               | `mutation { addAccountRules(input: { ... }) }`            |
| Enable account             | `mutation { enableAccount(input: { accountId: "..." }) }` |
| Create LE activation token | `mutation { createLitmusEdgeActivationToken(...) }`       |

See [Provision UNS MQTT Account]() for the full create-account chain.

[title] Litmus Edge Manager
[path] Products/

# Litmus Edge Manager (LEM)

LEM is the fleet management plane for Litmus Edges. Use it to provision new devices, deploy applications and ML models to many devices at once, run alerts, and back up / restore device configurations.

:::BlockQuote
**Run all 304 Edge Manager endpoints:** browse and execute them in the [Edge Manager folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#fa19f00d-c1ae-4dfd-8b3a-08698c2c9c59).
:::

## Three URL prefixes

LEM has **three distinct host/path prefixes** that customers commonly confuse:

| Prefix                          | Purpose                                                             | Endpoints | Auth header                            |
| ------------------------------- | ------------------------------------------------------------------- | --------- | -------------------------------------- |
| `{{LEM_URL}}/api/v1/...`        | Main fleet API: projects, devices, alerts, backups, deploy          | \~158     | `X-AuthToken: <token>`                 |
| `{{LEM_adminURL}}/admin/v1/...` | Admin console: companies, users, LEM-level backups, instance alerts | \~144     | `X-AuthToken: <token>`                 |
| `{{LEM_URL}}/mpcs/...`          | Marketplace catalog management                                      | \~13      | `Authorization: <token>` (no `Bearer`) |

`{{LEM_adminURL}}` typically uses port 8446. Sending the wrong header returns 401.

## Module map

### Companies (admin console)

| Endpoint                   | Purpose          |
| -------------------------- | ---------------- |
| `GET /admin/v1/companies`  | List companies   |
| `POST /admin/v1/companies` | Create a company |

### Edge Lifecycle Management (`/api/v1/...`)

The bulk of LEM (\~144 endpoints in 2.31.x). Grouped sub-modules:

- Projects, Users
- Activation (zero-touch + manual approval)
- Devices (list, detail, edit, retire)
- Marketplace deploy (catalogs, applications, async-task)
- Backups (`init-backup`, `list`, `get`, `init-restore`)
- Alerts (action templates + triggers + incidents)
- AI/ML model upload (pre-signed S3)
- Software / firmware update history

### Digital Twins / Asset Management

- Models, root nodes
- Asset hierarchies pushed down to edges

## Versions documented

| Version | Endpoints | Notes     |
| ------- | --------- | --------- |
| 2.31.x  | 304       | Current   |
| 2.26.x  | 262       | Older LTS |

## Common URL variables

| Variable                     | Used in               | Notes                                            |
| ---------------------------- | --------------------- | ------------------------------------------------ |
| `{{project_id}}`             | Most `/api/v1/` calls | LEM project the device belongs to                |
| `{{edge_device_id}}`         | Device-specific calls | Renamed from `device_id` to disambiguate from LE |
| `{{company_name}}`           | `/admin/v1/` calls    | Company under which projects live                |
| `{{marketplace_catalog_id}}` | `/mpcs/` calls        | Catalog of available apps                        |
| `{{LEM_AdminApiToken}}`      | All calls             | Long-lived admin token from Admin Console        |

## Async-task envelope

LEM long-running operations (app launch, ML deploy, software update) follow the same pattern:

1. POST a task description -> get `taskId`
2. Poll `GET /api/v1/async-task/{taskId}/subtasks` until each subtask `status == SUCCESS`

States: `PENDING`, `IN_PROGRESS`, `SUCCESS`, `FAILED`. See [Deploy App to Edge workflow]().

[title] Litmus Edge
[path] Products/

# Litmus Edge (LE)

Litmus Edge is the on-prem runtime that connects to industrial assets (PLCs, sensors, OPC servers, databases, MQTT brokers), normalizes the data, and routes it through analytics, apps, and integrations.

:::BlockQuote
**Run all Litmus Edge endpoints:** browse and execute them in the [Litmus Edge folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#997384db-8d7d-4df6-bf13-a125f5883106).
:::

## Module map

| Module        | Purpose                                                    | Protocol       | Base path                         |
| ------------- | ---------------------------------------------------------- | -------------- | --------------------------------- |
| Dashboard     | Liveness / utilization / counts                            | REST           | `/<module>/status` (varies)       |
| DeviceHub     | Devices, drivers, tags, browse, asset discovery            | GraphQL + REST | `/devicehub/v2`, `/devicehub/...` |
| Digital Twins | Hierarchical asset / data models                           | GraphQL        | `/digitaltwins/v2`                |
| DataHub       | Internal data routing and storage configuration            | REST           | `/datahub/...`                    |
| Flows Manager | Node-RED-style data flows                                  | REST           | `/flows/...`                      |
| Analytics     | TensorFlow models, processors, groups                      | REST           | `/analytics/...`                  |
| Applications  | Edge app catalog and lifecycle                             | REST           | `/apps/...`                       |
| Integration   | Cloud / database connectors (45 providers)                 | GraphQL        | `/cc/v2`                          |
| OPC UA        | Built-in OPC UA server (re-export DH tags)                 | GraphQL        | `/opcua/v2`                       |
| System        | Device management, network, certificates, backup, template | REST           | `/dm/...`, `/auth/v3/...`         |

## Versions documented

### LE 4.0.x (866 endpoints)

The current series. All modules above are fully documented. New in 4.0 vs 3.16:

- Integration: 112 endpoints (up from 29) - includes 45 Provider Schemas Reference + 45 Create Instance Provider Examples
- DeviceHub: 342 endpoints (up from 35) - includes 146 Create Device driver examples + 146 Register Types driver references
- Analytics, Flows, Digital Twins, Dashboard expanded

### LE 3.16.x (437 endpoints)

Older LTS. Same module structure, smaller per-module coverage. Use this version if your fleet is on 3.16; otherwise prefer 4.0.x.

## Auth

OAuth2 client\_credentials at `{{edgeUrl}}/auth/v3/oauth/token`. See [Authentication]().

## Common entry points

- Health check: `GET /devicehub/version`
- List drivers: GraphQL `ListDriverGroups` at `/devicehub/v2`
- List configured devices: GraphQL `Devices` at `/devicehub/v2`
- Dashboard snapshot: `GET /dashboard/...` (per-module status endpoints)

[title] Browse and Discovery
[path] Concepts/

# Browse and Asset Discovery

Two different "discovery" features exist in Litmus Edge. Don't confuse them.

## 1. Asset Discovery (network-level)

Scans your **network** for assets that aren't yet configured in DeviceHub. Returns IP addresses, vendor / model hints, and protocol guesses.

- API folder: DeviceHub -> Asset Discovery
- Per-interface scan: eth0, wlan0, etc.
- Operations: `GET /devicehub/assetdiscovery/...` (REST)
- Enable / disable scanning per interface

Use when: "I have a new PLC plugged into the same VLAN - what's its IP and what protocol does it speak?"

## 2. Browse (device-level)

Walks the **address space of an already-configured device** and surfaces tags / nodes you can import.

- API folder: DeviceHub -> Browse
- GraphQL operations on `/devicehub/v2`
- Operates against a Device ID (the device must already exist)

Use when: "I have an OPC UA server configured - show me every node so I can pick which ones to monitor."

## Browse modes per driver

The 146 drivers vary in what they support:

| Mode          | What it does                                    | Drivers                                                   |
| ------------- | ----------------------------------------------- | --------------------------------------------------------- |
| Browse        | One-shot full address space walk                | OPC UA Advanced, AB Logix, Siemens S7CommPlus, \~38 total |
| DynamicBrowse | Re-browse on demand for changing address spaces | Subset of Browse-capable drivers                          |
| StreamBrowse  | Incremental walk for large servers              | OPC UA Advanced primarily                                 |

Drivers without Browse support (e.g. Modbus, since Modbus has no enumeration capability) cannot use the Browse chain - tags must be created directly via `CreateRegisters`.

:::BlockQuote
The Generator driver (simulator) doesn't support Browse either. If you're using the Generator for testing, skip the Browse chain.
:::

## Browse workflow

```javascript
CreateBrowseTask -> StartBrowseTasks -> [poll] ListBrowseTasks
  -> BrowseTask_GetFoldersForTreeView -> BrowseTask_GetFolderItems
  -> Cart_AddItems (optional Cart_UpdateProperties)
  -> Cart_CreateAllRegisters
```

7 steps, all on `/devicehub/v2`. See [Browse - Bulk Tag Discovery workflow]().

## Useful side endpoints

- `Download Browse Tags` (`GET /devicehub/browsing/download_csv/task/{task_id}`) - exports discovered tags to CSV before committing. Lets users review in Excel before creating.
- `Upload CSV` (REST) - import tags from CSV (skip Browse entirely if you already have the spreadsheet).

[title] Integration Providers
[path] Concepts/

# Integration Providers

The Integration module (`/cc/v2`, internally called "cc" for connector cloud) routes Litmus Edge data to external systems: cloud queues, time-series DBs, SQL databases, MQTT brokers, file stores. 45 providers are documented.

## How an instance is built

Creating an integration instance is a two-step GraphQL chain:

1. `GetProviderSchema(ProviderID: "...")` - returns the full config schema for that provider (field names, types, required, defaults, enums).
2. `CreateInstance(ProviderID: "...", Config: { ... })` - submits a config matching the schema, gets back an `InstanceID`.

Then you create one or more subscriptions to route tag data into the instance:

3. `CreateSubscription(InstanceID, Topic, ...)` - data starts flowing.

See [Create Integration Instance workflow]() for the full chain.

## Reference sections on the API portal

The API portal at `api.litmus.io` includes two cross-referenced sections, one entry per provider:

- **Provider Schemas - Reference** (45 entries) - one canonical `GetProviderSchema` response per provider. Use as a lookup for valid config fields.
- **Create Instance - Provider Examples** (45 entries) - one canonical `CreateInstance` mutation per provider, with a working config body.

Together, they let you copy a working example and adapt it.

## The 45 providers

Grouped by category:

### Cloud queues / streaming

- AMQP (SSL / TCP)
- AWS IoT Core, AWS SiteWise
- Azure Event Hubs, Azure IoT Hub
- Google Cloud Pub/Sub
- IBM Watson
- Kafka (SSL / TCP / Gen 2)
- MQTT (Generic / v5 / SSL)
- NATS
- Splunk

### Time-series and data lakes

- Aveva Data Hub
- Cognite
- Databricks SQL
- InfluxDB (v1.7 / v2)
- OSI PI Historian
- Snowflake

### Databases

- MongoDB (v4+)
- MySQL
- PostgreSQL
- SQL Server
- Oracle Fusion Cloud

### Other

- Litmus UNS
- REST API (generic outbound HTTP)

## Browse support matrix

Out of \~146 drivers, 38 support Browse. The **Browse** section on `api.litmus.io` includes the full support matrix in its description. Common Browse-capable drivers:

- OPC UA Client Advanced (Browse + DynamicBrowse + StreamBrowse)
- All Allen-Bradley CompactLogix/ControlLogix variants
- Siemens S7CommPlus, iQ-R, iQ-F
- Modbus TCP (limited - discovers configured registers, not new ones)
- MQTT Client, REST Client (DynamicBrowse for topic / endpoint discovery)

## See also

- [Create Integration Instance workflow]()
- [Integration API Reference]()

[title] GraphQL vs REST
[path] Concepts/

# GraphQL vs REST

Litmus uses both. Knowing which module is which prevents the most common 200-with-no-data confusion.

## Which modules use which

| Module                                                   | Protocol                                                                                               |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| LE DeviceHub                                             | GraphQL at `/devicehub/v2` (most ops); a few REST endpoints for CSV upload/download and storage toggle |
| LE Digital Twins                                         | GraphQL at `/digitaltwins/v2`                                                                          |
| LE Integration                                           | GraphQL at `/cc/v2`                                                                                    |
| LE OPC UA                                                | GraphQL at `/opcua/v2`                                                                                 |
| LE DataHub, Flows, Analytics, Applications, System, Auth | REST                                                                                                   |
| LEM (all modules)                                        | REST                                                                                                   |
| LUNS (all modules)                                       | GraphQL at `/mqtt/gql`                                                                                 |

## GraphQL gotchas

### 1. Error envelope

GraphQL endpoints return **HTTP 200** even on validation errors. The error sits in the body:

```json
{
  "data": null,
  "errors": [
    { "message": "Driver not found", "path": ["CreateDevice"] }
  ]
}
```

Your client must check `body.errors`, not just the HTTP status. Treat `errors` being a non-empty array as a failure.

### 2. Operation name is in the body

REST callers think in URLs. GraphQL callers think in operations. The URL stays the same; the *query* or *mutation* selects the action:

```bash
# Same URL, two different operations:
curl -X POST .../devicehub/v2 -d '{"query":"query { ListDriverGroups { ... } }"}'
curl -X POST .../devicehub/v2 -d '{"query":"mutation { CreateDevice(input: {...}) { ID } }"}'
```

### 3. Field selection is required

You must explicitly name the fields you want back. Asking for everything in a single query is not idiomatic - request only what you'll read.

### 4. Pagination, filtering, sorting

These vary per operation. Most list operations accept an `input` argument with `Limit`, `Offset`, `Filter`, `Sort` fields. Check the operation's schema before assuming defaults.

## REST conventions in Litmus

- Path-versioned: `/devicehub/v2`, `/digitaltwins/v2`, `/dm/template/v2` - new major versions don't break old clients.
- Resumable uploads: `DELETE` -> `POST {size}` -> `PUT {bytes}` pattern. See [Resumable Uploads]().
- Async tasks (LEM): `POST` returns `taskId`, then `GET /async-task/{id}/subtasks` polls until `SUCCESS`.
- Standard HTTP status codes - 200/201 success, 400 validation, 401 auth, 403 forbidden, 404 missing, 5xx server.

## How to spot GraphQL vs REST on the API portal

Browsing `api.litmus.io`:

- GraphQL requests show as `POST` with a JSON body containing `query` and optional `variables`.
- REST requests show varied HTTP methods and typed bodies.
- Look at the URL: anything ending in `/v2` with no further path (`/devicehub/v2`, `/cc/v2`, `/opcua/v2`, `/digitaltwins/v2`, `/mqtt/gql`) is GraphQL.

[title] DeviceHub
[path] Concepts/

# DeviceHub

DeviceHub is the heart of Litmus Edge. Understanding its data model makes the rest of the API obvious.

## The hierarchy

```javascript
Driver Group (Modbus, OPC UA, AB EthernetIP, ...)
  └── Driver (Modbus TCP, OPC UA Client Advanced, ...)
        └── Device (one configured connection to an asset)
              └── Tag / Register (one data point on that asset)
                    └── Value (live + historical)
```

| Concept        | What it is                                                                                           | Created by                         |
| -------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------- |
| Driver Group   | Protocol family (Modbus, OPC UA, AB, Siemens, etc.)                                                  | Litmus (fixed list)                |
| Driver         | Specific implementation within a family (Modbus TCP vs Modbus RTU vs Modbus UDP)                     | Litmus (fixed list, \~146 drivers) |
| Device         | A configured instance of a driver pointing at a physical asset (IP, port, credentials, polling rate) | User                               |
| Tag / Register | A single data point on the device (e.g. Modbus holding register 40001)                               | User                               |
| Value          | Time-series data captured by polling the tag                                                         | DeviceHub runtime                  |

## Why each layer matters for the API

| You want to...                | First find the...                                            |
| ----------------------------- | ------------------------------------------------------------ |
| Create a device               | Driver ID (from `ListDriverGroups`)                          |
| Know what tag types are valid | Driver's `SupportedRegisters` (varies per driver)            |
| Create a tag                  | Device ID **and** the register type for that device's driver |
| Browse for tags automatically | Device must already exist (Browse runs against a device)     |

## API entry points

| Operation                                                      | GraphQL on `/devicehub/v2`                      |
| -------------------------------------------------------------- | ----------------------------------------------- |
| List driver families and their drivers                         | `ListDriverGroups`                              |
| Get one driver's template (config fields, supported registers) | `GetDriver` with `ID: "<driver_uuid>"`          |
| Create a device                                                | `CreateDevice`                                  |
| Start / stop a device                                          | `StartDevice` / `StopDevice`                    |
| Create a tag on a device                                       | `CreateRegisters`                               |
| List tags                                                      | `ListRegisters`                                 |
| Validate a tag payload before creating                         | `ValidateUpdateRegisters`                       |
| Browse the device's address space                              | `CreateBrowseTask` -> `StartBrowseTasks` -> ... |

## Driver IDs you'll see often

| Driver                                      | ID                                     |
| ------------------------------------------- | -------------------------------------- |
| Generator (simulator, useful for testing)   | `5BC98836-CFD4-11E9-BB65-2A2AE2DBCCE4` |
| OPC UA Client Advanced (recommended OPC UA) | `2372E68F-BA1B-46E9-BC07-E92CA006B377` |

Use `ListDriverGroups` to discover the rest live; IDs are stable.

## See also

- [Create Device + Tags workflow]()
- [Browse - Bulk Tag Discovery workflow]()
- [OPC UA Advanced Driver]()

[title] Concepts
[path] /


[title] Create LEM Project Alert (Trigger + Action)
[path] Workflows/

# Create LEM Project Alert (Trigger + Action)

**UI trigger**: LEM -> Edge Lifecycle Management -> Alerts -> *Add Action* -> *Add Trigger*.

A LEM alert has two halves that must be created in order: the **action template** (how to notify - email, Slack, webhook, PagerDuty) is created first and returns an `id`; the **trigger** (when to fire - metrics threshold or event match) references that `id` in its `actions` array.

## Step table

| Step       | Name in Collection                                  | Method | Endpoint                                                       | Body / Notes                                                                                                                                                                                 | Output                                                |
| ---------- | --------------------------------------------------- | ------ | -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| 1          | Add Action - Email (or Slack / Webhook / PagerDuty) | `POST` | `{{LEM_URL}}/api/v1/project/action/templates/{{project_id}}`   | Body shape varies by channel; see saved examples                                                                                                                                             | Action `id` (e.g. `bp0pgdjum4l1ltore344h9j1p`)        |
| 2          | Project Triggers (optional pre-flight)              | `GET`  | `{{LEM_URL}}/api/v1/project/trigger/definition`                | --                                                                                                                                                                                           | Existing triggers (avoid duplicates)                  |
| 3          | Create Trigger - Metrics (or Event)                 | `POST` | `{{LEM_URL}}/api/v1/project/trigger/definition/{{project_id}}` | Body must include `actions: ["<action_id_from_step_1>"]`. Set `sourceType: "METRICS"` or `"EVENTS"`, `scopeType: "USER"` or `"PROJECT"`, `deviceId: null` (all devices) or specific deviceId | Trigger `id`                                          |
| 4 (verify) | List of Incidents                                   | `GET`  | `{{LEM_URL}}/api/v1/project/incident/{{project_id}}`           | Incidents accumulate as triggers fire                                                                                                                                                        | Incident list with severity, timestamp, action result |

## Cleanup

| Operation      | Endpoint                                                                  |
| -------------- | ------------------------------------------------------------------------- |
| Delete Action  | `DELETE /api/v1/project/action/templates/{{project_id}}/{{alert_id}}`     |
| Delete Trigger | `DELETE /api/v1/project/trigger/definition/{{project_id}}/{{trigger_id}}` |

## Project alerts vs Instance alerts

This chain creates **project-scoped** alerts that notify project members about edge metric/event conditions. For **LEM-instance-level** alerts (notify ops about LEM itself), use the parallel chain at `/admin/v1/instance-alert/trigger/...` and `/admin/v1/instance-alert/action/templates/...`.

[title] Upload Analytics / TensorFlow Model (LE)
[path] Workflows/

# Upload Analytics / TensorFlow Model (LE)

**UI trigger**: Analytics -> Models -> *Add AI Model*.

:::BlockQuote
Step 1 here is a `DELETE` (same clear-first pattern as Template/Backup), but is labeled "Step 1" instead of "Step 0" on `api.litmus.io`.
:::

## Step table

| Step | Name in Collection              | Method   | Endpoint                                                      | Body / Notes                                          | Output                  |
| ---- | ------------------------------- | -------- | ------------------------------------------------------------- | ----------------------------------------------------- | ----------------------- |
| 1    | Step 1: Upload TensorFlow Model | `DELETE` | `{{edgeUrl}}/analytics/v2/upload_model/v2`                    | No body. Clears existing upload session.              | 200 OK                  |
| 2    | Step 2: Upload TensorFlow Model | `POST`   | `{{edgeUrl}}/analytics/v2/upload_model/v2`                    | `{"size": <model_bytes>, "name": "<model_name>.zip"}` | `{"id": "<upload_id>"}` |
| 3    | Step 3: Upload TensorFlow Model | `PUT`    | `{{edgeUrl}}/analytics/v2/upload_model/v2/resume/{upload_id}` | Binary `.zip` model file bytes                        | 200 OK, model stored    |

After upload, bind the model to a processor via `POST /analytics/processors`. See [Analytics reference]().

[title] Overview
[path] /

# Litmus API Portal

The Litmus API Portal is the central reference for all Litmus Edge, Litmus Edge Manager (LEM), and Litmus UNS APIs. Whether you're automating device provisioning, building custom integrations, querying live industrial data, or embedding Litmus capabilities into your own applications, this portal has everything you need to get started and go deep.

APIs are available as both REST and GraphQL endpoints. The portal covers authentication, base URLs, error handling, pagination, and deprecation policies, as well as full API reference documentation organized by product and service.

::::BlockQuote
**Looking for the interactive API?**This site is the narrative documentation. For the executable
Postman collection of all 1,944 endpoints plus AI-agent surfaces,
visit [https://api.litmus.io](https://api.litmus.io).:::Paragraph{listStyleType="disc" indent="1"}
[Interactive API collection](https://api.litmus.io/view/2s9Y5R1RvG) - run any endpoint
::::::Paragraph{listStyleType="disc" listStart="2" indent="1"}
[AI agent routes](https://api.litmus.io/agents) - LLM-optimised router tree
::::::Paragraph{listStyleType="disc" listStart="3" indent="1"}
[MCP manifest](https://api.litmus.io/mcp-agents.md) - tool calls for AI agents
::::::Paragraph{listStyleType="disc" listStart="4" indent="1"}
[Python SDK docs](https://api.litmus.io/sdk-agents.md) - scripting reference
::::::Paragraph{listStyleType="disc" listStart="5" indent="1"}
[llms.txt](https://api.litmus.io/llms.txt) - site index for LLMs
:::
::::

## What's Covered

- **Litmus Edge API**: DeviceHub, Digital Twins, DataHub, Flows Manager, Analytics, OPC UA, Marketplace, System, and Workflows
- **Litmus Edge Manager API:** device provisioning, alerts, project management, and the LEM Bridge
- **Litmus UNS API:** account provisioning and Unified Namespace data access
- **Authentication**: OAuth2 tokens, API keys, and SSL certificate configuration
- **GraphQL vs REST:** guidance on when to use each interface
- **Resumable Uploads:** for large files such as ML models, backups, and CA certificates
- **Integration Providers:** connecting external systems via the Litmus Edge integration layer

## Common API Workflows

The portal includes step-by-step walkthroughs for the most common automation tasks:

- Create a DeviceHub device with tags
- Deploy an edge application to a device
- Configure an OPC UA server
- Provision a new edge device via LEM
- Upload an AI/ML model to LEM
- Create a project alert with trigger and action
- Backup and restore a Litmus Edge instance
- Provision a UNS account

## Getting Started

New to the Litmus API? Start here:

- **Authentication**: generate your OAuth2 token or API key
- **Base URLs & Environments**: find the right endpoint for your Litmus instance
- **First API Call**: make a test request in under five minutes
- **SSL Certificates**: configure certificate validation for self-hosted deployments

## API Reference

The full API reference is organized by service module. Each section documents available endpoints, request parameters, response schemas, and example payloads. Browse by product — Litmus Edge, Edge Manager, or UNS — or navigate directly to a service area: DeviceHub, Digital Twins, DataHub, Flows Manager, Analytics, OPC UA, System, or Marketplace.

[title] Workflows
[path] /

# Workflows

The 15 multi-step API chains that the Litmus UI orchestrates behind a single user action. This is the most valuable section of the docs - none of these workflows can be reconstructed from a single endpoint reference.

:::BlockQuote
**Run any workflow live:** all 47 chains are in the [How-to folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#e7f328dd-c01f-496b-8f61-927ac6d619e8).
:::

Each workflow page includes:

- The UI action that triggers it
- A step-by-step table (method, endpoint, body, output)
- Auth notes per step (which header, which token)
- Variants and cleanup steps

## All workflows

| #  | Workflow                                           | Product | Steps | Protocol  |
| -- | -------------------------------------------------- | ------- | ----- | --------- |
| 1  | [Apply / Upload Template]()                        | LE      | 3     | REST      |
| 2  | [Restore Backup]()                                 | LE      | 3     | REST      |
| 3  | [Upload Custom CA Certificate]()                   | LE      | 2     | REST      |
| 4  | [Upload Analytics / TensorFlow Model]()            | LE      | 3     | REST      |
| 5  | [Upload AI/ML Model to LEM]()                      | LEM     | 3     | REST + S3 |
| 6  | [Create DeviceHub Device + Tags]()                 | LE      | 5     | GraphQL   |
| 7  | [DeviceHub Browse (Bulk Tag Discovery)]()          | LE      | 7     | GraphQL   |
| 8  | [Deploy Edge Application]()                        | LE      | 4     | REST      |
| 9  | [Configure OPC UA Server with Tags]()              | LE      | 4     | GraphQL   |
| 10 | [Create Integration Instance]()                    | LE      | 4     | GraphQL   |
| 11 | [Provision New Edge Device (Zero-Touch)]()         | LEM     | 5     | REST      |
| 12 | [Deploy Application to Edge Device (Async-Task)]() | LEM     | 5     | REST      |
| 13 | [Backup and Restore an Edge Device from LEM]()     | LEM     | 5     | REST + S3 |
| 14 | [Create LEM Project Alert (Trigger + Action)]()    | LEM     | 4     | REST      |
| 15 | [Provision a UNS MQTT Account]()                   | LUNS    | 5     | GraphQL   |

## Pattern: Resumable Upload Sessions

Workflows 1-4 share the same resumable upload pattern:

| Phase             | Method   | What it does                        |
| ----------------- | -------- | ----------------------------------- |
| 0. Clear          | `DELETE` | Remove any stale upload session     |
| 1. Create session | `POST`   | Declare file size, get a session ID |
| 2. Upload         | `PUT`    | Stream the bytes                    |

See [Resumable Uploads]().

## Pattern: LEM Async-Task

Workflows 11-13 use the LEM async-task envelope:

```javascript
POST .../async-task/task-with-subtasks  ->  { taskId }
GET  .../async-task/{taskId}/subtasks   ->  poll until SUCCESS
```


[title] Provision UNS Account
[path] Workflows/

# Provision a UNS MQTT Account

**UI trigger**: LUNS -> Security -> *Create Account* -> *Add Permissions*.

Creates an MQTT account on the LitmusUNS broker, sets its ACL rules (which topic paths it can subscribe/publish to), and enables it. All LUNS calls are GraphQL POSTs to a single endpoint - the operation is selected by the GraphQL query/mutation, not by URL.

## URL pattern

Every step is `POST {{uns_url}}/mqtt/gql` with header `Authorization: Bearer <UNS_TOKEN>`. The token is obtained once per session via the LUNS OAuth2 password grant at `{{uns_url}}/auth/realms/standalone/protocol/openid-connect/token`.

## Step table

| Step         | Name in Collection | GraphQL operation                   | Input                                                                                               | Output / What to capture                   |
| ------------ | ------------------ | ----------------------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------ |
| 1 (optional) | Get Accounts       | `query Account { account { ... } }` | --                                                                                                  | Existing accounts - avoid name collision   |
| 2            | Create Account     | mutation `createAccount`            | `{ username, password, acType: "General", enabled: false }`                                         | Account `id` (UUID)                        |
| 3            | Add Account Rules  | mutation `addAccountRules`          | `{ accountId: <from step 2>, rules: [{ path: "<topic_path>", perm: "Sub" \| "Pub" \| "PubSub" }] }` | Rules attached                             |
| 4            | Enable Account     | mutation `enableAccount`            | `{ accountId: <from step 2> }`                                                                      | Account active                             |
| 5 (verify)   | Account Details    | `query account(id: ...)`            | Account `id`                                                                                        | Final state with rules + connected clients |

## Variants

- **For binding a Litmus Edge to UNS**: replace step 2 with `Create LitmusEdge Activation Token` (mutation that returns a token the LE uses during enrollment). Steps 3-5 then operate on the auto-created account once the LE connects.
- **Cleanup**: `Disable Account`, `Remove Account Rules`, `Remove Account`, or `Reset Account Password` all share the same endpoint with their respective mutations.

## All LUNS endpoints

Every LUNS operation (Dashboard, UNS, Security, MQTT, Integrations, Tools - 28 total) targets the same `/mqtt/gql` URL. Section grouping is purely organizational. The operation is in the GraphQL body.

## See also

- [Litmus UNS product overview]()
- [Security reference]()

[title] Provision New Edge Device
[path] Workflows/

# Provision New Edge Device (LEM Zero-Touch)

**UI trigger**: LEM -> Edge Lifecycle Management -> Activation -> *Add Activation Config* -> operator boots the new device with the code -> *Approve Request*.

Adds a new edge device to a LEM project. Two flows: human-approved (default) and zero-touch (devices flashed with a ZT image complete steps 2-4 automatically). All calls use `X-AuthToken: {{LEM_AdminApiToken}}`.

## Step table

| Step | Name in Collection                   | Method | Endpoint                                                                                                              | Body / Notes                                                                        | Output                                  |
| ---- | ------------------------------------ | ------ | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------- |
| 1    | Add Activation Config                | `POST` | `{{LEM_URL}}/api/v1/activation/config`                                                                                | `{ projectId, expiresAt, deviceCount, leaseTtl, licenseSkus, licenseType, ... }`    | `{ code: "4JOOD-2CWAQ-..." }`           |
| 2    | (out-of-band)                        | --     | --                                                                                                                    | Operator boots edge device with the activation code; device self-registers with LEM | Pending request appears in queue        |
| 3    | Requests List                        | `GET`  | `{{LEM_URL}}/api/v1/activation/request?projectId={{project_id}}`                                                      | --                                                                                  | List of pending requests with `entryID` |
| 4a   | Approve Request                      | `POST` | `{{LEM_URL}}/api/v1/activation/request/status`                                                                        | `{ entryID, projectId, status: "APPROVED" }`                                        | Device provisioned                      |
| 4b   | Reject Request (alternate)           | `POST` | same endpoint                                                                                                         | `{ entryID, projectId, status: "REJECTED" }`                                        | Device rejected                         |
| 4c   | Retry Failed Request (if 4a errored) | `POST` | `{{LEM_URL}}/api/v1/activation/request/request-retry-provision?entryId={{project_entry_id}}&projectId={{project_id}}` | --                                                                                  | Re-attempt provisioning                 |
| 5    | Devices                              | `GET`  | `{{LEM_URL}}/api/v1/device/{{project_id}}`                                                                            | --                                                                                  | New device appears in project list      |

## Zero-touch variant

`GET /api/v1/zt/{{project_id}}/config` (`List ZeroTouch Configs`) returns pre-configured profiles. Devices flashed with a ZT image complete steps 2-4 without operator action.

[title] Create Integration Instance
[path] Workflows/

# Create Integration Instance

**UI trigger**: Integration -> Add Connector -> Select Provider -> Configure -> Save.

The Integration module (internally `cc`) connects Litmus Edge to cloud services and databases. Creating an instance requires knowing the provider's config schema first, then supplying the correct fields in a `CreateInstance` mutation.

## Step table

| Step | API Name                     | Method | Endpoint / GraphQL Operation                | Input                                                   | Output / What to capture                                                                                         |
| ---- | ---------------------------- | ------ | ------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| 1    | Get Provider Schema          | `POST` | `{{edgeUrl}}/cc/v2` -> `GetProviderSchema`  | Provider ID                                             | Full config schema (field names, types, required, defaults, enums). See **Provider Schemas - Reference** folder. |
| 2    | Create Instance              | `POST` | `{{edgeUrl}}/cc/v2` -> `CreateInstance`     | Provider ID + Config JSON (matching schema from step 1) | `InstanceID`, `ProviderID`, `Online`, `Status`. See **Create Instance - Provider Examples** folder.              |
| 3    | List Instances               | `POST` | `{{edgeUrl}}/cc/v2` -> `ListInstances`      | Optional filter by InstanceID                           | Verify instance was created, check `Online` and `Status`                                                         |
| 4    | Create Subscription (topics) | `POST` | `{{edgeUrl}}/cc/v2` -> `CreateSubscription` | Instance ID + topic config                              | Topic subscription created - data starts flowing                                                                 |

## Reference sections

`api.litmus.io` includes two cross-referenced sections, one entry per provider:

- **Provider Schemas - Reference** (45 entries) - canonical `GetProviderSchema` response per provider. Use as a lookup for valid config fields.
- **Create Instance - Provider Examples** (45 entries) - canonical `CreateInstance` mutation per provider, with a working config body. Copy and adapt.

## Supported providers (45)

AMQP (SSL/TCP), Aveva Data Hub, OSI PI Historian, AWS IoT Core/SiteWise, Azure Event Hubs/IoT Hub, Cognite, Databricks SQL, Google Cloud Pub/Sub, IBM Watson, InfluxDB (v1.7/v2), Kafka (SSL/TCP, Gen 2), Litmus UNS, MQTT (Generic/v5/SSL), MongoDB (v4+), NATS, Oracle Fusion Cloud, REST API, SQL Server, MySQL, PostgreSQL, Snowflake, Splunk.

## See also

- [Integration Providers concept]()
- [Integration reference]()

[title] OPC UA
[path] Concepts/

# OPC UA Advanced Driver

OPC UA is the most common protocol customers integrate with. Litmus Edge ships with several OPC UA drivers, but **OPC UA Client Advanced** is the one to use for new integrations.

## Driver IDs

| Driver name            | Driver ID                              | When to use                                                                 |
| ---------------------- | -------------------------------------- | --------------------------------------------------------------------------- |
| OPC UA Client Advanced | `2372E68F-BA1B-46E9-BC07-E92CA006B377` | Default for new integrations. Supports Browse, DynamicBrowse, StreamBrowse. |
| OPCUA client           | (legacy)                               | Older deployments only                                                      |
| OPCUA client Poll      | (legacy)                               | Older deployments only                                                      |

The two legacy drivers exist for backwards compatibility with collections created before Advanced was available. New work should use Advanced.

## What "Advanced" gets you

- **Browse**: discover the full address space of the OPC server and import nodes as tags (no manual NodeId entry).
- **DynamicBrowse**: re-browse on-demand for servers whose address space changes.
- **StreamBrowse**: large-server browsing without loading the whole tree at once.
- **Security policies**: None / Basic128Rsa15 / Basic256 / Basic256Sha256, plus user / certificate auth.
- **Subscription mode** (push from server) and **polling mode** for servers without subscriptions.

## Create a device with the Advanced driver

GraphQL `CreateDevice` mutation against `/devicehub/v2`. Minimum fields:

- `DriverID`: `2372E68F-BA1B-46E9-BC07-E92CA006B377`
- `Name`: human label
- `DeviceProperties`: server URL (`opc.tcp://host:port`), security policy, auth, etc. - exact fields come from `GetDriver` template

Use `GetDriver(ID: "2372E68F-...")` to fetch the full property schema before constructing the mutation.

## Device Discovery Tool

The **Device Discovery Tool** endpoint is **OPC UA Advanced only**. Point it at a server URL and it returns the server's endpoint descriptions, supported security policies, and certificates - useful before creating a device because you know exactly what security parameters the server accepts.

## Browse a device's address space

Once a device exists:

1. `CreateBrowseTask` - configure the browse (root NodeId, depth, etc.)
2. `StartBrowseTasks` - run it
3. `BrowseTask_GetFoldersForTreeView`, `BrowseTask_GetFolderItems` - read results
4. `Cart_AddItems` -> `Cart_CreateAllRegisters` - turn selected nodes into tags

See [Browse - Bulk Tag Discovery workflow]().

## Embedded OPC UA server (export tags out)

Separate from the OPC UA *client* driver, Litmus Edge has an embedded OPC UA *server* that re-exposes DeviceHub tags to downstream OPC UA clients. APIs at `/opcua/v2`. See [Configure OPC UA Server workflow]().

[title] Deploy Edge Application
[path] Workflows/

# Deploy Edge Application

**UI trigger**: Applications -> Marketplace -> *Launch*.

## Step table

| Step | API Name                  | Method | Endpoint                                                  | Notes                                          | Output                  |
| ---- | ------------------------- | ------ | --------------------------------------------------------- | ---------------------------------------------- | ----------------------- |
| 1    | List Marketplace Catalogs | `GET`  | `{{edgeUrl}}/apps/marketplace/catalogs`                   | Check which marketplace sources are configured | Catalog list            |
| 2    | Get Marketplace Apps      | `GET`  | `{{edgeUrl}}/apps/marketplace/catalogs/{catalog_id}/apps` | Browse available apps in a catalog             | App list + `appID`      |
| 3    | Launch a Catalog App      | `POST` | `{{edgeUrl}}/apps/marketplace/launch`                     | Supply `appID`, config / env vars              | App installed + started |
| 4    | Get Running Catalog Apps  | `GET`  | `{{edgeUrl}}/apps/running`                                | Confirm app is running                         | Status = `running`      |

## After launch

App lifecycle endpoints (Applications -> Catalog Apps):

- `PUT /apps/{id}/start`, `PUT /apps/{id}/stop`
- `DELETE /apps/{id}` (uninstall)
- `GET /apps/{id}/logs`, `GET /apps/{id}/stats`

## See also

- [Applications reference]()
- For the LEM-side equivalent (deploy app to many edges), see [Deploy App to Edge Device (LEM)]()

[title] Configure OPC Server
[path] Workflows/

# Configure OPC UA Server with Tags

**UI trigger**: OPC UA -> Import Tags -> Start Server.

Exposes Litmus Edge's DeviceHub tags through the embedded OPC UA server so downstream OPC UA clients can subscribe.

## Step table

| Step | API Name                  | Method | Endpoint / GraphQL Operation                        | Notes                                   | Output             |
| ---- | ------------------------- | ------ | --------------------------------------------------- | --------------------------------------- | ------------------ |
| 1    | Get Node Root             | `POST` | `{{edgeUrl}}/opcua/v2` -> `GetNodeRoot`             | See current OPC UA hierarchy            | Existing node tree |
| 2a   | Import ALL DH Tags        | `POST` | `{{edgeUrl}}/opcua/v2` -> `ImportAllDHTags`         | Imports every DeviceHub tag into OPC UA | Nodes created      |
| 2b   | Import Some DH Tags       | `POST` | `{{edgeUrl}}/opcua/v2` -> `ImportSomeDeviceHubTags` | Selective import by device or tag IDs   | Nodes created      |
| 3    | Start OPC UA Service      | `POST` | `{{edgeUrl}}/opcua/v2` -> `StartOPCUAService`       | Starts the OPC UA server                | Server running     |
| 4    | Get Service Configuration | `POST` | `{{edgeUrl}}/opcua/v2` -> `GetServiceConfiguration` | Verify endpoint URL, auth settings      | Config object      |

## Note: server vs client

This workflow configures the **server** that Litmus Edge exposes (re-exporting DH tags). It is distinct from the **OPC UA Advanced client driver** used to read data **from** external OPC UA servers - that lives under DeviceHub.

## See also

- [OPC UA Advanced Driver concept]()
- [OPC UA reference]()

[title] Create DeviceHub Device + Tags
[path] Workflows/

# Create DeviceHub Device + Tags

**UI trigger**: DeviceHub -> Add Device -> (configure) -> Add Tag.

This is the most common chain customers struggle with. Each sub-step feeds data into the next.

## Step table

| Step | API Name                        | Method | Endpoint / GraphQL Operation                                        | Input                                                         | Output / What to capture                                                                                             |
| ---- | ------------------------------- | ------ | ------------------------------------------------------------------- | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| 1    | List of Drivers                 | `POST` | `{{edgeUrl}}/devicehub/v2` -> `ListDrivers`                         | No input required                                             | `DriverID`, `Name` per protocol (Modbus TCP, OPC UA, etc.)                                                           |
| 2    | Get Driver Template by DriverID | `POST` | `{{edgeUrl}}/devicehub/v2` -> `GetDriver`                           | `{ID: "<DriverID from step 1>"}`                              | `DeviceProperties` - required fields/tabs for device config                                                          |
| 3    | Create New Device               | `POST` | `{{edgeUrl}}/devicehub/v2` -> `CreateDevice`                        | Driver ID + device properties from step 2                     | `DeviceID`                                                                                                           |
| 4    | Get Driver Supported Registers  | `POST` | `{{edgeUrl}}/devicehub/v2` -> `GetDriver` with `SupportedRegisters` | `{ID: "<DriverID>"}`                                          | `SupportedRegisters[].Name`, `ReadOnly`, `RegisterProperties` - valid register types and value types for this driver |
| 5    | Create Tag                      | `POST` | `{{edgeUrl}}/devicehub/v2` -> `CreateRegisters`                     | `DeviceID` (step 3) + register type (step 4) + tag properties | Tag ID, tag is live                                                                                                  |

## Why step 4 is critical

Each driver supports a different set of register types (e.g. Modbus TCP supports `Holding Register`, `Input Register`, `Coil`, `Discrete Input`). Calling `CreateRegisters` with an unsupported type returns a validation error. Always check `SupportedRegisters` before building the `CreateRegisters` payload.

## Optional pre-validation

Use `ValidateUpdateRegisters` (GraphQL query) to dry-run a tag payload before actually calling `CreateRegisters`. The query returns `Errors[]` without committing anything.

## See also

- [DeviceHub Data Model]()
- [Browse - Bulk Tag Discovery]() for auto-discovering tags instead of creating them manually
- [DeviceHub reference]()

[title] Upload AI/ML Model to LEM
[path] Workflows/

# Upload AI/ML Model to LEM

**UI trigger**: LEM -> Edge Lifecycle Management -> AI/ML Models -> *Upload New Model*.

:::BlockQuote
LEM uses a **pre-signed S3 URL** pattern instead of the LE resumable-session pattern. Step 1 gets a signed URL; Step 2 uploads directly to object storage; Step 3 registers the model in LEM.
:::

## Step table

| Step | Name in Collection               | Method | Endpoint                                                                 | Body / Notes                                                        | Output                       |
| ---- | -------------------------------- | ------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------- | ---------------------------- |
| 1    | Step 1 of Upload New AI/ML Model | `POST` | `{{LEM_URL}}/api/v1/file/{{project_id}}/mlModel/{{filename}}/upload-url` | `{"projectId": "...", "fileName": "model.zip"}`                     | `{"url": "<signed_s3_url>"}` |
| 2    | Step 2 of Upload New AI/ML Model | `PUT`  | `<signed_s3_url from Step 1>`                                            | Binary `.zip` model file bytes. URL carries AWS SigV4 query params. | 200 OK (S3 direct upload)    |
| 3    | Step 3 of Upload New Model       | `POST` | `{{LEM_URL}}/api/v1/file/{{project_id}}/mlModel/{{filename}}`            | `{"description": "..."}` - registers the model in LEM               | Model available in LEM       |

## Auth notes

- Steps 1 and 3 use `X-AuthToken: {{LEM_AdminApiToken}}`.
- Step 2 (S3 PUT) uses the embedded AWS SigV4 signature in the URL - **no additional auth header needed**. Sending `X-AuthToken` to S3 will fail.

[title] System
[path] API Reference/

# System / Device Management (LE)

REST under `/dm/...` (Device Management) and `/auth/v3/...` (Auth). Configure the host edge device itself: network, certificates, users, backups, templates, time, factory reset.

:::BlockQuote
**Run these endpoints:** open the [System folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#0f5be06c-21b9-4d3b-9302-f9dc6b0f3d97).
:::

## Sub-areas

| Area          | Path                | Purpose                                     |
| ------------- | ------------------- | ------------------------------------------- |
| Auth          | `/auth/v3/...`      | OAuth2 token, user / client management      |
| Templates     | `/dm/template/v2`   | Export / apply configuration templates      |
| Backup        | `/dm/backup/v2`     | Backup the edge config, restore from backup |
| Certificates  | `/dm/certstore`     | Custom CA upload                            |
| Network       | `/dm/network/...`   | Interfaces, routes, DNS, hostname           |
| Time          | `/dm/time/...`      | NTP config                                  |
| Users         | `/dm/users/...`     | Local users (distinct from API clients)     |
| Licensing     | `/licensing/...`    | License info                                |
| Factory reset | `/dm/factory-reset` | Wipe and reinitialize                       |

## Resumable uploads

Templates, backups, certificates, and analytics models all use the [3-step resumable upload pattern]().

## Related workflows

- [Apply / Upload Template]()
- [Restore Backup]()
- [Upload Custom CA Certificate]()

[title] API Reference
[path] /

# API Reference

Per-module endpoint inventory. Each page in this section lists the endpoints in one product module with a one-line purpose.

:::BlockQuote
**Endpoint schemas live on api.litmus.io.** Each service page below summarises what's available; for the full request/response schema and a runnable example, click through to the [interactive API collection](https://api.litmus.io/view/2s9Y5R1RvG).
:::

## Where the detailed schema lives

These pages give the **section-level orientation** - what's in this module, how the endpoints relate, what the auth / URL pattern is. Full per-endpoint request / response schema is served by the visual API portal:

| Surface                | Use for                                                                                                  |
| ---------------------- | -------------------------------------------------------------------------------------------------------- |
| `api.litmus.io`        | Per-endpoint request body, response shape, try-it-out, code samples in cURL / Python / Go / Node / Shell |
| `api.litmus.io/agents` | Agent-readable endpoint catalog for LLMs and automation                                                  |

When you find an endpoint here by name, follow the section link to the corresponding page on `api.litmus.io` for the schema and to test the call.

## How to use this section

- Looking for **one endpoint** by name or purpose? Use the per-module pages here, then jump to `api.litmus.io`.
- Building a **multi-step flow** (chain several endpoints together)? Go to [Workflows]() instead.
- New to a product? Start with [Products]() for the high-level map.

## Layout

- [Litmus Edge]() - 9 modules: Dashboard, DeviceHub, Digital Twins, DataHub, Flows Manager, Analytics, Applications, Integration, OPC UA, System
- [Litmus Edge Manager]() - 3 modules: Companies, Edge Lifecycle, Digital Twins
- [Litmus UNS]() - 5 modules, all GraphQL on `/mqtt/gql`: Dashboard, UNS, Security, MQTT, Integrations

[title] DataHub
[path] API Reference/

# DataHub (LE)

16 endpoints. REST under `/datahub/...`. Internal data routing and storage configuration - controls where DeviceHub tag values are persisted and which retention applies.

:::BlockQuote
**Run these endpoints:** open the [DataHub folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#eadfdbe0-2550-47ff-bbfb-168a3155ebb0).
:::

## Capabilities

- Configure / inspect the embedded time-series store
- Manage cloud storage targets (S3 / Azure Blob / GCS) for tag-data offload
- Set retention policies
- Trigger / monitor batch exports

## Typical operations

| Endpoint                              | Purpose                     |
| ------------------------------------- | --------------------------- |
| `GET /datahub/config`                 | Current data routing config |
| `PUT /datahub/config`                 | Update config               |
| `GET /datahub/cloud-storages`         | List cloud storage targets  |
| `POST /datahub/cloud-storages`        | Add a cloud storage target  |
| `PUT /datahub/cloud-storages/{id}`    | Update                      |
| `DELETE /datahub/cloud-storages/{id}` | Remove                      |
| `GET /datahub/retention`              | Retention policy            |
| `PUT /datahub/retention`              | Update retention            |

:::BlockQuote
DataHub is distinct from **Integration** (`/cc/v2`). DataHub stores edge-local; Integration streams out to external systems.
:::


[title] Dashboard
[path] API Reference/

# Dashboard (LE)

22 read-only endpoints for liveness, utilization, and counts. Useful for status pages and external monitors.

:::BlockQuote
**Run these endpoints:** open the [Dashboard folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#4566254a-0d6a-473f-ae60-5b3fb7ebc83c).
:::

## Module status (GET)

| Endpoint                | Returns                           |
| ----------------------- | --------------------------------- |
| `GET /devicehub/status` | DeviceHub health                  |
| `GET /flows/status`     | Flows Manager health              |
| `GET /analytics/status` | Analytics health                  |
| `GET /apps/status`      | Marketplace / Applications health |
| `GET /cc/status`        | Integrations health               |
| `GET /opcua/status`     | Embedded OPC UA server health     |
| `GET /dm/status`        | Device Management health          |
| `GET /licensing/status` | Licensing                         |

## Host info and utilization (GET)

| Endpoint                      | Returns                                  |
| ----------------------------- | ---------------------------------------- |
| `GET /dm/host`                | Host device info (hardware, OS, version) |
| `GET /dm/storage`             | Device storage utilization               |
| `GET /dm/network/last_minute` | Network utilization, last 1 min          |
| `GET /dm/memory/last_minute`  | Memory utilization, last 1 min           |
| `GET /dm/cpu/last_minute`     | CPU utilization, last 1 min              |

## Inventory counts (mixed)

| Endpoint                         | Method | Returns                        |
| -------------------------------- | ------ | ------------------------------ |
| `/devicehub/v2` (`ListDevices`)  | POST   | List of configured devices     |
| `/devicehub/v2` (`NumberOfTags`) | POST   | Total tag count                |
| `/analytics/processors/count`    | GET    | Number of Analytics Processors |
| `/analytics/groups/count`        | GET    | Number of Analytics Groups     |
| `/flows/count`                   | GET    | Number of Flows                |
| `/cc/count`                      | GET    | Number of Integrations         |
| `/datahub/cloud-storages/count`  | GET    | Number of Cloud Storages       |
| `/apps/count`                    | GET    | Number of Edge Applications    |
| `/auth/v3/online-users`          | GET    | Active online users            |

:::BlockQuote
All endpoints listed are read-only. Suitable for a frequent (every 30-60s) polling cadence.
:::


[title] Marketplace/Applications
[path] API Reference/

# Applications (LE)

69 endpoints. REST under `/apps/...`. Manage edge applications - the containerized add-ons (Grafana, custom apps, vendor tools) that run alongside Litmus Edge.

:::BlockQuote
**Run these endpoints:** open the [Applications folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#d7a1c21b-0d44-4601-bd97-9d50ec5ed1b6).
:::

## Capabilities

- Browse the Marketplace catalog
- Launch an app from the catalog
- Manage running apps (start, stop, restart, uninstall)
- Pass config / env vars at launch
- Inspect logs and resource usage

## Sub-areas

| Folder       | Purpose                                                |
| ------------ | ------------------------------------------------------ |
| Marketplace  | Catalog browsing - sources, catalogs, available apps   |
| Catalog Apps | Lifecycle of installed apps from the catalog           |
| Local Apps   | Side-loaded apps (uploaded directly, not from catalog) |
| Logs / Stats | Per-app diagnostics                                    |

## Typical operations

| Endpoint                                      | Purpose                                         |
| --------------------------------------------- | ----------------------------------------------- |
| `GET /apps/marketplace/catalogs`              | List marketplace sources                        |
| `GET /apps/marketplace/catalogs/{id}/apps`    | Apps available in a catalog                     |
| `POST /apps/marketplace/launch`               | Launch a catalog app (body: appID, env, config) |
| `GET /apps/running`                           | Currently running apps                          |
| `PUT /apps/{id}/start`, `PUT /apps/{id}/stop` | Lifecycle                                       |
| `DELETE /apps/{id}`                           | Uninstall                                       |
| `GET /apps/{id}/logs`                         | Recent logs                                     |
| `GET /apps/{id}/stats`                        | CPU / memory                                    |

See [Deploy Edge Application workflow]().

[title] Backup and Restore
[path] Workflows/

# Backup and Restore an Edge Device from LEM

**UI trigger**: LEM -> Edge Lifecycle Management -> Edge Devices -> select device -> Backups -> *Make Backup* / *Restore*.

Backups are stored in LEM-managed S3 and accessed via pre-signed URLs (no further auth needed on the URL itself). The backup target on restore can be a different device than the source, which enables configuration cloning across devices.

## Step table

| Step                       | Name in Collection               | Method | Endpoint                                                                                                                              | Body / Notes                                                             | Output                                                      |
| -------------------------- | -------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ----------------------------------------------------------- |
| 1                          | Make Device Backup               | `POST` | `{{LEM_URL}}/api/v1/backup/init-backup?projectId={{project_id}}&deviceId={{edge_device_id}}`                                          | No body. Asynchronous - backup runs on the device.                       | `{ "code": "200", "content": null }`                        |
| 2                          | List Backups                     | `GET`  | `{{LEM_URL}}/api/v1/backup/list?projectId={{project_id}}&deviceId={{edge_device_id}}`                                                 | Poll until the new entry appears                                         | List with `timestamp` and `backupType` (typically `MASTER`) |
| 3                          | Get Pre-signed S3 URL to Backup  | `POST` | `{{LEM_URL}}/api/v1/backup/get?projectId={{project_id}}&deviceId={{edge_device_id}}&backupType=MASTER&timestamp={ts}`                 | --                                                                       | Pre-signed S3 GET URL valid 7 days                          |
| 4 (optional, cross-tenant) | Save Backup to Pre-signed S3 URL | `POST` | `{{LEM_URL}}/api/v1/backup/put?...`                                                                                                   | Used only when relocating the `.dat` to a different S3 location          | New pre-signed PUT URL                                      |
| 5                          | Restore from Backup              | `POST` | `{{LEM_URL}}/api/v1/backup/init-restore?projectId={{project_id}}&deviceId={{target_edge_device_id}}&backupType=MASTER&timestamp={ts}` | `deviceId` query param can target a **different** device than the source | Restore initiated on target device                          |

## Distinct from "LEM Backup"

This chain backs up a **single edge device** (`/api/v1/backup/...`). To back up the LEM instance itself, use Admin Console -> Admin Console Settings -> Backup (`/admin/v1/lem-backup/...`).

## Auth

All calls use `X-AuthToken: {{LEM_AdminApiToken}}`. The pre-signed S3 URL from step 3 carries SigV4 query params and needs **no** auth header.

[title] Deploy App to Edge Device
[path] Workflows/

# Deploy Application to Edge Device (LEM Async-Task)

**UI trigger**: LEM -> Edge Lifecycle Management -> Applications -> *Launch Application*.

LEM long-running operations (app launch, ML deploy, software update) are wrapped in an async-task envelope. The client POSTs a task description, gets a `taskId`, and polls subtask status until `SUCCESS`. The same pattern underlies several LEM ops.

## Step table

| Step | Name in Collection                       | Method | Endpoint                                             | Body / Notes                                                                                    | Output                                                   |
| ---- | ---------------------------------------- | ------ | ---------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| 1    | Catalogs                                 | `GET`  | `{{LEM_URL}}/mpcs/catalogs`                          | Header: `Authorization: {{LEM_AdminApiToken}}` (NOT `X-AuthToken`)                              | `catalogId`                                              |
| 2    | Catalog Applications                     | `GET`  | `{{LEM_URL}}/mpcs/catalogs/{catalogId}/applications` | Same `Authorization` header                                                                     | `applicationId`, `applicationName`, `applicationVersion` |
| 3    | Launch Application to Edge Device        | `POST` | `{{LEM_URL}}/api/v1/async-task/task-with-subtasks`   | Header: `X-AuthToken: {{LEM_AdminApiToken}}`. Body: see below.                                  | `{ taskId }`                                             |
| 4    | Verify If Deploy Task is Complete (poll) | `GET`  | `{{LEM_URL}}/api/v1/async-task/{{task_id}}/subtasks` | Poll until each subtask `status == "SUCCESS"`. Other states: `PENDING`, `IN_PROGRESS`, `FAILED` | Subtask list with status                                 |
| 5    | Apps List for Device                     | `GET`  | `{{LEM_URL}}/api/v1/marketplace/app/plain?...`       | --                                                                                              | Confirm app installed on device                          |

## Step 3 body

```json
{
  "name": "<task name>",
  "companyName": "...",
  "projectId": "...",
  "type": "MARKETPLACE_APPLICATION_LAUNCH",
  "subtasks": [{
    "deviceId": "...",
    "type": "MARKETPLACE_APPLICATION_LAUNCH",
    "params": {
      "applicationId": "...",
      "applicationName": "...",
      "applicationVersion": "...",
      "catalogId": "...",
      "catalogName": "...",
      "catalogUrl": "...",
      "applicationParameters": { ... }
    }
  }]
}
```

## Same async-task wrapper is used by

- ML model deploy (`type: "ANALYTICS_ML_MODEL_UPLOAD"`)
- Software updates (`type: "FIRMWARE_UPDATE"`)
- Other long-running fleet ops

`Software Update History` endpoint at `/api/v1/async-task/subtasks` reads recent runs across all task types.

## Auth nuance

- Steps 1 and 2 hit `/mpcs/` and require `Authorization: {{LEM_AdminApiToken}}` (no `Bearer` prefix).
- Steps 3-5 hit `/api/v1/` and require `X-AuthToken: {{LEM_AdminApiToken}}`.
- Sending the wrong header returns 401.

[title] API Portal FAQs
[path] /

## API Portal FAQs

## Who can access the API Portal?

The API Portal is available to all customers on the **Scale** plan. Other plan tiers can request access through their account team.

## What's the difference between docs.litmus.io/api-docs and api.litmus.io?

They're two complementary surfaces.

- **docs.litmus.io/api-docs (this site)** is the narrative documentation: concepts, getting-started, walkthroughs, error model, and per-service reference summaries. Best when you want to understand *what* an API does and *how* it fits.
- [api.litmus.io](https://api.litmus.io) is the executable Postman collection: 1,944 endpoints across Litmus Edge, Edge Manager, and Unify. Best when you want to *run* an endpoint, fork the collection into your own workspace, or generate request code in cURL, Python, or JavaScript.

api.litmus.io also exposes AI-agent surfaces, an MCP manifest, a Python SDK reference, and `llms.txt`, none of which live here.

## Are deprecated APIs listed here?

The portal is an exhaustive list of APIs that are actively managed by the Litmus team. APIs not listed here are not supported and may be deprecated. See [Deprecation Policy]().

## What can I customize about the portal?

- **Code samples**: use the language dropdown to switch between Python, cURL, Go, Node.js, Shell, HTTP, and others.
- **Postman**: use the export option to import the full collection into Postman.
- **Theme**: toggle between light and dark.
- **Layout**: single-column vs multi-column.

## I see a blank screen or data fetch error - what do I do?

1. Refresh the page.
2. Try an incognito / private window (rules out a stale cache or extension).
3. If the issue persists, contact `support@litmus.io` with the exact URL and a screenshot.

## I'm getting SSL certificate errors - what do I do?

Litmus Edge ships with a self-signed certificate. Until you install your own CA, clients reject the connection. Quick fixes:

| Tool              | Flag                                                      |
| ----------------- | --------------------------------------------------------- |
| cURL              | `-k` or `--insecure`                                      |
| Python `requests` | `verify=False`                                            |
| Postman           | Settings -> General -> "SSL certificate verification" off |

Example:

```bash
curl -k "https://<le-ip>/devicehub/version" -H "Authorization: Bearer $TOKEN"
```

**Do not use these workarounds in production.** Instead, install a CA-signed certificate via [Upload Custom CA Certificate](), or trust the edge's self-signed cert on your client. See [SSL Certificates]().

## Where do I get OAuth credentials?

| Product     | Where                                             |
| ----------- | ------------------------------------------------- |
| Litmus Edge | System -> Settings -> Users -> API Clients        |
| LEM         | Admin Console -> API Tokens                       |
| LUNS        | Admin -> Users (use the configured Keycloak user) |

## What's the difference between LE Integration and LUNS Integration?

- **LE Integration** (`/cc/v2`): routes per-tag data from a single edge out to 45 supported providers (cloud queues, TSDBs, RDBMS).
- **LUNS Integration**: bridges the entire UNS namespace to another MQTT-like broker.

Both can coexist - LE Integration would typically be the path data takes to LUNS, then LUNS Integration bridges further out.

## How do I contact support?

Email `support@litmus.io` or open a ticket via the Litmus support portal.

[title] Integration
[path] API Reference/

# Integration (LE)

112 endpoints in 4.0.x. GraphQL on `/cc/v2` (internal name "cc" = connector cloud). Route DeviceHub data to 45 external systems: cloud queues, time-series DBs, SQL databases, MQTT brokers, REST APIs.

:::BlockQuote
**Run these endpoints:** open the [Integration folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#df55ef1d-7dd6-402a-9bbe-12d5272e485d).
:::

## Sub-areas

| Folder                              | Endpoints | Purpose                                               |
| ----------------------------------- | --------- | ----------------------------------------------------- |
| Instances                           | \~6       | Instance CRUD + lifecycle                             |
| Subscriptions                       | \~6       | Topic / table-route config per instance               |
| Streaming                           | \~8       | Streaming-style provider ops                          |
| Object                              | \~3       | Object-store-style providers                          |
| Prometheus                          | \~1       | Prometheus scrape source                              |
| Create Instance - Provider Examples | 45        | One canonical CreateInstance per provider             |
| Provider Schemas - Reference        | 45        | One canonical GetProviderSchema response per provider |

## Core operations

| Operation                                                       | Purpose                                |
| --------------------------------------------------------------- | -------------------------------------- |
| `ListProviders`                                                 | What integrations are supported        |
| `GetProviderSchema(ProviderID)`                                 | Config field schema for a provider     |
| `CreateInstance(ProviderID, Config)`                            | Create a configured instance           |
| `UpdateInstance`, `DeleteInstance`                              | Manage                                 |
| `ListInstances`                                                 | All configured instances               |
| `StartInstance`, `StopInstance`                                 | Lifecycle                              |
| `CreateSubscription`                                            | Route topics / tables into an instance |
| `ListSubscriptions`, `UpdateSubscription`, `DeleteSubscription` | Manage subscriptions                   |

## The 45 providers

See [Integration Providers concept page]() for the full list. Cloud queues (AWS IoT, Azure Event Hubs, Kafka, MQTT), TSDBs (InfluxDB, OSI PI, Snowflake), RDBMS (Postgres, MySQL, SQL Server, Oracle), and generic outbound (REST API, Litmus UNS).

## See also

- [Integration Providers concept]()
- [Create Integration Instance workflow]()

[title] OPC UA
[path] API Reference/

# OPC UA (LE)

27 endpoints. GraphQL on `/opcua/v2`. Manages the **embedded OPC UA server** that re-exposes DeviceHub tags to downstream OPC UA clients.

:::BlockQuote
**Run these endpoints:** open the [OPC UA folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#6bb95043-4e3d-458e-8088-9fb008a8ead3).
:::

:::BlockQuote
This is **distinct from the OPC UA Advanced client driver** (used to read from external OPC UA servers). The client driver lives under DeviceHub. The server lives here.
:::

## Sub-areas

| Folder      | Purpose                                                              |
| ----------- | -------------------------------------------------------------------- |
| Hierarchy   | Browse and edit the OPC UA address space the embedded server exposes |
| Management  | Service config, endpoints, certificates, users                       |
| Connections | Currently connected OPC UA clients                                   |

## Typical operations

### Hierarchy

| Operation                 | Purpose                                           |
| ------------------------- | ------------------------------------------------- |
| `GetNodeRoot`             | Read the root of the namespace                    |
| `GetNodes(ParentID)`      | Children of a node                                |
| `CreateNode`              | Add a node (folder or variable)                   |
| `DeleteNode`              | Remove                                            |
| `ImportAllDHTags`         | Bulk-import every DeviceHub tag as an OPC UA node |
| `ImportSomeDeviceHubTags` | Selective import (by device or tag IDs)           |
| `ClearAllNodes`           | Wipe the address space                            |

### Management

| Operation                                 | Purpose                                           |
| ----------------------------------------- | ------------------------------------------------- |
| `GetServiceConfiguration`                 | Endpoint URL, security policies, anonymous toggle |
| `UpdateServiceConfiguration`              | Edit                                              |
| `StartOPCUAService`, `StopOPCUAService`   | Lifecycle                                         |
| `ListUsers`, `CreateUser`, `DeleteUser`   | Server users (for username/password auth)         |
| `GetCertificate`, `RegenerateCertificate` | Server cert                                       |

### Connections

| Operation          | Purpose                        |
| ------------------ | ------------------------------ |
| `ListConnections`  | Currently connected clients    |
| `DisconnectClient` | Force-disconnect by session ID |

See [Configure OPC UA Server workflow]().

[title] Support and Contact
[path] Operations/

# Support and Contact

## Email

- General support: `support@litmus.io`
- Sales engineering / customer success: contact your account team

## Support portal

Open a ticket via the Litmus support portal (URL provided to customers on plan onboarding).

## What to include in a support ticket

For API issues, please include:

- Product and version (LE 4.0.x, LEM 2.31.x, etc.)
- Endpoint method + URL
- Request body (redact secrets)
- Response status and body
- A correlation / request ID if returned

## Plan availability

The API Portal is available to customers on the **Scale** plan. Other plan tiers can request access through their account team.

[title] DeviceHub
[path] API Reference/

# DeviceHub (LE)

342 endpoints in 4.0.x. The bulk of Litmus Edge - device configuration, tag creation, browse, asset discovery, plus 292 reference entries (driver examples + register types).

:::BlockQuote
**Run these endpoints:** open the [DeviceHub folder on api.litmus.io](https://api.litmus.io/view/2s9Y5R1RvG#3384d3cf-13e6-402b-8a25-b67be34f585d).
:::

## Sub-modules

| Folder                            | Endpoints | Purpose                                   |
| --------------------------------- | --------- | ----------------------------------------- |
| Devices                           | 10        | Device CRUD + lifecycle (start/stop)      |
| Drivers                           | 4         | List drivers, get driver templates        |
| Tags                              | 12        | Tag CRUD + CSV import/export + validation |
| Browse                            | 14        | Bulk tag discovery from a device          |
| Asset Discovery                   | 9         | Network-level asset scanning              |
| Prometheus Metrics                | 1         | Metrics scrape endpoint                   |
| Create Device - Driver Examples   | 146       | One canonical CreateDevice per driver     |
| Register Types - Driver Reference | 146       | Supported register types per driver       |

## Devices (10)

GraphQL on `/devicehub/v2` unless noted.

| Operation                          | Method | Purpose                              |
| ---------------------------------- | ------ | ------------------------------------ |
| `ListDevices`                      | POST   | List all configured devices          |
| `CreateDevice`                     | POST   | Create a new device                  |
| `UpdateDevice`                     | POST   | Update device properties             |
| Enable/Disable Device Data Storage | PUT    | Toggle persistence per device (REST) |
| `DeleteDevices`                    | POST   | Delete one or more devices (GraphQL) |
| Delete Device REST                 | DELETE | Single-device delete via REST        |
| Device Discovery Tool              | POST   | OPC UA Advanced server discovery     |
| `DeviceConnectionStatus`           | POST   | Live connection state                |
| `StartDevice`                      | POST   | Begin polling                        |
| `StopDevice`                       | POST   | Stop polling                         |

## Drivers (4)

| Operation               | Purpose                                        |
| ----------------------- | ---------------------------------------------- |
| `ListDriverGroups`      | Driver family tree (start here)                |
| `GetDriver` by GroupID  | Group-level template                           |
| `GetDriver` by DriverID | Driver template (config + supported registers) |
| List all driver details | Full dump of all drivers                       |

## Tags (12)

| Operation                   | Purpose                           |
| --------------------------- | --------------------------------- |
| `ListAllRegisters`          | All tags across all devices       |
| `ListRegisters`             | Tags on one device                |
| `CreateRegisters`           | Create one or more tags           |
| `UpdateRegisters`           | Update tag config                 |
| `DeleteRegisters`           | Delete specific tags              |
| Delete all tags of a device | Bulk-delete by device             |
| `BrowseTags`                | Search across configured tags     |
| Upload Tags CSV             | REST file upload                  |
| Download Tags CSV           | REST file download                |
| `RegisterStatus`            | Live tag values + quality         |
| Server Search               | Cross-device tag search           |
| `ValidateUpdateRegisters`   | Dry-run a tag payload (no commit) |

## Browse (14)

Full chain documented in [Browse - Bulk Tag Discovery workflow](). Key operations:

- `CreateBrowseTask`, `StartBrowseTasks`, `ListBrowseTasks`, `StopBrowseTask`, `DeleteBrowseTask`
- `BrowseTask_GetFoldersForTreeView`, `BrowseTask_GetFolderItems`
- `Cart_AddItems`, `Cart_UpdateProperties`, `Cart_CreateAllRegisters`
- `ListCartItems`, `Cart_GetCartItemsByDevice`
- `BrowseTask_GetTemplate`, `Download Browse Tags` (CSV export)

## Asset Discovery (9)

Network-level scanning per interface. All REST.

| Endpoint                                        | Purpose                       |
| ----------------------------------------------- | ----------------------------- |
| `GET /devicehub/assetdiscovery/interfaces`      | List network interfaces       |
| `GET /devicehub/assetdiscovery/devices`         | Discovered devices on network |
| `GET .../scan/eth0`, `GET .../scan/wlan0`       | Trigger per-interface scan    |
| `PUT .../enable/eth0`, `PUT .../disable/eth0`   | Toggle discovery on eth0      |
| `PUT .../enable/wlan0`, `PUT .../disable/wlan0` | Toggle discovery on wlan0     |
| `GET .../scan/nd`                               | Scan for ND nodes             |

## Create Device - Driver Examples (146)

One canonical `CreateDevice` mutation per supported driver - Allen-Bradley, Siemens, Modbus variants, OPC UA, MQTT, SQL clients, Sparkplug, plus simulators (Generator). Use as a copy-and-adapt reference.

## Register Types - Driver Reference (146)

For each driver, the supported register types (e.g. Modbus TCP: Holding / Input / Coil / Discrete Input). Use to validate that the register type you want is allowed before calling `CreateRegisters`.

## See also

- [DeviceHub Data Model]()
- [Create Device + Tags workflow]()

[title] Restore Backup (LE)
[path] Workflows/

# Restore Backup (LE)

**UI trigger**: System -> Device Management -> Backup/Restore -> *Apply Backup*.

## Step table

| Step | Name in Collection                            | Method   | Endpoint                               | Body / Notes                    | Output                   |
| ---- | --------------------------------------------- | -------- | -------------------------------------- | ------------------------------- | ------------------------ |
| 0    | Step 0: Apply Backup - Delete Upload Sessions | `DELETE` | `{{edgeUrl}}/dm/backup/v2`             | No body. Clears stale sessions. | 200 OK                   |
| 1    | Step 1: Apply Backup - Create Upload Session  | `POST`   | `{{edgeUrl}}/dm/backup/v2`             | `{"size": <backup_file_bytes>}` | `{"id": "<session_id>"}` |
| 2    | Step 2: Apply Backup - Resume/Apply Backup    | `PUT`    | `{{edgeUrl}}/dm/backup/v2/{id}/resume` | Binary backup file bytes        | 200 OK, device restores  |

:::BlockQuote
The edge restarts services as part of restore. Subsequent calls may briefly 502 / 503 until services come back.
:::

## See also

- [Resumable Uploads concept]()
- For LEM-side device backup, see [Backup and Restore from LEM]()

[title] Apply / Upload Template (LE)
[path] Workflows/

# Apply / Upload Template (LE)

**UI trigger**: System -> Device Management -> Templates -> *Apply Template* (downloads a `.zip`, then re-uploads it).

:::BlockQuote
What the UI does invisibly: when a user clicks "Download Template", the UI first clears any previous upload session, then creates a new one, then uploads the file - the user just sees a file download/upload dialog.
:::

## Step table

| Step | Name in Collection     | Method   | Endpoint                                 | Body / Notes                              | Output                   |
| ---- | ---------------------- | -------- | ---------------------------------------- | ----------------------------------------- | ------------------------ |
| 0    | Step 0: Apply Template | `DELETE` | `{{edgeUrl}}/dm/template/v2`             | No body. Clears any stale upload session. | 200 OK                   |
| 1    | Step 1: Apply Template | `POST`   | `{{edgeUrl}}/dm/template/v2`             | `{"size": <file_bytes>}`                  | `{"id": "<session_id>"}` |
| 2    | Step 2: Apply Template | `PUT`    | `{{edgeUrl}}/dm/template/v2/{id}/resume` | Binary file bytes in body                 | 200 OK, template applied |

## Related: download a template

To export a template (before applying it elsewhere):

| Name              | Method | Endpoint                  | Notes                                                              |
| ----------------- | ------ | ------------------------- | ------------------------------------------------------------------ |
| Download Template | `POST` | `{{edgeUrl}}/dm/template` | Body: JSON with device IDs and flags to include/exclude components |

## See also

- [Resumable Uploads concept]()
- [System / Device Management reference]()

[title] Deprecation Policy
[path] Operations/

# Deprecation Policy

## What's documented vs what's supported

The API portal is the canonical list of **actively-supported** APIs. If an endpoint is not in the portal, treat it as unsupported - it may exist in older builds but is not guaranteed to keep working.

## Deprecation timeline

- Deprecation notice is posted before removal, typically 6 months in advance.
- Deprecated endpoints continue to function during the notice period.
- After removal, calls return 410 Gone or 404 Not Found depending on the module.

## Recommendation

- Pin to a specific product / API version in your client.
- Subscribe to release notes for the products you depend on.
- For automation that runs unattended, set up a smoke test that exercises your critical endpoints against new edge / LEM releases before rolling them out.

[space] Litmus Edge Manager (/edgemanager)

[title] Step 5: Verify Edge Device Activation in Litmus Edge
[path] QuickStart Guide/Activate an Edge Device/

After you have approved the activation request in Litmus Edge Manager, return to Litmus Edge to verify the activation was successful.&#x20;

**To verify the activation was successful:**

1. From the Litmus Edge navigation panel, select **System** > **Tokens**.
2. From *REST API Key*s, verify the creation of a **System API key (read only)**. &#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rmE4IMx9F-XzjtIuYZdkS_system-api-token.png" size="80" width="1920" height="866" position="center" caption="System API key (read only)" showCaption="true"}
3. From the navigation panel, select **System** > **Certificates > Identity**.
4. From *Identity Certificates*, verify the creation of an **Identity Certificate&#x20;**&#x69;ssued by *Litmus Edge Manager.*

# Next Step

The next step is [Enable Default Generic MQTT SSL Connector in Litmus Edge.](docId\:J7vZy8dJzBQGu0WjEyzIa)


[title] Step 6: Enable Default Generic MQTT SSL Connector in Litmus Edge
[path] QuickStart Guide/Activate an Edge Device/

In Litmus Edge, you will next enable the default generic MQTT SSL connector to facilitate a data connection between the Litmus Edge instance and its respective Litmus Edge Manager.&#x20;

**To enable the connector:&#x20;**

1. From the navigation panel, select **Integration**.
2. From the **Default Generic MQTT SSL connector&#x20;**&#x74;ile's top-right corner, click the connector toggle switch.
3. Wait a few seconds for the **Default Generic MQTT SSL connector&#x20;**&#x74;ile's top-left corner to show a `CONNECTED` status.

See the *Manage Individual Connectors* section in [Manage Connectors](docId:5hctoRLhgaX3Ikh_lvi0A) for more information.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AGu7ox7E-LN_9ZrRab6Kx_2023-07-1714-36-27.png "Enabling Default Generic MQTT SSL connector")

# Next Step

Lastly, [verify Edge Device activation in Litmus Edge Manager](docId\:KC9sqRSng2KSINWL1PfPi).


[title] Policy
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

The *Policy* tab allows you to view the current policies set up for the selected edge device. You can select a different policy from the Selected Policy drop-down list and save it for the edge device. The policies are set up in the Admin console and the available policies appear on the list.

To update the password policy, select one from the drop-down list.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4DUypC16vZfE4XrW1-hY2_5lrrehno1-vgcpayjo7lpimage.png "Policy tab")

New policies can be generated from Litmus Edge Manager Admin Console's [Edge Password Policies](docId\:nZxdm63Ip1guJ_mQiN140) pane.

[title] Deployment of Litmus Edge Manager from Azure SaaS
[path] QuickStart Guide/Installation and Deployments/

Litmus provides Litmus Edge Manager (LEM) as a managed SaaS solution on Azure Marketplace. If your organization has a custom agreement, you use a private offer for deployment. A private offer is custom plan that you've negotiated with Litmus that is not available on the public marketplace.

You deploy LEM through the private offer by:

- Accepting the private offer on the Azure marketplace
- Purchasing and deploying the private on the Azure marketplace
- Activating the subscription on Litmus Central Portal
- Downloading and deploying Litmus Edge Manager from Litmus Central Portal

Note that private plans are offered through Site Model licensing. This licensing model gives you full control over your infrastructure. With this model:

- You deploy the infrastructure but no license is included. You request a license separately from the Litmus Account team.
- Tag consumption is not monitored or billed.
- You maintain full control over your virtual machines. Litmus has no access to your environment.

## Prerequisites

Before you being, ensure that you have:

- Negotiated a private plan with Litmus.
- Access to [Azure Portal](https://portal.azure.com/).

# Step 1: Accept the Private Offer

1. Log in to [Azure Portal](https://portal.azure.com/#home) and search for `Marketplace`.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9kr-Sl91f0MOVHMpZDw5x_image.png" size="80" width="1568" height="628" position="flex-start" darkWidth="1568" darkHeight="628" showCaption="false" indent="2"}

2. In the left navigation menu, select **Private Offer Management**.
3. In the **Private Offer Management** page, click **View + accept** for the **Litmus Edge Manager SaaS - Site Model** offer.


::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Gd5X6gYFcUV6RP1vUKf8w_image.png" size="80" width="1497" height="497" position="flex-start" darkWidth="1497" darkHeight="497" showCaption="false" indent="2"}

4. Next, a page displays with offer details and terms and conditions. Review this information, confirm that you've read the terms and conditions, and click **Accept Private Offer**.

Then you're returned to the **Private Offer Management** page.

# Step 2: Purchase and Deploy the Private Offer

1. In the **Private Offer Management** page, click **Purchase** for the Litmus Edge Manager SaaS - Site Model offer.
2. In the right pane, define the following settings:
   - **Resource Group**: Select a resource group in which to place the SaaS instance.
   - **Name**: Provide a name for the Litmus Edge Manager SaaS offering that you're subscribing to.
   - **Billing term**: Select a 1, 2, or 3 year subscription.
   - **Recurring billing**: Decide on whether to automatically renew after the subscription expires.
3. Click **Review + subscribe**, review subscription settings again if necessary and click **Subscribe**. The **Subscription progress** page displays while the SaaS subscription is setting up. When complete, the offering has been deployed.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZrWpnogY9zU7_dLx4oDvl_image.png" size="80" width="1500" height="649" position="flex-start" darkWidth="1500" darkHeight="649" showCaption="false" indent="2"}

4. Once complete, click **Configure account now** and you are directly to the Azure Marketplace Activation page in [Litmus Central Portal](https://portal.litmus.io/).

The link redirects you to the **Azure Marketplace Activation** page in Central Portal.

# Step 3: Activate the Subscription in Litmus Central Portal

1. On the **Azure Marketplace Activation** page in Central Portal, click **Activate Subscription**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Cr0n0RYjB7Hbdx7qhNOFN_image.png" size="80" width="1480" height="737" position="flex-start" darkWidth="1480" darkHeight="737" showCaption="false" indent="2"}

:::Paragraph{indent="2"}
A message displays indicating that Microsoft is finalizing the activation.
:::

2. When complete, click **Deploy to Azure**. You also receive an email from Microsoft confirming that the SaaS subscription is active.


::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x61MYfhCdqcoFQOkp8Zus_image.png" size="80" width="1335" height="801" position="flex-start" darkWidth="1335" darkHeight="801" showCaption="false" indent="2"}

# Step 4: Deploying to Azure

In the **Custom deployment** page in Azure, specify template settings for the deployment.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8r2YoDbR0EBFAoGc-uP31_image.png" size="80" width="1330" height="673" position="flex-start" darkWidth="1330" darkHeight="673" showCaption="false"}

### Required Parameters

| Parameter    | Description                                 |
| ------------ | ------------------------------------------- |
| sshPublicKey | SSH public key for VM administrator account |

### VM Configuration

| Parameter     | Description                                            | Default value           |
| ------------- | ------------------------------------------------------ | ----------------------- |
| projectName   | Name prefix for generating resource names (3-10 chars) | lem                     |
| location      | Azure region for deployment                            | Resource group location |
| vmSize        | VM size (minimum recommended: Standard\_B4ms)          | Standard\_B4ms          |
| adminUsername | VM administrator username                              | lemadmin                |
| osDiskSizeGB  | OS disk size in GB (128-1024)                          | 160                     |

### Network Configuration

In the downloaded template, you can modify the `subnetAddressPrefix` or use it as is. For example, modify the parameter to accept a /32 single IP.

| Parameter                   | Description                     | Default value |
| --------------------------- | ------------------------------- | ------------- |
| virtualNetworkNewOrExisting | Create new or use existing VNet | new           |
| virtualNetworkName          | Name of virtual network         | lem-vnet      |
| virtualNetworkResourceGroup | Resource group of existing VNet | Current RG    |
| virtualNetworkAddressPrefix | Address prefix for new VNet     | 10.0.0.0      |
| subnetName                  | Name of subnet                  | lem-subnet    |
| subnetAddressPrefix         | Address prefix for new subnet   | 10.0.0.0/24   |

### Public IP Configuration

Litmus Edge Manager does not require a public IP. It only needs to be reachable from the Litmus Edge instances that connect to it and Litmus Edge Manager users. Where reachability is provided privately (VNet peering, VPN, or ExpressRoute) set `publicipneworexistingornone` to `none`.

| Parameter                   | Description                                      | Default value |
| --------------------------- | ------------------------------------------------ | ------------- |
| publicIpNewOrExistingOrNone | Create new, use existing, or none (private only) | new           |
| publicIpName                | Name of public IP address                        | lem-pip       |
| publicIpResourceGroup       | Resource group of existing public IP             | Current RG    |

### Tags

Enter tags in the parameter field as JSON using the following syntax.

`{"environment": "production", "costCenter": "IT-12345", "owner": "admin@company.com"}`

| Parameter                | Description                  |
| ------------------------ | ---------------------------- |
| vmTags                   | Tags for the virtual machine |
| networkSecurityGroupTags | Tags for the NSG             |
| virtualNetworkTags       | Tags for the VNet            |
| publicIpTags             | Tags for the public IP       |
| networkInterfaceTags     | Tags for the NIC             |

# Step 5: Accessing Litmus Edge Manager

After deployment completes, you can:

1. Access the LEM administration console at `https://<public-ip>:8446`.
2. Access the web interface at `https://<public-ip>`.
3. SSH to the VM using: `ssh <adminUsername>@<public-ip>`. Note that port 22 (SSH) is blocked by the firewall by default. Create an inbound rule that allows TCP traffic on port 22 before you connect.

[title] Add Security Headers
[path] QuickStart Guide/

Complete the following steps to add new security headers to Litmus Edge Manager.&#x20;

# Security Header Directives

Refer to the following directives when completing the steps below.&#x20;

```shell
add_header Content-Security-Policy "default-src 'self' https://static.zdassets.com https://ekr.zdassets.com https://ekr.zendesk.com https://litmus.zendesk.com https://*.zopim.com https://zendesk-eu.my.sentry.io wss://litmus.zendesk.com wss://*.zopim.com; img-src 'self' https://litmus.zendesk.com https://media.smooch.io https://v2assets.zopim.io https://static.zdassets.com data:; font-src 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://api.smooch.io https://cdn.segment.com/ https://www.googletagmanager.com https://static.zdassets.com; style-src * blob: 'unsafe-inline'; connect-src 'self' https://api.segment.io/ https://ekr.zdassets.com https://litmus.zendesk.com wss://widget-mediator.zopim.com https://api.smooch.io https://*.config.smooch.io wss://api.smooch.io;";
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload; always;";
add_header Referrer-Policy "strict-origin-when-cross-origin";
```

# Add New Security Headers

1. Connect to Litmus Edge Manager through SSH. Refer to [Access Litmus Edge Manager](docId\:w3uHZQ4tSrH7OLjhuLt0A) for default login credentials.&#x20;
2. Open or create the following file: `/etc/nginx/snippets/sec-hdrs.conf`.&#x20;
3. If the file exists, run the following command to create a backup by running the copy command.&#x20;
   `cp /etc/nginx/snippets/sec-hdrs.conf /etc/nginx/snippets/sec-hdrs.conf.bak`
4. Add or modify the file by using the directives above in *Security Header Directives*.
   - Use the `add_header` directive to add your header. Ensure that each `add_header` statement ends with a semicolon (;).
   - If a header has components separated by semicolons, use double quotation marks ("") to enclose the text.&#x20;
5. After editing the file, validate the Nginx configuration with the following command.&#x20;
   `sudo nginx -t`
6. If the validation passes without errors, reload Nginx to apply the changes with the following command.&#x20;
   `sudo systemctl reload nginx`


[title] View Edge Metrics
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/

You can view metrics for edge device from the Edge Devices module. Metrics are updated every 30 seconds.

# Before You Begin

- Ensure you have started metrics pulling. See [Manage](docId\:BoOFh2bJOlfpger0QymmF) for more information.
- Ensure the edge devices version are 3.2.0 or later. Metrics are not available for edge device versions prior to 3.2.0.
- Obtain an administrator account to receive the permissions to view metrics.

**The following metrics are provided**:

- Integration disk usage
- Integration messages processed
- Integration status
- Integration tags
- Edge device online status
- Edge device tags
- Edge device topics

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IpBwwvGODZ4sMku_VH28J_2023-07-1910-16-40.png "View Edge Metrics tooltip")


[title] Bulk Actions
[path] Litmus Edge Manager User UI/Product Features/Certificates/

:::hint{type="info"}
**Note**: This feature is available for Litmus Edge Manager version 2.26.0 and later.&#x20;
:::

The *Certificates Management&#x20;*&#x70;ane allows the deployment of certificates to multiple edge devices at once.&#x20;

# Before You Begin

Ensure you do the following:

- Have imported a ZIP file that contains the necessary certificate configurations and parameters.&#x20;

**To add a certificate in bulk to your edge device(s):**

1. Click **Bulk Actions** button from the *Certificates Management&#x20;*&#x70;ane.
   The *Bulk Actions&#x20;*&#x64;ialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XhhvQF0YHJ9iI2VT6kdbQ_image.png" size="70" width="1691" height="624" position="center" caption="Certificates Management pane" showCaption="true"}
2. From the *Select Devices&#x20;*&#x70;ane, select the checkbox next to the edge device(s) you wish to add the certificate to.&#x20;
   Then, click **Next**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ixQIx3sfqNykg-_3Entng_image.png" size="70" width="1528" height="603" position="center" showCaption="false"}
3. From the *Select Action&#x20;*&#x70;ane, select the option you need from:
   - **Reset to Edge default certificate:&#x20;**&#x52;eset the certificate to the default certificate that comes with the Edge device.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qtXPfEskAlDf1dtfBIDr0_image.png" size="70" width="1529" height="610" position="center" showCaption="false"}
   - **Issue a new certificate:** Issue a new certificate for the Edge device. Options includ&#x65;**&#x20;Litmus Edge Manager** self-signed certificate and [DigiCert](docId\:JD0z31mg3jF1iju1PrU3e) **IoT Trust Manager.**
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-VEW0AzDEEEz8ynX-mXS1_image.png" size="70" width="1533" height="596" position="center" showCaption="false"}
   - Then, click **Next**.
4. Review the *Summary* of the target devices and the selected certificate allocation method, and click **Issue certificate**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DHdDxZ0GN45HYbYwYXtgY_image.png" size="70" width="1527" height="598" position="center" caption="Review page" showCaption="true"}
5. Once the *Status* has changed to *SUCCESS*, click **FINISH**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CwlEcDsUKFIMe5x8Ibhu9_image.png" size="70" width="1527" height="598" position="center" caption="Result pane" showCaption="true"}


[title] 
[path] Litmus Edge Manager User UI/


[title] Application Details
[path] Litmus Edge Manager User UI/Product Features/Applications/

You can view a selected application's details from the Applications pane. Viewing an application's details opens the selected Application Details pane.

From the *Application Details* pane, you can deploy the selected application. You can start and stop an application, update an application, and view the application logs for a selected edge device from the application details pane. You can select an edge device ID link to view its details. You can select a group and filter the edge devices to narrow the list.

# Access Application Details UI

**To access the Application Details UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   - Click a project from the *Project&#x20;*&#x70;ane.&#x20;
     The *Dashboard&#x20;*&#x70;ane appears for the project.
   - Click the **Actions** icon for a project, and then select **View**.&#x20;
     The *Dashboard&#x20;*&#x70;ane appears for the project.
4. From the Navigation panel, select **Applications**.
   The *Applications* pane appears.
5. Click the **Actions** icon next to an application, and then select **Details**.
   The *Application Details* pane appears.

## Litmus Edge Manager version 2.31.0 and later

The following image shows Litmus Edge Manager version 2.31.0.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4dU1Xkd-rQhPkvKZNyf7v_image.png)

In the **Application Details** page, you can:

- **View the app**
  See [Application Releases](docId\:V_JC6NJ8Hu8R756NNEr7n) for more details.
- **Deploy the app**
  Click **Deploy Applications** at the right. See [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw) for details.
- **Filter edge devices**
  Filter by release, edge devices status, and app status.
- **View edge device details**
  View the edge device and app status, app name and release version, and the parameters set when the app was deployed.
- **Start, stop, update, and delete app and view logs**
  In the **Actions** menu, select:
  - **Start Application**
    Start the application.
  - **Stop Application**
    Stop the application.
  - **Update Application:** After updating an application (deploy a new image of that application to an edge device), you must remove the previous version of that application from the Litmus Edge device. See [Manage Images](docId\:HkWdmj1Xcl6ETf1_A4Xkd) for removal. Obsolete images do not interfere with the new image operations but they do occupy significant disk space.
  - **Delete Application:&#x20;**&#x54;he application does not need to be stopped first to delete it. This delete operation terminates the Docker container and does not remove the Docker image from the Litmus Edge instance. If needed, manually delete the Docker image from the Litmus Edge instance as it does occupy significant disk space. Se&#x65;*&#x20;Delete image* of ﻿[Manage Images](docId\:HkWdmj1Xcl6ETf1_A4Xkd) for details.
  - **Logs**
    View logs.

## Litmus Edge Manager version 2.8.0 and later

Refer to the following actions you can take on the *Application Details* pane. The user interface below is for Litmus Edge Manager version 2.8.0 and later.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HfnAlGgVYAQERhzLkgV8x_image.png)

| **Action**                                  | **Details**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **View Application**                   | See [Application Releases](docId\:V_JC6NJ8Hu8R756NNEr7n) for details.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| \[2] **Deploy application to device(s)**    | See [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw) for details.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| \[3] **Multiple Select**                    | - Start
- Stop
- Update Application
- Trash                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| \[4] **Refresh**                            | Update the list.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| \[5] **Filter Edge Devices by Group&#x20;** | Select specific devices based on conditions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| \[6] **View Edge Device Details**           | [Apps](docId\:pwQmgXarWxphcibP2z12U)****                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| \[7] **Action menu**                        | Only available for the applications deployed from the *Marketplace Catalog*.<br />- **Start Application**
- **Stop Application**
- **Update Application:** Once an application is updated (deploy a new image of that application to an edge device), the previous (now obsolete) version of that application must be removed from the Litmus Edge device. See [Manage Images](docId\:HkWdmj1Xcl6ETf1_A4Xkd) for removal. Obsolete images do not interfere with the new image operations but they do occupy significant disk space, which might pose a problem.
- **Delete Application:&#x20;**&#x54;he application does not need to be stopped first to delete it. This delete operation only terminate the Docker container, but it does not remove the Docker image from the Litmus Edge instance. Ensure, if needed, you also manually delete the Docker image from the Litmus Edge instance as it does occupy significant disk space. Se&#x65;*&#x20;Delete image* of ﻿[Manage Images](docId\:HkWdmj1Xcl6ETf1_A4Xkd) for details.
- **Logs** |


[title] User Journey
[path] Overview/

The diagram below displays the most common journey of the Litmus Edge Manager experience. These tasks include important edge device management activities, but there are many other capabilities and features available to you in Litmus Edge Manager.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/Q116WJTAr1sefeVNvMCF9-3pS5LIeG6FlfNLfE1Wi9g-20240816-144716.png)

**1a.** Review the available options for [Installation and Deployments](docId:0Ft8e3hukX_5V8S8jJkma) to begin your journey.&#x20;

**1b.** After installing, make sure to review the [Post-Installation Checklist](docId\:dC69ksmc0KkrDTK9q8GIy).&#x20;

**1c.** You can review [User Profile Administration](docId\:xFOg2xRprqINGA9cLsZB-) to see how to manage your user account and set up Keycloak two-factor authentication.&#x20;

**2.** To connect an edge device (Litmus Edge instance) with Litmus Edge Manager, you will need to [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB).&#x20;

**3.** You can keep track of connected Edge devices by reviewing the status and metrics in Litmus Edge Manager.&#x20;

To monitor the status of Edge devices, navigate to the *Edge Devices* pane and hover over the **Data | Control** icon to view the device status and additional details.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/q_cg-SoLrdRMOpGDu9HZ2_image.png" size="80" width="1579" height="366" caption="Edge Device status icon" position="center" darkWidth="1579" darkHeight="366" showCaption="true"}

To review metrics for an edge device, navigate to the *Edge Devices* pane and click the **Metrics&#x20;**&#x74;ab.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KOIHo2hriuhWsdJjsffxZ_image.png" size="80" width="1503" height="650" caption="The Metrics tab for an Edge device" position="center" darkWidth="1503" darkHeight="650" showCaption="true"}

To access more device information, you can view [Edge Device Details](docId\:YwQwD4skuVTwNtcAV5ijs) and [View Data from an Edge Device and/or a Child Device](docId\:E6vquqVSqtUfJIyhmFgOo).&#x20;

You can also review metrics by using Grafana. Learn more about [Grafana Dashboards](docId\:YTC1N5pOOjR1elW34jQmF) and how to [Visualize Child Device Data Using Grafana](docId\:cY2MwkiuvJ2nvNBZhaotC).&#x20;

**4.** You can review details for [Alerts](docId\:BWq6oBkuTNZgIJBIgQPBE) and [Manage Alert Triggers](docId\:ssMqiDTPoBpV95sc3lkaC) for connected devices. This allows you to monitor the activity of edge devices connected to Litmus Edge Manager and receive alerts when important events occur.&#x20;

**5.** The *Applications&#xA0;*&#x6D;odule contains a list of catalogs and applications available to the selected project. Litmus Edge Manager includes a default Marketplace catalog with applications ready to be deployed. You can [Manage Applications](docId:1cjuL2kjJIQEBN2kVHjp6) from Litmus Edge Manager and [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw).&#x20;

**6.** **Templates** allow you to create a template from an edge device or upload a template from a file for your edge devices.

:::hint{type="warning"}
**Important**: Before you can create a template, you must add one or more online edge devices in the Edge Devices pane.
:::

Learn more about doing the following:

- [Parameterize a Template](docId\:ol2rl-sxp_6Y4ISmGzhXA)&#x20;
- [Apply a Parameterized Template](docId\:nA7fu9L0Lnpo0Ayr7hAOv)&#x20;
- [Apply a Parameterized Template During Activation](docId\:EPSYMUsWZ9uHWcMWMnyaX)&#x20;

**7.** The Digital Twins feature allows you to use data to create models that can predict how a product or process performs. It is a virtual representation of a physical object or system across its life-cycle. You can [Add](docId\:AzdXAlrQzY8jGoXmHHnbR), [Manage](docId\:UDNLsFwTYZfoBnAjsflyK), and [Deploy Digital Twin Models to Edge Devices](docId\:hyW_gkgyU2viMnc0I8Nqg) from Litmus Edge Manager.&#x20;

**8.** The Edge Software module provides you with all the tools needed to manage updates and upgrades of the edge devices managed by Litmus Edge Manager. You can upload the `.upd` file onto the admin console once and it can be used to upgrade edge devices using the Litmus Edge Manager Admin Console *Software update&#x20;*&#x6F;ptions. All the images that you load onto the admin console are available for edge device upgrades.

You can create groups of edge devices and update them at a specific time or instantly using the upgrade options. You can ensure that edge devices are running on the latest version, manage the disk space used, and view a history of updates.

See [Edge Software Update](docId:3IevluZfOdrXAqOOpVT1n) to learn more.&#x20;

**9.** You can enable the Remote UI feature to access and manage your connected edge devices from Litmus Edge Manager. You do not need access to public internet to access your edge devices.

Before using this feature, review the *Before You Begin* section in [Open Edge Devices](docId\:XpURI-8b1QSviQEpNCvzD).&#x20;

To use the Remote UI feature, navigate to *Edge Devices* and click the **Open Litmus Edge UI** icon or open the **Action menu** and select **Open UI**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aRRcMycZR59oGUuwkQn0Z_image.png" size="80" width="1920" height="969" caption="Open Litmus Edge UI icon" position="center" showCaption="true"}


[title] Cancel Software Update Tasks
[path] Litmus Edge Manager User UI/Product Features/Software Update/

You have the option of canceling individual tasks and multiple tasks at once.&#x20;

:::hint{type="info"}
**Note**: These options are available for Litmus Edge Manager version 2.15.0 and later.&#x20;
:::

# Cancel Individual Tasks

To delete an individual task, click the **Action menu** for the task and select **Cancel task**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Whh75CyUcKcEJzFyMhyXz_image.png "Cancel task option")

# Cancel All Tasks

To cancel all tasks, click the **Cancel all scheduled tasks** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/epJERETW8rdHHRq6qlscT_image.png "Cancel all scheduled tasks icon")

# Cancel Selected Tasks

You have the option of selecting multiple tasks to cancel at once.&#x20;

**To cancel selected tasks:**

1. Click the **Switch multi-select mode** on icon.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1IfzjQEYAmB3ocvNSwFxs_multiselectjobs01.png "Switch multi-select mode icon")
2. Select the tasks you want to cancel.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Sbjbk6grVOtZVqkpOXZq5_multiselectjobs02.png "Click checkboxes to select tasks")
3. Click the **Cancel task** icon.&#x20;
   The *Confirmation&#x20;*&#x64;ialog displays.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cE9LDZuukLyYaHTbmWOCj_multiselectjobs03.png)
4. Confirm the cancelation and click **YES, CANCEL**.&#x20;
   The selected tasks are canceled.&#x20;


[title] Edge Devices
[path] Litmus Edge Manager User UI/Product Features/

Once you [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) from Litmus Edge Manager, you can do the following from the *Edge Devices* page:

- View details such as the device ID (UUID) and data/control status for each device
- View metrics
- Deactivate or delete a device
- Open the edge device UI in a new browser tab
- View edge devices that have expired licenses

# Access Edge Device UI

**To access the Edge Device UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. &#x20;Do one of the following:
   -     Click a project from the Project pane.
   - Click the **Actions** icon for a project, and then select **View**.
4. From the navigation panel, select **Edge Devices**.
   The *Edge Devices* pane appears.

Refer to the following actions you can take on the *Edge Devices&#x20;*&#x70;ane. The user interface below is for Litmus Edge Manager version 2.10.1 and later.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/j90DbxZfeJQCnB5bnsiCZ_2023-08-0810-10-09.png "Edge Devices ")

:::hint{type="info"}
**Note**: If the child device's tag is removed from the *Default Generic MQTT SSL connector*, the child device is not deleted from the list of available child devices and will still be displayed.&#x20;
:::

| **Action**                                                                             | **Details**                                                                                                                                                                                                                                                                                                                                        |
| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Show child devices**                                                            | Before a child device can be viewed, that child device's tag must be added or imported to th&#x65;*&#x20;Default Generic MQTT SSL connector* in the child's parent Litmus Edge instance. See [Set up Default Generic MQTT SSL Connector with Imported Topics in Litmus Edge](docId\:E6vquqVSqtUfJIyhmFgOo) for details.                            |
| \[2] **View&#x20;**[Edge Device Details](docId\:YwQwD4skuVTwNtcAV5ijs)**&#x20;&#x20;** | Provides comprehensive information about the selected edge device.                                                                                                                                                                                                                                                                                 |
| \[3] [Open Edge Device](docId\:XpURI-8b1QSviQEpNCvzD)                                  | Launches the user interface of the selected edge device.                                                                                                                                                                                                                                                                                           |
| \[4] [View Edge Metrics](docId\:LN8vukirANWG3gtEM9pA2)                                 | Displays performance metrics related to the selected edge device.                                                                                                                                                                                                                                                                                  |
| \[5]**&#x20;View Data and Control Status**                                             | Shows the current data and control connectivity status for the edge device.                                                                                                                                                                                                                                                                        |
| \[6] **Action menu**                                                                   | - **Deactivate:&#x20;**&#x54;his action will disconnect the *Data \| Control* for the selected edge device.
- **Delete:&#x20;**&#x4F;nce an edge device is deleted, the delete status update updates in real time. However, the actual deletion from Litmus Edge Manager takes place after a 24-hour period.
- **Open UI** / **Open UI (new tab)** |
| \[7] **Open filter**                                                                   | Search by *Id / Name*, *Friendly Name*, or *Version.*                                                                                                                                                                                                                                                                                              |
| \[8] [Multi-Select Mode](docId\:CxDWBdmKV_Ovs5CcwpTes)****                             | Use this feature to *group* several devices at the same time.                                                                                                                                                                                                                                                                                      |
| \[9] **Advanced Filter**                                                               | Provides enhanced filtering options for more refined device searches.                                                                                                                                                                                                                                                                              |


[title] Licenses
[path] Litmus Edge Manager User UI/Product Features/

:::hint{type="info"}
**Note:&#x20;***Licenses Summary&#x20;*&#x68;omepage has been updated and is available for Litmus Edge Manager version 2.18.0 and later.
:::

In **Licenses**, you can do the following:

- Track and analyze license key statistics
- View total, active, used, expired, or unused licenses
- Track activation details
- Filter usage and availability in real-time

You can also manage core and add-on licenses, conduct bulk uploads and deployments, generate CSV reports, and use advanced configuration options for license activation using SKUs.

For more detailed information on licenses, see [Site and Node-Locked License Overview for Litmus Edge Manager](docId\:Jvibd0MBSj97ZcPDfhab9).

:::hint{type="info"}
**Note**: The Licenses module is available from an open project.
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tiggS5MwmBMjJLLPTqL3i_image.png)

:::hint{type="info"}
**Important for Cloud Deployment**:

Before activating the license, ensure all hardware/VM configuration steps that can modify the MAC address (add/replace a Network Interface Controller (NIC) card) are finalized.

The license Host ID depends on the Media Access Control (MAC) address for the device. The MAC address identifies the devices on a network. Changing the MAC address will invalidate the license.
:::

# Access Licenses UI

**To access the Licenses UI:**

1. Log in to Litmus Edge Manager.
2. Select a company and project.&#x20;
   The *Projects* pane appears.
3. From the Navigation panel, select **Licenses**.
   The *License Summary* pane appears.

Refer to the following actions you can take on the Litmus Edge Manager User UI's *Licenses* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9QcG7GodjqAt7B8KUMu8w_lem-licenses-02.png)

| **Action**                                                 | **Details**                                                                                                                                                                                               |
| ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **License Usage Statistics**                          | - Licenses Types
  - Core
  - Add-on
- Total Licenses
- Used Licenses
  - Active
  - Expired
- [Un-Used Licenses](docId\:qLrNQnUbla_1ayCXro-eU)****                                                       |
| \[2] **Filter**                                            | Refine displayed license data based on specific criteria.                                                                                                                                                 |
| \[3] [Bulk Deploy Licenses](docId\:PlUrdxfMXIX0dCpApy0_H)  | Deploy licenses in bulk for multiple devices.                                                                                                                                                             |
| \[4] [Generate a Report](docId\:NayEcoyMir18JHrrDQCRl)     | Create summary reports of license usage and statuses to download an use locally.                                                                                                                          |
| \[5] [Upload License CSV](docId:9oVnX_gYLpZzZB_lTGjdO)     | Upload license info in CSV format for bulk management.                                                                                                                                                    |
| \[6] [Edge Device Details](docId\:YwQwD4skuVTwNtcAV5ijs)   | View specific information about associated edge devices.                                                                                                                                                  |
| \[7] **Action menu**                                       | Access options to deploy licenses and show license features.<br />- **Deploy License:&#x20;**&#x53;ee [Bulk Deploy Licenses](docId\:PlUrdxfMXIX0dCpApy0_H) for details.&#x20;
- **Show license features** |


[title] Task List and Task Details
[path] Litmus Edge Manager User UI/Product Features/

:::hint{type="info"}
**Note**: The Task List and Task Details feature is available for Litmus Edge Manager 2.7.0 and later.&#x20;
:::

The Task List and Task Details feature is designed to monitor and track the status of all tasks that can be applied concurrently to multiple Litmus Edge instances. When the tasks are complicated enough and are applied to enough instances, they could require a lot of computing resources and time to complete. Only tasks in the last 24 hours will be automatically displayed.

LEM can only monitor and track the following:

- [Apply a Parameterized Template](docId\:nA7fu9L0Lnpo0Ayr7hAOv)&#x20;
- [Add New Software Job](docId\:i24b2ShVA4EeOxUPftj_M)&#x20;
- [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw)
- *Start Application, Stop Application, Update Application, Delete Application* of [Application Details](docId\:IwpC69go6bc_ZOQ2smTg4)
- *Push Marketplace catalogs to Edge devices* of [Manage Applications](docId:1cjuL2kjJIQEBN2kVHjp6)

# Access Task List and Task Details

**To access the task list and task details:&#x20;**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   - Click a project from the *Project&#x20;*&#x70;ane. The Dashboard pane appears for the project.
   - Click the **Actions** icon for a project, and then select **View**. The *Dashboard&#x20;*&#x70;ane appears for the project.
4. From the top right corner, do one of the following:
   - Click one of the tasks to access the task's *Task Details*
   - Click **Show all tasks** to access the *Task List*

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fwi0lkBqzN8d02R3RM08u_image.png" size="80" width="1920" height="914" caption="Accessing Task List or Task Details" position="center" showCaption="true"}

# Task List

The Task List keeps a history of Litmus Edge Manager tasks and their progress. This feature enables you to monitor the progress of these tasks.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QGk3rCtrIx_z-9YeR1YRl_2023-07-2716-16-24.png)

| **Action**                                  | **Details**                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Show filter** /**&#x20;Hide filter** | Toggles the visibility of filter options to organize and narrow down the displayed tasks effectively.                                                                                                                                                                                                                                                                                        |
| \[2] **Show task details**                  | Reveals in-depth information about a selected task, including its progress and associated sub-tasks.                                                                                                                                                                                                                                                                                         |
| \[3] **Open task page**                     | Navigates to the detailed view of a specific task for more comprehensive insights and management options.                                                                                                                                                                                                                                                                                    |
| \[4] **Action menu**                        | Provides a dropdown of actions, including viewing, editing, or deleting task details for streamlined task management.                                                                                                                                                                                                                                                                        |
| \[5] **Select Task Type**                   | Allows users to filter tasks based on category, such as applying templates or managing Marketplace applications.<br />* All
* Apply template
* Software update
* Launch Marketplace application
* Start Marketplace application
* Stop Marketplace application
* Delete Marketplace application
* Upgrade Marketplace application
* Sync Marketplace
* Refresh Marketplace application cache |
| \[6] **Select Task Status**                 | Enables users to filter tasks by their current status, including new, running, successful, or error states.<br />* All
* New
* Running
* Success
* Error                                                                                                                                                                                                                                     |
| \[7] **Select Task Created From**           | Sets the starting date for filtering tasks created from that specific date, with the current date set as the default.                                                                                                                                                                                                                                                                        |
| \[8] **Select Task Created To**             | Defines the ending date for filtering tasks up to that particular date, allowing users to refine their task search by date range.                                                                                                                                                                                                                                                            |

# Task Details

Task Details provides additional information about a specific task by displaying the task's multiple sub-tasks and their respective details.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5nAeLK7duSK7QuyfWsHqk_tomv3trarxkegu5yc7kquimage.png "Litmus Edge Manager Task Details")

| **Action**                               | **Details**                                                                                                  |
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| \[1] **View Subtask Log**                | Displays messages related to specific sub-task activities.                                                   |
| \[2] **Open task page**                  | Directs to detailed information of the selected task.                                                        |
| \[3] **Open device details**             | Shows information about devices associated with the task. <br />*  [Info](docId:6_6LCntLNjWrq1JBqAS8e)&#x20; |
| \[4] **Change to Table**/**Module view** | Switches between table and module presentations of tasks.<br />* View log                                    |

## Subtask Log

The subtask log displays messages related to a single sub-task. Any log message that appears here will also show up in the *System Events&#x20;*&#x74;ab o&#x66;*&#x20;Projects events* in [Events](docId\:Qh9PnCUT-G1k_Lz9p4-m3).

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/W8MGURmj2GS-h7UseWuFB_7uf0tidqngpzf7fdf3gpu2023-07-1710-10-23.png "Litmus Edge Manager Subtask Log")


[title] Example: Create a Basic Activation Configuration
[path] QuickStart Guide/Activate an Edge Device/Step 2: Create an Activation Configuration in Litmus Edge Manager/

What follows is a simple example of an activation configuration in Litmus Edge Manager for an edge device activation. Please refer to [Step 2](docId\:vVZ99_j_TGxX6b9-Y9f8L) for more information and the general procedure.

**To create a basic configuration:**

1. Log in to Litmus Edge Manager.
2. Select a company.   &#x20;The *Projects* pane appears.
3. Click a project from the Project pane. The *Dashboard* pane appears for the project.
4. From the navigation panel, select **Activation**.&#x20;
   The *Configuration* and *Requests* sub-modules drop down.
5. From the navigation panel, select **Configuration**.&#x20;
   The *Activation Configuration* pane appears.
6. Click the **Add (+)** icon.&#x20;
   The *Activation Config List/ NEW&#x20;*&#x70;ane appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PT0YDQ4ibjxogxl2BfZkt_2023-07-1913-01-01.png "Activation Configuration: Add button")
7. (Optional) Customize the following characteristics according to your requirements.&#x20;
   - Limits
     - Number of edge devices
     - Lease TTL
     - Expiration Date
   - License Type: Node-Locked vs Site
     - Node-Locked License Keys
   - Templates
   - Template Variables
   - Provision Options
   - Advanced Settings
8. Click **Save**.&#x20;
   The activation configuration you have created is saved. For site-based licenses, the edge device activation code appears in the *Activation Code* field of the *Activation Code* section. &#x20;
9. Copy aside the *Activation URL* and *Activation Code* values. They will be needed for the activation and configuration of a Litmus Edge instance.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jAZIekxm9Mpl9rXiYeKyf_2023-07-2715-48-30.png "Activation Code and Activation URL")

**Proceed to&#x20;**[Step 3: Create an Activation Request in Litmus Edge](docId:0AxUENzrqbUXfriiPUYlh)**.**


[title] Activate an Edge Device
[path] QuickStart Guide/

Before an Edge device can be managed centrally, it must be activated. Activation establishes:&#x20;

- Secure communication between Litmus Edge and Litmus Edge Manager
- License compliance (node-locked or site-based)&#x20;
- Centralized control of device configurations

Think of activation as the handshake that allows your Edge device to join the Litmus ecosystem.



![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GnT5Ru7vlYg3DiFOutYyN-20251127-230839.png)

### Step 1: Verify Compatibility

- Ensure your **Litmus Edge version** matches the **Edge Manager version**. See [Step 1: Verify Litmus Edge- Litmus Edge Manager Compatibility](docId\:lpIY4g2pqsn7iJfPKgamz).
- Incompatible versions may cause API errors or missing features.

### Step 2: Create Activation Configuration

- Navigate to **Edge Manager&#x20;**>**&#x20;Devices&#x20;**>**&#x20;Activation Config**.
- Fill in required parameters:
  - Device ID
  - License key
  - Server URL/port
- This configuration file acts as the identity card for your device.

### Step 3: Request Activation

- Upload the activation config from your Edge device.
  The device sends a request to Edge Manager.
- Pending requests appear in the **Activation Queue**.

### Step 4: Approve Request

- An administrator reviews and approves the request.
- Approval ensures only trusted devices join the network.
- Once approved, the device is officially recognized.

### Step 5: Verify Activation

- Confirm the device appears in the **Active Devices list**.
- Check connectivity status (green indicator).
- Run a quick test: send sample data to Edge Manager.

### Step 6: Enable MQTT SSL Connector

- Go to **Connector Settings** and enable **MQTT with SSL**.
- MQTT is the default protocol for data transfer, and SSL ensures encryption.
- This step secures all communication between Edge and Manager.

### Troubleshooting

- **License mismatch**: Double-check license type and key.
- **Firewall blocking port**: Ensure server port is open.
- &#x20;**SSL certificate error** → Verify certificates are valid and not expired.

*Best Practice:* Always sync device time with NTP before activation to avoid certificate issues.

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/K_sQdSPIVpc?si=2RkIWp1p8vBYfecv&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::


[title] Edge Remote Network
[path] Litmus Edge Manager User UI/Product Features/Remote Access/

After you have activated an edge device (See [Activation](docId:0vtl5o6-X3oMmsEDaTaoP)) from within Litmus Edge Manager, that device's remote connection information is displayed automatically in that pane. The list of edge device connections includes the following information.

- Peer ID
- Peer name (hostname)
- Edge Device ID
- Friendly name
- Allowed IP address (subnet mask)
- Traffic In | Out
- Online status for the peer
- Date and time the peer was last online

On the *Edge Remote Network* pane, you can:

- View and copy the network name, as well as the connection's subnet address
- Display an edge device's details by clicking its ID on the list
- Refresh the Edge Remote network
- Enable or disable auto-refresh for the Edge Remote network
- Remove a peer node (edge device connection)

# Access Edge Remote Network UI

**To access the edge remote network UI:&#x20;**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   - Click a project from the *Project* pane.
     The *Dashboard* pane appears for the project.
   - Click the **Actions** icon for a project, and then select **View.&#x20;**&#xA;The *Dashboard* pane appears for the project.
4. From the Navigation panel, select **Remote Access**.
   The *Zerotier Network* tab appears by default.
5. Click the **Edge Remote Network** tab.
   The *Edge Remote Network* pane appears.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Hi22xh2E0evxDV-AKQUB6_coixbmx3klusd-jlruqqgimage.png "Edge Remote Network tab")

| **Action**                                                         | **Details**                                                                      |
| ------------------------------------------------------------------ | -------------------------------------------------------------------------------- |
| \[1] **Copy to clipboard Network Name**                            | Copies the network name for easy access.                                         |
| \[2] **Copy to clipboard Subnet**                                  | Copies the subnet address for configuration.                                     |
| \[3] **View** [Edge Device Details](docId\:YwQwD4skuVTwNtcAV5ijs)  | Displays detailed information about the device.                                  |
| \[4] **View Edge Device status**                                   |  Shows the current online status of the device.                                  |
| \[5] **Action menu**                                               | - Delete                                                                         |
| \[6] **Auto Refresh**                                              | Automatically updates the network information regularly by 5, 10, 30, 60 seconds |


[title] Overview
[path] /

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ianfKvIKm19gwUNVS_5du_lem.png)

Litmus Edge Manager is a centralized management platform for edge devices, data, and applications at the edge. As a single point of control for all Litmus Edge instances (edge devices), Litmus Edge Manager handles large-scale deployments across multiple facilities. Litmus Edge Manager gives you control over edge devices, from bootstrap to replacement, with secure mass deployment, over-the-air updates, and automated actions.

Litmus Edge Manager offers an option to act as a central data repository. It is used to set up and manage all aspects of a Litmus Edge environment.

You can access Litmus Edge Manager from a software-defined private network anywhere, using:

- Web User Interface
- REST APIs: to manipulate data programmatically

For more information on how Litmus Edge Manager can manage Litmus Edge devices, start with [Litmus Edge Manager User UI](docId:-sKldTrdGJ49xNOa3yycd).

For more information on how to configure and manage the Litmus Edge Manager itself, start with [Litmus Edge Manager Admin Console](docId\:run1qmlV1AuZ9aleqIakZ).

# Functionality

The Litmus Edge Manager User UI and Litmus Edge Manager Admin Console:

- Connect to any number of edge devices to provide extensive management capabilities
- Offer edge device templates for fast and consistent deployment
- Manage Docker-containerized applications for edge devices
- Deploy applications across multiple edge devices
- Integrate edge devices with cloud or enterprise systems, including Big Data
- Store data in all types of databases and cloud storage systems
- Manage dashboards to generate KPI reports and visualize real-time data across all edge devices
- Provide central AI/ML model management for training, deployment, and lifecycle control
- Enable central license management to streamline compliance and usage tracking
- Support central certificate management for secure edge device communication
- Offer access control and edge device user management
- Provide audit logs and activity tracking for governance and compliance

# Frequently Asked Questions

[Litmus Edge Manager FAQs](docId\:RSQ7IU9K04RS6UiGUc_j2)&#x20;


[title] Edge Device Details
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/

Edge Device Details allows you to manage the edge devices connected to Litmus Edge Manager.

Each edge device includes device properties, collected data, and connectivity information for the device. There are tabs that are available for viewing and configuration. The edge device tabs are specific to a device type. Tabs relevant to the selected edge device are displayed

# Access Edge Device Details UI

**To access the Edge Device Details UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   -     Click a project from the *Project&#x20;*&#x70;ane.
     The *Dashboard* pane appears for the project.
   - Click the **Actions** icon for a project, and then select **View**.
     The *Dashboard* pane appears for the project.
4. From the Navigation panel, select **Edge Devices**.
   The *Edge Devices* pane appears.
5. Click an edge device **ID** link in the Edge Devices pane.
   The selected *Edge Device Details* page open with the **Info** tab.
6. (Optional) Hover over the **Data | Control** icons to view a drop-down status for the selected edge device. This edge device status is viewable from all tabs in the selected edge device details pane.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8PM13XLOtDpyBYY8nx2gD_image.png" size="80" width="1920" height="850" position="center" caption="Edge Device Details" showCaption="true"}


[title] Select a Company
[path] Litmus Edge Manager User UI/Product Features/Company List/

You can [create multiple companies](docId\:QS1mbPG-tWRCyAAWe5Iya) and then select different companies to work with.  As each company is designed to contain its own teams, projects, data collection, and device management, this achieves data security by creating a domain-level isolation between other companies or business units.&#x20;

In a multi-tenancy environment, you can create a company for each of your client companies. In a large corporation, a company can be used to represent a business unit.&#x20;

You can select a company to work within when you log in, from the *Companies&#x20;*&#x6C;ist or from the *Company&#x20;*&#x64;rop-down list. You can search for a company in the Companies list.&#x20;

:::hint{type="info"}
**Note:&#x20;**&#x54;he company you select displays at the top of the window to indicate the context for the configuration. You can switch companies by making a selection from the *Company Name* drop-down list at the top of the window.
:::

**To select a company after logging in**:

1. Log in to *Litmus Edge Manager.*
   A list of companies appears. The user interface below is for Litmus Edge Manager version 2.10.1 and later.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GYOFC2UCrYhfeCn49LKF6_jhfngeksa562-ctx2nxkr2023-07-1416-46-11-1.png "Companies List")
2. Select a company from the list.
   Th&#x65;*&#x20;Projects* pane for the selected company appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/j8NwvgChh5XwvYVb6RldC_juks5j6lh2dve4rzs4c4f2023-07-1416-47-14.png "Projects List")





**To select a company from the Company drop-down list:**

From the company or project from which you are working, select an option from the **Company&#xA0;**&#x64;rop-down list.
The *Projects* pane for the selected company appears.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/u6DQGppHJTFR4Rsqtigub_n4m766-zlwr9snubz51h12023-07-1416-48-06.png "Return to Company List")


[title] Deployment of Litmus Edge Manager on Azure Kubernetes Service (AKS)
[path] QuickStart Guide/Installation and Deployments/

You can deploy Litmus Edge Manager on **Azure Kubernetes Service (AKS)**. You deploy with the following steps:

- [Step 1: Set up your AKS Cluster](docId:8RhqJWbbMvu1pTv95zfjj)
- [Step 2: Connect to Your Cluster](docId:8RhqJWbbMvu1pTv95zfjj)
- [Step 3: Execute Kubectl and Helm Commands](docId:8RhqJWbbMvu1pTv95zfjj)
- [Step 4: Upgrade the Helm Chart](docId:8RhqJWbbMvu1pTv95zfjj)
- [Step 5: Access the Litmus Edge Manager UI using the obtained IP address](docId:8RhqJWbbMvu1pTv95zfjj)

# Before You Begin

Before you begin, make sure that you have:

- A valid [Microsoft Azure](https://azure.microsoft.com/en-us/pricing/purchase-options/azure-account) subscription with permissions to create and manage Kubernetes clusters. See the [Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/) documentation for more details.
- Familiarity with the [Azure Portal](https://learn.microsoft.com/en-us/azure/azure-portal/azure-portal-overview) and [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/?view=azure-cli-latest).
- Installed [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) on your local machine.
- Installed [HELM CLI](https://helm.sh/docs/intro/install/) and [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/) on your local machine.
- Available Litmus Google registry credential key file (for example, `LEM_pull_Key_file.json`).

# Minimum Virtual Machine Requirements

You can meet virtual machine requirements using a single node or multiple smaller nodes. Recommended specifications for production environments depend on your individual use cases.

The minimum virtual machine (VM) requirements are:

- Recommended node size: 8 CPU and 20 GB memory
- Storage Configuration: 100 GB local storage
- Suggested node pool strategy:
  - Single node, for example Standard\_D8s\_v3 or Standard\_D8as\_v\*
  - Multi-node with smaller nodes where combined resources meet or exceed 8 CPU cores and 20 GB RAM






# Step 1: Set up your AKS Cluster in your Azure Portal account

1. Log in to your Azure account.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-w6tANuXEHbLZujPrcANO_image-20250818-164218.png" size="80" width="1933" height="947" position="flex-start" showCaption="false" indent="2"}

2. Open Azure Kubernetes Service.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6OJSgOXebfHUDgZh8WBRw_image-20250818-164402.png" size="80" width="1247" height="627" position="center" showCaption="false" indent="2"}

3. Select your subscription and plan: **Azure Kubernetes Service (AKS)**. Click **Create**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UXZGgxAIIbuKW2Oqwxam9_image-20250818-164736.png" size="80" width="1400" height="783" position="flex-start" showCaption="false" indent="2"}

4. In **Create Kubernetes cluster** > **Basics**, set the following:
   - **Subscription**
     Your subscription is selected already.
   - **Resource Group&#x20;**&#xA;Create a new resource group to contain the cluster resources.
   - **Cluster preset configuration**
     Select `Dev/Test`.
   - **Kubernetes cluster name**
     Set any desired name for the cluster.
   - **Region**
     Set any or `(US) East US`.
   - **Kubernetes version**
     Set any or `1.32.6 (default)`.
   - **Authentication and Authorization**
     Local accounts with Kubernetes RBAC.
   - **Other options**
     Leave default values or modify as required.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cU-EqtOymRf7PXgYV9YIb_image-20250818-170252.png" size="80" width="1245" height="1163" position="flex-start" showCaption="false" indent="3"}

5. In the **Node Pools** tab:
   1. Confirm that the `agentpool` node pool is created for you already.
   2. Make sure the node pool is using `Ubuntu Linux` and the minimum node count is `2`.
   3. Optionally, create a custom node pool by clicking on **Add node pool**.
      **Note:&#x20;**&#x50;ay attention to the `maximum `node count. The deployment will fail if this is set to `2` and the **Max pods per node** is set to `40` or below. In this case, the cluster would need an additional node (3) to distribute all the pods.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Fu5m0bdsyboVobtG7hI-R_image-20250818-171738.png" size="80" width="1041" height="997" position="flex-start" showCaption="false" indent="3"}

6. Set the following in the **Networking** tab:
   - **Enable private cluster**
     Leave this unselected.
   - **Set authorized IP ranges**
     Leave this unselected.
   - **Network configuration**
     Azure CNI Overlay.
   - **DNS name prefix**
     Set your custom DNS name prefix.
   - **Network policy**
     None or modify is needed.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/G71_2vkCi0dRaR92V8wdZ_image-20250815-130041.png" size="80" width="1406" height="1035" position="flex-start" showCaption="false" indent="3"}

7. In the **Integrations** tab, use the default values.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IQSuay_7tpaH4qEpfZ-jp_image-20250819-072905.png" size="80" width="1156" height="876" position="flex-start" showCaption="false" indent="2"}

8. In the **Monitoring** tab:
   1. Select **Enable Prometheus metrics**.
   2. **Azure Monitor workspace**
      Your workspace is already selected.
   3. Select **Enable recommended alert rule**.
   4. **Alert rules**
      Review details and confirm the email for alerts.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fH7H1B8yKqgvlUjz6j54k_image-20250819-073634.png" size="80" width="1156" height="876" position="flex-start" showCaption="false" indent="3"}

9. Use the default values in the **Security** and **Advanced** tabs.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/u3KJCfure0xXDCSrha-b-_image-20250819-073855.png" size="100" isUploading="false" width="1057" height="878" showCaption="false" indent="2"}

10. In the **Tags** tab:
    1. Add your tags as desired.
    2. Add the tags to all resources.
    3. Click **Review + create**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XctgWSbIhuiaREpu7wsEW_image-20250819-074630.png" size="100" width="1200" height="878" darkWidth="800" darkHeight="585" position="flex-start" showCaption="false" indent="3"}

11. In **Review + create**:
    1. Review your settings.

:::hint{type="info" indent="3"}
**Note:** Double-check the following minimum VM requirements:

- The nodes use Ubuntu Linux OS
- Architecture is AMD64
- VM: 8 CPU cores and 20 GB Memory
:::

:::Paragraph{listStyleType="decimal" listStart="2" indent="2"}
Ensure that the validation passes.
:::

:::hint{type="info" indent="3"}
**Note**: If you see `Validation failed. Required information is missing or not valid.` return to that tab and add or correct the required information.
:::

:::Paragraph{listStyleType="decimal" listStart="3" indent="2"}
Click **Create**.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aRGOjhP2ZpLiLpE-I3wG6_image-20250819-075005.png" size="100" width="1081" height="294" darkWidth="800" darkHeight="217" position="flex-start" showCaption="false" indent="3"}

:::hint{type="info"}
**Note:** Creating a cluster takes a few minutes depending on the settings you choose. Check the status or notifications for the latest information about your cluster.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Kw6bTKEUhnV7WMfqjyGp1_image-20250819-075710.png" size="80" width="1489" height="882" position="flex-start" showCaption="false"}

# Step 2: Connect to Your Cluster

Open your terminal and log in with Azure CLI.

1. In the Terminal window, type in `az login`.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GX8L2YvIJR5ZM-cxjAQ8H_image-20250819-084832.png" size="80" width="1075" height="755" position="flex-start" showCaption="false" indent="2"}

2. In the **Auth UI dialog**, select the Microsoft Azure account that has access to the AKS service. Enter your credentials.
3. In the Terminal window, select a subscription and tenant. Make sure you select the subscription where your AKS cluster is created.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GPMRv3wGbnYfTEPDBMmty_image-20250819-084549.png" size="80" width="1463" height="310" position="flex-start" showCaption="false" indent="2"}

Next, connect to your cluster.

1. Open the Azure portal and navigate to **Kubernetes services**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YFvfFK8lOgkI95egGhtIJ_image-20250819-085204.png" size="100" isUploading="false" width="1669" height="601" showCaption="false" indent="2"}

2. In **Kubernetes services**, select your cluster.
3. In the cluster page, click **Connect**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EHIXurITiwYM6hdg-4pX3_image-20250819-085829.png" size="80" width="1879" height="774" position="flex-start" showCaption="false" indent="2"}

4. In the **Cloud shell** tab, copy the second command:

:::CodeblockTabs{indent="2"}
```bash
az aks get-credentials --resource-group <my-resource-group> --name <my-dev-cluster> --overwrite-existing
```
:::

5. In the Terminal window, paste the command with updated values for `<my-resource-group>` and `<my-dev-cluster>`.
6. Submit the command.

You should see similar output in your terminal:

:::BlockQuote
Merged "my-dev-cluster" as current context in C:\Users\user\\.kube\config
:::

The cluster setup is now complete.

# Step 3: Execute Kubectl and Helm Commands in your Terminal

In this section you create an `lem` namespace and pull secret, configure the load balancer and install Helm.

1. Create an `lem` namespace.

:::CodeblockTabs{indent="2"}
```bash
kubectl create ns lem
```
:::

2. Create a pull secret. Change the command accordingly based on the location of your pull key file on the local machine.

:::CodeblockTabs{indent="2"}
```bash
kubectl create secret docker-registry lem-helm-secret \
--docker-server=us-east1-docker.pkg.dev \
--docker-username=_json_key \
--docker-password="$(cat LEM_pull_Key_file.json)" -n lem
--docker-email=any@email.com -n lem
```
:::

3. Next specify values to configure the load balancer, where:
   - `lem.platform: aks` specifies the AKS annotation set.
   - `lem.loadbalancer.internal:` true or false specifies whether the chart injects the AKS `internal LB` annotation.
   - `lem.loadbalancer.ip.frontend` and `.remote` enable you to assign static IPs for the two LB services (nginx + remote).

:::CodeblockTabs{indent="2"}
```bash
# values-aks.yaml
lem:
  platform: aks
  loadbalancer:
    internal: false        # set true for internal/private LB
    ip:
      frontend: ""         # optional: reserved static IP for nginx LB
      remote: ""           # optional: reserved static IP for UDP 51820 LB
```
:::

4. Install Litmus Edge Manager using the following command, where `<lemversion>` is the LEM version that you are installing, for example `--version 2.31.0`

:::CodeblockTabs{indent="2"}
```bash
helm install lem oci://us-east1-docker.pkg.dev/litmus-public/lem-chart-ga/lem \
  --version <lem_version> \
  -n lem \
  -f values-aks.yaml
```
:::

:::hint{type="info"}
**Note:&#x20;**

- The command initiates the pull of the required container images. This process may take several minutes.
- Make sure the secret name is `lem-helm-secret` and that you don’t override it with `--set "imagePullSecrets[0].name`.
- After the deployment is completed, wait approximately five minutes before applying the Litmus Edge Manager (LEM) URLs and credentials.
- Instructions for accessing these URLs and credentials print for you in the console.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XJtWQ91VOhu2v1sMQ8JzV_image-20250819-110531.png" size="80" width="1788" height="581" position="flex-start" showCaption="false"}

To get URLs and credentials for Litmus Edge Manager:

1. In case you need URLs and credentials after the deployment, execute the following:

:::CodeblockTabs{indent="2"}
```bash
helm get notes lem -n lem
```
:::

2. To get Litmus Edge Manager's external IP, run the following, where `<release_name>-nginx` is your service name:

:::CodeblockTabs{indent="2"}
```bash
kubectl get svc lem-nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}' -n lem
```
:::

3. To get the LEM username and password, run:

:::CodeblockTabs{indent="2"}
```bash
# username
kubectl get secret --namespace lem lem-secret -o jsonpath="{.data.lem-user}" | base64 --decode

# password
kubectl get secret --namespace lem lem-secret -o jsonpath="{.data.lem-password}" | base64 --decode
```
:::

# Step 4: Upgrading the Helm Chart

If you are upgrading Litmus Edge Manager to a new version, first upgrade the Helm chart.

1. Before the upgrade, scale down Prometheus:

:::CodeblockTabs{indent="2"}
```console
kubectl -n lem scale deployment lem-prometheus-server --replicas=0
```
:::

2. If upgrading from a version before 2.31.1, delete EMQX resources:

:::CodeblockTabs{indent="2"}
```console
kubectl -n lem delete statefulset lem-emqx
kubectl -n lem delete configmap lem-emqx-acl
kubectl -n lem delete configmap lem-emqx-env
kubectl -n lem delete configmap lem-emqx-loaded-modules
kubectl -n lem delete configmap lem-emqx-loaded-plugins
kubectl -n lem delete service lem-emqx
kubectl -n lem delete service lem-emqx-headless
```
:::

3. Run the Helm upgrade. Use the actual chart version instead of the `<LEM_VERSION>` placeholder.

:::CodeblockTabs{indent="2"}
```console
helm upgrade lem oci://us-east1-docker.pkg.dev/litmus-public/lem-chart-ga/lem --version <LEM_VERSION> --namespace lem
```
:::

4. After the upgrade, scale Prometheus back up:

# Step 5: Access the Litmus Edge Manager UI using the obtained IP address

See [Access Litmus Edge Manager](docId\:w3uHZQ4tSrH7OLjhuLt0A) for details.

:::hint{type="info"}
**Note:** Get the Site License key from your Litmus account executive to activate your license.
:::

Litmus Edge Manager is now deployed and operational on your AKS cluster. You can now access the manager’s UI using the external IP address and perform any additional configuration through the admin console, such as license activation.

[title] System Requirements
[path] QuickStart Guide/

The following system requirements are for an ESXi-based deployment for Litmus Edge Manager.&#x20;

:::hint{type="info"}
**Note**: ESXi or a similar hypervisor is required to deploy Litmus Edge Manager. Bare metal deployment is not supported.
:::

:::hint{type="warning"}
**Important**: Depending on system resources, first time installation setup may take up to 30 minutes to complete.
:::

# Minimum Requirements

Review the following minimum requirements for desktop distribution.

| **Hardware**            | **Minimum Requirements**                                                                                                                                         |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Processor               | - Intel x86 64-bit processor
- 16 Core\@2.2Ghz (Example: Intel i5)                                                                                               |
| Memory                  | 16 GB RAM                                                                                                                                                        |
| Storage                 | 80 GB available space                                                                                                                                            |
| Network ports           | 1 Bridged <br />Direct connection to corporate LAN allows for internet connection and other TCP/IP communication to other systems. An available IP is required.  |
| Firmware                | EFI                                                                                                                                                              |
| Storage Controller Type | SATA                                                                                                                                                             |

# Recommended Configurations

Review the following recommended configurations for data center distribution.

| **Hardware**            | **Recommended Configuration**                                                                                                                                               |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Processor               | - Intel x86 64-bit processor
- 32 Core\@2.2Ghz (Example: Intel Xeon)                                                                                                        |
| Memory                  | 32 GB RAM                                                                                                                                                                   |
| Storage                 | 1 TB available space or more                                                                                                                                                |
| Network ports           | 1 Bridged <br />Direct connection to corporate LAN allows for internet connection and other TCP/IP communication to other systems. An IP address must be acquired to this.  |
| Firmware                | EFI                                                                                                                                                                         |
| Storage Controller type | SATA                                                                                                                                                                        |

# Firewall Port Configuration Requirements

The Litmus Edge Manager must have the following ports open for the following corresponding functions.

| **Port** | **Protocol** | **Encrypted**                                    | **Optional** | **Direction** | **Port Function / Usage for Litmus Edge Manager**             | **Description / Additional Details**                                                                                                                                                                                                                                                                       | **Source**<br />**(Port is used by who/what)**          | **Destination**<br />**(Port must be opened at)** |
| -------- | ------------ | ------------------------------------------------ | ------------ | ------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------- |
| 22       | TCP          | Yes<br />Session Key                             | Yes          | Inbound       | SSH                                                           | Managing a Litmus Edge<br />Managing instances using SSH                                                                                                                                                                                                                                                   | Litmus Edge Manager <br />Admins                        | Litmus Edge Manager                               |
| 80       | TCP          | Redirects to HTTPS                               | Yes          | Inbound       | HTTP, redirect SSL                                            | Accessing Litmus Edge Manager UI if you entered only the domain name without the protocol in a browser<br />Domain validation when using Let's Encrypt SSL                                                                                                                                                 | Litmus Edge Manager <br />users                         | Litmus Edge Manager                               |
| 123      | UDP          | No                                               | Yes          | Inbound       | Network Time Protocol                                         | Used to transform Litmus Edge Manager version 2.8.0 and later as an NTP Server. See [NTP](docId\:hRmAskLSu9CAdrlP7k-UE) for details.                                                                                                                                                                       | Litmus Edge                                             | Litmus Edge Manager                               |
| 443      | TCP / HTTPS  | Yes<br />SSL                                     | No           | Inbound       | Access to Litmus Edge Manager UI                              | Access to Litmus Edge Manager REST API<br />Access to Litmus Edge Manager Admin Docker registry<br />Access to Keycloak authorization server<br />Used by Litmus Edge Manager to communicate with Litmus Edge<br />Pre-signed links are generated on this port.<br />Minio Storage<br />(Update file repo) | Litmus Edge <br /><br />Litmus Edge Manager <br />users | Litmus Edge Manager                               |
| 8123     | TCP          | No<br />optional (settable on screen)            | Yes          | Inbound       | Litmus Edge Manager <br />Clickhouse database HTTP interface  |                                                                                                                                                                                                                                                                                                            | Third-party Integration / Reporting tools               | Litmus Edge Manager                               |
| 8446     | TCP          | Yes<br />SSL                                     | No           | Inbound       | Access to Litmus Edge Manager Admin UI                        |                                                                                                                                                                                                                                                                                                            | Litmus Edge Manager <br />Admins                        | Litmus Edge Manager                               |
| 8543     | TCP          | Yes<br />SSL                                     | Yes          | Inbound       | Litmus Edge Manager <br />Clickhouse database HTTPS interface |                                                                                                                                                                                                                                                                                                            | Third-party Integration / Reporting tools               | Litmus Edge Manager                               |
| 8883     | MQTT / TCP   | Yes<br />MQTTS                                   | No           | Inbound       | Litmus Edge Manager MQTT server                               | CC Connector: Sending data from Litmus Edge to Litmus Edge Manager                                                                                                                                                                                                                                         | Litmus Edge                                             | Litmus Edge Manager                               |
| 9000     | TCP          | Optional (encryption initiated from client side) | Yes          | Inbound       | Litmus Edge Manager <br />Clickhouse Native interface         |                                                                                                                                                                                                                                                                                                            | Third-party Integration / Report tools                  | Litmus Edge Manager                               |
| 9004     | TCP          | Optional (encryption initiated from client side) | Yes          | Inbound       | Litmus Edge Manager <br />Clickhouse MySQL interface          |                                                                                                                                                                                                                                                                                                            | Third-party Integration / Reporting tools               | Litmus Edge Manager                               |
| 9092     | TCP          | Optional (encryption initiated from client side) | Yes          | Inbound       | Access to Litmus Edge Manager <br />Kafka PLAIN connection    |                                                                                                                                                                                                                                                                                                            | Third-party Integration / Reporting tools               | Litmus Edge Manager                               |
| 9093     | TCP          | Yes<br />SSL (Optional)                          | Yes          | Inbound       | Access to Litmus Edge Manager Kafka SSL connection            |                                                                                                                                                                                                                                                                                                            | Third-party Integration / Reporting tools               | Litmus Edge Manager                               |
| 51820    | UDP          | Yes<br />Remote Access                           | No           | Inbound       | EdgeRemote<br />(uses Remote Access)                          | Enables Litmus Edge Manager management (Remote UI, templates, marketplace, metrics and so on) of all connected Litmus Edge instances.<br />Used for remotely updating the version of connected Litmus Edge instances.<br />Requires 443 to be open.                                                        | Litmus Edge                                             | Litmus Edge Manager                               |


[title] Manage Device Requests
[path] Litmus Edge Manager User UI/Product Features/Activation/Requests/

Th&#x65;*&#xA0;Activation Request List***&#xA0;**&#x69;ncludes all the activation codes for your edge devices. You can approve, reject or remove an activation code, view the activation and provision status, and copy the activation code from here.

When you select a&#x6E;**&#xA0;Activation code** link from the Activation Request List, The Activation Config List appears. See [Configuration](docId\:Jr3PpIPRQ-O49pFdJHDkN) for more information about what the Activation Config List includes.

Refer to the following actions you can take on the Litmus Edge Manager User UI's *Activation* *Request List* tab.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kmvjZFFLk9DkpamtN95Yr_image.png "Activation Requests List")

| **Action**                             | **Details**                                                                                                                                                                                                                                                                                                                                                                                      |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| \[1]  **Summary statistics**           | (Available for Litmus Edge Manager version 2.18.0 and later) Shows an optimized summary of the activation requests: <br />* Waiting for Approval
* Processing
* Processed
* Failed
* Rejected
* Deactivated                                                                                                                                                                                      |
| \[2] **Filter by status**              | Allows filtering of activation requests by their status for easier management.                                                                                                                                                                                                                                                                                                                   |
| \[3] **Multiple Select**               | Enables selecting multiple activation requests for bulk actions.                                                                                                                                                                                                                                                                                                                                 |
| \[4] **View Activation code**          | Displays the activation code associated with the selected request.                                                                                                                                                                                                                                                                                                                               |
| \[5] **View Stage: Activation Status** | ****[Activation Request Stage](docId\:CWnZE5vybRzWGrmEC1O_i)                                                                                                                                                                                                                                                                                                                                     |
| \[6] **View Stage: Provision Status**  | ****[Activation Request Stage](docId\:CWnZE5vybRzWGrmEC1O_i)                                                                                                                                                                                                                                                                                                                                     |
| \[7] **Action menu**                   | - **Approve:&#x20;**&#x43;annot accept an activation request that's already been rejected.
- **Reject:&#x20;**&#x43;annot reject an activation request that's already been rejected. Cannot reject the following activation status : `ACTIVIATED` / `DEACTIVIATED`
- **Retry Failed**
- **Delete:&#x20;**&#x41;n activation request must be approved or rejected before it can be deleted.&#x20; |

:::hint{type="info"}
**Note:** *Summary statistics* is a new feature and is available for Litmus Edge Manager version 2.18.0 and later.
:::

# Re-attempt of Activation Code after Rejected Activation Request

If an activation request sent by a Litmus Edge instance is rejected by a Litmus Edge Manager, you must first delete the rejected activation request in Litmus Edge Manager before the same Litmus Edge instance can re-attempt the activation code.&#x20;

# Failed Activation Request

Once an activation request is sent by a Litmus Edge, approving (activating) it may become unsuccessful. See the following error message for possible resolutions.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sRXugSvZQxnqNyXvoGFDI_image.png" size="80" width="664" height="198" caption="Error Message during Activation Request" position="center" showCaption="true"}


[title] Manage
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

The **Manage** tab for an edge device enables you to:

- Stop and restart specific services.
- Enable or disable log forwarding to Litmus Edge Manager.
- Enable and configure how frequently Litmus Edge Manager polls the edge device for metrics.
- Change the token for direct access to the Litmus Edge API.
- Update the device from a specific version of Litmus Edge.
- Reboot the device.
- Download a support bundle for the device.

# Stop and Restart Services

In the **Service** tab, optionally start and stop the **SSH** service and restart device management, authentication, licensing, and NATS server services.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4YdndmEEOVKpqXZdiz0j3_image.png)

# Edge Device Metrics Sync Interval

Edge Device Metrics Sync controls how often LEM polls connected edge devices for metrics data. Adjusting the interval lets you balance reporting frequency against network and performance constraints. A shorter interval provides more granular visibility into edge device behavior. A longer interval reduces network load in bandwidth-limited environments.

### Sync Interval Priority

The sync interval can be configured at three levels: device, project and instance. By default, lower-level settings take priority:

- The device sync setting overrides the project setting for that device.
- The project sync setting overrides the instance setting for all devices in the project.

You can also override these priority settings:

- Here at the device level by choosing to use the project's metrics sync settings (see [Manage](docId\:BoOFh2bJOlfpger0QymmF) ).
- At the project level by choosing to use the instance's metrics sync settings (see [Management](docId\:VzYNhoUsLtjETO0F1aFa1)).

:::hint{type="info"}
**Note**: **Edge Device Metrics Sync Settings** is available for Litmus Edge Manager version 2.26.1 and later.&#x20;
:::

### Set the Edge Device Metrics Sync Interval

The default interval is 30 seconds with a valid range of `30` to `604,800` seconds (1 week).

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cNH6gbFLFXvTXEu1BIOUT_image.png" size="80" width="1213" height="463" position="flex-start" darkWidth="1213" darkHeight="463" showCaption="false"}

Do any of the following:

- Use the **Enable Edge Device Metrics Sync** toggle to enable or disable synchronization of metrics.
- Update the sync interval for the device by providing a new value in **Enable Edge Device Metrics Sync**.
- To instead use the interval defined by the project, select **Use the project's edge device metrics sync settings**.

# API

Change the token for direct access to Litmus Edge API. See [Tokens](#) to create an API Token. When creating the API token, you cannot make it read-only from the Litmus Edge user interface.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QB652oWuSORrC7WF3m4qo_image.png "API sub-tab")

# Software

View the list of downloaded update files for the edge device.&#x20;

From the **Action menu**, you have the following options:&#x20;

- Manually upgrade the edge device from the update file.&#x20;
- Delete the update file.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/k_Zk-RLHu1G6LzQNaupnF_image.png "Software sub-tab")

# Reboot

Reboot the edge device.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tMN0NU4FJYR5MXLSi81Nq_image.png "Reboot sub-tab")

# Support

Download support bundle files for the edge device.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vw8kbZe1ThkZ1-0rRCclc_image.png "Support sub-tab")


[title] Virtual Machine Installation (VMWare Workstation Player)
[path] QuickStart Guide/Installation and Deployments/

You can install the Litmus Edge Manager on a virtual machine using VMWare Workstation Player.

The virtual machine that runs Litmus Edge Manager uses the system time of the host environment. To ensure that timestamps of collected data are as universal as possible, we recommend setting the system time of the host environment to the UTC time zone.

A typical Litmus Edge Manager virtual file for ESXi deployment adheres to the following naming convention:  `<product-2.2.2>.ova`.&#x20;

# Default Login Credentials

Refer to the following default login credentials when logging in the first time to different areas of Litmus Edge Manager (LEM).&#x20;

## Terminal User Interface

- **Login/username**: em\_setup
- **Password**: edgemanager

## LEM Web UI

- **Login/username**: demo
- **Password**: demo

## LEM Admin Console

- **Login/username**: admin
- **Password**: admin

## Keycloak

- **Login/username**: kadmin
- **Password**: kadmin

# Before You Begin

- Configure the docker bridge network. By default, this installation allocates the subnet `172.17.0.0/16`. Make sure that this does not conflict with your host environment network configuration.

:::hint{type="success"}
**Tip**: To reconfigure the docker bridge network, please refer to this [docker guide](https://docs.docker.com/network/bridge/).
:::



- Set up proxies to access Litmus Edge Manager behind the company firewall.
- Install ESXi v6.7 or higher. See [VMware](https://www.vmware.com/worldwide.html) for more information.
- Obtain a valid `.ova` file. Contact Litmus or download the file from the [Customer Portal](https://portal.litmus.io).

To use VMWare Workstation Player to install Litmus Edge Manager, you will need to do the following.&#x20;

- Step 1: Install the Virtual Machine (VMWare Workstation Player)
- Step 2: Launch the Virtual Machine
- Step 3: Log in to the Litmus Edge Manager (LEM) UI
- Step 4: Verify Trial License and Register a Litmus Edge Manager License

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Install the Virtual Machine (VMWare Workstation Player)

You will first need to install the virtual machine that will run Litmus Edge Manager.

**To install the virtual machine:**

1. Start the **VMWare application** (for example, VMWare Workstation 15 Player).
   The Welcome to *VMware Workstation 15 Player* dialog box appears.
2. Select **Open a Virtual Machine** from the right pane.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/--PSh-1OhpdmLTjdB2NF9_jvrn5zzccvenozowrz5rvmware-player-open-vm.png "VM Workstation panel")
3. Select the **.ova** file from the file browser, and then click **Open**.
   The *Import Virtual Machine* dialog box appears.
4. From the *Import Virtual Machine* dialog box, enter the name of the virtual machine in the *Name* field and enter the storage folder path where the virtual machine configuration is stored into the *Storage Path* field. Then, click **Import**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/24xIlR6uzzzPjndNUcj5u_aknjdyaaxjwyggk7o74buvmware-workstation-player-import.png "Import Virtual Machine dialog box")

The *VMWare Workstation Play* creates the virtual machine.

The *Litmus Edge Manager* device appears in the left pane.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1p2CsoHG1_UIEQqf9GAAY_vmware-workstation-player-success.png" size="80" width="686" height="551" caption="Selecting EdgeManager panel" position="center" showCaption="true"}

# Step 2: Launch the Virtual Machine

After installing the virtual machine, you will need to launch the virtual machine containing Litmus Edge Manager.

**To launch the virtual machine:**

1. From the right pane in the *VMWare Player* application, click **Play virtual machine**.
   The virtual machine starts up and displays the terminal.
2. Note down the IP as this is required for log in.

:::hint{type="success"}
**Tip**:

You can change your settings using the Terminal User interface (TUI).

To log in using the Terminal window, refer to the *Default Login Credentials* section above.&#x20;
:::

# Step 3: Log in to the Litmus Edge Manager (LEM) Web UI

After launching the virtual machine, you can then login to Litmus Edge Manager via a browser.

**To log in to LEM Web UI:**

1. Open a new incognito browser window and paste the IP address into the URL field.
   The application initializes, and then the *Log In&#x20;*&#x73;creen appears.
2. Enter the default credentials. Refer to the *Default Login Credentials* section above.&#x20;
3. Change your password to activate your account, and then click **Submit**.&#x20;
   The *Litmus Edge Manager* application opens.

:::hint{type="info"}
**Note**: You must change your password after the first log in.
:::

# Step 4: Verify Trial License and Register a Litmus Edge Manager License

After the Litmus Edge Manager is successfully installed, it will automatically be installed with a trial license.

**To verify the trial license**:&#x20;

1. From the Navigation panel, select **Settings**.
   Th&#x65;*&#x20;Settings* pane appears.
2.   From the *Settings* pane, select **Licenses**.
3.   From *Licenses*' *Available Licenses* section, view the license list.
   Initially, the device operates on a trial license.

You will eventually need to register a Litmus Edge Manager license once the trial license expires. To register a Litmus Edge Manager license, see [Site and Node-Locked License Overview for Litmus Edge Manager](docId\:Jvibd0MBSj97ZcPDfhab9).


[title] Un-Used Licenses
[path] Litmus Edge Manager User UI/Product Features/Licenses/

The *Un-Used Licenses* feature provides a summary and options for managing licenses that have not been utilized.

Click the **Un-Used Licenses** button to access the *Un-Used Licenses Summary* table.



![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1UINzdDxHN4N23WmzvwRg_image.png)

Refer to the following actions you can take from the *Un-Used Licenses Summary* pane.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6DUBdRA37NjdggvoL12xQ_image.png" size="70" width="992" height="717" position="flex-start" caption="Un-Used Licenses Summary pane" showCaption="true"}

| **Action**                                             | **Details**                                                |
| ------------------------------------------------------ | ---------------------------------------------------------- |
| \[1] **Action menu**                                   | - **Delete:** Allows you to delete anyunusedd licenses.    |
| \[2] [Upload License CSV](docId:9oVnX_gYLpZzZB_lTGjdO) | Allows you to manage uploading of licenses to be deployed. |


[title] Certificates
[path] Litmus Edge Manager User UI/Product Features/

:::hint{type="info"}
**Note**: The Certificates feature is available for Litmus Edge Manager 2.20.0 and later.
:::

The Certificates module in Litmus Edge Manager (LEM) allows you to manage SSL certificates on edge devices. This feature includes a comprehensive summary of all your certificates, sorting and filtering options, and the ability to upload or issue a certificate.&#x20;

# Access Certificates UI

&#x20;**To access the Certificates UI:&#x20;**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects&#x20;*&#x70;ane appears.
3. Do one of the following:
   - Click a project from the *Project* pane.&#x20;
     The *Dashboard* pane appears for the project.
   - Click the **Actions** icon for a project, and then select **View.&#x20;**&#xA;The *Dashboard* pane appears for the project.
4. From the Navigation panel, select **Certificates.&#x20;**&#xA;The *Certificates Management* pane appears.

Refer to the following actions you can take on Litmus Edge Manager's *Certificates Management&#x20;*&#x70;ane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gaki-m5Ska6myNlajI80f_image.png "Certificates Management pane")

| **Action**                                                                          | **Details**                                                                                         |
| ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| \[1] **View&#x20;**[Edge Devices](docId\:pqRVYqspADLvoCpHmC3WA)**&#x20;Statistics** | Display the details of edge devices.                                                                |
| \[2] **Show filter**                                                                | Search by *Description.*                                                                            |
| \[3] **Sorting**                                                                    | Order the list.                                                                                     |
| \[4] **Bulk Actions**                                                               | Upload multiple certificates at once. See [Bulk Actions](docId\:F8NGI3rL1DrsvmNF-ATsu) for details. |
| \[5] **Action**                                                                     | - Issue a new certificate
- Upload a new certificate
- Reset to Edge Default                        |

# Next Steps

- [Manage Certificates with DigiCert IoT Trust Manager Integration](docId\:WMPXv5e6D8dZWNeUjiFTE)
- [Bulk Actions](docId\:F8NGI3rL1DrsvmNF-ATsu)&#x20;




[title] Activation Request Stage
[path] Litmus Edge Manager User UI/Product Features/Activation/Requests/

There are two status indicators next to an activation code. The left indicator displays the activation stage and the right indicator displays the provision stage. The green check mark for the status indicators shows the completion of the Activation Request. You can click a check mark to view the activation steps.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/i2wgRZw9dJwVgI3AMpCev_2023-07-2011-24-47.png "Request Stage")

The sequence for *Activation* includes:

- Activation request received&#x20;
- Activation request approved&#x20;
- Activation request confirmed&#x20;
- Activation deactivated&#x20;

The sequence for *Provision* includes:

- Offline license generated, date generated, and a Details link.
- License provisioned to the device, date generated, and a Details link.
- Site-Based license server is provisioned to the device, date generated, and a Details link.
- Default password policy is provisioned to the device, date generated.
- Template provisioned to the device, date generated, if applicable.


[title] QuickStart Guide
[path] /


[title] Apply a Parameterized Template
[path] Litmus Edge Manager User UI/Product Features/Templates/

You can apply a parameterized template to one or more edge devices from an open project *Templates***&#xA0;**&#x70;ane.

When applying a parameterized template, you can apply it to a group of edge devices by clicking the group to show only the edge devices in the selected group.'

Review the guide to [Apply a Parameterized Template During Activation](docId\:EPSYMUsWZ9uHWcMWMnyaX).&#x20;

# Additional Details

- While applying a parameterized template to an edge device, you can set values for the variables that affect edge devices.
- The template variables are changed using the JSON-path and the variable values, and then sent to the edge device using the existing API.

# Step 1: Apply a Parameterized Template

**To apply a parameterized template:&#x20;**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. From the Navigation panel, select **Templates**.
   The *Templates* pane appears.
4. Click the **Actions** icon next to a parameterized template and select **Apply Template**.
   The *Apply Template: Select Edge Devices to Appl*y dialog box appears.
5. Select one or more check boxes next to edge devices, and then click **Apply**.
   The *Set Variables* dialog box appears.
6. From the **Set Variables&#xA0;**&#x64;ialog box, enter the variable value in the variable field.
   **Example**: Enter `PLC1` in the **device\_name** field.
7. Click **Apply**.
   The template is applied to the selected edge devices.

# Step 2 : Verifying Template Parameters are Applied to an Edge Device

There are many types of possible variables. The following verification procedure is an example.

**To verify template parameters are applied to an edge device:&#x20;**

1. From another browser tab, log in to Litmus Edge.
2. From the Navigation panel, select **DeviceHub**.
   The Edge Devices pane appears.
3. Select the device for which the template was applied and ensure that the variables entered in the *Set Variables* dialog box appear correctly.

:::hint{type="info"}
**Example**: If `device_name` is a variable, make sure that the name for the device is correct. In this case, `PLC1`.
:::


[title] Establish an LE-LEM connection from Litmus Edge Manager
[path] QuickStart Guide/System Requirements/

An Litmus Edge (LE)-Litmus Edge Manager (LEM) connection is the persistent, secure channel between Litmus Edge and Litmus Edge Manager. It enables centralized remote management of the gateway, including activation, credential provisioning, and forwarding of metrics and events to Litmus Edge Manager.

The connection uses two ports for establishment: port 443/TCP for the initial activation handshake, and port 51820/UDP for the permanent bi-directional remote access tunnel. An optional third port (8883/TCP) supports ongoing MQTT data transmission after the connection is in place.

:::hint{type="info"}
**Note:** For details on the Litmus Edge Manager port customization for this connection, see [Establishing an LE-LEM Connection from Litmus Edge](docId\:WjY18puVyO9mXlW9sAOPc).
:::

## Core Components

| Component                          | Role                                                                        |
| ---------------------------------- | --------------------------------------------------------------------------- |
| **Litmus Edge**                    | The edge gateway. Initiates all connections outbound to Litmus Edge Manager |
| **Litmus Edge Manager**            | The centralized management platform. Receives and approves connections      |
| **Port 443/TCP (HTTPS)**           | Initial activation channel                                                  |
| **Port 51820/UDP (Remote Access)** | Permanent bidirectional management tunnel                                   |
| **Port 8883/TCP (MQTT SSL)**       | Ongoing metrics and event data transmission (optional)                      |

## Connection Sequence

The following steps describe how Litmus Edge initiates and establishes its connection with Litmus Edge Manager. From the Litmus Edge side, the key actions are entering the activation URL and code (step 1) and confirming the permanent connection after it is established (step 7).

1. Litmus Edge user enters activation URL and activation code. See *Step 2: Create an Activation Request in Litmus Edge* section of [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) for details.
2. Litmus Edge attempts to establish an initial connection with inbound port 443/TCP (HTTPS) of Litmus Edge Manager.
3. Litmus Edge Manager receives the connection at its inbound port 443/TCP (HTTPS).
4. Litmus Edge sends an activation request that is received and approved by Litmus Edge Manager. See *Step 3: Approve the Activation Request in Litmus Edge Manager* section of [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) for details.
   - Litmus Edge sends activation requests on port 443/TCP of Litmus Edge Manager.
   - Litmus Edge Manager user accepts the activation request in UI.
   - Litmus Edge Manager responds to the activation request with Litmus Remote credentials.
5. Litmus Edge attempts to establish a permanent connection with inbound port 51820/UDP (Remote Access) of Litmus Edge Manager.
6. Litmus Edge Manager receives the connection at inbound port 51820/UDP (Remote Access).
7. Litmus Edge confirms the permanent connection with Litmus Edge Manager.
8. The permanent connection becomes a secure two-way (bi-directional) connection. Both Litmus Edge and Litmus Edge Manager use Litmus Edge Manager's inbound port 51820/UDP (Remote Access) to communicate with each other.

## Port Requirements: Litmus Edge Manager

Configure the following ports:

- Open 443 (HTTPS) inbound/Ingress to receive the initial contact from Litmus Edge (activation).
- Open 51820 (Remote Access) inbound/ingress to receive the permanent connection from Litmus Edge.
- Ensure all outbound communication is available to be able to reach Litmus Edge.

## Data Transmission: Default MQTT SSL Connector

After a Litmus Edge-Litmus Edge Manager connection has been established, Litmus Edge Manager can receive [metrics](docId\:XZ4oKukesfg7rDekrLhPU) data or [events](docId\:Qh9PnCUT-G1k_Lz9p4-m3) data (enable event forwarding separately) from a Litmus Edge instance. For Litmus Edge Manager to receive the data, the Litmus Edge instance must enable its Default Generic MQTT SSL Connector ([Integration](docId\:YI-zzNSsMxWw_FXcuiduB)). After the connector is enabled, the Litmus Edge instance attempts to reach a connection at Litmus Edge Manager's inbound port 8883/TCP.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PYDBfLEHFFyxX3VWZt_lL_le-to-lem.png" size="80" width="1936" height="1129" position="flex-start" darkWidth="1936" darkHeight="1129" showCaption="false"}

:::hint{type="info"}
**Note:** Ports 443 and 51820 are required for establishing the initial connection. Port 8883 is used for ongoing data transmission when the connection is in place. For additional details about each port, refer to the  [Firewall Port Configuration Requirements](docId\:vcocNbL2DlgAGwsJ3YCdm).
:::

## Port Customization For Litmus Edge Manager

Open 8883 (MQTT) inbound/ingress to receive the metrics or events
&#x20;data from Litmus Edge.

## Limitations and Considerations

- Ports 443 and 51820 must be reachable outbound before activation can begin. The connection cannot be established if either port is blocked.
- The MQTT data channel (port 8883) is independent from the management connection and must be explicitly enabled via the Default Generic MQTT SSL Connector.
- Litmus Edge does not require any inbound ports for its management connection with Litmus Edge Manager.

## Related Topics

- [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB)
- [Firewall Port Configuration Requirements](docId\:vcocNbL2DlgAGwsJ3YCdm)
- [Integration](docId\:YI-zzNSsMxWw_FXcuiduB)

[title] Adding ZeroTouch Configuration
[path] Litmus Edge Manager User UI/Product Features/Activation/ZeroTouch/

Follow the steps below to add a **Zerotouch** configuration:

1. Click **Add Zerotouch Configuration** on the *Zerotouch* page.
   The *Add Zerotouch Configuration* dialog box appears.
2. From the **Zerotouch Activation&#x20;**&#x70;ane, take the following action&#x73;**:**
   - Fill in the *Name&#x20;*&#x61;nd *Activation Code*. Then, click **Next**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7l_ABsnKN_i3TE8-CoiMq_image.png" size="70" width="1673" height="723" position="center" showCaption="false"}
3. **Static IP:&#x20;**&#x54;oggle to Enable/Disable. Accordingly, fill out the following fields to configure Static IP:
   - **Static IP Address:** Enter the desired static IP address for the device.
   - **Network Interface:** Select the appropriate network interface for the connection.
   - **Gateway:&#x20;**&#x53;pecify the gateway IP address for network routing.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AWKb2CPF-ipIuf4gRxWYR_image.png" size="70" width="996" height="661" position="center" showCaption="false"}
   - (Optional) Enable/Disable *Default Router* option.
   - Click **Next**.
4. **Docker Containers:&#x20;**&#x54;oggle to Enable/Disable. Display a table to list containers with *Name* an&#x64;*&#x20;Run Command&#x20;*&#x66;ields.
   - Click **+ Add&#x20;**&#x74;o include a new docker command.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hxwGl_7Jxnu7NfjO4X2qA_image.png" size="70" width="997" height="453" position="center" showCaption="false"}
   - Click **Add & Generate** or **Add&#x20;**&#x74;o generate the *ZeroTouch TAR* file.
5. A progress message will appear until the configuration is ready.


[title] Deployment of Litmus Edge Manager on Google Kubernetes Engine (GKE)
[path] QuickStart Guide/Installation and Deployments/

You can deploy Litmus Edge Manager on **Google Kubernetes Engine (GKE)**.

# Before You Begin

Before you begin, ensure that you have:

- A valid Google Cloud Platform (GCP) project with permissions to create and manage Kubernetes clusters. See [Creating and managing projects ](https://cloud.google.com/resource-manager/docs/creating-managing-projects)and [Access control in GKE ](https://cloud.google.com/kubernetes-engine/docs/concepts/access-control)for details.&#x20;
- Familiarity with the [Google Cloud Console ](https://console.cloud.google.com/)and [Cloud Shell](https://cloud.google.com/shell/docs).
- The Litmus Google registry credential key file (e.g., `LEM_pull_Key_file.json`) available and uploaded to your working environment

To manually deploy Litmus Edge Manager on Google Kubernetes Engine (GKE), you will need to do the following.&#x20;

- Step 1: Setup Your GKE Cluster in Your GCP Project
- Step 2: Connect to Your Cluster
- Step 3: Execute Kubectl and Helm Commands
- Step 4: Access the Litmus Edge Manager UI using the obtained IP address

# Step 1: Setup Your GKE Cluster in Your Google Cloud Platform (GCP) Project

**To set up your GKE cluster in your Google Cloud Platform (GCP) project:**

1. Log in to your **Google Cloud Console**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ju4kS3-jpF8fdL3ztALkW_image.png "Google Cloud Console homepage")
2. Select your *GCP project*, then navigate to **Kubernetes Engine&#x20;**&#x66;rom the main menu.
   You will land on the *Overview&#x20;*&#x70;age of *Kubernetes Engine*.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VwwpjlPiF6ITwuppBPdtc_image.png "Kubernetes Engine-Overview page")
3. Click on **Clusters&#x20;**&#x66;rom the side menu and then click **Create** to configure a new Kubernetes cluster.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CIZkjCZhox70QwHsh57xm_image.png "Kubernetes Engine-Clusters page")
4. On the *Create an Autopilot cluster&#x20;*&#x70;age, configure the following.
   1. **Cluster basics:**
      - **Switch to Standard Cluster&#x20;**&#x6F;ption (if not already selected).
        ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rNIBVf1atvA9j9icxSk_0_image.png "Create an Autopilot cluster ")
      - Provide a **name&#x20;**&#x69;n lowercase (e.g., `gke-cluster`).
      - Choose an appropriate **region&#x20;**(e.g., `US-Central`) and select a **Zonal&#x20;**&#x6C;ocation type.
        ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bFFHSRbjJ3eGAF7FhNm5S_image.png "Create an Autopilot cluster ")
   2. **Default Pool Configuration:**
      - Keep the **default-pool&#x20;**&#x6E;ame or modify as needed.
      - Keep the Number of nodes at **2**.
        ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SYem56SX3QuDFXC0g2RXI_image.png "Default Pool Configuration")
      - For image type, select **Ubuntu with containerd** (**ubuntu\_containerd**).
        ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xhHC56E0b_gwTB79wYwwH_image.png "Default Pool Configuration")
      - Choose a machine type with at least **2 cores&#x20;**&#x61;nd **16 GB memory**.
        ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0_GXf6OSOkH_3R4shWY59_image.png "Default Pool Configuration")
   3. **Network & Security:**
      - Leave the default settings unless specific adjustments are required.
5. Once configured, click **Create** to initiate the cluster provisioning.&#x20;
   Cluster creation may take several minutes.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eqDCtKQlSiSuJCtdISLg9_image.png "Clusters Configuration")

:::hint{type="info"}
**Note:&#x20;**&#x43;reating a cluster takes a few minutes, depending on the settings you choose. Please check the status or notifications for the latest information about your cluster.
:::

# Step 2: Connect to Your Cluster

**Once your cluster is successfully created:**

1. In the *GKE Clusters&#x20;*&#x70;age, click on the **Action&#x20;**&#x62;utton and then select **Connect**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pI9OXfmlaQTT4nOpwiiLa_image.png "GKE Clusters page")
2. You will be provided with the command-line instructions to connect your local **Terminal&#x20;**&#x6F;r use the **Cloud Shell&#x20;**&#x6F;ption in GKE.&#x20;
   Copy the provided command and run it in your terminal, or click **RUN IN CLOUD SHELL&#x20;**&#x74;o open the GKE.
   For this guide, we use the *Cloud Shell&#x20;*&#x69;n GKE.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/znGBBESHvCJxnrZrzCWn9_image.png "Connect to the cluster dialog box ")

# Step 3: Execute Kubectl and Helm Commands

With your connection established, use the following commands to deploy Litmus Edge Manager from GKE:

:::hint{type="info"}
**Note:&#x20;**&#x4B;eep your **Google Registry Credential Key** file in your workspace, as it's essential for authentication in deployment steps.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/a3n1SB58Iu28bL1-LMHLS_image.png "Cloud Shell")

If you don't have the *Google Registry Credential Key&#x20;*&#x66;ile in your workspace, click the **Action** button in the panel menu. Then select **Upload**.&#x20;
A dialog box will appear, prompting you to upload the file.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OETZxiiLVYKXMwrBYSaVH_image.png "Cloud Shell")

Click on **File&#x20;**&#x61;nd then **Choose Files** to find the file on your computer.&#x20;

After that, click **Upload** to send it to GKE.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2pN5MZUYHF27Jb7jtzRql_image.png "Cloud Shell")
:::

1\. Execute the following command to create a **namespace&#x20;**&#x66;or Litmus Edge Manager:

:::CodeblockTabs
shell

```bash
kubectl create namespace lem
```
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VoLc_UC6jfZiDICFiWOIW_image.png "Cloud Shell")

2\. Create **Kubernetes secrets&#x20;**&#x75;sing *Helm&#x20;*&#x74;o securely store credentials. For example:

:::CodeblockTabs
shell

```bash
kubectl --namespace lem create secret docker-registry lem-helm-secret --docker-server=us-east1-docker.pkg.dev \
   --docker-username=_json_key --docker-password="$(cat lem-pull-key.json)" --docker-email=any@email.com
```
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2GWHBOPsi3y12Jd4ghQn5_image.png "Cloud Shell")

3\. Install the Litmus Edge Manager using *Helm*. Adjust the version number (e.g., `2.25.0`) as needed:

:::CodeblockTabs
shell

```shell
helm install lem oci://us-east1-docker.pkg.dev/litmus-public/lem-chart-ga/lem --version 2.25.0 --namespace lem
```
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0wh6NTD-n44OHdEM1YJLs_image.png "Cloud Shell")

:::hint{type="info"}
**Important Notes:**&#x20;

- The command initiates the pull of the necessary container images. This process may take several minutes.
- After the deployment is completed, wait approximately five minutes before applying the Litmus Edge Manager(LEM) URLs and credentials.&#x20;
- Instructions for accessing these URLs and credentials will be printed out for you.
:::

4\. To get the Litmus Edge Manager's **external IP**, run the following where `<release_name>-nginx` is your service name.

```shell
export LEM_URL=$(kubectl get svc litmus-edge-manager -n <release_name>-nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo $LEM_URL
```

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lqoRUjJavhPTQINGLC5ju_image.png "Cloud Shell")

5\. To get the **Username** and **Password**, run:

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hGv7ZjRBwUU41Yyr0Csci_image.png "Cloud Shell")

# Step 4: Access the Litmus Edge Manager UI using the obtained IP address

See [Access Web User UI](docId\:w3uHZQ4tSrH7OLjhuLt0A) for details.

:::hint{type="info"}
**Note:** Obtain the Site License key from your Litmus account executive to activate your license.
:::

# Conclusion

Litmus Edge Manager is deployed and operational on your GKE cluster. You can now access the manager’s UI using the external IP address and proceed with any additional configuration, such as license activation, via the admin console.

Review the below documents to learn more:

- [User Profile Administration](docId\:xFOg2xRprqINGA9cLsZB-)&#x20;




[title] Events
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

In the *Events* tab, you can view the events corresponding to a given edge device. Events can be filtered based on severity, component, start date and end date.&#x20;

Events are captured in this pane only when the **Forward Events** toggle is enabled.&#x20;

:::hint{type="info"}
**Note**: As of Litmus Edge version 3.11.0, if Forward Events is enabled and the default MQTT connector created for an activated device is disconnected, events will still get pushed to Litmus Edge Manager. For earlier versions, events won't get pushed if the default MQTT connector is disconnected.&#x20;
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LE1DujwpQxH95WsRdVnR5_image.png "Events tab")

The following severity tags can be filtered:

- All
- Info
- Warning
- Alert
- Error

The following components can be filtered:

- All&#x20;
- auth - Auth&#x20;
- cc - Integrations&#x20;
- dh - Device Hub&#x20;
- dm - Device Management&#x20;
- mp - Marketplace


[title] Step 2: Create an Activation Configuration in Litmus Edge Manager
[path] QuickStart Guide/Activate an Edge Device/

Several parameters can be changed for the activation of Litmus Edge devices in the corresponding Litmus Edge Manager installation. It is important to review these options and to carefully implement the correct configuration during the activation of Litmus Edge licenses.

An example of a basic activation configuration can be found in [Example: Create a Basic Activation Configuration](docId\:frC4RwI5KUpmwxzqy7k6_). Note that this example demonstrates the implementation in a fairly basic configuration, which might not meet your specific needs.&#x20;

# Overview

An activation configuration can be configured with limits, license keys, templates and/or template variables. These configurations are all entirely optional. Some of these configurations have existing default values while others can be left blank. These configurations are all implemented in the first four sub-steps and can be skipped if no additional customization is needed.&#x20;

Generating the details for an activation configuration occurs only in *Step 2g: Save* while retrieving the key details are in *Step 2h: Retrieve Activation Code/URL*.

# Before You Begin

- If you are using a node-locked license, make sure you have a license key for deployment. To get a license key, contact your Litmus account executive.&#x20;
- If you are using a site-based license, make sure you’ve already applied the license in Litmus Edge Manager. See [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O).&#x20;

# Step 2a: Navigate to Activation Configuration

Follow these initial steps to access the Activation Configuration options.

1. Log in to Litmus Edge Manager.
2. Select a company.   &#x20;The *Projects* pane appears.
3. Click a project (the project tile) from the Project pane.&#x20;
   The *Dashboard* pane for the project appears.
4. From the navigation panel, navigate to **Activation&#x20;**> **Configuration**.&#x20;
   The *Activation Configuration* pane appears.
5. Click the **Add (+)** icon. The *Activation Config List/ NEW* pane appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VGN52zMQqHV-5mWZkJyqL_2023-07-1915-57-19.png "The button for adding a new activation configuration.")

# Step 2b: Configure Limits

You have the option of configuring limits. Specifically, you can configure the number of edge devices, the lease TTL and the expiration date. If no changes are needed, proceed to the next sub-step.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4SN1XZ4nJ2jciUlGzPYQ1_image.png "Activation Configuration: Limits configuration options")

- **Number of edge devices:** Enter the number of devices that will share the activation code. The activation code (created after saving) can be used for multiple edge device activations.
- **Lease TTL for identity certificate:** Enter the number of days the identity certificate for the activation will be valid from the day you activate the edge device. &#x20;
- **Expiration Date**: Select the expiration date when the activation code can no longer be used. &#x20;

# Step 2c: Configure Licenses and License Types

You have the option of using either a node-locked or a site license. By default, a node-locked license is selected.&#x20;

- A node-locked license associates and attaches a license with a Litmus Edge instance. Use this option for assigning one license to each edge device.
- A site license is where Litmus Edge retrieves a license from a Litmus Edge License Server.  Use this option to set the license server IP address.

See [Site and Node-Locked License Overview for Litmus Edge](docId\:nbX0O6C5ylSh-qVy0sdJc) to learn more.

If no changes are needed, proceed to the next sub-step.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KM04NTBSz0MY4wfoolG0K_image.png "License and license type configuration options")

## Configure a Site-based License

Ensure the site-based license has already been applied in Litmus Edge Manager before activating the device. The site license must be created through *Offline activation* in [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O).

## Configure a Node-locked License

You have the option of adding node-locked license keys manually or uploading them in a file.&#x20;

### Add License Key Manually

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8SJpgnPCIPBgctC5VgWFu_image.png "Adding node-locked keys manually")

**To manually add a node-locked license key**:

1. Click the **Add** icon.
   The **License Code** field drops down.
2. Enter or paste the license code in the **License key** field.

### Upload License Keys

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6t7eoGQ-voKRVV3RWanHA_image.png" size="80" width="1708" height="156" position="center" caption="Uploading node-locked keys" showCaption="true"}

**To upload node-locked license keys**:

1. &#x20;Click the **Upload** icon.
2. Click **Upload From File**, navigate to the license `.txt` file, and then click **Open**. The licenses appear in the *Licenses* field on separate lines for each license. Provide the licenses as specified below.
3. Click the **Upload** button in the dialog box to confirm the operation. The licenses appear in the *Licenses List* and display **No** in the **In Use&#xA0;**&#x63;olumn.

Please note the following for uploading node-locked license keys:&#x20;

- Each license must use a separate line in the `.txt` file.&#x20;
- A `.csv` file can be used if you are bulk uploading licenses.
- You can also enter each license using a separate line manually without clicking **Upload From File**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BE6c3rVo1tviknD7__Aem_image.png" size="80" width="773" height="453" position="center" caption="Licenses dialog box" showCaption="true"}

# Step 2d: Add Templates

You have the option of applying templates when activating a Litmus Edge device. Learn more about [Templates](docId\:Me1x3I4rPT_IIgNPCY1GA).&#x20;

If the Litmus Edge device doesn't need a template, proceed to the next step.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x2P_b1G24sZ07GZkOT9ht_image.png "Add Templates")

**To add at least one template**:&#x20;

1. From the *Template* section, click the **Add** icon.&#x20;
   The *Template Select&#x20;*&#x64;ialog box appears.
2. Select one or more templates from the list, and then click **Select**. The selected template appears in the *Templates* list.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/H3R0dkvHOzin-UiqrOz_D_image.png "Template Selection")

# Step 2e: Add Template Variables

You have the option of applying template variables when activating a Litmus Edge device. To use template variables, you'll need to [Parameterize a Template](docId\:ol2rl-sxp_6Y4ISmGzhXA) first.&#x20;

&#x20;If the Litmus Edge device doesn't need any template variables, proceed to the next step.&#x20;

## Add Template Variables Manually

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/szmwiO8X6j_Ff-FiaGsJV_image.png "Adding template variables")

**To add at least one template variable manually:**

- From the *Template Variables***&#xA0;**&#x73;ection, click the **Add&#xA0;**&#x69;con. The *Add new variable set* dialog box appears.

### Add Template Variables for All Devices&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VjiaO_6PuhnVHdl7zZTU7_image.png" size="60" width="574" height="338" position="center" caption="Add new variable set dialog box : All devices" showCaption="true"}

It is possible to add a template variable set applied to all devices.

**To add a template variable set applied to all devices:**

1. From the *Add new variable set***&#xA0;**&#x64;ialog box, click the **Variable set type toggle** so that it displays *All Devices*.
2. Click **Add.**&#x20;
   The variable set: *All devices* appears in the *Template Variables* list.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/efcDDflykw4ww43enDPCQ_5zrudc58c-uy1k-4hw-rzimage-2.png "Litmus Edge Manager User UI : Activation > Configuration : Activation Config 4/7 Add new variables for All Devices")
3. Click the **Add** icon next to the variable set. A drop-down menu appears, where each line has a separate **Variable Name - Variable Value&#x20;**&#x70;air.&#x20;
4. In the **Variable Name&#xA0;**&#x66;ield, enter a variable name.
5. In the **Variable Value&#xA0;**&#x66;ield, enter a variable value.&#x20;

### Add Template Variables for an Individual Edge Device

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_P1qfcHi3mCThhyYYxppJ_image.png" size="50" width="579" height="342" position="center" caption="Adding template variables for an individual Edge Device" showCaption="true"}

**To add a new template variable for an individual edge device:**

1. From the *Add new variable set&#x20;*&#x64;ialog bo&#x78;**,** click the **Variable set type** toggle so it displays *Per Edge Device*.
2. In the **Host Name** field, enter the host name for an edge device. To find the host name for an edge device, see *Host Information&#x20;*&#x69;n [Configure the Network Settings](docId\:jW2n7vOhntfAgknzoyLQc).
3. Click **Add.**&#x20;
   The Variable set: *per Edge Device:* \<hostname> appears in the *Template Variables&#x20;*&#x6C;ist.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cTuOFMlIiEXMjPwhAqKwh_e0wobrnpssfg5w0ajzflimage.png "Add new variables for per Edge Device")
4. Click the **Add** icon next to the variable set. A drop-down menu appears, where each line has a separate **Variable Name - Variable Value&#x20;**&#x70;air.&#x20;
5. In the **Variable Name&#xA0;**&#x66;ield, enter a variable name.
6. In the **Variable Value&#xA0;**&#x66;ield, enter a variable value.&#x20;

## Add Template Variables Using .csv File

Multiple template variables can be uploaded using a `.csv` file. A sample `.csv` file is available to download from the user interface for customization.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/a43ztvQoMFpG2juZOYL2Z_image.png" size="80" width="1919" height="154" position="center" caption="Upload Template Variables" showCaption="true"}

**To add at least one template variable using a .csv file:**

1. From the *Template Variables* section, click the **Upload&#x20;**&#x69;con.&#x20;
   The *Upload variable sets* dialog box appears.&#x20;
2. (Optional) Click the indicated link (titled 'here') to download a sample `.csv` file.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BkM0sUd2GW3u3597IDNoM_rnvvtynt8mlttxxczigti2023-07-1409-42-42.png" size="50" width="292" height="316" position="center" caption="The relevant dialog box." showCaption="true"}
3. Clic&#x6B;**&#x20;Select File**, navigate to a variable set `.csv` file, and then click **Open**.   &#x20;The selected `.csv` file appears in the *File Name* field.
4. Click **Upload**. The variable sets listed in the `.csv` file appear in the *Variable Sets* list.

# Step 2f: Configure Provision Options

:::hint{type="info"}
**Note**: Th&#x65;*&#x20;Provision Options* feature is available for Litmus Edge Manager 2.12.0 and later.
:::

To apply the [default password policy](docId\:nZxdm63Ip1guJ_mQiN140) during activation, select the *Password Policy* checkbox. If there are multiple password policies, the master default password policy that can't be deleted is implemented.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3D3wsm5y7PhRA1XK-lfR6_image.png" size="80" width="1071" height="102" position="center" caption="Provision Options section" showCaption="true"}

After activation, you can update the [default password policy](docId\:CMHGjEOLZn_qu_jlOjdBO) for individual edge devices.&#x20;

# Step 2g: Configure Advanced Settings

:::hint{type="info"}
**Note**: The *Advanced Settings* feature is available for Litmus Edge Manager 2.11.0 and later.
:::

When Litmus Edge Manger (LEM) connects to a Litmus Edge (LE) instance, it uses Remote Access. Remote Access has a parameter `PersistentKeepalive` that you can use to configure how often to send an authenticated empty packet to a Litmus Edge instance for the purpose of maintaining the LEM-LE connection. By default, Remote Access uses 22 seconds. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1yANrjF0Uh79RC7jZ1AuZ_image.png" size="80" width="1905" height="189" position="center" caption="Advanced Settings: Remote Network PersistentKeepalive Interval" showCaption="true"}

To set advanced settings, from the **Remote Network Persistent Keepalive** field, enter a number of seconds between 1-25 (both inclusive).&#x20;

# Step 2h: Save

When done configuring the Activation Configuration, clic&#x6B;**&#x20;Save**. Once saved, the activation code will then be generated at the *Activation Code* field.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CarewECxIvtf3_TNnHHMA_j8ohulh4be53wsfolialrimage.png "Save button")

# Step 2i: Retrieve Activation Code/URL

After saving, the activation code will display underneath the *Activation Code* section. This code and the *Activation URL* will be needed when activating a Litmus Edge instance.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UQf6LsCUz40rhv_P-50-a_j8ohulh4be53wsfolialrimage.png "Retrieve activation code/URL")

**To retrieve the activation code/URL**:&#x20;

1. **Copy to clipboard** the *Activation Code*. It will be needed for activating a Litmus Edge instance. Then, save (paste) the *Activation Code&#x20;*&#x69;n a secure location.
2. **Copy to clipboard** the *Activation URL*. It will be needed for configuring a Litmus Edge instance. Then, save (paste) the *Activation URL&#x20;*&#x69;n a secure location.

# Next Step

Use the copied *Activation Code* and *Activation URL* to [Create an Activation Request in Litmus Edge](docId:0AxUENzrqbUXfriiPUYlh).

[title] Activation
[path] Litmus Edge Manager User UI/Product Features/

The Activation module allows you to provision a connection between an edge device and Litmus Edge Manager.

When you select **Activation** from the Navigation panel, the **Configuration** and **Requests** sub-modules appear. You can perform activation provision (zerotouch) for an edge device from these sub-modules.

When you add an activation configuration from the Activation Configuration pane, you can create an activation code and make selections for edge devices that use the activation code from Litmus Edge Manager.

Additionally, you have the option to enable auto-provisioning, which allows edge devices to configure themselves automatically with the necessary settings when they connect to the network.&#x20;

The Activation Request List pane allows you to approve, reject, or delete an activation configuration from Litmus Edge Manager.

# Next Steps

The following sub-modules are available for **activation**.

- [Configuration](docId\:Jr3PpIPRQ-O49pFdJHDkN)&#x20;
- [Requests](docId:401zhGr_S57O7usKTT79e)&#x20;


[title] Manage a Project
[path] Litmus Edge Manager User UI/Product Features/Project List/

After you create a project, the Project List offers a list of actions to manage them. Refer to the following actions you can take on the Litmus Edge Manager User UI's *Project list* pane.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wIwqQNwX5L1KmL3Gzt4aG_2023-07-2714-12-23.png "Project List")

| **Action**                               | **Details**                                                                                                                                                                                 |
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **View Project Dashboard**          | See [LEM Dashboard](docId\:NICP2iziO86MTz4iqR5DP) for details.                                                                                                                              |
| \[2] **Action menu**                     | - **View**: See [LEM Dashboard](docId\:NICP2iziO86MTz4iqR5DP) for details.
- **Edit**
- **Delete:&#x20;**&#x52;emoving a project removes all related resources and they cannot be restored. |
| \[3] **Show filter**/**Hide filter**     | Search by project name or description.                                                                                                                                                      |
| \[4] **Change to Table**/**Module view** | Allows users to switch between different layouts for better project management visibility.                                                                                                  |


[title] Deploy AI/ML Model
[path] Litmus Edge Manager User UI/Product Features/AI/ML Models/

:::hint{type="info"}
**Note**: This feature is available for Litmus Edge Manager version 2.22.1 and later.&#x20;
:::

The *AI/ML Models&#x20;*&#x70;ane allows the deployment of machine learning models to multiple edge devices at once.&#x20;

# Before You Begin

Ensure you do the following:

- Have imported a ZIP file that contains the necessary model configurations and parameters. See [Import AI/ML Models](docId\:NejWAOLMno3aSEMjsafyR) for details.

**To add an AI/ML model in bulk to your edge device(s):**

1. Click **Bulk Deploy** button from the *AI/ML* *Models&#x20;*&#x70;ane.
   The *Model Deploy Master&#x20;*&#x64;ialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yho4U5eH4rNwbS9Lix3x3_image.png" size="80" width="1161" height="612" position="center" caption="AI/ML Models pane" showCaption="true"}
2. From the *Select Devices&#x20;*&#x70;ane, select the checkbox next to the edge device(s) you wish to add the models to. Then, click **Next**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9vIBrYRt8SmoZDllZzIBC_image.png" size="70" width="977" height="395" position="center" caption="Select Devices pane" showCaption="true"}
3. From the *Models&#x20;*&#x70;ane, select the model you want to deploy from the list of available models. Then, click **Next**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pMFCq8lW5HzpBoJKJn2Pk_image.png" size="70" width="976" height="376" position="center" caption="Models pane" showCaption="true"}
4. Review the *Summary* of the target devices and the selected model, and click **DEPLOY** **MODELS**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Qdxmy6f43GDIdQYQ9plfg_image.png" size="70" width="976" height="369" position="center" caption="Review page" showCaption="true"}
5. Once the *Status* has changed to *SUCCESS*, click **FINISH**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/s_1Mct6TQejjEdbd2Pt62_image.png" size="70" width="975" height="369" position="center" caption="Result pane" showCaption="true"}




[title] Generate a Report
[path] Litmus Edge Manager User UI/Product Features/Licenses/

:::hint{type="info"}
**Note**: This feature is available for Litmus Edge Manager version 2.18.0 and later.&#x20;
:::

You can generate a report summarizing license(s) statistics in CSV format via email or export.

The generated report will allow you to:

- License usage, statuses, and key statistics
- View the status of licenses, including total, active, used, expired, or unused
- Track activation details
- Filter usage and availability in real-time

# Before You Begin

Ensure you have at least one or more License SKUs.

# Generate a Report

1. Click **Generate Report** from the *Licenses Summary&#x20;*&#x70;ane.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Y_TZpmD7RA8SDUpZ9xm7S_image.png" size="100" width="1916" height="537" position="flex-start" showCaption="false" indent="2"}

2. To send the license report by email:
   1. Select the **Email CSV&#x20;**&#x6F;ption from the drop-down menu.&#x20;
      The *Send Report&#x20;*&#x64;ialog box appears.&#x20;
   2. Enter the **Email report recipients&#x20;**&#x77;ith the intended addresses.
   3. Click the **SEND&#x20;**&#x62;utton to dispatch the report.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zCZA512BaC_ZcpYpmgSJc_image.png" size="70" width="597" height="249" position="flex-start" caption="Send Report dialog box" showCaption="true" indent="3"}

:::Paragraph{listStyleType="decimal" listStart="4" indent="2"}
The recipients will receive the email below containing the generated report in a **Microsoft Excel&#x20;**&#x66;ile.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KXt218gPbagzZyWBU9xdn_image.png" size="70" width="848" height="355" position="flex-start" showCaption="false" indent="3"}

3. To download the license report as a CSV file:
   1. Select **Export CSV**.
   2. The report downloads as a **CSV file**.
      The downloaded *CSV* contains the following columns.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/z1YW2TLmLPptVd6tRmEcI_image.png" size="100" width="1920" height="374" position="center" caption="Generated CSV report file" showCaption="true" indent="3"}

| Column Name              | Details                                                         |
| ------------------------ | --------------------------------------------------------------- |
| **Project ID**&#xD;      | Identifies the specific project the license is associated with. |
| **Device ID**            | A unique identifier for the device the license is applied to.   |
| **Device name**          | The configured name of the device.                              |
| **Device friendly name** | A more user-readable name for the device.                       |
| **Device MAC address**   | The Media Access Control address of the device.                 |
| **License key**          | The unique code for the license.                                |
| **SKU**                  | The Stock Keeping Unit identifying the type of license.         |
| **Activation date**      | The date when the license was activated.                        |
| **Expiry date**          | The date when the main license term ends.                       |
| **Feature Expiry Date**  | The expiry date for specific features included in the license.  |
| **Is core**              | Indicates whether the license is a core license.                |
| **Is trial**             | Specifies if the license is a trial version.                    |
| **Status**               | The current state of the license (e.g., NEW, EXPIRED).          |


[title] Applications
[path] Litmus Edge Manager User UI/Product Features/

The Applications module contains a list of catalogs and applications available to the selected project.

Litmus Edge Manager includes a default Marketplace catalog with applications ready to be deployed.

# Access Applications UI

**To access the Applications UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects&#x20;*&#x70;ane appears.
3. Do one of the following:
   - Click a project from the *Project* pane.&#x20;
     The *Dashboard* pane appears for the project.
   - Click the **Actions** icon for a project, and then select **View.&#x20;**&#xA;The *Dashboard* pane appears for the project.
4. From the Navigation panel, select **Applications.&#x20;**&#xA;The *Applications* pane appears.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eFQfGBqdN9kjWOsdn2DuC_image.png)

# Next Steps

- [Manage Applications](docId\:MKlVgrbTqgLnK_10E6cXG)
- [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw)


[title] Step 3: Create an Activation Request in Litmus Edge
[path] QuickStart Guide/Activate an Edge Device/

After creating an activation template on Litmus Edge Manager, you will switch to the corresponding Litmus Edge instance. In Litmus Edge, you will proceed to create an activation request.&#x20;

## Step 3a: Set Data and Device Management Endpoint

You will need to set the endpoint that Litmus Edge will use to connect to Litmus Edge Manager.&#x20;

**To set the endpoint:**

1. In a separate browser tab, log in to the Litmus Edge instance you want to activate.
2. From the navigation panel, select **System** > **Device Management**.
3. In the *Litmus Edge Manager Activation&#x20;*(or *Cloud Management* for Litmus Edge versions earlier than 3.11.0) section's **Data & Device Management Endpoint** field, click **Edit**. Paste the *Activation URL&#x20;*&#x76;alue you copied from Litmus Edge Manager and then click **Set**.&#x20;
   The *Certificate&#x20;*&#x64;ialog box appears.
4. Verify that the certificate information is correct and acceptable, then click **Proceed**.&#x20;
   The cloud activation URL updates.

## Step 3b: Validate Connection between Litmus Edge and Litmus Edge Manager

:::hint{type="info"}
**Notes**:&#x20;

- The option to validate the connection is available for Litmus Edge version 3.11.0 and later.&#x20;
- Although port 51820 for remote access cannot be validated, ensure that this port is open on your network's firewall.
:::

Once the endpoint is set, you will need to run a validation to ensure that the connection between Litmus Edge and Litmus Edge Manager is successful.&#x20;

To validate the connection, click **Validate**. A dialog displays showing the validation is processing.&#x20;

If the validation is successful, click **Close&#x20;**&#x61;nd proceed to Step 2c.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lbmRQaUHbKUNaPmBeB4Zk_image.png" size="70" width="581" height="240" position="center" showCaption="false"}

If the validation is unsuccessful, review the error message and recommended steps, and then run the validation again. The Litmus Edge activation will not be successful without a valid connection.&#x20;

## Step 3c: Create Activation Request

After validating the connection, you will send the activation request to Litmus Edge Manager.&#x20;

To create the activation in request.&#x20;

1. In the **Activation Code** field, paste the *Activation Code* value you copied from Litmus Edge Manager.&#x20;
2. Click **Activate**.&#x20;
   The activation request is sent to Litmus Edge Manager and a notification box appears.

# Next Step

Proceed to [Approve the Activation Request in Litmus Edge Manager](docId\:rdL1GO82TH_UOLBJRhaW3).


[title] Deployment of Litmus Edge Manager on Azure
[path] QuickStart Guide/Installation and Deployments/

You can deploy Litmus Edge Manager directly from the Azure Marketplace. Choose between the consumption and site deployment models depending on your licensing preferences and infrastructure requirements. The key differences involve licensing, billing, and access control.

:::hint{type="success"}
**Important for Cloud Deployment**: Before you activate the license, make sure all hardware or VM configuration steps are complete—including adding or replacing network interface controllers (NICs). Changing the VM hardware configuration after licensing may invalidate your license settings.
:::

## Consumption Model

The Consumption Model is designed for organizations that want a fully managed deployment with automatic licensing and usage-based billing. With this model:

- Your license is automatically activated when you deploy and is valid for five years from deployment.
- Your tag usage is tracked and billed through Azure Marketplace.
- Litmus maintains the virtual machine through a managed resource group.
- You have limited access to the underlying VM infrastructure.

## Site Model

The Site Model gives you full control over your infrastructure and requires you to manage your own licensing. With this model:

- You deploy the infrastructure but no license is included. You request a license separately from the Litmus Account team.
- Tag consumption is not monitored or billed.
- You maintain full control over your virtual machines. Litmus has no access to your environment.

## Comparison of Models

|                    | Consumption Model                      | Site Model               |
| ------------------ | -------------------------------------- | ------------------------ |
| **License**        | Automatic (valid for 5 years           | Request from Litmus team |
| **Billing**        | Usage-based (tags reported to Azure)   | Request from Litmus team |
| **VM access**      | Limited customer access                | Full customer access     |
| **Litmus access**  | Full access via managed resource group | No access                |
| **Tag monitoring** | Tracked and billed                     | Not monitored            |

# Before you begin

For Site model deployments:

- Request a license from the Litmus Account team before deployment

For both deployment models:

- Ensure you have access to [Azure Portal](https://portal.azure.com/)
- Review the [System Requirements](https://docs.litmus.io/edgemanager/quickstart-guide/system-requirements) for sizing guidance
- Review the [Firewall Port Configuration Requirements](https://docs.litmus.io/edgemanager/quickstart-guide/system-requirements#mXuhL)
- If deploying on an existing network, grant the Network Contributor role on the subnet to the MS App service principal:

:::CodeblockTabs{indent="2"}
```azcli
az role assignment create \
 --assignee "<user-or-sp-id>" \
 --role "Network Contributor" \
 --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Network/virtualNetworks/<virtual-network-name>/subnets/<subnet-name>"
```
:::

:::Paragraph{indent="1"}
where:
:::

:::Paragraph{listStyleType="disc" indent="2"}
`<user-or-sp-id>` is the object ID of the user, group, or service principal (for example, principal ID of a managed identity)
:::

:::Paragraph{listStyleType="disc" listStart="2" indent="2"}
`<subscription-id>` is the ID of the Azure subscription that contains the resource group
:::

:::Paragraph{listStyleType="disc" listStart="3" indent="2"}
`<resource-group>` is the name of the resource group that contains the virtual network
:::

:::Paragraph{listStyleType="disc" listStart="4" indent="2"}
`<virtual-network-name>` is the name of the virtual network that hosts the subnet
:::

:::Paragraph{listStyleType="disc" listStart="5" indent="2"}
`<subnet-name>` is the name of the subnet to which you assign the Network Contributor role
:::

# Deploy Litmus Edge Manager

The deployment process is similar for both models. The main difference is which offering you select in the Azure Marketplace.

## Step 1: Find Litmus Edge Manager in Azure Marketplace

1. Log in to [Azure portal](https://portal.azure.com/).
2. Select **Create a resource**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JUtzESyfuQ673m2AJ3pio_image.png" size="80" width="800" height="217" position="flex-start" showCaption="false" indent="2"}

3. In the **Search services and marketplace bar**, enter `Litmus`.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9SSjtL6Gz1zB8sBIXWQcB_image.png" size="80" width="800" height="280" position="flex-start" showCaption="false" indent="2"}

4. From the search results, select the consumption or site model:
   - **Litmus Edge Manager - Consumption Model** for usage-based billing

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HYnaEGC1BcPRd5w7qBvMN_image.png" size="80" width="1228" height="488" darkWidth="1228" darkHeight="488" position="flex-start" showCaption="false" indent="3"}

:::Paragraph{listStyleType="disc" listStart="2" indent="2"}
**Litmus Edge Manager - Site Model** for customer-managed licensing
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/I5th17jfx38hS6ag8d4Jq_image.png" size="100" width="1228" height="488" position="flex-start" showCaption="false" indent="3"}

5. Click the card and navigate to [Litmus Edge Manager - Site Model](https://portal.azure.com/#view/Microsoft_Azure_Marketplace/GalleryItemDetailsBladeNopdl/id/litmusautomation1582760223280.litmus_sitebased/selectionMode~/false/resourceGroupId//resourceGroupLocation//dontDiscardJourney~/false/selectedMenuId/home/launchingContext~/%7B%22galleryItemId%22%3A%22litmusautomation1582760223280.litmus_sitebasedsitemodel%22%2C%22source%22%3A%5B%22GalleryFeaturedMenuItemPart%22%2C%22VirtualizedTileDetails%22%5D%2C%22menuItemId%22%3A%22home%22%2C%22subMenuItemId%22%3A%22Search%20results%22%2C%22telemetryId%22%3A%2244813dfe-1489-43d1-a668-877f2f604a8a%22%7D/searchTelemetryId/69cf4d1d-d536-43d5-819d-2c18d0167e46) or [Litmus Edge Manager - Consumption Model](https://portal.azure.com/#view/Microsoft_Azure_Marketplace/GalleryItemDetailsBladeNopdl/id/litmusautomation1582760223280.lem_litmus_azure/selectionMode~/false/resourceGroupId//resourceGroupLocation//dontDiscardJourney~/false/selectedMenuId/home/launchingContext~/%7B%22galleryItemId%22%3A%22litmusautomation1582760223280.lem_litmus_azuredata_tag_per_hour2%22%2C%22source%22%3A%5B%22GalleryFeaturedMenuItemPart%22%2C%22VirtualizedTileDetails%22%5D%2C%22menuItemId%22%3A%22home%22%2C%22subMenuItemId%22%3A%22Search%20results%22%2C%22telemetryId%22%3A%222d07ba25-0421-4148-bcc5-4cad0dedcb2f%22%7D/searchTelemetryId/65b39d51-e71c-4b4b-a9ac-34d1fb266a39).
6. In the **Litmus Edge Manager - Configuration Model** or **Site Model** page, define the following settings:
   - **Resource Group**: Define a resource group for deployment.
   - **Region**: Define a region for deployment.
   - **Size**: See the [System Requirements Documentation](https://docs.litmus.io/edgemanager/quickstart-guide/system-requirements) for minimum & recommended sizing.
   - **Managed Resource Group**: Select managed resource group from the options.
7. Click **Review + Create**.
8. Review your configuration, then agree to the Terms & Conditions and provide contact information on the next page.
9. Click **Create**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2gHdDxG9AyN72_Xgf-Nu2_image.png" size="80" width="800" height="236" position="flex-start" showCaption="false" indent="2"}

10. Check the inbound firewall rules in the virtual network once the application is deployed successfully:
    - **443/tcp:** LEM UI access
    - **8446/tcp:&#x20;**&#x4C;EM admin console UI access
    - **8883/tcp:** LE to LEM MQTT connection
    - **51820/udp:** LE to LEM remote access connection
11. Depending on desired network and architecture, you can define specific ranges of IP for sources and destinations.
12. Review all required and optional inbound and outbound Litmus Edge Manager [Firewall Port Configuration Requirements. ](https://docs.litmus.io/edgemanager/quickstart-guide/system-requirements#mXuhL)
13. Navigate back to the **Overview** page.&#x20;
14. In the essentials section, find the IP address associated to your Litmus Edge Manager instance by Azure.
    - \[Optional] Configure DNS

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8rO47jIqTKUKULROT932O_image.png" size="80" width="800" height="365" position="flex-start" showCaption="false" indent="3"}

15. Enter the IP or DNS in a browser to [Access Litmus Edge Manager](docId\:w3uHZQ4tSrH7OLjhuLt0A) web UI.

:::hint{type="info"}
**Note:** User access to UI will be determined by network & firewall configuration.&#x20;
:::


[title] LEM Dashboard
[path] Litmus Edge Manager User UI/Product Features/

The *Dashboard&#x20;*&#x6D;odule is specific to a project. You must open a project before the *Dashboard&#x20;*&#x6D;odule appears. It contains statistics about the whole project. This information is on the operational network and is completely offline.

The *Dashboard&#x20;*&#x6D;odule includes the following sections.

- **Edge Devices**: Displays the number of connected edge devices and the total number of edge devices for your project.
- **Devices**: Displays the number of connected DeviceHub devices and the total number of DeviceHub devices for your project.
- **Edge Tags**: Displays the number of DeviceHub tags.
- **Failed/Processed Tags**: Displays the rate of failed / processed Edge Tags (tags/minute). This feature is available for Litmus Edge Manager version 2.8.0 and later. 
- **Incidents***:* Displays the total number of incidents and the total number of active incidents for the project.
- **Edge Device Metrics***:&#x20;*&#x44;isplays Integration Traffic (message/second), Integration Buffer size (bytes), Processed tags rate (tags/minute), Failed tags rate (tags/minute), Edge Devices CPU Utilization, Edge Devices Memory Used, Edge Devices Network Load, Edge Devices Storage.
- **Alerts***:* Lists devices for the project that have alerts, the alert description, event time, and status.

# Access Dashboard UI

When you select a project, the *Dashboard&#x20;*&#x61;ppears.

**To view the Dashboard**:

1. Log in to *Litmus Edge Manager*.
2. Select a company.
   The *Projects&#x20;*&#x70;ane appears.
3. Do one of the following:
   -     Click a project from the *Project&#x20;*&#x70;ane. The *Dashboard&#x20;*&#x70;ane appears for the project.
   - Click the **Actions** icon for a project, and then select **View**. The *Dashboard&#x20;*&#x70;ane appears for the project.

Refer to the following actions you can take on the Litmus Edge Manager User UI's *Dashboard* pane.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gl_MVROKsIB2iY1FwowVF_image.png" size="80" width="1920" height="937" position="center" caption="Dashboard 1/2" showCaption="true"}

| **Action**                                                | **Details**                                                                                                     |
| --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| \[1] **View Additional Edge Device Metrics**              | Access more detailed metrics related to the performance and status of your edge devices.                        |
| \[2] **View Alert Status**                                | When you hover over the (!) icon for a selected edge device, a status pops up showing the status and severity.  |
| \[3] [Edge Device Details](docId\:YwQwD4skuVTwNtcAV5ijs)  | Check specific details of a selected edge device                                                                |


[title] License
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

Upon activation of an edge device, all license information is automatically loaded in the *License&#x20;*&#x74;ab. You can view the license and its expiry date, the features included with the license, and the number of allowed devices and tags. The online and offline activation sections for the edge device are included.

You can activate a license in online/offline mode from *Device Details*.&#x20;

Refer to the following actions you can take on the Litmus Edge Manager User UI's *Edge Devices Details License* tab. In the following screenshot, a *Site&#x20;*&#x6C;icense has been chosen.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pB1fUNAkJ1KEtAs5pjlSq_image.png" size="80" width="1920" height="914" position="center" caption="License tab" showCaption="true"}

| **Action**                   | **Details**                                                                                                                            |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Select License Type** | Choose between different types of licenses available for the edge device.                                                              |
| \[2] **Save**                | When switching from Node-locked license to a Site license, the added Node-locked licensed will still be installed when switching back. |
| \[3] **Reload Features**     | Refresh the available features associated with the selected license type.                                                              |

When *Node-locked* license is selected, the user interface offers a different set of actions.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/v52dTUtqv0Omsr1_C_wnQ_image.png" size="80" width="1920" height="914" position="center" caption="Online License Activation" showCaption="true"}

| **Action**                                                            | **Details**                                                                                                                               |
| --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| \[4] **Reload License**                                               | Retrieve the current license information for the edge device.                                                                             |
| \[5] **Upgrade License**                                              | Attempting to upgrade will change the user interface. [Add/Upgrade a Node-locked License to an Edge Device](docId\:Py-ihVI6wR4flRtMp1KJS) |
| \[6] **Remove License**                                               | Delete the current license from the edge device.                                                                                          |
| \[7] **Enter Activation Key**                                         | [Add/Upgrade a Node-locked License to an Edge Device](docId\:Py-ihVI6wR4flRtMp1KJS)                                                       |
| \[8] **Switch to&#x20;*****Offline License Activation*****&#x20;tab** | Navigate to the section for activating licenses without an internet connection.                                                           |
| \[9] **Submit**                                                       | You cannot add a new license when a license already exists. You must **Upgrade License&#x20;**&#x69;nstead.                               |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PyWyXCjdxbvRAXYi4p8ag_image.png" size="80" width="1920" height="914" position="center" caption="Offline License Activation" showCaption="true"}

| **Action**                          | **Details**                                                                                                                                               |
| ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[10] **Show filter / Hide filter** | Toggle the visibility of filtering options in the license activation section.                                                                             |
| \[11] **Action menu**               | - ****[Add](docId\:Py-ihVI6wR4flRtMp1KJS)[/Upgrade](docId\:Py-ihVI6wR4flRtMp1KJS)[ a Node-locked License to an Edge Device](docId\:Py-ihVI6wR4flRtMp1KJS) |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8tFgZQ_qeGUE8LODrOn6w_image.png" size="80" width="1920" height="914" position="center" caption="Features and Performance Packs" showCaption="true"}

****

| **Action**                | **Details**                                                                        |
| ------------------------- | ---------------------------------------------------------------------------------- |
| \[12] **Reload Features** | Refresh the list of features and performance packs available for the edge device.  |
| \[13] **Action menu**     | Open the menu to select further actions related to features and performance packs. |


[title] Users
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

The **Users** tab provides a central location for controlling user accounts on all your Litmus Edge devices. Here you can edit user details, update passwords, and add, disable, or remove users on edge devices.

:::hint{type="info"}
**Note:** You can manage local Litmus Edge user accounts only. User management does not apply to externally authenticated users, such as LDAP, Active Directory, or OAuth accounts.
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-ud8QY5-mp-fkytPC9v_X_image.png)

To add a user:

1. Click **Add User** on the right.
2. In the **Create User** dialog, provide user details including a strong password and select a user group to assign the user to.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0N5LX3MpDfgZs6I4Yw2--_image.png" size="80" width="1248" height="552" position="flex-start" showCaption="false" indent="2"}

3. Click **Create**.

To manage users:

1. Click the **Action** menu for a user.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HxTdaS1kTT-oP0zQ9XePe_image.png" size="100" isUploading="false" width="1236" height="460" showCaption="false" indent="2"}

2. Do any of the following:
   - To update user information, click **Edit&#x20;**&#x61;nd update information in the **Edit User** dialog.
   - To update the user's password, click **Change Password**.
   - To disable a user, click **Disable**. The user becomes disabled and can be reenabled later by choosing **Enable** from this menu.
   - To remove a user from the device, click **Remove** and click **Yes, remove** in the confirmation dialog.&#x20;

[title] Requests
[path] Litmus Edge Manager User UI/Product Features/Activation/

The *Requests&#x20;*&#x73;ub-module allows you to approve the provisioning for an edge device.

# Access Activation > Requests UI

**To access the Activation Requests UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   -     Click a project from the *Project&#x20;*&#x70;ane.
     The *Dashboard* pane appears for the project.
   - Click the **Actions** icon for a project, and then select **View.**
     The *Dashboard* pane appears for the project.
4. From the *Navigation&#x20;*&#x70;anel, select **Activation**.
   The *Configuration* and *Requests* sub-modules drop down.
5. From the navigation panel, select **Requests**.
   The *Activation Request List* pane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LVc3fIMqlQ5KuL2kRmbLM_image.png" size="80" width="1920" height="914" position="center" caption="Activation Requests" showCaption="true"}

# Next Steps

- [Manage Device Requests](docId\:W-VtSenKG2hitLO-ZXqfR)&#x20;
- [Activation Request Stage](docId\:CWnZE5vybRzWGrmEC1O_i)&#x20;


[title] View Data from a Litmus Edge Instance and/or a Child Device
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/

To view data from a Litmus Edge Instance, at least one child device (connected device within the Litmus Edge instance) must be first properly set up. The child device must be connected with tags, and then the tags must be transformed as imported topics inside the Litmus Edge instance's *Default Generic MQTT SSL connector*. This first child connection will facilitate the data connection between a Litmus Edge instance and the Litmus Edge Manager.  Additional child device connections from a Litmus Edge instance will append to the Litmus Edge instance's data and also display as additional child devices in Litmus Edge Manager.&#x20;

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

- Viewing a child device's messages works only for standard tags.&#x20;
- If the child device's tag is removed from the Default Generic MQTT SSL connector, the child device is not deleted from the list of available child devices and will still be displayed.&#x20;
:::

# Before You Begin

Using Litmus Edge Manager, activate an edge device. See [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) for more details.

To use view data from an edge device and/or a child device, you will need to do the following.&#x20;

- Step 1: Connect a Device with Tags in Litmus Edge
- Step 2: Set up Default Generic MQTT SSL Connector with Imported Topics in Litmus Edge
- Step 3: View Data in Litmus Edge Manager

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Connect a Device with Tags in Litmus Edge

Before data can be viewed for a Litmus Edge Instance, a device must be first connected to the instance, and then associated with tags. This allows the connected device's data to be extracted from the Litmus Edge instance.

**To connect a device with at least one tag**:

1. [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq)&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MLeNXHXC5-GNoFPtF3K6A_testdevice.png" size="80" width="1920" height="914" caption="Litmus Edge : DeviceHub > Devices : Newly connected device" position="center" showCaption="true"}
2. [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device from the previous step.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5xrCn_yvy1mPh5VyMKvpi_2023-07-2008-59-01.png "Add a tag to a newly connected device")

#

# Step 2: Set up Default Generic MQTT SSL Connector with Imported Topics in Litmus Edge

After a device is connected with tags, the Default Generic MQTT SSL connector must be enabled. Then the generated tags earlier must then be transformed as topics to be immediately imported and enabled into the Default Generic MQTT SSL connector.&#x20;

**To set up Default Generic MQTT SSL connector with at least one imported topic**:

**To import the tag into the generic MQTT SSL connector:**

1. Log in to Litmus Edge.&#x20;
2. Navigate to **Integration**.&#x20;
3. Click the *generic-mqtt-ssl* connector tile.&#x20;
4. Click the **Topics&#x20;**&#x74;ab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RiGXq8U4ibEwXlMqu4VdZ_topics-tab.png" size="70" width="539" height="516" position="center" showCaption="false"}
5. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/88SwMXPJ-ZlRMlYGiiEL0_import-tags-icon.png" size="80" width="1053" height="483" caption="Import from DeviceHub tags icon" position="center" showCaption="true"}
6. Select the check box to import the tag from the device you created earlier and click **Import**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6KAn2U3ny1gcM2d__EtNi_devicehub-import.png" size="80" width="962" height="272" caption="DeviceHub Import dialog box" position="center" showCaption="true"}
7. Click the **Enable all topics** icon.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OFsKCxfI-FgSrUhp1ORi9_enable-all-topics-icon.png" size="80" width="1164" height="469" caption="Enable all topics icon" position="center" showCaption="true"}
8. Return to the *Integration&#x20;*&#x70;ane and toggle the connect option and confirm the status is `CONNECTED`.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/I2Ops086U4tzxrunFVNlN_connection-toggle.png" size="60" width="367" height="258" caption="Connector connection toggle" position="center" showCaption="true"}

# Step 3: View Data in Litmus Edge Manager

Once a Litmus Edge instance is connected to Litmus Edge Manager and a device is added to that Litmus Edge instance, you can view data (outbound messages) from that Litmus Edge instance or that instance's child device in the Litmus Edge Manager UI.

**To access the data viewing UI in Litmus Edge Manager**:

1. Log in to Litmus Edge Manager.
2. Select a company. The *Projects* pane appears.
3. Do one of the following:
   - Click a project from the *Projects&#x20;*&#x70;ane. Th&#x65;*&#x20;Dashboard* pane appears for the project.

   - Click the **Actions** icon for a project, and then select **View**. Th&#x65;*&#x20;Dashboard* pane appears for the project.
4. From the navigation panel, select **Edge Devices**.   &#x20;The *Edge Devices* pane appears.

## View Data From Edge Device

**To view edge device data**:

1. From *Edge Devices*, click the **ID** of the edge device whose data you want to view.&#x20;
   The *Device Details* pane appears.
2. Click the **Raw** tab. The *Raw Data* pane appears.
3. Toggle **Auto-Refresh** at the bottom of the pane.
4. Select the refresh interval from the **Interval&#x20;**&#x64;rop-down list. The messages published by the topics you have added to the Generic MQTT-SSL connector in *Step 2: Set Up Default Generic MQTT SSL Connector with Imported Topics in Litmus Edge* appear on the pane. The list of messages is refreshed according to the interval you have selected from the earlier step.

## View Data From Child Edge Device

**To view child edge device data**:

1. Click the **Show child devices** icon next to an edge device. The child devices for the edge device drop down.
2. Click the **ID** of the child device whose data you want to view.   &#x20;The selected device's information pane appears.
3. Click the **Explore** tab.   &#x20;The *Explore&#xA0;*&#x70;ane appears.
4. Toggle **Auto-Refresh** at the bottom of the pane.
5. Select the refresh interval from the **Interval** drop-down list. The topics you have added to the Default Generic MQTT SSL connector in *Step 2: Set Up Default Generic MQTT SSL Connector with Imported Topics in Litmus Edge* appear on the pane. Their **Last Value&#xA0;**&#x61;nd **Updated At** fields refresh according to the interval you have selected in the previous step.
6. To see the list of values a topic has published since it began auto-refreshing, click **Last Value** for that topic. The values appear in th&#x65;*&#xA0;Edge Device Object value* dialog box, in a tabular format.
7. To display the same data as a chart, select the **Chart** tab.



:::hint{type="info"}
**Note**: Once a child device's data has been published (and has become viewable) in Litmus Edge Manager, you can visualize this data using Grafana. See [Visualize Child Device Data Using Grafana](docId\:cY2MwkiuvJ2nvNBZhaotC).
:::


[title] Import AI/ML Models
[path] Litmus Edge Manager User UI/Product Features/AI/ML Models/

:::hint{type="info"}
**Note**: This feature is available for Litmus Edge Manager version 2.21.0 and later.&#x20;
:::

You can upload a new model or display available models from *AI/ML Models* page.&#x20;

:::hint{type="warning"}
**Note:** You can only upload the models as a **ZIP** file containing a saved model directory with variables, assets, and a .pb (protocol buffer) file.
:::

# Before You Begin

Ensure to have a ZIP file that contains the necessary model configurations and parameters.

**To upload an AI/ML model zip file:**

1. Navigate to *AI/ML Models* pane.
   ::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/EN9ecbjfCRYlBWZHQ330e_image.png" size="80" width="1276" height="698" position="flex-start" caption="AI/ML Models pane" showCaption="true"}
2. Click **AI/ML MODELS** drop-down menu and select the **Upload New AI/ML Model** option.
   The *Upload AI/ML Model* dialog box appears.
   ::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/EKQj9l7qtZEJJDI6qhy5Y_image.png" size="80" width="1276" height="503" position="flex-start" caption="AI/ML Models pane" showCaption="true"}
3. Click **Select File** and navigate to select the ZIP file from your local computer.
   - **File Name:&#x20;**(Optional) Rename the file if needed.
   - **Note:** You can only upload the models as a **ZIP** file containing a saved model directory with variables, assets, and a .pb (protocol buffer) file.
4. Click **Upload**.
   ::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/Jqo4crGXcEIctonCOwewr_image.png" size="30" width="266" height="361" position="flex-start" caption="Upload AI/ML Model dialog box" showCaption="true"}

# Next Steps

Refer to the following guides for access to example AI/ML solutions.

- [Machine Learning Classification Example](https://portal.litmus.io/accelerators/machine-learning-classification?tab=downloads)
- [Machine Learning Classification](docId\:hHvgec_PzGfBWVFsyTP23)&#x20;


[title] Multi-Select Mode
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/

The Edge Devices module includes a *Groups and Edge Devices* section. You can create and apply a group to selected edge devices from the *Groups&#x20;*&#x73;ection.

Multi-Select Mode is used when you want to perform the same actions to multiple devices from the Edge Devices pane.

You can modify the properties, or start, stop and restart services for the selected devices.

**To enable multi-select mode:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   - Click a project from the *Project&#x20;*&#x70;ane.
   - Click the **Actions** icon for a project, and then select **View**.
4. From the Navigation panel, select **Edge Devices**.
   The *Edge Devices* pane appears.
5. Click the **Multi-Select** icon.
   Selection boxes appear next to each edge device.
6. Select one or more edge devices in the **Edge Devices** list.
   You can perform the following available actions for the selected edge devices.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zIQMXr9eRY_F6-YyavtBR_image.png "Multi-Select Mode")

| **Action**                                              | **Details**                                      |
| ------------------------------------------------------- | ------------------------------------------------ |
| \[1] **Edit Selected Edge Device**                      |  Modify edge device properties and settings.     |
| \[2] **Manage Edge device(s) Services**                 | Control services for selected edge devices.      |
| \[3] [Open Edge Device](docId\:XpURI-8b1QSviQEpNCvzD)   | Access and view the selected edge device.        |
| \[4] [View Edge Metrics](docId\:LN8vukirANWG3gtEM9pA2)  | Review performance metrics of edge devices.      |
| \[5] **Manage Metrics Pulling**                         | Enable or disable metrics data collection.       |
| \[6] **Change Password Policy**                         | Update security policy for edge devices.         |
| \[7] **Delete Edge Devices(s)**                         |  Remove selected edge devices from the system.   |

# Edit Selected Edge Devices

You can modify the properties for multiple selected edge devices using Multi-Select.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uBgnFHmh-gxadLfW4eVRY_image.png" size="80" width="1433" height="358" position="center" caption="Edit Selected Edge devices" showCaption="true"}

1. Click **Select Image**, navigate to the image file and click **Open**.
   The Image file appears in the *Device Image* field.
2. (Optional) In the *Device Description* field, enter a description for the selected edge devices.
3. (Optional) In the *Add device groups&#x20;*&#x66;ield, enter a group name for the selected edge device.
4. Click **Update**.
   The image for the selected devices updates to reflect your selection.

# Manage Edge Device(s) Services

You can modify the properties, or start, stop and restart services for the selected edge devices.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MiF42p1XPaE0sC3Ewl1c4_image.png" size="80" width="492" height="446" position="center" caption="Manage edge device(s) services" showCaption="true"}

- Click the **Start service** icon next to a service.  &#x20;The service starts for the selected edge devices.
- Click the **Restart service** icon next to a service.  &#x20;The service for the selected edge devices restarts.
- Click the **Stop service** icon next to a service.  &#x20;The services for the selected edge devices stops.

# Backup Edge device(s)

You can back up multiple edge devices simultaneously. Once backed up, you can navigate to Edge Devices, click the device name you backed up, and navigate to the [Backup](docId\:axfcH6DH6avOvjLq5W7Rz) tab.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RtrQt8pzANl2wJrCXWziC_image.png" size="80" width="517" height="262" position="center" caption="Edge Devices Backup" showCaption="true"}

# Manage Events Forwarding

You can apply or disable events forwarding to multiple edge devices.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GAB2rRW7jVrLGqPmwfqUd_image.png" size="80" width="495" height="239" position="center" caption="Manage Events Forwarding" showCaption="true"}

- Click the **Start&#x20;**&#x69;con next to *Forwarding&#x20;*&#x74;o apply Events Forwarding to the selected edge devices.

- Click the **Stop&#x20;**&#x69;con next to *Forwarding&#x20;*&#x74;o disable Events Forwarding for the selected edge devices.

# Manage Metrics Pulling

You can apply or disable metrics pulling to multiple edge devices.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wLbeluBTr_y77mrF77oOL_image.png" size="80" width="488" height="201" position="center" caption="Manage Metrics Pulling" showCaption="true"}

- Click the **Start&#x20;**&#x69;con next to *Forwarding&#x20;*&#x74;o apply Metrics Pulling to the selected edge devices.

- Click the **Stop&#x20;**&#x69;con next to *Forwarding&#x20;*&#x74;o disable Metrics Pulling for the selected edge devices.

# Change Password Policy

You can apply a selected password policy to multiple edge devices.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VJCzNbiq-oyWzHNEIWGYA_image.png" size="80" width="485" height="632" position="center" caption="Change Password Policy" showCaption="true"}

From the *Select Password Policy***&#xA0;**&#x64;ialog box, select an option from the **Selected Policy&#xA0;**&#x64;rop-down list.




[title] Deployment of Litmus Edge Manager on AWS
[path] QuickStart Guide/Installation and Deployments/

You can deploy Litmus Edge Manager (LEM) directly from the Amazon Web Services (AWS) Marketplace. This topic shows how to perform a consumption model deployment. This model is designed for organizations that want a fully managed deployment with automatic licensing and usage-based billing. With this model:

- Your license is automatically activated when you deploy and is valid for five years from deployment.
- Tag usage by edge devices is tracked against your license and billed through AWS Marketplace.

# Before you begin

Before you deploy, make sure you:

- Have access to [AWS Cloud Console](https://console.aws.amazon.com/console/home)
- Review [System Requirements](docId\:vcocNbL2DlgAGwsJ3YCdm) for sizing guidance
- Review [Firewall Port Configuration Requirements](docId\:vcocNbL2DlgAGwsJ3YCdm)

# Deploy Litmus Edge Manager

Follow these steps to deploy Litmus Edge Manager.

## Step 1: Accept the LEM offering in AWS Marketplace

1. On AWS Marketplace, locate the [Litmus Edge Manager - Consumption Model](https://aws.amazon.com/marketplace/pp/prodview-fytq3z5qkhkk4?sr=0-1\&ref_=beagle\&applicationId=AWSMPContessa) offering. Click **View Purchase Options**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZXkIwKiGbs8eEESxv0kUx_aws-mp-lem-consumption-2026-07-22-20-23-49.png" size="80" isUploading="false" width="2802" height="2378" darkWidth="2802" darkHeight="2378" position="flex-start" link="{&#x22;externalHref&#x22;:&#x22;https://aws.amazon.com/marketplace/pp/prodview-fytq3z5qkhkk4?sr=0-1&ref_=beagle&applicationId=AWSMPContessa&#x22;,&#x22;docId&#x22;:&#x22;&#x22;,&#x22;docAnchorId&#x22;:&#x22;&#x22;,&#x22;openInNewTab&#x22;:true,&#x22;noFollow&#x22;:false}" showCaption="false" indent="2"}

2. Under **Your Offers**:
   1. Select the **Available to purchase offers** checkbox under **Offer availability**.
   2. In the **Available to purchase offers** section, select the public offer or a private offer if one has been made available to you.
   3. Review the offer summary and price details.
   4. Click **Next**.

A purchase confirmation page displays.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/js1peh3ThOqthPlpr620E_image.png" size="80" isUploading="false" width="2266" height="2130" darkWidth="2266" darkHeight="2130" position="flex-start" showCaption="false"}

## Step 2: Launch LEM as a consumption model

Next, launch LEM as a consumption model.

1. In **Launch method**, select **One-click launch from AWS Marketplace**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PB4t6ZYR4PYrUfcLDM5Bd_image.png" size="80" isUploading="false" width="2722" height="1259" darkWidth="2722" darkHeight="1259" position="flex-start" showCaption="false" indent="2"}

2. In the **Setup** page, confirm setup details.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/skzsaqr-mf2ldzQ4XFYXb_image.png" size="80" isUploading="false" width="2416" height="2087" darkWidth="2416" darkHeight="2087" position="flex-start" showCaption="false" indent="2"}

3. In the **Launch** section, click **Launch** to open LEM.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DCNr1duR4ckIgpmZ8JT3t_image.png" size="80" isUploading="false" width="2388" height="2078" darkWidth="2388" darkHeight="2078" position="flex-start" showCaption="false" indent="2"}

A progress screen displays.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OBLc206FbknYckEpE3qTt_image.png" size="80" isUploading="false" width="2424" height="1685" darkWidth="2424" darkHeight="1685" position="flex-start" showCaption="false"}

## Step 3: Allow additional ports

After deployment, modify security groups to allow additional ports.

1. In EC2, navigate to **Instances**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EEN9_AR8pNGy6cT5YCdIg_instance-details-ec2-us-east-1-2026-07-22-21-06-00.png" size="80" isUploading="false" width="2746" height="2268" darkWidth="2746" darkHeight="2268" position="flex-start" showCaption="false" indent="2"}

2. Click the **Security** tab. In **Security groups**, click the link to launch the security groups wizard.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vOafteKyA5bvFGqN4iOoB_ec2-us-east-1-2026-07-22-21-19-38.png" size="80" isUploading="false" width="3433" height="1027" darkWidth="3433" darkHeight="1027" position="flex-start" showCaption="false" indent="1"}

3. In **Security groups**, select a rule to modify.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bDbL_zBW9P5FHTzSFtKXb_securitygroup-ec2-us-east-1-2026-07-22-21-20-13.png" size="80" isUploading="false" width="3370" height="1098" darkWidth="3370" darkHeight="1098" position="flex-start" showCaption="false" indent="2"}

4. In **Edit inbound rules**, specify ports to open. For example:
   - **443/tcp:** LEM UI access
   - **8446/tcp:** LEM admin console UI access
   - **8883/tcp:** Litmus Edge to LEM MQTT connection
   - **51820/udp:** Litmus Edge to LEM remote management connection

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mI63heG57UBNyCXNLibM6_modifyinboundsecuritygrouprules-ec2-us-east-1-2026-07-22-21-21-23.png" size="80" isUploading="false" width="3491" height="1427" darkWidth="3491" darkHeight="1427" position="flex-start" showCaption="false" indent="2"}

:::Paragraph{indent="1"}
A confirmation page indicates that changes to security groups were successfully applied.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3WOOyeVlx_ErVbAsefmQ-_securitygroup-ec2-us-east-1-2026-07-22-21-21-46.png" size="80" isUploading="false" width="3735" height="1398" darkWidth="3735" darkHeight="1398" position="flex-start" showCaption="false" indent="1"}

5. Enter the IP or DNS in a browser to [Access Litmus Edge Manager](docId\:w3uHZQ4tSrH7OLjhuLt0A). Litmus Edge Manager launches.

[title] Add a Company
[path] Litmus Edge Manager User UI/Product Features/Company List/

Before you can add Litmus Edge edge devices to Litmus Edge Manager, you must set up the hierarchy under which the Litmus Edge edge devices will exist.

You can create as many companies as needed to accomplish the desired hierarchy and separation.

:::hint{type="warning"}
**Important**:

- You must be an administrator to add a new company. See [Assign Admin Privileges ](docId\:xFOg2xRprqINGA9cLsZB-) for more details.
- Company names are alphanumeric, with only the underscore (\_), plus (+), percentage (%), and period (.) special characters permitted.&#x20;
- Company names must be unique.
- If a company was previously deleted, a new company with the deleted name cannot be created.
- By default, a newly created company is only accessible to the owner who created the company. To make a company accessible to other users, you can add a user to a company as a team member. See [Company Settings](docId\:XwUuYveHjgIbb0bYwlwSt) for more information.
:::

If no companies exist, you are presented with an opportunity to add a company when you log in. If you are working in a company or project, you can click the **Company List** to select or add a new company.

**To add a new company**:

1. Log in to Litmus Edge Manager.
2. From the *Companies* list, click **Add** or **Add new Companies**. (If viewing an existing company, select **Company List** first.)
   The *Create a company* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OjTbZCm9MVWKbWXCrp65S_2023-08-0112-23-50.png "Add Company icon ")
3. From the *Create a company* dialog box, in the **Name** field, enter the company name.
4. (Optional) In the **Description** field, enter a company description, and then click **Create.**
   The new company appears in the Companies List in alphabetical order.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3qLa4WMkBUErERdj1KMGQ_r2teflyla5lmmmjqjo6h2image.png "Create a Company dialog box")

# Next Steps

- Add a Company Team: [Company Settings](docId\:XwUuYveHjgIbb0bYwlwSt)
- Add a Company Team Member: [Company Settings](docId\:XwUuYveHjgIbb0bYwlwSt)


[title] Configure an Active Directory as a User Federation in Keycloak
[path] QuickStart Guide/

You can connect an Active Directory to Keycloak through LDAP (Lightweight Directory Access Protocol) as a User Federation.&#x20;

# Before You Begin

You will need an Active Directory to connect to. If needed, follow up with your IT department to create one.&#x20;

# Step 1: Configure Standalone Realm

You will first need to configure the default standalone realm with the new LDAP provider that you will create. &#x20;

**To configure the standalone realm:**

1. Log in to Keycloak using the following URL: **https\://\[LEM IP address]/auth/admin**. See [Access Keycloak](docId\:w3uHZQ4tSrH7OLjhuLt0A) to learn more.&#x20;
2. In the top-left corner, open the drop-down list for the master realm and select **standalone**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/y2t0GoD8v_UcbeqpaocPS_standalone.png" size="80" width="1920" height="728" position="center" caption="Standalone realm" showCaption="true"}
3. In the left-navigation menu, selec&#x74;**&#x20;User Federation** and click **Add Ldap providers**.
   The *Add LDAP provider&#x20;*&#x70;age displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KZ5eK-n1Py6rJv7WZd2nh_standalone-ldap-provider.png" size="80" width="1920" height="725" position="center" caption="Add Ldap providers option" showCaption="true"}
4. In the *General options* section, enter a display name for the provider and select **Active  Directory** as the vendor.&#x20;
   After selecting the vendor, the following fields are auto-filled:
   **Username LDAP attribute**
   **RDN LDAP attribute**
   **UUID LDAP attribute**
   **User Object classes**
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Y8iKFAtIGuw4eO3SGPwsr_general-options.png "General options section")
5. In the *Connection and authentication settings* section, you will need to configure the external AD LDAP server. Enter the following URL: **ldap\://\[AD server IP address]**. Configure the other connection parameters as required. Then, click **Test connection&#x20;**&#x74;o confirm the LDAP connection is successful.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7G7bt1vBx3BKlUpTqprTO_connection-url.png "Connection and authentication settings section")
6. Configure the following settings and click **Test authentication** to confirm they are correct.&#x20;
   **Bind type**: Select the type of the authentication method used during the LDAP bind operation: **none&#x20;**(anonymous LDAP authentication) or **simple&#x20;**(bind credential + bind password authentication).
   **Bind DN**: Enter the DN of the LDAP admin.
   **Bind credentials**: Enter the password of the LDAP admin.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OcjrwrIYytFlWF7lYhUal_bind-settings.png "Bind settings")
7. In th&#x65;*&#x20;LDAP searching and updating* section, configure the **User LDAP filter** field with appropriate LDAP filters. This allows you to restrict users and enhance security and performance. &#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UL_V0NfOD6G1dmSf0z5yN_user-ldap-filter.png" size="80" width="1089" height="719" position="center" caption="LDAP searching and updating section" showCaption="true"}
8. Configure the remaining settings as needed and then click **Save**.&#x20;

# Step 2: Confirm Successful Setup

After creating the realm, you can test the connection to confirm the Active Directory is successfully set up.&#x20;

**To confirm the setup is successful:&#x20;**

1. In the left navigation menu, select **Clients**. Then, click the home URL for **account-console**.&#x20;
   The Keycloak account management page opens in a new browser tab.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8_LBPJokMywFqP-1_sd1U_account-console.png "Clients page")
2. Click **Sign out&#x20;**&#x61;nd then click **Sign in**.&#x20;
   The Keycloak sign in page displays.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IEMxkcXu_16fG9ew3im03_sign-out.png "Sign out button")
3. Use the credentials of any user in your Active Directory to sign in.&#x20;
   If the login in successful, the user is now authenticated using an Active Directory.&#x20;
4. Log in again to Keycloak, select **Users**, and confirm that the user you just logged in with is listed.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EHtQUtWUys2NEgEderDPB_users.png "Users section")


[title] User Profile Administration
[path] QuickStart Guide/

You can manage your profile using the Keycloak profile application.

Before you can manage your profile, you must log in to Litmus Edge Manager and access your user profile, which is located in the top-right corner of Litmus Edge Manager.&#x20;

See [Access to Litmus Edge Manager](docId\:w3uHZQ4tSrH7OLjhuLt0A) to access the Keycloak application the first time.

# Access User Profile

**To open your user profile**:

1. Log in to Litmus Edge Manage&#x72;**.**
2. Select a company.
   Th&#x65;*&#x20;Projects* pane appears.
3. From the top of the window, click the **User** icon, and then select **Profile**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TxHpCXyPNi8qDfT4f75oU_username-options.png" size="50" width="316" height="389" caption="User profile drop down menu" position="center" showCaption="true"}

The Keycloak profile application opens.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Re0NcWEoKXoafD-R0cjFF_image.png" size="80" width="901" height="459" position="center" caption="Keycloak landing page" showCaption="true"}

## Manage Personal Info

You can manage your username and email by clicking **Personal info** from the Keycloak landing page.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vCrNT6e7HuEw0AcL19nEm_image.png" size="80" width="901" height="459" position="center" caption="Personal info link" showCaption="true"}

Update your username and email as needed and click **Save**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mOYbEuxUrH1BqB1WHqffP_image.png" size="80" width="922" height="552" position="center" caption="Personal info settings" showCaption="true"}

## Manage Account Password

You can manage the account password needed to log in to Litmus Edge Manager through the Keycloak application.&#x20;

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

- After you change your user account password, you are logged out and you must log in again using your new password.
- If two-factor authentication is enabled, you must provide the six-digit code from the authentication application on your phone during log in.
:::

To manage your account password:&#x20;

1. From the Keycloak landing page, click **Signing in**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bjo78PVyJL5fQQ71aKcas_signing-in-link.png" size="80" width="901" height="459" position="center" caption="Signing in link" showCaption="true"}
2. From the *Signing in* page, click **Update**.&#x20;
   The Litmus Edge Manager login screen displays.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UhkyuutH772qePF4IonwQ_update-password-button.png" size="80" width="1489" height="658" position="center" caption="Update password button" showCaption="true"}
3. Log in to Litmus Edge Manager again with your current credentials.&#x20;
4. Enter the new password twice and click **Submit**.&#x20;

## Set up Keycloak Two-Factor Authentication

You have the option of setting up two-factor authentication through Keycloak. For additional security, you can configure two-factor authentication (TFA) with a free authenticator application like Google Authentication.

Two-factor authentication exceeds standard security practices by requiring more than a username and password for login access. The authenticator software generates a token that expires within 60 seconds. This token provides the additional layer of authentication required for login.

### Before You Begin

You must modify your user account and optionally change your user account password using the Keycloak profile application.&#x20;

**To configure two-factor authentication:**

1. From the Keycloak landing page, click **Signing in**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tlVgPlLqABoAnoJsm7uOQ_signing-in-link.png" size="80" width="901" height="459" position="center" caption="Signing in link" showCaption="true"}
2. From the Signing in page, click **Set up authenticator application**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XGzV2X-f6JHdPyuG_21yc_set-up-authenticator-application-link.png" size="80" width="1518" height="648" position="center" caption="Set up authentication link" showCaption="true"}
3. Follow the prompts to set up the authenticator application.&#x20;

Once you configure the authenticator, you will see a confirmation message.

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

- Once you set up two-factor authentication, you must use the authenticator application to access your account after entering your username and password.
- After you enter the username and password, the login directs you to a screen to enter the 6-digit one-time code generated by the application on your smart phone.
:::

## View Device Activity

To view device activity for Litmus Edge Manager, click Device activity from the Keycloak landing page.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rzyS7FPaTn2gLw_GsVDfw_image.png" size="80" width="901" height="459" position="center" caption="Device activity link" showCaption="true"}

You have the option of signing out specific signed-in devices or logging out of all devices.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2UJ3tv8-o87EMxERSzgrV_image.png" size="80" width="1396" height="704" position="center" caption="Options to sign out devices" showCaption="true"}

## View Application Permissions

You can view application permissions by click **Applications**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Rd71V4fqYs2c7WWCVWNlR_image.png" size="80" width="901" height="459" position="center" caption="Applications link" showCaption="true"}

Click the arrow for an application to view more information.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rQlLQY_Io0LorF9B19QUu_image.png" size="80" width="1396" height="704" position="center" caption="Application information" showCaption="true"}

# Assign Admin Privileges

You can assign admin privileges to a user in your Litmus Edge Manager through the Keycloak admin console.

:::hint{type="warning"}
**Important:** You must have the Administrator role (*em-admin*) to do the following:

- Add or manage a company from your LEM.&#x20;
- Assign Admin roles to other users in your LEM.
:::

**To assign admin privileges:**

1. To access the Keycloak admin console, use the URL `https://<lem hostname>/auth/admin`. Check the [Access Litmus Edge Manager](docId\:w3uHZQ4tSrH7OLjhuLt0A) for your first-time login details.
2. From the Keycloak Realm drop-down on the left, switch the realm to **standalone**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-6AbqaLxgW0gDoTvzd0BU_image.png" size="50" width="346" height="396" position="center" caption="Keycloak realm side menu" showCaption="true"}
3. Navigate to *Users&#x20;*&#x61;nd select the user to whom you want to grant the privileges.
4. Click the **Role mapping** tab and then click the **Assign role** button.
5. Select *em-admin* on the pop-up and click **Assign**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/as3dxER0BjYT-ubRwEbyQ_image.png "Assign roles dialog box")

Once completed, log out and log back in on the LEM UI with the user who was just granted the admin privileges. You should now see (*Admin*) next to their name on the top right.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JnpgOY5jdwGCsFK6MrLtE_image.png" size="50" width="452" height="75" position="center" caption="Admin role assigned to user" showCaption="true"}


[title] Virtual Machine Installation (HyperV)
[path] QuickStart Guide/Installation and Deployments/

Perform the following steps to deploy Litmus Edge Manager (LEM) on Hyper-V:

- Step 1: Create a Gen 1 Virtual Machine using Hyper-V wizard
- Step 2: Configure the Virtual Machine
- Step 3: Start the LEM Virtual Machine
- Step 4: Log in to Litmus Edge Manager

Before you begin, download the `.vdhx` image from [portal.litmus.io ](https://portal.litmus.io/)for the LEM version that you want to install.

## Step 1: Create Gen 1 Virtual Machine using Hyper-V wizard

Start Hyper-V Manager.

1. Click on the actions pane and select **New** > **Virtual Machine**. The New Virtual Machine Wizard launches.
2. Choose a name and location for the LEM VM. The default location is `C:\Program Data\Microsoft\Windows\Hyper-V\`.
3. In **Specify Generation**, to enable the LEM VM to boot on Hyper-V, select **Generation 2&#x20;**&#x61;s the target VM generation.
4. In **Assign Memory**, specify `16384 MB` as Startup Memory and select **Use** **Dynamic Memory for this virtual machine**.
5. In **Configure Networking**, select **Default Switch**.
6. In **Connect Virtual Hard Disk,** select **Use an existing virtual hard disk** and specify the location for the `.vhdx` image that you download earlier from  [portal.litmus.io](https://portal.litmus.io/). Click **Next** and click **Finish**.

The newly created VM displays in the list of virtual machines.

## Step 2: Configure the Virtual Machine

1. Click on the newly created VM and select settings on the action pane to configure the VM.
2. Make the following changes on the **Settings** dialog:
   - **Boot Order**: Select **IDE** as the default boot option.
   - **Security**: Clear the **Enable Secure Boot** check box.
   - **Memory**: Ensure the RAM is at least `16384 MB`. Ensure that **Dynamic Memory** is selected. The minimum RAM is at least `10240 MB`.
   - **Processors**: Set the number of virtual processors to at least `4`. Leave the remaining fields with the default values.
   - **Network Adapter**: Confirm that **Default Switch** is selected.
3. Click **Apply** and **OK**. The Settings dialog closes.

## Step 3: Start the LEM VM

Click **Connect** on the actions pane. In the dialog, click **Start** to start the LEM VM.

## Step 4: Log in to LEM

See [Access Litmus Edge Manager](docId\:w3uHZQ4tSrH7OLjhuLt0A) for information on logging in to LEM.


[title] Access Litmus Edge Manager
[path] QuickStart Guide/

There are multiple methods to log in to Litmus Edge Manager, along with different aspects of the Litmus Edge Manager to access. The following methods and aspects of Litmus Edge Manager are available to log in to:

- Access the Terminal User Interface (TUI)
- Access the Litmus Edge Manager Admin Console
- Access Keycloak
- Access the Litmus Edge Manager User UI

# Default Login Credentials

Refer to the following default login credentials when logging in the first time to different areas of Litmus Edge Manager (LEM).&#x20;

## Terminal User Interface

- **Login/username**: em\_setup
- **Password**: edgemanager

## LEM Web UI

- **Login/username**: demo
- **Password**: demo

## LEM Admin Console

- **Login/username**: admin
- **Password**: admin

## Keycloak

- **Login/username**: kadmin
- **Password**: kadmin

# Access the Terminal User Interface

After your installation, you can log in to the Terminal User Interface (TUI).

From the TUI, you can change the settings for your installation.

:::hint{type="info"}
**Note**: The TUI logs you out if no activity occurs within a few minutes.
:::

**To log in to the TUI**:

1. From the installation, make sure that your installation is running.
   A terminal window is open when the selected installation is running.
2. Click the browser console and select the terminal window for your installation.
   The Terminal User Interface (TUI) appears.
3. Enter the default credentials. Refer to the *Default Login Credentials* section above.&#x20;
   You can perform actions once you are logged in.

# Access the Admin Console

You must change your password when you log in to the Litmus Edge Manager Admin Console software for the first time.

The initial user name and password is set up to create a local user name and password for the administrator.

## Before You Begin &#x20;

- Make sure that the virtual machine and laptop are connected to the same network, or that network communication through routing is established.
- To access the software, you must use Google Chrome, Mozilla Firefox, or Apple Safari. The browser must be connected to the same network as the software and devices.
- Make sure you have noted the IP address from the virtual machine during installation.

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

- Only Admins may use the Litmus Edge Manager Admin Console.
- Litmus Edge Manager Admin Console uses a self-signed Certificate. This may prompt the browser to display an error message. Follow the browser guidelines for how to bypass a self-signed security error message. See [Browser Access Restrictions](docId\:F_4FUf7kbozItSH_LMXp4) for more information about how to resolve browser access restrictions.
- If the login is performed within two to five minutes after booting the Virtual Machine, you may see an initialization screen. Allow time to complete the startup sequence.
:::

**To log in to the Admin Console**:

1. From a browser, enter the host IP address, colon, and then enter port 8446. For example `https://xxx.xxx.1.222:8446`.
   The *log in* screen appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xz6NorCrleRCUkbaB62oh_image.png" size="70" width="1920" height="957" position="flex-start" caption="Admin Console Login Screen" showCaption="true" indent="2"}

2. Enter the default credentials. Refer to the *Default Login Credentials* section above.&#x20;
3. Click **Login**.
   You are prompted to reset the password to your own password after the first successful login.
   Litmus Edge Manager Admin Console opens in your browser. The dashboard appears by default.

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

- Do not forget your password. For security reasons, there is no password recovery. If you lose the administrator password, you must reinstall.
- You can reset your password at any time.
- You can access the software as long as your browser is on the same network as the software and device, even if you do not have an internet connection.
:::

# Access Keycloak

You must change your password when you log in to the Litmus Edge Manager Keycloak software for the first time.

The initial user name and password is set up to create a local user name and password for the user.

Litmus Edge Manager uses a self-signed certificate. This prompts the browser to display an error message. Follow the browser guidelines for how to bypass a self-signed security error message. See [Browser Access Restrictions](docId\:F_4FUf7kbozItSH_LMXp4) for more information.

## Before You Begin

- To access the software, you must use Google Chrome, Mozilla Firefox, or Apple Safari. The browser must be connected to the same network as the software and devices.
- Make sure your personal computing device is able to establish network communication through routing even if it is not connected to the same network.
- Make sure you have noted the IP address from the VM during installation.

**To log in to Keycloak:**

1. From a browser, enter the host IP address followed by `/auth/admin`. For example: `https://xxx.xxx.2.18/auth/admin`.
   The log in screen appears.
2. Enter the default credentials. Refer to the *Default Login Credentials* section above.&#x20;
3. Click **Login**.
   You are prompted to reset the password to your own password after the first successful log in.
   Litmus Edge Manager Keycloak opens in another browser tab. The *Realm Settings* pane appears by default.

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

- Do not forget your password. For security reasons, there is no password recovery. If you lose the administrator password, you must reinstall.
- You can reset your password at any time.
- You can access the software as long as your browser is on the same network as the software and device, even if you do not have an Internet connection.
:::

# Access Web User UI

You must change your password when you log in to the Litmus Edge Manager software for the first time.

In some cases, you may want to use the terminal user interface (TUI) when you don't have access to a network system. In this case, you can locally connect your keyboard and monitor to the Litmus Edge Manager system and you should be able to access and configure some of the network systems.

The initial user name and password is set up to create a local user name and password for the user.

Litmus Edge Manager uses a self-signed certificate. This prompts the browser to display an error message. Follow the browser guidelines for how to bypass a self-signed security error message. See [Browser Access Restrictions](docId\:F_4FUf7kbozItSH_LMXp4) for more information.

## Before You Begin

- To access the software, you must use Google Chrome, Mozilla Firefox, or Apple Safari. The browser must be connected to the same network as the software and devices.
- Make sure your personal computing device is able to establish network communication through routing even if it is not connected to the same network.
- Make sure you have noted the IP address from the VM during installation.

**To log in to Litmus Edge Manager**:

1. From a browser, enter the host IP address.
   The log in screen appears.
2. Enter the default credentials. Refer to the *Default Login Credentials* section above.&#x20;
3. Click **Login**.
   You are prompted to reset the password to your own password after the first successful log in.
   Litmus Edge Manager opens in your browser. The Company List appears by default.&#x20;
4. Click **Add new company** to create a company, or click an existing company.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pLIqOYX1yJXM8O9La8snv_image.png)


[title] Virtual Machine Installation (ESXi)
[path] QuickStart Guide/Installation and Deployments/

You can install the Litmus Edge Manager on a virtual machine using VMWare ESXi.

The virtual machine that runs Litmus Edge Manager uses the system time of the host environment. To ensure that timestamps of collected data are as universal as possible, we recommend setting the system time of the host environment to the UTC time zone.

The virtual machine that runs Litmus Edge Manager uses the same physical network card as the host environment. To ensure that the Litmus Edge Manager can communicate with data sources (edge devices) and are accessed through the Web UI, we recommend that you consolidate your network to ensure that communication can be established.

A typical Litmus Edge Manager virtual file for ESXi deployment adheres to the following naming convention: `<product-2.2.2>.ova`.&#x20;

# Default Login Credentials

Refer to the following default login credentials when logging in the first time to different areas of Litmus Edge Manager (LEM).&#x20;

## Terminal User Interface

- **Login/username**: em\_setup
- **Password**: edgemanager

## LEM Web UI

- **Login/username**: demo
- **Password**: demo

## LEM Admin Console

- **Login/username**: admin
- **Password**: admin

## Keycloak

- **Login/username**: kadmin
- **Password**: kadmin



# Before You Begin

- Configure the docker bridge network. By default, this installation allocates the subnet `172.17.0.0/16`. Make sure that this does not conflict with your host environment network configuration.

:::hint{type="success"}
**Tip**: To reconfigure the docker bridge network, please refer to this [docker guide](https://docs.docker.com/network/bridge/).
:::

- Set up proxies to access Litmus Edge Manager behind the company firewall.
- Install ESXi v6.7 or higher. See [VMware](https://www.vmware.com/worldwide.html) for more information.
- Obtain a valid `.ova` file. Contact Litmus or download the file from the [Customer Portal](https://portal.litmus.io).

To use ESXi to install Litmus Edge Manager, you will need to do the following.&#x20;

- Step 1: Install the Virtual Machine (ESXi)
- Step 2: Log in to the Litmus Edge Manager (LEM) UI
- Step 3: Verify Trial License and Register a Litmus Edge Manager License

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Install the Virtual Machine (ESXi)

You will first need to install the virtual machine that will run Litmus Edge Manager.

**To install the virtual machine:**

1. Start the **VMWare application&#x20;**&#x61;nd log in.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mr5EzcIW-n51dBQsfQKHR_wigvenbr1kxswbpqliirfvmware-esxi-login.png "EsXI Login Page")
2. From the *VMWare Navigator* pane, click **Virtual Machines** and then click **Create / Register.**
   The *New virtual machine* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RNd9ypGDKyQDkvNNYkRYj_wnhw1dldifuju7jc3pfgyvmware-esxi-create.png "Create/Register VM using EsXi VM Navigator pane")
3. Select **Deploy a virtual machine from an OVF or OVA file.**
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KpF70L8i0Ei1_IwPB_ZQ3_-gyahbwhkuvaufeh3gj4vmware-esxi-deploy.png "Select creation type panel")
4. From the *Select OVF and VMDK files* screen, do the following:
   - Enter a name in the **Enter a name for the virtual machine** field.
   - Click the **Click to select files or drag/drop** box, navigate to an OVA file on your hard drive, and then click **Open**.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gSp1SprZYL_4CrH18PjFX_eao45xux4cwcb606ic72rvmware-esxi-select.png "Select OVF/VDMK file panel")
   - Click **Next.**
5. From the **Select storage** screen, view the information. Select the available datastore and then click **Next**.&#x20;
   In this example, the available datastore is `datastore1`.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/e3w9-VTOQSBrFPNFicKWX_twvhblllqu2c9nulpzlovmware-esxi-storage.png "Select storage panel")
6. From the **Deployment options** screen, review the options, and then click **Next**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MtoFysmkIw7S-Yg0TIOjq_puyci0fo5l747wssaqhshvmware-esxi-options.png "Deployment option panel")
7. From the **Ready to complete&#x20;**&#x73;creen, click **Finish**.
   The *VMWare ESXi browser* includes the new virtual machine.

   This will begin the import of the OVA file from Step 4.2 and then the virtual machine creation. Progress can be viewed in the *Recent Tasks bar*. A successfully imported message will be shown once complete.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/b5PiTFuFBabFRlJsJ_JBs_7yyemdax3-ocsjfkbbvppvmware-esxi-ready.png "Ready to complete panel")
8. Check the **Result** column in the *Recent Tasks* pane for a **Completed successfully** link.
9. Double-click the new virtual machine name.
   The *Navigator* pane displays the selected virtual machine name and the *Browser* pane displays details for the new virtual machine.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x_6Pfw2TolKAtEcM3jvTb_kabgzrszqeofa2hp0y4wyvmware-esxi-details.png "Successfully generated virtual machine ")
10. (Optional) Click **Actions&#xA0;**&#x74;o open a dropdown menu and click **Edit settings**.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Vrj5mno6yZzoc1HU5S02i_umxmoofwwejvvo6sfvstsvmware-esxi-action-edit-settings.png "Actions > Edit Settings option")
11. Configure `CPU`/ `Memory`/ `Hard disk 1`/ `Network Adapter 1` as needed for your particular use case.
    **Important:&#x20;**&#x4C;earn more about the [System and Minimum requirement ](docId\:vcocNbL2DlgAGwsJ3YCdm) for Litmus Edge Manager deployment.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-VIzckAZgnjFX6cO5d-xJ_gmmurbfcwnutldf3tazyxvmware-esxi-action-edit-settings-options-1.png "Customizing LEM memory/hard disk/network adapter")
12. Click **Save** when you have finished configuring your ESXi Virtual Machine.
13. Click the **Terminal&#x20;**&#x77;indow.&#x20;
    The *Terminal* window opens.
14. Copy the IP address.

:::hint{type="success"}
**Tip**:
You can change your settings using the Terminal User interface (TUI).

To log in using the Terminal window, refer to the *Default Login Credentials* section above.&#x20;
:::

# Step 2: Log in to the Litmus Edge Manager (LEM) Web UI

After installing the virtual machine, you can then log in to Litmus Edge Manager with a browser.

**To log in to LEM Web UI:**

1. Open a new incognito browser window and paste the IP address into the **URL** field.
   The application initializes, and then the *Log In* screen appears.
2. Enter the default credentials. Refer to the *Default Login Credentials* section above.&#x20;
3. Change your password to activate your account, and then clic&#x6B;**&#xA0;Submit**.
   The *Litmus Edge Manager* application opens.

:::hint{type="info"}
**Note**: You must change your password after the first log in.
:::

# Step 3: Verify Trial License and Register a Litmus Edge Manager License

After the Litmus Edge Manager is successfully installed, it will automatically be installed with a trial license.

**To verify the trial license**:&#x20;

1. From the Navigation panel, select **Settings**.
   Th&#x65;*&#x20;Settings* pane appears.
2.   From the *Settings* pane, select **Licenses**.
3.   From *Licenses*' *Available Licenses* section, view the license list.
   Initially, the device operates on a trial license.

You will eventually need to register a Litmus Edge Manager license once the trial license expires. To register a Litmus Edge Manager license, see [Site and Node-Locked License Overview for Litmus Edge Manager](docId\:Jvibd0MBSj97ZcPDfhab9).

[title] Remote Access
[path] Litmus Edge Manager User UI/Product Features/

Quite commonly, Litmus Edge Manager resides on network A (open to the internet or moderately protected by a firewall) while edge devices it manages reside on network B (a private network with no internet access). The Remote Access module enables mutual access between Litmus Edge Manager and its edge devices that reside on the different networks.

The Remote Access module **Edge Remote Network**. 

# Access Remote Access UI

**To access the remote access UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   - Click a project from the *Project&#x20;*&#x70;ane.&#x20;
     The *Dashboard* pane appears for the project.
   - Click the **Actions&#x20;**&#x69;con for a project, and then select **View.&#x20;**&#xA;The *Dashboard&#x20;*&#x70;ane appears for the project.
4. From the Navigation panel, select **Remote Access.**
   The *Remote Access* pane appears. The *Remote Network&#x20;*&#x70;ane of Remote Access appears by default.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Kd1wpr_8zZVpPsxUSjvz__2023-07-2109-01-02.png "Remote Access")

# Next Steps

The following tabs are available for **Remote Access**.

- [Edge Remote Network](docId\:VUZktYUgni3Jo9-4Ohs1h)&#x20;




[title] Add a New Project
[path] Litmus Edge Manager User UI/Product Features/Project List/

A project represents an initiative, product, or device-management grouping. A project can represent an industrial plant, for example. Litmus Edge Manager supports multiple projects within a company. Projects can isolate management for specific edge devices, collect data contained within the project, and assign user and team roles for data access. A project dashboard provides edge device status visibility. The combination of a company and a project defines a tenant in a multi-tenancy environment.

Once you configure a project, the project dashboard becomes the centralized overview of the project on a single page. It shows what services are active on the server side along with a statistical visualization of the messages, number of devices, and alerts. Various project settings can be accessed from the navigation panel at the left of the window.

You can add a project from the instructions listed here or from the *Projects* tab of [Company Settings](docId\:XwUuYveHjgIbb0bYwlwSt).

**To add a project from the Project List**:

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Click the **Create a project&#x20;**&#x62;ox.
   The Create a project dialog box appears.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JIKDwLqQjDkGiN4frjTOy_nwcl5-b2sxnae286qdaf-2023-07-1709-42-11-1.png "Add a New Project icon")
4. From the *Create a project* dialog box, enter the following details:
   - **Name**: The project name must be alphanumeric and cannot include spaces or special characters.
   - **Description**: (Optional) Enter a description for the project.
5. Click **Create**.
   The new project appears in the *Projects* pane.

If you click the new project, the Company drop-down list at the top of the window changes to reflect the project. For example, **Company-1/Project1**.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/l7IHjfzwpwFlI3F0_dwL9_2023-07-1710-02-54.png "Company/Project drop-down list")


[title] Incidents
[path] Litmus Edge Manager User UI/Product Features/Alerts/

After selecting a project, the Incidents module appears.

The Incidents module includes a list of edge devices for which there is an incident. Incidents are generated alerts that are based on triggers. System triggers are preloaded, and user triggers are created in [Alerts](docId\:BWq6oBkuTNZgIJBIgQPBE).

Th&#x65;*&#x20;Incidents* pane includes filters for selection of a group list, state, and date range filters for Opened Before, Opened After, Closed Before and Closed After.

You can view an edge device's details by clicking its ID, and view a trigger by clicking on the trigger link associated with an edge device.

# Access Incidents UI

**To access the Incidents UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   -     Click a project from the *Project&#x20;*&#x70;ane. The *Dashboard&#x20;*&#x70;ane appears for the project.
   - Click the **Actions** icon for a project, and then select **View**. The *Dashboard&#x20;*&#x70;ane appears for the project.
4. From the Navigation panel, select **Incidents**.
   The *Incidents* pane appears.

Refer to the following actions you can take on the Litmus Edge Manager User UI's *Incidents* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/T-aBO_yMCDyJddbci8RVO_jlvwqtdxvzc8kedbc4fqimage.png "Incidents")

| **Action**                                                        | **Details**                                                                                                              |
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| \[1] **Select Opened Before Date**                                | Choose a date to filter incidents that were opened before this date.                                                     |
| \[2] **Select Opened After Date**                                 | Choose a date to filter incidents that were opened after this date.                                                      |
| \[3] **Select Closed Before Date**                                | Choose a date to filter incidents that were closed before this date.                                                     |
| \[4] **Select Closed After Date**                                 | Choose a date to filter incidents that were closed after this date.                                                      |
| \[5] **Select Device Group List**                                 | Filter incidents by selecting a specific group of devices.                                                               |
| \[6] **Select State**                                             | - All: Display all incidents
- Open: Display only open incidents.
- Close: Display only closed incidents.                |
| \[7] **Show filter** / **Hide filter**                            | Toggle the visibility of filter options.                                                                                 |
| \[8] **View** [Edge Device Details](docId\:YwQwD4skuVTwNtcAV5ijs) | You cannot access an edge device if the Litmus Edge Manager can no longer reach Litmus Edge.                             |
| \[9] **View Trigger**                                             | Click to manage and view alert triggers associated with incidents. [Manage Alert Triggers](docId\:ssMqiDTPoBpV95sc3lkaC) |
| \[10] **Resolve Incident**                                        | Take action to resolve a selected incident.                                                                              |


[title] Alerts
[path] Litmus Edge Manager User UI/Product Features/

Alerts occur when an event triggers an action. You can add actions and triggers in th&#x65;**&#xA0;Alerts** module that can use events to send notifications.

Review [Alerts Guides](docId\:Z6I7f1kbZSHNsn6FZliSe) to learn more about setting up alert triggers.

The Alerts module includes three sections.&#x20;

# Incidents

The *Incidents* module includes a list of edge devices for which there is an incident. Incidents are generated alerts that are based on triggers. System triggers are preloaded, and user triggers are created in [Alerts](docId\:BWq6oBkuTNZgIJBIgQPBE).

The *Incidents* pane includes filters for selection of a group list, state, and date range filters for Opened Before, Opened After, Closed Before and Closed After.

# Triggers

The Triggers section includes user-defined triggers. A trigger uses an event or a metric to trigger an action, which in turn sends a notification.&#x20;

You can create, view and modify user-defined triggers for the actions listed. An alert occurrence is registered as an incident and is shown in the [Incidents](docId:81uhi0Waj080EuLYceOaf) module. The generated alert appears in the [LEM Dashboard](docId\:NICP2iziO86MTz4iqR5DP) module and the [Events](docId\:Qh9PnCUT-G1k_Lz9p4-m3) tab in *Edge Device Details*. &#x20;

**Alert Options**:

- Email
- Webhook
- Slack
- Pagerduty

# Notification Settings

From the *Notification Settings* section, you can add, modify, and view actions that is used by a trigger. The action sends a notification (Email, Slack, Webhook, Pagerduty) when a trigger is applied.

# Access Alerts UI

**To access the Alerts UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   - Click a project from the *Project&#x20;*&#x70;ane.&#x20;
     The *Dashboard&#x20;*&#x70;ane appears for the project.
   - Click the **Actions** icon for a project, and then select **View**.&#x20;
     The *Dashboard&#x20;*&#x70;ane appears for the project.
   - From the Navigation panel, select **Alerts**.
     The *Alerts* pane appears.

Refer to the following actions you can take on the *Alerts&#x20;*&#x70;ane. The user interface below is for Litmus Edge Manager version 2.22.1 and later.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6HJTc3fIZ5B1qVS39Xy2J_image.png "Alerts")

| **Action**                                                  | **Details**                                                                                       |
| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| \[1] [Incidents](docId\:y_N0TKDBMjriQEBDh-r15)              | View and manage generated incident alerts.                                                        |
| \[2] [Set Up Alert Triggers](docId\:ssMqiDTPoBpV95sc3lkaC)  | Create conditions for triggering notifications.                                                   |
| \[3] [Notification Settings](docId\:XF6jw2A8iuQd4t_rIQin6)  | Manage alert notification preferences and actions.                                                |
| \[4] **Add New Trigger**                                    | Create a new user-defined alert trigger.[Set Up Alert Triggers](docId\:ssMqiDTPoBpV95sc3lkaC)     |
| \[5] **Edit Trigger**                                       | Modify existing user-defined alert triggers.[Set Up Alert Triggers](docId\:ssMqiDTPoBpV95sc3lkaC) |
| \[6] **Remove Trigger**                                     | Delete a specified alert trigger.                                                                 |


[title] Virtual Machine Installation (ESXi-Hypervisor)
[path] QuickStart Guide/Installation and Deployments/

You can install Litmus Edge Manager on a virtual machine using VMWare ESXi - Hypervisor.

The virtual machine that runs Litmus Edge Manager uses the system time of the host environment. To ensure that timestamps of collected data are as universal as possible, we recommend setting the system time of the host environment to the UTC timezone.

A typical Litmus Edge Manager virtual file for ESXi deployment adheres to the following naming convention:  `<product-2.2.2>.ova`.&#x20;

# Default Login Credentials

Refer to the following default login credentials when logging in the first time to different areas of Litmus Edge Manager (LEM).&#x20;

## Terminal User Interface

- **Login/username**: em\_setup
- **Password**: edgemanager

## LEM Web UI

- **Login/username**: demo
- **Password**: demo

## LEM Admin Console

- **Login/username**: admin
- **Password**: admin

## Keycloak

- **Login/username**: kadmin
- **Password**: kadmin

# Before You Begin

- Configure the docker bridge network. By default, this installation allocates the subnet `172.17.0.0/16`. Make sure that this does not conflict with your host environment network configuration.

:::hint{type="success"}
**Tip**: To reconfigure the docker bridge network, please refer to this [docker guide](https://docs.docker.com/network/bridge/).
:::



- Set up proxies to access Litmus Edge Manager behind the company firewall.
- Install ESXi v6.7 or higher. See [VMware](https://www.vmware.com/worldwide.html) for more information.
- Obtain a valid `.ova` file. Contact Litmus or download the file from the [Customer Portal](https://portal.litmus.io).

To use ESXi-Hypervisor to install Litmus Edge Manager, you will need to do the following.&#x20;

- Step 1: Install the Virtual Machine (ESXi-Hypervisor)
- Step 2: Log in to the Litmus Edge Manager (LEM) UI
- Step 3: Verify Trial License and Register a Litmus Edge Manager License

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Install the Virtual Machine (ESXi-Hypervisor)

You will first need to install the virtual machine that will run Litmus Edge Manager.

**To install the virtual machine:**

1. Start the **VMWare application** (for example, VMWare vSphere 6.7 hypervisor).
   The *VMWare ESXi* application appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/u77VTOwyXoyIPGtFhh8F1_qx5i3lfd6awrm6jpnlojvmware-esxi-hypervisor-app.png "VMWare ESXI panel")
2. Click **Create/Register VM.**
   The *New virtual machine&#x20;*&#x77;izard - *select creation type&#x20;*&#x61;ppears.
3. Click **Deploy a virtual machine from OVF or OVA file**, and then click **Next**. The *New virtual machine* wizard - *select OVF and VMDK files* appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ojinlI-GlWE8m58u4BSnc_fs566bpodjx6vnitvvzaivmware-esxi-hypervisor-deploy.png "Select creation type panel")
4. From the right pane, enter a name in the **Name** field.
5. Select the `.ova` file using Browse or drag and drop the file on the **Select File** field, and then&#x20;   click **Next**.
   The *New Virtual Machine&#x20;*&#x77;izard - *Select datastore&#x20;*&#x61;ppears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Zs5e2BMAmiQzNAGN1Uqxf_qpfmvpg9vdizkvrf6-kwkvmware-esxi-hypervisor-select-ova.png "Select OVF and VMDK files panel")
6. From the right pane, select the datastore and then click **Next**. (See Note below.)
   The *New virtual machine* wizard - *Deployment options* appears.

   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/s9_HH4AHysHT2sxIMI-T8_kd3o0r-bq3vf-jdbwx93bvmware-esxi-hypervisor-datastore-1.png "Select storage panel")
7. From the right pane, verify that the *VM Network* is set to your main **Network** port group (for example, VM Network).
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/h47-T7uQx6kfitqYUI7wy_envxsx7gtj89im70ghksevmware-esxi-hypervisor-deployment-options-1.png "Deployment options panel")
8. From the same pane, uncheck **Power on automatically**, and then click **Next**.
   The *New virtual machine* wizard - *Ready to complete* pane appears.
9. Review the settings and then click **Finish**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6fTjHti2zA6HcYhExo5-b_jk0wdfh0jwlfvla91f5vavmware-esxi-hypervisor-finish.png "Ready to complete panel")

:::hint{type="info"}
**Note**: The datastore selected in Step 6 must have at least 80 GB of free capacity.
:::



The virtual machine deploys. The progress of the deployment is indicated at the bottom in the *Recent* tasks display.

Deployment may take several minutes.

The virtual machine appears in the localhost pane.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ISL62wEOcvyogDdBgZKli_vmware-esxi-hypervisor-localhost.png" size="80" width="747" height="481" caption="Finished Virtual Machine with LEM" position="center" showCaption="true"}

The virtual machine starts up and the terminal window displays.

:::hint{type="success"}
**Tip**:
You can change your settings using the Terminal User interface (TUI).

To log in using the Terminal window, refer to the *Default Login Credentials* section above.&#x20;
:::

&#x20;     10\. Note the IP address required for login.

# Step 2: Log in to the Litmus Edge Manager(LEM) Web UI

After installing the virtual machine, you can then log in to Litmus Edge Manager using a browser.

**To log in to LEM Web UI:**

1. Open a new incognito browser window and paste the IP address noted during setup into the **URL** field.&#x20;
   The application initializes, and then the *Log In* screen appears.
2. Enter the default credentials. Refer to the *Default Login Credentials* section above.&#x20;
3. Change your password to activate your account, and then click **Submit**.
   The *Litmus Edge Manager* application opens.

:::hint{type="info"}
**Note**: You must change your password after the first log in.
:::

# Step 3: Verify Trial License and Register a Litmus Edge Manager License

After the Litmus Edge Manager is successfully installed, it will automatically be installed with a trial license.

**To verify the trial license**:&#x20;

1. From the Navigation panel, select **Settings**.
   Th&#x65;*&#x20;Settings* pane appears.
2.   From the *Settings* pane, select **Licenses**.
3.   From *Licenses*' *Available Licenses* section, view the license list.
   Initially, the device operates on a trial license.

You will eventually need to register a Litmus Edge Manager license once the trial license expires. To register a Litmus Edge Manager license, see [Site and Node-Locked License Overview for Litmus Edge Manager](docId\:Jvibd0MBSj97ZcPDfhab9).

[title] Open Edge Devices
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/

You can open a Litmus Edge device from the *Edge Devices* pane.&#x20;

# Before You Begin

- Retrieve login credentials for the edge device you are opening.
- Ensure the edge devices version is v3.11.0 or later, as you can not open edge devices for versions earlier than v3.11.0.

To open the edge device:

- Click the **Open** **UI** icon beside an edge device.
- Select **Open** **UI** from the **Action menu** icon next to an edge device.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EnxzEFL-8GML104zNAtYu_2023-07-1910-01-34.png "Open Litmus Edge UI icon")

Opening an edge device from Litmus Edge Manager to access and manage your connected edge devices. You do not need access to public internet to access your edge devices.

# Restrictions

Access to the edge device is through Litmus Edge Manager. The IP address in the browser is the same as Litmus Edge Manager.


[title] Installation and Deployments
[path] QuickStart Guide/

Litmus provides several ways to install Litmus Edge Manager:

- [Virtual Machine Installation (HyperV)](docId\:dxZoNcSaY6QbU_fMlj3VD)&#x20;
- [Virtual Machine Installation (ESXi)](docId:3u0MhxD2XYsO4hOODNnWD)&#x20;
- [Virtual Machine Installation (ESXi-Hypervisor)](docId:_x0TDyTnSUvHBp7CM1EXU)&#x20;
- [Virtual Machine Installation (VMWare Workstation Player)](docId\:gJIS2HmE_xAy5krtgR1p3)&#x20;
- [Deployment of Litmus Edge Manager on Azure](docId:6Q4G6Hj7U6w60HoKWkVKv)
- [Deployment of Litmus Edge Manager from Azure SaaS](docId\:qrr0kd3M3BqTscU0jhz2C)&#x20;
- [Deployment of Litmus Edge Manager on AWS](docId\:Xm1u25lvvYnslJdHfyEio)&#x20;
- [Deployment of Litmus Edge Manager on Azure Kubernetes Service (AKS)](docId:8RhqJWbbMvu1pTv95zfjj)&#x20;
- [Deployment of Litmus Edge Manager on Google Kubernetes Engine (GKE)](docId\:a1gK7SGcEZed0jsb2iuxN)&#x20;
- [Software Update](docId\:hzLOrWMFP3cGa8OvH_njo)&#x20;


[title] Templates
[path] Litmus Edge Manager User UI/Product Features/

A template is a JSON file containing configuration settings for a Litmus Edge device. The **Templates&#x20;**&#x70;age provides a centralized location for creating, organizing, and deploying these configurations.

You can access all templates available for an instance, an open company, or an open project here. You can create a template from an online edge device or upload a template from a file for an edge device after you have selected a company and opened a project. You can upload templates for:

- an **instance** from the Admin Console.
- a **company** from a file.
- a **project** from a file or create one from an edge device.

Templates for edge devices can include devices, analytics, flows, and connectors. You can make selections for these categories when creating a template from an edge device.

:::hint{type="info"}
**Important**: Before you can create a template, you must add one or more online edge devices in **Edge Devices**.
:::

Three scopes are defined for a template:

- **Instance**: All companies for this Litmus Edge Manager
- **Company**: All projects for this company
- **Project**: Only this project

You can select the scope for a template when you upload. For example, if you upload a template from the **Company** > **Templates** pane, the template is accessible to all the projects for that company. If you upload a template from a **Project&#xA0;**&#x54;emplates pane, the template is accessible to only that project.

When you modify a template, you can modify the scope by selecting **Company&#xA0;**&#x6F;r **Project** in the **Edit Template** dialog box.

You can apply, modify, parameterize, download, and remove a template from the Templates pane.

# Access Template UI

You can access company-level templates and project-level templates.&#x20;

**To access company-level templates**:

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. From the *Navigation&#x20;*&#x70;anel, select **Templates**.
   The *Templates&#x20;*&#x70;ane for the company appears.

**To access project-level templates:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. From the *Projects&#x20;*&#x70;ane, click a project tile.&#x20;
   The *Dashboard&#x20;*&#x70;ane appears for the project.
4. From the *Navigation&#x20;*&#x70;anel, select **Templates**.
   The *Templates&#x20;*&#x70;ane for the project appears.

## Litmus Edge Manager

Refer to the following actions you can take on the Litmus Edge Manager User UI's *Templates* pane. The user interface below is for Litmus Edge Manager version 2.11.0 and later.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WJb-uw_zUozliRx6INHKa_lidbfeimg2onr4btewsmnimage.png "Templates \[Company View]")

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/d9pQ2rPF2w_4HK9adiknN_edft4iukcpye7alfrvo2bimage.png "Templates \[Project View]")

| **Action**                                                    | **Details**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Show filter**                                          | Search by *Description.*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| \[2] **Create Template from device**                          | At least one Edge device must be connected to use this option.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| \[3] **Load template from file**                              | Upload a Simple Template (`.json`) or Parameterized Template (`.zip`)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| \[4] [Parameterize a Template](docId\:ol2rl-sxp_6Y4ISmGzhXA)  | See link for details.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| \[5] **Actions**                                              | - **(Project-View only) Apply Template: &#x20;**
  - [Apply a Parameterized Template](docId\:nA7fu9L0Lnpo0Ayr7hAOv)&#x20;
  - [Apply a Parameterized Template During Activation](docId\:EPSYMUsWZ9uHWcMWMnyaX)&#x20;
- **Edit Template:&#x20;**&#x54;emplate scope cannot be changed from *Company* to *Project.*
- [Parameterize a Template](docId\:ol2rl-sxp_6Y4ISmGzhXA)&#x20;
- **Download Template:&#x20;**&#x41; `.json` file. When downloaded from the Company List Templates UI, the file contains information on all projects for the company. When downloaded from the Project List Templates UI, the file contains information on only the project.&#x20;
- **Delete:&#x20;**&#x44;eleting a template makes it unavailable for users to apply. Download the template prior to removal so it can be re-uploaded if necessary. |
| \[6] **View Template Statistics**                             |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

# Next Steps

- [Parameterize a Template](docId\:ol2rl-sxp_6Y4ISmGzhXA)
- [Apply a Parameterized Template](docId\:nA7fu9L0Lnpo0Ayr7hAOv)
- How-to guide: [Apply a Parameterized Template During Activation](docId\:EPSYMUsWZ9uHWcMWMnyaX)


[title] Add New Software Update Tasks
[path] Litmus Edge Manager User UI/Product Features/Software Update/

Software update tasks are used to upgrade your edge device software.

# Before You Begin

Ensure the following:

- There is an update file available for the update tasks. See [Edge Software Update](docId:3IevluZfOdrXAqOOpVT1n) to learn more.&#x20;
- The Edge devices that will be upgraded are online.
- An Edge device is currently not already undergoing an existing software task (update). You cannot create a new software task for an Edge device that is already undergoing an existing software task.

# Running Task Properties

- Up to 10 running tasks can run in parallel. Additional ones will be queued until a running task completes.
- The progress bar will automatically fill up from 0 to 100% without a need to refresh the page. It will automatically by itself refresh every 5 seconds.&#x20;
- A *Software Update Task&#x20;*&#x77;ill usually take a few minutes to complete.
- A *Software Update Task&#x20;*&#x77;ill automatically timeout after 1 hour.&#x20;
- A *Software Update Task&#x20;*&#x74;hat disconnects before it finishes could still upgrade and reboot a Litmus Edge instance. This will happen if the Litmus Edge successfully receives the `.upd` file before the disconnect.
- Once the task completes, it will be transferred from the *Current (#)* tab to th&#x65;*&#xA0;History (#)&#xA0;*&#x74;ab. If the task was successful, the update status will be set to `COMPLETED`. If instead the task failed, the update status will be set to `ERROR`.

The workflow and user interface for adding a software task differs slightly based on your version of Litmus Edge Manager. Refer to the correct workflow when reviewing the steps.&#x20;

# Litmus Edge Manager Version 2.15.0 and Later

## Add New Task

You can add a software update task from th&#x65;***&#xA0;**&#x53;oftware***&#xA0;**&#x70;ane by clicking **a new** or the **Add new task&#x20;**&#x69;con.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/767gbEPOTB6vLwiPCrfw2_image.png "Add new task icon")

## Step 1: Select Software

You can select the software that will be applied to recipient Edge Devices.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/g0gUUQshP4AJn-D4JX7BY_image.png "Software Update Task UI Step 1: Select Software")

To select software, select at least one software package to add and click **Next**.

## Step 2: Select Target Device(s)

After selecting software that will be applied to Edge Devices, select the devices that will receive the software. There is no limit on the number of edge devices that can be updated.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/01SJkmPUVeGT0ygUTzE5C_image.png "Software Update Task UI Step 3: Select Target Device(s)")

To target devices to apply, select one or more edge devices from the edge device list and click **Next**.

## Step 3a: Schedule Software Task

You have several options to schedule the software task.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdyKCoM1Wr1j2Kh_cfTtW_image.png "Software Update Task UI Step 3: Schedule Software Job")

To schedule the software task, select one of the following options and click **Next**.&#x20;

- **Run now**: Download and install the update immediately.&#x20;
- **Download only**: Download the upgrade file to devices (only for Edge Devices on Litmus Edge version 3.5.0 and later).&#x20;
- **Run on a schedule**: Download immediately (only for Edge Devices on Litmus Edge version 3.5.0 and later) and install the update at a specified time.&#x20;

## Step 3b: Configure Software Task Schedule

If you select **Run on schedule**, select the date and time to run the software task.&#x20;

You have the option to select the checkbox for **Allow delayed upgrade if the download takes long**.&#x20;

- If you don't select this option and the downloading of the file is not completed by the scheduled upgrade time, the upgrade will not occur.&#x20;
- If you select this option and the the downloading of the file is not completed by the scheduled upgrade time, the upgrade will still occur on a delayed schedule.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/S3q6dvpVmQ57q1cP4XeUR_image.png "Run on a schedule options")

## Step 4: Review Software Task Details

Review and confirm the details of the software task. Then, click **Finish&#x20;**&#x74;o create the task.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2jwASeH1_z12XTQbotG4Z_image.png "Software Update Task UI Step 4: Review")

The software task appears in the list of *Software Update Tasks*. Click the Task ID to view more information on the task.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yGjuJdCf5g_ilYjQE_am6_image.png "List of Software Update Tasks")

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rfGRD7CnIFnYo5nKdhBED_image.png "Software Update Task Details")

If you need to cancel tasks, see [Cancel Software Update Tasks](docId\:iL8M8kElSD-uOcYbUZSc9).&#x20;

# Litmus Edge Manager 2.14.0 and Earlier

## Add New Job

You can add a software update job from th&#x65;***&#xA0;**&#x53;oftware***&#xA0;**&#x70;ane by clicking **a new** or the **Add new Job** icon.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XS5lkvbW0sRuwgSDNfwmw_image.png "Add new job icon")

## Step 1: Select Software

You can select the software that will be applied to recipient Edge Devices.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XH9FTahTEzbXPnBT0KEfD_image.png "Software Update Job UI Step 1: Select Software")

**To select software**:

1. From the **Software&#xA0;**&#x74;ab, select at least one software package to add.
2. Click **Next**.

## Step 2: Select Target Device(s)

After selecting software that will be applied to Edge Devices, select the devices that will receive the software. There is no limit on the number of edge devices that can be updated.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9NKEJ14qhkt7S_AeoIbd9_image.png "Software Update Job UI Step 2: Select Target Device(s)")

**To target devices to apply**:

1. From the **Targets** tab, select one or more edge devices from the edge device list.
2. Click **Next**.

## Step 3: Run Deploy

Before deploying software to a list of Edge Devices, you can review job details before it gets executed.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZZN_8_jydbSXsRjhYyp4j_image.png" size="80" width="1304" height="892" position="center" caption="Software Update Job UI Step 3: Run Deploy" showCaption="true"}

**To deploy jobs to edge devices**:

1. From the *Targets&#xA0;*&#x74;ab, you have the option to select the **Start job immediately** check box.&#x20;
2. Click **Save**.&#x20;

The software job appears in th&#x65;*&#x20;Software Update Jobs* pane **Current (#)** tab.&#x20;

[title] Bulk Deploy Licenses
[path] Litmus Edge Manager User UI/Product Features/Licenses/

:::hint{type="info"}
**Note**: This feature is available for Litmus Edge Manager version 2.18.0 and later.&#x20;
:::

The *Licenses&#x20;*&#x70;ane allows the deployment of licenses to multiple edge devices at once.

# Before You Begin

Ensure you do the following:

- Have at least one or more License SKUs.
- Add an activated edge device to Litmus Edge Manager without a license key. See [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) for more details.

**To add a license key in bulk to your edge device(s):**

1. Select the checkbox next to the edge device(s) you wish to add the license key to.
2. Click **Bulk Deploy Licenses** button from the *Licenses Summary* pane.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9xWVtmr0H2UxF28PW64tC_image.png" size="100" isUploading="false" width="1919" height="542" showCaption="false" indent="2"}

3. From the *License Deploy Master* dialog box, select the checkbox for th&#x65;*&#x20;License SKU* and click **NEXT**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/d6-1a2fnQIryMO-hDdjn2_image.png" size="100" width="1533" height="513" position="center" caption="License Deploy Master dialog box" showCaption="true" indent="2"}

4. Review the *Summary* of the target devices and the selected SKU, and click **DEPLOY LICENSE**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/S-ixVUl5f84hzwzzB-wdV_image.png" size="100" width="1533" height="520" position="center" caption="Summary tab for License Deploy Master dialog box" showCaption="true" indent="2"}

5. Once the *Status&#x20;*&#x68;as changed to *Success*, click **FINISH**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mj5ad6fk8mtlah79xll1F_image.png" size="100" width="1532" height="522" position="center" caption="Result tab for License Deploy Master dialog box" showCaption="true" indent="2"}


[title] Step 4: Approve the Activation Request in Litmus Edge Manager
[path] QuickStart Guide/Activate an Edge Device/

After creating an activation request in Litmus Edge, you will switch back to Litmus Edge Manager to approve the activation configuration request.

**To approve the activation configuration request you have created:**

1. From the Litmus Edge Manager navigation panel, select **Activation** > **Requests**.   &#x20;
   The *Activation Request List* pane appears.
2. Click the **Action** **Menu** icon next to the activation request you have created from earlier, and then select **Approve**.&#x20;
   For more information, see the *Approve&#x20;*&#x6F;ption of [Manage Device Requests](docId\:W-VtSenKG2hitLO-ZXqfR)&#x20;
   The status for the activation changes.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/oAsUkUj8jBUNaTxHSbdjs_v0kiasnaoef5rjod5iaziimage.png "Approve the activation request in Litmus Edge Manager")

| **Action**                     | **Details**                                                                                                                                                                                                                       |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Left green checkmark**  | Displays the status of the activation stage. A checkmark indicates that the activation sequence has been received, approved and confirmed.                                                                                        |
| \[2] **Right green checkmark** | Displays the status of the provision stage, and indicates that the offline license has been generated, provisioned to the Litmus Edge instance, and the default password policy is also provisioned to the Litmus Edge instance.  |
| \[3] **Action**                | You can approve, reject, retry or delete the activation request from the action menu.<br />See [Activation Request Stage](docId\:CWnZE5vybRzWGrmEC1O_i) for more details.                                                         |

# Next Step

You can now [Verify Edge Device Activation in Litmus Edge.](docId:_cVCsqXnnzC2XbFcT6bSa)


[title] Raw
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

Use the *Raw* tab to monitor any messages that are being sent from the selected edge device.

You can filter results by start date and end date, manually refresh the results, and enable auto refresh.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CdItiBsCCH-nQ-J_8Pp5t_1rftkfbtdpibnj4nhndavimage.png "Raw tab")


[title] Step 7: Verify Edge Device Activation in Litmus Edge Manager
[path] QuickStart Guide/Activate an Edge Device/

In Litmus Edge Manager, view the status for MQTT. See the *Data and Control Status&#x20;*&#x73;ection in [Edge Devices](docId\:qD0fTbyerVQJxOM5IPApt) for more information. The statuses should be green.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nx77qZHR3mFaCLLbP_rF-_2023-07-1714-44-55.png "MQTT statuses")

If the *Control* status is orange, the Litmus Edge device might not be online or it may not be reachable by the Litmus Edge Manager. If the *Data* status is orange, the **Default Generic MQTT SSL connector** on the Litmus Edge might not have been successfully enabled.

# Next Steps

After verifying in Litmus Edge Manager that the Edge Device has been activated, you are ready to use Litmus Edge and Litmus Edge Manager in tandem to manage your data.&#x20;

If you would like to learn more details about the configuration options and capabilities of Litmus Edge Manager, view the [Litmus Edge Manager User UI](docId:-sKldTrdGJ49xNOa3yycd) page.

If you would like to configure the Litmus Edge Manager client itself, head to the [Litmus Edge Manager Admin Console](docId\:run1qmlV1AuZ9aleqIakZ).

[title] Apps
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

The *Apps* tab allows you to view a list of applications deployed for the selected edge device. You can start, stop, and remove an application and get real-time application logs for the edge device.

:::hint{type="info"}
**Note**: The Litmus Edge Manager must have a marketplace license to use the features in this tab. This requirement and tab visibility was made since Litmus Edge Manager version 2.8.0.&#x20;
:::

Refer to the following actions you can take on the Litmus Edge Manager User UI's *Edge Devices Details Apps* tab.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/oEj8JWj9VfYBYAPx9aAn9_obped74uajciy6wyrpp5dimage.png "Apps tab")

| **Action**                         | **Details**                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Show filter / Hide filter** | Search by *Name* and *Parameters*                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| \[2] **Action menu**               | - **Start**
- **Stop**
- **Delete:&#x20;**&#x54;he application does not need to be stopped first to delete it. This delete operation only terminate the Docker container, but it does not remove the Docker image from the Litmus Edge instance. Ensure, if needed, you also manually delete the Docker image from the Litmus Edge instance as it does occupy significant disk space. See *Delete image* of [Manage Images](docId\:HkWdmj1Xcl6ETf1_A4Xkd) for details.
- **Logs** |


[title] Manage Security Updates
[path] QuickStart Guide/Installation and Deployments/

You can configure Litmus Edge Manager to automatically install security updates.&#x20;

There are several options for enabling automatic updates:

- Use Update Manager
- Use the unattended-upgrades package
- Write your own cron script that calls aptitude
- Use cron-apt

See [Automatic Security Updates](https://help.ubuntu.com/community/AutomaticSecurityUpdates) from Ubuntu documentation to learn more about setting up these different options.&#x20;

[title] ZeroTouch
[path] Litmus Edge Manager User UI/Product Features/Activation/

Zerotouch provisioning allows you to automatically install Edge instance configurations, applications, and Docker files onto multiple devices.&#x20;

&#x20;The Zerotouch tab allows you to:

- Set up a static IP with subnet mask, gateway, and DNS settings.
- Add Docker containers to the Zerotouch TAR.
- Display an MD5 checksum to verify the file.
- Create and download Zerotouch TAR files.
- Log actions like file creation and timestamps.

:::hint{type="info"}
**Important Notes:&#x20;**

- Large files may take longer to generate.
- FAT32 USB drives don’t support files over **4GB**—use **NTFS** or **EXT4** instead.
- Once created, Zerotouch configurations cannot be edited.
- Zerotouch files are not included in backups but remain available after system updates.
:::

# Access Zerotouch UI

**To access the Zerotouch UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. From the Navigation panel, select **Activation&#x20;**>**&#x20;Zerotouch**.
   *Zerotouch* tab appears.

Refer to the following actions you can take on the  Litmus Edge Manager User UI's *Zerotouch&#x20;*&#x74;ab.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_At9tqgiY_zoAAp1YUmIj_image.png)

| **Action**               | **Details**                                                                                                                                           |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Name**            | Custom label for the configuration.                                                                                                                   |
| \[2] **Activation Code** | The activation code (if used).                                                                                                                        |
| \[3] **Static IP**       | Shows if a static IP is set (Yes/No).<br />* Toggle to Enable/Disable.
* Fields for **Static IP Address**, **Subnet Mask**, **Gateway**, and **DNS**. |
| \[4] **Containers**      | Number of Docker containers included.<br />* Toggle to Enable/Disable.
* Table to list containers with **Name** and **Run Command** fields.           |
| \[5] **Checksum**        | MD5 checksum of the generated TAR file (if available).                                                                                                |
| \[6] **Actions**         | Buttons to **Edit**, **Generate**, or **Remove** a configuration.                                                                                     |

# Next Steps

- [Adding ZeroTouch Configuration](docId\:a_ASW0ZnqZrswxDsdKtHf)&#x20;


[title] Info
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

Once an edge device begins sending data to Litmus Edge Manager, it becomes available in the *Info* tab.

:::hint{type="info"}
**Note**: Some manufacturers do not expose device details to the software. Therefore this information may not be available.
:::

You can create device groups which can be used to create group alerts, firmware upgrades, and group jobs. Similar devices can be grouped together, and device group can be mapped to a trigger or multiple jobs.

:::hint{type="success"}
**Tip**:

If data does not display:

- Check the device status from the *Edge Devices* pane to see if data is connected. See [Step 7: Verify Edge Device Activation in Litmus Edge Manager](docId\:KC9sqRSng2KSINWL1PfPi).
- Check the device information in the edge device. See [Info](docId\:YIwyPagdCmgYF_px_-wgA).&#x20;
:::

Refer to the following actions you can take on the Litmus Edge Manager User UI's *Edge Devices Details Info* tab.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/M7HBW2lOsZ6ZWuYZ4mbgX_c8nvdkvzpu1kocrnd6wc5image.png "Info tab ")

| **Action**                                                                 | **Details**                                    |
| -------------------------------------------------------------------------- | ---------------------------------------------- |
| \[1] **Modify Description**                                                | Update the description of the edge device.     |
| \[2] **Add edge device groups /&#x20;**&#x20;**Remove edge device groups** | Assign or detach device groups from edges.     |
| \[3] **Change edge device image**                                          | Update the image associated with the device.   |
| \[4] **Remove edge device image**                                          | Delete the current image from the device.      |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/blCaVD6HWSSlEYLUG5BtZ_image.png" size="80" width="1920" height="852" position="flex-start" caption="Add edge device group" darkWidth="1920" darkHeight="852" showCaption="true"}

For an Edge Device's *info* pane's *Add edge device group*, existing group names will appear. You can apply these existing group names to additional devices.  &#x20;


[title] Parameterize a Template
[path] Litmus Edge Manager User UI/Product Features/Templates/

Templates allow you to preconfigure an edge device's associated devices. Parameterizing a template allows you to specify variables for selected attributes within the template, which can then be applied to specific devices.

- You can convert an existing template to a parameterized template.
- You can add variables and parameterize a template from the *Templates&#x20;*&#x70;ane.
- You can preview the template and download the JSON to verify the variables on the template, and then upload the template.

Review the [Apply a Parameterized Template During Activation](docId\:EPSYMUsWZ9uHWcMWMnyaX) how-to guide.&#x20;

# Before You Begin

- Upload at least one template. See *Load template from file&#x20;*&#x69;n [Templates](docId\:Me1x3I4rPT_IIgNPCY1GA).&#x20;
- Determine which attributes in the selected template need a variable.

# Additional Details

You can do the following:

- Apply the parameterized template to an existing device.
- Apply the parameterized template to an existing device during activation.
- Parameterize **Company**, **Project**,**&#xA0;**&#x6F;r **Instance&#xA0;**&#x74;emplates.
- Select any attribute in a template to create a variable.

# Access Parameter Template UI

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. From the Navigation panel, select **Templates**.
4. Click the **Actions** icon next to a template which has not been parameterized and select **Parameterize Template**.
   The *Template Details* pane opens, displaying the *Variables&#x20;*&#x61;nd *Parameterized Template* panels.

Refer to the following actions you can take on the *Templates Details* pane.

:::hint{type="info"}
**Note**: When parameterizing the country variable, refer to the list of [country codes for ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) when configuring the **Country\_Code**.&#x20;
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xxo5kJ_wafKecfDIf3IT3_2023-08-0811-46-56.png "Templates: Templates Details")

| **Action**                               | **Details**                                                |
| ---------------------------------------- | ---------------------------------------------------------- |
| \[1] **Show filter**                     | Search by *Name*, and *Description*                        |
| \[2] **Add variable**                    | Add a new variable to the selected template.               |
| \[3] **Action menu**                     | - *Edit*
- *Delete*                                        |
| \[4] **Edit variable**                   | Modify an existing variable within the template.           |
| \[5] **Expand Template Variables&#x20;** | Expand the section to view all template variables.         |
| \[7] **Preview Template**                | Preview the template to review its structure and contents. |
| \[8] **Delete parameterized template**   | Delete the selected parameterized template.                |

# More On Edit variable

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CrKyXloFcqtmGzGSDWT-X_image.png" size="80" width="401" height="360" caption="Edit variable 1/2" position="center" showCaption="true"}

| **Action**                | **Details**                                                    |
| ------------------------- | -------------------------------------------------------------- |
| \[12] **Select Variable** | Select a variable to edit from the list of existing variables. |
| \[13] **Done**            | Confirm the editing process is complete.                       |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TT-iuGxJp_d1qXczBxsZk_image.png" size="80" width="432" height="363" caption="Edit variable 2/2" position="center" showCaption="true"}

| **Action**                            | **Details**                                                  |
| ------------------------------------- | ------------------------------------------------------------ |
| \[14] **Revert to the default value** | Revert the selected variable to its default value if needed. |


[title] Getting Started
[path] QuickStart Guide/

Before you can begin, you must install Litmus Edge Manager using the VMWare ESXi application, and then launch the new virtual machine to open the Terminal User Interface (TUI). This allows you to view the IP address needed to open the virtual machine from a web browser.

There are three ways to install Litmus Edge Manager:

- [Virtual Machine Installation (ESXi)](docId:3u0MhxD2XYsO4hOODNnWD)&#x20;
- [Virtual Machine Installation (ESXi-Hypervisor)](docId:_x0TDyTnSUvHBp7CM1EXU)&#x20;
- [Virtual Machine Installation (VMWare Workstation Player)](docId\:gJIS2HmE_xAy5krtgR1p3)&#x20;

You can also deploy from the Azure Marketplace or manually from Azure:

- [Manual Deployment from the Azure Marketplace](docId\:Hodycn_1Qro4qF-uZOuvH)&#x20;
- [Deployment Using an Azure Template](docId\:SNAMY2lsE5bNA1QBN4pA_)&#x20;

After your installation, you can log in to the Litmus Edge Manager Admin Console. See [Access to Litmus Edge Manager](docId\:w3uHZQ4tSrH7OLjhuLt0A) for more information.

The Litmus Edge Manager Admin Console can be accessed at the host IP address using port `8446`. For example, `https://x.x.x.x:8446`.

The installation gives a one-time password for your first login. You must reset this password. See [Access to Litmus Edge Manager](docId\:w3uHZQ4tSrH7OLjhuLt0A)  for more information.

:::hint{type="success"}
**Tip**:
You can change your settings using the Terminal User interface (TUI).&#x20;To log in using the Terminal window, use the following credentials:
username: `em_setup`
password: `edgemanager`
:::


[title] Project List
[path] Litmus Edge Manager User UI/Product Features/

You can visualize and organize where an edge device fits into the overall architecture. The second level of the Hierarchy is called **Projects**.

Projects are used to administer most of the setup of the Litmus environment. Options can be a division, country, region, plant, project or team. These names are based on how granular the setup has to be or how you understand your own hierarchy.

The *Projects&#x20;*&#x70;ane displays all the projects for the selected company in tile or list format. Selecting a listed project from the *Projects&#x20;*&#x70;ane opens multiple sections in the navigation where you can configure and perform tasks for the selected project.

:::hint{type="info"}
**Note:** A warning banner displays when available disk space falls below a specified thresold. In this case, click **Details** to view further information and to access a link to Litmus Edge Manager Admin Console. &#x20;
:::

When you are working in a module for a project, Litmus Edge Manager remembers after you log out so the last module in the project you worked on appears when you log in.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/b-SYkNBJMD3uv_UbYJeHD_2023-08-0114-59-55.png "Project List")

# Next Steps

The following operations are available for **Project List**:

- [Add a New Project](docId\:pfNzvF07t2woIpl4azl5_)&#x20;
- [Manage a Project](docId\:fDGdpwQ1NeccDqw3TQKrV)&#x20;
- [Manage Multiple Teams and Members](docId\:wuZwvesh2sg-Er9FjK6OP)


[title] MQTT
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

The *MQTT* tab displays the Data Topic for an edge device to which you can subscribe. See [About MQTT](docId\:gj_KczBg9VvhQcZIGCmW9) for more info about MQTT.

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

- The `Connected` state in the *MQTT* tab indicates that the browser is connected to the Litmus Edge Manager MQTT server with your edge device's configuration settings (username, password, MQTT host), and that you have the correct edge device settings configured.
- The connection status of the physical device can be found in the Devices list.
:::

Refer to the following actions you can take on the Litmus Edge Manager User UI's *Edge Devices Details MQTT* tab.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MVS6lPiKqFl1t2VQuqf2r_2023-07-2010-58-06.png "MQTT tab")

| **Action**                               | **Details**                                                                                                                                   |
| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Modify Data Topic Name**          | Change the name of the data topic for the edge device.                                                                                        |
| \[2] **Copy Data Topic Name**            | Duplicate the current data topic name to the clipboard.                                                                                       |
| \[3] **Select Quality of service (QoS)** | Choose the level of service for message delivery: 0, 1, or 2.                                                                                 |
| \[4] **Subscribe**/**Unsubscribe**       | Start or stop receiving messages from the selected data topic; note that messages will be unavailable if you navigate away from the MQTT tab. |


[title] Step 1: Verify Litmus Edge- Litmus Edge Manager Compatibility
[path] QuickStart Guide/Activate an Edge Device/

Refer to the following table to review which versions of Litmus Edge and Litmus Edge Manager are compatible.&#x20;

| **Litmus Edge version (right)**         | **3.0.x** | **3.1.x** | **3.2.x** | **3.3.x** | **3.5.x** | **3.11.x** | **3.16.x** | **4.0.x** |
| --------------------------------------- | --------- | --------- | --------- | --------- | --------- | ---------- | ---------- | --------- |
| **Litmus Edge Manager version (below)** |           |           |           |           |           |            |            |           |
| **2.x**                                 | Yes       | Yes       | Yes       | Yes       | Yes       | Yes        | Yes        | Yes       |

If your Litmus Edge and Litmus Edge Manager versions are compatible, you can proceed with [Step 2: Create an Activation Configuration in Litmus Edge Manager](docId\:vVZ99_j_TGxX6b9-Y9f8L).

[title] Software Update
[path] QuickStart Guide/Installation and Deployments/

:::hint{type="warning"}
**Important**: For a seamless upgrade experience, you must follow the correct upgrade path. Skipping a significant LTS version may cause issues with the upgrade process.

If you are currently on any version from 2.16.0 to 2.16.3, you must first upgrade to version 2.16.4. Then you can upgrade directly to the latest LTS version.
:::

The *Upgrade&#x20;*&#x6D;odule allows you to upgrade software versions of Litmus Edge Manager. The Upgrade Components pane provides you with all the tools needed to manage updates and upgrades for the Litmus Edge Manager.

# Upgrade Path

When upgrading Litmus Edge Manager, you **must&#x20;**&#x69;nclude 2.16.4 in your upgrade path.&#x20;

**Follow this upgrade path:**

Earlier Litmus Edge Manager version > 2.16.4 > Latest Litmus Edge Manager version.&#x20;

***

There are three sections on the *Upgrade&#x20;*&#x70;age.&#x20;

- **Current Version:** View the current Litmus Edge Manager version, the date and time it was applied, and the modules available for the version.
- **Software Update Files:&#x20;**&#x56;iew uploaded Litmus Edge Manager versions, the date and time they were uploaded, the version size and encryption for the uploaded version. You can delete an uploaded version or use it to upgrade your current version.
- **Upload**: Upload a `.upd` file.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/u9DuD58tg05MThkQCZWax_image.png)

## Current Version&#x20;

You can view the details for the current version of Litmus Edge Manager.&#x20;

In this section you can view the following:&#x20;

- The version, date, and time of installation.
- Components and build.

## Software Update Files

:::hint{type="info"}
**Note**: For Litmus Edge Manager version 2.15.0 and earlier, the section is named *New versions*.&#x20;
:::

:::hint{type="warning"}
**Important**: For a seamless upgrade experience, you must follow the correct upgrade path. Skipping a significant LTS version may cause issues with the upgrade process.

If you are currently on any version from 2.16.0 to 2.16.3, you must first upgrade to version 2.16.4. Then you can upgrade directly to the latest LTS version.
:::

You can upload a new update file or view the details for available update files, including the file's SHA256 checksum(SHA256).&#x20;

You can view:

- The version, date, and time of installation.
- Components and build.

Furthermore, you can:

- Delete the update file.
  - You will be prompted with &#x61;*&#x20;Removal Confirmation&#x20;*&#x64;ialog box before deleting the upgrade file.
- Upgrade to file's version.
  - If you are not on Litmus Edge Manager version 2.16.4, you must upgrade to the latest LTS version or above before making any further upgrades.
  - If you choose to upgrade to Litmus Edge Manager 2.10.2 or earlier, the [Marketplace: Catalogs and Applications](docId\:gqoGt_Szm8rz9UdPhl2NL) feature may not operate properly. You will need to [upgrade the Docker version to 23.0.5 or later](https://docs.docker.com/engine/install/ubuntu/), followed by a Litmus Edge Manager reboot as a workaround.
  - You cannot downgrade to the same or lower version.
  - If during the upgrade, the connection is lost and regained, the upgrade would have to be restarted. It will not automatically continue once the connection is regained.
  - The **Upgrade Log&#xA0;**&#x62;utton appears after the upgrade process has started.
- Expand the pane to view detailed information about the new version.

## Upload

You can upload an `.upd` file from your local machine or from a URL.




[title] Litmus Edge Manager User UI
[path] /

The Litmus Edge Manager User UI is comprised of the following modules that help you organize your structural hierarchy, provision and access edge devices, deploy applications, and more.

| **Module**                                                                             | **Description**                                                                                                                                                                                                                                   |
| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Company List](docId\:wHnlfM1BSMMeVqSjwgjCW)                                           | Enables you to add or select a company                                                                                                                                                                                                            |
| [Project List](docId\:s4NipWXcYdUU6O0DowYQQ)                                           | Enables you to add or select a project under a company to visualize and organize where an edge device fits into the overall architecture                                                                                                          |
| [LEM Dashboard](docId\:NICP2iziO86MTz4iqR5DP)                                          | Shows statistics about the selected project                                                                                                                                                                                                       |
| [Licenses](docId\:D6OmBvcrDDBIvgqMZPx9h)                                               | Shows the license status for your edge devices                                                                                                                                                                                                    |
| [Sites](docId\:p7mV_xMRxKKbHgjO53FuQ)                                                  | Enables you to add or select a site to visualize and organize locations in the overall architecture                                                                                                                                               |
| [Edge Devices](docId\:pqRVYqspADLvoCpHmC3WA)                                           | Enables you to access edge devices, devices connected to them, and view their activation status                                                                                                                                                   |
| [Activation](docId:0vtl5o6-X3oMmsEDaTaoP)                                              | Allows you to provision a connection between an edge device and Litmus Edge Manager                                                                                                                                                               |
| [Templates](docId\:Me1x3I4rPT_IIgNPCY1GA)                                              | Enables you to create a template from an edge device or upload one from a file                                                                                                                                                                    |
| [Applications](docId\:bdLsrr7TeEHzdsDFQOyYm)                                           | Enables you to access applications from a marketplace catalog and deploy them to selected edge devices                                                                                                                                            |
| [Certificates](docId\:T69a0U8TveV6_zLSe5QwV)                                           | Allows you to manage SSL certificates on edge devices and provides a comprehensive summary of all your certificates, sorting and filtering options, and the ability to upload or issue a certificate.                                             |
| [AI/ML Models](docId:7swv21tXSDTVE8ubZB1oj)                                            | Allows you to manage and bulk deploy machine learning models on edge devices. <br />It also provides a comprehensive summary of all your models, sorting and filtering of the models list, and the ability to upload new machine learning models. |
| [Remote Access](docId:8E9YOSIkqCSaffDQFp7AX)                                           | Shows a list of network nodes available for the selected project in the ZeroTier Network pane<br />Shows a list of connected edge devices in the Edge Remote Network pane                                                                         |
| [Software Update](docId:2vCj2fF1K9z-dd9sCfn0O)                                         | Enables you to add software jobs for edge devices                                                                                                                                                                                                 |
| [Events](docId\:OnS8mKWpVtKc93cOoRAKm)                                                 | Allows you to view events from the System Events pane<br />Allows you to view events for edge devices from the Edge Devices Events pane                                                                                                           |
| [Alerts](docId\:BWq6oBkuTNZgIJBIgQPBE)                                                 | Enables you to add incidents, actions and triggers to send notifications based on events                                                                                                                                                          |
| [Marketplace](docId\:gqoGt_Szm8rz9UdPhl2NL) & [Grafana](docId\:YTC1N5pOOjR1elW34jQmF)  | Enables you to access marketplace catalogs and applications they contain, as well as registries and Grafana dashboards                                                                                                                            |
| [Settings](docId\:TtMXMjSU3mXYcNVreT9Fn)                                               | Provides you with information about company and project status and their various resources                                                                                                                                                        |
| [Digital Twins](docId\:Hvp_-8GHJdHgc7_sTBj-s)                                          | Provide a system that is used for real-time monitoring, analysis, and optimizations                                                                                                                                                               |


[title] Configuration
[path] Litmus Edge Manager User UI/Product Features/Activation/

The Configuration sub-module allows you to begin provisioning an edge device.

The Activation Configuration pane allows you to view the following information:

- **Activation code**: Click the activation code link to view or edit details about the configuration.
- **Expires**: View the expiration date for the selected activation code.
- **License type**: View the type of license for the selected activation code.
- **Licenses**: View the number of licenses added for the selected activation code if this is a node-locked license.
- **Templates**: View the number of templates added for the selected activation code.
- **Usage**: View the number of edge devices using the selected activation code.
- **Created On**: View the date the activation code was created.
- **Action**: Select options to edit, show usage or remove the selected activation code.

When you add or select an Activation code link, the Activation Config List appears. The Activation Config List includes the following sections:

- Activation Code
- Limits
- License Type
- Licenses
- Templates
- Template Variables



# Access Activation > Configuration UI

**To access the Activation Configuration UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   -     Click a project from the *Project&#x20;*&#x70;ane.
     The *Dashboard* pane appears for the project.

   - Click the **Actions** icon for a project, and then select **View**.
     The *Dashboard* pane appears for the project.
4. From the *Navigation&#x20;*&#x70;anel, select **Activation**.
   The *Configuration* and *Requests* sub-modules drop down.
5. From the navigation panel, select **Configuration**.
   The *Activation Configuration* pane appears.

Refer to the following actions you can take on the *Activation* *Configuration* tab.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Xi8bmLZ-sz0bNrIO3DzmV_sknwv6ocbnyhlkrypfptg2023-07-2011-13-31.png "Activation Configuration")

| **Action**                      | **Details**                                                                   |
| ------------------------------- | ----------------------------------------------------------------------------- |
| \[1] **Make device backup**     | Initiates a backup process for the edge device's current configuration.       |
| \[2] **Upload new backup file** | Allows you to upload a new backup file to replace the existing configuration. |
| \[3] **Reload Features**        | [Set Up an Activation Config](docId\:VbRFW-a0LLtuJmwdpuNNV)                   |
| \[4] **Action menu**            | - Edit
- Show Usage
- Remove                                                  |


[title] Events
[path] Litmus Edge Manager User UI/Product Features/

You can view the Events pane from a company or from an open project.

# Company Events Pane

The Company Events pane allows you to select a start and end date for the events you want to view. You can select an event type to filter the event list. Options are: Team/Member, Project, Device, Revoke, and All Events. You can add criteria in the Filter field to further narrow the events list.

:::hint{type="info"}
**Note:&#x20;**&#x54;he *deactivation&#x20;*&#x65;vent type is available for Litmus Edge Manager version 2.18.0 and later.
:::

## Access Company Events Pane

**To access the events UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. From the Navigation panel, select Events.
   The *Events* pane appears.

Refer to the following actions you can take on the *Events* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QIjgItnjO9QtJrEC3_XC9_jc0edhddmajkyoeqppwxeimage.png "Events \[Company View]")

| **Action**                 | **Details**                                                                                                                                                                                                                                                                                                                                                                                                                     |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Select Start Date** | Choose the starting date.                                                                                                                                                                                                                                                                                                                                                                                                       |
| \[2] **Select End date**   | Choose the ending date.                                                                                                                                                                                                                                                                                                                                                                                                         |
| \[3] **Select Event type** | Select from various event types related to:<br />* Activation and Deactivation (Deactivation is Available for Manufacturing Connect version 2.18.0 and later)
* Analytics
* Authentication
* Cloud Storage
* Company and project
* DataHub
* Digital Twins
* Device and device management
* DeviceHub
* Flows
* Git synchronization
* Grafana
* Licensing
* Integrations
* Marketplace
* Revoke
* System
* Team and team member |
| \[4] **Filter**            |  Search by *User* or *Event* .                                                                                                                                                                                                                                                                                                                                                                                                  |
| \[5] **Refresh**           | Update the list.                                                                                                                                                                                                                                                                                                                                                                                                                |

# Project Events Pane

The Project Events pane includes:

- **System Events**: The System Events pane allows you to select a start and end date for the events you want to view. You can select an event type to filter the event list. You can also add criteria in the Filter field to further narrow the events list.

The System Events list includes a timestamp, type, user, and event message for each event.

- **Edge Devices Events**: Edge Events allows you to view events for the entire date range over its life cycle. You must enable event forwarding for the edge device.

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

- Edge event management is an experimental feature which must be enabled from Litmus Edge Manager Admin Console. See [Experimental Features](docId\:PtIJysv_x6gV1g0Z4oR2B) for more information.
- The trigger for *Events* in Edge devices will only work if the *Forward Events&#x20;*&#x74;oggle is enabled. If this option is not activated, you won’t be able to see any logged events. You'll only have access to the event logs after turning on this feature; otherwise, previous logs will remain inaccessible.
:::

The Edge Devices Events pane allows you to select and apply a start and end date for the events you want to view. You can select options from the Severity, Component, Edge Device ID filters to further narrow the entries. You can filter a specific event by device or by component. You can click the device **ID** link, which navigates you to the selected *Edge Device Details* pane in the *Events&#xA0;*&#x74;ab.

From the Events tab in the Edge Device Details pane, you must enable **Forward Events**. This allows you to receive alerts when you use actions and triggers in the Alerts module.&#x20;

:::hint{type="info"}
**Note**: Litmus Edge Events can be a source for Litmus Edge Manager Alerts. You can define triggers based on the Litmus Edge Events and get notifications.
:::

## Access Project Events Pane

**To access the Project Events pane:&#x20;**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   -     Click a project from the *Project&#x20;*&#x70;ane.&#x20;
     The *Dashboard&#x20;*&#x70;ane appears for the project.
   - Click the **Actions** icon for a project, and then select **View**.&#x20;
     The *Dashboard&#x20;*&#x70;ane appears for the project.
4. From the Navigation panel, select **Events**.
   The *Events* pane appears. By default, *System Events* tab appears.

Refer to the following actions you can take on the *System Events* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QXbA10YF79GwKbbCCoSAg_o9ovyamkawzh8tdkjojblimage.png "Events \[Project View]: System Events tab")

| **Action**                                                  | **Details**                                                                                                                                                                |
| ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Select Start Date**                                  | Choose the starting date.                                                                                                                                                  |
| \[2] **Select End date**                                    | Choose the ending date.                                                                                                                                                    |
| \[3] **Select Event type**                                  | - Company
- Project
- Device
- Activation
- Deactivation (Available for Litmus Edge Manager version 2.18.0 and later)
- Team
- Team/Member
- Revoke
- Grafana
- All Events |
| \[4] **Filter**                                             | Search by *User* or *Event* .                                                                                                                                              |
| \[5] **Hide filter** / **Show filter**                      | Display the conditional list.                                                                                                                                              |
| \[6] **Swap between System Events and Edge Devices Events** | Choose between two types of events.                                                                                                                                        |

Refer to the following actions you can take on the *Edge Device's Events* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mo_ex7YUqzXkjIKCl81Br_image.png "Events \[Project View]: Edge Device's Events tab")

| **Action**                                                  | **Details**                                                                                                                                                                                                  |
| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| \[1] **Select Start Date**                                  | Choose the starting date.                                                                                                                                                                                    |
| \[2] **Select End date**                                    | Choose the ending date.                                                                                                                                                                                      |
| \[3] **Select Event type**                                  | - Company
- Project
- Device
- Activation
- Deactivation (Available for Litmus Edge Manager version 2.18.0 and later)
- Team
- Team/Member
- Revoke
- Grafana
- All Events                                   |
| \[4] **Filter**                                             | Search by *User* or *Event* .                                                                                                                                                                                |
| \[5] **Hide filter** / **Show filter**                      | Display the filter.                                                                                                                                                                                          |
| \[6] **Swap between System Events and Edge Devices Events** | Choose between two types of events.                                                                                                                                                                          |
| \[7] **View Edge Device ID**                                | ****[Events](docId\:Qh9PnCUT-G1k_Lz9p4-m3)                                                                                                                                                                   |
| \[8] **View Severity Info**                                 | Display severity information.                                                                                                                                                                                |
| \[9] **View Event Info**                                    | Display events information.                                                                                                                                                                                  |
| \[10] **Action Menu**                                       | * **Filter by Device:&#x20;**&#x59;ou can further narrow the list by selecting a start and end date.
* **Filter by Component:&#x20;**&#x59;ou can further narrow the list by selecting a start and end date. |
| \[11] **Show filter** / **Hide filter**                     | Expands / Hides features \[12]-\[16]                                                                                                                                                                         |
| \[12] **Select Severity**                                   | - All
- Info
- Warning
- Alert
- Error                                                                                                                                                                       |
| \[13] **Select Component**                                  | * All
* auth - Auth
* cc - Integrations
* dh - Device Hub
* dm - Device Management
* mp - Marketplace                                                                                                        |
| \[14] **Select Edge Device ID**                             | Displays all available connected devices                                                                                                                                                                     |
| \[15] **Select Start Date**                                 | Choose the starting date.                                                                                                                                                                                    |
| \[16] **Select End Date**                                   | Choose the ending date.                                                                                                                                                                                      |

****

****

****




[title] Upload License CSV
[path] Litmus Edge Manager User UI/Product Features/Licenses/

:::hint{type="info"}
**Note**: This feature is available for Litmus Edge Manager version 2.18.0 and later.&#x20;
:::

You can add multiple licenses with a single CSV file.&#x20;

:::hint{type="info"}
**Note:** Ensure that the CSV file contains the required column names in the correct order as follows: `license key`, `license SKU`, `isCore`
:::

# Before You Begin

Ensure you have a CSV file with the required License keys.

**To upload license keys from a CSV file:**

1. From the *Licenses Summary&#x20;*&#x70;ane, click **Upload License CSV**.
   The *Upload license keys* dialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kiS6JbvLVW3bA_FR7XHGH_image.png" size="100" isUploading="false" width="1733" height="534" showCaption="false" indent="2"}

2. Click the **SELECT FILE** button and navigate to select the file from your local computer.
   - **File Name:&#x20;**(Optional) Rename the file if needed.
   - Example of the *CSV file* is available [here](https://dev.em.la2.space/scripts/components/license/license-upload-example.csv).
3. Click **UPLOAD**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/W7Ly27N07R8vQv6uS5ObW_image.png" size="30" width="293" height="322" position="center" caption="Upload license keys dialog box" showCaption="true" indent="2"}


[title] Set Up an Activation Configuration
[path] Litmus Edge Manager User UI/Product Features/Activation/Configuration/

An activation configuration can be configured with limits, license keys, template and/or template variables. These configurations are all entirely optional. Some of these configurations have existing default values while others can be left blank. These configurations are all implemented in the first four steps and can be skipped if no additional customization is needed.&#x20;

Generating the details for an activation configuration occurs only in *Step 6: Save* while retrieving the key details are in *Step 7: Retrieve Activation Code/URL*.

# Before You Begin

- If you are using a node-locked license, make sure you have a license key for deployment. To get a license key, contact your Litmus account executive.&#x20;
- If you are using a site-based license, make sure you have the URL and port for the license server. See [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O).&#x20;

# Step 1: Configure Limits

After navigating to **Activation&#x20;**> **Configuration&#x20;**&#x61;nd clicking the **Add activation config** icon, you can start configuring the limits.&#x20;

You have the option of configuring limits, specifically number of edge devices, lease TTL and expiration date. If no changes are needed, proceed to the next step.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4SN1XZ4nJ2jciUlGzPYQ1_image.png" size="80" width="1916" height="335" position="center" caption="Config Limits" showCaption="true"}

- **Number of Edge devices:** Enter the number of devices that will share the activation code. The activation code (created after saving) can be used for multiple edge device activation.
- **Lease TTL for identity certificate:** Enter the number of days the identity certificate for the activation will be valid from the day you activate the edge device. &#x20;
- **Expiration Date**: Select the expiration date when the activation code can no longer be used.

# Step 2: Configure Licenses and License Types

You have the option of using either a node-locked or a site license. By default, a node-locked license is selected.&#x20;

- A node-locked license associates and attaches a license with a Litmus Edge instance. Use this option for assigning one license to each edge device.
- A site license is when Litmus Edge obtains a license from a Litmus Edge License Server. Use this option to specify the IP address of the license server.

See [Site and Node-Locked License Overview for Litmus Edge](docId\:nbX0O6C5ylSh-qVy0sdJc) to learn more.

If no changes are needed, proceed to the next sub-step.&#x20;



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KM04NTBSz0MY4wfoolG0K_image.png" size="80" width="1711" height="126" position="center" caption="Configure License and License Type" showCaption="true"}

## Configure a Site-based License

Ensure the site-based license has already been applied in Litmus Edge Manager before activating the device. The site license must be created through *Offline activation* in [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O).

## Configure a Node-locked License

You have the option of adding node-locked license SKUs manually or uploading them in a file.&#x20;

### Add License SKU Manually

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4QQIlZA580qixxWNIq5mj_image.png" size="80" width="1675" height="382" position="center" caption="Adding node-locked keys manually" showCaption="true"}

**To manually add a node-locked license key**:

1. Select the checkbox for **License SKU**.
   Only one core license SKU can be selected.

### Upload License Keys

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FFyjHlpWyKV8IEDDTRGs7_image.png" size="80" width="1667" height="384" position="center" caption="Uploading node-locked keys" showCaption="true"}

**To upload node-locked license CSV**:

1. Click the **Upload** icon.
   The *Upload license keys&#x20;*&#x64;ialog box appears.
2. Click the **SELECT FILE** button and navigate to select the file from your local computer.
   - **File Name:&#x20;**(Optional) Rename the file if needed.
   - Example of the *CSV file* is available [here](https://dev.em.la2.space/scripts/components/license/license-upload-example.csv).
3. Click **UPLOAD**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/W7Ly27N07R8vQv6uS5ObW_image.png" size="30" width="293" height="322" position="center" caption="Upload license keys dialog box" showCaption="true"}

# Step 3: Add Templates

You have the option of applying templates when activating a Litmus Edge instance. Learn more about [Templates](docId\:Me1x3I4rPT_IIgNPCY1GA).&#x20;

If the Litmus Edge instance doesn't need a template, proceed to the next step.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x2P_b1G24sZ07GZkOT9ht_image.png" size="80" width="1912" height="158" position="center" caption="Add Templates" showCaption="true"}

**To add at least one template**:&#x20;

1. From the *Template&#xA0;*&#x73;ection, click the **Add** icon.&#x20;
   The *Template Select&#xA0;*&#x64;ialog box appears.
2. Select one or more templates from the list, and then click **Select**. The selected template appears in the *Templates* list.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/H3R0dkvHOzin-UiqrOz_D_image.png" size="80" width="1525" height="462" caption="Litmus Edge Manager User UI : Activation > Configuration : Activation Config 3/7 Template Select" position="center" showCaption="true"}

# Step 4: Add Template Variables

You have the option of applying template variables when activating a Litmus Edge instance.  Before using template variables, you need to [Parameterize a Template](docId\:ol2rl-sxp_6Y4ISmGzhXA).&#x20;

If the Litmus Edge instance doesn't need any template variables, proceed to the next step.&#x20;

## Adding Template Variables Manually

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/szmwiO8X6j_Ff-FiaGsJV_image.png" size="80" width="1911" height="162" position="center" caption="Add Template Variables" showCaption="true"}

**To add at least one template variable manually:**

- From the *Template Variables***&#xA0;**&#x73;ection, click the **Add&#xA0;**&#x69;con. The *Add new variable set* dialog box appears.

### Adding Template Variables for All Devices&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VjiaO_6PuhnVHdl7zZTU7_image.png" size="60" width="574" height="338" position="center" caption="Add new variable set dialog box" showCaption="true"}

**In order to add template variables for all devices:**

1. From the *Add new variable set***&#xA0;**&#x64;ialog box, click the **Variable set type toggle** so it displays *All Devices*.
2. Click **Add**.&#x20;
   The Variable set: *All devices&#x20;*&#x61;ppears in th&#x65;*&#x20;Template Variables* list.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/j2iDs6WteGq_3HZCm3cPL_5zrudc58c-uy1k-4hw-rzimage.png "Add new variables for All Devices")
3. Click the **Add** icon next to the variable set. The Variables line items drop down.
4. In the **Variable Name&#xA0;**&#x66;ield, enter a variable name.
5. In the **Variable Value&#xA0;**&#x66;ield, enter a variable value.&#x20;

### Adding Template Variables for Individual Edge Device

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_P1qfcHi3mCThhyYYxppJ_image.png" size="60" width="579" height="342" position="center" caption="Add new variable set dialog box" showCaption="true"}

1. From the *Add new variable set***&#xA0;**&#x64;ialog box, click the **Variable set type** toggle so it displays *Per Edge Device*.
2. In the **Host Name** field, enter the host name for an edge device. To find host name for an edge device, see [Configure the Network Settings](docId\:jW2n7vOhntfAgknzoyLQc)' *Host Information*.
3. Click **Add**.
   The Variable set: *per Edge Device*:  \<hostname> appears in the *Template Variables* list.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/p-HZNKyCC8P0pKcMVOG_G_e0wobrnpssfg5w0ajzflimage.png "Add new variables for per Edge Device")
4. Click the **Add** icon next to the variable set. The *Variables&#x20;*&#x6C;ine items drop down.
5. In the **Variable Name&#xA0;**&#x66;ield, enter a variable name.
6. In the **Variable Value&#xA0;**&#x66;ield, enter a variable value.&#x20;

## Adding Template Variables Using .csv File

Multiple template variables can be uploaded using a `.csv` file. A sample `.csv` file is available to download for customization.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/a43ztvQoMFpG2juZOYL2Z_image.png" size="80" width="1919" height="154" position="center" caption="Upload Template Variables" showCaption="true"}

**To add at least one template variable using a .csv file :**

1. From the *Template Variables* section, click the **Upload&#x20;**&#x69;con.&#x20;
   The *Upload variable sets* dialog box appears.&#x20;
2. (Optional) Click the here link to download a sample `.csv` file.
3. Clic&#x6B;**&#x20;Select File**, navigate to a variable set `.csv` file, and then click **Open**.   &#x20;The selected `.csv` file appears in the *File Name* field.**&#xD;**
4. Click **Upload**. The variable sets listed in the `.csv` file appear in the *Variable Sets* list.


# Step 5: Provision Options

:::hint{type="info"}
**Note**: Th&#x65;*&#x20;Provision Options* feature is available for Litmus Edge Manager 2.12.0 and later.&#x20;
:::

To apply the [AWS Sitewise Edge integration](https://app.archbee.com/docs/SuELLqhxHnnKWA4eA6SOc/kVu1bRiEO0GO-psXWR-aw) during activation, select the *AWS SiteWise Edge Integration&#x20;*&#x63;heckbox. This feature enables Litmus Edge to connect with the AWS Sitewise Edge MQTT broker when deploying LE components using the AWS Sitewise console.

&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cRpst8qB7ANzfTLd-Gz6Y_image.png)





To apply the [default password policy](docId\:nZxdm63Ip1guJ_mQiN140) during activation, select the *Password Policy* checkbox. If there are multiple password policies, the master default password policy that can't be deleted is implemented.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3D3wsm5y7PhRA1XK-lfR6_image.png" size="80" width="1071" height="102" position="center" caption="Provision Options section" showCaption="true"}

After activation, you can update the [default password policy](docId\:CMHGjEOLZn_qu_jlOjdBO) for individual edge devices.&#x20;

# Step 6: Configure Advanced Settings

:::hint{type="info"}
**Note**: Th&#x65;*&#x20;Advanced Settings* feature is available for Litmus Edge Manager 2.11.0 and later.
:::

When Litmus Edge Manger (LEM) connects to a Litmus Edge (LE), it uses Remote Access. Remote Access has a parameter `PersistentKeepalive` that you can reconfigure on how often to send an authenticated empty packet to a Litmus Edge for the purpose of maintaining the LEM-LE connection. By default, Remote Access uses 22 seconds. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1yANrjF0Uh79RC7jZ1AuZ_image.png" size="80" width="1905" height="189" position="center" caption="Remote Network Persistent Keepalive Interval" showCaption="true"}

To set advanced settings, from the **Remote Network Persistent Keepalive** field, enter a number of seconds between 1-25.&#x20;

# Step 7: Save

When done configuring the Activation Configuration, clic&#x6B;**&#x20;Save**. Once saved, the activation code will then be generated at the *Activation Code* field. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/J8oHULh4be53wsFOlialR_image.png" size="80" width="1920" height="969" position="center" caption="Save Activation Config" showCaption="true"}

# Step 8: Retrieve Activation Code/URL

After saving, the activation code will display underneath the *Activation Code* section. This code and the *Activation URL* will be needed when activating a Litmus Edge instance.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YQY0EFKlqVaY8QDNkLCQr_image.png" size="80" width="1920" height="969" position="center" caption="Retrieve activation code/URL" showCaption="true"}

**To retrieve the activation code/URL**:&#x20;

1. **Copy to clipboard** the *Activation Code*. It will be needed for activating a Litmus Edge instance.
2. **Copy to clipboard** the *Activation URL*. It will be needed for configuring a Litmus Edge instance.

# Next Steps

Use the copied *Activation Code&#x20;*&#x61;nd *Activation URL* to [Activate an Edge Device](docId\:G1kWiYDlSR5u8qEJk0djp).






[title] AI/ML Models
[path] Litmus Edge Manager User UI/Product Features/

:::hint{type="info"}
**Note**: The AI/ML Models feature is available for Litmus Edge Manager 2.21.0 and later.
:::

The AI/ML Models module in Litmus Edge Manager (LEM) allows you to manage and bulk deploy machine learning models on edge devices. It also provides a comprehensive summary of all your models, sorting and filtering of the models list, and the ability to upload new machine learning models. You can only upload the models as a **ZIP** file containing a saved model directory with variables, assets, and a .pb (protocol buffer) file.

# Access AI/ML Models UI

&#x20;**To access the AI/ML Models UI:&#x20;**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects&#x20;*&#x70;ane appears.
3. Do one of the following:
   - Click a project from the *Project* pane.&#x20;
     The *Dashboard* pane appears for the project.
   - Click the **Actions** icon for a project, and then select **View.&#x20;**&#xA;The *Dashboard* pane appears for the project.
4. From the Navigation panel, select **AI/ML Models.&#x20;**&#xA;The *AI/ML Models Management* pane appears.

Refer to the following actions you can take on Litmus Edge Manager's *AI/ML Models&#x20;*&#x70;ane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qJtJ1w4N7TmaMPB5uVjTO_image.png)

| **Action**                                                                       | **Details**                                                                                                                |
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| \[1] **View&#x20;**[Edge Devices](docId\:V2neW0C22znuUlXwQd2Wm)**&#x20;details** | Display the details of edge devices.                                                                                       |
| \[2] **BULK DEPLOY**                                                             | Upload multiple models at once. See [Deploy AI/ML Model](docId\:YPC12P4q3kfMW5XNNAtDp) for details.                        |
| \[3] **AI/ML MODELS**                                                            | Upload a new model or display available models.<br />* [Import AI/ML Models](docId\:NejWAOLMno3aSEMjsafyR)&#x20;           |
| \[4] **Action**                                                                  | - [Deploy AI/ML Model](docId\:YPC12P4q3kfMW5XNNAtDp): Access machine learning models on your edge devices
- Delete a Model |

:::hint{type="info"}
**Note:&#x20;**&#x59;ou can use AI/ML Models by using the [TensorFlow Images Processor](docId\:Tif714q103-7CRa2RY44P)  & [TensorFlow Processor](docId\:QKgSmS2EOcVzHa2lYAUkl) Analytics functions.
:::


[title] Metrics
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

Once an edge device begins communicating with Litmus Edge Manager, the metrics of your edge device become available in the *Metrics* tab.

The tab is divided into two sections:

- **DeviceHub** - lists all devices connected to the edge device; shows their status and the number of tags
- **Integration** - lists integration connectors defined for the edge device; shows their status, rate, and buffer size

Refer to the following metrics you can refer to on the Litmus Edge Manager User UI's *Edge Devices Metrics* tab.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OX0n4ysSynbWeX_uxLrsn_image.png "Edge Devices Metrics")

| Section                     | Column                               | Description                                                                                                                                     |
| --------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|  \[1] **Device Hub**        | **Name**                             | The name of the device connected to the edge system.                                                                                            |
|                             | **Tags**                             | The number of tags associated with the device.                                                                                                  |
|                             | **Success \| Error Rate (msgs/min)** | The rate of successful and error messages per minute for each device.                                                                           |
|                             | **Status**                           | The current status of the device connection. <br />* A green dot indicates a device is online.&#x20;
* A red dot indicates a device is offline. |
|  \[2] **Integration&#x20;** | **Name**                             | The name of the integration service used by the edge system.                                                                                    |
|                             | **Rate (msgs/min)&#x20;**            | The rate of messages per minute processed by the integration.                                                                                   |
|                             | **Buffer Size&#x20;**                | The current buffer size of the integration.                                                                                                     |
|                             | **Status&#x20;**                     | The current status of the integration. <br />* A green dot indicates online status.
* A red dot indicates offline status.&#x20;                 |

## Additional Metrics

You can use additional metrics sources to set up an alert based on metrics collected by Litmus Edge Manager. The alert can trigger when a variable reaches a specific value or a set/interval of values.  Only one metrics rule can be created per alert. See [Set Up Alert Triggers](docId\:ssMqiDTPoBpV95sc3lkaC) for more.

:::hint{type="info"}
**Note:** You can set up alert triggers for different metrics of your edge devices in the *Triggers* section in the *Alerts* module. Review the [Alerts Guides](docId\:Z6I7f1kbZSHNsn6FZliSe) for setting up alert triggers.
:::

Refer to the following table for more information on additional metrics available for alerts template:&#x20;

| **Source**  | **Metrics Name**                    | **Description / Purpose**                                                                                                                                                                     | **Parameters**                                         |
| ----------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| Integration | Connector disk buffer               | Monitor [Integration](docId\:Wpqo1fE02tmx3AsKewQU6) Connector disk buffer, which is used when the connector’s throughput is insufficient to handle all defined tags coming from Edge devices. | - Target Value in MB
- Alert Delay in seconds          |
| Integration | Connector online status             | Detect unplanned [Integration](docId\:Wpqo1fE02tmx3AsKewQU6) Connector disconnections.                                                                                                        | * Alert Delay in seconds                               |
| DeviceHub   | DeviceHub (DH) online status        | Detect unplanned disconnections of DeviceHub (DH) devices.                                                                                                                                    | - Alert Delay in seconds                               |
| DeviceHub   | DeviceHub (DH) device data quality  | Monitor the rate of low-quality (i.e. error) messages. A high rate of low-quality messages indicate a problem with either the physical device or the device driver.                           | * Target Value in msgs/minute
* Alert Delay in seconds |
| Edge Device | Edge Device online status           | Detect unexpected disconnections of edge Devices.                                                                                                                                             | - Alert Delay in seconds                               |
| Edge Device | Edge Device license expiration      | Detect when the license of an edge device has expired.                                                                                                                                        | * Target Value in days
* Alert Delay in seconds        |
| Edge Device | Edge Device free disk space         | Monitor the available disk space of an edge device.                                                                                                                                           | - Target Value in Percentage
- Alert Delay in seconds  |
| Edge Device | Edge Device memory available        | Monitor the available memory of an edge device                                                                                                                                                | * Target Value in Percentage
* Alert Delay in seconds  |
| Edge Device | Edge Device CPU Idle                | Monitor the CPU usage of an edge device                                                                                                                                                       | - Target Value in Percentage
- Alert Delay in seconds  |


[title] Software Update
[path] Litmus Edge Manager User UI/Product Features/

After selecting a project, the Software Update module appears.

The Software Update module includes a list of runnable tasks for edge devices. This module also contains a **Current (#)** tab to view `PENDING` or `RUNNING` tasks and a **History (#)** tab to view `COMPLETED` or `ERROR` (failed) tasks.

You can add a software task, run a task, cancel a task, or view info about current and previous tasks.&#x20;

:::hint{type="info"}
**Note**: Software packages are added from th&#x65;**&#xA0;***Images&#xA0;*&#x6D;odule in the Litmus Edge Manager Admin Console. See [Edge Software Update](docId:3IevluZfOdrXAqOOpVT1n).&#x20;
:::

Single or multiple tasks can be scheduled for edge devices. You can use user-defined commands that can be scheduled to be executed. You can restart and update Litmus Edge software.

# Access Software Update UI

**To access the Software Update UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   -     Click a project from the *Project&#x20;*&#x70;ane.&#x20;
     The *Dashboard&#x20;*&#x70;ane appears for the project.
   - Click the **Actions** icon for a project, and then select **View**.&#x20;
     The *Dashboard&#x20;*&#x70;ane appears for the project.
4. From the Navigation panel, select **Software Update**.
   The *Software Update* pane appears.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AbDXJqNk6kbdju4iSE3Fx_image.png)

# Next Steps

- [Add New Software Update Tasks](docId\:i24b2ShVA4EeOxUPftj_M)
- [Cancel Software Update Tasks](docId\:iL8M8kElSD-uOcYbUZSc9)


[title] Sites
[path] Litmus Edge Manager User UI/Product Features/

*Sites&#x20;*&#x61;llows you to divide your project into smaller areas of interest. After selecting a project, the *Sites&#x20;*&#x6D;odule appears.

You can add, remove, and visualize edge devices deployed to a categorized site. You can also add mapping to edge devices based on the edge device location.

Clicking an edge device's ID in the Site Points pane automatically navigates you to the edge device details Info tab where you can perform device management. This makes it more convenient for plant managers to monitor devices deployed in their plant, based on site location.

# Access Sites UI

**To access the Sites UI:&#x20;**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Do one of the following:
   -     Click a project from the *Project&#x20;*&#x70;ane. The *Dashboard&#x20;*&#x70;ane appears for the project.
   - Click the **Actions** icon for a project, and then select **View**. The *Dashboard&#x20;*&#x70;ane appears for the project.
4. From the Navigation panel, select **Sites**.
   Th&#x65;*&#x20;Sites* pane appears.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PjGzDCH-jz7zXookDmSXT_2023-07-1710-14-44.png "Sites")

# Next Steps

The following operations are available for **Sites**:

- [Add a New Site](docId\:oV_8SWPS-P-gJmuQiPQQu)&#x20;
- [Manage Sites](docId\:ZKCauvtH-lr1nWNOWXSUM)&#x20;


[title] Manage Applications
[path] Litmus Edge Manager User UI/Product Features/Applications/

From the *Applications&#x20;*&#x70;ane, you can select a catalog to view, deploy (launch) an application for your connected edge devices, and view an application's details where you can view the edge devices for which the application has been deployed.

Refer to the following actions you can take on the *Applications* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nSLagWN0k0zOTcBP8rfbg_image.png "Managing Applications")

| **Action**                                                              | **Details**                                                                                                                                                                      |
| ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Show filter** / **Clear and close Filter**                       | Search by *Name* or *Description&#x20;*&#x61;fter entering at least 3 characters.                                                                                                |
| \[2] **Push Marketplace catalogs to Edge devices**                      | Distribute Marketplace catalogs to connected Edge devices.                                                                                                                       |
| \[3] **Select Catalog**                                                 | - **Filter**
- **Show all**                                                                                                                                                      |
| \[4] **View&#x20;**[Application Details](docId\:y0_poW_FPmobqHrwyI5Wk)  | Examine detailed information about the selected application.                                                                                                                     |
| \[5] **Action menu&#x20;**                                              | * **Launch App:&#x20;**[Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw)&#x20;
* **Details:&#x20;**&#x20;[Application Details](docId\:y0_poW_FPmobqHrwyI5Wk) |


[title] Company List
[path] Litmus Edge Manager User UI/Product Features/

Litmus Edge Manager includes a way for you to create a hierarchy to structure how different edge devices fit into the IT/OT environment of a company or enterprise.

This hierarchy follows the same principles as other devices such as servers, PC systems, or PLCs/controllers.

You can then visualize and organize where an edge device fits into the overall architecture.

The first level of the hierarchy is called **Companies**.

Companies are the highest hierarchy level under which everything is structured. Options can be the enterprise, company, or division/subsidiary names. Other valid choices are the name of a country, region, state, or city, as well as production site. These names are based on how you understand your own hierarchy and how the hierarchy will represent the architecture.

When you are working in a module for a company, Litmus Edge Manager remembers after you log out so the last module in the company you worked on appears when you log in.

See [Company Settings](docId\:XwUuYveHjgIbb0bYwlwSt)  for more information about how to manage companies. Refer to the following actions you can take on the Litmus Edge Manager User UI's *Companies&#x20;*&#x70;ane.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dJ1sjrWhU82UUbOqN8G6D_image.png "Company List View")

| **Action**                                         | **Details**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] [Add a Company](docId\:QS1mbPG-tWRCyAAWe5Iya) | Allows users to create and organize new company entries within the Litmus Edge Manager.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| \[2] **Company tile**                              | <br />* **Projects:&#x20;**&#x54;otal number of projects.
* **Edge Devices:**&#x20;
  - For Litmus Edge Manager version 2.16.5 and earlier, the number of total activated edge devices displays.&#x20;
  - For Litmus Edge Manager 2.18.0 and later, the number of online edge devices out of the total number of activated edge devices displays.
* **Digital Twins Models:&#x20;**&#x54;otal number of digital twin models.
* **Edge Lifecycle Management:&#x20;**&#x57;here users can manage Litmus Edge devices.
* **Asset Management:&#x20;**&#x57;here users can access the Digital Twins module. |

# Next Steps

- [Add a Company](docId\:QS1mbPG-tWRCyAAWe5Iya)&#x20;
- [Select a Company](docId\:QG9YTJQ6XZ5e0aHlmG6nJ)
- [Manage Multiple Teams and Members](docId\:wuZwvesh2sg-Er9FjK6OP)




[title] Backup
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

Upon activation of an edge device, the backup files for the edge device are automatically stored in the **Backup** tab. You can make an edge device backup, upload an edge device backup, and restore from a backup file for the edge device. You can perform actions from a listed backup file. Options are: download, start restore, and remove a backup file.

You have the option of configuring the backup retention policy in the *Settings&#x20;*&#x73;ection of Litmus Edge Manager. See [Project Settings](docId\:hmGSXiivMvDy4K43OanRv) to learn more.&#x20;

Refer to the following actions you can take on the Litmus Edge Manager User UI's *Edge Devices Details Backup* tab.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rExsauvBkkhItaoopAWjt_2023-07-2011-12-18.png "Backup tab")

| **Action**                      | **Details**                                                                                                      |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| \[1] **Make device backup**     | Create a new backup file for the edge device.                                                                    |
| \[2] **Upload new backup file** | Select `MASTER` or `FLOWS`                                                                                       |
| \[3] **Reload Features**        | Delete multiple backups concurrently. This feature is available for Litmus Edge Manager version 2.8.0 and later. |
| \[4] **Refresh**                | Update the backup tab to display the latest information.                                                         |
| \[5] **Action menu**            | - Download
- Start Restore
- Remove                                                                              |


[title] Manage Sites
[path] Litmus Edge Manager User UI/Product Features/Sites/

After you create a site, the *Sites* pane offers a list of actions to manage them. Refer to the following actions you can take on the Litmus Edge Manager User UI's *Sites* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jJXgIlOXAkVzRJOJ1F8uX_2023-07-1710-18-46.png)

| **Action**                                  | **Details**                                                                                                                                                                                               |
| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **View**/**Edit site**                 | See [Add a New Site](docId\:oV_8SWPS-P-gJmuQiPQQu) for details                                                                                                                                            |
| \[2] **Show Site Points**                   | See [Show Site Points](docId\:Mzmtln8Y5iBNYL9GZBmqe) details                                                                                                                                              |
| \[3] **Delete**                             | Remove any site from the list.                                                                                                                                                                            |
| \[4] **Action menu**                        | - **View/Edit:&#x20;**&#x53;ee [Add a New Site](docId\:oV_8SWPS-P-gJmuQiPQQu) for details
- **Show Site Points:&#x20;**&#x53;ee [Show Site Points](docId\:Mzmtln8Y5iBNYL9GZBmqe) for details
- **Delete** |
| \[5]**&#x20;Show filter** / **Hide filter** | Search by *Name* or *Description*                                                                                                                                                                         |
| \[6] **Change to Table**/**Module view**    | Modify the table to module view.                                                                                                                                                                          |


[title] Manage a Site and Site Points
[path] Litmus Edge Manager User UI/Product Features/Sites/Show Site Points/

You can hover over a map site point to view the name, status and type of the edge device.

Refer to the following actions you can take on the *Show Site Points* pane.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dtJBTbZYMInsLVMwVLCQ7_image.png" size="80" width="1920" height="969" darkWidth="1920" darkHeight="969" position="flex-start" caption="Site Management" showCaption="true"}

| **Action**                                               | **Details**                                                                                                                                                                                               |
| -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] [Edge Device Details](docId\:YwQwD4skuVTwNtcAV5ijs) | View details of connected edge devices.                                                                                                                                                                   |
| \[2] **View Data \| Control Status**                     | Check the status of the data flow.                                                                                                                                                                        |
| \[3] **Show filter / Hide filter**                       | Search by *Name.*                                                                                                                                                                                         |
| \[4] **Save**                                            | - **View/Edit:&#x20;**&#x53;ee [Add a New Site](docId\:oV_8SWPS-P-gJmuQiPQQu) for details
- **Show Site Points:&#x20;**&#x53;ee [Show Site Points](docId\:Mzmtln8Y5iBNYL9GZBmqe) for details
- **Delete** |
| \[5]**&#x20;Action menu**                                | * **Remove:&#x20;**&#x54;he selected edge device must be online.                                                                                                                                          |
| \[6] **Site Point&#x20;**                                | Hover over the mapping point to more information. Click and drag to change the site point location on the site map.                                                                                       |


[title] Personal Settings and Support Chat
[path] QuickStart Guide/

:::hint{type="info"}
**Note**: The Personal Settings feature is available for Litmus Edge Manager 2.7.0 and later.&#x20;
:::

This feature offers enables you to toggle a chatbot (that is displayed across all LEM interfaces) that assists you in contacting a Litmus representative directly.

# Access Personal Settings UI

*Personal Settings* are available both on Litmus Edge Manager User Interface and Litmus Edge Admin Console.&#x20;

**To access the Personal Settings UI:**

1. Log in to Litmus Edge Manager or Litmus Edge Manager Admin Console.
2. From the top of the window, click the **User** icon, and then select **Personal Settings**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/J4t5KSRFmELvrl4J3rNBd_image.png" size="80" width="1920" height="914" caption="Litmus Edge Manager User Interface : Access Personal Settings 1/2" position="center" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dXvtKFUzP3Y4dCQynx8Ay_image.png" size="80" width="1920" height="914" caption="Litmus Edge Manager User Interface : Access Personal Settings 2/2" position="center" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nYshqwqeq-4vUDk0MOxBb_image.png" size="80" width="1920" height="914" caption="Litmus Edge Manager Admin Console : Access Personal Settings" position="center" showCaption="true"}

Refer to the following actions you can take from the *Personal Settings* pane.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/K3Se1nxVRiKxnZFQOAQiw_image.png" size="80" width="1741" height="901" caption="Litmus Edge Manager User Interface / Admin Console: Personal Settings" position="center" showCaption="true"}

| **Action**                                 | **Details**                                                                                                                         |
| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Enable/Disable Connected Features** | Toggles the availability of the support chat box.                                                                                   |
| \[2] **Expand/Collapse Support Chat Box**  | This support chat box is available on every other page of Litmus Edge Manager User Interface and Litmus Edge Manager Admin Console. |


[title] Details
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

The *Details* tab includes device status, disk, memory, CPU, network interfaces, serial interfaces, modem interfaces, and CAN interface information for a selected edge device.

:::hint{type="success"}
**Tip**: If data does not display:

- Check the device status from the Edge Devices pane to see if data is connected. See [Step 7: Verify Edge Device Activation in Litmus Edge Manager](docId\:KC9sqRSng2KSINWL1PfPi).
- Check the edge device information in Litmus Edge. See [Info](docId\:YIwyPagdCmgYF_px_-wgA).&#x20;
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cfhSRjNK3IPF_WnIfs__C_image.png" size="90" width="1920" height="969" position="center" caption="Details tab 1/2" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/veMzSCQMdbfzmeqJGPq7P_4o2xvaxb-zw1rjnsbteggimage.png" size="80" width="1739" height="837" position="center" caption="Details tab 2/2" showCaption="true"}

# Edge Device Information

The following sections include information about the edge device.&#x20;

:::hint{type="info"}
**Note**: The sections that display for an edge device may differ according to the type of device.
:::

## General

| **Label**        | **Description**                                        |
| ---------------- | ------------------------------------------------------ |
| Model Number     | The model number for the edge device.                  |
| Manufacturer     | The manufacturer of the edge device.                   |
| Firmware Version | The current firmware version used for the edge device. |
| Hardware Version | The hardware version used for the edge device.         |
| Serial #         | The serial number for the edge device.                 |

## Status

| **Label**                 | **Description**                                            |
| ------------------------- | ---------------------------------------------------------- |
| Status / Activation       | If the edge device online status is active or deactivated. |
| Control Client Address    | The URL for the client.                                    |
| Control Registration Date | The date and time the edge device was registered.          |
| Control Last Update       | The last date and time the edge device was updated.        |
| Control Type              | The type of component that controls the edge device.       |

## Disk

| **Label**         | **Description**                                          |
| ----------------- | -------------------------------------------------------- |
| Used Storage      | The percentage of used storage for the edge device.      |
| Available Storage | The percentage of available storage for the edge device. |
| Total Storage     | The total storage for the edge device in KB.             |
| Storage Used      | The storage used for the edge device in KB.              |
| Storage Available | The available storage for the edge device in KB.         |

## Memory

| **Label**        | **Description**                                         |
| ---------------- | ------------------------------------------------------- |
| Used Memory      | The percentage of used memory for the edge device.      |
| Available Memory | The percentage of available memory for the edge device. |
| Total Memory     | The total memory for the edge device in KB.             |
| Used Memory      | The used memory for the edge device in KB.              |
| Available Memory | The available memory for the edge device in KB.         |

## CPU

| **Label**   | **Description**                               |
| ----------- | --------------------------------------------- |
| Model       | The model of CPU(s) used for the edge device. |
| Cores #     | The number of cores for the CPU model.        |
| Clock Speed | The clock speed of the CPU model.             |
| Vendor ID   | The vendor for the CPU model.                 |

## Network Interfaces

| **Label**      | **Description**                                                                                                                                                                                                                                                                                                                 |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Interface      | Type of network interface. It can be an ethernet (eth0 or eth1), a Wi-Fi (wlan0), or an LTE (wwan0) network interface.                                                                                                                                                                                                          |
| MAC Address    | Physical address of the network interface.                                                                                                                                                                                                                                                                                      |
| IP Address     | Logical address assigned by software to the network interface.                                                                                                                                                                                                                                                                  |
| Address Family | inet means that IPv4 traffic is run through the interface, while inet6 means that IPv6 is run through it.                                                                                                                                                                                                                       |
| Type           | Address space of the network. There are two types:<br />* *AddrTypePrivate* - The network interface can interact with any other network because the IP address has global scope.
* *AddrTypeLinkLocal* - The IP address is only valid on local network segments. IPv6 requires a link-local address on every network interface. |

## &#x20;Serial Interfaces

| **Label**        | **Description**                                     |
| ---------------- | --------------------------------------------------- |
| Name             | The name of the device.                             |
| Model            | The model of the device.                            |
| Manufacturer     | The manufacturer of the device.                     |
| Serial #         | The serial number of the device.                    |
| Speed (Baudrate) | The communication speed of the device, in baudrate. |

## Modem Interfaces

| **Label** | **Description**                                                                                                                 |
| --------- | ------------------------------------------------------------------------------------------------------------------------------- |
| Status    | The network area of the LTE modem. Home, for example, indicates that devices are all in close vicinity to the modem.            |
| Bars      | The signal strength of the LTE modem. It ranges from zero to five. Zero means no signal, while five means a very strong signal. |
| Network   | The mobile network from which the modem communicates.                                                                           |
| IPv4      | The IPv4 address of the modem.                                                                                                  |
| IPv6      | The IPv6 address of the modem.                                                                                                  |
| IMEI      | International Mobile Equipment Identity. A unique number that identifies mobile network devices.                                |
| ICCID     | Integrated Circuit Card Identifier. The SIM card serial number.                                                                 |
| APN       | Access Point Name. Serves as a gateway for a mobile network to connect to another network or the public Internet.               |

## CAN Interfaces

| **Label**          | **Description**                                                                  |
| ------------------ | -------------------------------------------------------------------------------- |
| Interface          | The name of the device.                                                          |
| Set "open"         | A check box that configures the selected device.                                 |
| Set "closed"       | A check box that configures the selected device.                                 |
| Set "status reset" | A check box that configures the selected device.                                 |
| CAN Speed, Kbit/s  | The high-speed baud rates from 40 Kbit/s to 1 Mbit/s, depending on cable length. |
| UART Speed, baud   | The maximum rate at which information is transferred.                            |


[title] Add a New Site
[path] Litmus Edge Manager User UI/Product Features/Sites/

You can add a site by navigating to **Litmus Edge Manager User UI** > **Sites**.

**To add a Site**:

1. From the *Sites* pane, click the **Add** icon or click the **Add** box.&#x20;
   The *New Site* dialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tZbNK4xVyF_aHqDVg9ci1_dshrah6z8w5k7mtwqtfgu2023-07-1710-15-50.png" size="100" width="2879" height="631" position="center" caption="Add Licenses" darkWidth="2879" darkHeight="631" showCaption="true" indent="2"}

2. From the *New Site&#x20;*&#x64;ialog box, enter the following details:
   - **Name**
   - **Description**: (Optional)
   - **Site Image**: (Optional) Click the camera icon and navigate to an image of the site.
3. Click **Save**.
   The Site image appears on the *Sites* pane.


[title] Log
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/

Use the *Log&#x20;*&#x74;ab to review the activity for an edge device. For example, log entries show when an edge device was added or deleted. Updates to the edge device parameters are logged with relevant details.

From the Log tab, you can select a date range and filter the log.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QOqfamaIso0z_42nSaNQz_image.png "Log tab")


[title] Add/Upgrade a Node-locked License to an Edge Device
[path] Litmus Edge Manager User UI/Product Features/Edge Devices/Edge Device Details/License/

From the **Edge Device Detail**'s **License** tab, you can add a Node-locked license to an edge device or upgrade an existing Node-locked License.

# Access the Edge Device Detail License tab

**To access the Edge Device Detail license tab:**

1. Log in to Litmus Edge Manager.
2. Select the appropriate company and project.&#x20;
3. From the Navigation panel, select **Edge Devices**.
   The *Edge Devices* pane appears.
4. Click an edge device **ID** link in the Edge Devices pane.
   The selected *Edge Device Details* page open with the **Info** tab.
5. From *Edge Device Details* page, select the **License** tab.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/W0_YampyxpHESp8_2KXmG_image.png" size="80" width="1920" height="914" position="center" caption="License tab" showCaption="true"}

# Prepare to Add a License

A license can only be added if there is no existing Node-locked license.

**To prepare to add a license:**

- From the Edge Device Details' *License* tab, scroll down, and click **Add License**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kNLQyP41XSaOCcHQ3vtLF_image.png" size="80" width="1920" height="914" caption="Add License" position="center" showCaption="true"}

The License user interface expands with the *Add a New License* section. By default, the *Online License Activation* tab appears. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SUFzGG5xDTzl5Xec7Q8zr_image.png" size="80" width="1920" height="969" caption="Add License UI expands" position="center" showCaption="true"}

# Prepare to Upgrade a License

A license must exist before it can be upgraded.&#x20;

**To prepare to upgrade a license:**

1. From the Edge Device Details' *License* tab, scroll down, and for the license to be upgraded, click **Upgrade License**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KZbPvSFvqutkkFCmgH8MO_image.png" size="80" width="1920" height="969" caption="Upgrade License" position="center" showCaption="true"}

The License user interface expands with the *Upgrade License* section. By default, the *Upgrade License Online* tab appears. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yowVPZVRoiJEHDLaJuC-h_image.png" size="80" width="1920" height="969" caption="Upgrade License UI expands" position="center" showCaption="true"}

# Online Activation

The process for adding a new license and upgrading an existing license are identical. The only difference is that for upgrading an existing license, the new post-upgrade license will replace the old pre-upgrade license.

**To add/upgrade a license online**:

1. From the *Online License Activation/Upgrade License Online&#x20;*&#x74;ab, in the **Activation key** field, enter the 16-digit Activation key you've received from Litmus.
2. Click **Submit**.
3. If successful, the new license will be added to the Edge Device Details *License* tab user interface.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nd4hJmjmQdUh2eCAJ9wpI_image.png" size="80" width="1920" height="914" caption="Successful Online Activation " position="center" showCaption="true"}

# Offline Activation

The process for adding a new license and upgrading an existing license are identical. The only difference is that for upgrading an existing license, the new post-upgrade license will replace the old pre-upgrade license.

**To add/upgrade a license offline**:

1. From the *Offline License Activation/Upgrade License Offline&#x20;*&#x74;ab, in the **Activation key** field, enter the 16-digit Activation key you've received from Litmus. The Activation key must be a valid key for later steps of this process to operate successfully.
2. Click **Generate Request**.&#x20;
   Under *Offline Activation Request*, an offline activation request string will be generated.
3. To the right of the offline activation request string, click **Copy to clipboard**. This will copy the offline activation request string.
4. Below the offline activation request string, click **License Portal&#x20;**&#x6F;r **Open License Portal**. This will open a new browser tab titled *Licensing Portal*.&#x20;
5. From the *Licensing Portal*, in the **Activation Request** field, enter the copied offline activation request string from Step 3.
6. To the bottom-left of the *Activation Request* field, click on the *I'm not a robot* **Checkbox**.
7. Click **Make License**. If the received Activation Key from step 1 is a valid key, the **Activation Result** text will display.
8. To the right of the **Activation Result** text field, click **Copy content to clipboard** to copy the Activation Result string. Once copied, click **Close**.&#x20;
9. Return to the *Offline License Activation/Upgrade License Online&#x20;*&#x74;ab. In the **Offline Activation Key** field, paste the Activation Result string.
10. Click **Submit**.
11. If successful, the new license will be added to the Edge Device Details *License* tab user interface.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nd4hJmjmQdUh2eCAJ9wpI_image.png" size="80" width="1920" height="914" caption="Successful Offline Activation  " position="center" showCaption="true"}


[title] Show Site Points
[path] Litmus Edge Manager User UI/Product Features/Sites/

After creating a Site in the *Sites* pane, it can be then customized to map edge devices on the Site Image. The Site image will display a list of mapped site points (each point corresponding to an Edge Device), along with additional information on each of the site points.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/K1V0TWET6edR7RQWrj7o7_image.png" size="80" width="1920" height="914" darkWidth="1920" darkHeight="914" position="flex-start" caption="Show Site Points" showCaption="true"}

# Next Steps

- [Map Site Point](docId\:SoSJQ4OH866jpx6mej0Uo)&#x20;
- [Manage a Site and Site Points](docId\:GsNH7bBELH8hEkk3Kf95q)&#x20;


[title] Map Site Point
[path] Litmus Edge Manager User UI/Product Features/Sites/Show Site Points/

You can map site points within a Site's *Show Site Points* page.

# Before You Begin

The selected edge device to be mapped to a Site must be online.

# Map Site Point

**To map an Edge Device as a site point**:

1. From a Site's *Show Site Points* page, click the **Add new Point** icon. The Device dialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zx3i-i40yuZbYAnix4FZE_rww4f5pjbzlce48c6ubtimage.png" size="100" width="1920" height="969" position="center" caption="Add new Point" darkWidth="1920" darkHeight="969" showCaption="true" indent="2"}

2. From th&#x65;*&#x20;Device* dialog box, click on one of the **Edge Device ID** to select a device to map.
   The Edge Device mapping point appears on the Site image. It is initially blue. A new row with the selected Edge Device ID will be added in the table below.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8uKPVo3_vioWESSiqzO7O_sl4hwsrerjj8irvzxdcnyimage.png" size="100" width="1546" height="334" position="center" caption="Device dialog" darkWidth="1546" darkHeight="334" showCaption="true" indent="2"}

3. Notice the Edge Device mapping point.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EgyZYJ-CPzmOoPs0XD1Vn_3sigufp8yal84xifmirwnimage.png" size="100" width="1920" height="969" position="center" caption="Blue Map Point" darkWidth="1920" darkHeight="969" showCaption="true" indent="2"}

4. From the *Site* image, click and drag the blue mapping point on the site map image where the device is actually meant to be physically located. Once moved, the mapping point turns green.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hBjTnYF54PvqrA1wdweJ0_xdsemb0thxgwur42tgykhimage.png" size="100" width="1920" height="969" position="center" darkWidth="1920" darkHeight="969" showCaption="false" indent="2"}

5. Click **Save**. The Edge Device is mapped at the point selected.


[title] Users
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

The *Users&#x20;*&#x6D;odule allows you to manage the users, company teams, and project teams for Litmus Edge Manager.

The User Management pane includes four sections:

- **Administrator***:&#x20;*&#x43;hange the administrator password.
- **Users**: Add, edit, or remove users.
- **Company Teams**: Add and remove teams for a company, and add and remove users for a selected company team.
- **Project Teams**: Add and remove project teams for previously added company teams, and assign roles of n/a, read or write to the selected project team.

# Administrator&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vJtA6oTyqe614tB5teXJk_image.png" size="80" width="1745" height="68" position="center" caption="Administrator account management" showCaption="true"}

****

# Users Management

You can add a new user in *Users* section. Users added in the *Users***&#xA0;**&#x73;ection in the *Users***&#xA0;**&#x6D;odule are permitted to access and manage Litmus Edge Manager.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Kcr8jylib2Hp7WOSVhOcb_oqqdurp1mli9puuvprgokimage.png "Users Management")

| **Action**                             | **Details**                                                                       |
| -------------------------------------- | --------------------------------------------------------------------------------- |
| \[1] **Change Password**               | Update password                                                                   |
| \[2] **Show filter** / **Hide filter** | Search by *User Name*, and *Email*                                                |
| \[3] **Create new user**               | Create a new user                                                                 |
| \[4] **View User Name**                | [Edit a User Profile](docId\:KIJgyCJC1HGIm8mW7dVRK)                               |
| \[5] **Action menu**                   | - Edit Team: [Modify a Company Team](docId\:LDllqh5dtQNonPSuQynkX)&#x20;
- Remove |

# Company Teams

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4eeJZpiRLKLM_C3mER5Bi_-nbhnms3aa1hzmrlpiuyrimage-1.png "Company Teams")

| **Action**                             | **Details**                                                                       |
| -------------------------------------- | --------------------------------------------------------------------------------- |
| \[6] **Show filter** / **Hide filter** |  Search by *Company*, *Team Name*, or *Users*                                     |
| \[7] **Create new company team**       | Ensure you have added at least one company.                                       |
| \[8] **View Team Name**                | [Modify a Company Team](docId\:LDllqh5dtQNonPSuQynkX)                             |
| \[9] **Action menu**                   | - Edit Team: [Modify a Company Team](docId\:LDllqh5dtQNonPSuQynkX)&#x20;
- Remove |

# Project Teams

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JGzY2KvnHNvJnuzaG_YWC_image.png "Project Teams")

| **Action**                                   | **Details**                                                      |
| -------------------------------------------- | ---------------------------------------------------------------- |
| \[10] **Show filter** /**&#x20;Hide filter** | Search by *Company*, *Project*, or *Team Name*                   |
| \[11] **Create new Project Team**            | Ensure you have added at least one company and one project.      |
| \[12]**&#x20;View Team Name**                | [Modify a Company Team](docId\:LDllqh5dtQNonPSuQynkX)            |
| \[13] **Action menu**                        | - Edit Team: [Edit a Company Team](docId\:LDllqh5dtQNonPSuQynkX) |


[title] Experimental Features
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

Experimental features give you early access to select Litmus Edge Manager (LEM) functionality. Enable each feature independently under **Settings** > **Experimental Features**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/U9vfb3PdtoK6qS_rFLJYY_image.png" size="80" isUploading="false" width="1389" height="614" darkWidth="1389" darkHeight="614" position="flex-start" showCaption="false"}

## Edge events management

Edge events management allows you to view events for the entire date range for a device over its lifecycle. See [Events](#) for more information.

:::hint{type="info"}
**Note**: You must enable Forward Events to receive Litmus Edge device alert events.
:::

## Asset management

Asset management enables Digital Twins in LEM. A Digital Twin is a virtual representation of an asset or system that uses real-time data to model how a product or process performs. You can add or remove a Digital Twin model, add or remove tags for a model, and arrange the tags in a hierarchy. See [Digital Twins](docId\:Hvp_-8GHJdHgc7_sTBj-s) for more information.

## Litmus IQ

Litmus IQ is an AI chat agent that accepts questions in natural language based on daily digest report data. For example, you can ask "How many edge devices are online?" or "What's the current disk usage and available space?". Before enabling, configure your AI backend under **Integration** > **Litmus IQ**. See [Litmus IQ](docId\:Ltvm8Gy2es0DyD1RgNQOk) for more information.


[title] Manage Multiple Teams and Members
[path] How-To Guides/Litmus Edge Manager User UI Guides/

In this guide, you will add projects, create teams, and assign roles to users. You will create two projects and assign **Read/Write** permissions to each team member.

- **Read permission**: You can access and view all areas of Litmus Edge Manager, but you can't make any changes to existing configurations/settings.&#x20;
- **Write permission**: You can access all areas of Litmus Edge Manager and make changes to existing configurations/settings.&#x20;

# Before You Begin

You must have the Admin role to do the following:

- Add or manage a company from your Litmus Edge Manager.&#x20;
- Add a user and assign roles to team members.
- See [Assign Admin Privileges ](docId\:xFOg2xRprqINGA9cLsZB-) for more details.

# Step 1: Create a Company

See [Add a Company](docId\:QS1mbPG-tWRCyAAWe5Iya).

# Step 2: Create Projects within the Company

You need to add two projects to see how to manage multiple teams and members for multiple projects. Refer to [Add a New Project](docId\:pfNzvF07t2woIpl4azl5_) to learn more.

The screenshot below shows what the *Projects* page looks like with two added projects.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0S5tKV8rcL5fK18v12-T4_image.png "Adding two testing projects")

# Step 3: Activate an Edge Device

Add at least one Litmus Edge device to each project. This allows you to assign roles to users in the projects. See [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) to learn more.

# Step 4: Create Teams

You can add multiple teams based on the size and structure of your company. We add two *Teams&#x20;*&#x74;o demonstrate the scenario of managing multiple teams from Litmus Edge Manager. 

**To create teams:**

1. Navigate to *Settings&#x20;*&#x61;nd click the **COMPANY&#x20;**&#x74;ab.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sqK-7d9Hkgl9AteZVFdE1_a.png "Settings Page in LEM")
2. Add your team's name in the **Team Name** input box.
3. Click the **ADD TEAM&#x20;**&#x62;utton.
   You can find the newly created team in the *Company Teams* table.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/22_aVCv3m-afKfRlWjUvp_xoxox.png "Company teams table")
4. Repeat the steps above to add another tea&#x6D;**.**
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/h9k_lNp49lbZ8VBLmiQuI_aaa.png "Company teams table with two teams")

# Step 5: Add Users to Teams

To add new team members, invite them through email if they are not already in the system.

**To add new users to teams:**

1. From the **Select Team** dropdown box, select a *Team&#x20;*(Team1 for this example).
2. Enter the *name&#x20;*&#x6F;r *email&#x20;*&#x6F;f the user you want to add to the team in the **User Name / Email** input box.
3. Click the **ADD USER** button.&#x20;
   The *Invite user&#x20;*&#x64;ialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ctzrBvl79pPg8NDBgoYw__d1.png "Add user to a team ")
4. Edit or confirm the user email address and click **SEND**.&#x20;
   Th&#x65;*&#x20;Team Members* table will display the new user details.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N5QXU6rMC4MA_Xl1G8fTs_c.png "Invite user dialog box")
5. Repeat the steps above to add another user to a different *Team&#x20;*(Team2).
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NBIHYXISb5f7mBo3hgqEM_d.png "Team members table")

The user's *Status&#x20;*&#x69;s currently **PENDING&#x20;**&#x61;nd will change to **ONBOARD** after they accept the invitation.

# Step 6: Assign Roles to Teams 

You can assign *Read&#x20;*&#x6F;r *Write&#x20;*&#x72;oles to your team members.

**To assign roles:**

1. Navigate to the **PROJECTS&#x20;**&#x70;age in *Settings.*
2. Make the following selections from the *Project Teams* section:
   - **Select Project**: Select **TestProject1**.
   - **Select Team**: Select **Team1**. 
   - **Select Role**: Select the **Write&#x20;**&#x72;ole.
3. Click **ADD&#x20;**&#x74;o complete the process.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4Tl8nEJn67PdGRUfTqddg_warr.png "Assign different roles to teams")
4. From the dropdown menu labeled **Select Role,&#x20;**&#x73;elect the **Read&#x20;**&#x72;ole for *Team2***.** Click the **ADD&#x20;**&#x62;utton to complete the process. 
   The *Project Teams&#x20;*&#x74;able will display the details of the assigned project roles.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TvoO-yHFH7m9KSJzpVsEH_bb.png "Roles for first testing project")
5. Repeat the steps above for *TestProject2&#x20;*&#x61;nd assign different team roles as described earlier.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6rAnzdiyvN3sHV5UqGtY8_bbb.png "Roles for second testing project")

# Step 7: Accept Invitations to Join Respective Team

Ask the team members to accept the company and team invitation.

After accepting the invitation, the user's status on the Litmus Edge Manager portal changes to **ONBOARD**.

[title] How-To Guides
[path] /


[title] Email
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

This section covers configuring email settings within the Litmus Edge Manager (LEM) Admin Console to enable email notifications.

# Accessing Email Settings

To view and configure email settings, navigate to the **Admin Console&#x20;**>**&#x20;Settings** section and go to the **Email** tab. To begin configuration, ensure the **Enable SMTP&#x20;**&#x74;oggle is switched on.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-6WMS-6WvGGT8sY9xsSSk_image.png)

## Email Configuration Parameters

When configuring email settings, complete the following parameters:

| Action                                        | Details                                                                                                                                                                                                                                                                                                                                                                                                                              |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| \[1]**&#x20;Enable SMTP**                     | SMTP needs to be enabled to invite or add a project team member.                                                                                                                                                                                                                                                                                                                                                                     |
| \[2] **Network**                              | Provide the hostname or IP address of SMTP server.                                                                                                                                                                                                                                                                                                                                                                                   |
| \[3] **Port&#x20;**                           | Specify the port number that SMTP server uses.&#xD;<br />For example, **25&#x20;**&#x66;or plaintext or **587&#x20;**&#x66;or encrypted connections using TLS. For secure connections like Gmail, port **587** is typically used.                                                                                                                                                                                                    |
| \[4] **Start TLS&#x20;**                      | Enable this option if your SMTP server supports and requires the STARTTLS (Start Transport Layer Security) extension for initiating a secure connection. <br />This is commonly used with port **587**.                                                                                                                                                                                                                              |
| \[5] **TLS Required**                         | If your SMTP server mandates a TLS (Transport Layer Security) encrypted connection, enable this option.                                                                                                                                                                                                                                                                                                                              |
| \[6] **Bypass strict certificate validation** | Enable to specify a mail server as trusted when the server uses a self-signed or custom certificate.                                                                                                                                                                                                                                                                                                                                 |
| \[6] **Use Authentication**                   |  If your SMTP server requires authentication (username and password), enable this option. Most modern SMTP servers require authentication.<br />* **(Use authentication-only)** **Enter Username:&#x20;**&#x49;f authentication is enabled, provide the username for SMTP account, typically the full email address.
* **(Use authentication-only) Enter Password:&#x20;**&#x45;nter the password associated with the SMTP username. |
| \[7] **Properties > Send from email**         | Specify the email address that will appear as the sender of emails from the LEM system. <br />This is a required field.                                                                                                                                                                                                                                                                                                              |
| \[8] **Properties > Send from name**          | Enter the name associated with the sender's email address (e.g., Litmus Edge Manager).                                                                                                                                                                                                                                                                                                                                               |
| \[9] **Send Test Email**                      | After configuring the settings, click the **Send test email** button to verify the configuration. <br />* A pop-up window will appear, prompting a recipient email address.&#x20;
* Upon clicking **Send**, the system will attempt to send a test email to the specified address.&#x20;
* A notification will indicate whether the test email was sent successfully or failed.                                                      |

:::hint{type="info"}
**Important:&#x20;**&#x49;f an  email account (e.g., Gmail, Outlook.com) has MFA enabled, an App password may need to be generated and used instead of a regular password.&#x20;

- **Gmail App Passwords:** To create an App Password for **Gmail**, follow the instructions provided by Google: [Sign in with app passwords](https://support.google.com/accounts/answer/185833?hl=en#zippy=%2Cwhy-you-may-need-an-app-password%2C%5B%E2%80%A6%5Dwith-microsoft-outlook%2Cremove-app-passwords).&#x20;
  - &#x20;2-Step Verification must be enabled for the Google Account first.
- **Outlook.com/Office 365 App Passwords:** For Outlook.com or Office 365 accounts with MFA enabled, an App password may need to be created. &#x20;
  - Refer to the following resources for guidance:
    - [Evermap tutorial](https://evermap.com/Tutorial_AMM_AppPasswordOffice365.asp)
    - [Microsoft Support](https://support.microsoft.com/en-us/account-billing/how-to-get-and-use-app-passwords-5896ed9b-4263-e681-128a-a6f2979a7944)
:::


[title] Clickhouse
[path] Litmus Edge Manager Admin Console/Product Features/Integration/

The *Clickhouse Settings* pane in the *Integration***&#xA0;**&#x6D;odule provides you with all the tools needed to set up and manage the *Clickhouse* configuration.

Th&#x65;*&#x20;Clickhouse Settings* pane includes the following sections:

- **Clickhouse Server**: Displays a list of connection URLs for the *Clickhouse ports*. This section includes the supported URLs that can be used to connect to the Clickhouse database, allowing you to enable and manage how clients can connect and retrieve data. The URLs are comprised of the IP address of the Litmus Edge Manager and ports (these ports are default and cannot be changed.):
  - 8123 for HTTP
  - 8543 for HTTPS
  - 9000 for Native
  - 9004 for MYSQL
- **Users**: Displays a list of users that can access Clickhouse. You can add a user name and password, change the user's password, and remove the user.
- **ACL**: Displays a list of users that can access a project database for Clickhouse. You can add an ACL for a project with a specific user. The entries display the company and project name, the database name, and the user name. You can remove an ACL entry.
- **Explore**: Allows you to open the Tabix web interface.

# Access Clickhouse UI

**To access the** **Clickhouse UI:&#x20;**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Integration**.
   Integration's *Kafka* pane by default appears.&#x20;
3. From Integration's navigation sub-panel, select **Clickhouse**.
   Integration's *Clickhouse* pane appears.

Refer to the following actions you can take on Litmus Edge Manager Admin Console's *Clickhouse* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2hSqOVuh6bj8hlBXTDChD_tsz-bilt2-ozhwone8l1timage.png "Litmus Edge Manager Admin Console: Clickhouse 1/2")

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lWo8Z2LkI72YjY5g3Gpcj_6sxmfacmc6pvxul9jyvloimage-1.png "Litmus Edge Manager Admin Console: Clickhouse 2/2")

| **Action**                                  | **Details**                                                                                                                                                                                                                                                                                                                                 |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Change port status state**           | Change the port status                                                                                                                                                                                                                                                                                                                      |
| \[2] **Copy to clipboard&#x20;**            | - Server URL                                                                                                                                                                                                                                                                                                                                |
| \[3]**&#x20;Action menu**                   | * **Edit:&#x20;**&#x59;ou can add or remove up to three IP addresses to a network port interface. The first two IP addresses are shown next to the network port interface as well as information about any additional IPs. Editing or removing an IP address for a port interface causes the current IP to disconnect.
* **Enable/Disable** |
| \[4] **Show filter** /**&#x20;Hide filter** | Search by *User Name*.                                                                                                                                                                                                                                                                                                                      |
| \[5] **Create User**                        | Make a new user                                                                                                                                                                                                                                                                                                                             |
| \[6] **Action menu**                        | - Change Password
- Remove                                                                                                                                                                                                                                                                                                                  |
| \[7] **Show filter** /**&#x20;Hide filter** | Search by *Topic (Company / Project)*, *Database Name*, or *User  Name*                                                                                                                                                                                                                                                                     |
| \[8] **Add ACL**                            | Once an *User Name* has been associated with a *Topic*, it will automatically generate a new *Database Name*.                                                                                                                                                                                                                               |
| \[9] **Action menu**                        | * Remove                                                                                                                                                                                                                                                                                                                                    |
| \[10] **Open Tabix**                        | See [Visualizing ClickHouse Data with Tabix: A Step-by-Step Guide](docId\:A_sy8Z8lQ6kH-WnX0yfYK)                                                                                                                                                                                                                                            |
| \[11] **Copy to clipboard**                 | Topic                                                                                                                                                                                                                                                                                                                                       |
| \[12] **Copy&#x20;**                        | - Database name to clipboard                                                                                                                                                                                                                                                                                                                |
| \[13] **Copy to clipboard**                 | User Name                                                                                                                                                                                                                                                                                                                                   |


[title] Project Settings
[path] Litmus Edge Manager User UI/Product Features/LEM Settings/

A project represents an individual plant that a company operates. Projects contain the edge devices required for plant operations and maintain separate team access privileges from company-level teams.

**Project Settings** provide a centralized location to configure data storage format, backup retention, metrics sync intervals, time zone, team access, MQTT connectivity, and the message schema used by connected devices.

# Why This Matters

Each plant may have different network environments, data requirements, and operational teams. Project-level settings let you configure these independently by plant without affecting other projects in the same company.

# Core Components

Project Settings are organized across four tabs:

| Tab                | Purpose                                                                           |
| ------------------ | --------------------------------------------------------------------------------- |
| **Settings**       | Operational configuration: storage format, backups, metrics, incidents, time zone |
| **Members**        | Team assignment and access privileges for the project                             |
| **Credentials**    | MQTT connection details, SSL certificates, topics, and ACL                        |
| **Message Schema** | JSON schema for messages published by connected devices                           |

# Operational Model

## Backup Retention

LEM retains the most recent backups per edge device. The default retention count is three backups per device.

## Metrics Sync Interval

Configure how frequently LEM polls edge devices for metrics. You can:

- Set a project-specific sync interval (in seconds) in **Enable Edge Device Metrics Sync**.
- Defer to the interval defined in individual edge devices by selecting **Use instance's edge device metrics sync settings**.

# Roles and Permissions

- **Team access**: Assign company-level teams to the project from the **Members** tab. Team definitions are managed in [Company Settings](docId\:XwUuYveHjgIbb0bYwlwSt).
- **MQTT access control**: The **Credentials** tab manages credentials, custom topics, and ACL entries that control which clients can publish to or subscribe from project topics.

# Project Settings

Use the **Settings** tab to configure the project name and description, edge device data storage and backup settings, metrics reporting intervals, incident resolution behavior, and time zone. You can also remove a project from this tab.

## Project

Modify the project name, and add or modify the project description.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/G1RPuCL5D8Z0CAwiM0_CB_image.png" size="80" width="1769" height="228" position="flex-start" caption="Settings: Project" darkWidth="1769" darkHeight="228" showCaption="true"}

## Edge Device Data Storage

You have the option of storing edge device data in ClickHouse. You can store raw data or OMA (Open Mobile Alliance) data.&#x20;

- **OMA data**: OMA data has been deprecated from Litmus Edge and Litmus Edge Manager, but this option is available for backwards compatibility. We recommend selecting **RAW data**.&#x20;
- **RAW data**: We recommend using this option. To visualize data in Grafana, you must select **RAW data**. See [Grafana Dashboards](docId\:YTC1N5pOOjR1elW34jQmF) and [Visualize Child Device Data Using Grafana](docId\:cY2MwkiuvJ2nvNBZhaotC) to learn more.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N0Phg9B7RCZNh8CgxucSE_image.png" size="100" width="1241" height="223" position="flex-start" caption="Edge Device Data Storage section" indent="2" darkWidth="1241" darkHeight="223" showCaption="true"}

## Edge Devices Backups

Configure the backup retention policy for edge devices. By default, Litmus Edge Manager stores the three latest backups per edge device.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/H4GGmmo5GvcN3PdsoVxXQ_image.png" size="80" width="1241" height="193" position="flex-start" caption="Edge Devices Backups section" darkWidth="1241" darkHeight="193" showCaption="true"}

## Edge Device Metrics Sync Interval

Edge Device Metrics Sync controls how often Litmus Edge Manager polls connected edge devices for metrics data. Adjusting the interval lets you balance reporting frequency against network and performance constraints. A shorter interval provides more granular visibility into edge device behavior. A longer interval reduces network load in bandwidth-limited environments.

### Sync Interval Priority

The sync interval can be configured at three levels: device, project and instance. By default, lower-level settings take priority:

- The device sync setting overrides the project setting for that device.
- The project sync setting overrides the instance setting for all devices in the project.

You can also override these priority settings:

- At the device level by choosing to use the project's metrics sync settings (see [Manage](docId\:BoOFh2bJOlfpger0QymmF)).
- Here at the project level by enabling **Use instance's edge device metrics sync settings** (see [Management](docId\:VzYNhoUsLtjETO0F1aFa1)).

:::hint{type="info"}
**Note**: **Edge Device Metrics Sync Settings** is available for Litmus Edge Manager version 2.26.1 and later.&#x20;
:::

### Set the Edge Device Metrics Sync Interval

The default interval is 30 seconds with a valid range of `30` to `604,800` seconds (1 week).&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3GY702hq6YEhqoSXWSlyK_image.png" size="80" width="1461" height="278" position="flex-start" darkWidth="1461" darkHeight="278" showCaption="false"}

Do any of the following:

- Use the **Enable Edge Device Metrics Sync** toggle to enable or disable synchronization of metrics.
- Update the sync interval for the project by providing a new value in **Enable Edge Device Metrics Sync**.
- To instead use the interval defined by the instance, select **Use instance's edge device metrics sync settings**.
- Manually trigger a synch by clicking **Fetch Latest Data**.

## Timezone

Select the time zone for your project. You can remove the time zone and reselect the time zone.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZKbsTNIpo0XQ_SbnfATBM_image.png" size="80" width="1400" height="150" position="flex-start" caption="Settings: Timezone" darkWidth="1400" darkHeight="150" showCaption="true"}

## Remove Project

Remove the selected project. Removing a project cannot be undone.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HvG8eoP3hmM4TnPCFnXAU_image.png" size="80" width="1405" height="91" position="flex-start" caption="Settings: Remove Project" darkWidth="1405" darkHeight="91" showCaption="true"}

# Members Tab

## Teams

Select a company-level team, including role, for the selected project. Available options for a company-level team are based on teams you added in the Company Teams section in **Company Settings** > **Company** > **Company Teams** section (see [Company Settings](docId\:XwUuYveHjgIbb0bYwlwSt)).

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/J7mbBgGlMd0IEUsX0klx-_2023-07-2112-40-08.png "Settings: Members tab")

# Credentials Tab

## Connection

Copy any of the server URLs listed in the connection list.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OnP9A9fOj5OX-AT6PtC3w_image.png" size="80" width="1692" height="263" position="flex-start" caption="Litmus Edge Manager User UI : Settings : Credentials tab : Connection" darkWidth="1692" darkHeight="263" showCaption="true"}

## MQTT Server SSL Certificate

View, copy, or download MQTT server certificate.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WEtdeC6XeSqsNNuvmBDWk_image.png "Credentials tab: Web Server SSL Certificate")

## Web Server SSL Certificate

View, copy, or download Web server SSL certificate.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/q0F3MZ86xxIyo9N5K9Ixg_image.png "Credentials tab: Web Server SSL Certificate")

## Credentials

Add, copy, or remove a credential. Credentials are used for accessing wildcard and custom topics.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/v_tM4WUGnEJIUB2sDwIHf_image.png" size="80" width="1688" height="233" position="flex-start" caption="Credentials tab: Credentials" darkWidth="1688" darkHeight="233" showCaption="true"}

## Topics

You can add, copy, and remove a custom topic. You can copy a default topic.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zcetwhCww3HREhZvzQVCF_image.png" size="80" width="1688" height="475" position="flex-start" caption="Credentials tab: Topics" darkWidth="1688" darkHeight="475" showCaption="true"}

There are three preloaded topics credentials:

- To send the data
- To send request
- To receive responses

## ACL

You can add or remove an access control for a topic associated with the selected project.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/14DiUkV__2sMoGZI20QdI_image.png" size="80" width="1686" height="529" position="flex-start" caption="Credentials tab: ACL" darkWidth="1686" darkHeight="529" showCaption="true"}

# Message Schema Tab

From the *JSON&#xA0;*&#x73;ection, you can view and download the JSON schema of messages from devices that publish to the MQTT data topic.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9d1ZdvBXhKTBCjiKvtGbC_image.png" size="80" width="1920" height="969" position="flex-start" caption=" Settings: Message Schema " darkWidth="1920" darkHeight="969" showCaption="true"}

# Related Topics

- [Company Settings](#)
- [Management](#)
- [Grafana Dashboards](#)
- [Visualize Child Device Data Using Grafana](#)
- [OMA LightweightM2M (LwM2M) Object and Resource Registry](https://technical.openmobilealliance.org/OMNA/LwM2M/LwM2MRegistry.html)&#x20;

[title] Docker Registry
[path] Litmus Edge Manager Admin Console/Product Features/

The Docker module provides you with all the tools needed to have Litmus Edge Manager operate as a Docker registry. This allows you to manage all docker images.&#x20;

The Docker module acts as a toggle for two sub-modules:

**Docker Images**: The Docker Images module allows you to upload images from the network or your hard drive, and pull them from the Docker registry. You can also view details for the image, copy an image pull command, and remove any images stored on the images pane.

:::hint{type="info"}
**Important**: The Docker Registry must be enabled in the *Registry* section of [Docker Settings](docId\:fNOt3P4u58-kh423wRE8K) before you can pull images from the Docker registry.
:::

**Docker Settings**: The Docker Settings module allows you to view the Docker registry URL, copy the Docker registry, copy the login command, and add, update, and remove registry users.


[title] Edit a Company Team
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/Users/

You can add team members to a team from the Company Teams section or the Project Teams section in the User module.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5063Nc-u9fzi0g7RUNIU5_image.png "Modify Company Team")

| **Action**                             | **Details**                                                                                                                              |
| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Edit Team Name**                | Update the team name                                                                                                                     |
| \[2] **Save Team Name**                | Save team's name                                                                                                                         |
| \[3] **Show filter** / **Hide filter** | Search by *Company Name*,*&#x20;Team Name* or *User Name*                                                                                |
| \[4] **Add Team Member**               | Ensure you have added users. SMTP needs to be enabled from [Email](docId\:GcxRXKR3-oc_O9zqz7Jke) to invite or add a project team member. |
| \[5] **Edit/View User Details**        | - [Edit a User Profile](docId\:KIJgyCJC1HGIm8mW7dVRK)                                                                                    |
| \[6] **Action Menu**                   | * Remove                                                                                                                                 |


[title] Create an Email-Alert Trigger for DeviceHub Device Status
[path] How-To Guides/Litmus Edge Manager User UI Guides/Alerts Guides/

In this guide, you will configure an alert and a trigger to detect any unexpected disconnections of DeviceHub devices that connect to Litmus Edge Manager.  Afterward, you will simulate a disconnection for one of the devices to trigger the alert.

# Before You Begin

- You will have to enable SMTP from the Litmus Edge Manager Admin Console. See [Email](docId\:GcxRXKR3-oc_O9zqz7Jke) to learn more. 
- To connect your Litmus Edge instance to Litmus Edge Manager, see [Activate an Edge Device](#). A Litmus Edge instance needs to be activated in Litmus Edge Manager before it can trigger alerts.

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). Select the Device Type **Simulator&#x20;**&#x61;nd Driver Name **Generator**.

# Step 2: Set Up an Email-Alert based Trigger

In this step, you will create an email notification alert and then set up a trigger to use it. Please refer to the [Alerts](docId\:BWq6oBkuTNZgIJBIgQPBE) for further information.

From Litmus Edge Manager, navigate to **Alerts** and follow the steps below. 

## Step 2a: Set Up an Email Alert

**To set up an email alert:&#x20;**

1. From the *Alerts&#x20;*&#x70;ane, click the **Add new Action** icon. &#x20;
   The *Add new Action* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jcIeQ5n7Ahq0K5lkrL8Pq_add-new-action-icon.png" size="80" width="1378" height="719" caption="Add new Action icon" position="center" showCaption="true"}
2. From the *Add new Action* dialog box, enter the following details:
   - **Action Template**: Select EMAIL.
   - **Action Name**: Enter an action name.&#x20;
   - **Enter email**: Enter an email address that will receive the alert.
   - **Notifications Limit**: Enter 1.&#x20;
   - **Interval**: Select *minute*.
3. Click **Add**.&#x20;
   The newly created action appears in the *Action List*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/12fxB2Jd2r2gu7ixNdevB_image.png" size="80" width="1554" height="496" caption="Creating a new email alert" position="center" showCaption="true"}

## Step 2b: Set Up a Trigger

**To set up a trigger:&#x20;**

1. From the *Alerts&#x20;*&#x70;ane, click the **Add new Trigger** icon.&#x20;
   The *New Trigger* pane appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iR8l5AaljyD_E_uqcuXTG_aw.png "Add new Trigger icon")
2. From the *New Trigger* pane, configure the following sections:&#x20;

### Trigger

- **Name**: Enter a name for the trigger.
- **Active**: Select the checkbox.
- **Dashboard**: Select the checkbox.
- **Description**: Enter a description for the trigger.

### Scope

- Choose the **Edge Device** option and select the applicable Litmus Edge instance.

### Source

- Selec&#x74;**&#x20;Metrics&#x20;**&#x61;s the source of the trigger.
- Click **Add&#x20;**&#x6E;ew rule.
- **Select Alert template**: Select *DH device online status.*
  - Enter the value `60` for *Alert Delay, seconds*.&#x20;

### Action

- **Action List**: Select the action you previously created.
- **Continuously**: Select the checkbox to send notifications continuously. &#x20;
- **Notification Period, minutes**: Enter 1.

&#x20;    3\. Click **Save**.&#x20;
&#x20;    The alert trigger appears in the *Trigger&#x20;*&#x4C;ist.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/upvfX3S2xUd7W4-gKdjqv_image.png "Creating a device status email trigger")

# Step 3: Simulate a Disconnection

From Litmus Edge, you will simulate a disconnection with Litmus Edge Manager.

**To simulate a disconnection:**

1. Log in to Litmus Edge.
2. From the Navigational panel, select **DeviceHub.**
   The *Devices&#x20;*&#x70;ane appear&#x73;**.**
3. To disconnect, click the **Stop Device** button located on the *device&#x20;*&#x74;ile that is currently connected.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N14Ct1UcAf_cHDxig9BKF_ax.png "Disabling the Connected Device Status")

# Step 4: Verify Successful Trigger and Alert

From Litmus Edge Manager, you will verify the simulated disconnection.

**To verify the trigger and alert:**

1. Log in to Litmus Edge Manager.
2. Select the appropriate company and project.
   The *Dashboard&#x20;*&#x70;ane appears for the project.
3. From the navigation panel, select **Incidents**.
   The *Incidents&#x20;*&#x70;ane appears.

Confirm you see the incident listed.&#x20;

The email address that was configured for the alert will also receive the respective alert email.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xgsr3FAuSuzvpV1pDZx2R_image.png "Alert Email")


[title] Event ID for User Alert Triggers
[path] Litmus Edge Manager User UI/Product Features/Alerts/

All Litmus Edge events can be classified as one of the five following components:

- cc - Integrations
- mp - Marketplace&#x20;
- dh - Device Hub
- auth - Authentication
- dm - Device Management

Each of these five components contain a list of specific Litmus Edge events. These specific and classified events are Event IDs. When setting up a user alert trigger, you can choose from one of the five components above, then select an Event ID (a specific Litmus Edge event). Once selected, the user alert trigger will be customized to only trigger when the Event ID occurs.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Dw5m6T_nC5K-zkIenGlPV_image.png" size="80" width="1739" height="444" caption="Selecting EventID" position="center" showCaption="true"}

\[1] **Select Component**

\[2] **Event ID**

When creating rules for the *Events* source, the following *Event ID*s are available:

| **For this component** | **These Event IDs are available**                                                                                                                                                                                                                                                                                                      |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| cc - Integrations      | - All&#xD;
- tags.removed&#xD;
- conn.created&#xD;
- conn.removed
- &#xD;tags.disabled&#xD;
- conn.disconnected&#xD;
- tags.added&#xD;
- conn.enabled&#xD;
- conn.create.failed&#xD;
- conn.disabled&#xD;
- conn.remove.failed&#xD;
- tags.enabled&#xD;
- conn.connected                                                               |
| mp - Marketplace       | * All&#xD;
* app.download.failed&#xD;
* app.created&#xD;
* app.deleted&#xD;
* app.exited&#xD;
* app.download.completed&#xD;
* app.failed&#xD;
* app.create.failed&#xD;
* app.restarted&#xD;
* app.download.started&#xD;
* app.delete.failed&#xD;
* app.started&#xD;
* app.stopped                                                      |
| dh - Device Hub        | - All
- device.disabled
- device.remove.failed
- tags.remove.failed
- device.updated
- device.create.failed
- tags.created
- device.update.failed
- tags.updated
- device.connected
- tags.create.failedtags.removed
- device.enabled
- device.removed
- device.created
- device.disconnected                                          |
| auth - Auth            | * All
* user.created
* role.create.failed
* role.deleted
* user.delete.failed
* role.assign.failed
* login.lockdown
* role.unassign.failed
* login.succeded
* role.delete.failed
* role.asigned
* role.created
* user.create.failed
* user.deleted
* role.unassigned                                                                   |
| dm - Device Management | - All
- backup.restore.warning
- deactivation.succeeded
- swupdate.failed
- device.rebooted
- deactivation.failed
- swupdate.applied
- diskspace.limit.exceeded.system
- template.applied
- activation.failed
- backup.restored
- backup.restore.failed
- diskspace.limit.exceeded.user
- activation.succeeded
- template.apply.failed |


[title] Step 7: Set Variables in Litmus Edge Manager
[path] How-To Guides/Litmus Edge Manager User UI Guides/Apply a Parameterized Template During Activation/

Once the activation request is approved, th&#x65;*&#x20;Set Variables* dialog box appears. Enter values for the variables in each variable field, and then click **Apply**.

:::hint{type="info"}
**Note:** Please refer to the list of [country codes for ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) when choosing the appropriate **Country\_Code**.
:::



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pbOVRjenjb0T6uvVOxWv2_image.png" size="70" width="628" height="676" position="center" caption="Set Variables dialog box" showCaption="true"}

The *Stage Activation* icon under *Status&#x20;*&#x73;hows a green check mark, and then the *Stage Provision* icon under *Status&#x20;*&#x73;hows a green check mark.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0CjaIWEcVoXn9nKFVJN60_image.png "Activation Request List pane")

# Next Step

The device with a parameterized template has been activated. Next, we will [Verify Template Parameters are Applied to an Edge Device.](docId\:f6GpuMnlnPi6AOV436JIv)

[title] Set Up Variables for an Application Release
[path] Litmus Edge Manager User UI/Product Features/Marketplace: Catalogs and Applications/Application Releases/Add a Draft Application Release/

Launch variables can be customized for a draft release. These variables will later be presented as configurable parameters during Application deployment (See the *Step 2: Application Settings* section of [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw)). These variables can also be used when setting up a Component (for *Containers*/*Containers Advanced*) or used within a compose configuration file (for *Compose*). See [Set Up Docker Container Configurations for an Application Release](docId\:mebpl6tcgzj9NS2Cmk5cQ) for details.&#x20;

The steps for setting up variables for an application release with one of *Containers*, *Containers Advanced* and *Compose* are identical.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ItsBWSvk3-RqJUuhLuWQW_2023-07-2111-10-31.png "Variables")

| **Action**                                  | **Details**                                                                       |
| ------------------------------------------- | --------------------------------------------------------------------------------- |
| \[1] **Show filter&#x20;**/ **Hide filter** |  Search by *Name*, *Description*, *Default Value*                                 |
| \[2] **Add Variable**                       | You can add multiple variables. You can't add variables for a submitted release.  |
| \[3]  **Edit this variable**                | - You can't edit variables for a submitted application release.&#x20;             |
| \[4] **Delete this variable**               | You can't delete variables for a submitted application release.                   |

## More on Add Variable

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/woFWfnPqKzzT03GJcJ3-8_image.png" size="80" width="1166" height="431" caption="The Add Variable dialog box" position="center" showCaption="true"}

- **Name**: Enter a name for a variable. The name will be used when referring to this variable in [Set Up Docker Container Configurations for an Application Release](docId\:mebpl6tcgzj9NS2Cmk5cQ).
- **Label**: Enter a label for the variable. The label will be used to title the variable during application deployment. (See [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw) and [Deploy a Marketplace Application)](docId\:lbqQnNLNVFPZbk82ZlkSc).
- **Type**: Select one of the following data types:&#x20;
  - `string`
  - `int`
  - `enum`
- **Default Value**: Enter a value for the variable. The entered value will be set as the variable's default value during application deployment.
- **Description**: Enter a description for the variable. The description will be used to explain the variable during application deployment.
- **Required&#x20;**(Optional): Select the check box. This will force the variable to must have a value during application deployment.
- **Private** (Optional): Select the checkbox. This will hide the variable value with asterisks during *Step 2: Application Settings* of [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw). This option is available for Litmus Edge Manager version 2.8.0 and later.

### More on enum

For the `enum` data type, in addition to a default value, you can enter a list of values to the right of *Enum options.&#x20;*&#x54;hen, during application launch (See [Deploy a Marketplace Application](docId\:lbqQnNLNVFPZbk82ZlkSc)), the list of entered values will be presented in a dropdown list, where one of the entered values must be selected. If no values are entered here, then the variable value during application launch can be entered as usual as compared to selecting from a dropdown list.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3ZZCAqKG1ylA2DEWHhWTv_image.png" size="80" width="1173" height="659" caption="enum values" position="center" showCaption="true"}




[title] Step 2: Add Variables to Parameterize Template in Litmus Edge Manager
[path] How-To Guides/Litmus Edge Manager User UI Guides/Apply a Parameterized Template During Activation/

You can convert an existing template to a parameterized template.

You can add variables and parameterize a template from the *Templates&#x20;*&#x70;ane.

**To add variables to a parameterized template:**

1. From the *Navigation&#x20;*&#x70;anel, select **Templates**.
   The *Templates&#x20;*&#x70;ane for the project appears.
2. Click the **Action&#xA0;**&#x6D;enu next to a template that has been parameterized and select **Parameterize Template**.
   The *Template Details* pane opens, displaying the *Variables&#x20;*&#x61;nd *Parameterized Template* panels.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3I4b1EosEkUQpIKkIQ77E_image.png "Templates pane for the project")
3. Click the **+** icon to add the following new variables:
   - **Name:&#x20;**&#x45;nter **Device\_Name01**.
   - **Data Type:** Select **STRING** using the drop-down menu.
   - **Description:** Enter a description for the variable.
   - Click **Save**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-pYvSYVk9DTT702DVo7Sc_image.png" size="70" width="624" height="772" position="center" caption="New Variable dialog box" showCaption="true"}
4. Repeat the above step to add **Device\_Name02&#x20;**&#x61;nd **Country\_Code&#x20;**&#x77;ith *String&#x20;*&#x64;ata types as variables.

After adding new variables, the *Variables* pane will appear as shown below.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4YbPrtt6w0V5DPGYIXg7Z_image.png "Variables pane with three variables")

# Next Step

After parameterizing a template and specifying the variables, you will next [Verify the Variables and Download the Parameterized Template JSON Configuration.](docId\:erQJt-TUzJ10I1jMJ9y1h)

[title] Proxy Settings
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/Network/

You can configure the proxy settings by navigating to **Settings** > **Network** and clicking the **Proxy Settings** tab.

# Proxy

In a corporate environment, servers have no direct access to the internet. Security proxies are used to access servers. Th&#x65;*&#x20;Proxy&#x20;*&#x73;ection allows you to set up the use of a proxy server to access Litmus Edge Manager.

:::hint{type="info"}
**Note**: HTTP proxy is used for offline license activation and for alerts like Webhook and Slack
:::

## Before You Begin

Make sure that a proxy server is created and available.

Refer to the following actions you can take on the Litmus Edge Manager Admin Console's Network pane's *Proxy Settings* tab.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/d2cv0exIWCK-QxiY8KBFt_image.png" size="80" width="1920" height="866" position="center" caption="Proxy Settings Tab" showCaption="true"}

| **Action**                                                   | **Details**                                                                                                                                     |
| ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Enter HTTP host**                                     | Example format (`xxx.xx.xx.216`)                                                                                                                |
| \[2] **Enter HTTP port**                                     | Input HTTP port number                                                                                                                          |
| \[3] **Enter HTTPS host**                                    | Example format (`xxx.xx.xx.216`). Enter the HTTPS host and port if the proxy server operates in HTTPS.                                          |
| \[4] **Enter HTTPS port**                                    | Enter the HTTPS host and port if the proxy server operates in HTTPS.                                                                            |
| \[5] **Toggle Use the same proxy server for HTTPS protocol** |  If the HTTP host proxy also operates as HTTPS, enable this.                                                                                    |
| \[6] **Enter Non-proxy hosts**                               | The format for the hosts are each host's DNS/IP address, separated by&#xD;<br />commas.<br />**Example**: `127.0.0.1`,`localhost`,`192.168.1.1` |
| \[7] **Test setting**                                        | If the test succeeds, a black check mark displays. If the test fails, a red cross is displayed.                                                 |
| \[8] **Save Proxy settings**                                 | Save proxy settings to device                                                                                                                   |


[title] Deploy Edge Applications to Multiple Sites Using Marketplace Catalog Sync
[path] How-To Guides/Litmus Edge Manager User UI Guides/

You can use the Synchronization feature in the Marketplace Catalog to deploy a common list of edge device applications to multiple sites.

This feature allows you to:

- Centralize the deployment and availability of applications to all Litmus Edge (LE) instances, even if they are in air-gapped networks.
- Create and distribute a new containerized application to multiple sites in a simple and scalable way.
- Update a containerized application and send those updates securely to multiple sites.

:::hint{type="info"}
**Notes:&#x20;**&#x54;he Synchronization feature is part of the Marketplace Catalog inside the Litmus Edge Manager. It is available in Litmus Edge Manger 2.11.0 and later.
:::

# Overview

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JkoG6vADkQ1156-fFfccf_cascade-catalog-sync-v2drawio.png" size="80" width="565" height="345" position="center" caption="Cascade Catalog Sync Feature Overview" showCaption="true"}

At a centralized location, the admin user who is responsible for distributing applications can create a primary catalog. Then, an end-user at an individual site can create a secondary catalog to synchronize with the primary catalog. An authorization process is used to establish a secure relationship between the two catalogs.

The end-user can sync the secondary catalog with the primary to receive new or updated applications. After the synchronization process is complete, the secondary catalog will have identical applications and registries as the primary catalog. This feature ensures that all sites have access to the same applications that can be deployed to edge devices. As a result, local IT teams will experience fewer maintenance and troubleshooting issues, reducing overhead costs.

# User Scenario: Syncing Application Updates to Global Manufacturing Sites

A global manufacturing company has recently released Version 2 of its Analytics application. The application is part of the Company's suite of tools offered through the primary Marketplace Catalog and is critical for its customers' day-to-day operations. The company must ensure that all its clients worldwide, operating in different site locations, receive this update in a timely and secure manner.

## Primary Site - Headquarters (Canada)

1. The Company's IT administrator logs into the Litmus Edge Manager (LEM) with the Primary marketplace catalog at their headquarters located in Canada.
2. They upload the new version of the application into the Primary Catalog.
3. The administrator notifies all secondary catalog admins of available updates via email.

## Secondary Site - Customer Location (Japan)

1. The local IT staff at the Japan site receive a notification that a new application version is ready for synchronization.
2. The local IT staff logs into their local LEM with the Secondary marketplace catalog.
3. They manually initiate a sync with the primary catalog to pull the new application version.
4. The new version is then deployed across all local edge devices within the site.

## Outcome

All LE devices at the Japan site are successfully updated to Version 2 of the Minio application, with minimal disruption to the site's operations.&#x20;

The Cascade Catalog Sync feature ensures that the updated application in the primary catalog is available to all global sites, maintaining consistency and efficiency across the company's vast operations.

# Before You Begin

- Ensure you have two working instances of LEM to set up a Primary (Canada) and Secondary (Japan) site.

If you are ready for the user scenario, proceed with the first article listed below.

**This process includes the following steps:**

- [Step 1: Create Primary Catalog With List of Applications](docId\:qBOZmPgvAQv8-_JM5vYv_)
- [Step 2: Create Secondary Catalog](docId\:ZO8hyYhJOLAEiH2tHM7-W)
- [Step 3: Establish Secure Connection Between Primary and Secondary Catalog](docId\:s8JGesiGUpFPEHtDB_cfv)
- [Step 4: Synchronize Secondary Catalog to Primary Catalog](docId\:ILFE6vhXxhgSqhuISb8Dl)
- [Step 5: Deploy an Application from Secondary Catalog to Edge Devices](docId\:RHJyEcJ3Pt9WzLBsSpTMY)
- [Step 6: (Optional) Update an Application Version](docId\:iQ9xXw9m86Q7KzajiMQQt)


[title] Pull Image from Docker Registry
[path] Litmus Edge Manager Admin Console/Product Features/Docker Registry/Docker Images/

When *Pull image from Docker Registry&#x20;*&#x69;s clicked, the following fields can be entered. See below for more information on each field. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GbWCw3vUjow4r40JoRmKw_image.png" size="80" width="622" height="406" position="center" caption="Docker Images : Image Pull" showCaption="true"}

| **Action**                               | **Details**                                                                                                                                                                                     |
| ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Enter Image Name&#x20;**          | Input the name for image                                                                                                                                                                        |
| \[2] **Enter Tag**                       | The `latest` tag is used if this field is left blank.                                                                                                                                           |
| \[3] **Enter Docker Registry URL&#x20;** | - The URL can be left blank and if it's blank, the default Docker Registry (docker.io) is used.<br />If you have your own Registry, you can use its URL, username, and password to pull images. |
| \[4] **Enter Username**                  | Enter the username                                                                                                                                                                              |
| \[5]**&#x20;Enter Password**             | Enter the password                                                                                                                                                                              |
| \[6] **View Password**                   | Display password if needed                                                                                                                                                                      |
| \[7] **Pull&#x20;**                      | Pull the image                                                                                                                                                                                  |


[title] Docker Settings
[path] Litmus Edge Manager Admin Console/Product Features/Docker Registry/

The *Docker Settings* sub-module allows you to enable Litmus Edge Manager as a secure, private Docker registry. This allows you to ensure that sensitive Docker applications can be shared and controlled within the Litmus Edge Manager environment, but are not stored outside of it.

The Docker Settings sub-module allows you to view the Docker Registry URL, copy the Docker Registry, copy the login command, and add, update, and remove Docker Registry users.

Docker Settings includes the following sections:

- **Registry:** Copy the Docker registry URL and enable or disable the Docker Registry.
- **Registry Proxy:** Enable or disable the Registry proxy authentication and state.
- **Registry Users:** Enable or disable Authentication, add and remove a Docker Registry User, Change a Docker Registry User password, and copy the Docker Registry User login command.

# Before You Begin

Make sure you have permissions to the Docker Registry.

Refer to the following actions you can take on Litmus Edge Manager Admin Console's *Docker Settings* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xOAegetR1s_NEF_Mpxpvq_rk0l2akddfcf9itqq5i8qimage.png "Docker Settings")

| **Action**                             | **Details**                                                                                                                                                                                      |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| \[1] **Enter Image Name&#x20;**        | Input image name                                                                                                                                                                                 |
| \[2] **Enter Tag**                     | Input the tag name                                                                                                                                                                               |
| \[3] **Enter Username**                | Input the username                                                                                                                                                                               |
| \[4] **Enter Password**                | Input the password                                                                                                                                                                               |
| \[5]**&#x20;View Password**            | Display the password                                                                                                                                                                             |
| \[6] **Save Password**                 | Save the password                                                                                                                                                                                |
| \[7] **Pull&#x20;**                    | Ensure you have permissions to the Docker Registry. When the Docker registry proxy is enabled, you cannot delete an image.                                                                       |
| \[8] **Toggle Authentication**         | Ensure you have permissions to the Docker Registry. If authentication is disabled then registry credentials are not verified at the edge side.                                                   |
| \[9] **Show filter** / **Hide filter** | Search by *Username*.                                                                                                                                                                            |
| \[10] **Create Docker User**           | Authentication must be enabled first. The default user **mpcs\_em\_docker&#xA0;**&#x61;lready exists. If authentication is disabled then registry credentials are not verified at the edge side. |
| \[11] **Copy to clipboard**            | - login command&#x20;                                                                                                                                                                            |
| \[12] **Action menu**                  | * Update
* Remove                                                                                                                                                                                |


[title] Notification Settings
[path] Litmus Edge Manager User UI/Product Features/Alerts/

From the *Notification Settings* section, you can add, modify, and view actions that is used by a trigger. The action sends a notification (Email, Slack, Webhook, Pagerduty) when a trigger is applied.

# Access Notification Settings UI

**To access the Notification Settings UI:**

1. Log in to Litmus Edge Manager.
   &#x20;The *Dashboard&#x20;*&#x70;ane by default appears.
2. From the Navigation panel, **Alerts**.
   The *Alerts* pane appears.&#x20;
3. From *Alerts&#x20;*&#x70;ane, select **Notification Settings**.
   The *Notification Settings&#x20;*&#x74;ab appears.

Refer to the following actions you can take on the *Events & Alerts >* *Notification Settings&#x20;*&#x74;ab. The user interface below is for Litmus Edge Manager version 2.22.1 and later.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tuWEXO8NepRstL67Jg5rL_image.png)

| **Action**                 | **Details**                                |
| -------------------------- | ------------------------------------------ |
| \[1] **Action name**       | Specify the name of the action.            |
| \[2] **Type of Action**    | Select the action category or type.        |
| \[3] **Edit Action&#x20;** | Modify the details of the selected action. |
| \[4] **Remove Action**     | Delete the selected action from the list.  |

# Add a New Action

Click the **Add a new action (+)&#x20;**&#x69;con to open the dialog box to add an action category.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ccfh1pWaPfAIck4e57d46_image.png" size="72" width="1146" height="472" position="center" showCaption="false"}

Choose the Action Template (Email, Slack, Webhook, Pagerduty) and then complete the configuration to apply a trigger.

[title] Triggers
[path] Litmus Edge Manager Admin Console/Product Features/Alerts/

When you create a trigger, you create the trigger message contents, source for the trigger, and actions to start when the triggers is activated. When you create a trigger you define the:

- trigger source.
- trigger subject and message content that is sent to recipients. The subject and message fields can contain a combination of text and variables.
- response action that occurs after the alert triggers.&#x20;

To specify the trigger source:

1. Navigate to **Alerts** > **Triggers**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1ts7q5-8S0YMnUwbvNpuh_screenshot-2026-01-09-111304.png" size="80" width="1800" height="565" position="flex-start" showCaption="false" indent="2"}

2. Click add trigger at the right of the page.
3. In **Source**, create trigger rules.
4. To create a rule based on an edge device instance metric:
   1. Select **Instance Metrics**.
   2. Select an alert template from the list. For example, select `Disk space is low`.
   3. Select additional values to create the rule. In this case, select the minimum free disk space percentage and the time to wait between the event occurring and sending the notification, as shown below.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3xRmz4JzE1UjGquKmAlHN_image.png" size="80" width="1118" height="191" position="flex-start" showCaption="false" indent="3"}

5. To create a rule based on an edge device instance event:
   1. Select **Instance Events**.
   2. In **Component**, select the component source, for example, `Project`.
   3. In **Event ID**, select an event ID trigger. For example, select from `project.deleted`, `project.created`, or `project.updated`.

Next create the trigger message

To create the trigger message:

1. In the **Trigger** section:
   1. Provide a trigger name and description.
   2. In **Subject**, create the notification subject by entering text and selecting one or more variables.
   3. In **Message**, create the notification message by entering text and selecting one or more variables.

Next, specify the response action that occurs immediately after the alert triggers.

To specify the trigger action:

1. In **Actions**, select an action from the action list.
2. To specify that the notification is delivered repeatedly, select **Continuously** and define the notification frequency in minutes.&#x20;
3. Click **Save**.


[title] Git Provider
[path] Litmus Edge Manager Admin Console/Product Features/Integration/

Litmus Edge Manager (LEM) supports native integration with Git providers such as GitHub, GitLab and Azure DevOps. This integration enables organizations to manage Edge templates using standard Git workflows, ensuring version control, auditability, and centralized governance.

The Git Provider integration allows LEM to:&#x20;

- Store and version template files in a Git repository
- Automatically synchronize template updates of Edge devices to Git
- Track template changes across companies and projects
- Maintain a consistent configuration baseline across distributed deployments

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Bu01wJ2HxZb-PbP99pfOH_image.png)

This diagram shows how template synchronization occurs from edge devices to LEM and to your Git provider.

:::hint{type="info"}
The current implementation operates in one-directional manner and is intended primarily for audit and tracking purposes.&#x20;
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jwAq0GUdKSiCZFoFvf4yw_git-integration-feature-2.png" size="80" width="22326" height="11239" position="flex-start" showCaption="false"}

## Prerequisites

The configuration requires:

- Administrative access to Litmus Edge Manager Admin Console
- A valid SSH GIT URL (for example, git\@github.com\:org/repo.git)
- An ED25519/RSA-SHA2-512 public key generated by LEM
- A deploy key with write access added to the Git repository

## Synchronization Model

LEM supports the following synchronization mechanisms:

- Synchronization on a schedule:
  - Hourly
  - Daily at 00:00 UTC
  - Weekly on Monday at 00:00 UTC
  - Monthly on the 1st at 00:00 UTC
- Synchronization triggered during edge device backup
- Synchronization that you triggered manually

## Error Handling and Validation

LEM performs validation and provides actionable error messages for:

- Valid SSH keys
- Whether the repository is accessible
- Write permissions
- Template schema compliance
- Detecting sync conflicts

## Security Considerations

- Authentication uses ED25519/RSA-SHA2-512 SSH keys
- Deploy keys are scoped to a single repository
- Write access is required in the Git Provider for LEM to commit changes
- No credentials beyond the SSH keypair are stored

## Best Practices

- Use a dedicated private repository for Edge templates
- Restrict deploy key permissions to the minimum required scope
- Apply branch protection rules for production environments
- Use scheduled sync for predictable updates
- Use manual sync for validation and testing

# Configuration workflow

The following workflow shows how you set up Git Provider.

:::hint{type="info"}
**Note:** Also see the [How to Setup Git Provider Integration](docId\:lrbAPAbg_jke-fuTAXF-j).
:::

**Setup a GitHub repository**

1. In GitHub, create a new private repository.
2. Record the repository name.

**Configure Git Provider in LEM**

1. In LEM, navigate to **Integration&#x20;**>**&#x20;Git Provider**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5_q9UpyHFiV5ihsLqsuO6_image.png" size="80" width="1354" height="523" position="flex-start" showCaption="false" indent="2"}

2. Select the Git provider (GitHub, GitLab, or Azure DevOps).
3. Enter the **SSH URL&#x20;**&#x66;rom the private repository that you created with the following syntax: `git@github.com:github-name/github-repo.git`
4. Copy the generated **SSH Public Key**.
5. Add the public key to the repository. For example, in GitHub add the public key to the Git repository as a **deploy key&#x20;**&#x77;ith `write access`.
6. In LEM, validate access to the repository. Confirm that the `Repository access successful` message displays.
7. Save the configuration.

**Configure Project Tracking**

You set tracking at the project level.

1. Navigate to **Edge Devices&#x20;**>**&#x20;Edge Git Integration**.
2. Set the synchronization frequency: hourly, daily, weekly, or monthly. Syncs occur at 00:00 (UTC) daily, weekly on Mondays, and monthly on the first day of the month.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8Ea7h6HQttDxgOFaXT2oD_image.png" size="80" width="1917" height="673" position="flex-start" showCaption="false" indent="2"}

3. For each company and project, choose when syncs occur. To set syncs:
   - Based on the synchronization frequency that you set, select **Track**.
   - When the device is backed up, select **Sync on Backup**.
4. To run the synchronization manually, select **Run Manual Sync&#x20;**&#x66;rom the **Actions** menu.

Configure integration for edge devices at the company and project level in **Project Tracking**. View the number edge devices and synced devices, last sync and commit ID, and integration status. The following columns display in **Project Tracking**:

| **Field**           | **Description**                                                                                                   |
| ------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Company&#xD;        | Company to which the devices belongs                                                                              |
| Project&#xD;        | Project to which the devices belong                                                                               |
| Track               | Enable to push changes to Git based on the selected synchronization frequency                                     |
| Sync on Backup&#xD; | Enable to push changes to Git when the device is backed up                                                        |
| Edge Devices&#xD;   | Number of devices in the project                                                                                  |
| Synced Devices&#xD; | Number of devices that have been synchronized                                                                     |
| Last Sync Time&#xD; | The last time that a synchronization was performed from all edge devices in the current project to LEM            |
| Last Commit&#xD;    | Git commit hash which is a unique identifier representing a specific commit in a Git repository                   |
| Status              | Status of the integration: `NEW`, `WAITING`, `RUNNING`, `CANCELING`, `SUCCESS`, `ERROR`, or `CANCEL`              |
| Action&#xD;         | Options to&#xD; enable or disable tracking on the predefined schedule, on device backup, or to run a manual synch |






[title] Syslog
[path] Litmus Edge Manager Admin Console/Product Features/Integration/

:::hint{type="info"}
**Note**: The Syslog feature is available for Litmus Edge Manager 2.7.0 and later.
:::

Litmus Edge Manager (LEM) supports automatic log forwarding to an external Syslog server. All LEM System Events (See *System Events* tab of [Events](docId\:OnS8mKWpVtKc93cOoRAKm)) are automatically forwarded.

This enables you to collect the forwarded logs on the Syslog server for Security Information and Event Management (SIEM) systems.

# Access Syslog UI

**To access the Syslog UI:&#x20;**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Integration**.
   Integration's *Kafka* pane by default appears.&#x20;
3. From Integration's navigation sub-panel, select **Syslog**.
   Integration's *Syslog* pane appears.

Refer to the following actions you can take on Litmus Edge Manager Admin Console's *Syslog* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7bnq0_qm1mVHMnXZTBuCx_2023-07-2112-49-45.png "Litmus Edge Manager Admin Console: Syslog")

| **Action**                              | **Details**                                                                                                 |
| --------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| \[1] **Enable/Disable logs forwarding** | Enable/Disable logs forwarding<br />Allows you to toggle the status of log forwarding to the Syslog server. |
| \[2] **Enter Syslog server host**       | Specifies the hostname or IP address of the Syslog server for log forwarding.                               |
| \[3] **Enter port (UDP)**               | Configures the UDP port number used for sending logs to the Syslog server.                                  |
| \[4] **Send test message**              | Sends a test message to the Syslog server to verify connectivity and functionality.                         |


[title] Cloud
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

Litmus Edge Manager can be configured to store updates, backups, and other data in an external storage location.&#x20;

# Before You Begin

Create a Google Service Account with a Google Cloud Project. Then, generate and retrieve a GCP service account key (`.json`) file.

***

For Litmus Edge version 2.17.0 and later, you have two options for setting Cloud Credentials: GCP SA Key Authentication and GCP Workload identity federation (OIDC)

# Service Account Keys and Workload Identity Federation Explained

Review the following descriptions of service account keys and workload identity federation to determine which option is the best for your specific requirements.&#x20;

## Service Account Keys

Each Google service account is associated with a public/private RSA key pair. The Service Account Credentials API uses this internal key pair to create short-lived service account credentials, and to sign blobs and JSON Web Tokens (JWTs). This key pair is known as the *Google-managed key pair*.

In addition, you can create multiple public/private RSA key pairs, known as *user-managed key pairs*, and use the private key to authenticate with Google APIs. This private key is known as a *service account key*.&#x20;

See [Service account keys](https://cloud.google.com/iam/docs/service-account-creds#key-types) to learn more.&#x20;

## Workload Identity Federation

Workload Identity Federation allows you to can grant on-premises or multi-cloud workloads access to Google Cloud resources without using a service account key. You may select to use this option because service account keys are powerful credentials, so they can present a security risk if they are not managed correctly.

With identity federation, you can use Identity and Access Management (IAM) to grant external identities IAM roles, including the ability to impersonate service accounts. This approach eliminates the maintenance and security burden associated with service account keys.&#x20;

### Workload Identity Pools

A *workload identity pool* is an entity that lets you manage external identities. You will review and have the option to customize this parameter when setting up these credentials.&#x20;

### Workload Identity Pool Providers

A *workload identity pool provider&#x20;*&#x69;s the entity that describes the relationship between Google Cloud and your identity provider (IdP).&#x20;

Workload identity federation follows the [OAuth 2.0 token exchange](https://tools.ietf.org/html/rfc8693) specification. You provide a credential from your IdP to the [Security Token Service](https://cloud.google.com/iam/docs/reference/sts/rest), which verifies the identity on the credential, and then returns a federated token in exchange.&#x20;

See the following to learn more:

- [Workload identity federation](https://cloud.google.com/iam/docs/workload-identity-federation)
- [IAM roles](https://cloud.google.com/iam/docs/overview#roles)

# Option 1: Configure GCP SA Key Authentication

Complete the following steps to configure GCP SA Key Authentication.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mt7dGevgubXY8R9vegZ6a_image.png)

## Step a: Set Cloud Credentials&#x20;

**To set cloud credentials with GCP SA Key Authentication**:

1. In the *Cloud Credentials* section, click **GCP SA Key Authentication**.&#x20;
2. Click the **Generate key** button. A bash script with commands will be displayed. Click **Copy to clipboard** to copy the bash script.
3. Modify the following bash script's variables value as per your setup:
   - `GCP_PROJECT_ID`
   - `SA_NAME`
   - `SA_KEY_FILE_NAME`
4. Run the bash script on Google Cloud console. A file called `sa_key.json` (or whatever `SA_KEY_FILE_NAME`'s value was) should be generated. This is the GCP service account key file for the next step.
5. Click the **Upload Key** button and navigate to the GCP service account key (`.json`) file on your device. Likewise, you can also copy the file contents of the file into the *GCP service account key in JSON format* text box.
6. (Optional) Click the **Validate** button to verify service account key file contents.
7. Click **Save**. Attempting to *Save* will automatically perform a *Validate*. If the save is successful, the *Google Cloud Storage (GCS)* radio button will be available for *Storage Settings*. A green checkmark will display with a message confirming the file contents have been saved.

## Step b: Set GCP SA Key Rotation Policy

:::hint{type="info"}
**Note**: This is available for Litmus Edge Manager version 2.14.0 and later.&#x20;
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1xDifSVhe9c1U6CQIEDCJ_image.png)

Configure the rotiation interval, in days, that the GCP Service Account key is automatically rotated. If 0 is entered, key rotation is disabled.&#x20;

## Step c: Set Storage Settings

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/p7zk5jhVzjJmu7MJDvBbt_image.png)

You can configure the storage settings by using local storage or Google Cloud Storage (GCS).&#x20;

If you select **Local**, Litmus Edge Manager will use its own local data space to store data. A bucket name is not required.&#x20;

If you select **Google Cloud Storage (GCS)**, a bucket name is required, which is the name of a folder in the Google Cloud Storage file system.

**To set Google Cloud Storage:**

1. Select **Google Cloud Storage (GCS)**.&#x20;
2. Click the **Create bucket** button. A bash script with commands will be displayed. Click **Copy to clipboard** to copy the bash script.
3. Modify the following bash script's variables value as per your setup:
   - `GCP_PROJECT_ID`
   - `SA_NAME`
   - `BUCKET_NAME`
4. Run the bash script on the Google Cloud console. It will generate a GCS bucket and display the value of `BUCKET_NAME`. The default value for `BUCKET_NAME` is `litmus-development--data`.
5. Below the *Bucket Name* field, enter the **Bucket Name** from the step above.&#x20;
6. (Optional) Click the **Validate&#x20;**&#x62;utton to verify the Bucket Name.
7. Click **Save**. The connection will be validated.&#x20;

# Option 2: GCP Workload identity federation (OIDC)

:::hint{type="info"}
**Note**: The ability to configure GCP Workload identity federation (OIDC) is available for Litmus Edge Manager 2.17.0 and later.&#x20;
:::

Complete the following steps to configure GCP Workload identity federation (OIDC).&#x20;

Learn more about [Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation).&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6VAepoS1Y8vvl5dCuq5iR_image.png)

**To set cloud credentials with GCP Workload identity federation:&#x20;**

1. In the *Cloud Credentials* section, click **GCP Workload identity federation (OIDC)**.&#x20;
2. Configure and review the following parameters.&#x20;
   - **GCP Project ID**: Refer to your GCP Project ID. See [Locate the Project ID](https://support.google.com/googleapi/answer/7014113?hl=en) and [Creating and managing projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) to learn more.&#x20;
   - **GCP Project Number**: Refer to your GCP Project Number. See [Locate the Project ID](https://support.google.com/googleapi/answer/7014113?hl=en) and [Creating and managing projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) to learn more.&#x20;
   - **Workload Identity Pool Name**: A default value is provided that you can customize.&#x20;
   - **Provider Name**: A default value is provided that you can customize.&#x20;
   - **Service Account Name**: A default value is provided that you can customize.&#x20;
   - **Edge Device**: This value can't be customized. You will need to manually grant IAM roles on the Google Pub/Sub topic connected to this device.&#x20;
   - **Litmus Edge Manager instance**: This value can't be customized.&#x20;
3. Click **Download JWK file**.&#x20;
4. Click **Generate script**.&#x20;
5. Copy and execute the script.&#x20;
6. Manually grant the following roles on the relevant Google Pub/Sub topic that is connected to the principle Edge device (Edge Device parameter). See [Access Control with IAM](https://cloud.google.com/pubsub/docs/access-control) to learn more.&#x20;
   - PubSub Publisher
   - PubSub Subscriber
   - PubSub Viewer
7. Click **Validate**.&#x20;
8. If the validation is successful, save the configuration. If the validation fails, review the error details.&#x20;



For storage settings, the only option is *Local*. Litmus Edge Manager will use its own local data space to store data. Google Cloud Storage is not supported while using *GCP Workload identity federation* credentials.&#x20;

[title] Step 8: Verify Template Parameters are Applied to an Edge Device
[path] How-To Guides/Litmus Edge Manager User UI Guides/Apply a Parameterized Template During Activation/

There are many types of variables that we can apply to a template. This guide uses the following verification procedure as an example.

**To verify template parameters are applied to an edge device in Litmus Edge:&#x20;**

1. From another browser tab, log in to newly activated Litmus Edge device.
2. From the Navigation panel, select **DeviceHub&#x20;**>**&#x20;Devices**.
   The *Devices&#x20;*&#x70;ane appears.
3. Verify the device for which the template was applied and ensure that the variables entered in the *Set Variables* dialog box appear correctly.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YbxJlsSrKIhnXxynrrggU_image.png "DeviceHub Devices Pane")
4. Next, navigate to **System&#x20;**> **Network&#x20;**> **Configure&#x20;**&#x74;o verify the template parameter for the Country Code.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/seiOSjiBPJYTaQAh9VEfM_image.png "System > Network > Configure pane")
5. You can also check the Country from the *Terminal User Interface (TUI)&#x20;*&#x6F;f an edge device. Learn how to [Change Country in Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP).
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YuKQm37G7bs9w950EhgK6_image.png "Terminal User Interface (TUI) of an edge device")


[title] Prometheus
[path] Litmus Edge Manager Admin Console/Product Features/Integration/

:::hint{type="info"}
**Note**: The Prometheus feature is available for Litmus Edge Manager 2.10.1 and later.
:::

Litmus Edge Manager (LEM) supports the integration of a Prometheus monitoring system for collecting metrics data. From this integration's metrics data, you may connect the Prometheus monitor system to a third-party client (such as Grafana) to retrieve, access, and use the metrics data for a more thorough analysis.&#x20;

Litmus Edge Manager also supports the ability to connect to an external Alert Manager. When successfully connected, the [Incidents](docId:81uhi0Waj080EuLYceOaf) alerts are sent to the external Alert Manager. This enables you to use an external Alert Manager of your choice to provide a more comprehensive alert management system.

# Access Prometheus UI

**To access the Prometheus UI:&#x20;**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: `https://[LEM IP address]:8446`.
2. From the navigation panel, select **Integration**.
   The *Kafka* pane by default appears.&#x20;
3. From Integration's navigation sub-panel, select **Prometheus**.
   The *Prometheus* pane appears.

Refer to the following actions you can take on the *Prometheus* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KAYqplksIBM6ZlTjLBUI0_2023-07-2112-48-52.png "Integration : Prometheus")

:::hint{type="info"}
**Note**: If you are unable to connect to the Prometheus URL, ensure inbound port 9090 is open.
:::

| **Action**                                  | **Details**                                                                          |
| ------------------------------------------- | ------------------------------------------------------------------------------------ |
| \[1] **Toggle Prometheus endpoint**         | Enable or disable the Prometheus endpoint connection.                                |
| \[2]**&#x20;Copy Prometheus URL**           | Copy the Prometheus URL for use in third-party applications.                         |
| \[3]**&#x20;Enter Alert Manager Address**   | Input the address of the external Alert Manager for incident alerting.               |
| \[4] **Show filter** /**&#x20;Hide filter** | Toggle the visibility of filtering options within the Prometheus pane.               |
| \[5] **Test Alert Manager**                 | Verify the connection to the external Alert Manager for successful alert management. |

:::hint{type="info"}
**Note**: Litmus Edge Manager must have a successful connection to a running Alert Manager at an external server (at the Alert Manager's address) for a successful test.
:::


[title] Tokens
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

:::hint{type="info"}
**Note**: The Tokens feature is available for Litmus Edge Manager 2.7.0 and later.
:::

The *Tokens&#x20;*&#x6D;odule allows you to create, view, and remove long-term tokens that can access your Litmus Edge Manager companies and their projects. These tokens help facilitate better communication between a Litmus Edge Manager and its Litmus Edge instances. You can use the API to mass deploy and configure edge instances. These tokens are best utilized within a CI/CD script to manage Litmus Edge Manager and its Litmus Edge instances.

Each token has the following configuration parameters:&#x20;

- **Token name**
- **Time to live**: The expiration date of the token
- **Scope:&#x20;**&#x54;he permissions the scope has and how many companies/projects the token can access
- **Edge API Bridge** (available for Litmus Edge Manager 2.15.0 and later): Allows you to integrate multiple Litmus Edge REST APIs through a single Litmus Edge Manager endpoint.

After creating the token, you can use it in the API through the custom field `X-AuthToken` in the HTTP header.&#x20;

For example:&#x20;

`X-AuthToken: zZA82pIo70xzsrwmSl1f0P6DSfvuZgo1`

# Access REST API Documentation

Access REST API documentation for Litmus Edge Manager in the [Litmus API Portal](https://api.litmus.io/).&#x20;

# Access Tokens UI

**To access the Tokens UI:&#x20;**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Settings**.
   Settings' *Domain/SSL* pane by default appears.&#x20;
3. From *Settings*' navigation sub-panel, select **Tokens**.
   Settings' *Tokens* pane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/idiPaC-9RkW4vEXp7rXCk_image.png" size="80" width="1920" height="866" position="center" caption="Tokens UI" showCaption="true"}

# Next Steps

- [Add Tokens](docId\:yv5gGJYMRsqqEK4dbNEwn)&#x20;
- [Manage Tokens](docId\:XHm8S32uEHfGTYfVuql7W)&#x20;




[title] Apply a Parameterized Template During Activation
[path] How-To Guides/Litmus Edge Manager User UI Guides/

You can apply a parameterized template to one or more edge devices during activation.

# User Scenario

In a manufacturing setting, you need to configure multiple edge devices for different locations that have similar attributes. For example, DeviceHub Devices are needed for one edge device, and the same DeviceHub Devices are needed for another edge device at a different site. To save time on manually configuring each attribute in every Litmus Edge instance, you can use the Parameterized Template feature in Litmus Edge Manager (LEM).&#x20;

This feature allows you to create a template of your edge devices with specific attributes and set the variables that affect devices. Then, you are asked to supply input values to these variables during the activation request confirmation from your LEM.

For this guide, we require two DeviceHub Devices in our template. We will then parameterize our template with three variables:

- **Device\_Name01:&#x20;**&#x41; string variable to change the name of the first DeviceHub Device in Litmus Edge.
- **Device\_Name02:&#x20;**&#x41; string variable to change the name of the second DeviceHub Device in Litmus Edge.
- **Country\_Code:** A string variable to change the Country Code of Litmus Edge.

If you are ready for the user scenario, proceed with the first article listed below.

**This process includes the following steps:**

- [Step 1: Create a Template with Specific Attributes](docId\:dum2moplwElHfhKSncvyI)
- [Step 2: Add Variables to Parameterize Template in Litmus Edge Manager](docId\:L9Hb3woVugLNldub90iRQ)
- [Step 3: Apply the Variables and Download the Parameterized Template JSON Configuration](docId\:erQJt-TUzJ10I1jMJ9y1h)
- [Step 4: Create a Basic Activation Configuration with Parameterized Template in Litmus Edge Manager](docId\:jzPhm4AiKUMCZe9HvzL-a)
- [Step 5: Create an Activation Request in Litmus Edge](docId\:gwn-33G0VPJYSyIxoTfqj)
- [Step 6: Approve the Activation Request in Litmus Edge Manager](docId\:CVo0Mhk6WBQBM6fyeVElD)
- [Step 7: Set Variables in Litmus Edge Manager](docId\:Lqj2utpw90k8Ul3gsZCUU)
- [Step 8: Verify Template Parameters are Applied to an Edge Device](docId\:f6GpuMnlnPi6AOV436JIv)


[title] Digital Twins
[path] Litmus Edge Manager User UI/Product Features/

Digital Twins uses data to create models that can predict how a product or process performs. It is a virtual representation of a physical object or system across its life-cycle. A Digital Twin uses real-time data to enable learning for improved decision making.

:::hint{type="info"}
**Note**: Digital Twins is an experimental feature which must be enabled from the Litmus Edge Manager Admin Console before it becomes visible in Litmus Edge Manager. See [Experimental Features](docId\:PtIJysv_x6gV1g0Z4oR2B) for more information.
:::

# Access Digital Twins UI

**To access the Applications UI:**

1. Log in to Litmus Edge Manager.
2. From the Company List, click **Asset Management** for a company.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6M5GXYWN54PIHAi_cJGpI_2023-07-2013-41-20.png "Select asset management")

The *Digital Twin* *Models* panel appears.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BkUrJeztxQfnA3ubYmB5M_image.png "Digital Twin Models")

## Next Steps

The following operations are available for **Company List**:

- [Add a Digital Twin Model](docId:9YfNBK2aeqsavZMosHVMp)&#x20;
- [Manage Digital Twin Models](docId\:Fat2jWNA6wEAMvyPkXi-o)&#x20;
- [Deploy Digital Twin Models to Edge Devices](docId\:hyW_gkgyU2viMnc0I8Nqg)


[title] Notification Settings
[path] Litmus Edge Manager Admin Console/Product Features/Alerts/

In **Notification Settings**, you can add, modify, and view actions that is used by a trigger. The action sends an email or webhook notification when a trigger is applied.

# Add an Action

You can add email or webhook actions.

To add a new action:

1. Navigate to **Alerts** > **Notifications**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hGVsNqF3_j_Gks_lXRvdm_image.png" size="80" width="1437" height="434" position="flex-start" showCaption="false" indent="2"}

2. Click the add a new action **(+)&#x20;**&#x69;con to open the **Add Action** dialog.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kBRKZld0zPjqzxjbLGLPU_image.png" size="80" width="1441" height="548" position="flex-start" showCaption="false" indent="2"}

3. To create an email notification:
   1. In **Action Template**, select **Email**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/toKDjiQ_XnMCCBduhb3Qa_image.png" size="100" width="697" height="345" position="flex-start" showCaption="false" indent="3"}

:::Paragraph{listStyleType="decimal" listStart="2" indent="2"}
Provide the action name.
:::

:::Paragraph{listStyleType="decimal" listStart="3" indent="2"}
In **Recipients**, add the email addresses of the users who will receive the notification.
:::

:::Paragraph{listStyleType="decimal" listStart="4" indent="2"}
Specify the maximum number of notifications to deliver by time period in **Notification Limit** and **Interval**.
:::

4. To create an webhook notification:
   1. In **Action Template**, select **Webhook**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rqkxywnZDDSnPv8uYAFKo_image.png" size="100" width="700" height="404" position="flex-start" showCaption="false" indent="3"}

:::Paragraph{listStyleType="decimal" listStart="2" indent="2"}
Provide an action name.
:::

:::Paragraph{listStyleType="decimal" listStart="3" indent="2"}
In **Method**, select **Post**.
:::

:::Paragraph{listStyleType="decimal" listStart="4" indent="2"}
In **Webhook URL**, specify the URL to deliver the JSON payload to.
:::

:::Paragraph{listStyleType="decimal" listStart="5" indent="2"}
Specify the maximum number of notifications to push by time period in **Notification Limit** and **Interval**.
:::

:::Paragraph{listStyleType="decimal" listStart="6" indent="2"}
To test the webhook, click **Test Webhook** and click **Details** in the notification message to view the payload.&#x20;
:::

[title] Data Lifecycle
[path] Litmus Edge Manager Admin Console/Product Features/

The *Data Lifecycle* module consists of features that interact with Litmus Edge Manager's disk space. It offers you the opportunity to see how the disk space is used (Statistics), archive and download disk space data (Management), and remove disk/archived data based on certain conditions (Purge Policies).&#x20;

The page has the following sub-modules.&#x20;

**Statistics**: Includes the Disk Usage, Disk Usage by data object, Data Cumulative chart, Top 10 Projects Chart, and Stats by Periods sections. From this sub-module, you can do the following:

- View user and archive data
- View disk usage by period
- View disk usage by projects
- Archive and purge data&#x20;

**Management**: Includes the Data Archive list. You can download archived data files and purge the archived data files from this sub-module.

**Purge Policies**: Includes the Instance Purge Settings and Companies Purge Settings sections. You can add and manage instance and companies purge policies from this sub-module.

# Next Steps

- [Statistics](docId\:SUvgdkwr-7WY9lRvKLBqM)&#x20;
- [Management](docId\:dsJZJ4n3ksgiQlIabM-gY)&#x20;
- [Purge Policies](docId\:mrx9t44OhiNjrFgcEV_aZ)&#x20;


[title] Edge Password Policies
[path] Litmus Edge Manager Admin Console/Product Features/Edge Devices/

The *Edge Password Policies* module allows you to modify current policies for connected edge devices and view the usage for which the policy is applied.

Default policies are part of the system, and are added during installation or upgrade.

You can create multiple policies from a default policy tailored to your environment by copying a default policy and then modifying the copy. You can make copies of any previously saved policy. Policies created in the Litmus Edge Manager Admin Console are available to your connected edge devices. You cannot delete the default policy.

The Policies pane includes two sections:

- **Password Policies**: Allows you to modify the default password policy or copy the default password policy, rename it, and modify it to specifications. Remove a copied password policy.
- **Policy Usage**: Allows you to view the policy that is applied to the company and projects listed. View the number of edge devices for which the policy is applied.

See [Policy](docId\:CMHGjEOLZn_qu_jlOjdBO) for more information on how to apply a policy for a specific edge device.

See [Apply a New Password Policy to a Litmus Edge Device](docId\:mTClEE0NAvZ-4gSFhiSEw) to learn more about applying a new password policy.&#x20;

# Access Edge Password Policies UI

**To access the edge password policies UI:**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Edge Devices**.
   Edge Device's *Edge Software Update* pane by default appears.&#x20;
3. From Edge Device's navigation sub-panel, select **Edge Password Policies**.
   Edge Device's *Edge Password Policies* pane appears.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6w9RArphcY3kM4PaIlm0r_image.png "Edge Password Policies")

# Edit Password Policy Names and Descriptions

The names and descriptions of edge device password policies as shown on the *Edge Password Policies* screen can be edited.

**To edit password policy names and descriptions:**

1. On the *Edge Password Policies* page, hover the mouse cursor over the panel depicting the policy you wish to modify.
   A pencil icon appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NcpUn1M41qpQMR6YYEs1n_2023-08-2209-40-18.png "Password policy edit button")
2. Click the pencil icon.
   The policy name and description dialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/c8cIOXp3kZWQ4m7IxcihE_2023-08-2209-37-42.png" size="80" width="720" height="448" position="center" caption="Edit Password Policy dialog box" showCaption="true"}

From this dialog box, the name and description of a given policy can be changed as desired. Click **Cancel&#x20;**&#x74;o discard any changes and click **Save** to save the changes made to the policy name and description.

# Edit Password Policy Parameters

Several password policy parameters can be edited on the *Edge Password Policies&#x20;*&#x70;age.

**To access the password policy parameters menu:**

- Click the panel of the password policy whose parameters you wish to edit.

The following parameters for passwords can be set as policy in this menu:

- **Minimum password length**
- **Maximum password length**
- **Auto generated password length**
- **Minimum uppercase characters**: Minimum allowed number of uppercase characters in a password accepted by the password policy.
- **Minimum lowercase characters**: Minimum allowed number of lowercase characters in a password accepted by the password policy.
- **Minimum number of digits**: Minimum allowed number of digits in a password accepted by the password policy.
- **Special characters**: The special characters users can include in a password accepted by the password policy.
- **Minimum special characters**: Minimum allowed number of special characters in a password accepted by the password policy.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SARJX7NknaG5le7so02ge_image.png "Password Policy Parameters panel")

# Copy Password Policies

Password policies can be copied.

**To copy a password policy:**

1. Click the panel of the password policy you wish to copy.
2. Click **Copy&#x20;**&#x61;t the bottom right section of the panel.

To view details on how to enable a policy in an edge device, see [Policy Management](docId\:RJcVMjGrq0jMwlTB2caHS). Once copied, you can make changes to the values in the policy and then save again.


[title] Step 1: Create a Template with Specific Attributes
[path] How-To Guides/Litmus Edge Manager User UI Guides/Apply a Parameterized Template During Activation/

Templates for edge devices may include devices, analytics, flows, and connectors. You can make selections for these categories when creating a template from edge devices.

# Before You Begin

- Activate an instance of Litmus Edge to create a template in [Step 1: Create a Template with Specific Attributes](docId\:dum2moplwElHfhKSncvyI). See [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB).
- Add two DeviceHub devices to your activated instance of Litmus Edge. To learn more, please refer to [Devices](docId\:EV3UOz6GXwqVb7ydRX7BL).
- Install a second Litmus Edge instance that is not activated to apply the parameterized template in [Step 5: Create an Activation Request in Litmus Edge](docId\:gwn-33G0VPJYSyIxoTfqj).

***

**To create a template with two DeviceHub Devices:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. From the *Projects&#x20;*&#x70;ane, click a project tile.&#x20;
   The *Dashboard&#x20;*&#x70;ane appears for the project.
4. From the *Navigation&#x20;*&#x70;anel, select **Templates**.
   The *Templates&#x20;*&#x70;ane for the project appears.
5. Clic&#x6B;**&#x20;Create Template from device** to import settings from your running instances of Litmus Edge.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CAGyYuioa3VvCuRGuuLbw_image.png "Create Template from device button")
6. From the *SELECT EDGE DEVICE* page, click the checkbox for the Litmus Edge instance with two DeviceHub Devices added. Then, click **NEXT**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0rxgVOKcmRABAECRgy0kT_image.png "SELECT EDGE DEVICE page")
7. From the *TEMPLATE OPTIONS* page, do the following:
   - **Configurations:** Check the boxes for the Litmus Edge components to include in the template.&#x20;
     Make sure to select **Country&#x20;**&#x61;nd **Devices&#x20;**&#x74;o complete the guide.
   - **Template Description:&#x20;**&#x45;nter the description for template.
   - Click **CREATE**.&#x20;
     The message *Template Created Successfully* appears at the bottom.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/61dkXqFdFkgA4tQYtHxvT_image.png "TEMPLATE OPTIONS page")

# Next Step

After creating a template, the next step is to [Add Variables to Parameterize Template in Litmus Edge Manager.](docId\:L9Hb3woVugLNldub90iRQ)****

[title] Grafana Dashboards
[path] Litmus Edge Manager User UI/Product Features/

**Grafana** is an open-source platform application for data visualization, monitoring and analysis. Grafana is used to visualize data sent by a device's data store. It is primarily used in conjunction with InfluxDB.

You can analyze, create and monitor KPIs using the Grafana dashboard. Access to the Grafana dashboard is defined using Keycloak authorization.

See [Github](https://github.com/Vertamedia/clickhouse-grafana) for more information about example queries and panel information.

To receive the `Admin` role on Grafana Dashboards, see the *Toggle Administrator role for Grafana* *section* of [Edit a User Profile](docId\:KIJgyCJC1HGIm8mW7dVRK).

:::hint{type="warning"}
**Important**: To visualize data in Grafana, you must select the **RAW data** option for the *Edge Device Data Storage* setting (**Litmus Edge Manager User UI** > **Company&#x20;**> **Project&#x20;**> **Settings&#x20;**> **Edge Device Data Storage**). See [Project Settings](docId\:hmGSXiivMvDy4K43OanRv) and [Visualize Child Device Data Using Grafana](docId\:cY2MwkiuvJ2nvNBZhaotC) to learn more.&#x20;
:::

# Access Grafana Dashboards UI

**To access the Grafana dashboard UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects&#x20;*&#x70;ane appears.
3. From the *Projects&#x20;*&#x70;ane, click a project or open the **Action menu** for a project and select **View**.&#x20;
   The *Dashboard&#x20;*&#x70;ane appears for the project.&#x20;
4. From the Navigation panel, select **Features**.
   The *Features* pane appears.
5. Click the **Grafana Dashboards** tile.
   The *Grafana Dashboards* pane appears in a separate browser tab.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bGvPP8FpYD5kXVyAJ8cXB_image.png" size="80" width="1920" height="866" caption="Grafana Dashboard" position="center" showCaption="true"}

# Default Grafana Dashboards

Litmus Edge Manager-Grafana integration offers three default dashboards for acquiring analytics and more information about Litmus Edge instance.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CD4IHojFahE99m1_DMYgx_image.png" size="82" width="1920" height="794" position="center" caption="Grafana Dashboard Samples" showCaption="true"}

- **Events**: monitor the event activity of Litmus Edge tags.&#x20;
- **Gateway details**: Monitor the hardware/network status of a Litmus Edge and its tags. Things to consider:&#x20;
  - This dashboard updates the selector values only when it loads. This means that if the dashboard is already open, the list won’t refresh after renaming the friendly name of an edge device.
  - The list retrieves values from metrics obtained from edge device every 30 seconds (by default), so it's advisable to wait at least one minute after renaming before accessing the dashboard.
- **PLC Tag Browser**: See [Visualize Child Device Data Using Grafana](docId\:cY2MwkiuvJ2nvNBZhaotC).


[title] Integration
[path] Litmus Edge Manager Admin Console/Product Features/

The **Admin Console&#x20;**> **Integration&#x20;**&#x6D;odule has the following sections:

- Kafka
- Clickhouse 
- Prometheus
- Syslog
- DigiCert
- Git Provider

You can complete data integration from the entire Litmus Edge deployments into third-party applications using *Kafka*.

**Kafka**: Includes th&#x65;*&#x20;Kafka Server*, *Users*, and *ACL* sections. You can do the following.

- Download a certificate and copy the connection URLs for the *Bootstrap Server* and Kafka SSL Connection from the *Kafka Server* section.&#x20;
- Add and remove *Kafka* users from the *Users&#x20;*&#x73;ection.&#x20;
- Change passwords from the *Users&#x20;*&#x73;ection.

**Clickhouse**: Includes the *Clickhouse Server*,*&#x20;Users*, *ACL*, and *Explore* sections. You can do the following.&#x20;

- Edit, enable or disable, and change the port status for each available protocol from the *Clickhouse Server* section.&#x20;
- Add and remove *Clickhouse* users from the *Users&#x20;*&#x73;ection
- Change passwords from the Users section.&#x20;
- Add or remove a company or project for the *ACL* (Access Control List) from th&#x65;*&#x20;ACL* section. Authorization of topics is controlled by ACL.&#x20;
- Open a web interface to the Tabix Server for Clickhouse from the *Explore&#x20;*&#x73;ection.

**Prometheus**: Includes *Prometheus* and *Alert Manager* sections, available since Litmus Edge Manager 2.10.1. You can do the following.

- Enable/disable *Prometheus* endpoint to expose an *Prometheus URL* for a third party client.
- Add an external Prometheus *Alert Manager* address for Litmus Edge Manager to connect to.
- Test the connection between Litmus Edge Manager and the external Prometheus *Alert Manager*.

**Syslog**: Include the *Syslog* section, available since Litmus Edge Manager 2.7.0. You can do the following.

- Enable/disable log forwarding to an external *Syslog* server.
- Add an external *Syslog* server's hostname/IP address and port number
- Test the connection between Litmus Edge Manager and the external *Syslog* server host.

**DigiCert:&#x20;**&#x49;ncludes the *DigiCert server URL*, *Enrollment Profile ID*, *Enrollment Passcode*, and *Validate&#x20;*&#x73;ections. Available since Litmus Edge Manager 2.22.1. You can do the following.

- Set up the *DigiCert server URL&#x20;*&#x66;or communication with the *DigiCert IoT Trust Manager*.
- Configure the *Enrollment Profile ID&#x20;*&#x66;or authenticating with the *DigiCert IoT Trust Manager*.
- Generate and use the *Enrollment Passcode&#x20;*&#x66;or authentication between the *Litmus Edge Manager Admin Console* and the *DigiCert IoT Trust Manager*.
- Validate the *DigiCert&#x20;*&#x69;ntegration settings to ensure successful communication with *DigiCert IoT Trust Manager*.

**Git Provider:** Connect Litmus Edge Manager with an external version control system (GitHub, GitLab, or Azure DevOps) and store, manage, and track changes to Litmus Edge template files.

# Access Integrations UI

**To access integrations UI**:

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Integration**.
   The *Integration* pane appears. The user interface below is for Litmus Edge Manager version 2.10.1 and later.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AeBHdCNRNxs7VFKOdRxJB_image.png" size="80" width="1758" height="648" position="center" caption="Litmus Edge Manager Admin Console: Integration" showCaption="true"}

# Next Steps

- [Kafka](docId\:M3iOVMsTPuLhmjpUpnLLR)&#x20;
- [Clickhouse](docId\:MD6NfAz8rrs1p_JWPaIm-)&#x20;
- [Prometheus](docId\:OAkGk5dDht9MCB_uCZurn)
- [Syslog](docId:9NZiA2UGSkffvMjgIREJm)
- [DigiCert](docId\:JD0z31mg3jF1iju1PrU3e)&#x20;


[title] Litmus Edge Manager Admin Console
[path] /

The Litmus Edge Manager (LEM) Admin Console is comprised of the following modules that help you administer Litmus Edge Manager.

:::hint{type="info"}
**Note:** To access the LEM Admin Console, you will need to access LEM from port 8446. Enter the following URL in a browser window: **https\://\[LEM IP address]:8446**.&#x20;
:::

| **Modules**                                               | **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [Dashboard](docId\:Sl5gAXltiR_U5aUa6y2oh)                 | Shows information about your companies, projects, and edge devices, including tables and charts related to your system                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| [Data Lifecycle](docId:_t8wSy2JLq7LVIXhw3B6F)             | Enables you to manage data archives, set data purge policies and view data statistics                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| [Edge Devices](docId\:qD0fTbyerVQJxOM5IPApt)              | [Edge Software Update](docId:3IevluZfOdrXAqOOpVT1n): Enables you to upload edge device software images to manage updates and upgrades for edge devices connected to Litmus Edge Manager<br />[Edge Device Templates](docId\:nNxhGGYezqqsdyajOkc8F): Allows you to upload and manage templates for companies, projects and edge devices<br />[Edge Password Policies](docId\:nZxdm63Ip1guJ_mQiN140): Enables you to modify policies for edge devices and view the policy usage<br />[Edge Remote Networks](docId\:aftGosdXRCw2Tz9d5Gtzg): Helps you remotely connect your edge devices to the available networks<br />[Node-Locked Licenses](docId\:c0-d2jkjFVytbWDoL9FRr): Provides a comprehensive summary of the usage of all Node-locked licenses for all companies and projects                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O)  | Enables you to add and manage site licenses using an embedded license server                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| [Integration](docId\:YI-zzNSsMxWw_FXcuiduB)               | Provides data integration from any edge device deployment with third-party applications via Kafka, Clickhouse, Prometheus, Syslog, and DigiCert.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| [Docker Registry](docId\:igFscl1oSzPQXTQCmF02c)           | Enables you to operate Litmus Edge Manager as a Docker registry for images maintained in the Litmus Edge environment                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| [Settings](docId\:iy4TS5kq0gmAeYGVQjqRI)                  | Provides you with configuration functionality for Litmus Edge Manager<br />[Domain/SSL](docId\:MC8Z1bK3yWcKQq4-kupCv): Allows you to configure the domain name, SSL, and Edge Remote endpoint in Litmus Edge Manager<br />[Cloud](docId\:Tcs7sRvoORXHg5UzOyVSP): Allows you to configure store updates, backups, and other data in an external storage location<br />[Network](docId\:VVhYuAY0vwQsvIea6MF9Q): Allows you to configure Interface, DNS, NTP and Proxy settings for Admin console<br />[Email](docId\:GcxRXKR3-oc_O9zqz7Jke): Allows you to configure email server settings<br />[Licenses](docId\:D6OmBvcrDDBIvgqMZPx9h): Allows you to activate licenses, and shows information about your current licenses, features, and performance packs<br />[Users](docId\:m4I7KMG5bHSaTUxJNwMZ5): Enables you to you to manage access permissions for users, company teams and project teams<br />[Tokens](docId\:sHLyvAfrLOR7KkOopqV4N): Allows you to add, configure, view or delete tokens<br />[Upgrade](docId:-C0COf-HLIWthd8s3U2zp): Helps you upgrade software versions of Litmus Edge Manager<br />[Export/Import](docId:1VIPA5Py1DmcBoB5hDZMy): Enables you to export and import Litmus Edge Manager configurations and data<br />[Admin Console Backup](docId\:OpbSMI-B4XBzqTIePSHLn): Allows you to download and upload Litmus Edge Manager configuration files<br />[Experimental Features](docId\:PtIJysv_x6gV1g0Z4oR2B): Must be enabled in *Litmus Edge Manager Admin Console* to be visible. The following two experimental features are available: *Edge Events , Digital Twins*<br />[Management](docId\:dsJZJ4n3ksgiQlIabM-gY): Allows you to reboot your instance of Litmus Edge Manager |


[title] Synchronization
[path] Litmus Edge Manager User UI/Product Features/Marketplace: Catalogs and Applications/

:::hint{type="info"}
**Note**: The Synchronization feature is available for Litmus Edge Manager 2.11.0 and later.
:::

You can remotely synchronize Marketplace Catalogs located on different Litmus Edge Manager instances. To do this, you will execute the following key steps:

1. Create the primary marketplace catalog (and then add changes as desired) within a first Litmus Edge Manager.
2. Create a secondary marketplace catalog within a second Litmus Edge Manager. &#x20;
3. Connect (via bootstrap) the secondary marketplace catalog to the primary marketplace catalog.&#x20;

Once connected, you can then synchronize the secondary marketplace catalog to be identical to the primary marketplace catalog.  &#x20;

If desired, a Litmus Edge Manager can contain both the primary marketplace catalog and the secondary marketplace catalog.&#x20;

Review the [Deploy Edge Applications to Multiple Sites Using Marketplace Catalog Sync](docId\:Z8R_5mVU1pezFXVSeNhQu)  how-to guide.&#x20;

:::hint{type="info"}
**Note**: After a primary-secondary marketplace catalog synchronization, any further changes to the primary marketplace catalog requires additional primary-secondary syncs. Secondary marketplace catalogs will not automatically receive primary marketplace catalog changes.
:::

# Step 1: Set Up Primary Marketplace Catalog

You will create the primary marketplace catalog in the Litmus Edge Manager you want to store this catalog. This primary marketplace catalog will be the marketplace catalog that other secondary marketplace catalog(s) will synchronize and become identical to.

**To set up the primary marketplace catalog**:

1. From the Litmus Edge Manager User UI, select the appropriate company and project. Then, navigate to **Features > Marketplace.&#x20;**&#xA;The *Marketplace Catalog* opens in a new browser window.
2. Click **Add Catalog.** The *create catalog* dialog box displays..
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/A_mP68GXfWWSSEBEPqhfp_lem-primary-marketplace-catalog.png" size="80" width="1920" height="851" position="center" caption="Marketplace Catalog: Primary Marketplace Catalog" showCaption="true"}
3. Enter a name and optionally enter a description.
4. Select the *Synchronize* checkbox and from the *Select Role&#x20;*&#x64;rop-down list select **Primary.**
5. Click on the primary marketplace catalog you've just created.
6. (Optional) Inside the primary marketplace catalog, add the applications (and respective application releases) and registries that will be later synchronized to secondary catalogs. See Step 1-4 of [Add a Draft Application Release](docId\:pujQCF4jL0dUe8XjHsjmZ) and [Registry Management](docId\:M6yzedYRAwwYDnLDtOQlZ).

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EQriAA4Il-W9Os-HMtSqZ_2023-07-2111-19-50.png)

# Step 2: Download Primary Marketplace Catalog Bootstrap File

After you have created the primary marketplace catalog and added relevant applications (and relevant releases) and registries, you will next download the primary marketplace catalog bootstrap file.&#x20;

**To download the bootstrap credential file**:

1. From the primary marketplace catalog's *Applications&#x20;*&#x70;ane, click **Synchronization**. The *Synchronization: Primary Catalog* pane appears.
2. From *Expiration within:* customize the desired duration for the bootstrap credential file.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Nts4uNvZOF2y2fL5AY6pz_2023-07-2112-20-36.png "From Expiration within: customize the desired duration for the bootstrap credential file.")
3. Click **Generate**. A `.bootstrap` file will be downloaded to your local computer.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ML1JVYExsD75hc5A_VMn8_2023-07-2112-22-36.png "Primary Marketplace Catalog: Synchronization: Generate Bootstrap File")

# Step 3: Create a Secondary Marketplace Catalog&#x20;

After you have downloaded the `.bootstrap` file, you will next upload the bootstrap file from the previous step to at least one secondary marketplace catalog. You will do this in a *different* Litmus Edge Manager from the previous step.

**To upload the bootstrap credential file to a secondary marketplace catalog:**

1. Repeat the steps to create a new catalog and create a secondary catalog.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/S5DL3W9HTdXyTbNbiLa8k_2023-07-2112-27-23.png "Marketplace Catalog: Secondary Marketplace Catalog")
2. From the secondary marketplace catalog's *Applications&#x20;*&#x70;ane, click **Synchronization**. The *Synchronization: Secondary Catalog* pane appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KIUFH7kC2-yDSkG-eF_Lb_2023-07-2112-29-24.png "Secondary Marketplace Catalog: Synchronization")
3. Click **Upload**. Navigate to the `.bootstrap` file you downloaded earlier from the previous step and select it.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0HvFxkKM56ElAi7NvQmHR_2023-07-2112-30-52.png "Secondary Marketplace Catalog: Synchronization: Upload")
4. Confirm the *Certificate* information and click **Yes**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ni3Qh6sIwVXML3_yPqnmD_certificate.png" size="80" width="961" height="589" caption="Confirm Certificate" position="center" showCaption="true"}
5. You need to **approve&#x20;**&#x74;he connection request for the *Secondary Catalog* from the *Primary Catalog* pane.
   To do this, go back to the *Synchronization* page in th&#x65;*&#x20;Marketplace Catalog* of the first Litmus Edge Manager Instance.
   Then, select **Secondary Catalogs**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Fba4o05V0fgtqP-wUF_ck_image.png "Check connection request from LEM Marketplace Catalog")
6. You will receive a request from the secondary catalog to synchronize applications from the primary catalog. Click the **Actions&#x20;**&#x6D;enu and select **Approve**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wRv6GQoDpbJD27eOYgMRs_image.png "Approve the Request for Sync")
7. If successful, the upload process status will display as **Approved** in both the *Primary&#x20;*&#x61;nd *Secondary Catalog Synchronization* pages.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yNHVQBwGxRvuQCM_1kH_g_image.png "Approved Status in the Secondary Catalog Synchronization page")
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yGLRayZ6z5DLTSOdunGWC_image.png "Approved Status in the Primary Catalog Synchronization page")
8. Navigate back to secondary catalog's *Synchronization: Secondary Catalog* pane, and click **Sync**.
9. After a successful sync, click **Applications** and **Registry Management** to verify the successful sync.

# Step 4: Synchronize Secondary Marketplace Catalog to Primary Marketplace Catalog&#x20;

After you have uploaded the primary marketplace catalog's `.bootstrap` file to a secondary marketplace catalog, you can then synchronize the secondary marketplace catalog to become identical to the primary marketplace catalog's application (and their application release) and registries.&#x20;

**To synchronize the secondary marketplace and primary marketplace catalog:**

1. From a secondary catalog's *Synchronization: Secondary Catalog* pane, click **Sync**. If the Sync is successful, a success message will be displayed.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BNUB7et8izUwNUDxUTa5M_lem-secondary-catalog-sync-and-confirm.png" size="80" width="1920" height="851" caption="Secondary Marketplace Catalog: Synchronization: Sync" position="center" showCaption="true"}
2. After a successful sync, click **Applications** and **Registry Management** to verify the successful sync. The secondary catalog will contain the same applications (and application releases) and registries as the primary catalog. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7WuaQaTIOENW5X7Ils0QK_image.png" size="80" width="1920" height="851" caption="Secondary Marketplace Catalog: Applications and Registry Management" position="center" showCaption="true"}




[title] Management
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

The **Management** page in **Settings&#x20;**&#x68;as two options:

- **Reboot**: Restart the Litmus Edge Manager instance.
- **Edge Device Metrics Sync**: Control how often Litmus Edge Manager polls connected edge devices for metrics data.

:::hint{type="info"}
**Note**: The Management module is available for Litmus Edge Manager version 2.15.0 and later.&#x20;
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AnZO0tXa-QBlq-16q3TgH_image.png" size="80" width="1402" height="634" position="flex-start" darkWidth="1402" darkHeight="634" showCaption="false"}

## Reboot Litmus Edge Manager

In **Manage**, click **Reboot**.

## Edge Device Metrics Sync

Edge Device Metrics Sync controls how often Litmus Edge Manager polls connected edge devices for metrics data. Adjusting the interval lets you balance reporting frequency against network and performance constraints. A shorter interval provides more granular visibility into edge device behavior. A longer interval reduces network load in bandwidth-limited environments.

### Sync Interval Priority

The sync interval can be configured at three levels: device, project and instance. By default, lower-level settings take priority:

- The device sync setting overrides the project setting for that device.
- The project sync setting overrides the instance setting for all devices in the project.

You can also override these priority settings:

- At the device level by choosing to use the project's metrics sync setting (see [Manage](docId\:BoOFh2bJOlfpger0QymmF)).
- At the project level by choosing to use the instance's metrics sync setting (see [Project Settings](docId\:hmGSXiivMvDy4K43OanRv)).

:::hint{type="info"}
**Note**: **Edge Device Metrics Sync Settings** is available for Litmus Edge Manager version 2.26.1 and later.&#x20;
:::

### Set the Edge Device Metrics Sync Interval

The default interval is 30 seconds with a valid range of `30` to `604,800` seconds (1 week). Do any of the following:

- Use the **Enable Edge Device Metrics Sync** toggle to enable or disable synchronization of metrics.
- Update the instance sync interval by providing a new value in **Enable Edge Device Metrics Sync**.


[title] Add/View a Remote Network
[path] Litmus Edge Manager Admin Console/Product Features/Edge Devices/Edge Remote Networks/

You can add and view remote networks.&#x20;

- To add a new network, click the **Add&#x20;**&#x69;con from [Edge Remote Networks](docId\:aftGosdXRCw2Tz9d5Gtzg).
- To view/update a network, click the network name from [Edge Remote Networks](docId\:aftGosdXRCw2Tz9d5Gtzg).

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OUPpQjHUFpq7OixJm13zL_image.png "Edge Remote Networks: Network View")

| **Action**                                                                                                                   |
| ---------------------------------------------------------------------------------------------------------------------------- |
| \[1] Enter the network name.                                                                                                 |
| \[2] Select **IPv4&#x20;**&#x6F;&#x72;**&#x20;IPv6**.                                                                        |
| \[3] Enter the subnet mask.<br />* IPv4 Example: `xxx.xxx.0.0/24`
* IPv6 Example: `fd97:531a:ce26:ab11::/64`                 |
| \[4] Enter the gateway address.                                                                                              |
| \[5] Review the capacity for activated devices on the network (available for Litmus Edge Manager version 2.15.0 and later).  |


[title] Statistics
[path] Litmus Edge Manager Admin Console/Product Features/Data Lifecycle/

The *Statistics&#x20;*&#x6D;odule primarily shows you how Litmus Edge Manager uses disk space. It allows you to view user/archive data, view disk usage by period, view disk usage by projects, and archive or purge data from this sub-module.

The Statistics module includes the following sections:

- **Primary Partitions Usage**: This section visualizes the current usage of primary partitions, including the total user data in GB, the percentage of user data used, and the percentage of free data space in GB.
- **All partitions:&#x20;**&#x54;his section displays all instance partitions along with their current usage, including the total user data in GB, the percentage of user data used, and the percentage of free data space in GB. You can copy the path of a listed data object.
- **Disk usage by data object**: Includes a pie chart with data objects depicted where you can hover over sections of the chart to view the disk usage for each data object in GB.&#x20;
- **Data objects:&#x20;**&#x41; list of data objects showing the data objects' size, usage in percentage format, and path along with object name.
- **Data Cumulative Chart**: Shows the Periods amount of disk usage for each month in bar chart format.
- **Top 10 Projects Chart**: Shows the cumulative amount of disk usage for each project (up to 10 projects) in bar chart format.
- **Stats by periods**: Includes a data list grouped by company and project organized by month. You can filter the list, and archive or purge a selected data item from the list.
- **Stats by projects**: Includes a data list grouped by projects. You can only display the list and search/sort selected data items from the list.

# Access Statistics UI

**To access the statistics UI:**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Data Lifecycle**.
   Data Lifecycle's *Statistics* pane by default appears.&#x20;

Refer to the following actions you can take on the Litmus Edge Manager Admin Console Data Lifecycle's *Statistics* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/h5RZYJcHrSC3Y6YtjUs2x_image.png)

| **Action**                                   | **Details**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **View data object disk usage**         | [Marketplace: Catalogs and Applications](docId\:gqoGt_Szm8rz9UdPhl2NL)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| \[2] **Data Objects Table**                  | - **lem-upgrade:&#x20;**&#x53;torage of LEM upgrade files. See [Upgrade](docId:-C0COf-HLIWthd8s3U2zp).
- **minio-storage:&#x20;**&#x53;torage of LE backup files, archived files and templates.
- **prometheus-data:&#x20;**&#x53;torage of Metrics data. See [Metrics](docId\:XZ4oKukesfg7rDekrLhPU).
- **mpcs-docker-registry:&#x20;**&#x53;torage of LEM Docker Registry files. See [Docker Settings](docId\:fNOt3P4u58-kh423wRE8K) and [Docker Images](docId\:H5XZoQNAk6PPCSzHZi0G-).
- **clickhouse-data:&#x20;**&#x53;torage of Clickhouse DB. See [Clickhouse](docId\:MD6NfAz8rrs1p_JWPaIm-). This is data related to connected Litmus Edge instances. This data is shown in more in details in *Stats By Periods*.
- **mysql-data:&#x20;**&#x53;torage of MySQL database.&#x20;
- **kafka-data**: Data used by Kafka service. See [Kafka](docId\:M3iOVMsTPuLhmjpUpnLLR) for details.
- **dlm-archive**: Where archived data is stored. See [Management](docId\:dsJZJ4n3ksgiQlIabM-gY) for details. |
| \[3]  **Show filter** /**&#x20;Hide filter** | Search by *Company*, or *Project* <br />Disk Usage statistics by period include:<br />- **Company**: The company name where the disk usage resides
- **Project**: The project name where the disk usage resides
- **Period**: The month the disk usage occurred. Disk space usage is partitioned in periods. Periods will always be one month. See below for more details.
- **Size**: The amount of disk usage for the selected period in KB
- **Action**: The menu that includes the ability to archive and purge and selected data                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| \[4] **Action menu**                         | * **Archive Data:&#x20;**&#x57;hen data is archived, the data is extracted from the Clickhouse database server and stored as a `.csv.gz` file. These files can be downloaded from [Management](docId\:dsJZJ4n3ksgiQlIabM-gY).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |

:::hint{type="info"}
**Note**:&#x20;

- Each `.csv.gz` file is up to ten times the size of the data size (The data size that is shown in *Stats By Periods&#x20;*&#x73;ection is actually a compressed size). Before you archive, ensure the Litmus Edge Manager has enough disk space to contain all the `.csv.gz` files that it will archive. Insufficient disk space will prevent the data from being archived. After archiving, review the list of archive files to ensure the archive operation was successful.
:::

- **Purge:&#x20;**&#x54;his will delete the data from the Litmus Edge Manager. Purging data cannot be undone.

# Period Explained

Litmus Edge Manager keeps track of disk usage in partitions of months. The tracked disk usage is only for Clickhouse data (hence all archive/purge operations are applicable for Clickhouse data only). The disk usage amount is calculated either from the instance or each individual project. Each month of disk usage is defined as a period.&#x20;

For example, your Litmus Edge Manager has five projects. To calculate disk usage, each project will be categorized as one period for the same month. So Litmus Edge Manager will generate five periods for the same month, each period including one project.&#x20;

As an additional example, three months have passed. For the five projects above, each of them experienced some disk usage in those three months. So you will have 15 additional periods (five projects of disk usage \* 3 months).

Periods are also categorized as previous or current. If the current system date is March 2023, then all disk usage by projects during March 2023 are current periods. All periods from February 2023 and before are previous periods.&#x20;


[title] Add a Digital Twins Model
[path] Litmus Edge Manager User UI/Product Features/Digital Twins/

A model is a template that contains static and dynamic attributes, data transformations, and schemas. Instances are copies of a model configured with their own parameter values. After you create Digital Twins models, deploy the models or model instances to Litmus Edge. When you deploy, you:

- Create a new model manually or from an import file.
- Configure the model by defining static and dynamic attributes, data transformations, and schemas.
- Deploy the model from Litmus Edge Manager to your Litmus Edge instance.
- Deploy instances from Litmus Edge Manager to your Litmus Edge instance.

You create Digital Twins models by navigating to **Asset Management** > **Models&#x20;**&#x66;or a company.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fueF6FVADoiov_SWIpAJK_image.png" size="80" width="1598" height="618" position="flex-start" darkWidth="1598" darkHeight="618" showCaption="false"}

See [Use Digital Twins to Contextualize Data](docId\:VDRP68HIwEA7iyLgo3eW7) for information on how to leverage Digital Twins.&#x20;

:::hint{type="info"}
**Note**: Digital Twins requires a Scale or Growth Litmus license.&#x20;
:::

# Core Concepts

## Static attributes

Static attributes are fixed metadata values you define on a model, such as `Manufacturer`, `Model`, or `Plant`. They act as placeholders and you set default values on the model and then override them for each instance. Use static attributes for information that describes an asset but doesn't change in real time.

## Dynamic attributes

Dynamic attributes represent real-time data from your assets, such as temperature or pressure readings. Each dynamic attribute has a data type (JSON, boolean, array, string, or number) and a topic that tells Litmus Edge where to read the data from. You can use topic expressions with parameter placeholders to define topics that vary per instance.

:::hint{type="info"}
**Note:** Dynamic attribute data type values are stored and returned in lower case.
:::

## Transformations

Transformations convert raw data published on a topic into a cleaner, more useful format before it reaches northbound systems. You can use JSON transformations to filter specific key-value pairs, or JSONata transformations for more complex logic like conditional outputs or computed values. Transformations are defined at the model level and applied to individual dynamic attributes.

## Schema

A schema defines a custom structure for organizing the model's attributes into a hierarchy. You build the schema by grouping static and dynamic attributes under named nodes. Schemas make it easier for downstream systems to consume your Digital Twins data in a predictable shape.

# Viewer and Administrator Roles

Visibility of edge devices is limited to the companies that you have access to. The actions that you can perform also depends on your asset management role (defined in Litmus Edge Admin Console). You are also assigned one of the following roles:

- The **Viewer** role allows view access to Digital Twins.
- The **Administrator** role allows full access to Digital Twins.

# Create the Model

You have two options for creating the model. You can create a new model or import a model as a JSON file.&#x20;

## Create a New Model

**To create a new model:**

1. From the companies list, navigate to **Asset Management** > **Models**.
2. From the *Models&#x20;*&#x70;ane, click the **Create a model&#x20;**&#x74;ile.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/C0i2SBCoLNH048S36HysR_image.png" size="80" width="1598" height="618" position="flex-start" darkWidth="1598" darkHeight="618" showCaption="false" indent="2"}

3. From the **Asset** drop-down, select a model type.
4. Enter the name of the model in the **Name** field.
5. Optionally, enter a short description of the model in the **Description** field.
6. Click **Add**.****
   A new model tile appears in the *Models&#x20;*&#x70;ane.

## Import an Existing Model

You can import a model as a JSON file.

To import an existing model, click **Import Model**, select a `<model name>.json` file, and click **Open**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KVU8A8_eQgOvTzgKE3UmG_image.png" size="80" width="1598" height="618" position="flex-start" darkWidth="1598" darkHeight="618" showCaption="false"}

## Model Versions

When you create a model, the model version starts at v.0. The version number increments when you save the model. The version number displays in the:

- Model tile.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LYeur2HtDhgxPUw6u68Rc_image.png" size="50" width="344" height="180" position="flex-start" darkWidth="344" darkHeight="180" showCaption="false" indent="2"}

- Model and instance configuration page.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tjlhhzl_FMIZdzIW2D3B5_image.png" size="50" width="1415" height="637" position="flex-start" darkWidth="1415" darkHeight="637" showCaption="false" indent="2"}

# Configure the Model

After creating the model and defining a name, you can configure it with static and dynamic attributes and schema to represent your assets or data structures.&#x20;

## Model Image

Select a model and click th&#x65;**&#x20;Upload image** icon to choose an image for the model. The image displays in the model tile on the *Models* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5P2JR-CZSllpsgZHNR6Cm_image.png)

## Static Attributes

When you create static attributes, you define default attribute values as placeholders. Later, you change the default values in model instances. For example, you might define `Manufacturer` , `Device Description`, `Model` and `Plant` attributes and change the static attribute values later in instances.

Manage the metadata for the model from the *Static Attributes* tab.&#x20;

### Add Static Attributes

If you need to filter existing attributes, you can use the search field.&#x20;

**To add static attributes:**

1. From the *Static Attributes* tab, click **Add new static attribute**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HrNlIzKeM4oF1JXziCc-n_image.png" size="80" width="1363" height="601" position="flex-start" darkWidth="1363" darkHeight="601" showCaption="false" indent="2"}

2. In the **Attribute Name** field, either select an attribute from the drop-down list or enter a new attribute name.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uViDBm7SvqvqGMv2jU0Xa_image.png" size="80" width="777" height="517" position="flex-start" darkWidth="777" darkHeight="517" showCaption="false" indent="2"}

3. In the **Attribute Value** field, enter a value for the attribute.&#x20;

### Import Static Attributes

Before importing, create a CSV file with the following headers, then add rows with attribute names and values.

**Required Headers**

- ModelName
- Key
- Value

**Optional Headers**

- InstanceName

After creating the file:

1. Navigate to **Static Attributes**, and select **Import Attributes**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0PG0p86BgtsmCCbzunhYp_image.png" size="70" width="909" height="363" position="flex-start" darkWidth="909" darkHeight="363" showCaption="false" indent="2"}

2. In the dialog your browser opens, navigate to and open the CSV file.

### Export Static Attributes

You can export all attributes to a CSV file, modify them offline, and import them again.

To export a CSV file with existing static attributes:

Navigate to **Static Attributes**, and select **Export Attributes**. Attributes export to a CSV file.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gNt_0_fes1K8ePB5JImje_image.png" size="80" width="905" height="312" position="flex-start" darkWidth="905" darkHeight="312" showCaption="false"}

## Dynamic Attributes

Next, define dynamic attributes that represent real-time data for your asset. Dynamic attributes can be JSON, boolean, array, string, or number data types. Each dynamic attribute can have an associated transformation.

### Add Dynamic Attributes

**To add a dynamic attribute:**

1. Click the **Add item** icon.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/miho4gYW1T0Uy9nxWIm7j_image.png" size="100" isUploading="false" width="1365" height="470" darkWidth="1365" darkHeight="470" showCaption="false" indent="2"}

2. In the **Name&#x20;**&#x66;ield, enter a name for the attribute.&#x20;
3. Optionally, enter a value for **Unit&#x20;**&#x61;nd select a **Data Type**. JSON applies if you do not specify a data type.
4. The **Skip Key&#x20;**&#x6F;ption is only available when the data type is JSON. Select **Skip Key** to exclude a specific attribute from the payload. Note that the value persists in the payload, for example, as `value='20'`.
5. Optionally, define a topic expression consisting of static string values and parameters by surrounding the expression in curly brackets (`{}`). For example, `devicehub.alias.{device}.tagname`.
6. Optionally, if you've created data transformation schemas, select one from the **SchemaID&#x20;**&#x66;ield.&#x20;
7. If you need to filter existing attributes, you can use the search field.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bpnIJp3AW_EkOCH0gQ4Oz_image.png" size="100" width="934" height="315" position="flex-start" darkWidth="934" darkHeight="315" showCaption="false" indent="2"}

### Import and Export Dynamic Attributes

To import dynamic attributes, download the sample CSV file and populate it with your dynamic attributes. After creating the file, click the model tile, navigate to **Dynamic Attributes**, and click the **Import Attributes** icon.&#x20;

To export a CSV file of existing dynamic attributes, click **Export Attributes**.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TNYO0UcV_QISp2Z2kIOH-_image.png" size="80" width="1369" height="359" position="flex-start" darkWidth="1369" darkHeight="359" showCaption="false"}

## Transformations

Use transformations to convert the raw JSON data published on topics in the message broker to a desired format. Transformations apply to specific dynamic attributes and the resulting transformation is included in the full Digital Twins and Publish Attributes payloads. Transformations clean your data and make it easier for northbound systems to consume. For example, create a transformation that eliminates duplicate timestamps and register IDs in your payload.

Transformations parse and transform the payload and specify a payload structure as the model inherits data. See [Use Digital Twins to Contextualize Data](docId\:VDRP68HIwEA7iyLgo3eW7) for information on formatting transformations.

With transformations, you can:

- Create a JSON transformation that filters specific key-value pairs  . For example, this transformation only includes the following attributes in the payload.

:::CodeblockTabs{indent="2"}
```json
}
  “value“: “$value“,
  “timestamp“: “$timestamp“:
}
```
:::

-  Create a JSONata transformation to perform&#x20;  dynamic filtering.  &#x20;[JSONata](https://docs.jsonata.org/overview.html) is a query language that allows logical conditions and computed outputs.  &#x20;For example, use JSONata to create an alert when a temperature tag exceeds a high or low threshold value.

:::CodeblockTabs{indent="2"}
```json
{
  "asset": deviceName,
  "area": metadata.area,
  "line": metadata.line,
  "quality": success,
  "metric": "metric",
  "timestamp": $fromMillis(1510067557121, '[M01]/[D01]/[Y0001] [h#1]:[m01][P]'),
  "value": value
}
```
:::

- Use a playground to test out your transformations before adding them to a model.



### Configure Transformations

**To add a transformation schema:**

1. Select the **Transformation&#x20;**&#x74;ab and click **Add a Schema**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6lKJuD52nj1CenMVeu0uG_image.png" size="80" width="1416" height="383" position="flex-start" darkWidth="1416" darkHeight="383" showCaption="false" indent="2"}

2. Enter a name for the schema.&#x20;
3. Select from **JSON&#x20;**&#x6F;r **JSONata&#x20;**&#x66;rom *Schema Type* drop-down menu.
4. In the code window, copy and paste the JSON-based or JSONata schema.&#x20;
5. (Optional) You can use the *System Variables&#x20;*&#x69;n the code drawer.
6. Experiment in a playground.
7. Click **Add**.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/H2kgVlG9Be7fgHSNzExg4_image.png" size="80" width="1324" height="787" position="flex-start" darkWidth="1324" darkHeight="787" showCaption="false" indent="2"}

8. To edit or delete a schema, click the **Action menu** for the schema and select an option.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2mGSZpYeUvxw4Lm_kTakG_image.png" size="80" width="1417" height="573" position="flex-start" darkWidth="1417" darkHeight="573" showCaption="false" indent="2"}

9. Apply the transformation to specific dynamic attributes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hmBoKyHjVYyjgVOvi0U0D_image.png" size="40" width="531" height="331" position="flex-start" darkWidth="531" darkHeight="331" showCaption="false" indent="2"}

## Configure Parameters

Parameters are variables that you can insert into topic expressions. Parameters help you save time when defining instances that have many attributes.

For example, define a `device` parameter and add it as a topic expression for a dynamic variable with the following syntax: `devicehub.alias.{device}.tagname`. Then modify the value for the `device` parameter for each instance on the **Instance Parameters** configuration page. &#x20;

:::hint{type="info"}
**Note:** Parameter names and values are case sensitive and cannot contain whitespaces. Allowed characters:

- A-Z in lowercase and uppercase
- 0-9
- Hyphen (`-`) and underscore (`_`) characters.
:::

To create a parameter:

1. Navigate to the **Parameters** tab and click **Add Item**.
2. Enter a parameter name and a placeholder value.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/vz7aOACClOwFX7YSF3_WV_image.png" size="80" width="1716" height="500" position="flex-start" darkWidth="1716" darkHeight="500" showCaption="false" indent="2"}

3. Click **Save Row**. The new parameter saves.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/Mb1bOMo5UAyDrd89phXo1_image.png" size="80" width="1715" height="478" position="flex-start" darkWidth="1715" darkHeight="478" showCaption="false" indent="2"}

4. Add the parameter to a topic expression. In this example, `devicehub.alias.{device}.Temperature` is added to the Temperature attribute.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/CJg3VJFUo_we7yju6S1b-_image.png" size="100" width="1713" height="546" position="flex-start" darkWidth="1713" darkHeight="546" showCaption="false" indent="2"}

5. Select an instance of the model and click **Open Parameters**.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/fc5rKU5pvYhvA81LBw4s3_image.png" size="80" width="1512" height="553" position="flex-start" darkWidth="1512" darkHeight="553" showCaption="false" indent="2"}

6. In the **Instance Parameters** dialog, edit the value for the device.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/ciQXOhO6bjFyjKp4x-jSc_image.png" size="80" width="1249" height="744" position="flex-start" darkWidth="1249" darkHeight="744" showCaption="false" indent="2"}

7. Navigate to the **Instance Dynamic Attributes** page to see the topic defined for the dynamic attribute, based on your topic expression and parameter values.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/1nfhKjBSrS16ovkUceek4_image.png" size="80" width="1792" height="302" position="flex-start" darkWidth="1792" darkHeight="302" showCaption="false" indent="2"}

:::hint{type="info"}
**Note:** If a dynamic attribute has a topic expression defined, the topic for instances cannot be edited. To change the dynamic attribute topic, you must edit the model or parameter values.
:::

## Schema

Use the *Schema&#x20;*&#x74;ab to create a custom data structure for the model.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/w2jWB0PmYjwlZH_ZnBLuQ_image.png" size="80" width="1418" height="572" position="flex-start" darkWidth="1418" darkHeight="572" showCaption="false"}

To create a category for the schema

1. Click the **Action menu** icon for `root` and select **Add Node**.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/bzfhCUhaDuytz8Rx5eeVS_image.png" size="80" width="1418" height="590" position="flex-start" darkWidth="1418" darkHeight="590" showCaption="false" indent="2"}

2. To add attributes to the schema, do one of the following:
   - Drag and drop attributes from the left-hand list to the canvas under the appropriate category.&#x20;
   - Click the **Action menu** for a category and select **Add item to Node**. Then, select the attribute to add.
3. When you have configured the schema, click **Save Model**.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/31uNHcIQd4kUcCSpSCB7b_image.png" size="80" width="1418" height="590" position="flex-start" darkWidth="1418" darkHeight="590" showCaption="false" indent="2"}

### Export Schemas

To export an existing schema to a CSV file, click the **Export Schema&#x20;**&#x69;con.&#x20;

### Sync Attributes

To sync the existing schema

1. Click the **Sync Attributes&#x20;**&#x69;con.&#x20;
   All attributes are appended to the current hierarchy. If they exist, the *static\_attributes&#x20;*&#x61;nd *dynamic\_attributes&#x20;*&#x6E;odes are recreated.&#x20;
2. To confirm that you want to proceed, click **Yes**.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/F_Jg9HwHL1ZhWA6OFJpg8_image.png" size="80" width="1418" height="550" position="flex-start" darkWidth="1418" darkHeight="550" showCaption="false" indent="2"}

### Clear Schema

To clear the schema builder tree, click **Clear Schema**. Changes apply when you save the model.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/ek_7X8MOUaQz84sUSJODU_image.png" size="80" width="1418" height="550" position="flex-start" darkWidth="1418" darkHeight="550" showCaption="false"}

## Apply Model Updates to Instances

When you update your model, you can apply the changes to model instances.

To apply model updates:&#x20;

1. Click **Upgrade Instances**.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/w7qQIdsrHtyK2pXC_-mvW_image.png" size="80" width="1415" height="678" position="flex-start" darkWidth="1415" darkHeight="678" showCaption="false" indent="2"}

2. Select the instances to upgrade and click **Upgrade**.

::Image[]{src="https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/FX9n4ks-5B46lAE4UBYw4_image.png" size="50" width="584" height="311" position="flex-start" darkWidth="584" darkHeight="311" showCaption="false" indent="2"}


[title] Manage Digital Twin Models
[path] Litmus Edge Manager User UI/Product Features/Digital Twins/

You can add or remove a Digital Twin model, add or remove tags to the model, and arrange the tags in a Schema. You can download a tag Schema JSON. You can enable or disable a Digital Twin model.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/D91jTl43ugZdQm32R9K5i_image.png "Manage Digital Twins")

| **Action**                                     | **Details**                                                                                                                                                                                     |
| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Import Model from file (**`.json`**)**  | Upload a model from a JSON file.                                                                                                                                                                |
| \[2] **Deploy models to edge device**          | Transfer models to the specified edge device.  See [Deploy Digital Twin Models to Edge Devices](docId\:hyW_gkgyU2viMnc0I8Nqg) for details.                                                      |
| \[3] **Upgrade Models**                        | Upgrade your models deployed on edge devices.                                                                                                                                                   |
| \[4] **Switch between Table view/Module view** | Toggle between different display formats.                                                                                                                                                       |
| \[5] **Export Model**                          | Save the current model to a file.                                                                                                                                                               |
| \[6] **Clone&#x20;**                           | Create a duplicate of the selected model.                                                                                                                                                       |
| \[7] **Edit Model**                            | Modify the properties and settings of the model.                                                                                                                                                |
| \[8] **Upgrade to Edge Device**                | Upgrade your models deployed on edge devices.                                                                                                                                                   |
| \[9] **Deploy to Edge Device**                 | Install the model on an edge device.                                                                                                                                                            |
| \[10]**&#x20;Delete**                          | Remove the selected model from the system.                                                                                                                                                      |
| \[11] **Action menu**                          | - **Export Model**
- **Clone**
- **Edit Model**
- **Deploy to Edge Device:&#x20;**&#x53;ee [Deploy Digital Twin Models to Edge Devices](docId\:hyW_gkgyU2viMnc0I8Nqg) for details.
- **Delete** |
| \[12] **View Model**                           | See [Modify a Digital Twin Model](docId:9zfKLpe8q4G8DEIUqz1cB) for details. A Digital Twin Model does not need to be modified with customizations before being deployed.                        |

# Next Steps

- [Modify a Digital Twin Model](docId:9zfKLpe8q4G8DEIUqz1cB)&#x20;
- [Deploy Digital Twin Models to Edge Devices](docId\:hyW_gkgyU2viMnc0I8Nqg)****


[title] Add a Draft Application Release
[path] Litmus Edge Manager User UI/Product Features/Marketplace: Catalogs and Applications/Application Releases/

You can add a draft release for a Docker application. A release is a new version of a Docker application.&#x20;

# Before You Begin

Ensure you have the following:

- A marketplace catalog for your application. You may wish to create a new catalog. See the *Add Catalog* option in [Marketplace: Catalogs and Applications](docId\:gqoGt_Szm8rz9UdPhl2NL) for detail&#x73;*.*
- An application to create a new release for. You may choose to create a new application for its first application release (See the *Add or Import an application&#x20;*&#x6F;ption in [Marketplace: Catalogs and Applications](docId\:gqoGt_Szm8rz9UdPhl2NL) for details) or create a new application release for an existing application. &#x20;

# Step 1: Create a Draft Application Release

**To create a draft application release:**

1. (Optional) Click **Containers Advanced** or **Compose**. By default, the tab is **Containers**.
2. Click the **Add release** button.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AotKRcbzzybgHcNNx000q_2023-07-2111-02-27.png "Add release button")
3. From the *Add Release* dialog box, enter the following details:
   - **Release Name**: Enter a release name (unique in the context of the application). A release version number is also recommended for certain applications.
   - **Description&#x20;**(Optional): Enter a release description specific to only this release.
   - **Readme&#x20;**(Optional): Enter plain text or Markdown content. The readme will provide important details such as what the application can/will do, and how to use the application.
4. Click on the newly created draft application release's tile. (When hovering a tile, it will display **View more details about this release.**)
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-cFEIaAQnZKqx-srxvVPP_2023-07-2111-05-19.png "Newly created application release tile [2.8-jessie is example]")

# Step 2:  (Optional) Add Launch Variables to the Draft Application Release

See [Set Up Variables for an Application Release](docId\:HF5YyWh3bwhFi6m2jKxHt) for details.

# Step 3: Add a Docker container configuration to the Draft Application Release

See [Set Up Docker Container Configurations for an Application Release](docId\:mebpl6tcgzj9NS2Cmk5cQ) for details.

# Step 4: Submit the Draft Application Release

You will need to go to the Draft Application Release tile, click the **Edit Release** icon, and select **Submit Release**. See [Manage Application Releases](docId\:FoZMtmXkxEI6Y-gPZAEvg) for more details.

Once a Draft Application Release has been submitted, you can no longer modify it. You would need to create a new release or clone the submitted release, and then modify the clone (while it is still in the Draft status). 

# Step 5: Deploy the Submitted Application Release

After submitting the Draft Application Release, you can deploy it to multiple Litmus Edge instances. See [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw) for details.


[title] Manage Tokens
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/Tokens/

:::hint{type="info"}
**Note**: The Tokens feature is available for Litmus Edge Manager 2.7.0 and later.
:::

Refer to the following actions you can take from the *Tokens* pane under Litmus Edge Manager Admin Console Settings.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FN01tInXk9XOHpiYGgnVQ_image.png "Admin Console Tokens")

| **Action**                               | **Details**             |
| ---------------------------------------- | ----------------------- |
| \[1] **Show filter** / **Hide filter**:  | Search by *Token Name*. |
| \[2] **View details**                    | Display details         |
| \[3] **Action Menu**                     | - Remove
- View details |


[title] Kafka
[path] Litmus Edge Manager Admin Console/Product Features/Integration/

# Kafka Settings

The Kafka Settings sub-module under the Integration module provides you with all the tools needed to set up and manage the Kafka configuration.

The Kafka Settings sub-module includes the following sections:

- **Kafka Server**: Allows you to view and copy the bootstrap server link, view and copy the Kafka SSL connection URL, and download the Kafka certificate.
- **Users**: Allows you to add and remove a Kafka user and change the password for a Kafka user.
- **ACL**: Allows you to add and remove an access control list (ACL) for a Topic, and copy an ACL user name.

# Access Kafka UI

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Integration**.
   Integration's *Kafka* pane by default appears.&#x20;

Refer to the following actions you can take on Litmus Edge Manager Admin Console's *Kafka* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cwEq1ciriaoQlpoGsCtN7_kil4ndn4q1qpb1d7ut-haimage.png "Litmus Edge Manager Admin Console: Kafka")

:::hint{type="success"}
**Tip**:

- The URL for the Bootstrap server can be pasted to the Broker field of th&#x65;*&#x20;Kafka* consumer in Flows.
- Some consumers require a separate IP and port.
:::

| **Action**                                    | **Details**                       |
| --------------------------------------------- | --------------------------------- |
| \[1] **Copy Kafka bootstrap server link**     | port `9092` for non-SSL.          |
| \[2] **Copy Kafka bootstrap server SSL link** | Port `9093` for SSL.<br />        |
| \[3]**&#x20;Download Kafka CA certificate**   |  Downloads a `ca_chain.pem` file. |
| \[4] **Show filter** /**&#x20;Hide filter**   | Search by *User Name*.            |
| \[5] **Add New User**                         | Add a new user name               |
| \[6] **Action menu**                          | - Change Password
- Remove        |
| \[7] **Show filter** /**&#x20;Hide filter**   | Search by *User Name*             |
| \[8] **Add ACL**                              | Add ACL                           |
| \[9] **Action menu**                          | * Remove                          |
| \[10] **Copy to clipboard**                   | Topic                             |
| \[11] **Copy to clipboard**                   | User Name                         |


[title] Reports
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

You can now send periodic performance statistics of your Edge devices directly via email to offer tailored reports to individual sites or divisions. Metrics show percentage changes based on the report frequency. For example, an Uptime (Online) metric shows the number of hours online and change since the last report.&#x20;

To view daily digest settings, toggle the **Enable Report&#x20;**&#x74;oggle. Here is a list of the information you can choose to send in email report:

- **Edge Node Metrics:**
  - **Connected Edge Nodes:** The number of edge devices that are connected.
  - **Estimated Messages / Second:** An estimate of how many messages are being processed.
  - **Flows:** The number of data flows.
  - **Total Applications:** The total number of applications.
  - **Connected Integrations:** The number of integrations that are connected.
  - **Disconnected Edge Nodes:** The number of edge devices that are disconnected.
  - **Newly Connected Edge Nodes (Recently Added Edge Nodes):** The number of edge devices that have recently connected.
  - **Connected Industrial Systems:** The number of industrial systems that are connected.
  - **Industrial Disruptions:&#x20;**&#x50;roblems with industrial connections.
  - **Messages sent to Litmus Edge Manager:&#x20;**&#x54;he number of messages sent.
- **Alerts & Triggers:**
  - **Number of alerts resolved:** Display how many problems have been fixed.
  - **Number of triggers generated:&#x20;**&#x44;isplay how many times certain conditions have been met.
- **Litmus Edge Manager Uptime & Downtime:&#xD;**
  - **Uptime (Online):&#x20;**&#x44;isplay how long Litmus Edge Manager has been running.
  - **Downtime (Offline):&#x20;**&#x44;isplay how long Litmus Edge Manager has been stopped.
- **Active Users, Companies, and Projects:**
  - **Total No. of Users:&#x20;**&#x54;he total number of users.
  - **Total No. of Companies:&#x20;**&#x54;he total number of companies.
  - **Total No. of Projects:** The total number of projects.
- **New Device Onboarding/Offboarding:**
  - **Total number of new device onboarding: &#x20;**&#x44;isplay how many new devices have been added.
  - **Total number of new device offboarding: &#x20;**&#x44;isplay how many devices have been removed.
-  **Applications & Catalogs:**
  - **Total number of applications deployed:&#x20;**&#x44;isplay how many applications have been installed.
  - **Total number of catalogs deployed:&#x20;**&#x44;isplay how many catalogs have been installed.
- **Templates:**
  - **Total number of templates deployed at instance level:** Templates deployed for the entire system.
  - **Total number of templates deployed at company level:&#x20;**&#x54;emplates deployed for specific companies.
  - **Total number of templates deployed at project level:** Templates deployed for specific projects.
-  **License:**
  - **Change in Node-locked License Activation:&#x20;**&#x43;hanges in the activation of specific licenses.
  - **Change in Site License Activation:** Changes in the activation of licenses for a location.
- **AI/ML Models:**
  - **Total number of models deployed:&#x20;**&#x44;isplay how many AI models have been installed.
- **Software Update:**
  - **Total number of software updates deployed:** Display how many software updates have been installed.
- **CPU, Memory, Network Load, Disk Usage:&#x20;**&#x49;nformation about how many resources Litmus Edge Manager is using.&#x20;
  *Please note:* This information is only for Litmus Edge Manager.
  - **CPU Utilization:** Display how much the processor is being used (User & System).
  - **Memory Usage:** Display how much computer memory is being used.
  - **Network Load:** Display how much data is being sent and received.
  - **Storage Utilization:** Display how much storage space is being used.
- **Edge Node Uptime & Downtime:**
  - **Uptime (Online):** Display how long the edge devices have been running.
  - **Downtime (Offline):** Display how long the edge devices have been stopped.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jeEjxHqUFICFooW2QF_-N_image.png)

# Report

When *Report* is enabled, do the following:

- **Period Frequency:&#x20;**&#x43;hoose to receive updates daily, weekly, or monthly.
- **Enable All Metrics:&#x20;**&#x53;elect specific performance metrics to include in emails.
- Click **Save&#x20;**&#x6F;r **Send Report**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XhXoPJ2r_KmMNC4QI-9ah_image.png" size="100" isUploading="false" width="1724" height="451" showCaption="false" indent="2"}

# Subscription

You can manage the list of subscribers for the reports.&#x20;

:::hint{type="info"}
**Important Notes:&#x20;**

- Only users with admin rights can configure the email settings.
- Users must set up SMTP [Email](docId\:GcxRXKR3-oc_O9zqz7Jke) settings to enable updates.
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XovyKFdl3HuzMdqB-8jZq_image.png)

| **Action**                     | **Details**                                                                                                                                                                                                                                                                                                 |
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Show filter:&#x20;**    | Filter the list of subscribers.                                                                                                                                                                                                                                                                             |
| \[2] **Add Subscriber:&#x20;** | Add a new name and email to subscribe to the reports.                                                                                                                                                                                                                                                       |
| \[3] **Refresh list:&#x20;**   | Reload the list of subscribers.                                                                                                                                                                                                                                                                             |
| \[4] **Action:&#x20;**         | - **Edit Subscriber:&#x20;**&#x43;hange the details like name or email for a subscriber.
- **Enable Subscriber:&#x20;**&#x49;nclude or exclude the subscriber in the report.
- **Send Report:** Manually send a copy of the report.
- **Delete Subscriber:&#x20;**&#x52;emove the subscriber from the list. |


[title] Docker Images
[path] Litmus Edge Manager Admin Console/Product Features/Docker Registry/

The *Images***&#xA0;**&#x73;ub-module allows you to upload images from the network or your hard drive, and pull them from the Docker registry. You can also view details for the image, copy an image pull command, and remove any images stored on the images pane.

*Docker Images&#x20;*&#x69;ncludes the *Image List* section where you can manage the Docker images.

:::hint{type="info"}
**Important:&#xA0;**&#x49;f the Docker Registry is disabled, you can enable at [Docker Settings](docId\:fNOt3P4u58-kh423wRE8K).
:::

# Before you begin

Make sure you do the following:

- Have permissions for the Docker Registry.
- Enable the Docker Registry in [Docker Settings](docId\:fNOt3P4u58-kh423wRE8K).&#x20;
- Enable the Authentication in [Docker Settings](docId\:fNOt3P4u58-kh423wRE8K). You must enable authentication to make sure the login user is registered. If you don't enable authentication, anyone can pull the image from the Docker Registry.

# Access Docker Images UI

**To access the docker images UI:**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Docker Registry**.
   Docker Registry's *Images* pane by default appears.&#x20;

Refer to the following actions you can take on Litmus Edge Manager Admin Console's *Docker* *Images* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zGZ7aEOAnk2ulf_FWDcO__hyzzouhpqqwco9ju6vsjaimage-1.png "Litmus Edge Manager Admin Console: Docker Images")

| **Action**                                                            | **Details**                                      |
| --------------------------------------------------------------------- | ------------------------------------------------ |
| \[1] **Show filter / Hide filter**                                    | Search for images                                |
| \[2] **Upload Docker image**                                          | Docker image files are in a `.tar` file format.  |
| \[3] [Pull Image from Docker Registry](docId\:lvtAxUAcy7JXd0QqVM-PE)  | Pull the image to local network                  |
| \[4] **Expand Docker Image Details**                                  | The Syslog server will receive the test message. |
| \[5] **Click to copy&#x20;**                                          | - Pull command                                   |
| \[6] **Action menu**                                                  | * Remove                                         |


[title] Management
[path] Litmus Edge Manager Admin Console/Product Features/Data Lifecycle/

The *Management* module allows you to download archived data files and purge the archived data files from this sub-module.

The types of archived data files you can download are:

- **Events**: Litmus Edge event data.&#x20;
- **Incidents**: Incident history data generated by alerts.
- **OMA**: Litmus Edge data in OMA format. This format has been deprecated from Litmus Edge and Litmus Edge Manager.&#x20;
- **Raw**: Litmus Edge data in raw format.

When you purge an archive, all the data for the selected project is removed.

The Management module includes the Data Archive list.

# Access Management UI

**To access the management UI:**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Data Lifecycle**.
   Data Lifecycle's *Statistics* pane by default appears.&#x20;
3. From Data Lifecycle's navigation sub-panel, select **Management**.
   Data Lifecycle's *Management* pane appears.

Refer to the following actions you can take on the *Data Lifecycle* > *Management* pane. The user interface below is for Litmus Edge Manager version 2.10.1 and later.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JQ65b83_Il73qRAcAcmT6_image.png" size="80" width="1920" height="866" position="center" caption="Data Lifecycle: Access Management" showCaption="true"}

| **Action**                             | **Details**                                                                                                                                                            |
| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Show filter** / **Hide filter** | Open the filter option.                                                                                                                                                |
| \[2] **Refresh&#x20;**                 | Update the list.                                                                                                                                                       |
| \[3] **Download File**                 | Files that can be available to download are:<br />* events
* incidents
* oma
  - This format has been deprecated from Litmus Edge and Litmus Edge Manager.&#x20;
* raw |
| \[4] **Action&#x20;**                  | - **Purge:&#x20;**&#x54;his will delete the archived data from the Litmus Edge Manager. Purging a data archive cannot be undone.                                       |

:::hint{type="info"}
**Important Notes:&#x20;**

- The Event data is not automatically deleted after archiving. It remains stored unless manually removed. &#x20;
:::


[title] Litmus IQ
[path] Litmus Edge Manager Admin Console/Product Features/Integration/

Litmus IQ is an AI chat agent that accepts questions in natural language based on daily digest report data. For example, use the AI chat agent to ask 'How many edge devices are online' or 'What's the current disk usage and available space'.

After configuring Litmus IQ, an AI chat agent becomes available on all Litmus Edge Manager pages.

:::hint{type="info"}
**Note:** Litmus IQ is an experimental feature and must be enabled in the Admin Console in **Settings** > **Experimental Features**. For more information, see [Experimental Features](docId\:PtIJysv_x6gV1g0Z4oR2B).
:::

To configure Litmus IQ:

1. In Litmus Edge Manager Admin Console, navigate to **Integration** > **Litmus IQ**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Lio0PO8VqmPQpEa3pSVs8_image.png" size="100" isUploading="false" width="1462" height="579" darkWidth="1462" darkHeight="579" showCaption="false" indent="2"}

2. In **Base URL**, add the root URL (endpoint) where LEM will send OpenAI-compatible API requests for the chat agent.
3. In **API Key**, add the API key for authenticating requests to the OpenAI-compatible service.
4. In **Chat Model**, specify the AI model to use for chat responses and requests.
5. To enable converting docs and user queries into vectors for semantic search and Retrieval-Augmented Generation (RAG):
   1. Select **Embedding support**.
   2. In **Embed Model**, specify the model for generating vector embeddings.
6. Click **Validate** to confirm that integration settings are correct.&#x20;
7. Click **Save**.


[title] Interfaces
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/Network/

:::hint{type="info"}
**Note**: The Interfaces feature is available for Litmus Edge Manager 2.8.0 and later.&#x20;
:::

You can configure the interface settings and add a static IP address by navigating to **Settings** > **Network** and clicking the **Interfaces** tab.

To change the IP address to access Litmus Edge Manager, see [Change the IP Address of Litmus Edge Manager](docId\:qcv7MR9ma_fzEqjKizQpC).&#x20;

This feature enables you to configure Litmus Edge Manager so that it can be accessible from multiple IP addresses.&#x20;

The user interface below is for Litmus Edge Manager version 2.10.1 and later.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MAl0YKeMKaRD3bvq32per_image.png "Interfaces Tab")

# Update Network Interface

Adding a new address will enable you to access the Litmus Edge Manager from the new IP address. Contact your local network administrator for accessible IP addresses.

You can also enable/disable DHCP for the network interface as needed.

:::hint{type="info"}
**Note**: As of Litmus Edge Manager version 2.10.1, if DHCP is disabled, you must have at least one IP address with a gateway.&#x20;
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sCmJOgjeMhoXIwayspn5o_image.png" size="80" width="684" height="431" caption="Update Network Interface" position="center" showCaption="true"}

# Next Steps

- [Change the IP Address of Litmus Edge Manager](docId\:qcv7MR9ma_fzEqjKizQpC)


[title] Step 5: Create an Activation Request in Litmus Edge
[path] How-To Guides/Litmus Edge Manager User UI Guides/Apply a Parameterized Template During Activation/

You will need to create the activation request from a new Litmus Edge instance that will be sent to the Litmus Edge Manager.

**To create the activation request from the un-activated Litmus Edge instance:**

1. In a new browser, log in to your Litmus Edge instance and navigate to **System** > **Device Management&#x20;**> **Litmus Edge Manager Activation**.
2. Copy and paste the **Activation URL** from *Step 4* to the *Data & Device Management Endpoint* input field. Then click **Validate&#x20;**&#x74;o establish a connection.
3. Copy and paste the **Activation Code** from *Step 4&#x20;*&#x74;o the *Activation Code* input field. Then click **Activate**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Aaoa8UMYTWTTP2cUlqx08_image.png "Litmus Edge Manager Activation pane")
4. The *Activation request has been sent&#x20;*&#x64;ialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qM6xoOn2gTyUQlPJd5DDc_image.png" size="70" width="640" height="213" position="center" caption="Activation request has been sent dialog box" showCaption="true"}

# Next Step

After creating an activation request in LE, you need to [Approve the Activation Request in Litmus Edge Manager.](docId\:CVo0Mhk6WBQBM6fyeVElD)

[title] How to Enable 2FA on Keycloak for LEM Authentication
[path] How-To Guides/Litmus Edge Manager User UI Guides/

You can enable two-factor authentication through Keycloak to securely authenticate your Litmus Edge Manager (LEM) account.

**To enable 2FA on Keycloak:**

1. Log in to *Litmus Edge Manager* and navigate to **Dashboard**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/05YE46Z1C1en2OJ9zmiiI_image.png "LEM Dashboard")
2. Click on your **profile&#x20;**&#x69;con in the upper right corner and select **Profile**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fDUi9iNCdFCytvMl5AwKV_image.png "LEM Dashboard Profile Icon")
3. The *KEYCLOAK* profile opens in a new b.&#x20;
4. Click o&#x6E;**&#x20;Account security&#x20;**&#x69;n the left sidebar and selec&#x74;**&#x20;Signing in** from the drop-down menu.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RKBDwBAU-RJD9pLcP9Zjv_image.png "KEYCLOAK - Account security page")
5. Click the **Set up Authenticator application** button next to the *Two-factor authentication* section.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3uhCs1A5w-41y6zA28DFM_image.png "KEYCLOAK - Account security - Signing in page")
6. You will be redirected to the *Update password&#x20;*&#x73;creen.


[title] Step 3: Apply the Variables and Download the Parameterized Template JSON Configuration
[path] How-To Guides/Litmus Edge Manager User UI Guides/Apply a Parameterized Template During Activation/

You can apply the variables to the template and download the JSON to verify the variables were correctly applied.&#x20;

**To apply the new variables and download the parameterized template:**&#x20;

1. From the *Parametrized Template* panel, find the attribute to apply the variable.
   For this guide, it's the name of two *DeviceHub Devices* and *Country code*.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eE1sS91nCQqnLKGmKdsCp_image.png "Parametrized Template panel")
2. Click the **Edit variable** button next to an attribute and use the drop-down menu to select the right *variable&#x20;*&#x66;or that attribute.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5sVGpzpGYOlDLWHh4X353_image.png "Parameterized Template panel")
3. Click the **green tick** next to the attribute after selecting the variable.
4. Repeat steps 2-3 for the other two variables and their attributes.
5. Clic&#x6B;**&#x20;Save parameterized** **template**. Then click **Preview Template** to open th&#x65;*&#x20;Set Variables* dialog box.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N56p-dnzPG0eLWUY1SEyu_image.png "Parameterized Template Save and Preview Button")
6. Fill in details for newly added variables in the *Set Variables&#x20;*&#x64;ialog box:
   - Please refer to the list of [country codes for ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) when choosing the appropriate **Country\_Code**.
   - Please provide a suitable name for both of the devices.
   - Click **PREVIEW**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Pio9vjGTbACIAErODqjTe_image.png" size="70" width="628" height="676" position="center" caption="Set Variable dialog box" showCaption="true"}
7. The *Preview* *template&#x20;*&#x64;ialog box appears. Verify the variables and click **DOWNLOAD**.
   The template's *JSON&#x20;*&#x63;onfiguration is saved on the computer.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZtClFO9ozVz01CqEMdBC3_image.png" size="70" width="622" height="676" position="center" caption="Preview template dialog box" showCaption="true"}
8. Open the **JSON&#x20;**&#x63;onfiguration file using Notepad and verify whether the variable names entered in the *Set Variables* dialog box are correctly displayed here.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/J4KCmZl6282RYe8JxFYa6_image.png" size="70" width="678" height="996" position="center" caption="JSON preview for template" showCaption="true"}

# Next Step

After downloading the JSON, you will [Create a Basic Activation Configuration with a Parameterized Template in Litmus Edge Manager.](docId\:jzPhm4AiKUMCZe9HvzL-a)

[title] Set Up Alert Triggers
[path] Litmus Edge Manager User UI/Product Features/Alerts/

:::hint{type="info"}
**Note**: The user interface below is for Litmus Edge Manager version 2.10.1 and later.&#x20;
:::

You can add an alert trigger for edge devices in the *Triggers* section in the *Alerts* module.&#x20;

Review the following guides for setting up alert triggers:

- [Create an Email-Alert Trigger for Connector Online Status](docId\:da-gvxuEPnYfpaTsSYhcq)
- [Create an Email-Alert Trigger for DeviceHub Device Data Quality](docId\:keO0ctAMmo949dTzLGw7V)

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/A38eHBYNP-fMkJ2HOT1cn_image.png" size="80" width="1298" height="760" position="center" caption="Add new trigger icon" showCaption="true"}

:::hint{type="warning"}
**Important**: Triggers require an action for notification implementation.
:::

Variables change depending on the **Source** selected.

# Before You Begin

Add an action to the *Action List* to receive a notification. See [Add new Action](docId\:BWq6oBkuTNZgIJBIgQPBE) for detail&#x73;*.*

# Step 1: Select and Set Up Source

Completing the *Source&#xA0;*&#x73;ection first avoids issues with the variables for th&#x65;***&#xA0;**&#x53;ubject***&#xA0;**&#x61;nd *Message***&#xA0;**&#x66;ields in th&#x65;*&#xA0;Trigger***&#xA0;**&#x73;ection. The source is the type of condition needed to trigger an alert.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/l92yK6RHiNucMJahWZOGn_image.png "New Trigger: Source section")

**To select a source**:

1. Select a **Source**.   &#x20;The options are:&#x20;
   - **Metrics:&#x20;**&#x54;he *Trigger&#x20;*&#x73;ection's *Subject* and *Message* fields will be hidden and disabled.**&#x20;&#x20;**
   - **Events:&#x20;**&#x54;he *Trigger&#x20;*&#x73;ection's *Subject* and *Message* fields will be revealed and enabled.
2. Click the **Add** link to add a new rule. The rule table drops down. The rule table is dependent on your source selection.

## Step 1a: Set Up Metrics Source

Select a metrics source to set up an alert that triggers based on metrics collected by Litmus Edge Manager, specifically when the value of a variable is a certain desired value or certain set/interval of values.  You may create only one metrics rule per alert.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VAElv5pvijtNGYgxNSgv4_image.png" size="80" width="1905" height="400" position="center" caption="New Trigger : Source section : Metrics Source" showCaption="true"}

From the **Select Alert template** drop-down list, select an alert template and enter a value for each of the respective parameters. Refer to the following table for more information on each alert template:&#x20;

| **Metrics Name \| Source**                      | **Description / Purpose**                                                                                                                                                                     | **Parameters**                                         | **Trigger Condition (Create an Alert...)**                                                                                                                              |
| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Connector disk buffer \| Integration            | Monitor [Integration](docId\:Wpqo1fE02tmx3AsKewQU6) Connector disk buffer, which is used when the connector’s throughput is insufficient to handle all defined tags coming from Edge devices. | - Target Value in MB
- Alert Delay in seconds          | When the usage of [Integration](docId\:Wpqo1fE02tmx3AsKewQU6) Connector disk buffer is above \_\_Target\_Value\_\_ MB for more than \_\_Alert\_Delay\_\_ seconds.<br /> |
| Connector online status \|<br />Integration     | Detect unplanned [Integration](docId\:Wpqo1fE02tmx3AsKewQU6)Connector disconnections.                                                                                                         | * Alert Delay in seconds                               | When the [Integration](docId\:Wpqo1fE02tmx3AsKewQU6)Connector is offline for more than \_\_Alert\_Delay\_\_ seconds.                                                    |
| DeviceHub (DH) online status \| DeviceHub       | Detect unplanned disconnections of DeviceHub (DH) devices.                                                                                                                                    | - Alert Delay in seconds                               | When the DeviceHub (DH) device is offline for more than \_\_Alert\_Delay\_\_ seconds.                                                                                   |
| DeviceHub (DH) device data quality \| DeviceHub | Monitor the rate of low-quality (i.e. error) messages. A high rate of low-quality messages indicate a problem with either the physical device or the device driver.                           | * Target Value in msgs/minute
* Alert Delay in seconds | The rate of low-quality messages for the DH device is above \_\_Target\_Value\_\_ for more than \_\_Alert\_Delay\_\_ seconds.                                           |
| Edge Device online status \| Edge Device        | Detect unexpected disconnections of edge Devices.                                                                                                                                             | - Alert Delay in seconds                               | The edge device is offline for more than \_\_Alert\_Delay\_\_ seconds.                                                                                                  |
| Edge Device license expiration \| Edge Device   | Detect when the license of an edge device has expired.                                                                                                                                        | * Target Value in days
* Alert Delay in seconds        | When the license for an edge device is going to be expired in \_\_Target\_Value\_\_ days for more than \_\_Alert\_Delay\_\_ seconds.                                    |
| Edge Device free disk space \| Edge Device      | Monitor the available disk space of an edge device.                                                                                                                                           | - Target Value in Percentage
- Alert Delay in seconds  | When the free disk space is less than \_\_Target\_Value\_\_ percent for more than \_\_Alert\_Delay\_\_ seconds.                                                         |
| Edge Device memory available \| Edge Device     | Monitor the available memory of an edge device                                                                                                                                                | * Target Value in Percentage
* Alert Delay in seconds  | When the Free RAM is less than \_\_Target\_Value\_\_ percent for more than \_\_Alert\_Delay\_\_ seconds.                                                                |
| Edge Device CPU Idle \| Edge Device             | Monitor the CPU usage of an edge device                                                                                                                                                       | - Target Value in Percentage
- Alert Delay in seconds  | When the CPU idle  is less than \_\_Target\_Value\_\_ percent for more than \_\_Alert\_Delay\_\_ seconds.                                                               |

## Step 1b: Set Up Events Source

Select an events source to set up an alert that triggers when a specific event occurs.&#x20;

:::hint{type="info"}
**Note:&#x20;**&#x54;he trigger for *Events* in Edge devices will only work if the *Forward Events&#x20;*&#x74;oggle is enabled. For more details on events, refer to the [Events](docId\:OnS8mKWpVtKc93cOoRAKm) documentation.&#x20;
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UWVqMEu_SNpoH0AUqV055_image.png" size="80" width="1908" height="496" position="center" caption="Source section: Events Source" showCaption="true"}

**To set up an events source**:

1. From the **Severity** drop-down list, select an option.&#x20;
   - All
   - Info
   - Warning
   - Alert
2. From the **Component** drop-down list, select an option.&#x20;
   - All
   - cc - Integrations
   - mp - Marketplace
   - dh - Device Hub
   - auth - Auth
   - dm - Device Management
3. From the **Event ID&#x20;**&#x64;rop-down list, select an option. Options are dependent on th&#x65;*&#x20;Component&#x20;*&#x73;elected. See [Event ID for User Alert Triggers](docId\:gvKc02F1g_KO9srUqXdYD).
4. (Optional) Click **Show Event Attributes...** For each of the event attributes, enter a value.
5. (Optional) In th&#x65;**&#x20;Info** field, enter a value.
6. Repeat with additional new rules by clicking the **Add new rule** button as needed.

# Step 2: Set Up Trigger

:::hint{type="info"}
**Note**: For Litmus Edge Manager version 2.14.0 and later, you can customize the subject and message of the trigger alert with your preferred text in addition to the variables.&#x20;
:::

You can customize the trigger's subject/message contents that will be sent to a recipient. The visibility of the *Subject***&#xA0;**&#x61;nd *Message***&#xA0;**&#x66;ields are dependent on the *Source***&#xA0;**&#x73;election from Step 1.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-wqg7EtcE99kokzlSsW5H_image.png "Set up Trigger: Metrics version")

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6GfWGzK92sYDZgCGzjU2-_image.png "Set up Trigger: Events version")

## Subject and Message Variables

You can select from the following variables in the trigger subject and message:

- **$devicename**: The name of the associated edge device . (For example: Litmus Edge (08:00:23:18\:r5:32).
- **$name**: The name of the associated connector or DeviceHub device. (For example: PLC\_2)
- **$alertDelay**: The alert delay parameter configured for the trigger.&#x20;
- **$value**: The current value associated with the connector or DeviceHub device that is being monitored. (For example: connector disk buffer of 98MB)
- **$company**: The company associated with the edge device for the trigger.&#x20;
- **$deviceid**: The associated edge device ID. (For example: 9udklweoidslsdd0lksdjfslkd)
- **$project**: The project associated with the edge device for the trigger.&#x20;
- **$targetValue**: The target value configured for the trigger. (For example: 50MB for Connector disk buffer)
- **$componentid**: The associated component for the event trigger: cc - Integrations, mp - Marketplace, dh - Device Hub, or auth - Auth.&#x20;
- **$message**: The associated event message for the trigger.&#x20;
- **$triggerid**: The associated trigger ID.&#x20;
- **$hostname**: The associated host name for the trigger.&#x20;
- **$tags**: The associated tags for the trigger.&#x20;
- **$severity**: The severity level selected for the trigger: Info, Warning, or Alert.&#x20;
- **$triggername**: The name configured for the trigger.&#x20;
- **$type**: The associated event type for the trigger.&#x20;
- **$eventid**: The event ID associated with the trigger.&#x20;

**To set up the trigger**:

1. In th&#x65;**&#x20;Name** field, enter a name for the trigger.&#x20;
2. (Optional) Click the **Active&#x20;**&#x63;heckbox to set an active trigger flag.
3. (Optional) Click the **Dashboard&#x20;**&#x63;heck box to show trigger alerts on the dashboard.
4.   In the **Description** field, enter a description for the trigger.&#x20;
5. In the **Subject&#x20;**&#x66;ield, select one or more variables. For Litmus Edge Manager version 2.14.0 and later, you can enter your preferred text in addition to selected variables.&#x20;
6. In the **Message&#x20;**&#x66;ield, select one or more variables. For Litmus Edge Manager version 2.14.0 and later, you can enter your preferred text in addition to selected variables.&#x20;

# Step 3: Set Up Scope

You can customize the scope of the user triggers. This will determine the applicable edge device(s) that will receive this alert trigger.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TlZN2XYt9OyMQdwoeyVu0_image.png "New Trigger: Set up Scope")

To set up the scope, select an option from the *Scope&#x20;*&#x73;ection.&#x20;

- **All edge devices**
- **Edge Device**. From the **Edge Device** drop-down list, select an edge device.

# Step 4: Set Up Action

You must create an action to use this section. You can select the response action that will immediately occur after the alert is triggered.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HlNTd3OwtjixPUqHfnivs_image.png "New Trigger: Set up Action")

**To set up the action**:

1. Select an option from the **Action List** drop-down list.
2. (Optional) Select the **Continuously&#x20;**&#x63;heck box.
   - If you have checked **Continuously**, enter a value in the **Notification Period** field in minutes.
3. Click **Save**.   &#x20;The alert trigger appears in the Trigger List.

:::hint{type="info"}
**Important:&#x20;**&#x54;o continue receiving incident notifications for the same condition, you must resolve the current incident first. After clicking *Resolve Incident*, a notification will be sent confirming the resolution.
:::


[title] Add Tokens
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/Tokens/

:::hint{type="info"}
**Note**: The Tokens feature is available for Litmus Edge Manager 2.7.0 and later.
:::

You can create a token from the **Settings** > **Tokens** pane.&#x20;

:::hint{type="warning"}
**Important**: After a token has been created, it can be viewed but no longer be modified.
:::

# Step 1: Create Token

**To create a new token:**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. Navigate to **Settings** > **Tokens**.
3. Click the **Add New Token&#x20;**&#x69;con.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/71ytbOjjJlYv0guEwpJRv_2023-07-2409-23-19.png "Add New Token icon")

# Step 2: Enter Token Details

Enter the token name and select the expiration date for the token.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pa-R87LTpczQHcTrop_GE_image.png "Token Details")

# Step 3: Define Token Scope

You will need to define what companies and projects the token can access.&#x20;

Make one of the following selections.&#x20;

## Administrator Scope

Selecting this will give the token instance administrator permissions, therefore giving access to all companies and projects.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/G5TMJFg6LRwYFKtc-UUe2_image.png "Administrator scope option")

## All Companies

Selecting this will give the token access to all companies and projects, but not instance administrator permissions.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eMxRCbPHKaRtGHsiAIiYn_image.png "All Companies scope option")

## Custom Token Scope

Select individual companies to give the token access to all the projects for the company or select individual projects to the token access to.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tp5bH0ciQmvKlFEACdOQA_image.png "Custom Token scope access")

# Step 4: Edge API Bridge Option

:::hint{type="info"}
**Note**: This option is available for Litmus Edge Manager version 2.15.0 and later.&#x20;
:::

Select this option to integrate all applicable Litmus Edge APIs through a single Litmus Edge Manager endpoint.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GVZIwLSP-EeI7fx9zQ5hv_image.png "Edge API Bridge option")

The token has access to Litmus Edge APIs through: https\://\[LEM URL]/api/v1/edge/\{project-id}/\{edge-device-id}/\<edge-api-path>/\*

Do the following to retrieve these parameters:

- **project-id**: In the Litmus Edge Manager User UI, navigate to **Edge Devices** and click the device name you want to give access to. In the browser address bar, copy the string after the company name.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ORsdGNhM-fidICZ3AhHoX_image.png "Project ID parameter")

- edge-device-id: In the same browser address bar, copy the string after **device**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qSK1PdKp4g6btu7mHlYoh_image.png "Edge Device ID parameter")

# Step 5: Save Token



After saving the token, make sure to copy it before closing the dialog.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Czs2UE5zudsaPyKuPGg-r_new-token-created.png" size="60" width="552" height="299" position="center" caption="New token created [blurred token]" showCaption="true"}

# Use Token

When accessing the API, you must use the custom field `X-AuthToken` in the HTTP header.&#x20;

For example:&#x20;

`X-AuthToken: zZA82pIo70xzsrwmSl1f0P6DSfvuZgo1`






[title] Admin Console Backup
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

:::hint{type="info"}
**Note**: This is available for Litmus Edge Manager version 2.15.0 and later.&#x20;
:::

The *Backup&#x20;*&#x6D;odule allows you to download, upload, and bulk delete Litmus Edge Manager (LEM) application and configuration files. &#x20;

## Overview

The backup process for LEM consists of a compressed and encrypted file downloaded from the LEM Admin UI. The data is updated every 24 hours, and 7 copies of each LEM version are maintained on the server until user deletes them manually.

**Backup Type:** Compressed and encrypted file, available for download from the LEM Admin UI.

**Rotation:** 7 copies of each LEM version.

**Retention Period:** Backup files will remain until user deletes them manually.

LEM backup contain the following files:

**&#x20;1. Application Data**

- Company and project settings
- Activation requests
- Sites (except site icons)
- Triggers and Actions
- Templates
- Marketplace Applications and their associated data and configurations
- Marketplace Catalog (data and configuration)
- Grafana Dashboards and other settings
- Remote access setup
- Licenses (Note: Licenses won't work after restoring on another VM)
- Keycloak
- Registry Credentials
- Certificates
- SMTP Settings
- Tokens

**2. User Data**

- Users and their access to specific projects/companies.

**3. Marketplace Apps**

- All marketplace apps and associated data and configurations.

**4. LE Connected to LEM**

- All Litmus Edge devices connected to the Litmus Edge Manager.

**5. Database Dumps:**

- mysql-grafana.sql
- mysql-keycloak.sql
- mysql-lem.sql
- mysql-mpcs.sql
- mysql-mpcs\_rbac.sql
- mysql-mysql-user.sql

## What Is Not Backed Up

- Old upgrades and backups
- Events
- Docker registry data
- ClickHouse data
- DNS Entries (LEM only lists DNS servers; not backed up to avoid network access issues)
- Network settings

## Process

The following process define the steps required to create and upload a backup file in LEM.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XHYfo8jvqAhjzhQbmfidP_image.png "Backup UI")

:::hint{type="warning"}
**Important**:&#x20;

- Importing a configuration replaces configuration data and cannot be undone. Select the appropriate bundled zip file.&#x20;
- Any node-locked licenses will be removed after restoring a backup on a new virtual machine (VM). You will have to request new node-locked licenses from your Litmus account representative.&#x20;
- Network files are not backed up to avoid breaks on restore.
- As of Litmus Edge Manager 2.24.0 release, LEM Admin UI allows you to create long-term API tokens with scope `LEM Backup`.
:::

| **Action**                       | **Details**                                                                                                                                                                                                                                                                                |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| \[1] **Create backup**           | Download a backup file of the Litmus Edge Manager configuration. Configuration files are password protected and generated as a `.tar` file. Process logs are visible in the *Log* section.<br />To export the configuration, you'll need the password of the Litmus Edge Manager instance. |
| \[2] **Upload backup file**      | Upload a Litmus Edge Manager configuration file. To import the configuration, you'll need the password of the Litmus Edge Manager instance.                                                                                                                                                |
| \[3] **Remove selected backups** | This option allows you to bulk delete the selected backup configurations files at once.                                                                                                                                                                                                    |
| \[4] **Show backup/restore log** | View the latest export/Import operation log. You can toggle **Auto-scroll** to the **On&#xA0;**&#x70;osition to automatically scroll down to the most recent messages in *Process Log*. Doing so helps monitor a running export/import process.                                            |
| \[5] **Refresh**                 | Reload the list of backup files.                                                                                                                                                                                                                                                           |




[title] Edit a User Profile
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/Users/

To edit a user profile, open the action menu for a user and select **Edit User**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/j_CQOf9WRhroUJRuMXTO4_image.png "User action menu")

# Edit User Profile

You can edit the following sections for the user:

- **Edit User**: Change the First Name, Last Name and Email address for the user. You can lock the user account from this section. You cannot change the User Name.
- **Change Password**: Change the user password.
- **Company Level Teams***:* Add, modify, and remove company teams. You can add or remove team members by clicking on an existing team name. You can filter the company teams list.
- **Project Level Teams**: Add, modify, and remove project teams. You can add or remove team members by clicking on an existing team name. You can filter the project teams list.
- **Marketplace Roles**: Select or deselect marketplace roles for the user.
- **Grafana Roles**: Select or deselect Grafana roles for the user.&#x20;

# Edit Company Team

To [Edit a Company Team](docId\:LDllqh5dtQNonPSuQynkX), you can open the highlighted action menu below or click the link for the company name.&#x20;

You can also remove the company team from the action menu.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1owD4bT__4rZDnZb0PgF0_2023-08-1815-58-01.png "Company team action menu")

# Edit Asset Management Roles

Visibility of edge devices is limited to the companies that a user has access to. Additionally, you specify one of the following roles:

- The **Viewer** role provides view access to Digital Twins.
- The **Administrator** role provides full access to Digital Twins.

# Edit Grafana Roles

When the **Grafana administrator toggle&#x20;**&#x69;s enabled, the user will receive the `Admin` role for the Grafana Dashboard. When disabled, the user will lose the `Admin` role and be set as an `Editor` or `Viewer`. See [Grafana Dashboards](docId\:YTC1N5pOOjR1elW34jQmF) and [Visualize Child Device Data Using Grafana](docId\:cY2MwkiuvJ2nvNBZhaotC) for details.


[title] License Server Management
[path] Litmus Edge Manager Admin Console/Product Features/

Litmus uses an integrated license server to manage site-based licenses for Litmus Edge and Litmus Edge Manager. This system enables efficient activation and monitoring of your instances across different sites.

After obtaining a valid site license key from the [Customer Portal](https://portal.litmus.io), a corresponding site license is generated and added to the embedded license server. This site license is automatically applied when activating an edge device through Litmus Edge Manager. See [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) for further details.&#x20;

The License Server Management pane includes the following sections.

- **Core License List**: Displays all activated site licenses and their statuses for connected edge devices.
- **Feature License List**: Displays a list of features enabled with the activated site license.
- **Offline Activation**: Enables you to activate a site license key with the license portal and add the respective site license.

**To access the license server management UI:**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **License Server Management**.
   The *License Server Management* pane appears.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/j25qT5y67VvQXzEaho0nc_image.png)

# License Server

:::hint{type="info"}
**Note**: For Litmus Edge Manager version 2.12.0 and later, the user interface is split into two tabs: *License Server* and *License Clients*.&#x20;
:::

You can view and manage the following sections in the *License Server* tab.&#x20;

## Core License List

The Core License list includes the following information.

- **Status**: The current operational status of the site license.
- **License Name**: Identifier for the license feature enabled for your edge devices.&#x20;
- **Expiry Date:** The date on which the license will expire.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JPka0fwuvvGITugBzjsaG_elw6agkdm2zhamw3zge8oimage.png "License Server Management: Core License")

| **Action**                             | **Details**                             |
| -------------------------------------- | --------------------------------------- |
| \[1] **Show filter** / **Hide filter** | Search by *License Name*, *Expiry Date* |
| \[2] **Action menu**                   | - Remove                                |

## Feature License List

This list includes the features enabled under the activated site license:

- **Status**: The status for each site-license feature
- **License Name**: The name of license features included for your connected edge devices
- **In use**: The number of iterations that are currently in use for your license features
- **Available**: The number of iterations that are available for your license features
- **Total Count**: The total number of iterations that are available for your license features
- **Expiry Date**: The expiration date for the license feature

This section lists available features with the activated site license for edge devices. The License SKU determines the available site-license features and may include:

- Analytics
- Backup
- Core
- Catalog
- Devices
- Marketplace
- License Core
- OPCUA
- Tags
- Updates

Use the **Show filter / Hide filter&#x20;**&#x62;utton to search by *License Name*, *Total Count*, or Expiry Date. The action menu also provides an option to remove a license when necessary.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dk8_JOeVrhj10UPD5rJ9X_izahaqiojsu3kn6aqv9kimage.png "Feature license list")

## Offline Activation&#x20;

:::hint{type="info"}
**Note**: This version of Offline Activation is available for Litmus Edge Manager version 2.8.0 and later.&#x20;
:::

- You can add a *Core* or an *Add-on* license for edge devices from the *Offline Activation* section in the *License Server Management* pane.&#x20;
- Once the licenses are added, edge devices that have been or will be activated with a Site license will receive the *Core* and all the *Add-on* Site licenses.&#x20;
- While multiple Add-on licenses can be added as needed, only one Core license can exist.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vZpwCyX_tl_EB-vNYiZN0_image.png" size="80" width="1819" height="432" position="center" caption="License Server Management: Offline Activation Step 1" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AzFwIVaZffCZPyyKEkBWx_image.png" size="80" width="1830" height="240" position="center" caption="License Server Management: Offline Activation Step 2" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1H4JhGRbgV3HaM1JYlWyd_image.png" size="80" width="1824" height="307" position="center" caption="License Server Management: Offline Activation Step 3" showCaption="true"}

### Before You Begin

Ensure you have a site license key, which you can request from the [Customer Portal](https://support.litmus.io).&#x20;

### Add a Site License Offline

**To add a site-based license offline:**

1. From the *Create Activation Request* section:
   - In the *License Key* field, enter the **Site-License Key**.
   - (Optional) Select a *License Type&#x20;*&#x74;o add from the drop-down menu.
   - Click **Generate request**.     &#x20;The activation request appears in the *Activation request* field.
     - Next to th&#x65;*&#xA0;Activation request* field, Click the **Copy Activation Request** icon. The activation request is copied to your clipboard.
   - Click **Next**.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zX98ITY44NhM5mDkAT79Z_image.png)
2. From the *Make license file&#xA0;*&#x73;ection, click the **License Portal&#xA0;**&#x6C;ink. The Licensing Portal page ([https://litmus.activate.id/offline](https://litmus.activate.id/offline)) opens in a new tab.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ut3JjMU_p-wYHSE2eregb_image.png)
   - Paste the activation request in the *Activation Request* field, and then click **Make License**. (You may need to verify **I'm not a robot**) The encoded license appears in the *Activation Result* field.
   - Next to the *Activation Result&#xA0;*&#x66;ield, click the **Copy content to clipboard&#x20;**&#x69;con.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lspIC-DrZ7SnVY1lGigo1_image.png)
   - Return to the *Make license file* section in the *Offline Activation* browser tab and click **Next**.
3. From the *Add License&#xA0;*&#x73;ection, in the **License&#xA0;**&#x66;ield, paste the encoded license, and then click **Add License**.
   The *License&#x20;*&#x69;s added.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kQeZjKf8mg8S4gRNnTg2D_image.png)
4. Once a site license is activated, the user must choose the license type; otherwise, the site license will not be applied. This selection can be made in **Settings** > **License&#x20;**> **License Settings**.

# License Allocation

:::hint{type="info"}
**Note**: For Litmus Edge Manager version 2.26.0 and later, the user interface is split into three tabs: *License Server, License Allocation,* and *License Clients*.&#x20;
:::

You can now allocate data points at the company/project level within a site license. This lets you control and manage data usage across multiple sites or divisions. It's important to note that this feature is only available for site licenses, so the associated edge device allocation is done per site license.

**To access the license allocation UI:**

1. From the Navigation panel, select **License Allocation**.
   The *License Allocation&#x20;*&#x70;ane appears.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CN7B62h1T0BZ36sNM7ZuS_image.png)

| **Action**                             | **Details**                                                                                                                                                                                                   |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Show filter** / **Hide filter** | Search for Licenses to allocate in the table.                                                                                                                                                                 |
| \[2] **Add allocation**                | Add or edit a license allocation. To configure:<br />* Select the company and project for the license allocation.
* Enter the number of data points to allocate.
* Select the expiry date for the allocation. |
| \[3] **Export allocations (CSV)**      | Download the list of licenses allocated in CSV format.                                                                                                                                                        |
| \[4] **Refresh list**                  | Update the display for the license allocated in the list table.                                                                                                                                               |
|  \[5] **Action**                       | Select the following options:<br />* **Add allocation:&#x20;**&#x41;dd or edit a license allocation.
* **Delete allocation:&#x20;**&#x52;emove the allocated license.                                         |

# License Clients

:::hint{type="info"}
**Note**: For Litmus Edge Manager version 2.12.0 and later, the user interface is split into two tabs: *License Server* and *License Clients*.&#x20;
:::

You can create and manage edge devices connected to the license server from the *License Clients* tab.&#x20;

The *License Clients* tab allows you to manage the list of Litmus Edge instances that are clients to the license server. You can also add license clients directly without first activating through Litmus Edge Manager and connecting it through a proxy.

**To create an activation request for a device on the license server:**

1. From the License Clients tab, click the **Add&#x20;**&#x69;con.&#x20;
   Th&#x65;*&#x20;Create New Request* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fnU1kmRrAsLpPhTE2pwTJ_add-icon-for-license-server-device.png" size="80" width="1300" height="627" position="center" caption="The Add icon for a license server device" showCaption="true"}
2. Configure the details for the request.&#x20;
   - **Label**: Enter a label to identify the activated device.&#x20;
   - **URL**: Review and confirm the license server URL. Update the port value as needed.&#x20;
3. Click **Create**.&#x20;
   The *New Request Created* dialog box displays.&#x20;
4. Click the **Copy&#x20;**&#x69;con for the activation request.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wTWQveJSHe8XHg_qzztfi_new-request-created-dialog-box.png" size="60" width="511" height="307" position="center" caption="New Request Created dialog box" showCaption="true"}
5. Log in to the Litmus Edge instance you want to activate and navigate to **System&#x20;**> **License**.&#x20;
6. In the *License Server Settings* section, click **Set Server**.&#x20;
   The *Set License Server Configuration* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ED-uo1C0vsanHq_6e5LfQ_set-server-button.png" size="80" width="1156" height="507" position="center" caption="Set Server button" showCaption="true"}
7. In the **Configuration&#x20;**&#x66;ield, paste the request you copied earlier and click **Save**.&#x20;

If the activation is successful, a success message is displayed.&#x20;

Click the **Action** menu to remove an activated device from the list and select **Revoke activation**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Xtfra17sjjUCzkIRRsz0s_image.png" size="80" width="1480" height="655" position="center" caption="Action menu for an activation request for a license server device" showCaption="true"}


[title] NTP
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/Network/

:::hint{type="info"}
**Note**: The Interfaces feature is available for Litmus Edge Manager 2.8.0 and later.&#x20;
:::

You can configure the NTP settings by navigating to **Settings** **>** **Network** and clicking the **NTP** tab.

This feature is best in used in situations where Litmus Edge instances do not have internet access (thus no access to public time servers).&#x20;

# NTP Clients and NTP Servers Overview

In setups where Litmus Edge instances normally have internet, Litmus Edge instances are NTP Clients to an NTP server (available on the public internet) that provide them clock synchronization services.

Litmus Edge Manager can instead act as a replacement NTP server to provide clock synchronization services to connected Litmus Edge instances. These Litmus Edge instances will be NTP Clients to the Litmus Edge Manager. In this configuration, Litmus Edge Manager will use its local time to provide the clock synchronization to the Litmus Edge.

For Litmus Edge instances to set the Litmus Edge Manager as an NTP Server, see the *NTP Servers* section of [Configure DNS/NTP Servers](docId\:pz9D0WPBQbUGyh0MH6wyx).&#x20;

There is also a more advanced configuration that provides clock synchronization from an existing NTP server. The Litmus Edge Manager can connect to an upstream NTP server (which may be available on the public internet or elsewhere) and receive a time that will be sent downstream to its connected Litmus Edge instances. In this configuration, the Litmus Edge Manager will simultaneously act as an intermediate NTP server to Litmus Edge instance and also an NTP client to the upstream NTP server.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CwdYReYgtgsYmtP0HI--H_image.png" size="80" width="1920" height="866" position="center" caption="NTP Tab" showCaption="true"}

| **Action**                         | **Details**                                                                                                                                                                                                                                                                                                                           |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Toggle NTP Server**         | Enable the NTP server button                                                                                                                                                                                                                                                                                                          |
| \[2] **Show Clients**              | This feature is only available when the NTP server is enabled.                                                                                                                                                                                                                                                                        |
| \[3] **Refresh NTP Client Status** | This will show the NTP server the Litmus Edge Manager is connected to. If no NTP servers are available, the Litmus Edge Manager will display a status of `LOCAL`, indicating that it will synchronize the time of Litmus Edge instances based on the Litmus Edge Manager's local time rather than a time received from an NTP server. |
| \[4] **Enter NTP server address**  | You cannot add an NTP Server that's already been added.                                                                                                                                                                                                                                                                               |
| \[5] **Add**                       | Specify the external NTP Servers that the Litmus Edge Manager will connect to. The Litmus Edge Manager itself will act as an NTP client to these servers.                                                                                                                                                                             |
| \[6] **Delete NTP Server**         | Remove NTP server                                                                                                                                                                                                                                                                                                                     |

# NTP Clients

When you click **Show Clients**, the **NTP Clients** dialog box opens. It shows the IP address of all Litmus Edge devices connected to the Litmus Edge Manager.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uqBAnCVc2ytgV9Oy08MRj_image.png" size="80" width="689" height="394" caption="NTP Clients" position="center" showCaption="true"}


[title] Step 6: Approve the Activation Request in Litmus Edge Manager
[path] How-To Guides/Litmus Edge Manager User UI Guides/Apply a Parameterized Template During Activation/

Once the activation request is sent to Litmus Edge Manager, you will need to approve it.&#x20;

**To approve the provisioning request for an edge device:**

1. From the *Navigation&#x20;*&#x70;anel, select **Activation**.
   The *Configuration* and *Requests* sub-modules drop down.
2. From the navigation panel, select **Requests**.
   The *Activation Request List* pane appears.
3. Click the **Action** menu after finding your edge device, then select **Approve**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jCDlQqjFIFUiDrGslSxyd_image.png "Activation Request List pane")

# Next Step

Once the activation request is approved, you can [Set Variables in Litmus Edge Manager.](docId\:Lqj2utpw90k8Ul3gsZCUU)

[title] Step 4: Create a Basic Activation Configuration with Parameterized Template in Litmus Edge Manager
[path] How-To Guides/Litmus Edge Manager User UI Guides/Apply a Parameterized Template During Activation/

To apply the Parameterized Template during activation, you need to create a basic activation configuration in LEM.

**To create a basic activation configuration with Parameterized Template:**

1. Navigate to **Activation&#x20;**>**&#x20;Configuration** and click **Add activation config** icon.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3zZr15TXf_W48zoXDlREm_image.png "Activation > Configuration page")
2. Start configuring the *Limits*, *Licenses*, and *License Type.* See *Steps 1-2&#x20;*&#x6F;f [Set Up an Activation Configuration](docId\:VbRFW-a0LLtuJmwdpuNNV) to learn more.&#x20;
3. To add a template, go to the *Templates&#x20;*&#x70;ane and click the **Add template&#x20;**(**+**) icon.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/v9IikTITZrDeJINgclgvH_image.png "Activation > Configuration > Templates pane")
4. The *Template Select&#x20;*&#x64;ialog box appears. Tick the **checkbox** for parameterized template and click **SELECT**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PEomYlflbY4jWHnQxXASJ_image.png "Template Select dialog box")
5. When done configuring the *Activation Configuration*, click **Save**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tv2HBbamCUBKia1ktjFgt_image.png "Activation Configuration save button")
6. Once saved, the activation code will then be generated in the *Activation Code* field. This code and the *Activation URL* will be needed when activating a Litmus Edge instance.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Zwx0LrKw_GOt-lmLmxPBp_image.png "Activation Configuration page")

# Next Step

After creating an activation configuration in LEM, you will [Create an Activation Request in Litmus Edge.](docId\:gwn-33G0VPJYSyIxoTfqj)

[title] Create an Email-Alert Trigger for Connector Online Status
[path] How-To Guides/Litmus Edge Manager User UI Guides/Alerts Guides/

In this guide, you'll set up an alert and a trigger for Litmus Edge's default MQTT SSL connector that connects to Litmus Edge Manager. Then you will simulate a disconnection for the connector to trigger the alert.

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/JVz0FD7Ryj0?si=aZJM83Eo64MKX7Bt&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Before You Begin

- You will have to enable SMTP from the Litmus Edge Manager Admin Console. See [Email](docId\:GcxRXKR3-oc_O9zqz7Jke) to learn more.&#x20;
- If you haven't yet connected your Litmus Edge instance to Litmus Edge Manager, see [Activate an Edge Device](docId\:JalA8oA1dTK8BdVoENAwA). A Litmus Edge instance needs to be activated in Litmus Edge Manager before it can trigger alerts.

# Step 1: Set Up an Email-Alert based Trigger&#x20;

In this step you'll create an email notification alert. Next, you will create a trigger that will use the email notification alert. See [Alerts](docId\:BWq6oBkuTNZgIJBIgQPBE) for additional details.

From Litmus Edge Manager, navigate to **Alerts** and follow the steps below.&#x20;

## Step 1a: Set Up an Email Alert

**To set up an email alert:&#x20;**

1. From the *Alerts&#x20;*&#x70;ane, click the **Add new Action** icon. &#x20;
   The *Add new Action* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jcIeQ5n7Ahq0K5lkrL8Pq_add-new-action-icon.png" size="80" width="1378" height="719" caption="Add new Action icon" position="center" showCaption="true"}
2. From the *Add new Action* dialog box, enter the following details:
   - **Action Template**: Select EMAIL.
   - **Action Name**: Enter an action name.&#x20;
   - **Enter email**: Enter an email address that will receive the alert.
   - **Notifications Limit**: Enter 1.&#x20;
   - **Interval**: Select *minute*.
3. Click **Add**.&#x20;
   The newly created action appears in the *Action List*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/12fxB2Jd2r2gu7ixNdevB_image.png" size="80" width="1554" height="496" caption="Creating a new email alert" position="center" showCaption="true"}

## Step 1b: Set Up a Trigger

**To set up a trigger:&#x20;**

1. From the *Alerts&#x20;*&#x70;ane, click the **Add new Trigger&#x20;**&#x69;con.&#x20;
   The *New Trigger* pane appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SjncOzK9ps2UhX6kmCCP2_add-new-trigger.png" size="80" width="1379" height="715" caption="Add new Trigger icon" position="center" showCaption="true"}
2. From the *New Trigger* pane, configure the following sections.&#x20;

### Trigger

- **Name**: Enter a name for the trigger.
- **Active**: Select the checkbox.
- **Dashboard**: Select the checkbox.
- **Description**: Enter a description for the trigger.

### Scope

Selec&#x74;**&#x20;Edge Device&#x20;**&#x61;nd select the appropriate Litmus Edge instance.&#x20;

### Source

- Selec&#x74;**&#x20;Metrics&#x20;**&#x61;s the source of the trigger.
- Click **Add&#x20;**&#x6E;ew rule.
- **Select Alert template**: Select *Connector online status.*
  - Enter the value `60` for *Alert Delay, seconds*.&#x20;

### Action

- **Action List**: Select the action you previously created.
- **Continuously**: Select the checkbox to send notifications continuously. &#x20;
- **Notification Period, minutes**: Enter 1.

When done, click **Save**.&#x20;
The alert trigger appears in the Trigger List.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JCNGn8a0etxST8x6e1_mc_2023-09-1510-24-18.png "Creating a connection status email trigger")

# Step 2: Simulate a Disconnection

From Litmus Edge, you will simulate a disconnection with Litmus Edge Manager.

**To simulate a disconnection:**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Integration**.
   The *Integration&#x20;*&#x70;ane appears.
3. From the *generic-mqtt-ssl* tile, click the toggle to disable the connector.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GJwu3br78QDUWZSXugQl8_image.png" size="80" width="844" height="495" position="center" caption="Disabling the SSL connector" showCaption="true"}

# Step 3: Verify Successful Trigger and Alert

From Litmus Edge Manager, you will verify the simulated disconnection.

**To verify the trigger and alert:**

1. Log in to Litmus Edge Manager.
2. Select the appropriate company and project.
   The *Dashboard&#x20;*&#x70;ane appears for the project.
3. From the navigation panel, select **Incidents**.
   The *Incidents&#x20;*&#x70;ane appears.

Confirm you see the incident listed.&#x20;

The email address that was configured for the alert will also receive the respective alert email.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3dnC_ZEFnxsoPoMlqhJRG_vqxt10uwvt7wlaldr8pekimage.png "Alert email")


[title] Create an Email-Alert Trigger for DeviceHub Device Data Quality
[path] How-To Guides/Litmus Edge Manager User UI Guides/Alerts Guides/

In this guide, you will set up an alert and a trigger for a Litmus Edge device that is generating invalid/corrupted data. Then you will simulate an error output so that an alert is triggered. When the alert is triggered, the email addresses specified in the trigger will receive an email with information about the alert.

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/iTi-2YpCZRs?si=BPPeYsh5hif2lG1e&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Before You Begin

- You will have to enable SMTP from the Litmus Edge Manager Admin Console. See [Email](docId\:GcxRXKR3-oc_O9zqz7Jke) to learn more.&#x20;
- If you haven't yet connected your Litmus Edge instance to Litmus Edge Manager, see [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB).&#x20;

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). Select the Device Type **Simulator&#x20;**&#x61;nd Driver Name **Generator**.

# Step 2: Add Tag

After connecting the device, you can [Add a Tag](docId:8sE7z3PmRfwL1nmzcwaLX) to the device.

Configure the following for the tag:&#x20;

- **Name:&#x20;**&#x53; - Random value generator
- **Value Type**: string

# Step 3: Import Topic into Default Generic MQTT SSL Connector

You will next import the tag you've created as a topic into the generic MQTT SSL connector that connects Litmus Edge to Litmus Edge Manager.&#x20;

**To import the tag into the generic MQTT SSL connector:**

1. Log in to Litmus Edge.&#x20;
2. Navigate to **Integration**.&#x20;
3. Click the *generic-mqtt-ssl* connector tile.&#x20;
4. Click the **Topics&#x20;**&#x74;ab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RiGXq8U4ibEwXlMqu4VdZ_topics-tab.png" size="70" width="539" height="516" position="center" showCaption="false"}
5. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/88SwMXPJ-ZlRMlYGiiEL0_import-tags-icon.png" size="80" width="1053" height="483" caption="Import from DeviceHub tags icon" position="center" showCaption="true"}
6. Select the check box to import the tag from the device you created earlier and click **Import**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6KAn2U3ny1gcM2d__EtNi_devicehub-import.png" size="80" width="962" height="272" caption="DeviceHub Import dialog box" position="center" showCaption="true"}
7. Click the **Enable all topics** icon.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OFsKCxfI-FgSrUhp1ORi9_enable-all-topics-icon.png" size="80" width="1164" height="469" caption="Enable all topics icon" position="center" showCaption="true"}
8. Return to the *Integration&#x20;*&#x70;ane and toggle the connect option and confirm the status is `CONNECTED`.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/I2Ops086U4tzxrunFVNlN_connection-toggle.png" size="60" width="367" height="258" caption="Connector connection toggle" position="center" showCaption="true"}

# Step 4: Set Up an Email-Alert Trigger&#x20;

In this step you will create an email notification alert. Next, you will create a trigger that will use the email notification alert. See [Alerts](docId\:BWq6oBkuTNZgIJBIgQPBE) for additional details.

From Litmus Edge Manager, navigate to **Alerts&#x20;**&#x61;nd follow the steps below.&#x20;

## Step 4a: Set Up an Email Alert

**To set up an email alert:&#x20;**

1. From the *Alerts&#x20;*&#x70;ane, click the **Add new Action** icon. &#x20;
   The *Add new Action* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jcIeQ5n7Ahq0K5lkrL8Pq_add-new-action-icon.png" size="80" width="1378" height="719" caption="Add new Action icon" position="center" showCaption="true"}
2. From the *Add new Action* dialog box, enter the following details:
   - **Action Template**: Select EMAIL.
   - **Action Name**: Enter an action name.&#x20;
   - **Enter email**: Enter an email address that will receive the alert.
   - **Notifications Limit**: Enter 1.&#x20;
   - **Interval**: Select *minute*.
3. Click **Add**.&#x20;
   The newly created action appears in the *Action List*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/12fxB2Jd2r2gu7ixNdevB_image.png" size="80" width="1554" height="496" caption="Creating a new email alert" position="center" showCaption="true"}

## Step 4b: Set Up a Trigger

**To set up a trigger:&#x20;**

1. From the *Alerts&#x20;*&#x70;ane, click the **Add new Trigger&#x20;**&#x69;con.&#x20;
   The *New Trigger* pane appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SjncOzK9ps2UhX6kmCCP2_add-new-trigger.png" size="80" width="1379" height="715" caption="Add new Trigger icon" position="center" showCaption="true"}
2. From the *New Trigger* pane, configure the following sections.&#x20;

### Trigger

- **Name**: Enter a name for the trigger.
- **Active**: Select the checkbox.
- **Dashboard**: Select the checkbox.
- **Description**: Enter a description for the trigger.

### Scope

Selec&#x74;**&#x20;Edge Device&#x20;**&#x61;nd select the appropriate Litmus Edge instance.&#x20;

### Source

- Selec&#x74;**&#x20;Metrics&#x20;**&#x61;s the source of the trigger.
- Click **Add&#x20;**&#x6E;ew rule.
- **Select Alert template**: Select *DH device data quality.*
  - For *Target Value, msgs/minute,* enter 1 minute.
  - For *Alert Delay, seconds,&#x20;*&#x65;nter 60 seconds.&#x20;

### Action

- **Action List**: Select the action you previously created.
- **Continuously**: Select the checkbox to send notifications continuously. &#x20;
- **Notification Period, minutes**: Enter 1.

When done, click **Save**.&#x20;
The alert trigger appears in the *Trigger List*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DsjHfYW9CXo-YB4vDxZNZ_image.png" size="80" width="1920" height="866" caption="Creating a new trigger" position="center" showCaption="true"}

# Step 5: Simulate Invalid/Corrupted Data

From Litmus Edge, you will simulate the DeviceHub driver sending invalid/corrupted data.

**To simulate a disconnection:**

1. Log in to Litmus Edge.
2. ~~From the navigation panel, navigate to **DeviceHub&#x20;**> **Tags**.   ~~
   ~~   The *Tags* pane appears.~~
3. ~~Click the **Action menu** for the tag you created and select **Edit**. ~~
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0e0EVH-1xV-mcr9fWDDtS_edit-tag.png "The Edit option for the tag")
4. For the **Value Type** field, select float64.
5. For the **Formula** field, corrupt the *Formula* field by replacing the `s` in `sin` with `1` so that the final formula starts with `1in`. Then, click **Update Tag**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SbKcMpkwo-Ei3WUF_VYVP_image.png" size="80" width="1176" height="705" caption="Corrupted Tag Formula" position="center" showCaption="true"}

# Step 6: Verify Successful Trigger and Alert

From Litmus Edge Manager, you will verify the simulated error rate.

**To verify the successful trigger and alert:**

1. Log in to Litmus Edge Manager.
2. Select the appropriate company and project.
   The *Dashboard&#x20;*&#x70;ane appears for the project.
3. From the navigation panel, select **Incidents**.
   The *Incidents&#x20;*&#x70;ane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rRs-rERLJhCfGdyFSIZ9e_image.png" size="80" width="1920" height="866" caption="List of incidents" position="center" showCaption="true"}

The email address that was entered from *Step 4a: Set up an Email Alert* will also receive the respective alert email.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4yicIObGDEErFdRPDRwUk_image.png" size="80" width="1055" height="532" caption="Sample email that LEM will send out" position="center" showCaption="true"}


[title] Step 3: Establish Secure Connection Between Primary and Secondary Catalog
[path] How-To Guides/Litmus Edge Manager User UI Guides/Deploy Edge Applications to Multiple Sites Using Marketplace Catalog Sync/

You need to establish a secure connection between the primary and the secondary catalog to synchronize the applications.

A **JSON bootstrap** file is used by the *Secondary&#x20;*&#x63;atalog to activate the connection with the *Primary&#x20;*&#x63;atalog.

**To download the Primary marketplace catalog bootstrap file:&#x20;**

1. From the primary marketplace catalog's *Applications&#x20;*&#x70;ane, click **Synchronization**. The *Synchronization: Primary Catalog&#x20;*&#x70;ane appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QtFapcsutAwaxKDDyllAG_image.png "Synchronization: Primary Catalog pane")
2. From *Expiration within:* customize the desired duration for the bootstrap credential file.&#x20;
3. Click **Generate**. A `.bootstrap` file will be downloaded to your local computer.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BOXayB9hlkOwFAn_jmqGQ_image.png "Synchronization: Primary Catalog pane")

Once you have downloaded the `.bootstrap` file, you need to upload it to at least one *Secondary&#x20;*&#x6D;arketplace catalog. This should be done on Litmus Edge Manager located in Japan.

**To upload the bootstrap credential file to Secondary marketplace:**

1. From the secondary marketplace catalog's *Applications&#x20;*&#x70;ane, click **Synchronization**. The *Synchronization: Secondary Catalog* pane appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_LaApNc_LXeFxxUWxopK7_image.png "Synchronization: Secondary Catalog pane ")
2. Click **Upload**. Then, navigate to the `.bootstrap` file you downloaded earlier from the previous step and select it.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SuTtDhi2GbBUwEP2zVC24_image.png "Upload the .bootstrap file to Synchronization: Secondary Catalog pane ")
3. Confirm the *Certificate&#x20;*&#x69;nformation and click **Yes**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CPcc58K1hw5rhWCDQlC-G_image.png" size="70" width="607" height="533" position="center" caption="Certificate information pane" showCaption="true"}
4. You need to **approve&#x20;**&#x74;he connection request for the *Secondary* Catalog from the *Primary&#x20;*&#x43;atalog pane.
   To do this, go back to the *Synchronization* page in the *Marketplace Catalog* of the first Litmus Edge Manager Instance. Then, select **Secondary Catalogs.**
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YK0F3FqCk2ObKSEUK0Vyo_image.png "Synchronization page for first Litmus Edge Manager Instance")
5. You will receive a request from the secondary catalog to synchronize applications from the primary catalog. Click the **Actions** menu and select **Approve**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0Mvnib1tbbDa9ln62ZSUh_image.png "Approve connection request for sync")
6. If successful, the upload process status will display as **Approved&#x20;**&#x69;n both the *Primary&#x20;*&#x61;nd *Secondary Catalog Synchronization* pages.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1fDoO3fdJJEqEnt_mgkc7_image.png "Approved Status in the Secondary Catalog Synchronization page")
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/33_i6JljTKJV1Adt7VN_0_image.png "Approved Status in the Primary Catalog Synchronization page")

A successful connection has been established between the primary catalog located in Canada and the secondary catalog located in Japan.

**Next:** [Step 4: Synchronize Secondary Catalog to Primary Catalog](docId\:ILFE6vhXxhgSqhuISb8Dl)

[title] Step 1: Create Primary Catalog With List of Applications
[path] How-To Guides/Litmus Edge Manager User UI Guides/Deploy Edge Applications to Multiple Sites Using Marketplace Catalog Sync/

From the first Litmus Edge Manager (LEM) instance located at the Headquarters (Canada), you will create a *Primary&#x20;*&#x6D;arketplace catalog and then add the applications.&#x20;

**To create primary marketplace catalog with list of applications:**

1. Log in to Litmus Edge Manager.
2. Select a **company**.
   The *Projects&#x20;*&#x70;ane appears.
3. From the *Projects&#x20;*&#x70;ane, click a project or open the **Action menu** for a project and select **View**.&#x20;
   The *Dashboard&#x20;*&#x70;ane appears for the project.&#x20;
4. From the navigation panel, select **Features**.
   The *Features* pane appears.
5. Click the **Marketplace** tile.
   The *Marketplace Catalog* pane appears in a separate browser tab.
6. Click **Add catalog**.&#x20;
   The *Create Catalog&#x20;*&#x64;ialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EmHpsJSIVGndrYLnz50Qr_image.png "Marketplace Catalog page")
7. From the *Create Catalog&#x20;*&#x64;ialog box, enter the following details:
   - **Name:&#x20;**&#x45;nter a name with a maximum of 32 characters.
   - **Description**: Enter the description for the catalog.
   - **Synchronize:** Select the checkbox. Then, from the *Select Role* drop-down list, select **Primary.**
   - Click **Save**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wHnMAhzxkiAYP22B7fsrX_image.png" size="80" width="940" height="409" position="center" caption="Create Catalog dialog box" showCaption="true"}
8. Click the **Primary** marketplace catalog card you just created.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dRKaQrRHpIUHNkJ-QhNiI_image.png " Primary marketplace catalog card")
9. From the *Applications&#x20;*&#x70;ane for the selected marketplace catalog, click **Add or Import an application**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1hA8iV0ieYfKKPHgZd4l0_image.png "Applications pane")
10. From the *Add Application&#x20;*&#x64;ialog box, enter the following details:
    - **Name:&#x20;**&#x45;nter the name of the application.
    - **Attach Application Icon:** Upload an visual image to represent the application.&#x20;
    - **Category:&#x20;**&#x45;nter category for the application.
    - **Description:** Enter description for the application.
    - **Import:&#x20;**(Optional) Upload a *JSON* configuration for the application.
    - Click **Save**.
      ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/o2XduoDZTXuKjq3mhjIf9_image.png" size="70" width="735" height="587" position="center" caption="Add Application dialog box" showCaption="true"}
11. Click the **Application** card you just created and add a draft application release.
    See [Application Releases](docId\:V_JC6NJ8Hu8R756NNEr7n) to add multiple release versions to your application.
    The *Application&#x20;*&#x63;ard will look like below screenshot after adding multiple release versions.&#x20;
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lkA6S_BKqPQ6J6kZWxonc_image.png "Application card ")
12. To add more applications and their respective release versions, you can repeat the process from *steps 9-11*.&#x20;
    The *Applications&#x20;*&#x70;ane looks like below after adding a list of applications.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iO5xjSKGDd49gOAtURlHq_image.png "Applications pane")

The LEM with the *Primary&#x20;*&#x6D;arketplace catalog at the Canadian headquarters is now ready to synchronize with the Secondary marketplace catalog located in Japan.

**Next:** [Step 2: Create Secondary Catalog](docId\:ZO8hyYhJOLAEiH2tHM7-W)

[title] DigiCert
[path] Litmus Edge Manager Admin Console/Product Features/Integration/

:::hint{type="info"}
**Note**: The DigiCert feature is available for Litmus Edge Manager 2.21.0 and later.
:::

Litmus Edge Manager (LEM) allows you to centrally manage certificates to ensure encrypted end-to-end communication over TLS (Transport Layer Security). By providing users with the ability to seamlessly view and control certificates across all active Litmus Edge instances, LEM facilitates the streamlined management of self-signed certificates directly within the platform.&#x20;

The DigiCert IoT Trust Manager integration helps users easily manage, renew, and resolve problems with certificate expiration. It also simplifies certificate administration for managing edge devices.

# Access DigiCert UI

**To access the DigiCert UI:&#x20;**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Integration**.
   Integration's *Kafka* pane by default appears.&#x20;
3. From Integration's navigation sub-panel, select **DigiCert**.
   Integration's *DigiCert* pane appears.

Refer to the following actions you can take on Litmus Edge Manager Admin Console's *DigiCert&#x20;*&#x70;ane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/p7S3QDc6ZNvF2MghW1jD9_image.png "DigiCert IoT Trust Manager")

| **Action**                     | **Details**                                                                                                                                                                                                                                                              |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| \[1] **DigiCert server URL**   | This parameter is the DigiCert server URL used for communication with the DigiCert IoT Trust Manager. See [Manage Certificates with DigiCert IoT Trust Manager Integration](docId\:WMPXv5e6D8dZWNeUjiFTE) to learn more.                                                 |
| \[2] **Enrollment Profile ID** | This parameter is a unique identifier for the Enrollment profile used for authenticating with the DigiCert IoT Trust Manager. See [Manage Certificates with DigiCert IoT Trust Manager Integration](docId\:WMPXv5e6D8dZWNeUjiFTE) to learn more.                         |
| \[3] **Enrollment Passcode**   | This parameter is a one-time generated code used for authentication between the Litmus Edge Manager Admin Console and the DigiCert IoT Trust Manager. See [Manage Certificates with DigiCert IoT Trust Manager Integration](docId\:WMPXv5e6D8dZWNeUjiFTE) to learn more. |
| \[4] **Validate**              | Button to validate the DigiCert integration settings and ensure successful communication with DigiCert IoT Trust Manager.                                                                                                                                                |


[title] Incidents
[path] Litmus Edge Manager Admin Console/Product Features/Alerts/

The **Incidents** tab provides a single view of all triggered incidents across every company, project, and edge device in the instance. From this page you can monitor system-wide operational health, investigate alert history, and resolve open incidents without switching between tenants. Access incidents in **Alerts** > **Incidents**.

:::hint{type="info"}
**Note:** The Incidents page is an Admin Console feature and shows incidents across all tenants. For project-level incident management, see [Alerts](docId\:BWq6oBkuTNZgIJBIgQPBE) for the Litmus Edge Manager User UI.
:::

Each incident entry includes:

| Column               | Description                                                                        |
| -------------------- | ---------------------------------------------------------------------------------- |
| **Trigger**          | The alert trigger that fired the incident.                                         |
| **Scope**            | The company, project, and edge device where the incident occurred.                 |
| **Incident Message** | The message associated with the alert trigger.                                     |
| **Started At**       | The date and time the incident began.                                              |
| **Resolved At**      | The date and time the incident was resolved. No value displays for open incidents. |
| **Status**           | The current state of the incident: **New** or **Closed**.                          |
| **Action**           | Options menu to resolve the incident.                                              |

# Filter and Sort Incidents

Click the filter icon in any column header to narrow results, for example, by **Status** (All, New, or Closed) or a **Started At** date range. You can also sort any&#x20;filterable column. To reload the list, click the reload icon at the top right of the page.

# Resolve an Incident

To resolve an open incident, click **Resolve** in the **Action** column for that row. The incident status changes to **Closed** and the **Resolved At** timestamp is populated.

[title] Disconnect an Edge Device
[path] How-To Guides/Litmus Edge Manager User UI Guides/

You can disconnect your Edge device from your Litmus Edge Manager (LEM) when it is no longer needed. Follow these steps to disconnect an Edge device.

# Before You Begin

Ensure you have at least one Edge device activated in your Litmus Edge Manager. See [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) for more information.

# Step 1: Navigate to Edge Devices

From your LEM dashboard, open the **Edge Devices** page. 

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/c-gROLP8D_IpxnERx1Ltk_image.png "LEM edge devices page")

# Step 2: Deactivate the Device

You must first deactivate the device before disconnecting it from LEM. 

**To deactivate an edge device:**

1. For the Edge device you want to disconnect, click the **Action menu** and select **Deactivate**.&#x20;
   The *Deactivation* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LcsRiSle0I22b60OZ1px5_x.png "LEM edge devices list of active devices")
2. Select the checkbox to *Force deactivation&#xA0;*&#x61;nd click **DEACTIVATE**. 
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jcL-k6B8zFWaUHbHw_sQ6_ax.png "Edge device deactivation confirmation dialog box")

:::hint{type="warning"}
**Caution:** Deactivation is an irreversible process. If not done carefully, you may lose all device configurations.
:::

# Step 3: Remove the Device

Once you have deactivated the device, you can safely remove it.

**To remove an edge device:** 

1. Navigate to th&#x65;*&#x20;Edge Devices* page again.
2. Click the **Action menu&#x20;**&#x61;nd select **Delete**.&#x20;
   The *Deletion&#xA0;*&#x64;ialog box appears.
3. To remove the device permanently, click the **DELETE&#xA0;**&#x62;utton.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/78UsdaaJnLgAR6vRj39_A_warr.png "Edge device deletion confirmation dialog box")

Confirm that the disconnected device is no longer in the *Edge Devices* table.

[title] Company Settings
[path] Litmus Edge Manager User UI/Product Features/LEM Settings/

Companies are the main organizational unit that you can define. They contain the following:

- Company teams that define company-wide access privileges.&#x20;
- Company projects, which can represent individual plants that a company operates.

# Company

The *Company&#x20;*&#x74;ab includes the Settings, Company Teams, Team Members, and Remove Company sections.

## Settings

Modify the company name, and add or modify the company description.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-1aF2FpcILVyVTSP40wJv_image.png" size="80" width="1398" height="358" position="center" caption=" Company tab: Settings" showCaption="true"}

## Company Teams

Add, modify, and delete a company team. You cannot modify or delete the company team called `OWNER`.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0FWBLpR2G5VnBKdmnYUTI_image.png" size="80" width="1397" height="216" position="center" caption="Company tab : Company Teams" showCaption="true"}

Make sure you have added at least one company. Members of the `OWNER` Team have permission for all features and options.&#x20;

## Team Members

&#x20;Add and remove members for a selected company team added in the *Company Teams* section.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Jqjy7RkhmTdYyeFlSevBb_image.png" size="80" width="1774" height="164" position="center" caption="Company tab: Team Members" showCaption="true"}

When adding a new company team member user, the new user will be in one of two states:

- `PENDING`: The user has not responded to the invitation email.
- `ONBOARD`: The user has responded to the invitation email. When the user confirms the invitation, they are directed to an open instance of the company in a new tab on their browser.

:::hint{type="info"}
**Note**: The invitation email will not be sent to the new user if SMTP is disabled, see [Email](docId\:GcxRXKR3-oc_O9zqz7Jke) to enable. 
:::

## Remove Company

Remove the selected company. Before you can remove a company, you must remove all the associated projects. Removing a company cannot be undone.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IzYh4kVuvi37dWuK8zCZk_image.png" size="80" width="1398" height="85" position="center" caption="Company tab: Remove Company" showCaption="true"}

Prior to removal, all projects within a company must be deleted first (see [Remove Project](docId\:hmGSXiivMvDy4K43OanRv) for details) to remove a project. This operation will delete all related resources and they cannot be restored. After deleting a company, you cannot reuse the company name.&#x20;

# Projects

The Projects tab includes the Project List and Project Teams sections.

## Project List

Add, modify and remove a project associated with the selected company.

****

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Sv6OjxWLePOGbEZkCvG8X_image.png" size="80" width="1767" height="168" position="center" caption="Projects tab: Project List" showCaption="true"}

:::hint{type="info"}
**Notes**:&#x20;

- The project name must be alphanumeric and cannot include spaces or special characters.
- Removing a project removes all related resources and they cannot be restored.
:::

## Project Teams

Add and remove a team with a selected role for a selected project that is associated with the selected company.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2ONIb46rGz_gxfHc1ZdV3_image.png" size="80" width="1771" height="171" position="center" caption="Projects tab: Project Teams " showCaption="true"}

When adding a project team, make sure you have added a project first.


[title] Upgrade
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

Refer to [Software Update](docId\:hzLOrWMFP3cGa8OvH_njo) to learn how to manage software updates of Litmus Edge Manager.&#x20;

[title] Litmus Edge Manager User UI Guides
[path] How-To Guides/


[title] Admin Console Settings
[path] Litmus Edge Manager Admin Console/Product Features/

The Settings module allows you to manage the settings for your Litmus Edge Manager (LEM).

[Domain/SSL](docId\:MC8Z1bK3yWcKQq4-kupCv)

- **Domain**: Update base domain name and view the domain process log.
- **SSL Settings**: Select and configure an SSL setting and view the SSL process log.
- **Edge Remote**: Manage edge remote endpoint.

[Cloud](docId\:Tcs7sRvoORXHg5UzOyVSP)

- **Cloud Credentials**: Set cloud provider credentials.
- **Rotation:&#x20;**&#x53;et GCP SA Key rotation policy.
- **Storage Settings**: Manage storage type, either local or cloud bucket.

[Network](docId\:VVhYuAY0vwQsvIea6MF9Q)

- **Interfaces**: Add/Update interfaces for the LEM.
- **DNS**: Set up the DNS that LEM will connect to.
- **NTP**: Set up LEM as NTP Server/Client.
- **Proxy Settings**: Add host information for the HTTP or HTTPS protocols.

[Email](docId\:GcxRXKR3-oc_O9zqz7Jke)

- **Email Settings**: Enable or disable SMTP, enter host information and port information, and use authentication to send emails.

[Admin Console Licenses](docId\:dMpF2PJbBM7kQQgs0lVUC)

- **Available Licenses**: View the applied licenses for Litmus Edge Manager.
- **Features**: View the enabled features associated with your applied licenses.
- **Online Activation**: Activate a license if you are connected to the internet.
- **Offline Activation**: Activate a license if you not connected to the internet.

[Users](docId\:m4I7KMG5bHSaTUxJNwMZ5)&#x20;

- **Administrator**: Update administrator password.
- **Users**: Add, edit or remove users.
- **Company Teams**: Add and remove teams for a company, and add and remove users for a selected company team.
- **Project Teams**: Add and remove project teams for previously added company teams, and assign roles of n/a, read, or write to the selected project team.

[Tokens](docId\:sHLyvAfrLOR7KkOopqV4N)

- **Tokens**: Generate and manage long-time tokens for connecting to Litmus Edge Manager.&#x20;

[Upgrade](docId:-C0COf-HLIWthd8s3U2zp)&#x20;

- **Current Version**: View the current Litmus Edge Manager version, the date and time it was applied, and the modules available for the version.
- **New Version**: View uploaded Litmus Edge Manager versions, the date and time they were uploaded, the version size and encryption for the uploaded version. You can delete an uploaded version or use it to upgrade your current version.
- **Upload**: Upload a Litmus Edge Manager version.

[Support](docId\:b_UKFjBuLxq7q7liWxVkJ)&#x20;

- **Current Version***:* View the details for the current version of Litmus Edge Manager.
- **Validation**: Run validation script to check instance health.
- **Support**: Download support bundle files for a support ticket.

[Export/Import](docId:1VIPA5Py1DmcBoB5hDZMy)&#x20;

- **Export Data**: Download a file containing Litmus Edge Manager instance data.
- **Import Data**: Upload a file containing Litmus Edge Manager instance data.
- **Log**: Display process log of the above Export/Import operations.

[Admin Console Backup](docId\:OpbSMI-B4XBzqTIePSHLn)

- Download and upload Litmus Edge Manager instance configuration settings. Available for Litmus Edge Manager version 2.15.0 and later.&#x20;

[Experimental Features](docId\:PtIJysv_x6gV1g0Z4oR2B) &#x20;

- **Experimental Features**: Enable or disable the experimental features for Litmus Edge Manager.&#x20;

[Management](docId\:VzYNhoUsLtjETO0F1aFa1)

- Reboot Litmus Edge Manager. Available for Litmus Edge Manager version 2.15.0 and later.&#x20;


[title] Admin Console Dashboard
[path] Litmus Edge Manager Admin Console/Product Features/

The Dashboard provides you with a comprehensive overview about the Litmus Edge Manager.&#x20;

From the *Dashboard* pane, you can view the total number of companies, projects, Litmus Edge, total database size and total number of messages. It includes charts, graphs, and statistics for System Overview, CPU, and Disk Usage.

# Access Dashboard UI

**To access the dashboard UI:**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.&#x20;
2. From the Navigation panel, select **Dashboard**.
   The *Dashboard* pane appears. The user interface below is for Litmus Edge Manager version 2.10.1 and later.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nLE6ly-ELjXiuUXKap66H_image.png" size="80" width="1920" height="866" caption="Litmus Edge Manager Admin Console Dashboard Global View" position="center" showCaption="true"}

# Dashboard Deployment and Messages Chart

From the main Dashboard Deployment heading, it provides an overview about which edge device deployments are configured on the Litmus Edge Manager. It also allows you to monitor how the edge device deployments influence the resources like CPU, Disk storage or Network traffic of Litmus Edge Manager and take action to ensure the highest availability. You can view:

- The number of Companies
- The number of Projects
- The number of edge devices, including statistics like Total bytes transferred and Total Messages transferred.

The Messages chart allows you to monitor the quantity of messages received over time. This allows you to identify slack time or anomalies in the quantity of data received from your edge devices. You can view statistics for the quantity of edge device messages received at a given time from this chart. You can view a point in time for the chart.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DryTxe4HqidsuRLp1wyD3_image.png" size="80" width="1895" height="285" position="center" caption="Dashboard Deployment" showCaption="true"}

## System Time / Local Time Warning

:::hint{type="info"}
**Note**: The *System* *Time* / local time warning feature is available for Litmus Edge Manager version 2.10.1 and later. 
:::

If the Litmus Edge Manager's *System Time* differs from your device's local time by 10 minutes, a warning will be displayed.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lxi44zI3WcYiOe8me3Dwf_image.png" size="80" width="1832" height="161" caption="System and Local Time" position="center" showCaption="true"}

To synchronize the local time and *System Time*, you will need to configure one or both of the following:

- Fix the local time of your device (the device you're using to access Litmus Edge Manager).
- Fix the Litmus Edge Manager's *System Time.&#x20;*&#x54;o do this, under [NTP Client Settings](docId\:hRmAskLSu9CAdrlP7k-UE)*,* you will need to specify and add the proper external NTP Server(s) that the Litmus Edge Manager will connect to.

# Project Statistics

From th&#x65;**&#xA0;***Project Statistic* table, you can view a table showing:

- The company name
- The project name
- The quantity of edge devices associated with the project
- The number of bytes used for a project
- The number of messages received for the connected edge devices
- The instances of Consumer Lag Device Data (the delta between the Latest Offset and Consumer Offset)

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/41zCGieWdpLC_kXRd3yhc_nv7lwdgicxuacqtaisw4nimage.png "Project Statistics")


[title] Export/Import
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

You can export and import data that is collected from a Litmus Edge Manager instance from the *Export/Import* module. Export data files may use encryption by adding a user-defined password. You can upload data files from your hard drive.&#x20;

You can view logs of the latest export/import operation logs with an option to auto scroll.

The user interface below is for Litmus Edge Manager version 2.15.0 and later.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Rnhrd2NhlTbIbucMP20iB_image.png "Export/Import Data UI")

# Export Configuration

:::hint{type="info"}
**Note**: This option is no longer available from *Export/Import Data* for Litmus Edge Manager version 2.15.0 and later. To download an instance configuration, navigate to **Settings&#x20;**> **Backup**.&#x20;
:::

You can download an instance configuration from the *Export Configuration***&#xA0;**&#x73;ection in the *Export / Import* module. Configuration files are password protected and generated as a `.tar` file. Process logs are visible in the *Log* section.

To export the configuration, you'll need the password of the Litmus Edge Manager instance.

# Export Data&#x20;

You can download an instance data file from the *Export Data* section in the *Export / Import* module.

To export the data, you'll need the password of the Litmus Edge Manager instance.

# Import Configuration

:::hint{type="info"}
**Note**: This option is no longer available from *Export/Import Data* for Litmus Edge Manager version 2.15.0 and later. To import an instance configuration, navigate to **Settings&#x20;**> **Backup**.&#x20;
:::

You can upload a configuration bundle from the *Import Configuration* section in the *Export/Import* module.

To import the configuration, you'll need the password of the Litmus Edge Manager instance.

Importing a configuration replaces configuration data and cannot be undone. Select the appropriate bundled zip file.&#x20;

# Import Data&#x20;

You can upload a data bundle from the *Import Data&#xA0;*&#x73;ection in the *Export/Import* module.

To import the data, you'll need the password of the Litmus Edge Manager instance.

If a configuration already exists, as a best practice, you should export the data prior to using upload so you can revert, or you can create a backup of the entire system. Replacing the existing data files cannot be undone. Select the appropriate bundled zip file.&#x20;

# Log&#x20;

You can view the latest export/Import operation log from the *Log&#xA0;*&#x73;ection in th&#x65;*&#xA0;Export/Import***&#xA0;**&#x6D;odule.

You can toggle **Auto-scroll** to the **On&#xA0;**&#x70;osition to automatically scroll down to the most recent messages in *Process Log*. Doing so helps monitor a running export/import process.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JDGw2KNWXg10XjyJkRV-i_image.png" size="80" width="1495" height="870" caption="Process Log " position="center" showCaption="true"}


[title] Edge Device Templates
[path] Litmus Edge Manager Admin Console/Product Features/Edge Devices/

The *Template List* provides you with an overview about available templates. From the Templates List, you can access all templates available for different companies, projects, or instances from the Admin Console.

Three scopes are defined for a template:

- **Instance**: The template can be applied to all companies and projects for this Litmus Edge Manager
- **Company***:* The template can be applied to all projects for a company
- **Project**: The template can be applied to all device for this project

For each template, the following displays:

- **Description**: A description of the template.
- **Template Scope**: This determines where templates can be applied in the Litmus Edge Manager.
- **Company**: The company for which the template can be applied.
- **Template Statistics**: Display additional information about the components of the  edge device included in the template.
- **Created At**: The date the template was uploaded to Litmus Edge Manager.
- **Parameterized**: Indicates if the selected template is simple or parameterized using False and True respectively.
- **Action**: Allows you to select the following actions for each template:
  - Edit template
  - Download template
  - Delete

Templates are created externally and can be uploaded from a file.

Simple templates are used to duplicate the field data for one instance, company or project to multiple other instances, companies or projects in Litmus Edge Manager. This comes in handy when most field data is the same.

For example, if most configuration information for devices in the same project are the same, you can use a simple template when adding new devices to the project.

Parameterized templates are used when you want to change specific names or types of configuration information for instances, companies or projects.

For example, if some of the configuration information for devices, such as the name, in the same project are different, you can use a parameterized template when adding new devices to the project.

# Access Edge Device Templates UI

**To access the edge device templates UI:**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Edge Devices**.
   Edge Device's *Edge Software Update* pane by default appears.&#x20;
3. From Edge Device's navigation sub-panel, select **Edge Devices Templates**.
   Edge Device's *Edge Devices Templates* pane appears.

Refer to the following actions you can take on Litmus Edge Manager Admin Console Edge Device's *Edge Device Template* pane. The user interface below is for Litmus Edge Manager version 2.11.0 and later.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_LovsttRjOwx9CLULIm7l_hwzx4t25i0xx70t9fmfrkimage-1.png "Litmus Edge Manager Admin Console: Edge Template List")

| **Action**                                        | **Details**                                  |
| ------------------------------------------------- | -------------------------------------------- |
| \[1] **Show filter&#x20;**/ **Hide filter&#x20;** | Search by *Description* or *Company*         |
| \[2] **Upload Template**                          | Simple Template or Parameterized Template    |
| \[3] **Action menu**                              | - Edit Template
- Download Template
- Delete |
| \[4] **View Template Statistics**                 | Display the details of templates.            |

# Upload Templates

You can upload a *simple* or *parameterized* template from the *Templates List* section.

## Simple Templates

Simple templates are used to duplicate the field data for one instance, company, or project to multiple other instances, companies, or projects in Litmus Edge Manager. This comes in handy when most field data is the same.

For example, if most configuration information for edge devices in the same project is the same, you can use a simple template when adding new devices to the project.

## Parameterized Templates

Parameterized templates are used when you want to change specific names or types of configuration information for instances, companies, or projects.

For example, if some of the configuration information for devices, such as the name, in the same project is different, you can use a parameterized template when adding new devices to the project.

The simple template is uploaded as a JSON file, and the parameterized template is uploaded as a ZIP file.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/orXXeEsUDkHOp9UAN5s8z_image.png" size="80" width="976" height="309" caption="Litmus Edge Manager Admin Console : Upload Templates" position="center" showCaption="true"}

| **Action**                                                                          | **Details**                                                                                                                                                            |
| ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Select Simple** **Template (JSON)&#x20;**/ **Parameterized Template (.ZIP)** | You can upload a software image using a file or a signed URL. Example file name can be :  `litmusedge-std_3.1.7.0-amd64.upd` or `Litmusedge-std_3.1.7.0-amd64.upd.sig` |
| \[2] **Select File**                                                                | Browse and choose your template file.                                                                                                                                  |
| \[3] **Enter Description**                                                          | Provide details for the uploaded template.                                                                                                                             |
| \[4] **Cancel**                                                                     | Abort the upload process if needed.                                                                                                                                    |
| \[5]**&#x20;Upload**                                                                | Initiate the template upload action.                                                                                                                                   |


[title] Edge Devices
[path] Litmus Edge Manager Admin Console/Product Features/

Refer to the following edge device management features.&#x20;

- [Edge Devices](docId:0kuXNK1e4igb0FxBRnghJ)&#x20;
- [Edge Software Update](docId:3IevluZfOdrXAqOOpVT1n) 
- [Edge Device Templates](docId\:nNxhGGYezqqsdyajOkc8F) 
- [Edge Password Policies](docId\:nZxdm63Ip1guJ_mQiN140) 
- [Edge Remote Networks](docId\:aftGosdXRCw2Tz9d5Gtzg) 
- [Node-Locked Licenses](docId\:c0-d2jkjFVytbWDoL9FRr)&#x20;


[title] Marketplace: Catalogs and Applications
[path] Litmus Edge Manager User UI/Product Features/

The Marketplace is a catalog repository that includes a default catalog. A catalog is a collection of Docker applications that can be configured as needed before being deployed to Litmus Edge instances.

You can deploy both public and private catalogs, and then deploy applications for various uses. The default catalog is preloaded with applications, such as visualization, user interface reporting, business intelligence, programming, server, and database tools.

From the Marketplace Catalog browser pane, you can add, edit, or delete marketplace catalogs. You can modify the default marketplace catalog, but not delete it.

Marketplace uses access control based on user roles for access to catalogs. Users cannot access the catalogs of other users unless they have full access privileges.

# Access Marketplace UI

**To access the marketplace UI:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects&#x20;*&#x70;ane appears.
3. From the *Projects&#x20;*&#x70;ane, click a project or open the **Action menu** for a project and select **View**.&#x20;
   The *Dashboard&#x20;*&#x70;ane appears for the project.&#x20;
4. From the Navigation panel, select **Features**.
   The *Features* pane appears.
5. Click the **Marketplace** tile.
   The *Marketplace Catalog* pane appears in a separate browser tab. The default catalog displays, along with any other added catalogs.

Refer to the following actions you can take on the Litmus Edge Manager User UI's *Marketplace Catalog* pane.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CViobNRX5DlH818S-ZcMh_image.png)

- **View applications in this catalog**
  Display all applications in the catalog.
- **Action menu**
  - **Edit:** Modify a Marketplace catalog.
  - **Export:** Export a Marketplace catalog in JSON format. When you export, you can choose whether to include registries with the export.
  - **Delete:** Removing a Marketplace catalog also removes its associated applications. This cannot be undone.
- **Add Catalog**
  Name has a maximum of 32 characters.
- **Change Catalog View**
  Update the catalog view from **Tile View** to **List View**.

## Synchronize Catalogs

:::hint{type="info"}
**Note**: The Synchronization feature is available for Litmus Edge Manager 2.11.0 and later.
:::

When you add a new catalog, you can also customize it as a synchronized catalog. See [Synchronization](docId\:jaznCrFR8oKorD6QyGKXt) for more details.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gYfF1Hkl6Z7oAiyy6tdv__image.png" size="80" width="974" height="340" position="flex-start" caption="Create catalog dialog box" showCaption="true"}

| **Action**                       | **Details**                                                                                   |
| -------------------------------- | --------------------------------------------------------------------------------------------- |
| \[1] **Toggle Synchronize**      | You cannot change this setting after creating the catalog.                                    |
| \[2] **Select Synchronize Role** | - **Primary: &#x20;**&#x59;ou may only have a maximum of one primary catalog.
- **Secondary** |

# &#x20;Applications

For a marketplace catalog, after clicking the catalog card (See *View applications in this catalog&#x20;*&#x66;rom the previous section), you will be brought to the *Applications&#x20;*&#x70;ane for the selected marketplace catalog. Every catalog contains a collection of associated Docker applications. The default marketplace catalog contains the following ten Docker applications:

- Elasticsearch
- Grafana
- KDB
- Minio
- MongoDB
- Microsoft SQL for Linux
- MySQL
- PipelineDB
- PostgreSQL & Adminer
- Python

You can customize a catalog and its applications as needed.

You can add, modify, and delete applications for the currently selected catalog. The currently selected catalog’s Docker applications are displayed as below.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xqrkDvGjkitSW5Sq3_7zk_image.png" size="80" width="1919" height="501" position="flex-start" caption="Catalog Applications" showCaption="true"}

| **Action**                            | **Details**                                                                                                                                                                                                                                                                                                 |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **View Registry Management**     | ****[Registry Management](docId\:M6yzedYRAwwYDnLDtOQlZ)                                                                                                                                                                                                                                                     |
| \[2] **View Application**             | ****[Application Releases](docId\:V_JC6NJ8Hu8R756NNEr7n)                                                                                                                                                                                                                                                    |
| \[3] **Action menu**                  | - **Edit**
- **Delete:&#x20;**&#x52;emoving a marketplace catalog also removes its associated applications. This cannot be undone.
- **Export:&#x20;**`.json` file                                                                                                                                          |
| \[4] **Add or Import an application** | The **Select Icon&#x20;**&#x6F;ption is an optional feature that allows you to select an visual image to represent the application. Litmus Edge instances that later receive this Docker application will also receive the same visual image.<br />- Example category: Utils, Database, Programming, Server |
| \[5] **Change Application View**      | Alter the view of application.                                                                                                                                                                                                                                                                              |

# Next Steps

- [Application Releases](docId\:V_JC6NJ8Hu8R756NNEr7n)&#x20;
- [Registry Management](docId\:M6yzedYRAwwYDnLDtOQlZ)&#x20;
- [Synchronization](docId\:jaznCrFR8oKorD6QyGKXt)
- [Deploy Edge Applications to Multiple Sites Using Marketplace Catalog Sync](docId\:Z8R_5mVU1pezFXVSeNhQu)


[title] Support
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

# Current version

You can view the details for the current version of Litmus Edge Manager from the *Current Version* section by expanding it.
In this section you can view the following:&#x20;

- The version, date, and time of installation.
- Components and build.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/p8UkBHNqjaXjBzuaONg85_image.png" size="80" width="928" height="221" position="flex-start" darkWidth="928" darkHeight="221" showCaption="false" indent="2"}

# Validation

You can validate the operational status of the Litmus Edge Manager. Use this to diagnose the health of the Operating System, component status, and system service statuses.&#x20;

From the *Validation Log* dialog box, click the **Show full log** toggle switch to see the full validation log.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3HH31IIW6iC-2uYLUm5sM_image.png" size="80" width="1715" height="184" position="flex-start" caption="Validation" darkWidth="1715" darkHeight="184" showCaption="true"}

# Support Bundle

The support bundles are primarily used for diagnostic purposes. They should be attached as part of a support ticket when contacting customer support. Support bundles are then reviewed by customer support.

The support bundle is a collection of all relevant log files, which are packed into a `.zip` file and can then be shared with Litmus to assist in troubleshooting.

Files in a support bundle are password protected.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yKNPQVtildJyk7JpbVFvc_image.png "Support section")




[title] Step 5: Deploy an Application from Secondary Catalog to Edge Devices
[path] How-To Guides/Litmus Edge Manager User UI Guides/Deploy Edge Applications to Multiple Sites Using Marketplace Catalog Sync/

Once synchronization is successfully completed, the secondary site situated in Japan receives the same versions and releases of software as their headquarters in Canada.&#x20;

This allows engineers working in Japan location to deploy any application from their synchronized catalog to multiple edge devices on their sites.

**To deploy an application from secondary catalog to edge devices:**&#x20;

1. From th&#x65;*&#x20;Litmus Edge Manager User UI*, select the appropriate company and project. Then, navigate to **Applications**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FBUCC3NJhuQ_uO8Qbs_54_image.png "Applications page")
2. From the *Catalog* menu, select the **Secondary** marketplace catalog you created in [Step 2: Create Secondary Catalog](docId\:ZO8hyYhJOLAEiH2tHM7-W).
3. Click the **Actions&#x20;**&#x62;utton for *Analytics&#x20;*&#x61;pplication and click **Launch App**.
   The *Application master: Step 1 - Select at least one online device* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hFmhsvF8YLGWFU8TX6pkp_image.png "Applications pane")
4. Check the **box&#x20;**&#x66;or one or more Litmus Edge instances on the *EDGE DEVICES* tab and click **Next**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sZHO64yy1nwIldEwzvRNR_image.png" size="80" width="965" height="720" position="center" caption="Application master: Step 1 - Select at least one online device dialog box" showCaption="true"}
5. From the *APP SETTINGS&#x20;*&#x74;ab, complete the following steps:
   - Enter the **Application Name**.
   - Select the **Application Release** version from the drop-down menu.
   - (Optional) Configure **Parameters&#x20;**&#x73;uch as *Port&#x20;*&#x61;nd *API Token&#x20;*&#x62;ased on the selected application for deployment.
   - Click **Next**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zGlnnvWeBvpc5INVqtghb_image.png" size="80" width="972" height="716" position="center" caption="Application master: Step 2 - Application Settings dialog box" showCaption="true"}
6. From the *PREVIEW&#x20;*&#x74;ab, review the *Summary&#x20;*&#x6F;f the deployment and click **Launch&#x20;**&#x74;o deploy the application.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ia6WWXJAKOZk_l-NWub5o_image.png" size="80" width="977" height="717" position="center" caption="Application master: Step 3 - Preview dialog box" showCaption="true"}
7. To confirm a successful deployment, go to the *RESULTS&#x20;*&#x74;ab and check the *Status&#x20;*&#x63;olumn. If it shows *Success*, click on **APP DETAILS**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UMY_Q74HrjXVc2kczbFga_image.png" size="80" width="980" height="723" position="center" caption="Application master: Step 4 - Results dialog box" showCaption="true"}
8. The *Application Details* page provides information about your deployed application.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kj1Ex_vZf3zopQ0Z7CT90_image.png "Application Details page")
9. Log in to the Litmus Edge instance used for deployment, and navigate to **Applications** > **Catalog Apps**.
   The *Running&#x20;*&#x73;tatus confirms that the application with the same release version was deployed successfully.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZO9uctMfsYOicskF72kHN_image.png "Applications > Catalog Apps page")

**Next:&#x20;**[Step 6: (Optional) Update an Application Version](docId\:iQ9xXw9m86Q7KzajiMQQt)

[title] Network
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

:::hint{type="info"}
**Note**: The Network feature with four tabs is available for Litmus Edge Manager 2.8.0 and later. Previously, it contained Remote Networks(deprecated) and [Proxy Settings](docId\:x6zEmtj6xRguKRi84Dja8).
:::

This section covers network settings for Litmus Edge Manager Admin Console, with the following four tabs.&#x20;

- [Interfaces](docId\:SO6RFAPUk4c047l6h1A1J)
- [DNS](docId\:aTT90pnPsBREQawmMTKc_)
- [NTP](docId\:hRmAskLSu9CAdrlP7k-UE)
- [Proxy Settings](docId\:x6zEmtj6xRguKRi84Dja8)



****

****

[title] Edge Software Update
[path] Litmus Edge Manager Admin Console/Product Features/Edge Devices/

The *Edge Software&#x20;*&#x6D;odule provides you with all the tools needed to manage updates and upgrades of the edge devices managed by Litmus Edge Manager. You can upload the `.upd` file onto the admin console once and it can be used to upgrade edge devices using the Litmus Edge Manager Admin Console *Software update&#x20;*&#x6F;ptions. All the images that you load onto the admin console are available for edge device upgrades.

You can create groups of edge devices and update them at a specific time or immediately using the upgrade options. You can ensure that edge devices are running on the latest version, manage the disk space used, and view a history of updates.

The Software Images list shows:

- **Product:** The product name
- **File Name:** The name of the `.upd` file
- **Size:** The file size for the `.upd` file
- **Version:** The version of the product
- **Platform:** The platform type

# Access Edge Software Update UI

**To access the edge software update UI:**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Edge Devices**.
   Edge Device's *Edge Software Update* pane by default appears.&#x20;

Refer to the following actions you can take on Litmus Edge Manager Admin Console Edge Device's *Edge Software Update* pane. The user interface below is for Litmus Edge Manager version 2.10.1 and later.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GCXs9apGShzAad9BdE7UL_79v86dkfwjysmvboh5jukimage-1.png "Litmus Edge Manager Admin Console: Edge Software Update")



| **Action**                                | **Details**                                                                                                                                                            |
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Upload Edge Software Image&#x20;** | You can upload a software image using a file or a signed URL. Example file name can be :  `litmusedge-std_3.1.7.0-amd64.upd` or `Litmusedge-std_3.1.7.0-amd64.upd.sig` |
| \[2] **Action menu:**                     | - Remove                                                                                                                                                               |
| \[3] **Copy&#x20;**                       | * Checksum to clipboard                                                                                                                                                |

# Troubleshooting&#x20;

## Firefox Upload Error

When using the Litmus Edge Manager Admin Console with Firefox to upload a software image, an error can occur due to a problem with the way Firefox manages certificates.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/R_URmSBUDT7FlsajFrA0U_image.png" size="80" width="565" height="157" caption="Failed HTTP response during Firefox Upload " position="center" showCaption="true"}

Litmus Edge Manager uses a self-signed Certificate. This prompts the browser to display an error message. Follow the browser guidelines for how to bypass a self-signed security error message.

## Resolution

To resolve this issue, the certificate for the **Minio** application, which manages the uploaded images, must be accepted.

**To accept the certificate for the port 8445:**

1. From the Firefox web browser, enter the IP address and port `8445` (for example, `https://192.162.2.18:8445`) in the URL bar, and then press **ENTER**.
2. Click **Advanced**
3. Click **Accept the Risk** and **Continue**.
4. **Close&#x20;**&#x74;he browser tab. No login is required.


[title] Domain/SSL
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

The **Settings&#x20;**>**&#x20;Domain/SSL** pane is used to configure the domain name, SSL, and Edge Remote endpoint in Litmus Edge Manager. This pane includes the following sections:

- Domain
- SSL settings
- Edge Remote

# SSL Certificate Workflow

You can choose between two methods for adding an SSL certificate to Litmus Edge or Litmus Edge Manager:&#x20;

1. Manual request process&#x20;
2. DigiCert IoT Trust Manager integration.

## Method 1: Manual Request Process

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uizx2-MquqqqDYfwMjhN6_diagram-2-oct10th2024.png)

- **Step 1**: You will need to request an SSL certificate from your IT team.&#x20;
- **Step 2**: Your IT team will make a request for the SSL certificate from a certificate authority (CA) (for example,Let's Encrypt, DigiCert).&#x20;
- **Step 3**: The CA will return the following to your IT team.&#x20;
  - The root CA certificate file
  - Any required intermediate certificates
  - The SSL certificate file
- **Step 4**: The IT team will send you the following.&#x20;
  - The root certificate file
  - Any required intermediate certificates
  - The SSL certificate file
  - The private key file
- **Step 5**: You will apply the following in either Litmus Edge Manager (see *SSL Settings&#x20;*&#x73;ection below) or Litmus Edge (see [Add a Device Certificate](docId\:A6g-bo9xf4CHv6GYlYHxG)).  &#x20;
  - The CA chain file (root CA file and all intermediate certificates)
  - The SSL certificate&#x20;
  - The private key file

## Method 2: DigiCert IoT Trust Manager Integration

![](https://archbee-image-uploads.s3.amazonaws.com/Q116WJTAr1sefeVNvMCF9-1R5eETi0pIm0sWLvRkuIT-20241009-191531.png)

- **Step 1:** Set up DigiCert IoT Trust Manager integration through the Litmus Edge Manager Admin Console.
- **Step 2:&#x20;**&#x41;ccess DigiCert IoT Trust Manager to retrieve the URL, Profile ID, and Passcode, then configure the CA for Litmus Edge Manager (LEM) and Litmus Edge (LE).
- **Step 3:** DigiCert IoT Trust Manager Handles the Entire Certificate Management Process including:
  - Issuing the SSL certificate&#x20;
  - Managing the CA chain file&#x20;
  - Private key file
- **Step 4:** Apply and issue certificates to your edge devices through Litmus Edge Manager.

# Domain Settings

You can use the domain name to obtain access to Litmus Edge Manager without knowing the IP address. This helps when configuring settings:

- **Base domain name**: The basic domain name is used by clients accessing the Litmus Edge Manager Admin Console, Litmus Edge Manager Application, and Keycloak application.

## Before You Begin

Ensure a DNS server exists to handle requests by clients using the domain name.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NgMFA0ZiSiGBdreqwBXDu_image.png" size="80" width="1919" height="218" position="center" caption="Domain/SSL: Domain" showCaption="true"}

| **Action**                      | **Details**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| \[1] **Edit Base Domain Name**  | Changing the domain name can cause connection issues such as disconnecting all previously connected edge devices. It is recommended that you make DNS changes prior to configuring the rest of your settings. The domain name also causes an update to the certificates. It may be necessary to accept new certificates after reloading the current browser tab. See [Browser Access Restrictions ](docId\:F_4FUf7kbozItSH_LMXp4)for more information. <br />* If the domain name is valid, a green check mark displays.
* If the domain name is invalid, a red exclamation mark displays. |
| \[2] **Copy&#x20;**             | - base domain name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| \[3] **View Domain Log**        | Enabling auto-scroll is helpful when running an import process.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| \[4] **Save base domain name**  | Save the base domain name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |

# SSL Settings

There are three options when selecting an SSL setting:

- **Instance Default Certificate**: Allows you to use the default self-signed SSL certificate that is automatically created during deployment when you first boot up for HTTPS, and MQTT SSL.
- **Let's Encrypt Webroot mode**: The certificate is based on [Let's Encrypt](https://en.wikipedia.org/wiki/Let's_Encrypt) using their Webroot mode. You must enter the domain name for your web-server in the *Domain&#x20;*&#x73;ection. An IP address cannot be used. This is used when the web-server is exposed to the Internet and should not be used for private networks.
- **DigiCert:&#x20;**&#x54;he DigiCert option integrates with a unique passcode for each LEM instance, which should be securely stored and managed within the admin interface. This ensures a secure and reliable SSL certificate management process for your Litmus Edge Manager.
- **User Defined***:* The SSL encryption uses a self-signed certificate (`.crt` or `.pem` file) and a (`.key` or `.pem` file) that has been uploaded to Litmus Edge Manager. The same certificate must be uploaded to the connected edge device.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2MeN5OiOlXhj9YbKR_Joq_image.png "Domain/SSL: SSL settings")

| **Action**                                                | **Details**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| \[5] **Select SSL Setting**                               | - Select **Instance Default Certificate** to ensure that the SSL certificates that are used for the server and instances are valid and trusted by the server.
- Select **Let's Encrypt Webroot** mode to secure publicly available content in a domain by encryption, and then click **Save**. It issues a certificate when ownership is proven. This selection requires that a domain name is set. This selection cannot be used with an IP address.
- Selec&#x74;*&#xA0;***User Defined** to use an SSL certificate and key file to secure content.  A `.crt` or `.pem` file and a `.key` or `.pem` file is required for this selection. |
| \[6] **(User-Defined Only) Upload SSL Certificate&#x20;** | Upload ssl cert file                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| \[7] **(User-Defined Only) Key file&#x20;**               | Upload key file                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| \[8] **(User-Defined Only) Root CA Certificate**          | Upload a CA chain file. Creating a CA (Certificate Authority) chain file involves consolidating the necessary certificates to establish a trust hierarchy for secure communication. To do this, you'll typically need the intermediate certificates that link your SSL certificate to the root certificate, ensuring a complete chain of trust. Begin by gathering the required certificates, which often include intermediate certificates,  and the root certificate. Then, execute a command to combine all required certificates into a single file. See the example below.                                                            |
| \[9] **View SSL Log**                                     | Enabling auto-scroll is helpful when running an import process.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| \[10] **Save SSL Settings**                               | Save ssl settings for future                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |

:::hint{type="info"}
**Example**: You have the following intermediate certificates: `intermediate1.pem` and `intermediate2.pem`. You create a CA chain file by combining the intermediate certificates with the root certificate (`root.pem`) with the following command: `cat intermediate1.pem intermediate2.pem root.pem > ca-chain.pem`. The CA chain file is named `ca-chain.pem`.
:::

# Edge Remote

The Edge Remote endpoint is the location of the Litmus Edge Manager remote service that forms a private secured connection between this Litmus Edge Manager instance and all of its associated Litmus Edge devices. This endpoint can be used for a DNS or an IP address.&#x20;

By default and in most circumstances, the Edge Remote endpoint will be identical to the Litmus Edge Manager instance's IP address/DNS.&#x20;

The only exception is when the Litmus Edge Manager is deployed on Google Kubernetes Engine. In this deployment situation, the IP address of the Litmus Edge Manager and the IP address of the LEM remote service will differ. The IP address of the Litmus Edge Manager remote service will be generated by Kubernetes and should be set as the Edge Remote endpoint accordingly. If a DNS is associated with the IP address received from Kubernetes, then the DNS should likewise also be set as the Edge Remote endpoint accordingly. Setting the DNS this way prevents the need to reactivate Litmus Edge devices when the Litmus Edge Manager IP address changes.

Refer to the following actions you can take on Litmus Edge Manager Admin Console's *Domain/SSL* pane.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sPP9BQBj2l9x9yLhclZUD_image.png" size="80" width="1919" height="163" position="center" caption="Domain/SSL : Edge Remote" showCaption="true"}

| **Action**                          | **Details**                                         |
| ----------------------------------- | --------------------------------------------------- |
| \[11] **Edit Edge Remote**          | Edit the edge remote option                         |
| \[12] **Copy&#x20;**                | - Edge Remote endpoint                              |
| \[13] **Save Edge Remote endpoint** | You can only save when the DNS/IP address is valid. |


[title] Purge Policies
[path] Litmus Edge Manager Admin Console/Product Features/Data Lifecycle/

The Purge Policies module allows you to create instance/company purge policies to archive or purge `ARCHIVE` data or `USERDATA` automatically given a certain condition.&#x20;

The Purge Policies module includes the following sections:

- **Instance Purge Settings**: Allows you to add `ARCHIVE` or `USERDATA` purge policies for the instance level. You can set up a policy action to purge or archive data and limit the purge by the number of periods, by the project's data size, or by the free-disk-space percentage.
- **Companies Purge Settings**: Allows you to add `ARCHIVE` or `USERDATA` purge policies for a company. You can set up a policy action to purge or archive data and limit the purge by the number of periods, by the project's data size, or by the free-disk-space percentage.

You can also filter the instance/company purge policies list from this sub-module.

# Archiving Needs Additional Disk Space&#x20;

When data is archived, the data is extracted from a Clickhouse Data Server and stored as a `.csv.gz` file. Each `.csv.gz` file is up to ten times the size of the data size displayed in Litmus Edge Manager (The data size that is shown in the *Stats By Periods&#x20;*&#x73;ection of [Statistics](docId\:SUvgdkwr-7WY9lRvKLBqM) is a compressed size).&#x20;

Before you archive, ensure the Litmus Edge Manager has enough disk space to store all the `.csv.gz` file data that it will archive. Insufficient disk space will prevent the data from being archived. After archiving, review the list of archive files to ensure the archive operation was successful.

# Access Purge Policies UI

**To access the purge policies UI:**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Data Lifecycle**.
   Data Lifecycle's *Statistics* pane by default appears.&#x20;
3. From Data Lifecycle's navigation sub-panel, select **Purge Policies**.
   Data Lifecycle's *Purge Policies* pane appears.

Refer to the following actions you can take on the Litmus Edge Manager Admin Console Data Lifecycle's *Purge Policies* pane.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DEwg40JzVJ1I8b8C7Tq8f_image.png" size="80" width="1920" height="969" position="center" caption="Data Lifecycle: Purge Policies" showCaption="true"}

| **Action**                             | **Details**                                                                                  |
| -------------------------------------- | -------------------------------------------------------------------------------------------- |
| \[1] **Show filter** / **Hide filter** | Search by *Data Type* and *Policy Action*                                                    |
| \[2] **Create Instance Purge Policy**  | Option availability depends on previous selections. See the Create a Policy section below.   |
| \[3] **Action menu**                   | - **Edit:&#x20;**&#x4F;ption availability depends on previous selections.
- **Remove**       |
| \[4] **Show filter** / **Hide filter** | * Search by *Company Name, Data Type* or *Policy Action*                                     |
| \[5] **Create Company Purge Policy**   | Option availability depends on previous selections.                                          |
| \[6] **Action menu**                   | - **Edit:&#x20;**&#x4F;ption availability depends on previous selections.
- **Remove&#x20;** |

# Period Explained

Litmus Edge Manager keeps track of disk usage in partitions of months. The tracked disk usage is only for Clickhouse data (hence all archive/purge operations are applicable for only Clickhouse data). The disk usage amount is calculated either from the instance or each individual project. Each month of disk usage is defined as a period.&#x20;

For example, your Litmus Edge Manager has five projects. To calculate disk usage, each project will be categorized as one period for the same month. So Litmus Edge Manager will generate five periods for the same month, each period including one project.&#x20;

As an additional example, three months have passed. For the five projects above, each of them experienced some disk usage in those three months. So you will have 15 additional periods (five projects of disk usage \* 3 months).

Periods are also categorized as previous or current. If the current system date is March 2023, then all disk usage by projects during March 2023 are current periods. All periods from February 2023 and before are previous periods.&#x20;

# Create a Policy

A policy is only applicable for a previous period. See [Statistics](docId\:SUvgdkwr-7WY9lRvKLBqM). 

:::hint{type="info"}
**Note**: When policy types are considered, disk usage for a current period of the Litmus Edge Manager will be ignored.&#x20;
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/oyF4V_-u8n2E_eQn2jZfr_image.png" size="80" width="570" height="540" caption="Create Policy dialog box" position="center" showCaption="true"}

- **Select Company:&#x20;**&#x53;elect a company to apply to policy towards.  All of the company's projects and the projects' respective periods will be included when creating a policy. This option is only available for *Companies Purge Settings*.&#x20;
- **Select Data Object:&#x20;**
  - `Archive`: Apply the policy toward an existing archive in [Management](docId\:dsJZJ4n3ksgiQlIabM-gY).
  - `Userdata`: Apply the policy towards existing data.

:::hint{type="info"}
**Note**:&#x20;

- For Instance Purge Settings, you may only create one policy per Data Object.
- For Companies Purge Settings, you may only create one policy per Company-Data Object pairing.
:::

- **Policy Action:**
  - `Archive`: Archive the data if a previous period fails to stay within a policy type limit. You cannot archive an `Archive Data` object. When this policy is selected, archiving a period will also automatically purge the data after successful archiving. 
  - `Purge`: Delete the data if a previous period fails to stay within a policy type limit.&#x20;
- **Policy Type&#x20;**(See the *More on Policy Types&#x20;*&#x73;ection below)
  - **Limit by number of periods:&#x20;**&#x59;ou cannot select this for an `Archive Data` data object.
  - **Limit by project's data size**
  - **Free disk space limit, %**
- **Policy Limits Value**
  - **Limit by number of periods:&#x20;**&#x41;t least 1 or more.
  - **Limit by project's data size: :&#x20;**&#x41;t least 1 or more.
  - **Free disk space limit, %:&#x20;**&#x41;s of Litmus Edge Manager 2.10.1, enter a percentage value between 0-50%. Decimal values are allowed.

## More on Policy Types

Refer to the *Period Explained* section above to learn more about the definition of *period* in Litmus Edge Manager's Data Lifecycle feature.&#x20;

When a policy is selected for instance purge settings, it will check all existing project's previous periods.

When a policy is selected for company purge settings, it will check the selected company's existing project's previous periods.

### Limit by number of periods

Data will be archived/purged based on the number of months you enter. 

**Example 1**

You enter 1 and the current date is January 1, 2023.&#x20;

- Litmus Edge Manager checks the age (in months) of every single previous period. So December 2022 would be 1, November 2022 would be 2, and so on.
- It compares the period's age against the age you entered earlier (1). If the period's age is equal to or greater than the age you entered earlier (1), then archive/purge.
- All data within each previous individual month will be archived/purged starting backwards from December 2022.
- When the current date advances to February 1, 2023, the data from January 2023 will be archived/purged.

**Example 2**

You enter 3 and the current date is January 1, 2023.&#x20;

- Litmus Edge Manager checks the age (in months) of every single previous period. So December 2022 would be 1, November 2022 would be 2, and so on.
- It compares the period's age against the age you entered earlier (3). If the period's age is equal to or greater than the age you entered earlier (3), then archive/purge.
- All data within each previous individual month will be archived/purged starting backwards from October 2022.
- When the current date advances to February 2023, the data from November 2022 will be archived/purged. This means the three-month duration of December 2022-February 2023 is stored in Litmus Edge Manager.

### Limit by project's data size

Data will be archived/purged for a previous period if the data size is equal to or greater than the data size you enter. The oldest data is archived/purged first.

**Example 1**

You enter 1GB and the current date is January 1, 2023.    &#x20;

- Litmus Edge Manager checks the data size of every single previous period.&#x20;
- If the single previous period's data size is 1GB or more, it will be archived/purged.
- When the current date advances to February 1, 2023, Litmus Edge Manager checks for all the data size for the January 2023 period. All January 2023 periods with a data size of 1GB or more are archived/purged.&#x20;

### Free disk space limit, %

Data will be archived/purged once as long as the free disk-space percentage is below the specified threshold. The oldest data is archived/purged first.

**Example 1**

You enter 1% and the total disk space size is 100GB.&#x20;

- Once Litmus Edge Manager's free disk space is less than 1GB, it will archive/purge all previous periods.&#x20;
- If Litmus Edge Manager's free disk space is 1GB or more, do nothing.
- For purging, all the purge operations of each period will happen concurrently. Therefore, if a purge increases the free disk space percentage above the 1GB threshold, it will not stop the purge for the remaining periods.&#x20;

**Example 2**

You enter 50% and the total disk space size is 100GB.&#x20;

- Once Litmus Edge Manager's free disk space is less than 50GB, it will archive/purge all previous periods.
- If Litmus Edge Manager's free disk space is 50GB or more, do nothing.
- For purging, all the purge operations of each period will happen concurrently. Therefore, if a purge increases the free disk space percentage above the 50GB threshold, it will not stop the purge for the remaining periods. 


[title] Node-Locked Licenses
[path] Litmus Edge Manager Admin Console/Product Features/Edge Devices/

You can view and export a comprehensive summary of the usage of all Node-locked licenses for all companies and projects.

# Access Node-Locked Licenses UI

**To access the node-locked licenses UI:**

1. Log in to Litmus Edge Manager Admin Console.
2. From the Navigational panel, select **Edge Devices**.
   The *Edge Devices&#x20;*&#x70;ane appears.
3. Click **Node-locked Licenses&#x20;**&#x66;rom the side menu.
   The *Node-locked Licenses&#x20;*&#x70;ane appears.

Refer to the following actions you can take from this page:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/brf3njQH9iEwyxK8vGasS_image.png" size="80" width="1277" height="747" position="center" caption="Node-locked Licenses pane" showCaption="true"}

| **Action**                                             | **Details**                                                                                                                                                           |
| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Node-locked License Usage Statistics**          | Displays comprehensive details about the usage of all node-locked licenses, including which licenses are currently active and their associated projects or companies. |
| \[2] **Filter**                                        | Allows users to sort and narrow down the list of node-locked licenses based on specific criteria such as license status or network names.                             |
| \[3] [Generate a Report](docId\:NayEcoyMir18JHrrDQCRl) | Enables the creation of a custom report on node-locked licenses by searching with parameters like Network Name, Subnet, or Status.                                    |
| \[4] **Refresh List**                                  | Updates the displayed list of node-locked licenses to ensure it reflects the most current information available in the system.                                        |


[title] 
[path] Litmus Edge Manager Admin Console/


[title] Edge Remote Networks
[path] Litmus Edge Manager Admin Console/Product Features/Edge Devices/

Use the *Edge Remote* module to remotely connect your edge devices to default or networks that you add. You can view additional information about the network's status, bandwidth, and peers. You can also set the Maximum Transmission Unit (MTU) of the network interface.

Access the following tabs in Edge Remote Networks:

- **Networks**: The Edge Remote Networks pane includes:
  - **Network**: Contains a list of Edge Remote networks including a default network. You can add, modify, and remove a network and set a network as default.

:::hint{type="info" indent="3"}
Creating and setting a new default network does not affect existing projects. It applies only to newly created or empty projects.
:::

:::Paragraph{listStyleType="disc" listStart="2" indent="2"}
**Projects**: Contains a list of companies and projects that access the networks. You can change the network for a company or project.
:::

- **Statistics**: The Edge Remote Network Statistics pane includes:
  - **Network**: View the Edge remote network status, number of networks, number of peers, and percentage of networks online.
  - **Networks Bandwidth**: View the amount of data transmitted for the connected networks in Mbps.
  - **Network Peers**: View the connected peers which are connected edge devices in another project.
- **Settings (version 2.11.0 and later)**: The Edge Remote Settings pane includes:
  - **MTU**: Configure the Maximum Transmission Unit (MTU) value of the network interface.

# Access Edge Remote Networks UI

**To access the edge software networks UI:**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation pane, select **Edge Devices**.
   The *Edge Devices&#x20;*&#x70;ane appears by default.&#x20;
3. From Edge Device's navigation sub-pane, select **Edge Remote Networks**.
   Edge Device's *Edge Remote Networks* pane appears. The example below applies to Litmus Edge Manager version 2.15.0 and later.

![](https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/sWbcbawfoGord0D5geqqn_image.png "Edge Remote Networks")

# Network

From the Edge Remote Networks pane, you can add and manage remote networks and view the company and project for connected edge devices. The Edge Remote Networks pane includes two sections.

The *Network&#xA0;*&#x73;ection contains a list of Edge Remote networks. You can add, modify, and remove a network, set a network as default, and filter the networks list.

The Networks list displays the network name, the network's subnet mask, the capacity of activated devices for the network (Litmus Edge Manager 2.15.0 and later), the type of subnet, the port, which network is default and its state, and an action list where you can perform tasks.

The *Projects* section contains a list of companies and their associated projects that have access to the networks. These are added automatically to the default network when you connect an edge device to a project in Litmus Edge Manager. You can view the projects without a subnet mask and filter the project list. If you have added multiple networks, you can change the network for a company or project listed here.

The Projects list displays the network name, the network's subnet mask, company and project name of the connected edge device, the number of peers associated with the network, and an action list where you can perform tasks.

![](https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/5WdAryadQZgkIT6bYcDFK_image.png "The Network tab")

| **Action**                                                     | **Details**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **View Network Name**                                     | ****[Add/View a Remote Network](docId\:uektCkVQ4gjdu0CerwIMP)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| \[2] **Peers Qty / Max Number**                                | Available for Litmus Edge Manager version 2.15.0 and later. Review the capacity of activated devices for the work. The following information displays:<br />* **Peers Qty**: The current number of activated devices for the network.&#x20;
* **Max Number**: The maximum number of activated devices allowed.&#x20;
* **Percentage**: The capacity of activated devices remaining for the network represented as a percentage value. For example, if the capacity is five activated devices and five devices are activated, the percentage displays 0% capacity remaining.&#x20; |
| \[3] **Show filter** / **Hide filter**                         | - Search by *Network Name*, *Subnet*, or *Listen Port*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| \[4] **Refresh**                                               | Refreshes network list                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| \[5] **Add a Network**                                         |  [Add/View a Remote Network](docId\:uektCkVQ4gjdu0CerwIMP)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| \[6] **Action menu**                                           | * **Edit**
* **Set Default:&#x20;**&#x54;he network assigned to the company and projects does not change when you set a new default network. Any new edge devices that you connect are automatically assigned to the new default network.
* **Remove:&#x20;**&#x59;ou cannot remove a default network. Set a different network as default if you want to remove the network.                                                                                                                                                                                                      |
| \[7]**&#x20;Show filter** / **Hide filter**                    | Search by *Network Name*, *Subnet*, *Company/Project*, *Peers Qty*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| \[8] **Refresh**                                               | Refreshes project network list                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| \[9] **Show Projects without subnet** / **Show all projects**  | Displays all projects without the subnet.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| \[10] **Action menu**                                          | - **Change Network:&#x20;**&#x59;ou must have at least two networks added to the Networks list.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

# Statistics

From the *Edge Remote Network Statistics* pane, you can view information about the remote networks for edge devices. The Edge Remote Network Statistics pane includes three sections.

The *Network* section contains a pane indicating network status, the number of networks, the number of peers associated with the edge devices, and the percentage of networks online.

Th&#x65;***&#xA0;**&#x4E;etworks Bandwidt&#x68;**&#xA0;***&#x73;ection contains a chart of the bandwidth over time for the connected networks in Mbps. You can hover over the chart to view the bandwidth for a particular point in time.

The *Networks Peers* section contains a list of connected peers that are connected edge devices in another project. You can view the default network for any connected peer.

Click a network name to view more details.&#x20;

# Settings

:::hint{type="info"}
**Note**: This feature below is for Litmus Edge Manager version 2.11.0 and later.&#x20;
:::

From the *Settings* pane in the *Edge Remote* module, you can set and configure the value of the Maximum Transmission Unit (MTU) of the network interface. The MTU is the maximum size of a data packet that can be transmitted over a network interface without fragmentation.&#x20;

![](https://app.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/WaA2d58V0X0E1uM8cGoDS_image.png "Edge Remote Networks: Settings")

This value configures the Litmus Edge Manager (LEM)'s connection to a Litmus Edge (LE) device and can be used to address potential network issues between LEM and an LE.

The default value is 1280 bytes and can be set to the following:

- For Litmus Edge Manager version 2.11.0 to 2.14.0, between 1280 bytes to 1500 bytes.
- For Litmus Edge Data Manager version 2.16.0 and later, between 576 bytes and 1500 bytes.


[title] Set Up a Litmus Edge API Token for an Application Release
[path] Litmus Edge Manager User UI/Product Features/Marketplace: Catalogs and Applications/Application Releases/Add a Draft Application Release/

When configuring an application release for deployment to a Litmus Edge instance, you can include an API token for the Docker container of the release. Follow the steps below to create and apply the API token.&#x20;

# Before You Begin

- Ensure you know how to create a draft application release. See [Create a Draft Application Release](docId\:pujQCF4jL0dUe8XjHsjmZ) for details.

# Step 1: Create The `EGDE_API_TOKEN` Variable

1. Create a variable named `EDGE_API_TOKEN` for the application release.
2. Set the variable value and adjust any other parameters as needed.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9cdJo-4RfbIB1NQTR60H3_image.png" size="80" width="1168" height="547" caption="EDGE_API_TOKEN" position="center" showCaption="true"}

# Step 2: Complete and Submit Application Release

1. Follow the instructions from *Step 3-Step 5* in [Add a Draft Application Release](docId\:pujQCF4jL0dUe8XjHsjmZ) to create a draft application release.&#x20;
2. Submit the draft release when ready.&#x20;

# Step 3: Launch the Application from Litmus Edge Manager

1. To ensure the `EDGE_API_TOKEN` is properly set, launch the application from the **Litmus Edge Manager (LEM)**.
2. LEM will automatically create an API token named `MPC-APP` in Litmus Edge during this process if it does not already exist.
3. The `MPC-APP` token value will be passed into the `EDGE_API_TOKEN` environment variable.

:::hint{type="info"}
**Important Notes:**&#x20;

- If the application is launched directly from Litmus Edge, the environment variable will not include the API token.
- If the application is not working as expected, use ***Step 4&#x20;***& ***Step 5*** to verify that the API token is created and passed correctly.&#x20;
:::

# (Optional) Step 4: Confirm API Token

**To confirm an API token with the name&#x20;**`MPC-APP`**&#x20;exists on your litmus edge:**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **System&#x20;**>**&#x20;Tokens**.   &#x20;
   The *NATS Proxy&#x20;*&#x70;ane appears.&#x20;
3. Ensure the `MPC-APP` token is created and appears in the list.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dptzQa8b53RHHiVaFksQp_image.png" size="80" width="1713" height="846" caption="System > Tokens" position="center" showCaption="true"}

# (Optional) Step 5: Verify Passed API Token Assignment to Docker Container&#x20;

**To ensure that the API Token has been passed to the Docker Container from Litmus Edge:**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Applications**.
   The *Dashboard&#x20;*&#x70;ane appears.
3. Click **Containers**.&#x20;
   The *Containers&#x20;*&#x70;ane appears.
4. Click **Inspect&#x20;**&#x74;o view the container details.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/i4R-aT6xb-nd0PoVT6BaE_2023-07-2111-11-45.png "Inspect button location")
5. Scroll down to the **Config&#x20;**&#x73;ection under **Env&#x20;**&#x61;nd check that `EDGE_API_TOKEN` matches the `MPC-APP` token from Step 3.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-nl3uwYRyZbHpmacyPxo6_image.png" size="80" width="1713" height="846" position="center" caption="Config: Env" showCaption="true"}


[title] Application Releases
[path] Litmus Edge Manager User UI/Product Features/Marketplace: Catalogs and Applications/

After selecting an application from a catalog, you can add/view/customize version releases for the application. Every Docker application will contain at least one Docker application release. A Docker application release can be created and configured under one of the Application tabs: *Containers*, *Containers Advanced* or *Compose*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vONg6A5LzN3ykncqefIsk_image.png" size="80" width="955" height="352" caption="Containers, Containers Advanced, Compose" position="center" showCaption="true"}

A Docker application release is a combination of optional variables and at least one component (*Containers*/*Containers Advanced*) or a compose configuration file (*Compose*). The Docker application release (once submitted) will be used during an application deployment operation (See the *Step 2: Application Settings* section of [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw)) to Litmus Edge instances. &#x20;



The optional variables will later be presented as configurable parameters during deployment.&#x20;

The component or the compose configuration file sets up a configuration to extract at least one Docker image from a Docker repository to execute the Docker image's respective Docker container. This allows the Docker application release to package multiple Docker images (and the respective Docker containers) and deliver them to Litmus Edge instances concurrently. Although it is possible to submit a Docker application release without at least one component (*Containers*/*Containers Advanced*) or a compose configuration file (*Compose*), the Docker application release cannot be later deployed to a Litmus Edge instance.&#x20;

A Docker application release is always in one of two states, `RELEASED` (submitted) or `DRAFT`. When a Docker application release is in a `RELEASED` state, it cannot be further modified. Likewise, when it is in `DRAFT`, it can be modified.

:::hint{type="warning"}
**Important:&#x20;**&#x57;hen a Docker application release is in `DRAFT` state, it can not be deployed to a Litmus Edge instance.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jK1DcZTxllz5P-gnfvNo0_image.png" size="80" width="1920" height="914" position="center" caption="Catalog Applications: Containers/Containers Advanced/Compose" showCaption="true"}

# Next Steps



- [Add a Draft Application Release](docId\:pujQCF4jL0dUe8XjHsjmZ)&#x20;
- [Manage Application Releases](docId\:FoZMtmXkxEI6Y-gPZAEvg)&#x20;


[title] Set Up Docker Container Configurations for an Application Release
[path] Litmus Edge Manager User UI/Product Features/Marketplace: Catalogs and Applications/Application Releases/Add a Draft Application Release/

An application release must contain at least one component (*Containers*/*Containers Advanced*) or a compose configuration file (*Compose*). Although it is possible to submit a Docker application release without at least one component (*Containers*/*Containers Advanced*) or a compose configuration file (*Compose*), the Docker application release cannot be later deployed to a Litmus Edge instance.&#x20;

The component or the compose configuration file sets up a configuration to extract at least one Docker image from a Docker repository to execute the Docker image's respective Docker container. This allows the Docker application release to package multiple Docker images (and the respective Docker containers) and deliver them to Litmus Edge instances concurrently. It is these Docker images from the component/compose configuration file that will be later deployed as Docker images to Litmus Edge instances during [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw).



# Option 1 Containers: Set Up a Component

See the following on how to add/manage components for the *Containers* tab.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2m0b7gZE5lt1AX7PIF8g5_2023-07-2111-13-41.png "Containers: Components ")

| **Action**                                  | **Details**                                                                                                                                                                               |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Show filter&#x20;**/ **Hide filter** |  Search by *Name*, *Image*.                                                                                                                                                               |
| \[2] **Add Component**                      | You can add multiple components. You can't add variables for a submitted application release.                                                                                             |
| \[3]  **Action menu**                       | - **Edit:&#x20;**&#x59;ou can't edit components for a submitted application release.&#x20;
- **Remove:&#x20;**&#x59;ou can't delete components for a submitted application release.&#x20; |

## More on Add Component

When adding a new component, a Docker image must be extracted from a Docker registry. The other available customizations enable additional configurations when executing the Docker container from the extracted Docker image.

Furthermore, when customizing the Docker image configurations, it is also possible to use the variables created from [Set Up Variables for an Application Release](docId\:HF5YyWh3bwhFi6m2jKxHt) as values.  The syntax for referring to these variables is `${VARIABLE_NAME}` where `VARIABLE_NAME` is the name of the variable being used.

### Step 1: Set Up Common Parameters

In this section, you will set up the initial configuration needed for a Docker image’s respective Docker container.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/u9TZBjFfOAr6rYUbdYG0v_image.png" size="80" width="1550" height="658" position="center" caption="Add Component: Common Parameters" showCaption="true"}

- **Name**: Assign a name for Docker container. See [Assign name](https://docs.Docker.com/engine/reference/commandline/run/#assign-name-and-allocate-pseudo-tty---name--it) for details.
- **Repository**: The available registry provider of the Docker image. See [Registry Management](https://app.archbee.com/docs/VAKj8ZK5Bi9ApnYcgeYQr/M6yzedYRAwwYDnLDtOQlZ) and [Docker Registry](https://docs.Docker.com/registry/) for details.
- **Image:&#x20;**&#x54;he Docker image registry location for a Docker pull command. See [Pull From a Different Registry](https://docs.docker.com/engine/reference/commandline/pull/#pull-from-a-different-registry) for details. The image registry location must be both a valid registry location and accessible by Litmus Edge instances.
- **Restart**: The restart policy for the equivalent Docker container. See [Use a Restart Policy](https://docs.docker.com/config/containers/start-containers-automatically/#use-a-restart-policy) for details.
- **Network Mode**: The network settings for the equivalent Docker container. See [Network Settings](https://docs.docker.com/engine/reference/run/#network-settings) for details.
- **Enable TTY**: See `--tty` or `-t` of [Options](https://docs.docker.com/engine/reference/commandline/run/#options) and [Allocate Pseudo-TTY](https://docs.docker.com/engine/reference/commandline/run/#name) for details.
- **Open STDIN**: See the `--interactive` or `-i` option of [Options](https://docs.docker.com/engine/reference/commandline/run/#options) and [Allocate Pseudo-TTY](https://docs.docker.com/engine/reference/commandline/run/#name) for details.
- **Privileged**: See [Full Container Capabilities](https://docs.docker.com/engine/reference/commandline/run/#privileged) for details.
- **Command**: The command-line arguments used by the Docker container’s application when it executes.

### Step 2: Set Up Environment

In this section, you can set up the environment variables that the Docker container will use during its operation. See [Environment Variables](https://docs.docker.com/engine/reference/run/#env-environment-variables) for details.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/U8mYfLW4ezm_6usD-GHNH_image.png" size="80" width="1553" height="451" position="center" caption="Add Component: Environment" showCaption="true"}

### Step 3: Set Up Labels

In this section you can set up metadata to the Docker container. See [Set Metadata on Container](https://docs.Docker.com/engine/reference/commandline/run/#set-metadata-on-container--l---label---label-file) for details.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_nzEkg2LOmnb6sIyxqX-m_image.png" size="80" width="1565" height="457" position="center" caption="Add Component: Labels" showCaption="true"}

### Step 4: Set Up Ports

In this section, you can set up the port management for the Docker container. See [Ports](https://docs.docker.com/network/#published-ports) for details.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/E-l71hY1sGW0FfZwySYgO_image.png" size="80" width="1556" height="463" position="center" caption="Add Component: Ports" showCaption="true"}

### Step 5: Set Up Volumes

In this section, you can set up the data persistence mechanism for the Docker container. See [Use volumes](https://docs.docker.com/storage/volumes/) or [Use bind mounts](https://docs.docker.com/storage/bind-mounts/) for details.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/o8YsMDDqj7Hl5Pbi5Cyqj_image.png" size="80" width="1557" height="445" position="center" caption="Add Component: Volumes" showCaption="true"}

# Option 2 Containers Advanced: Set Up a Component

This option is an upgraded version of *Option 1 Containers: Set Up a Component.&#x20;*&#x53;ee the following on how to add/manage components for the *Containers Advanced* tab.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FYp43y4JVR4xbkc8LpIoQ_image.png" size="80" width="1920" height="914" position="center" caption="Containers Advanced: Components " showCaption="true"}

| **Action**                                  | **Details**                                                                                                                                                                               |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Show filter&#x20;**/ **Hide filter** |  Search by *Name*, *Image*.                                                                                                                                                               |
| \[2] **Add Component**                      | You can add multiple components. You can't add variables for a submitted application release.                                                                                             |
| \[3]  **Action menu**                       | - **Edit:&#x20;**&#x59;ou can't edit components for a submitted application release.&#x20;
- **Remove:&#x20;**&#x59;ou can't delete components for a submitted application release.&#x20; |

## More on Add Component

In *Option 1 Containers: Set Up a Component*, there are five steps where you may enter details for a pre-determined set of basic Docker parameters. The limitation of the previous option is that it is not possible to access and configure the remaining more advanced Docker parameters.&#x20;

When adding a new component, this second option offers a `.json` configuration form to access and configure the remaining advanced Docker parameters. The form will be used to request a Docker image from a selected Docker registry.&#x20;

### Step 1: Set Up Common Parameters

The first step is a simplified version of the *Step 1: Set Up Common Parameters* section from the previous option.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3VDDmrWGOCdsVX4fFaEak_image.png" size="80" width="1460" height="362" position="center" caption="Add Component: Common Parameters" showCaption="true"}

- **Name**: Assign a name for Docker container. [Assign name](https://docs.Docker.com/engine/reference/commandline/run/#assign-name-and-allocate-pseudo-tty---name--it) for details.
- **Repository**: The available registry provider of the Docker image. See [Registry Management](docId\:M6yzedYRAwwYDnLDtOQlZ) and [Docker Registry](https://docs.docker.com/registry/) for details.

### Step 2: Insert Container Create Configuration `.json` File

The second step allows you to create a Docker container by entering file contents for a Docker container configuration `.json` file. See [Create a container](https://docs.docker.com/engine/api/v1.40/#tag/Container/operation/ContainerCreate) for details.

Furthermore, when customizing the `.json` file, it is also possible to use the variables created from [Set Up Variables for an Application Release](docId\:HF5YyWh3bwhFi6m2jKxHt) as values. The syntax for referring to these variables is `${VARIABLE_NAME}` where `VARIABLE_NAME` is the name of the variable being used.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/irDpL9L2d3pc3xyLBs2gG_image.png" size="80" width="1462" height="684" position="center" caption="Add Component: Config" showCaption="true"}

| **Action**                                                             | **Details**                                                                  |
| ---------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| \[1] **Import Component Config**                                       | Load the component configuration from an external source.                    |
| \[2] **Copy Config Content**                                           | Duplicate the current configuration content to the clipboard.                |
| \[3]  **Paste Config Content**                                         | Insert the previously copied configuration content into the designated area. |
| \[4] **Clear Config Content**                                          | Remove all existing configuration content from the input field.              |
| \[5] **Link to API specifications for&#x20;**[Creating a container](#) | Access documentation detailing the API procedures for container creation.    |
| \[6] **Enter Config Content**                                          | Input the configuration settings manually into the designated field.         |

# Option 3 Compose: Set up a Compose

This option is an even more upgraded version of the previous two options in the form of an alternative Compose subsection. Rather than creating a component one by one like the previous two options, you are able to set up multiple components all at once by entering a YAML Compose file to set up a multi-container application configuration. See [Compose specifications](https://docs.docker.com/compose/compose-file/) for details.

Furthermore, when customizing the YAML file, it is also possible to use the variables created from [Set Up Variables for an Application Release](docId\:HF5YyWh3bwhFi6m2jKxHt) as values.  The syntax for referring to these variables is `${VARIABLE_NAME}` where `VARIABLE_NAME` is the name of the variable being used.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WhJlUYeb3WXFmKg4-hqXe_image.png" size="80" width="1562" height="763" position="center" caption="Catalog Applications: Compose" showCaption="true"}

| **Action**                                                                                                           | **Details**                                                                    |
| -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| \[1] **Import Compose File**                                                                                         | Allows users to upload a Compose file for processing.                          |
| \[2] **Copy Compose File**                                                                                           | Facilitates the duplication of a selected Compose file.                        |
| \[3] **Paste Compose File**                                                                                          | Enables the insertion of a copied Compose file into the designated location.   |
| \[4] **Clear Compose File**                                                                                          | Removes all content from the current Compose file.                             |
| \[5] **Link to Compose File format in&#x20;**[Compose specifications](https://docs.docker.com/compose/compose-file/) | Provides access to the official specifications for Compose file formatting.    |
| \[6] **Compose File Contents**                                                                                       | Displays the data and configuration included within the selected Compose file. |
| \[7] **View Supported Compose Objects**                                                                              | Lists all objects that are compatible with the Compose file format.            |

## Supported Compose Objects

When you click **Supported Compose Objects,&#x20;**&#x61; list of all the supported objects displays from the right.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ag1e26IfOOEEq_KxIIEwd_image.png" size="50" width="413" height="732" caption=" Supported Compose Objects" position="center" showCaption="true"}

When you attempt to **Save** a YAML Compose file with unsupported compose objects, an error such as the following appears. It will indicate all the invalid fields.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mqvYl5xzLG2QXaTuh3ELM_image.png" size="80" width="777" height="322" position="center" caption="Invalid Data: unsupported Compose Objects" showCaption="true"}


[title] Manage Application Releases
[path] Litmus Edge Manager User UI/Product Features/Marketplace: Catalogs and Applications/Application Releases/

A Docker application release is always in one of two states, `RELEASED` (submitted) or `DRAFT`. When a Docker application release is in `RELEASED` state, it cannot be further modified. When it is in `DRAFT`, it can be modified.

:::hint{type="warning"}
**Important:&#x20;**&#x57;hen a docker application release is in `DRAFT` state it can't be deployed to a Litmus Edge instance.
:::

See the following on how to manage Docker application releases. The following user interface is identical for *Containers*, *Containers Advanced*, and *Compose*.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aet8lY4FRC5TADGHWpqZ7_2023-07-2111-15-43.png "Containers/Containers Advanced/Compose")

| **Action**                                    | **Details**                                                                                                                                                                                                          |
| --------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \[1] **Clone release**                        |  Search by *Name*, *Image*.                                                                                                                                                                                          |
| \[2] **Show release details&#x20;**           | Modifications cannot be made when viewing a submitted release.                                                                                                                                                       |
| \[3]  **Remove release&#x20;**                | - Removing a release cannot be undone.                                                                                                                                                                               |
| \[4] **View more details about this release** | See [Set Up Variables for an Application Release](docId\:HF5YyWh3bwhFi6m2jKxHt) and [Set Up Docker Container Configurations for an Application Release](docId\:mebpl6tcgzj9NS2Cmk5cQ) for details.                   |
| \[5] **Edit release &#x20;**                  | Once a release has been submitted, you can no longer modify it. You can clone the submitted release, and then modify the clone (while it is still in the Draft status).<br />- **Edit Release**
- **Submit Release** |

# Next Steps

After a Draft Application Release has been submitted (`RELEASED`), it can then be deployed to Litmus Edge instances. See [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw) for details.


[title] Step 2: Create Secondary Catalog
[path] How-To Guides/Litmus Edge Manager User UI Guides/Deploy Edge Applications to Multiple Sites Using Marketplace Catalog Sync/

After creating a catalog of applications and release versions for the primary marketplace, you need to create a *Secondary&#x20;*&#x6D;arketplace catalog in Litmus Edge Manager (LEM) located in Japan.

:::hint{type="info"}
**Note:&#x20;**&#x59;ou can only create new Secondary Catalogs. You cannot edit an existing catalog to convert it to a secondary catalog.
:::

**To create a secondary marketplace catalog:**

1. Go to *Litmus Edge Manager User UI&#x20;*&#x61;nd select the appropriate company and project. Then, navigate to **Features&#x20;**>**&#x20;Marketplace.&#x20;**&#xA;The *Marketplace Catalog* opens in a new browser window.
2. Click **Add Catalog.**&#x20;
   The *Create Catalog* dialog box appears.
   - Enter a **name&#x20;**&#x61;nd optionally enter a **description**.
   - Select the **Synchronize&#x20;**&#x63;heckbox. Then, from the *Select Role* drop-down list, select **Secondary**.
   - Click **Save**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JBFTBQnk4SG_i_zY08usW_image.png" size="70" width="627" height="297" position="center" caption="Create Catalog dialog box" showCaption="true"}

The Secondary marketplace catalog will include all the applications from the Primary catalog after a secure connection is established.

**Next:&#x20;**[Step 3: Establish Secure Connection Between Primary and Secondary Catalog](docId\:s8JGesiGUpFPEHtDB_cfv)

[title] Events
[path] Litmus Edge Manager Admin Console/Product Features/

You can view general and project-specific system events and asynchronous events.

## View Events&#x20;

View general and instance system events in **Events** in Admin Console. Here you can sort events by:

- Time
- Level, for example, Info or Error.
- Type, for example, grafana, git-sync, or report-stats
- Company or project
- User

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KLtPp-bT4ssJXaiRQKVij_image.png" size="80" width="1510" height="983" position="flex-start" showCaption="false" indent="1"}


[title] Registry Management
[path] Litmus Edge Manager User UI/Product Features/Marketplace: Catalogs and Applications/

Registry management enables you to view, add, and remove registry providers. These registry providers will be the source of where Docker images of marketplace catalog applications can be pulled when deploying to Litmus Edge instances.&#x20;

Docker requires you to connect to a [secure registry](https://docs.docker.com/registry/deploying/#running-a-domain-registry). You can find more information about how to connect to an [insecure registry](https://docs.docker.com/registry/insecure/).

The default registries available are:

- [Elastic Docker Registry](https://www.docker.elastic.co)&#x20;
- [Microsoft Docker Container Registry ](https://mcr.microsoft.com)
- [Public Docker Hub](https://hub.docker.com)

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/biJ85b7LRk2Sn5dB_SRIr_2023-07-2111-16-45.png "Catalog Applications: Registry")

| **Action**                        | **Details**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| \[1] **Return to Applications**   | [Marketplace: Catalogs and Applications](docId\:gqoGt_Szm8rz9UdPhl2NL)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| \[2] **Add new repository&#x20;** | Refer to the following parameters to configure for each registry. <br />AWS ECR<br />* **Name**&#x20;
* **Registry Description** (Optional)&#x20;
* **AWS Region** (Optional)&#x20;
* **AWS Key ID**&#x20;
* **AWS Secret Key**<br />Azure Container Registry<br />* **Name**
* **Registry Description** (Optional)&#x20;
* **Service principal name**
* **Service subscription identifier**
* **Client ID&#x20;**
* **Client Secret&#x20;**
* **Resource Group**
* **Registry Name**
* **Address**: Enter the location of the registry.<br />Docker Registry<br />* **Name**
* **Registry Description** (Optional)&#x20;
* **Docker Login Server**: Enter `https://index.docker.io/v1` .
* **Docker Login User&#x20;**(Optional)&#x20;
* **Docker Login Password** (Optional)&#x20;
* **Docker CA Certificate** (Optional): Paste a CA Certificate in the **Docker CA Certificate&#xA0;**&#x66;ield. If Litmus Edge is already connected to Litmus Edge Manager, the CA Certificate used for that connection is applied.
* **Docker Skip TLS Verification** (Optional) Select the check box to bypass the TLS security.<br />Google Container Registry<br />* **Name**
* **Google container registry address**
* **Repository Description** (Optional)
* **JSON key file**: Browse to add a key file.&#x20; |
| \[3]  **Remove release&#x20;**    | Delete the occurrence of release.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| \[4] **Delete repository**        | Remove the repository permanently.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |


[title] DNS
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/Network/

:::hint{type="info"}
**Note**: The DNS feature is available for Litmus Edge Manager version 2.10.1 and later.
:::

You can configure the DNS settings by navigating to **Settings** > **Network** and clicking the **DNS** tab.

This feature enables you to configure Litmus Edge Manager to connect to specific DNS Servers.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Sxmgg4glQaGquGAuOYFsU_image.png "DNS Tab")

# Update DNS Settings

You can add/delete the DNS server(s) the Litmus Edge Manager will connect to.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CJKDfotTIrFgZmhBL73y7_image.png" size="80" width="703" height="393" caption="DNS Settings" position="center" showCaption="true"}


[title] Alerts
[path] Litmus Edge Manager Admin Console/Product Features/

The **Alerts** page lets you configure and monitor alert activity across your instance. An alert consists of a trigger and an action. A trigger monitors an event or metric and fires when defined conditions are met. An action sends a notification, such as an email or webhook call, when a trigger fires. Each time a trigger fires, the system creates an incident that you can track and resolve.

The Alerts page contains three tabs:

- **Incidents**
  A log of all triggered incidents across the instance. Filter, sort, and resolve incidents from this tab.
- **Triggers**
  Configure the events and metrics that fire alerts and send notifications.
- **Notification Settings**
  Configure the actions that triggers use to send notifications.


[title] Step 6: (Optional) Update an Application Version
[path] How-To Guides/Litmus Edge Manager User UI Guides/Deploy Edge Applications to Multiple Sites Using Marketplace Catalog Sync/

You can update an application version in the Primary marketplace catalog and initiate a sync from the Secondary marketplace catalog to pull the new changes.

# Before You Begin

- Make sure to finish *Steps 1 - Step 5&#x20;*&#x6F;f [Deploy Edge Applications to Multiple Sites Using Marketplace Catalog Sync](docId\:Z8R_5mVU1pezFXVSeNhQu) before proceeding.

# Step 6a: Add New Application Release Version in Primary Catalog

&#x20;**To add a new application release version in the primary catalog:**

1. Go to the *Primary* marketplace catalog you created in [Step 1: Create Primary Catalog With List of Applications](docId\:qBOZmPgvAQv8-_JM5vYv_) and select *Analytics* application to add a new release version.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HqO0-MmSUO3Pvmcq26X97_image.png "Primary marketplace catalog pane")
2. Click the **+** icon to open the *Add Release&#x20;*&#x64;ialog box.
   - Enter a suitable **name** for the release.
   - Enter a **description&#x20;**&#x66;or the release version.
   - Enter a **readme&#x20;**&#x66;or the release version.
   - Click **Save**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kNACPo32IXVUD6Fl8Y55O_image.png" size="80" width="713" height="347" position="center" caption="Add Release dialog box" showCaption="true"}
3. You can add launch variables or docker container configurations to the draft application release. See *Step 3-Step 5* in [Add a Draft Application Release](docId\:pujQCF4jL0dUe8XjHsjmZ).

:::hint{type="info"}
**Note:&#x20;**&#x41; Docker application release is always in one of two states: `RELEASED` (submitted) or `DRAFT`. When a Docker application release is in a `RELEASED` state, it cannot be further modified. Likewise, when it is in `DRAFT`, it can be modified.
:::

In this guide and in real-world settings, it is recommended that the secondary site always syncs to the draft application release to allow for further modifications specific to their site needs.

# Step 6b: Synchronize the Secondary Catalog to the Primary Catalog

Once the primary site (Canada) uploads the new version of the application into the Primary Catalog, the secondary site (Japan) manually initiates a sync with the primary catalog to pull the new application version.

**To synchronize the secondary catalog with the primary catalog using the new application release version:**

1. From the secondary marketplace catalog's *Synchronization* page, navigate to the **Synchronization: Secondary Catalog&#x20;**&#x70;ane.
2. Click **Sync&#x20;**&#x74;o pull the new version updates in the catalog.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BCZ6ACrG-HdZg3yXU8rfC_image.png "Synchronization page")

:::hint{type="info"}
**Note:** There is no need for approval of a primary catalog sync request this time. A secure connection has been established using a bootstrap file in [Step 3: Establish Secure Connection Between Primary and Secondary Catalog](docId\:s8JGesiGUpFPEHtDB_cfv).
:::

To verify if the application(s) have received the new release version, go to the **Applications&#x20;**&#x70;ane in the *Secondary&#x20;*&#x6D;arketplace catalog and confirm the release update.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/X9doG39HYGY0VEdTprxxG_image.png "Secondary marketplace catalog: Applications pane")

:::hint{type="info"}
**Note:&#x20;**&#x54;o make changes to the pulled release version before deploying it to the edge device, see [Manage Application Releases](docId\:FoZMtmXkxEI6Y-gPZAEvg).
:::


[title] Step 4: Synchronize Secondary Catalog to Primary Catalog
[path] How-To Guides/Litmus Edge Manager User UI Guides/Deploy Edge Applications to Multiple Sites Using Marketplace Catalog Sync/

You will now have to synchronize the secondary catalog to the primary catalog.&#x20;

**To synchronize the secondary marketplace and primary marketplace catalog:**

1. Navigate to the secondary catalog'&#x73;*&#x20;Synchronization: Secondary Catalog* pane, and click **Sync**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/o-pfB3V_EW1gpWn2G2Uk7_image.png " Synchronization: Secondary Catalog pane")
2. Click **Applications&#x20;**&#x74;o verify the successful synchronization.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x2avJUlkZKM1k_LV2ptgm_image.png "Applications pane in Secondary Catalog")

The secondary catalog in Japan now has the same applications, application releases, and registries as the primary catalog at headquarters.

**Next:&#x20;**[Step 5: Deploy an Application from Secondary Catalog to Edge Devices](docId\:RHJyEcJ3Pt9WzLBsSpTMY)

[title] Admin Console Licenses
[path] Litmus Edge Manager Admin Console/Product Features/Admin Console Settings/

The Licenses module provides information for the available licenses and features related to your plan. For more detailed information on licenses, see [Site and Node-Locked License Overview for Litmus Edge Manager](docId\:Jvibd0MBSj97ZcPDfhab9).

You have the following options for adding a license:

- To add/upgrade a Node-locked license (online or offline), see the sections below.
- To add a Site license (offline only), see [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O).&#x20;

Contact your Litmus representative to request a license key.

The License pane has three sections:

- **License Settings**: Switch between using a Node-locked or a Site license for Litmus Edge Manager.
- **Available Licenses:** View the applied licenses for Litmus Edge Manager.
  - **Online License Activation and Upgrade License Online**: Activate (add) or upgrade a license if the Litmus Edge Manager is connected to the internet.
  - **Offline License Activation and Upgrade License Offline**: Activate (add) or upgrade a license if the Litmus Edge Manager is not connected to the internet.
- **Features***:* View the enabled features associated with your applied licenses.

:::hint{type="danger"}
**Warning:&#x20;**&#x42;efore activating the license, ensure all hardware / VM configuration steps that can modify the Media Access Control (MAC) address (add/replace a Network Interface Controller (NIC) card) are finalized.

The license Host ID depends on the MAC address for the device. The MAC address identifies the devices on a network. Changing the MAC address will invalidate the license.
:::

# License Settings

A Litmus Edge Manager (LEM) license can be either *Node-locked* or *Site*. A *Node-locked* license is one that's locked onto the LEM to enable the instance to be used at anytime without a connection to the license server. A *Site* license requires a reachable connection to a licensing server.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QsLPTejTICFnzxPvtEje2_image.png "License Settings")

\[1]**&#x20;Select License Setting**

\[2] **Save License Setting**

# Available Licenses: Viewing, Adding, and Upgrading Node-locked Licenses

:::hint{type="info"}
**Note:&#x20;**&#x54;he Available Licenses section:

- Is only visible when a Node-locked license is selected starting with LEM 2.10.1. It is unavailable when a Site license is selected.
- Includes the Add License and Upgrade core license features starting with LEM 2.11.0.
- Includes an option to delete an existing license starting with LEM 2.14.0.

Kubernetes vendor deployment methods, such as GKE and AKS, only support site-based licensing.
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MkobTXF7iEQFE49qk_wQP_image.png "Further license management options")

\[3] **Show Filter** / **Hide Filter:&#x20;**&#x53;earch by *License*

\[4] **Refresh Available Licenses**&#x20;

\[5] **Upgrade core license**

\[6] **Delete License**: Only available for Litmus Edge Manager version 2.14.0 and later.&#x20;

You can add (activate) a new or upgrade an existing Litmus Edge Manager Node-locked license. Contact your Litmus representative to request a license key. You can activate your Node-locked license either online or offline.

You can add a *Core* or an *Add-on* Node-locked license. While multiple Add-on Node-locked licenses can be added as needed, only one Core license can exist.

:::hint{type="warning"}
**Important:** Any license added (activated) /upgraded for a Litmus Edge Manager is bound to its MAC address. In case the Litmus Edge Manager has to be reinstalled, assign the same MAC address again to be able to reuse all licenses.
:::

## Activate or Upgrade a Node-Locked License Online

Online activation allows you to add (activate) /upgrade a Litmus Edge Manager Node-locked license directly with the Litmus Licensing system. The user interface below is identical to *Upgrade License Online*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/K93x4ohBTuwdWBfobLxq__image.png" size="80" width="1891" height="385" caption="Online License Activation" position="flex-start" darkWidth="1891" darkHeight="385" showCaption="true"}

**To add(activate)/upgrade a license online**:

1. Ensure the Litmus Edge Manager establishes a connection with the internet.
2. In the **Activation Key** field, enter the Litmus Edge Manager Node-locked license key you received from the Litmus Customer Success Tea&#x6D;*.&#x20;*&#x54;he key has the following structure: `<4 digits>-<4 digits>-<4 digits>-<4 digits>`
3. Click **Submit**.

After a successful add/upgrade, the license will be loaded and will be displayed in the *Available Licenses* and *Features* section respectively.&#x20;

## Activate or Upgrade a Node-Locked License Offline

Offline activation allows you to add(activate)/upgrade a Litmus Edge Manager Node-locked license if enterprise cybersecurity rules do not allow for direct access with the Litmus Licensing system through the internet. The user interface below is identical to *Upgrade License Offline*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Hs8XicWJvVEA-QpdQw1yy_image.png" size="80" width="1920" height="937" caption="Offline License Activation" position="flex-start" darkWidth="1920" darkHeight="937" showCaption="true"}

### Before You Begin

- Make sure you have access to a web browser that is connected to the internet to complete this activation.
- If your web browser is on a separate computer, use a text file to copy the Host ID, Activation URL and Offline Response.

### Step 1: Obtain Offline Activation Request

**From the&#xA0;*****Offline License Activation / Upgrade License offline*****&#xA0;section:**

1. Enter the Node-locked license key in the **Activation Key** field.
2. Click **Generate request**.   &#x20;The activation request appears in the *Offline Activation Request* field.
3. Next to th&#x65;*&#xA0;Offline Activation Request* field, Click the **Copy activation request** icon. The activation request is copied to your clipboard.
4. Click **Open License Portal**.&#x20;
   The *Licensing Portal* opens in a new tab.

### Step 2: Obtain Activation Result from Licensing Portal

**From the&#x20;*****Licensing Portal*****&#xA0;(**[https://litmus.activate.id/offline](https://litmus.activate.id/offline)**) tab:**

1. Paste the activation request in the **Activation Request** field, and then click **Make License.&#x20;**(You may need to verify **I'm not a robot.**) The encoded license appears in the *Activation Result* field.
2. Next to the *Activation Resul&#x74;**&#xA0;***&#x66;ield, click the **Copy** **content to clipboard** icon to copy the encoded license.
3. Return to the *Offline License Activation* / *Upgrade License offline* section.

### Step 3: Submit Offline Activation Key

**From the&#x20;*****Offline License Activation*****&#x20;/&#x20;*****Upgrade License offline*****&#xA0;section again:**

1. Paste the encoded license in the **Offline Activation Key&#x20;**&#x66;ield.&#x20;
2. Click **Submit**.&#x20;
   The license is added.

# Features&#x20;

You can filter and view features that are available for your plan from the *Features***&#xA0;**&#x73;ection in the *Licenses***&#xA0;**&#x6D;odule. This section allows you to monitor which features are unlocked and available by the licenses. You can filter for a specific feature or group of features.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9inSwCisj5ceEuO0Vis_C_image.png" size="80" width="1894" height="317" position="flex-start" caption="License Features" darkWidth="1894" darkHeight="317" showCaption="true"}

\[6] **Show Filter** / **Hide Filter:&#x20;**&#x20;Search by *Features*


[title] Edge Devices
[path] Litmus Edge Manager Admin Console/Product Features/Edge Devices/

The Edge Devices module provides a comprehensive list of all the edge devices that are activated with Litmus Edge Manager.&#x20;

Within this module, you will be able to view details such as the name, description, activation status, version number, and the date and time the edge device was created.

# Access Edge Devices UI

**To access the Edge Devices UI:&#x20;**

1.   Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Edge Devices**.
   *Edge Devices* list pane by default appears.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/oZ9AMlAGMZLzVHwTmb_9C_image.png)


[title] LEM Settings
[path] Litmus Edge Manager User UI/Product Features/

The Settings module is accessible for a company and from an open project.

The *Company Settings* module contains two tabs which are used to configure the company and its projects.

The *Project Settings* module contains four tabs which are used to configure a specific project.

# Company

Companies are the main organizational unit that you can define on Litmus Edge Manager. Companies contain company teams that define company-wide access privileges. Companies also contain company projects, which can represent individual plants that a company operates.

[Company Settings](docId\:XwUuYveHjgIbb0bYwlwSt)&#x20;

# Projects

Projects represent an individual plant that a company operates. They contain the devices and models needed for plant operations. Projects have separate team access privileges from the teams defined for companies.

[Project Settings](docId\:hmGSXiivMvDy4K43OanRv)&#x20;


[title] Alerts Guides
[path] How-To Guides/Litmus Edge Manager User UI Guides/

Refer to the following Alerts how-to guides:

- [Create an Email-Alert Trigger for DeviceHub Device Data Quality](docId\:keO0ctAMmo949dTzLGw7V)
- [Create an Email-Alert Trigger for Connector Online Status](docId\:da-gvxuEPnYfpaTsSYhcq)
- [Create an Email-Alert Trigger for DeviceHub Device Status](docId\:yCko-JWAqn-lTpa88w9yY)


[title] Product Updates
[path] /

Review product updates for Litmus Edge Manager:

- [2026](docId\:mcH93J7L4f9gnh1wUB9RX)&#x20;
- [2025](docId\:rFvAkyOCvNEqMWyYpHUrT)&#x20;
- [2024](docId:-17soa4j2iSXueWhfl_A_)
- [2023](docId:2hEyJ2u_5W1Z3aM2bd1sB)
- [2022](docId\:FM0PQP69F5si8uahCa-Hf)
- [2021](docId\:hMzr1MCVJkWT28UPAYPje)
- [2020](docId:5I5JvhW4u0N9OAys0SYqf)


[title] Litmus Edge Manager 2.26.4
[path] Product Updates/2025/

Release Date: October 10, 2025

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).

## Enhancements and Improvements

| Description                                                                           |
| ------------------------------------------------------------------------------------- |
| **APIs:**<br />* We've improved performance when returning a large number of devices. |


[title] Litmus Edge Manager 1.7.2
[path] Product Updates/2020/

Release Date: June 16, 2020

## Enhancements and Features

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Zero-touch provision for Litmus Edge**:<br />* Litmus Edge Manager now provision to deploy Litmus Edge with License Key, Certificates, cloud URL, Integration Configurations automatically. This feature helps in bulk activation of Litmus Edge from Litmus Edge Manager                                                                                                                                                    |
| **Litmus Edge deactivation from Litmus Edge Manager**:<br />* Improvements have been added with this release for deactivation of Litmus Edge from Litmus Edge Manager. More validation and verbose have been added to carry out this process seamlessly.                                                                                                                                                                       |
| **Improved Litmus Edge device removal workflow**:<br />* Improvements have been added with this release to the workflow for removal of Litmus Edge from Litmus Edge Manager. More validation and verbose have been added to carry out this process seamlessly.                                                                                                                                                                 |
| **Smooth upgrading of Litmus Edge marketplace application**:<br />* Marketplace application can be upgraded with new parameters to Litmus Edge.                                                                                                                                                                                                                                                                                |
| **Support of Litmus Edge Marketplace templates**:<br />* Supports marketplace apps in template deployment.                                                                                                                                                                                                                                                                                                                     |
| **Litmus Edge services management from Litmus Edge Manager**:<br />* A Litmus Edge Manager administrator can start/stop/restart services like remote access, ssh, devicehub and flows from Litmus Edge Manager.                                                                                                                                                                                                                |
| **Click-house access for 3rd party reporting tools**:<br />* Click-house access is available is for user to import the data to other databases for further reporting tools.                                                                                                                                                                                                                                                    |
| **Private Docker registry improvements**:<br />* Admin user can upload docker images to Litmus Edge Manager Admin Console, these images can be used for Litmus Edge application deployment. There is also option to pull docker images from another registry.                                                                                                                                                                  |
| **DockerHub registry mirroring**:<br />* Litmus Edge Manager manage proxy authentication and state for docker registry.                                                                                                                                                                                                                                                                                                        |
| **Maintenance - Configuration step isn't needed anymore**:<br />Manual configuration steps are not required for VM deployment and there is a field in Admin console to edit the domain name under settings.                                                                                                                                                                                                                    |
| **Maintenance - Litmus Edge Manager updates are supported now**:<br />* Litmus Edge Manager admin user can upgrade to next version of Litmus Edge Manager from Admin console. .upd file has to be uploaded to have it under New versions section in order to deploy the version. Admin user can click on the upgrade button to apply the upgrade. Previous versions can also be upgraded or removed manually from this section |
| **Litmus Edge Manager domain names management from Litmus Edge Manager Admin UI**:<br />* Litmus Edge Manager admin console now has the feature to update domain names. System will validate the URL before having it saved.                                                                                                                                                                                                   |
| **Introduced SSL certificates management (Instance, Let's Encrypt, Custom)**:<br />* User had to use command line to set up the certificate now this is possible from the Admin UI, which makes user journey much easier.                                                                                                                                                                                                      |
| **Introduced SSL certificates management (Instance, Let's Encrypt, Custom)**:<br />* User had to use command line to set up the certificate now this is possible from the Admin UI, which makes user journey much easier.                                                                                                                                                                                                      |
| **Various UI/UX improvements and bug fixes**:<br />* Improved UX and UI experience have been added with this release.                                                                                                                                                                                                                                                                                                          |

## Known Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                 |
| ------------------------------------------------------------------------------------------------------------------------------- |
| Failure on all file upload of Litmus Edge on Litmus Edge Manager Admin Console on FireFox browser with self-signed certificate. |


[title] 2023
[path] Product Updates/

- [Litmus Edge Manager 2.15.0](docId:7hBD9pBSIfVwVCQ2ChLj5)
- [Litmus Edge Manager 2.14.0](docId\:OXUIBOHHuPTV2cLdpX8Ql)
- [Litmus Edge Manager 2.12.0](docId\:CfyQJ1z4Pwa6BLURFxXrm)
- [Litmus Edge Manager 2.11.0](docId\:L89rUk090GzKigFOnmMAu)
- [Litmus Edge Manager 2.10.2](docId:7A7kkkSuR1ziJR-Ui2zQZ)
- [Litmus Edge Manager 2.8.2](docId\:gOeM_DGKG4vIHBtwUTPjl)
- [Litmus Edge Manager 2.8.1](docId:-o1veUqMYBmvwUnOaCxnM)
- [Litmus Edge Manager 2.8.0](docId:1V0n4Epl3yg6HRM6p2QOn)


[title] Litmus Edge Manager FAQs
[path] Resources/

:::ExpandableHeading
How can I try Litmus Edge Manager?

- You can get started with Litmus Edge Manager: [Getting Started](docId\:HnHQ6RBL35VCUa7ySVIII) 
- Read about Litmus Edge Manager here: [Litmus Edge Manager User UI](docId:-sKldTrdGJ49xNOa3yycd)&#x20;
:::

:::ExpandableHeading
Can I use Litmus Edge Manager without Litmus Edge?

No, Litmus Edge Manager is based on the model purchased from Litmus. Litmus Edge Manager is the management suite for Litmus Edge.
:::

:::ExpandableHeading
Why don't I see device attributes, such as manufacturer and model number, in the device INFO tab?

These attributes are sent by the devices. If it does not display:

- Check the device status from the *Edge Devices* pane to see if data is connected. See [Step 7: Verify Edge Device Activation in Litmus Edge Manager](docId\:KC9sqRSng2KSINWL1PfPi).
- Check the device information in the edge device. See [Info](docId:6_6LCntLNjWrq1JBqAS8e).
:::

:::ExpandableHeading
What could be some reasons that my device is not connecting?

- Try double checking your connection parameters.
- If the parameters are correct, check your firewall settings.
:::

:::ExpandableHeading
Why can I see device data in the RAW tab, but not in the EXPLORE tab?

Data sent to Litmus Edge Manager must be in a special format, as shown in the JSON schema in the Project settings page. If Litmus Edge Manager cannot parse incoming messages, the messages only appear in the **Raw** tab.
:::

:::ExpandableHeading
Why can't I access the Litmus Edge Manager or Litmus Edge Manager Admin Console UIs after rebooting my VM?

This may be happening because your VM is configured with DHCP and received a new IP address after the reboot.

**For LEM version earlier than 2.31.0:**

Log in to the Admin Console and change the base domain name to the new IP address.

**For LEM version 2.31.0 and later:**

1. SSH to the VM and obtain root access.
2. Edit `/etc/default/lem-common`.
3. Change `LEM_BASE_DOMAIN_NAME` to `lem.local`.
4. Wait 5 minutes for the system to reconfigure the domain names and then log in again.
:::

:::ExpandableHeading
How can I remotely manage a device?

Litmus Edge Manager supports MQTT protocol to remotely manage a device:&#x20;

**MQTT**

Litmus Edge Manager supports 3 types of MQTT topics:

- request - to send manage requests to a device
- response - to receive responses from a device
- data - to receive data from a device

Request/response formats are not defined.

For example: If you can program your device to reboot when it receives `{"command": "reboot"} `from the request topic, you can reboot your device remotely.

If you open the MQTT tab on the Device Details form, you can see Request/Response tabs to manage MQTT devices online.

To accomplish management tasks, you must program your device.

The Batch Device Management feature offers operations similar to those described above, but you can define batch commands (MQTT) and schedule these commands to execute against a group of devices.
:::

:::ExpandableHeading
How can I delete a Project?

You can remove a project from the **Project List** or from the **Remove Project** section in the **Project Settings** > **Settings** tab.
:::

:::ExpandableHeading
How can I visualize my data?

Use Litmus Edge. All data that appears in the **Explore** tab is available in Litmus Edge as well.
:::

:::ExpandableHeading
Are messages sent from Litmus Edge to Litmus Edge Manager Secure?

- We do security testing with every release.
- We prevent security issues through REST and MQTT protocols. They only use secure transports, such as TLS and DTLS. We do not support unencrypted transports between the two products.
- All security credentials established during cloud activation are securely stores on the Litmus Edge device and they are not exposed to the end user. It is impossible to alter these credentials after activation as long as physical security of the Litmus Edge gateway is maintained.
:::

:::ExpandableHeading
What is the difference between Litmus Edge Manager Alerts, Events, and Incidents?

- **Alert** - The Litmus Edge Manager Alerts feature allows a user to define notifications based on rules. Rules comprise a set of conditions that define an abnormal state of a device. For example: No data received from a device in more than two minutes, or the temperature went below 30 degrees. First, define Actions. Actions are the types of notifications, such as Slack or Webhook. Then, create a Trigger. A trigger is a combination of device tags, a set of rules, and an action. Once triggered, Litmus Edge Manager sends the alert notification to the defined destination. Alert notifications can be viewed on the Litmus Edge Manager dashboard as well as from email and third-party web applications, such as Slack. The Incidents tab on the projects page lists the alerts that were generated.
- **Event** - Events list the Litmus Edge Manager configuration activities that occurred for a project within a company. For example: Added a new project, or deployed a new device.
- **Incident** - If a device reaches an abnormal state according to the rules, then Litmus Edge Manager will create a new incident and send notifications. The *Incidents* tab lists the alerts that were generated. When a device returns to a normal state, the open incident will be closed and Litmus Edge Manager will send another notification with an incident resolved message.
:::

:::ExpandableHeading
How many Litmus Edge devices can Litmus Edge Manager manage?

As many as you want, purchased or installed on the Site.
:::

:::ExpandableHeading
How do I file a support ticket?

Download the support bundle and attach it with the support ticket that you create in the support portal in an email. To create a ticket and attach the support bundle, go to [https://litmus.io/contact](https://litmus.io/contact/). Click **Support Portal**.
:::

:::ExpandableHeading
What is the ESXi version minimum requirement for Litmus Edge Manager deployment?

We strongly recommend ESXi version 6.7 or higher.
:::

:::ExpandableHeading
What are the technical details I can verify before raising a support ticket?

Find out the following:

- The version of the Litmus Edge and the Litmus Edge Manager.
- The version of a component if it is not working.
- The type of license installed.
- If the network is properly configured.
- If the NTP/DNS settings are correct.
- If you are using the correct PLC driver and IP address.
:::

:::ExpandableHeading
How long is alert history retained within Litmus Edge Manager?

Alert history is not deleted. It is kept as long as there is space in the database.
:::

:::ExpandableHeading
What happens if the database for alert history becomes full?

After the alert history database becomes full, the system stops accepting data. In upcoming releases, we will develop a more sophisticated data life cycle management.
:::

:::ExpandableHeading
Do any security settings, such as active directory settings or certificate policies, get deployed when implementing a template on a Litmus Edge device from Litmus Edge Manager?

Not at this time. In upcoming releases, Litmus Edge Manager will be able to deploy LDAP/AD settings for various Litmus Edge devices.
:::

:::ExpandableHeading
Can I deploy selected flows from a template to a selected Litmus Edge device from Litmus Edge Manager?

Currently, a template consists of: PLC configurations (device settings and tags) and Flows.

You can select a mix of both types and create as many templates as you want.

These templates can then be uploaded from the Litmus Edge Manager Admin Console so that they are available to all the companies, or from the Litmus Edge Manager at a Company level so that they are available to all the Projects.

You can create different groups of Litmus Edge devices and select which template you want to deploy to a selected group of devices.

In upcoming releases, we will include CC as well as a few other configurations.
:::

:::ExpandableHeading
What BI tools can be connected to Litmus Edge Manager?

- Litmus Edge Manager supports the MySQL protocol for ClickHouse. If the BI tool supports MySQL, it can connect to ClickHouse. Some smart BI tools may use MySQL system tables that are not present in ClickHouse, so they should be tested.
- Litmus Edge Manager allows you to connect to the ClickHouse underlying database. See [https://clickhouse.tech/docs/en/interfaces/third-party/integrations/](https://clickhouse.tech/docs/en/interfaces/third-party/integrations/) to find the native connectors that ClickHouse uses.
:::

:::ExpandableHeading
Why am I unable to activate an edge device? How do I fix this?

When an activation fails, there will be an Activation Stage Message that reports the exact cause(s).  Here are some potential fixes:

- Ensure port 443 is opened.
- Ensure 51820/UDP is open for the Litmus Edge instance.&#x20;
- Ensure the Remote Access protocol is not blocked at all.
- Ensure the time synchronizations setting between the Litmus Edge Manager and Litmus Edge is working properly.
- For Docker-run Litmus Edge instances, check for `NETADM` capability.
- For \<3.2.0 Litmus Edge instances, ensure Remote Access modules on each host system (where the LE is installed) are operating properly.&#x20;
:::

:::ExpandableHeading
How to backup my instance for Litmus Edge Manager?

The backup process for LEM consists of a compressed file downloaded from the LEM Admin UI. The data is updated every 24 hours and is maintained on the server for seven days. See [https://docs.litmus.io/edgemanager/admin-console-backup ](https://docs.litmus.io/edgemanager/admin-console-backup)for details on how to backup LEM.
:::

:::ExpandableHeading
What is the difference between Litmus Edge and Litmus Edge Manager backup files, and how can they be restored?

LE backup files have a `.dat` file extension, while LEM backup files do not have any file extension. Both types of files are used to restore devices to their last backed-up state, but LE backups can only be restored through the LE user interface, while LEM backups must be restored through the LEM platform and cannot be uploaded directly to the LE UI.
:::


[title] Litmus Edge Manager 2.16.5
[path] Product Updates/2024/

:::hint{type="warning"}
**Important**: For a seamless upgrade experience in upcoming releases, it's crucial to upgrade to version 2.16.4 before making any further upgrades. Skipping the initial upgrade to version 2.16.4 may disrupt the upgrade process, and is therefore not recommended.&#x20;
:::

Release Date: April 29, 2024

## Enhancements and Features

| **Description**                                                                                                |
| -------------------------------------------------------------------------------------------------------------- |
| **Edge Devices**:<br />* Added logging for the deactivation process for an edge device in the API actions log. |

## Resolved Issues

| **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Dashboard**:<br />* Fixed issue with dashboard labels not correctly corresponding to edge devices in charts.&#x20;
* Fixed issue with dashboard page displaying unresponsive text on a smaller screen.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Security:&#x20;**<br />* Resolved vulnerabilities related to the following:
  - CVE-2024-1597: Fixes a vulnerability from the PostgreSQL JDBC driver, pgjdbc, that allows a user to inject SQL if using `PreferQueryMode=SIMPLE`.&#x20;
  - CVE-2021-38153: Fixes a vulnerability in Apache Kafka that used "Arrays.equals" to validate a password or key. &#x20;
  - CVE-2023-25194: Fixes a vulnerability in Apache Kafka Connect API that allowed authenticated operators to execute java deserialization gadget chains on the Kafka connect server.&#x20;
  - USN-6459-1: Fixes several security issues in MySQL. &#x20;
  - USN-6615-&#x31;**&#xFEFF;:&#x20;**&#x46;ixes several security issues in MySQL. &#x20; |
| **User Interface**:<br />* Fixed issue where the initialization page for nginx config wasn't shown during the first boot in the Litmus Edge Manager user interface.&#x20;
* Fixed issue for the upload UPD dialog box not closing after a successful upload.
* Fixed issue with site cards not displaying correctly after reloading the page.
* Fixed issue with % data on the Disk Usage graph not displaying correctly.                                                                                                                                                                                                                                                                                                |
| **Sites:**<br />* Fixed issue with `Error 403` message displaying when adding a second site with no image.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Support**:<br />* Fixed issue with `lem-admin` logs not being included in support bundles.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **Events**:<br />* Fixed issue with the incorrect system event description displaying.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |


[title] Litmus Edge Manager 2.16.7
[path] Product Updates/2024/

:::hint{type="warning"}
**Important**: For a seamless upgrade experience in upcoming releases, it's crucial to upgrade from version 2.16.4 to 2.16.7 before making any further upgrades. Skipping the initial upgrade to version 2.16.4 and then 2.16.7 may disrupt the upgrade process, and is therefore not recommended.
:::

Release Date: Aug 21, 2024

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).&#x20;

## Resolved Issues

| **Description**                                                                             |
| ------------------------------------------------------------------------------------------- |
| **Security:&#x20;**<br />* Updated Nginx configuration to address a security vulnerability. |


[title] Litmus Edge Manager 2.8.1
[path] Product Updates/2023/

Release Date: February 8, 2023

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Device Details:**<br />* Fixed an issue where the data connection (between a Litmus Edge and Litmus Edge Manager) was displaying incorrectly when the Litmus Edge Manager was upgraded.&#x20;
* Fixed an issue where Litmus Edge instances were shown as offline and cease the connection with the Litmus Edge Manager when the Litmus Edge Manager was upgraded. This occurred when the Litmus Edge Manager used a IPv6 remote network.&#x20; |

## Deprecated Components and Features

The following components/features will no longer be available:

| **Description**                                                                                   |
| ------------------------------------------------------------------------------------------------- |
| **Dashboard:**<br />* Performance content has been removed for this version of the Admin Console. |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                 |
| ------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Devices**:<br />* An edge device may incorrectly display `No active license` warning even though it does have a license. |
| **Network:**<br />* The error message for adding incorrect NTP server doesn't provide enough details.                           |




[title] Visualizing ClickHouse Data with Tabix: A Step-by-Step Guide
[path] How-To Guides/Litmus Edge Manager Admin Console Guides/

Tabix can be used to retrieve and display PLC data from a Litmus Edge Manager. You can then execute SQL queries onto the PLC data.&#x20;

# Before You Begin

- Ensure that the Clickhouse port 8543 \[`HTTPS`] is enabled. See the *Change port status state* option in [Clickhouse](docId\:MD6NfAz8rrs1p_JWPaIm-).
- Create a Clickhouse User. See the *Create User* option in [Clickhouse](docId\:MD6NfAz8rrs1p_JWPaIm-).
- Associate the created Tabix User with a Topic (Company / Project). See the *Add ACL* option in  [Clickhouse](docId\:MD6NfAz8rrs1p_JWPaIm-).

# Log into Tabix

To initially enter Tabix UI from the Litmus Edge Manager Admin Console, see the *Open Tabix* option in [Clickhouse](docId\:MD6NfAz8rrs1p_JWPaIm-). You can click the `HTTPS_CONN` button to automatically fill in the *Title* and *URL*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/B8p0kQUgGEJ1TwfcotN4f_image.png" size="80" width="1502" height="669" caption="Logging into Tabix" position="center" showCaption="true"}

- **Title**: By default, this is `HTTPS_CONN`.
- **URL**: `https://` followed by the IP address / domain name of the Litmus Edge Manager instance, followed by`:8543`.
- **User**: This is the Clickhouse username that was created from earlier and associated with a Topic.
- **Password**: This is the Clickhouse user's respective password that was created from earlier.
- **Mode**: Keep it as `Normal mode`.

Once you are successfully logged in, all the `Database Name`(s) that were created from an association between a *Clickhouse* user and *Topics (Company/Project)* will be available.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/i4uHJS9_vDzKGztJOCJDP_image.png" size="80" width="1920" height="866" caption="Database names same" position="center" showCaption="true"}

## Using Tabix

From there, you can view additional data and execute SQL queries in Tabix. For more information about Tabix, see [https://tabix.io/doc/](https://tabix.io/doc/).

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8oHACJq1_3hRXexRa3Xiq_image.png" size="80" width="1920" height="866" caption="Tabix UI" position="center" showCaption="true"}

\[1] **Access default sql query drop down menu:** Right click on one of the five tables below the Database name.

\[2] **Enter SQL query:&#x20;**&#x53;ee [Clickhouse SQL Reference](https://clickhouse.com/docs/en/sql-reference) for details

\[3] **Run current SQL**

\[4] **View SQL query results**

## Example SQL Query on Tabix

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2Z-7cvTI2jCPeetPU0Bk__image.png" size="80" width="1836" height="807" caption="Example Tabix UI" position="center" showCaption="true"}


[title] Litmus Edge Manager 1.9.2
[path] Product Updates/2020/

Release Date: December 28, 2020

## Enhancements and Features

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                              |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Resolved Issues:&#x20;**<br />* Updated single role for a user
* Updated multiselect feature as per supported edge features
* Fixed issue with expired licenses for edge system
* Improved error messages
* Minor UI fixes |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------------- |
| - Failure on all file upload of Litmus Edge on Litmus Edge Manager Admin Console on FireFox browser with self-signed certificate |


[title] Litmus Edge Manager 2.26.2
[path] Product Updates/2025/

Release Date: July 25, 2025

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).

## Resolved Issues

| **Description**                                                                                                                                                                                                                                                                                                                                                                               |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **APIs:**<br />* Fixed compatibility issue with the Litmus Edge Manager API bridge and certain Edge Marketplace APIs.                                                                                                                                                                                                                                                                         |
| **Marketplace:**<br />* Fixed issue where an **undefined** message occured when pushing Marketplace catalogs to specific edge device instances.
* Fixed issue where an error prevented saving component details after correcting initial input errors in *Marketplace*.
* Fixed issue where the *Application* table inaccurately counted deactivated Edge Devices in total devices displayed. |


[title] Visualize Child Device Data Using Grafana
[path] How-To Guides/Litmus Edge Manager User UI Guides/

You can visualize the data a device publishes to Litmus Edge Manager using Grafana.&#x20;

To receive the `Admin` role on Grafana Dashboards, see the *Toggle Administrator role for Grafana* *section* of [Edit a User Profile](docId\:KIJgyCJC1HGIm8mW7dVRK).

# Before You Begin

You must select the **RAW data** option for the Edge Device Data Storage setting (**Litmus Edge Manager User UI** > **Company&#x20;**> **Project&#x20;**> **Settings&#x20;**> **Edge Device Data Storage**). See [Project Settings](docId\:hmGSXiivMvDy4K43OanRv) to learn more.&#x20;

# Visualize Data in Grafana

**To visualize data in Grafana:**

1. Make sure your child device data in Litmus Edge Manager is displaying correctly. See [View Data from an Edge Device or a Child Device](docId\:E6vquqVSqtUfJIyhmFgOo).&#x20;
2. From the navigation panel, select **Features**.
   The *Features&#x20;*&#x70;ane appears.
3. Click the **Grafana Dashboards** tile.
   Grafana opens in a new browser tab.
4. From the Grafana navigation panel, click the **Dashboards** icon, and then select **Browse** from the menu.
   The **Dashboards** pane appears.
5. Click the **Samples** folder. This is available by default.
6. Click the **PLC Tag Browser link**.
   The graph loads.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3froepg91K-2wqMJeOovb_image.png" size="80" width="1920" height="914" caption="Grafana Visualized Data of Child Devices" position="center" showCaption="true"}

## Customize the Grafana Data Visualization

**To customize the Grafana data visualization**:

1. Use the **PLC Tag Name&#xA0;**&#x64;rop-down list to select tag(s) to display.
2. Use the **Device&#xA0;**&#x64;rop-down list to select the child device(s) to display.
3. From the top right corner, use the dashboard's toolbar options to change the graphs' time range and refresh interval.
4. From the **PLC Tag rates&#xA0;**&#x64;rop-down list, select the **Edit** optio&#x6E;**.&#x20;**&#x54;he **PLC Tag Browser > Edit Panel** pane appears.
   - Hover over the chart to view specific values.
   - From the bottom right corner, use the **Query&#xA0;**&#x74;ab to view and edit the various queries used in the chart.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Bfga-hgYv2ZxFEVqQ0kL0_image.png "Grafana: PLC Tag Browser > Edit Panel")


[title] Deploy an Application to Edge Devices
[path] How-To Guides/Litmus Edge Manager User UI Guides/

You can deploy an application to one or more edge devices.

After selectin&#x67;**&#x20;Launch App** for an application, see the information below on deploying the application.&#x20;

# Before You Begin

- Connect a repository. See *Add new repository&#x20;*&#x69;n [Registry Management](docId\:M6yzedYRAwwYDnLDtOQlZ).&#x20;
- Create a marketplace catalog for your application and then add the application. See *Add Catalog&#x20;*&#x61;n&#x64;*&#x20;Add or Import an application&#x20;*&#x69;n [Marketplace: Catalogs and Applications](docId\:gqoGt_Szm8rz9UdPhl2NL).
- Submit the application release you want to deploy. See *Submit Release&#x20;*&#x69;n [Manage Application Releases](docId\:FoZMtmXkxEI6Y-gPZAEvg).
- Ensure each of Litmus Edge devices have enough disk space to receive the Docker application release’s associated Docker image(s).

# Step 1: Select at least one online device

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gQVndUEszbybcLweTvEWb_image.png "Deploy an Application Step 1 : Select at least one online device")

\[1] **Filter by Groups**

\[2] **Select all displayed edge devices&#x20;**

\[3] **Select edge device**

\[4] **View Data | Control status**

**To select one or more edge devices:&#x20;**&#xD;

1. (Optional) From *Edge Devices* tab, select one or more groups.
2. Select one or more edge devices.
3. Click **Next**.

# Step 2: Application Settings

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N0Cef5Mx7bCZKcsXB9KyD_image.png "Deploy an Application Step 2 : Select application settings")

\[1] **Change Application Name**

\[2] **Change Application Release**

\[3] **Set Application Parameters:**  Unique set of parameters for each Application. See [Set Up Variables for an Application Release](docId\:HF5YyWh3bwhFi6m2jKxHt) for details on how set up the parameters for each application. The parameters will be applied to the application’s respective Docker image. When the Litmus Edge receives this application and its respective Docker image, these parameters will be passed as runtime variables to this application’s respective Docker container.

**To configure application settings:&#x20;**

1. Fro&#x6D;**&#xA0;***Apps Settings* tab, select a submitted release from the **Application Release** drop-down list.
2. (Optional) Make changes to other parameters, then click **Next**. Update options depend on the application selected.

# Step 3: Preview

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YU-0tFKleeGIy0iE4M1zD_image.png "Deploy an Application Step 3 : Preview")

\[1] **Review Device(s) names**

\[2] **Review Application Name and Release**&#x20;

\[3] **Review Parameter Settings**

**To preview application deployment configurations:&#x20;**

- From the **Preview** tab, review your selections, and then click **Launch**.

# Step 4: Result

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IARBE5msMbg61WI7L3jQ-_image.png "Deploy an Application Step 4 : Result")

\[1] **View Edge Device Details:** [Apps](docId\:pwQmgXarWxphcibP2z12U)&#x20;

\[2] **View** **Message**

**To finalize application deployment:&#x20;**

1. From the *Result&#xA0;*&#x74;ab, wait for values under the *Message column&#x20;*&#x74;o confirm successful deployment(s).&#x20;
2. Click **App Details**.&#x20;

The selected edge devices appear in the Edge Device list on the selected *Application Details* pane. The initial App Status for the deployed devices should be `PULLINGIMAGESTARTED`. Wait for the Docker image pull operation to complete or fail. A new App Status will be shown.&#x20;

# Step 5: Verify Deployed Application is Running

**To verify the deployed application is running:&#x20;**

1. From the *Application Details* pane, click the edge device **ID** link.
2. The selected application is displayed as running on the **Apps** tab in **Edge Device Details**. See [Apps](docId\:pwQmgXarWxphcibP2z12U).

If the App Status displays as a `LAUNCHERROR`. It indicates that the Docker image pull operation failed. Ensure that the Application’s respective Docker image registry location is a valid one (See [Set Up Docker Container Configurations for an Application Release](docId\:mebpl6tcgzj9NS2Cmk5cQ)) or your Litmus Edge instances can connect and access the registry location.&#x20;

# Step 6: Verify the Application on the Edge Device

For the edge device, check its [Containers](docId\:uASMDJ5ugFN_P79HOba3Y) section to verify the respective application container is running for the application.

[title] Litmus Edge Manager 2.8.0
[path] Product Updates/2023/

Release Date: February 7, 2023

## New Features

The following are new features introduced in this software release:

| **Description**                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------- |
| **License Server Management:**<br />* Offline activation now allows you to select and add two types of licenses (Core License or Add-on License). |
| **Network:**<br />* Redesigned *Network* to now also feature an *Interface* tab and an *NTP* tab.                                                 |

## Enhancements and Features

The following features and enhancements are included in this software release:

| **Description**                                                                                                                                                            |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Task List and Task Details**:<br />* Added additional multi-Litmus-Edge operations that can be monitored by Task List.                                                   |
| **Dashboard**:<br />* The Dashboard now also supports Processed/Failed tags metrics.                                                                                       |
| **Edge Device**:<br />* Edge Devices List now also show processed/failed tags metrics                                                                                      |
| **Edge Device Details**:<br />* This tab is now always available regardless of Marketplace license availability.&#x20;                                                     |
| **Edge Device Details**:<br />* Multiple Select is now supported to delete multiple backups.                                                                               |
| **Applications**:<br />* Application Details now display Device ID and Device Status.                                                                                      |
| **Marketplace**:<br />* For Application Releases, variables can now be configured as *private*. This will make the variable values display as asterisks during deployment. |
| **Admin Console Settings**:<br />* Support bundles now contain NTP Server Logs.                                                                                            |

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Asset Management**:<br />* Fixed an issue with dark/black images blocking turning certain user interfaces invisible.                                         |
| **Edge Device Details**:<br />* Fixed an issue with Litmus Edge Events not displaying.                                                                         |
| **License Server Management:**<br />* Fixed an issue with License Server not accepting additional tag licenses.                                                |
| **Admin Console Settings:**<br />* Fixed an issue where after changing base domain name, location http header was still referring to the old base domain name. |
| **Admin Console Settings:&#x20;**<br />* &#xD;Fixed issue where after upgrading to 2.7.0 Kafka SSL keystore became broken.<br />&#xD;                          |
| **Security:**<br />* Resolved a vulnerability related to CVE-2022-4116, CVE-2022-32221.                                                                        |

## Deprecated Components and Features

The following components/features will no longer be available:

| **Description**                                                                                            |
| ---------------------------------------------------------------------------------------------------------- |
| **Edge Device Details**:<br />* Metrics are not available for Litmus Edge versions below 3.2.0 and 21.5.0. |
| **Edge Device Details**:<br />* The *Explore* tab has been removed.                                        |
| **Integration**:<br />* When adding an ACL, lwm2m topics are no longer available.                          |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Login**:<br />* Incorrect LEM System/User Local time may break authentication.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Edge Devices**:<br />* Device list may be empty momentarily as it is actually loading.&#x20;
* An edge device may incorrectly display `No active license` warning even though it does have a license.
* An edge device may incorrectly display Data status.
* Litmus Edge instances may be shown as offline and cease the connection with the Litmus Edge Manager when the Litmus Edge Manager was upgraded. This occurred when the Litmus Edge Manager used a IPv6 remote network.&#x20; |


[title] Litmus Edge Manager 2.22.4
[path] Product Updates/2024/

Release Date: Dec 12, 2024

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).&#x20;

## Enhancements and Improvements

| Description                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Licenses:**<br />* The system now displays an error message when the selected quantity of Edge devices exceeds the key availability for certain SKUs.                               |
| **Alerts:**<br />* You now have updated PagerDuty trigger action field within the *Edit Action&#x20;*&#x64;ialog box, where field name `Token` has been renamed to `Integration Key`. |

## Resolved Issues

| Description                                                                                                                            |
| -------------------------------------------------------------------------------------------------------------------------------------- |
| **Licenses:**<br />* Fixed issue where the *License Summary&#x20;*&#x73;creen incorrectly displayed expired Add On licenses as Active. |
| **Security:**<br />* Fixed issue where the MPCS registry list request returned a `502 error` due to a nil interface conversion.        |


[title] Litmus Edge Manager 2.10.2
[path] Product Updates/2023/

Release Date: May 10, 2023

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                        |
| ---------------------------------------------------------------------------------------------------------------------- |
| **Marketplace:**<br />* Fixed an error where Catalogs cannot be added for a newly installed Litmus Edge Manager.&#x20; |
| **Security:**<br />* Resolved a vulnerability related to CVE-2023-20873.                                               |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Templates:**<br />* When uploading an invalid Parameterized Template (*.zip* folder), it will yield a successful result message but won't add the template.&#x20; |
| **Edge Devices:**<br />* Expired site-based licenses do not display their expired status.&#x20;                                                                     |
| **Alerts:**<br />* Metrics alerts for Connector online status may not operate properly.                                                                             |
| **Upgrade:**<br />* Users are able to downgrade Litmus Edge Manager to an earlier version.                                                                          |




[title] Resources
[path] /


[title] Manage Site License Allocation
[path] How-To Guides/Litmus Edge Manager Admin Console Guides/

You can manage site licenses and control data point allocation across companies and projects using your Admin Console. A site license provides a shared pool of data points that all connected Litmus Edge instances can access, regardless of the company or project they belong to, as long as the total number of data points used does not exceed the site license limit.

The [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O) tab in Litmus Edge Manager Admin Console allows for sub-allocating data points from this shared pool to specific projects, providing more granular management and preventing overconsumption by any single project.&#x20;

This feature improves the flexibility and control over data point usage, ensuring fair allocation and distribution.&#x20;

:::hint{type="warning"}
**Important Notes:**&#x20;

- The license allocation feature is exclusively for site licenses and not for node-locked licenses.
- Even if a data point allocation has expired, the project might still be able to use more data points than the expired allocation if there are still available data points in the overall site license pool.
:::

# User Scenario

A manufacturing company holds a 1000-point site license and manages four key projects. To ensure effective resource allocation, the company has designated 100 points for the North project, 100 points for the South project, 100 for Research and Development (R\&D), and 100  for Quality Assurance (QA). You can also specify any expiry date for the allocation of data points.

Before You Begin


Ensure that you have:

- A valid site license activated in Litmus Edge Manager.&#x20;
- Identified the company and project for which you want to allocate data points.

# Step 1: Add a Company

Add a new company with a suitable name or select the appropriate company from your organization.&#x20;

See [Add a Company](docId\:QS1mbPG-tWRCyAAWe5Iya) for more details.

# Step 2: Add a Project

Add four different projects with the following names: *NorthProject*, *SouthProject*, *RAD*, *QA.*

See [Add a New Project](docId\:Hd7WK8HYKXXJVflDfIgky) for more details.

# Step 3: Add an Edge Device(s)&#x20;

See [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) for more details.

# Step 4: Accessing the License Allocation Page

1. Navigate to the **Litmus Edge Manager Admin Console** > **License Server Management**.&#x20;
   See [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O) for more details.
2. Click on the **Allocation&#x20;**&#x74;ab.
   On the **Allocation** page, you can view the current data point allocations.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/R09FTo4V2FtrQtmNRnM2r_image.png" size="80" width="1327" height="543" position="flex-start" showCaption="false" indent="2"}

# Step 5: Allocating Data Points to Project(s)

1. On the **Allocation&#x20;**&#x70;age, click the **Add allocation (+)** to initiate a new data point allocation.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wvgGqzHKUH6tRb_BEzVvA_image.png" size="72" width="1863" height="892" position="flex-start" showCaption="false" indent="2"}

2. The **Edit Allocation** dialog box appears. Take the following actions:
   - **Company / Project:&#x20;**&#x43;hoose the company that contains the project for which you want to allocate data points.&#x20;
     - In our case, select the company with all the projects we added in *Step 2&#x20;*&#x61;bove: **NorthProject, SouthProject, RAD, and QA.**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CQeM04Ujco08GjcF2fPgZ_image.png" size="40" width="397" height="323" position="flex-start" showCaption="false" indent="4"}

:::Paragraph{listStyleType="disc" listStart="2" indent="2"}
**Allocated Data Points:&#x20;**&#x45;nter the desired number of data points you want to allocate to the selected project in the designated field.
:::

:::Paragraph{listStyleType="disc" listStart="3" indent="2"}
**Expiry Date:&#x20;**&#x53;et an expiry date for the data point allocation.&#x20;
:::

:::Paragraph{listStyleType="disc" indent="3"}
Click on the calendar icon or enter the date to specify when the allocation should expire.
:::

:::Paragraph{listStyleType="disc" listStart="4" indent="2"}
Click **Save**.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iah3xSkoVvcUnZouHPsdo_image.png" size="40" width="398" height="321" position="flex-start" showCaption="false" indent="3"}

3. The new allocation will be visible in the allocations table. You can see the allocated data points, the expiry date, and how many data points are currently in use within that project.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QaphkPojkgiBRZ7YiDANH_image.png" size="70" width="1179" height="855" position="flex-start" showCaption="false" indent="2"}

# Step 6: Managing Existing Data Point Allocations

On the **Allocation&#x20;**&#x70;age, you have several options to manage existing data point allocations via the action tab associated with each allocation:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Q6Qu7nE0C6WH92l3EyllH_image.png" size="80" width="1867" height="589" position="flex-start" showCaption="false"}

| Action                           | Details                                                                                                          |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| \[1] **Search**                  | Use the search functionality to find specific allocations based on company, project, or other relevant criteria. |
| \[2] **Export**                  | Click this option to export the current allocation data in a CSV format.                                         |
| \[3] **Refresh**                 | Click the refresh list icon to update the allocation table and display the most current information.             |
| \[4] **Edit Allocation**         | Click the edit option to modify the expiry date or increase the number of allocated data points for a project.   |
| \[5]**&#x20;Delete Allocation**  | Click the delete option to remove the data point allocation that you have set for a project.                     |




[title] Manage Certificates with DigiCert IoT Trust Manager Integration
[path] How-To Guides/Litmus Edge Manager Admin Console Guides/

:::hint{type="info"}
**Note**: The DigiCert IoT Trust Manager integration is available for Litmus Edge Manager 2.21.0 and later.
:::

In this use case, you will integrate DigiCert IoT Trust Manager with Litmus Edge Manager (LEM) to manage certificates for all your edge devices.&#x20;

- First, you will set up the DigiCert IoT Trust Manager Integration from your Litmus Edge Manager Admin Console.&#x20;
- Then, you will configure the Certificate Authority (CA) for both Litmus Edge Manager and Litmus Edge (LE) devices.&#x20;
- Finally, you will verify if the DigiCert certificates are applied to your Litmus Edge devices.

# Before You Begin

- Ensure you have at least one Edge device activated in your Litmus Edge Manager. See [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) for more information.
- Ensure you have access to the DigiCert IoT Trust Manager to obtain the required configuration parameters. If you are not a DigiCert IoT Trust Manager customer, visit [https://www.digicert.com/device-trust-manager](https://www.digicert.com/device-trust-manager) to sign up.&#x20;

# Step 1: Access DigiCert IoT Trust Manager Integration&#x20;

**To access the DigiCert IoT Trust Manager integration pane:&#x20;**

1. Log in to the Litmus Edge Manager Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the Navigation panel, select **Integration**.
   Integration's *Kafka* pane by default appears.
3. From Integration's navigation sub-panel, select **DigiCert**.
   Integration'&#x73;*&#x20;DigiCert&#x20;*&#x70;ane appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uvNWw2-L0ozYiP8jAP56j_image.png "DigiCert IoT Trust Manager Integration pane")

You will see three fields for configuration: **URL**, **Profile ID**, and **Passcode**. By default, placeholder values will be in these fields. In the next step, you will retrieve these configuration parameters from the DigiCert IoT Trust Manager.

# Step 2: Set up Integration with DigiCert

**To retrieve the URL, Profile ID, and Passcode parameters from the DigiCert IoT Trust Manager, follow the steps below:**

1. Open a new browser and log in to your **DigiCert ONE&#x20;**&#x70;latform at [https://one.digicert.com.](https://one.digicert.com/)
2. Select *IoT Trust Manager* from the switcher icon at the top right corner.&#x20;
3. From the navigation panel, select **Enrollment configurations**.
   The *Enrollment profiles* page opens.
4. Click the desired **Enrollment profile name**. The *Enrollment profile details* page appears.
   **Note:**&#x20;
   1\. For this use case, the enrollment profile is already created. See [Create an enrollment profile](https://docs.digicert.com/en/iot-trust-manager/enrollment-profiles/create-enrollment-profiles/create-an-enrollment-profile.html) to learn more.&#x20;
   2\. Set up the enrollment profile method for REST API, as it is the integrated method with Litmus Edge Manager.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0_-JVj8Bz-mOG1qsASbjr_image.png" size="60" width="771" height="458" position="center" caption="Certificate enrollment methods dialog box" showCaption="true"}
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UNVpEkSuSgUHShwUnahJU_image.png "Enrollment profiles page")
5. Configure the keypair generation settings to be used.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qMr3rarFgo9vS1zmp3wY2_image.png" size="60" width="690" height="324" position="center" caption="Keypair generation settings" showCaption="true"}
6. After creating the Enrollment Profile, edit the enrollment profile. Scroll to the bottom of the Enrollment Profile details page and create a passcode. Copy and save this passcode to a secure location. See also [Enrollment Passcodes](https://docs.digicert.com/en/iot-trust-manager/enrollment-passcodes.html) to generate the passcode for authenticating to the REST API.&#x20;
7. You can retrieve the *URL*, *Profile ID*, and *Passcode* parameters from the *Enrollment profile details* page as follows:
   - **URL:** This is the DigiCert server URL. Navigate to *API&#x20;*&#x73;ection and copy **Request URL** link.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/y7za2LNooaM6FjE6gUfdS_image.png "Enrollment profile details page - API section")
   - **Profile ID:&#x20;**&#x43;opy this from the *Enrollment profile ID*.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xtJeJ4zAPemP3eAdzaUwr_image.png "Enrollment profile details page")
   - **Passcode:** This was generated and shown when you created the passcode above.&#x20;
8. Enter the retrieved parameters into the *DigiCert&#x20;*&#x49;ntegration fields in the Litmus Edge Manager Admin Console.
9. Click **Save**.
   A confirmation message will appear indicating that the DigiCert settings are saved.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OCv2nla0_iZHk2KAKrFoZ_image.png" size="80" width="1472" height="1318" position="center" caption="DigiCert Integration Page" showCaption="true"}



# Step 3: Set up Certificate Authority for Litmus Edge Manager

**To set up the certificate authority for Litmus Edge Manager:**

1. From the Litmus Edge Manager Admin Console, navigate to **Settings&#x20;**>**&#x20;Domain/SSL**.
2. From the *SSL settings* panel, choose the **DigiCert&#x20;**&#x6F;ption.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N7YsiL41qOa36WfyIqH6k_image.png "Domain/SSL Settings Page")
3. Click **Save**.
4. The *Page Reload Required* dialog box appears. Click **Yes,&#x20;**&#x61;nd refresh the page.
   SSL settings are saved and the page is reloaded after updating the certificate settings for proper system functioning.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3ns5W8acqQlgodf0s-9N7_image.png "Page Reload Required dialog box")

# Step 4: Issue a certificate for Litmus Edge from Litmus Edge Manager User UI

**To issue a certificate for Litmus Edge device from Litmus Edge Manager User UI:**

1. Log in to Litmus Edge Manager and navigate to **Certificates&#x20;**&#x74;ab.
   The list of current certificates for your edge devices along with their details appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wor5cS1D7MATTjOAUYzuD_image.png "Certificates tab")
2. To issue a new certificate, click the **Action&#x20;**&#x62;utton for an edge device and selec&#x74;**&#x20;Issue a new certificate**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GGqFNZ4h6Usw-8rHlAT6-_image.png "Certificates Management pane")
3. From the *Issue a new certificate&#x20;*&#x64;ialog box, configure the following:
   - **Certificate Authority:** From the dropdown menu, select **DigiCert IoT Trust Manager&#x20;**&#x61;s the new certificate authority.
   - (Optional) Keep default settings for the other fields.
4. Click **ISSUE CERTIFICATE**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xPkOg_15fwsV_wEmMcPSi_image.png" size="60" width="539" height="513" position="center" caption="Issue a new certificate dialog box" showCaption="true"}

The certificate has been added to the Litmus Edge device along with the issuer details.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1xbvMltid-RiwVldShWP2_image.png "Certificates tab")

# Step 5: Verify Certificate for Litmus Edge Device

**To verify that the certificate has been added to the Litmus Edge device:**

1. Navigate to the specific edge device instance where you applied the certificate and log in.
2. Go to **Systems&#x20;**> **Network&#x20;**&#x61;nd find the *Device Certificates* panel.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_zwi_rodp7M3kokbX3fqJ_image.png "Systems > Network  page")

You can verify the certificate details and ensure that the new certificate has been added.

:::hint{type="info"}
**Note:** Refresh the screen if necessary to see the updated certificate and issuer details. Reboot is required to see the certificate update on browser tab.&#x20;
:::


[title] Litmus Edge Manager 2.26.1
[path] Product Updates/2025/

Release Date: May 21, 2025

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).&#x20;

## New Features

| Description                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Zerotouch Activation:**<br />* You can now manage *Zerotouch&#x20;*&#x63;onfigurations, generate and download *ZT bundles*, with logging for all actions.&#x20;
  - Supports only public Docker registries in initial release.
* You can now enable the **Default Router** checkbox in the *Static IP&#x20;*&#x73;ection of *the Add Zerotouch Configuration&#x20;*&#x64;ialog box when configuring static gateways. |
| **Edge Device Metrics Sync Interval:**<br />* You can now configure the Litmus Edge metrics sync interval via project, instance and edge devicesettings.                                                                                                                                                                                                                                                               |
| **Asset Management:**<br />* Enhancements have been made to **Asset Management**, including Digital Twin model synchronization, model versioning,  upgrade capabilities for linked instances.                                                                                                                                                                                                                          |
| **Daily Digest:**<br />* Litmus Edge Manager now includes a feature to send periodic notification updates with key statistics on Edge devices.                                                                                                                                                                                                                                                                         |
| **Site License Allocation:** <br />* The new License Allocation tab enables the distribution of licensed data points from a single site license across multiple projects.                                                                                                                                                                                                                                              |

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Web UI:**<br />* Litmus Edge Manager Web User Interface and Admin Console now feature a newly adopted branding for the login page.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Activation:**<br />* The activation configuration now has the option to provision *AWS IoT SiteWise&#x20;*&#x63;onnector during activation.
* You have updated list of activation requests that includes an optimized summary of all action items.
* You will see modified *Activation Stage&#x20;*&#x65;rror messages with the stage name included.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **Digital Twins:**<br />* The following data types are supported for Static Attributes:
  - Supports the import and export of attributes in a CSV file.
  - Displays the total count of added attributes.
* The following data types are supported for *Dynamic Attributes*:&#x20;
  - JSON
  - String
  - Number
  - Boolean
  - Array
* The *Hierarchy* is renamed to **Schema**.
* Youhave versioning support, and the Digital Twins model version is displayed next to the model name.
* You have support for *JSONata* scheme types in transformations, allowing for flexibility in data manipulation operations and improved integration with complex data structures.
* Asset management configurations are now part of Litmus Edge Manager backup.
* Static and dynamic attributes can now support up to 2,000 attributes.
* Digital twin events are now accessible through the web interface.
* The model name can only include the following characters: uppercase and lowercase letters (A-Z, a-z), numbers (0-9), hyphens, and underscores. |
| **Applications:**<br />* Marketplace applications updates now ensure the old version remains active until the new version is fully downloaded before stopping the existing container.
* The **Publisher&#x20;**&#x6E;ame column is added to the *Applications&#x20;*&#x74;able.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Central Certificate Management:**<br />* You can now bulk deploy renewal certificates to edge devices.
* You can set up notifications through alerts for expired certificates.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Central AI/ML Model Management:&#x20;**<br />* The Edge device status is now visible on AI/ML model list page for better insight before applying models.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **Alerts:**<br />* You will now receive updated *Webhook* alerts in JSON format.
* You now have updated *PagerDuty* trigger action field within the *Edit Action&#x20;*&#x64;ialog box.
* The email content for Alerts is updated to show device status changes. It will now display **CONNECTED** when online and **DISCONNECTED&#x20;**&#x77;hen offline.
* You can now set up alerts for expiring API tokens, which will notify you of the token details and the number of days until expiration.&#x20;
  - This can be configured using a new option available called instance metrics within the trigger settings.                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Marketplace Catalog:**<br />* You will see detailed error messages providing necessary information in the *Marketplace Catalog* backend errors occur.
* You will now see the user name associated with each event displayed below its message.
* You can upgrade the public marketplace catalog to support new market catalog apps.
* You can navigate between the *Catalog&#x20;*&#x61;nd *Events&#x20;*&#x70;ages using a new dropdown section.
* You can track events in the *Marketplace Catalog*, including actions for catalogs, applications, registries, and releases.
* You can encounter an `unexpected compose error` during release submission due to parsing issues in configuration settings.
* The submitted release tiles now display a timestamp in **UTC&#x20;**&#x66;ormat.
* You have the *Publisher Name* field (up to 64 characters) in the application card tile and application page.                                                                                                                                         |
| **Settings:**<br />* You will be prompted with a *Removal Confirmation* dialog box before deleting the upgrade file.
* You can now use the updated backup feature for the Litmus Edge Manager:
  - API and CI/CD integration
  - Bulk deletion of backup files stored****                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                   |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **User Interface:**<br />* Fixed issue with long company and project names overlapping with the edit button on the project tile.                                                                                                                                                                                              |
| **Central Licenses Management:**<br />* Fixed issue with *License Summary* page, where the **back** navigation from an individual device routes to the Edge Devices page instead of the expected Central License Management landing page.                                                                                     |
| **DeviceHub:**<br />* Fixed issue where *INCIDENT RESOLVED* alerts were incorrectly triggered due to disrupted MQTT connections.                                                                                                                                                                                              |
| **Applications:**<br />* Fixed issue where Prometheus consumed excessive memory in certain deployments.                                                                                                                                                                                                                       |
| **Alerts:**<br />* Fixed issue where *Incident Record&#x20;*&#x6E;ow displays when a new trigger and severity are set to info.&#x20;                                                                                                                                                                                          |
| **Events:**<br />* Fixed issue where admin token creation event displayed incorrect name and inaccurate expiration.
* Fixed issue where the **INCIDENT RESOLVED** alert occassionally triggered inaccurately when the MQTT connection was lost, producing a misleading alert status.                                          |
| **Grafana Dashboard:**<br />* Fixed issue where the friendly name was not displayed in the Grafana dashboard dropdown.                                                                                                                                                                                                        |
| **Cloud Management:**<br />* Fixed issue where an incorrect delete icon displayed in the action menu in **Cloud Management** > **Types**.                                                                                                                                                                                     |
| **Edge Management:**<br />* Fixed issue where newly added child devices may not have appeared in the device list after upgrading, and *Metrics Sync&#x20;*&#x73;tatus did not update as expected.<br />**Templates:**<br />* No notification appears when creating a template from a Litmus Edge device with a trial license. |
| **Security:**<br />* Updated the Alpine version to the latest release.
* Resolved the following vulnerabilities:
  - CVE-2024-38821
  - CVE-2016-1000027
  - CVE-2025-24813
  - CVE-2024-24790
  - CVE-2024-24790
  - CVE-2024-40896                                                                                          |
| **Support:**<br />* Fixed issue with syslog message size limit causing exceptions.
* Fixed issue where changing SSL settings in the Admin Console triggered an unknown Http failure response error when saving.                                                                                                               |

## Deprecated Components and Features

| Description                                                                     |
| ------------------------------------------------------------------------------- |
| **Edge Devices:**<br />* The *Data&#x20;*&#x74;ab has been removed from the UI. |

# Available with AWS, Azure, K8s Deployment

## What's New ?

| Description                                                                                                                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Litmus Edge Manager on K8S:**<br />* Litmus Edge Manager now supports deployment and management on Kubernetes.                                                                             |
| **Litmus Edge Manager AWS Marketplace Listing:**<br />* Litmus Edge Manager is now available as a cloud-hosted AWS application, offering AWS users a consumption-based, pay-as-you-go model. |

## Enhancements and Improvements

| Description                                                                                                                                               |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Azure and AWS deployed LEM Dashboard Overview:**<br />* LEM dashboard shows tags consumption and provides the CSV report including all License clients. |


[title] Browser Issues
[path] Troubleshooting/

The following sections describe common browser-related technical difficulties may occur when trying to access Litmus Edge and how troubleshoot them. The difficulties that may arise includes the following:

- Browser Access Restrictions
- Browser Cache Issues

# Browser Access Restrictions

Browsers typically display one of the following two warnings when trying to access Litmus Edge:

- Your connection is not private
- You connection is not secure

Litmus Edge uses self-signed certificates by default. This type of warning is expected when using a self-signed certificate in a local environment.

You can bypass browser warnings on Google Chrome and Mozilla Firefox as follows:

- **Google Chrome**: Click **Advanced**, and then click **Proceed to \<website> (unsafe)** at the bottom of the page.
- **Mozilla Firefox**: Click **Advanced**, and then click **Add Exception...** at the bottom of the page. Click **Confirm Security Exception** on the pop-up window

The following table details some of the reasons for browser access restrictions and recommended steps to resolve the issues.

| **Possible Causes**                          | **Recommended Steps**                                                                                                                                           |
| -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Needs SSL Certificate from trusted authority | Litmus Edge includes a self-signed certificate, but you can add additional certificates. See [Certificates](docId\:s0dXZeU8mTAywyQsYEDyj) for more information. |
| Wrong date and time on computer/device       | Verify that the date and time are correct on the device.                                                                                                        |
| Browser cookies and cached files             | This usually only occurs in the Chrome browser. Clear the cookies and cache.                                                                                    |
| Anti-virus software block SSL connection     | Try disabling the anti-virus software.                                                                                                                          |
| DNS caching                                  | Clear the DNS cache using the ipconfig command in Windows:<br />`ipconfig `/ `flushdns`                                                                         |
| Owner has configured website improperly      | This usually only occurs in the Firefox browser. Add the Litmus Edge IP address to the browser's website exceptions list to proceed.                            |

# Browser Cache Issues

Litmus Edge and Litmus Edge Manager applications use a web browser as their main interface. For optimized loading, web browsers keep a cache of files and images for recently visited websites. This avoids having to download the pages each time you visit a page.

This optimization can sometimes cause problems when the browser reads from its cache instead of downloading the latest page. This can cause unexpected behavior such as the following:

- The page looks partially loaded.
- The page looks like it has loaded but the page has strange or unusual formatting.
- Images on the page are in the wrong places.
- Strange login and license activation issues.

## Clear the Browser Cache

You can easily fix cache issues by clearing the cache. Here are some easy ways to clear a browser’s cache. These techniques should work on all Windows and Mac browsers.

- Hold down th&#x65;**&#xA0;SHIFT key while refreshing the page**. This forces a refresh with an empty cache on all browsers.
- Press the **CTRL + SHIFT + R** key combination to force an empty cache refresh. For **Safari**, press **CMD + R**.
- Hold th&#x65;**&#xA0;CTRL + SHIFT + DELETE** key combination to open the clear browser history menu. For **Safari**, press **CMD + SHIFT + DELETE**. Make sure to choose the cache option and the largest time range possible to clear the entire cache.

## View and Clear Browser History

Often, clearing the browser history can help fix issues. Press **CTRL + H** to view the history menu. You can clear the browsing data from this window or select a previous page from the list. For Safari, press **CMD +H** key combination to view the history menu.


[title] Litmus Edge Manager 2.31.3
[path] Product Updates/2026/

Release Date: May 6, 2026

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                            |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Asset Management:**<br />* Dynamic attribute data types are now consistently stored and displayed in lowercase in the database and APIs. Existing models with inconsistent data type casing are automatically migrated. Backend validation now enforces correct data type values when saving models. |

## Resolved Issues

| Description                                                                                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Asset Management:**<br />* Fixed issue where a new model update could not be applied from Litmus Edge Manager to a Litmus Edge device even though an older version of the model was deployed on the device. |
| **System:**<br />* Addressed vulnerabilities in third party components.                                                                                                                                       |


[title] Generate and Manage Daily Digest
[path] How-To Guides/Litmus Edge Manager Admin Console Guides/

You can set up regular email updates to monitor the performance of your Litmus Edge. These daily digests will provide insights into PLC or any device connected with the driver.

# Before You Begin

- Ensure to set up your SMTP [Email](docId\:GcxRXKR3-oc_O9zqz7Jke) settings in Litmus Edge Manager for the emails to be sent. If these settings are not configured correctly, a warning message will appear.
  ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ul_PW_ihdBw6P7hRR5Flz_image.png" size="68" width="1252" height="600" position="center" showCaption="false"}
- Read more about the list of information you can choose to send in email [Reports](docId:5aRrj1KnuwljUxwWG5GZZ) in Litmus Edge Manager.

# Email Report Contents

The email reports will include the performance statistics you choose from the *Report&#x20;*&#x73;ection in your *Admin Console&#x20;*&#x73;ettings. Here is a sample of the **Report** with key sections included:

:::hint{type="info"}
**Note:&#x20;**&#x54;he date and time of the report's generation will be displayed in the email report.
:::

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/Q116WJTAr1sefeVNvMCF9-qyDzCclzdRebBATJGqo_e-20250409-200424.pdf" label="Litmus Email.pdf"}

# Step 1: Access Report Settings

To find the settings, follow these steps:

1. Navigate to **Litmus Edge Manager Admin Console**.   &#x20;
2. Go to **Settings** > **Reports** section from the left menu.
3. In the *Reports* section, you will see options for **Daily digest settings** and **Subscription.**

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8hbiyllLozzwVkpatBZs2_image.png)

# Step 2: Manage Report Subscribers

The **Subscription&#x20;**&#x73;ection lets you manage who will receive the email.&#x20;

1. You can **Filter&#x20;**&#x74;he list of subscribers to find specific ones.
2. To add a new subscriber, click the **"+"&#x20;**&#x69;con.&#x20;
   - The *Add Subscriber* dialog box appears where you need to enter the **Subscriber Name** and **Subscriber Email**.&#x20;
   - Then click **Add**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/s3Nweazysqw8xHlUeuWWl_image.png" size="40" width="355" height="231" position="center" showCaption="false"}
3. To refresh the list of subscribers, click the **Refresh&#x20;**&#x69;con.&#xD;*&#xD;*
4. In the **Action&#x20;**&#x63;olumn (three dots), you have the following options:
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rvTkv2LVYW1KepCgsKDS2_image.png" size="40" width="313" height="341" position="center" showCaption="false"}
   - **Edit Subscriber:** To change the name or email address of a subscriber.
   - **Enable Subscriber:&#x20;**&#x54;o include this subscriber in the email reports.&#x20;
     The *Status* will show as **Enabled** (in green).
   - **Disable Subscriber:** To stop this subscriber from receiving email reports.&#x20;
     The *Status* will show as **Disabled** (in orange).
   - **Send Report:** To send an email report to this specific subscriber immediately.
   - **Delete Subscriber:** To remove this subscriber from the list.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/u8DJKU9YBYIJ-iyalfYzS_image.png)

# Step 3: Set Up the Report (Daily Digest)

The **Daily digest settings** area is where you choose what information you want to send in your email reports and how often.

1. Turn on the reports by clicking the **Enable Report** toggle.
2. Choose how often you want to receive the reports under **Period Frequency**.&#x20;
   You can choose:
   - **Daily:** You will get a report every day at **00:00:00&#x20;***Coordinated Universal Time (UTC)*.
   - **Weekly:&#x20;**&#x59;ou will get a report every **Monday&#x20;**&#x61;t **00:00:00&#x20;***UTC*.
   - **Monthly:&#x20;**&#x59;ou will get a report on the first day of each month at **00:00:00&#x20;***UTC*.
   - Note that the specified times are based on the **VM Timezone**, which is typically aligned with *Coordinated Universal Time (UTC)*.
3. You can choose to include all available information in the reports by clicking **Enable All Metrics**. See [Reports](docId:5aRrj1KnuwljUxwWG5GZZ) for the metrics you can choose to send in reports.
4. If you only want specific information, you can turn off *Enable All Metrics* and then select the metrics you want to include.&#x20;
   See [Reports](docId:5aRrj1KnuwljUxwWG5GZZ) for the metrics you can choose to send in reports.
5. After selecting the information you want, click **Save** to save your settings.
6. You can also click **Send Report** to send an email report immediately to the subscribers.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qlhU7lI1xgj2dQU-wr8WD_image.png)

:::hint{type="success"}
**Important Notes:**

- The information in the reports may change based on your data lifecycle policy.
- If you are not receiving the email reports, check your spam or junk email folders.
- Make sure the subscriber's email address is correct and that the **Status&#x20;**&#x69;s *Enabled* for that subscriber.
:::


[title] Litmus Edge Manager 2.31.0
[path] Product Updates/2025/

Release Date: December 1, 2025

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).

## New Features

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Asset Management:&#xFEFF;**<br />* This release introduces **Viewer** and **Administrator&#x20;**&#x61;sset management roles for Digital Twin functionality in Litmus Edge.&#xA;Visibility of edge devices is limited to the companies that you have access to. Assign roles in Litmus Edge Manager Admin Console by navigating to **Settings** > **Users**, selecting a user, and scrolling to **Asset Management Roles**. With the new roles:
  - The **Viewer** role provides view access to Digital Twins.
  - The **Administrator** role provides full access to Digital Twins.
* Now you can define parameters for dynamic attributes in Digital Twin models. In Litmus Edge, users can update parameter values by instance to define the topic for each dynamic attribute.
* Edge devices now synchronize automatically when a Digital Twin model is updated. |
| **Litmus Edge Manager and Git Integration**<br />* Now you can connect Litmus Edge Manager with an external version control system (GitHub, GitLab, or Azure DevOps) and store, manage, and track changes to Litmus Edge template files. Configure the integration in the Admin Console in **Integration** > **Git Provider**.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **AI Chat Agent:**<br />* Added an AI chat agent that enables asking questions in natural language based on daily digest report data. For example, ask 'How many edge devices are online' or 'What's the current disk usage and available space'.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                                                                                                  |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Devices:**<br />* LEM now displays a warning banner when disk space is low and pauses the ingestion of new messages. Previously, notifications only displayed in LEM Admin Console.
* LEM now provides better handling and error messaging during image uploads when disk space is low.                                                                               |
| **Applications:**<br />* You can now export Marketplace catalogs that belong to specific companies.                                                                                                                                                                                                                                                                          |
| **Events:**<br />* System events are now available in the Admin Console. Now you can filter and view both general and project-specific system events.
* Additional LEM and LE events are now available in **Company** > **Events**. This includes System&#xD;, Licensing&#xD;, Digital Twins, Cloud Storage&#xD;, Analytics&#xD;, Flows&#xD;, and DataHub event information. |
| **Alerts:**<br />* Now the name of the trigger that you define displays in the **Trigger** column in **Alerts** > **Incidents&#x20;**&#x69;nstead of the trigger ID. The helps you easily identify the trigger that caused the incident or alert.                                                                                                                            |
| **Settings:**<br />* Now you can bypass strict certificate validation for SMTP servers with a new checkbox in **Settings** > **Email&#x20;**> **Email Settings**. Enable to specify a mail server as trusted when the server uses a self-signed or custom certificate.                                                                                                       |
| **Keycloak:**<br />* Admin users now display in the Admin Console UI when they are members of a team in **Settings** > **Users** > **Members**.                                                                                                                                                                                                                              |
| **SSL Certificates:**<br />* Error handling is improved for invalid root CA certificates. Now an error message displays in **Settings** > **Domain/SSL** > **SSL settings** when adding a valid SSL certificate and a key file with an invalid root CA certificate file under **User Defined**.                                                                              |
| **Licenses:**<br />* Central License Management now displays an **Edge Device Status** (Online or Offline).                                                                                                                                                                                                                                                                  |
| **LEM Backups:**<br />* Backups are now compatible between Litmus Edge Manager virtual machines and Kubernetes deployments. Note that backups must be performed from the same LEM version.                                                                                                                                                                                   |
| **UI:**<br />* Now the displays company name instead of company code in various locations in the Admin Console.                                                                                                                                                                                                                                                              |
| **Application Parameters:**<br />* You can now view the parameters that were enabled when an edge device was deployed in **App Parameters** on the **Application Details** page.                                                                                                                                                                                             |
| **Project Webhook Notifications:**<br />* Administrators can now set up a webhook notifications when a project is created, updated, or deleted. Setup notifications in **Alerts** > **Triggers** in Litmus Edge Manager Admin Console.                                                                                                                                       |
| **Docker Compose:**<br />* You can now specify a custom network name in your Docker Compose file.&#xD; If the network exists, existing containers will join it. Otherwise, the network is automatically created to enable communication across mutliple Compose applications.                                                                                                |
| **Linux Alpine:**<br />* Alpine has been upgraded to version 3.2.1.                                                                                                                                                                                                                                                                                                          |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Events:**<br />* Fixed issue where a **INCIDENT RESOLVED** alert was inaccurately triggered when the MQTT connection was lost, which mislead users regarding alert status.
* Fixed an issue where a `500:Internal Server Error` occasionally occurred when accessing **Events**.                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Settings:**<br />* Now `https` is enforced for Keycloak admin console redirects.&#xD;
* Fixed an issue where the system attempted to authenticate to an STMP server when the **Use authentication** checkbox was unselected in **Settings** > **Email&#x20;**> **Email Settings**.                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Security:**<br />* Fixed issues with upstream security vulnerabilities.
* Fixed access issue with Keycloak admin role for Project Level Teams list.
* Resolved a CVE-2024-38821 vulnerability.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Cloud Management:**<br />* Corrected the delete icon that displayed in the *action menu* in **Cloud Management** > **Types&#x20;**&#x73;ection.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Company/Project List:**<br />* Fixed issue where the company list did not always automatically refresh after adding new companies.&#x20;
* Fixed issue where long company and project names (over 50 characters) always displayed fully in the Admin UI.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Dashboard:**<br />* Fixed display issue where lengthy company and project names caused horizontal scrolling in the UI on smaller screens.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **Asset Management:**<br />* Fixed display issue where lengthy company and project names in the Digital Twin UI overlapped with edit buttons on the project tile.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Applications:**<br />* Fixed issue where an error prevented saving of component details after correcting initial input errors in Marketplace.
* Fixed issue with inaccurate counts of deactivated Edge Devices in total devices in the **Application&#x20;**&#x74;able.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **System:**<br />* Fixed issue where changing and saving SSL settings in the Admin Console could trigger an unknown error Http failure response.
* Fixed an issue where a `Site-Based license server is provisioned to the device. Error `occurred when activating LE against LEM with a site license configuration. In this case no clients were created in LEM.
* Fixed issue where a `Failed to check firmware upgrade status. Max retry attempts exceeded` error displays in Litmus Edge Manager after upgrading a Litmus Edge device, even when the device was upgraded successfully.
* Fixed issue where the device name was occasionally excluded from messages and email notifications that indicated that the license has expired for a device. |
| **Performance:**<br />* Fixed performance issue that occurred when refreshing a Company list that contained a large number of companies.
* Fixed issue where long company and project names (over 50 characters) in Company list did not display fully.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |


[title] Deploy Digital Twin Models to Edge Devices
[path] How-To Guides/Litmus Edge Manager User UI Guides/

After a Digital Twin Model is completely configured, you may deploy it to Litmus Edge devices.

# Step 1: Select Models

You can select the models that will be deployed to recipient Edge Devices.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wnzq6c5un5WVZ9eGj4ABO_image.png" size="80" width="1142" height="482" caption="Step 1: Select Models" position="center" showCaption="true"}

**To select the digital twin model**:

1. From the *Models&#xA0;*&#x74;ab, select at least one model to deploy.
2. Click **Next**.

# Step 2: Select Edge Devices

After selecting models that will be deployed to Edge Devices, select the devices that will receive the model.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OgtGC73b5yU4UomzE2EZV_image.png" size="80" width="1119" height="444" caption="Step 2: Select Edge devices" position="center" showCaption="true"}

**To select edge device to deploy to**:

1. From the *Devices&#xA0;*&#x74;ab, select one or more edge devices from the edge device list.
2. Click **Next**.

# Step 3: Preview and Deploy

Before deploying digital twin models to a list of Edge Devices, you can preview details before they get deployed.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0Dey5EighcALdHgTvBM88_image.png" size="80" width="1535" height="668" caption="Step 3: Preview" position="center" showCaption="true"}

**To preview and deploy**:

1. From the *Preview&#xA0;*&#x74;ab, review the details of the *Device(s)* and *Models(s).*
2. Click **Deploy.**

# Step 4: Result

You can view the results of deploying digital twin models to verify if the deployment was successful or not.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IjW1mNXFf4GdCO5K3eibv_image.png" size="80" width="1127" height="411" caption="Step 4: Result" position="center" showCaption="true"}

**To view results**:

1. From the *Result&#xA0;*&#x74;ab, view the deployment details. See below *Status* to confirm whether a deployment was successful or not. &#x20;
2. (Optional) Click on a Edge Device ID to view more information about that particular Edge device.
3. Click **Close** to finish deployment.

# Next Steps

See Litmus Edge's [Digital Twins](docId\:i-2A7b3AB6vuvkqfhLjgX) on what can be done with deployed Digital Twin Models.


[title] Litmus Edge Manager 2.2.2
[path] Product Updates/2021/

Release Date: September 30, 2021

## Enhancements and Features

The following features and enhancements are included in this software release:

| **Description**                                                                                                                                                                                                                                                                                  |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Edge Remote Networks:**<br />* Enables remote access to edge devices                                                                                                                                                                                                                           |
| **Licenses:**<br />* Added support for floating license deployment during activation provision
* Included floating license server with Litmus Edge Manager                                                                                                                                       |
| - Added support to add variable value sets for provisioning activation configuration
- Added support to upload variable value set from a `.csv` file
- Added support to apply variable value set to either all edge devices or to selected edge devices based on hostname connected edge devices |
| **Templates:**<br />- Analytics is now supported in templates                                                                                                                                                                                                                                    |
| **Component Enhancements:**<br />- Updated GCR registry with hostname field
- Updated Marketplace Catalog Name
- Updated date format in edge devices software jobs                                                                                                                               |
| **UI / UX Improvements:**<br />- Updated feature names and added with experimental features                                                                                                                                                                                                      |

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                               |
| ------------------------------------------------------------------------------------------------------------- |
| - Fixed issue with license monitoring causing connection leak.
- Added fix for self-signed certificate issue. |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                                                 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Parametrized templates are not supported for instance level templates&#xD;
- Admin Dashboard usage stats inconsistent to Data Lifecycle Management statistics |


[title] Litmus Edge Manager 2.5.3
[path] Product Updates/2022/

Release Date: November 18, 2022

## Enhancements and Features

The following features and enhancements are included in this software release:

| **Description**                                                                             |
| ------------------------------------------------------------------------------------------- |
| **Admin Console:**<br />* If a login attempt is unsuccessful, a 3 second delay will be set. |

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                                                           |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Marketplace:&#x20;**<br />* &#xD;Fixed issue with importing (uploading) private applications to a catalog.<br />&#xD;<br />**Features:**<br />* &#xD;Gateway details now correctly display activated Litmus Edge devices in the Gateway drop-down menu. |

## Deprecated Components and Features

The following components/features will no longer be available:

| **Description**                                                              |
| ---------------------------------------------------------------------------- |
| **Company Settings:**<br />* &#xD;The OMA Registry tab is no longer offered. |


[title] Litmus Edge Manager 1.9.1
[path] Product Updates/2020/

Release Date: November 13, 2020

## Enhancements and Features

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                                                                                 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Resolved Issues**<br />* Fixed issue with licensing module consuming high memory usage
* Fixed upgrade issue with LEM-1.8.4 version
* Fixed issue with admin-ui chart loading
* Updated on UI to allow only upload of json files
* Minor fixes to typo in product description |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------------- |
| - Failure on all file upload of Litmus Edge on Litmus Edge Manager Admin Console on FireFox browser with self-signed certificate |


[title] Litmus Edge Manager 2.3.1
[path] Product Updates/2022/

Release Date: February 22, 2022

## Enhancements and Features

The following features and enhancements are included in this software release:

| **Description**                                                                                                                                                                                                                                                                                                         |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Licenses:**<br />**New - Site-based licenses**: An embedded license server allows you to add a site-base license for edge devices                                                                                                                                                                                     |
| **Edge Devices:**<br />**New - Edge Metrics**: Allows viewing edge device metrics such as the device status, integration status.                                                                                                                                                                                        |
| **API Tokens:**<br />**New - System API Token**: Provision of a read-only system API token upon activation of an edge device                                                                                                                                                                                            |
| **Dashboard:**<br />**New - Statistics**: Includes disk usage by data object                                                                                                                                                                                                                                            |
| **UI / UX Improvements:**<br />* Added support resources to user menu:
  - User Manual
  - Litmus Support
  - Litmus University
  - End-user license agreement
* Enabled returning to the last module used in a company or project upon a user login
* The "Marketplace Catalog" tile label is changed to "Marketplace" |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                |
| ---------------------------------------------------------------------------------------------- |
| Parametrized templates are not supported for instance-level templates                          |
| The Admin Dashboard usage stats are inconsistent with the Data Lifecycle Management statistics |


[title] Litmus Edge Manager 2.22.2
[path] Product Updates/2024/

:::hint{type="warning"}
**Important**: For a seamless upgrade experience in upcoming releases, it's crucial to upgrade from version 2.16.4 to 2.22.2 before making any further upgrades. Skipping the initial upgrade to version 2.16.4 and then 2.22.2 may disrupt the upgrade process, and is therefore not recommended.
:::

Release Date: Sept 25, 2024

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).&#x20;

## New Features

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Central Certificate Management:**<br />* The *Certificates&#x20;*&#x70;age has been updated to manage **SSL Certificates** on Edge Devices. The page includes combined menu items, sorting and filtering options, menu actions, as well as logging and monitoring features.&#x20;
* Th&#x65;*&#x20;Certificate action* tab includes three actions:&#x20;
  - Issue a new certificate
  - Upload a new certificate
  - Reset to Edge default certificate
* The periodic certificate expiry check and renewal process for Edge devices is now available. |
| **Central AI/ML Model Management:&#x20;**<br />* The main homepage now features a new user interface for central management of **AI/ML Models**, including summary statistics to provide a comprehensive understanding of the usage of AI/ML Models within Litmus Edge.                                                                                                                                                                                                                                                                                  |
| **DigiCert IoT Trust Manager integration:**<br />* The **DigiCert IoT Trust Manager** integration is now available from the admin console.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Central Licenses Management:**<br />* The *License&#x20;*&#x6D;anagement homepage now features a new user interface with summary statistics, providing a comprehensive understanding of key usage within Litmus Edge Manager.
* The *License&#x20;*&#x6D;anagement page allows users to monitor and manage the expiration status of features and core licenses for edge devices within the current project.                                                                                                                                            |
| **Edge Devices:**<br />* The Edge Devices page in Admin Console now includes a new menu item for **Node-Locked (NL) Licenses**. This feature displays a list of all NL licenses used across all projects and allows you to download the list as a *CSV&#x20;*&#x66;ile.                                                                                                                                                                                                                                                                                  |
| **Alerts:**<br />* The *Incidents&#x20;*&#x6F;ption is now accessible under the *Alerts&#x20;*&#x70;age, allowing you to effortlessly configure triggers and send notifications.                                                                                                                                                                                                                                                                                                                                                                         |
| **Activation:**<br />* The *Activation&#x20;*>*&#x20;Requests* page displays an optimized summary of the activation requests and their respective statuses, including Total, Waiting for Approval, Processing, Processed, and Failed.
* The template variables now have a new drop-down selection menu for the variable name field, allowing users to select from the list of all the variables defined in the parameterized templates in the activation configuration.                                                                                  |

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Admin Console Cloud Settings**:<br />* In *Cloud&#x20;*&#x73;ettings:
  - When configuring *Cloud Credentials*, you now have the option of configuring GCP Workload Identity Federation (OIDC) for authorization.&#x20;
  - During account service key rotation, mpc-sync service account keys are also rotated as well.&#x20;
* In *Domain/SSL* settings, the SSL Settings log now displays more information for update operations in SSL settings.&#x20;
* In *Email&#x20;*&#x73;ettings, when the Enable SMTP toggle is disabled, any existing SMTP settings are now removed.&#x20;                                                                                                                                                                                                         |
| **Data Lifecycle**:<br />* The *Statistics&#x20;*&#x70;age now has enhanced disk partition usage visualization, a comprehensive partition list, a new pie chart for improved data representation, and an expanded object list.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **Edge Devices:**<br />* The **Description&#x20;**&#x63;olumn is added to the edge device list in admin console.
* When the Litmus Edge Manager base-domain name is updated, respective activation URLs for Edge devices are automatically updated based on the new domain name.&#x20;
* Upgrades are now restricted to VM-based Edge devices. Upgrades on Docker-based Edge devices are not allowed.&#x20;
* The limit for the activation endpoint of 10 rps (requests per second) is now removed, allowing for more Edge devices to be processed at one time.
* The error message now contains the Activation config code and correct template name during failed activations with a template.&#x20;
* Added logging for the deactivation process for an edge device in the *API actions* log. |
| **Templates**:<br />* The **Templates&#x20;**&#x6D;odule for Edge devices are now included in Litmus Edge Manager backups. If a Litmus Edge Manager backup is restored, Edge device templates are also restored.&#x20;
* The template names must be unique and cannot be duplicated.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **DLM Actions:**<br />* The Purge action can now be used to archive and delete Clickhouse table data.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Alerts & Triggers:**<br />* The alert for DeviceHub device offline status has been updated to exclude stopped DeviceHub devices from generating Offline Device alerts.
* The Litmus Edge Manager now supports triggering alerts with severity set to `Info`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **Keycloak:**<br />* Upgraded keycloak to `24.0.5`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **User Interface:**<br />* The *Company list* page onlog-inn now displays the number of connected edge devices for each company.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Certificates:**<br />* The *Issue a new certificate* dialog box has a new Certificate Authority field, which includes `Litmus Edge Manager` and `DigiCert IoT Trust Manager` as selectable values for certificate issuance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Marketplace:**<br />* The marketplace catalog's API can be accessed by third-party applications using tokens authorized by Litmus Edge Manager's admin.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Settings:**<br />* The *CREDENTIALS&#x20;*&#x70;age in *Project Settings&#x20;*&#x68;as been updated with a new user interface to separately display and download SSL certificate information for MQTT and Web servers.
* Th&#x65;**&#x20;DigiCert IoT Trust** option is available from the *Admin Console Settings* to set the SSL certificates only when the DigiCert integration parameters are configured.                                                                                                                                                                                                                                                                                                                                                                                 |
| **Domain/SSL:**<br />* The *SSL settings* have a new Async task to distribute Litmus Edge Manager's CA certificates to all activated Edge devices.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Support:**<br />* The support bundle has been updated to include docker disk usage information.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **Software:**<br />* The title of the *Software&#x20;*&#x6D;enu under *Projects&#x20;*&#x68;as now changed to **Software Update**.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Incidents:**<br />* The *Incidents&#x20;*&#x6E;ow have added support for creating alerts and triggers based on OPC UA telemetry from the Prometheus endpoint.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **Features:**<br />* The marketplace catalog app now supports adding fully compliant Docker Compose files to the new application releases.
* The device deployment status display has been improved to show the number of devices with the app and the total number of devices (online + offline). Additionally, the help text has been updated, and a subheader has been added to describe the widget's purpose without requiring a hover.                                                                                                                                                                                                                                                                                                                                                      |

## Resolved Issues

| Description                                                                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Management**:<br />* Fixed issue with flows dashboard not showing on Remote UI.                                                                                                                                                                                    |
| **Security**:<br />* Various vulnerabilities fixes are addressed in this release.                                                                                                                                                                                         |
| **Events & Alerts:**<br />* Fixed the issue of not being able to set the *Verify SSL* setting to **false**.&#x20;                                                                                                                                                         |
| **Software Updates:&#x20;**<br />* Fixed issues with upgrades through update files failing because of insufficient disk space.&#x20;                                                                                                                                      |
| **User Interface**:<br />* Fixed issue with `%` data on the *Disk Usage graph,* partially hiding the number. All data in percentages are displayed in full now.                                                                                                           |
| **Integration**:<br />* Fixed issue where the Clickhouse data directory was relocated to the wrong location during an upgrade.                                                                                                                                            |
| **Profile:**<br />* Fixed issue with the Two-factor authentication section that was causing an `Internal server error` when attempting to set up **2FA**.                                                                                                                 |
| **Sites:**<br />* Fixed issue encountered when attempting to add a site without an image, resulting in an `Error 403`.                                                                                                                                                    |
| **Applications**:<br />* Fixed issue with an empty list displaying after filtering the list of applications by catalog.                                                                                                                                                   |
| **Tokens**:<br />* Fixed issue with not all associated projects being automatically selected when you select **\[Company name] \[All projects]**.
* Fixed issue with the long-term API Admin token not being able to create a new company and returning an error message. |
| **DeviceHub**:<br />* Fixed issue with devicehub drivers parsing and saving payloads with new keys to OMA tables in ClickHouse.
* Fixed issue with maximum message size for syslog where messages are now truncated to fit within the limit.                              |

## Deprecated Components and Features

| Description                                                                    |
| ------------------------------------------------------------------------------ |
| **Settings**:<br />* The OMA bindings are no longer available for any project. |


[title] Litmus Edge Manager 2.1.0
[path] Product Updates/2021/

Release Date: March 17, 2021

## Enhancements and Features

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **New - Parametrized Template Deployment:**<br />* Implemented initial phase of parameterized template
* Supports attribute value type for string and number<br />**Note**: This feature is enabled from Litmus Edge Manager Admin Console **Settings** > **Experimental Features**.                                                                                                                                                                                                                   |
| **New - Full Fledged access to Litmus Edge UI from Litmus Edge Manager:**<br />* Litmus Edge Manager supports initial version of full fledged access to Edge UI
* Requires authentication on edge device for the first login<br /><br />**Note**: This feature is enabled from Litmus Edge Manager Admin Console **Settings** > **Experimental Features**. Initial phase of implementation is direct mode and requires an open connection between Litmus Edge Manager and Litmus Edge on port 443/TCP. |
| **New - Added a system trigger to monitor device status:**<br />* Based on raw topic value for PLC status, system trigger can be set for alert and notification
* Extended system trigger scope to all<br />**Note**: This system trigger is currently based on success value on RAW topic.                                                                                                                                                                                                            |
| **New - Support for RAW topic directly on Litmus Edge Manager:**<br />* Litmus Edge Manager supports RAW topic from Edge Device which helps in easy access with child device on Litmus Edge Manager                                                                                                                                                                                                                                                                                                    |
| **UI/UX Improvements:**<br />* Improved input fields for password throughout the system                                                                                                                                                                                                                                                                                                                                                                                                                |
| **Other Component Enhancements:**<br />* Extended capability of device management with different versions of Edge Devices                                                                                                                                                                                                                                                                                                                                                                              |

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                                                                               |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Fixed issue with proxy setting configurations not being saved&#xD;
- Fixed occasional sync up issue with active Edge Device count on license page&#xD;
- Fixed issue with ZT node for remote access&#xD;
- Fixed issue with alert notifications not being sent continuously |

## Deprecated Component

The following components/features will no longer be available:

| **Description**                                                                                                                                                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| - Deprecated V1 activation, starting 2.6.x all Edge Device versions support V2 activation
- Export/Import feature in Litmus Edge Manager Admin console due to known issue, this will be improved and added in upcoming release |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                                                                                                                                                                                                                                                                                                 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Failure on all file upload of Litmus Edge on Litmus Edge Manager Admin Console on FireFox browser with self-signed certificate&#xD;
- Parametrized templates are not supported for instance level templates&#xD;
- DLM archive/purge doesn’t affect on the current time period (current month)&#xD;
- Admin Dashboard usage stats inconsistent to DLM statistics&#xD;
- Analytics templates are not supported |


[title] Litmus Edge Manager 2.31.1
[path] Product Updates/2026/

Release Date: January 23, 2026

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).

## Enhancements and Improvements

| Description                                                                                                                              |
| ---------------------------------------------------------------------------------------------------------------------------------------- |
| **Integration:**<br />* For Git integrations, help text now shows the effect of enabling **Track** and **Sync on Backup** for a project. |
| **Support Bundle**<br />* Now you can generate a support bundle file from an ssh session.                                                |

## Resolved Issues

| Description                                                                                                                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Security:**<br />* Addressed vulnerabilities related to Keyclock. &#x20;
* Addressed vulnerabilities in third party components.
* Resolved the following vulnerability:
  - CVE-2025-59952 |
| **Applications:**<br />* Fixed issue where opening Grafana Dashboards from a project failed with a `Failed to sync Grafana organization error`.                                              |

# Available with Azure and K8s Deployments

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Litmus Edge Manager on Azure:**<br />* Addressed vulnerabilities in third party components.<br />**Litmus Edge Manager on K8s:**<br />* The Grafana Role now longer displays when editing a user in **Settings** > **Users** in the Admin Console.
* Addressed vulnerabilities in Marketplace listing.
* Increased Kafka and Zookeeper StatefulSet’s memory limit to accommodate the configured JVM heap size and prevent periodic OOM-related pod restarts. |


[title] Litmus Edge Manager 2.31.5
[path] Product Updates/2026/

Release Date: July 3, 2026

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                                                                             |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Applications:**<br />* Marketplace applications now display a `Degraded` status to identify issues with running applications. Degraded status displays when an application is running and one or more containers have exited.                                                                                                                         |
| **Digital Twins:**<br />* Litmus Edge Manager now enforces the same Digital Twin model validation rules as Litmus Edge and rejects models with whitespace in the model name, special characters in unit fields, or empty parameter values. This prevents deployment failures caused by models that pass LEM validation but are rejected by Litmus Edge. |
| **Integration:**<br />* The **AI Assistant** has been renamed to **Litmus IQ** across the Admin Console and User UI including menu labels, page titles, and toast messages.                                                                                                                                                                             |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Applications:**<br />* Fixed issue where the Application Details page displayed a `"Failed to load release list"` error when at least one release of the application did not have a submission date.
* Fixed issue where private variables were visible in the UI when an application launched. Private integer variables are now masked.                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Projects:**<br />* Fixed issue where the Project Credentials and Project Settings pages displayed a `"Could not parse certificate"` error if the CA certificate failed to load at service startup. The certificate is now fetched again and a service restart is not required.                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **Edge Devices:**<br />* Fixed edge device provisioning failure that required a Litmus Edge Manager restart due to stale API token validation after device deactivation and factory reset cycles.
* Fixed issue where a backup from Litmus Edge to Litmus Edge Manager failed with a `409 couldn't upload backup: couldn't get upload URL: unexpected response` error.
* Fixed backup failures after LEM upgrade caused by Vault raft startup timing issue.
* Fixed issue where deprovisioning an edge device failed with an internal error caused by duplicate license records. Duplicate records are now cleaned up automatically.                                                                                                            |
| **Licensing:**<br />* Fixed issue where license activation failed during cloud activation for Litmus Edge devices and devices were not correctly provisioned in Litmus Edge Manager.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **Software Update:**<br />* Fixed issue where uploading a software update file via URL or downloaded file failed in the Admin Console.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Alerts:**<br />* Fixed issue where an alert sent repeated notifications when an edge device was disconnected instead of once.
* Fixed issue where the Incidents page failed to load when a database query exceeded the memory limit on large datasets.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Applications:**<br />* Fixed issue where an exception occurred when a Marketplace application reported an unrecognized status including `Degraded`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| **Admin Console Settings:**<br />* Fixed issue where manual and automatic backups could not be performed after upgrading to 2.31.x.
* Fixed issue where the user details page in the Admin Console failed to load and displayed an `"Internal error"` notification.
* Fixed issue where the static IP address configured on a network interface did not persist after a system reboot and reverted to the default DHCP configuration.                                                                                                                                                                                                                                                                                                           |
| **System:**<br />* Fixed issue where a background update caused an `Application is initializing` screen to display when deploying Litmus Edge Manager on Azure.
* Fixed issue where Litmus Edge Manager became stuck in the initializing state.
* Fixed issue on Kubernetes deployments where MySQL logs filled disk space and caused LEM services to fail.
* Resolved the following vulnerabilities:
  - CVE-2026-48059&#xD;
  - CVE-2026-47691
  - &#xD;CVE-2026-45674&#xD;
  - CVE-2026-45447&#xD;
  - CVE-2026-45416&#xD;
  - CVE-2026-44893&#xD;
  - CVE-2026-44249&#xD;
  - CVE-2026-42583&#xD;
  - CVE-2026-42579&#xD;
  - CVE-2026-42577&#xD;
  - CVE-2026-40973&#xD;
  - CVE-2026-39852&#xD;
  - CVE-2026-27135&#xD;
  - CVE-2026-5598 |
| **Docker Registry:**<br />* Fixed issue where Litmus Edge Manager failed to validate and add a Docker registry when **Docker Skip TLS Verification** was enabled even though valid credentials were provided.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |


[title] Litmus Edge Manager 2.8.2
[path] Product Updates/2023/

Release Date: February 27, 2023

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Device Details**:<br />* Fixed an issue where edge devices were incorrectly displaying `No active license` even though the edge device did have an actual license. |
| **Security:**<br />* Resolved an OpenSSL vulnerability related to CVE-2023-0286                                                                                           |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------ |
| **Marketplace:**<br />* Site license with catalog feature may not enable the *Marketplace* feature and the *Application* page. |
| **Upgrade:**<br />* After a Litmus Edge Manager is upgraded to 2.8.2, connected edge devices may display as offline.           |


[title] About MQTT
[path] Resources/

**Message Queue Telemetry Transport (MQTT)&#xA0;**&#x69;s a publish/subscribe-based lightweight protocol. It is designed for Machine to Machine (M2M) telemetry in low-bandwidth environments. MQTT sits on top of the TCP/IP protocol. This publish/subscribe protocol requires a message broker. The broker distributes messages to the interested clients based on the topic of the message.

**MQTT&#xA0;**&#x64;efines methods for the desired action to be performed on the client. The different methods are:

- **Connect**: Waits for a connection to be established with the server.
- **Disconnect**: Waits for the MQTT client to finish the work and then for the TCP/IP session to disconnect.
- **Subscribe**: Waits for the completion of a subscribe or unsubscribe method.
- **Unsubscribe**: It request the server to unsubscribe the client from one or more topic.
- **Publish**: This method immediately returns to the application thread after passing the request to the MQTT client.

A **MQTT client&#xA0;**&#x69;s a sensor that generally publishes messages to the broker.

The broker sends the message to the MQTT clients that have subscribed to receive the data.

:::hint{type="info"}
**NOTE**: A MQTT client can publish, subscribe, or both.
:::

A **Client Agent&#xA0;**&#x69;s available in almost all programming languages and major operating systems.

**Topics&#xA0;**&#x61;re used for MQTT addressing. The JSON file that is downloaded from the Loop platform (when the device is deployed) contains the topic to which the data needs to be published and subscribed. The user can also create a custom topic and define to publish or subscribe or both from ACL (Action Control List) under project settings.

An **MQTT Broker&#xA0;**&#x69;s responsible for receiving all messages, filtering them and sending messages to all the subscribed clients. The broker also does the authentication and authorization of the client. The broker is also extensible, which allows integration of custom authentication, authorization, and integration of the clients.

The MQTT connection is always between a client and a broker, as no client connects to another client. The client sends a CONNECT message to the broker and broker response with a CONNACK and the status. Once the connection is established, the broker keeps it open as long as the client does not send a disconnect command.

A **Client ID&#xA0;**&#x69;t is the identifier for each of the MQTT clients that connects to the MQTT broker. The ID is unique per broker. The broker identifies the client and the state of the client using the client ID.

**Security**: The broker has a username and password for authentication of the client and authorization. MQTTS also uses TLS/SSL certificates for authentication.

**QOS**: The Quality of Service tells the user regarding the guarantee of message delivery.

- QOS 0 - At most once.
- QOS 1 - At least once.
- QOS 2 - Exactly once.

The Quality of Service is important as it lets the client choose the QoS level based on the application and network reliability.

Alternate protocols include the AMQP (Advanced Message Queuing Protocol), COAP (Constrained Application Protocol), and XMPP (Extensible Messaging and Presence Protocol).


[title] Site and Node-Locked License Overview for Litmus Edge Manager
[path] Resources/

For a Litmus Edge Manager instance to be able to fully access all features, it must carry a license. This license can be a site license or a node-locked license.&#x20;

For information about Litmus Edge licenses, see [Site and Node-Locked License Overview for Litmus Edge](docId\:nbX0O6C5ylSh-qVy0sdJc).

# Understanding and Adding a Site License for Litmus Edge Manager

Litmus Edge Manager contains a license server that must be added with a site license. Unlike Litmus Edge, a Litmus Edge Manager must use the site license within its own embedded license server to access all features. The Litmus Edge Manager cannot use a standalone license server's site license.

A site license, depending on its constituent features, may act both as a Litmus Edge site license and also a Litmus Edge Manager site license.

To add a site license to Litmus Edge Manager, add it in [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O). To set Litmus Edge Manager to use the added site license, see [Admin Console Licenses](docId\:dMpF2PJbBM7kQQgs0lVUC).

:::hint{type="warning"}
**Note:** Once a site license is activated, the user must choose the license type; otherwise, the site license will not be applied.

This selection can be made in **Settings** > **License&#x20;**> **License Settings**.
:::

# Understanding and Adding a Node-Locked License for Litmus Edge Manager

For a Litmus Edge Manager to carry a node-locked license, you will need a license key. The key will be a 16-digit code (`####-####-####-####`) that is valid for certain number of years, based on the license SKU definition. The node-locked license key can be requested from Litmus account executives.&#x20;

A Litmus Edge Manager node-locked license key cannot be used as a Litmus Edge node-locked license key.&#x20;

To add a node-locked license key to the Litmus Edge Manager, see [Admin Console Licenses](docId\:dMpF2PJbBM7kQQgs0lVUC).&#x20;

:::hint{type="warning"}
**Important**: Each node-locked license key is bound to a Litmus Edge Manager MAC address. If the MAC address is changed, the license key will be invalidated.
:::

# Understanding Litmus Edge and Litmus Edge Manager License Differences

Both Litmus Edge and Litmus Edge Manager can carry their own node-locked License version. However, a site license's constituent features will determine whether the site license can be used to a Litmus Edge instance, a Litmus Edge Manager instance, or both.

## Litmus Edge Manager Features for Litmus Edge Licenses

Litmus Edge Manager also offers features that manage the Litmus Edge site and node-locked licenses. From Litmus Edge Manager, you can do the following:

- Monitor the expiration date of Litmus Edge instances. See [Licenses](docId\:Zurp8hVnSYJMgcZ1mceUQ).
- Set the initial license status of a Litmus Edge instance. See [Step 2: Create an Activation Configuration in Litmus Edge Manager](docId\:vVZ99_j_TGxX6b9-Y9f8L) to learn more.&#x20;
- View and change the license status of one specific Litmus Edge instance. See [License](docId\:yNEZ4ZGTuD6lrZxdTMcz5).
- Manage site licenses that Litmus Edge instances will receive (and the Litmus Edge Manager itself can also receive). See [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O).

# Litmus Edge Manager Site Licenses and Node-Locked Licenses Compared

| **Site License**                                                                                       | **Node-Locked**                                                                                            |
| ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- |
| Access to features/capabilities depends on type of license. <br />Activation can be completed offline. | Provides access to all Litmus Edge Manager features. <br />Activation can be completed online or offline.  |
| Can be upgraded with additional features/capabilities.                                                 | Can be upgraded with additional features/capabilities.                                                     |


[title] Change the IP Address of Litmus Edge Manager
[path] How-To Guides/Litmus Edge Manager Admin Console Guides/

You can change the IP address used to access Litmus Edge Manager to a new IP address.

If you have installed Litmus Edge Manager on ESXi and there is no IP address shown to access the interface, you must set a static IP address. See [Set a Static IP Address](docId\:eu1MB0qeHF67YNC6i3ohh) to learn more.&#x20;

# Video

:::Iframe{code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/ymxI1p2OtvU?si=9fTjVtRNyHKFXQu4&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

# Step 1: Add a New IP Address to Interface

You will first need to add the new IP address to the *Interfaces&#x20;*&#x73;ection of the *Network&#x20;*&#x70;age.&#x20;

**To add a new IP address:**

1. Navigate to Litmus Edge Manager Admin Console's **Settings > Network > Interface&#x20;**&#x74;ab, and click **Update**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Lc0RblsHHm_r8nwOWlVOM_2023-07-2409-07-52.png "Adding a new IP address")
2. Click **Add new Address.**
3. Enter the following fields
   - For the *IPv4 Address* field, enter the **new IP address in CIDR notation&#x20;**&#x74;hat will be used to access Litmus Edge Manager.
   - For the *Gateway* field, enter the IPv4 Address's respective **Gateway** value.
   - For this example, `172.20.21.114/23` and `172.20.20.1` will be used.
4. Click **Update.&#x20;**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/u6BiHzuloCV46cMouduld_image.png" size="80" width="1920" height="866" caption="Adding a New IP Address to Interface" position="center" showCaption="true"}

:::hint{type="warning"}
**Important**: Wait 15 minutes for the changes to be implemented before moving to the next step.&#x20;
:::

# Step 2: Change Base Domain Name to the New IP Address

After waiting for the new IP address to be implemented, you can update the base domain name.&#x20;

:::hint{type="info"}
**Note**: The base domain name will be automatically updated to the new IP address if the following is true:

- The DHCP checkbox for the interface was not selected.&#x20;
- The previous base domain name was an IP address rather than a domain name.&#x20;
- The previous base domain name was not included as an IP address for the interface.&#x20;
:::

**To change the base domain name:&#x20;**

1. Navigate to Litmus Edge Manager Admin Console's **Settings&#x20;**> **Domain/SSL** pane.
2. For the *Base Domain Name* field, enter th&#x65;**&#x20;IPv4 address&#x20;**&#x66;rom the previous step. You will need to reactivate any Litmus Edge devices previously activated by this Litmus Edge Manager.
3. Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0hC6UVX_SCZ5rvkBq0B1D_image.png" size="80" width="1920" height="866" caption="Change Base Domain Name" position="center" showCaption="true"}

# Step 3: Change Edge Remote Name to the New IP Address

You will need to wait for the new base domain name to be implemented before update the Edge remote name.&#x20;

**To change the Edge remote name:&#x20;**

1. Wait several minutes for the changes to be implemented. Then, open a new browser and access the Litmus Edge Manager Admin Console using the new IPv4 address (in this use case, it would be: `172.20.21.144:8446`) from Step 1 and Step 2.
2. Navigate to **Settings&#x20;**> **Domain/SSL**.
3. For the *Edge Remote endpoint* field, enter th&#x65;**&#x20;IPv4 address&#x20;**&#x66;rom *Step 1: Add a New IP Address to Interface*.  The *Base Domain Name* field and *Edge Remote endpoint* field should be identical.
4. Click **Save**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7Aqe2Ky7tikkegs1A7LQ__image.png" size="80" width="1920" height="866" caption="Change Edge Remote endpoint" position="center" showCaption="true"}

# Step 4: Remove Old Address from Interface and Disable DHCP

The final step is to remove the old IP address from the interface and disable DHCP.&#x20;

**To disable DHCP and remove an old IP address:**

1. Navigate to **Settings > Network > Interface&#x20;**&#x74;ab and click **Update**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0qb8XH098J19I53ItfL3L_2023-07-2409-12-46.png "Updating interface")
2. Disable **DHCP** by unselecting the checkbox then click **Update**. This will set the interface from *DHCP* to *Static*.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TXj0wQxNSIaLvWZg3xTBH_disable-dhcp.png" size="80" width="1920" height="866" caption="Disable DHCP" position="center" showCaption="true"}
3. Click **Update** again.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Zwc_LU3FWl_FgWWLYMr35_network-static.png" size="80" width="1558" height="499" caption="Static interface" position="center" showCaption="true"}
4. Delete the old IPv4 address and then click **Update**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jldnHUq5-o1XgWPJYlp1e_image.png" size="80" width="1920" height="866" caption="Delete old IPv4 Address" position="center" showCaption="true"}


[title] Litmus Edge Manager 2.11.0
[path] Product Updates/2023/

Release Date: June 13, 2023

## New Features

The following are new features introduced in this software release:

| **Description**                                                                                                                                                                                                                                                                                                                                                         |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Activation:**<br />* Activation Configuration now offers a new *Advanced Settings* section. This section provides you the opportunity to customize the Remote Access (the connection between Litmus Edge Manager and Litmus Edge) parameter `PersistentKeepalive`(the interval in seconds of how often to send an authenticated empty packet to a Litmus Edge).&#x20; |
| **Edge Devices:**<br />* Added a new *Settings* tab at **Admin Console** > **Edge Devices** > **Edge Remote Networks** to enable you to configure the Maximum Transmission Unit (MTU) of the Remote network interface.                                                                                                                                                  |
| **Marketplace**<br />* Marketplace now offers the creation and synchronization of Primary and Secondary catalogs. A new *Synchronization* section has been added in each marketplace catalog application. This section enables you to synchronize a Secondary catalog to become identical to a Primary catalog.&#x20;                                                   |

## Enhancements and Features

The following features and enhancements are included in this software release:

| **Description**                                                                                                                                                                                                                                    |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Keycloak:**<br />* Upgraded keycloak to 20.0.3.                                                                                                                                                                                                  |
| **Personal Settings:**<br />* The *Litmus Customer Success&#x20;*(Open support chat) widget is now collapsible to prevent other UI elements from being blocked and/or unclickable.                                                                 |
| **Templates:**<br />* The *Description* field now has a character limit of 512.&#x20;
* Templates list now provide statistics for each template.
* Redesigned *Create Template from device* to be similar to Litmus Edge's user interface version. |
| **Alerts:**<br />* When setting up a Metrics-based Trigger, *Alert Delay, seconds&#x20;*&#x6D;ust be at least 60 seconds.
* When setting up a Metrics-based Trigger, *Target Value* is now in *msgs/minute* rather than msgs/seconds.              |
| **License:**<br />* You can now both add add-on Litmus Edge Manager Node-locked licenses and upgrade core Litmus Edge Manager Node-locked licenses at **Admin Console** > **Settings&#x20;**> **License**.                                         |

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                                                                                                                    |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Templates:**<br />* Fixed an issue when uploading an invalid Parameterized Template (*.zip* folder). It previously yielded a successful result message but didn't add the template. It will now accurately display an error message.                                                                             |
| **Company List:**<br />* Fixed an issue with companies duplicating after changing company name.                                                                                                                                                                                                                    |
| **Alerts:**<br />* Fixed an issue with Metrics alerts for Connector online status operating improperly.                                                                                                                                                                                                            |
| **Data Lifecycle:**<br />* Fixed an issue with graph and information not being displayed correctly for **Admin Console** > **Data Lifecycle** > **Statistics**.&#x20;
* Fixed an issue with searching by project name failing to yield search results for **Admin Console** > **Data Lifecycle** > **Management**. |
| **Security:**<br />* Resolved a vulnerability related to CVE-2023-28322.                                                                                                                                                                                                                                           |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                                                                                                                                                                              |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Installation:**<br />* Azure-Marketplace-installed Litmus Edge Manager will redirect to internal IP address. **Workaround**: From Admin Console > Settings > Domain/SSL, set the values of *Base Domain Name* and *Edge Remote endpoint&#x20;*&#x61;s external IP address.                 |
| **Edge Devices:**<br />* Expired site-based licenses do not display their expired status.&#x20;                                                                                                                                                                                              |
| **Templates:**<br />* When creating a template, NTP, DNS, Timezone, Country, and Docker Data are automatically incorporated.&#x20;
* Uploading a template file circumvents the 512 character limit for *Template Description*.
* Two or more templates can share the same description.&#x20; |
| **Upgrade:**<br />* Users are able to downgrade Litmus Edge Manager to an earlier version.                                                                                                                                                                                                   |


[title] Litmus Edge Manager 2.15.0
[path] Product Updates/2023/

Release Date: December 20, 2023

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).&#x20;

## New Features

| **Description**                                                                                                                                                                                                                       |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Admin Console Settings**:<br />* A new **Management&#x20;**&#x70;age allows you to reboot Litmus Edge Manager.&#x20;
* A new **Backup&#x20;**&#x70;age allows you to download and upload backup files of Litmus Edge Manager.&#x20; |

## Enhancements and Features

| **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Remote Networks**:<br />* You can now view the number of devices that can be activated for the project.&#x20;
  - You can view the following information for the remote network and the entire instance:
    - The maximum number of nodes
    - The number of free slots
    - The capacity of activated devices remaining represented as a percentage value                                                                                                              |
| **Support:**<br />* When downloading a support bundle, you now have the option to download config and log details, or only download log details.&#x20;                                                                                                                                                                                                                                                                                                                            |
| **Software Jobs:**<br />* You now have the option to schedule software update jobs to run at a specified time.&#x20;                                                                                                                                                                                                                                                                                                                                                              |
| **Edge Devices**:<br />* When viewing edge device details and navigating to the **Manage&#x20;**&#x74;ab, a new **Software&#x20;**&#x73;ub-tab allows you to do the following:
  - View the list of downloaded updates.&#x20;
  - Delete existing update files.&#x20;
  - Run updates for selected update files.&#x20;
* There is now a limit of 100 child devices that can be created for each Edge device.&#x20;
* You now have the option of backing up multiple edge devices. |
| **Tokens**:<br />* A new option for **Edge API Bridge** when creating a token allows you integrate multiple Litmus Edge REST APIs through a single Litmus Edge Manager endpoint. This is especially useful when incorporating Litmus Edge Manager into your CI/CD workflows, streamlining the integration process.&#x20;                                                                                                                                                          |
| **Backup/Restore**:<br />* The backup and restore functionality has been improved to enhance reliability. This change has caused data (Clickhouse) backup to be excluded.&#x20;                                                                                                                                                                                                                                                                                                   |

## Resolved Issues

| **Description**                                                                                                                      |
| ------------------------------------------------------------------------------------------------------------------------------------ |
| **Integration**:<br />* Fixed issue with device data not being stored in Clickhouse.&#x20;                                           |
| **Security:**<br />* Resolved the following vulnerabilities:
  - CVE-2023-44981
  - CVE-2023-38545                                   |
| **Alerts**:<br />* Fixed issue with alert delay values under 60 seconds not displaying correctly.                                    |
| **Edge Devices**:<br />* Fixed issue with edge devices not displaying data for *MQTT Last Known IP* and *MQTT Last Seen Date*.&#x20; |

## Deprecated Components and Features

| **Description**                                                                                                                                                                                                                                 |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Admin Console Settings**:<br />* The options for **Export Configuration&#x20;**&#x61;nd **Import Configuration** in the *Export/Import Data* page are no longer available. These options have moved to the new *Backup&#x20;*&#x70;age.&#x20; |


[title] Litmus Edge Manager 2.16.4
[path] Product Updates/2024/

:::hint{type="warning"}
**Important**: For a seamless upgrade experience in upcoming releases, it's crucial to upgrade to version 2.16.4 before making any further upgrades. Skipping the initial upgrade to version 2.16.4 may disrupt the upgrade process, and is therefore not recommended.&#x20;
:::

Release Date: March 28, 2024

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).&#x20;

## Enhancements and Features

| **Description**                                                                                                                                                                        |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Devices**:<br />* The Nginx limit for the activation endpoint of 10 rps (requests per second) is now removed, allowing for more Edge devices to be processed at one time.&#x20; |
| **Admin Console Settings**:<br />* You can now set a static IP and gateway DHCP setting.                                                                                               |

## Resolved Issues

| **Description**                                                                                                                                                                                                                               |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Devices**:<br />* ﻿Fixed issue with incidents being created for previously deleted devices.                                                                                                                                            |
| **Admin Console Settings:**<br />* **&#xFEFF;**&#x46;ixed issue with the Marketplace Catalog not being available after upgrading from version 2.15.0 to 2.16.0.                                                                               |
| **Software Update Tasks**:<br />* Fixed issue with a failed status displaying when upgrading Edge device software (Litmus Edge) to 3.11.0 even though the upgrade was successful. This occurred if the upgrade lasted more than five minutes. |
| **Interfaces**:<br />* Fixed issue with errors being generated when to trying to add a new network interface.                                                                                                                                 |
| **Integration**:<br />* Fixed issue with data (OMA and RAW) from multiple projects not being successfully loaded into tables (dev\_parent\_pretty\_name columns) in Tabix.                                                                    |
| **Software Updates:&#x20;**<br />* Fixed issue with upgrades through update files failing because of insufficient disk space.&#x20;**&#xFEFF;**                                                                                               |
| **User Interface**:<br />* Fixed issue with the user interface loading before Keycloak is ready to run.&#x20;
* Fixed issue with being directed to the project list page after refreshing the browser window.                                 |
| **Domain/SSL**:<br />* Fixed issue with an error message displaying when changing the domain name despite a successful change of domain name.&#x20;                                                                                           |
| **Support**:<br />* Fixed issue with MySQL files not being included in support bundles when you select *Include configs*.&#x20;                                                                                                               |
| **Network**:<br />* **&#xFEFF;**&#x46;ixed issue with the incorrect Netplan config of 0.0.0.0 as the default router. The correct default router is now 0.0.0.0/0 or default.&#x20;                                                            |
| **Security:**<br />* Resolved vulnerabilities related to CVE-2023-6267.&#x20;                                                                                                                                                                 |
| **License**:<br />* Fixed issue with the Kubernetes version of Litmus Edge Manager not being able to successfully check the license type.                                                                                                     |

## Deprecated Components and Features

| **Description**                                                                                                                                                                                                  |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Devices**:<br />* The following deprecated services are no longer available from the **Manage edge device(s) services** option:&#x20;
  - DeviceHub Service
  - BACnet Server
  - Flows
  - Remote Access |


[title] Litmus Edge Manager 2.12.0
[path] Product Updates/2023/

Release Date: July 18, 2023

## New Features

| **Description**                                                                                                                                                                     |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **License Server Management:**<br />* A new *License Clients* tab allows you to create activation requests for devices to connect to a custom license server through a proxy.&#x20; |

## Enhancements and Features

| **Description**                                                                                                                                                                                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Support:**<br />* Clickhouse logs and upgrade logs are now available in support bundles.&#x20;                                                                                                                                                                                                                    |
| **Activation:**<br />* If there is an unsuccessful activation through the license server, more details are now included in the error message to assist in troubleshooting.&#x20;
* You now have the option of automatically applying the default password policy in Litmus Edge Manager to activated devices.&#x20; |
| **Settings:**<br />* You have the option storing edge device data (OMA and RAW) in Clickhouse.&#x20;
* You can configure the backup retention policy for edge device data by setting the number of backups to store.&#x20;                                                                                          |

## Resolved Issues

| **Description**                                                                                                                                                                                           |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Devices:**<br />* Fixed issue where expired site-based licenses do not display their expired status.&#x20;                                                                                         |
| **System:**<br />* Addressed vulnerabilities related to the following:
  - CVE-2022-0265
  - CVE-2023-34034
  - CVE-2022-1471
  - CVE-2016-1000027
  - CVE-2022-45047                                     |
| **Marketplace:**<br />* Fixed issue with an older Docker version causing the Marketplace Catalog app to crash.&#x20;                                                                                      |
| **Templates:**<br />* Fixed issue with NTP, DNS, Timezone, Country, and Docker Data being automatically added to templates. &#x20;                                                                        |
| **Upgrade:**<br />* Fixed issue with being able to downgrade Litmus Edge Manager to an earlier version.&#x20;
* Fixed issue with not being able to upgrade Litmus Edge through Litmus Edge Manager.&#x20; |
| **Installation:**<br />* Fixed issue with the domain name not being provisioned for Litmus Edge Manager when deployed from the Azure Marketplace.&#x20;                                                   |
| **Users:**<br />* Fixed issue with an incorrect success message displaying after an unsuccessful attempt to add a user.&#x20;                                                                             |

## Known Issues

| **Description**                                                                                                                                                                                                                                                                                                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Marketplace:**<br />* Marketplace applications may not launch successfully if you do the following:
  - In Litmus Edge Manager version 2.2.2, add a new catalog and import an application.&#x20;
  - Upgrade Litmus Edge Manager from 2.2.2 to 2.12.0.
  - Activate a Litmus Edge version 3.5.5.
  - Launch the imported application in the activated Litmus Edge 3.5.5.&#x20; |
| **Templates:**<br />* Uploading a template file circumvents the 512 character limit for *Template Description*.
* Two or more templates can share the same description.&#x20;                                                                                                                                                                                                    |
| **Digital Twins:**<br />* If a hierarchy is unsuccessfully saved, the error message provides no details on the cause of the error.&#x20;                                                                                                                                                                                                                                         |
| **Edge Devices:**<br />* The disk usage data for edge devices may not display correctly and hide the value.&#x20;
* The Docker version of Litmus Edge Manager may not display events after enabling the **Forward Events** feature. &#x20;                                                                                                                                       |


[title] Litmus Edge Manager 2.31.2
[path] Product Updates/2026/

Release Date: April 15, 2026

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Digital Twins:**<br />* Fixed issue where all fields were considered mandatory even though only Model Name and Attribute Name are required when importing dynamic attributes through a CSV file.                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Applications:**<br />* Fixed issue where values for private variables were visible in App Parameters for Marketplace applications.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Edge Devices:**<br />* Fixed issue where an SSL certificate error occurred and a `permission denied` message displayed when attempting to activate an edge device.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Alerts:&#xFEFF;**<br />* Fixed issue where some incident alerts were incorrectly marked as resolved in Litmus Edge Manager when Litmus Edge lost connectivity.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **System**:<br />* Fixed issue with Git Integration where temporary directories were not cleaned up which caused high disk usage.
* Fixed issue where Azure Entra ID SSO failed with a `Restart login cookie not found. It may have expired; it may have been deleted or cookies are disabled in your browser` error. This occurred after upgrading LEM from version 2.26.1 to 2.31.1.
* Fixed issue where upgrading Litmus Edge Manager directly from version 2.16.7 to 2.31.1 could fail with a `Failed to stop lem-admin-healthcheck.timer: Unit lem-admin-healthcheck.timer not loaded` error.
* Addressed vulnerabilities in third party components. |


[title] Increase Disk Size Of Azure Virtual Machine
[path] How-To Guides/Litmus Edge Manager Admin Console Guides/

You can add data disks to your existing Azure Virtual Machine (VM) if you encounter issues due to insufficient disk space or legacy applications.

:::hint{type="warning"}
**Caution:** Remember that you can only resize a disk to a larger size.
:::

# Before You Begin:

- Obtain an Azure account. See the [Microsoft Azure portal](https://azure.microsoft.com/en-us/features/azure-portal/).
- Access to Azure portal and a VM running on Azure.

# Step 1: Increase the Disk Size

As you deploy more applications, increase the load of your databases, or require more resources, you can add data disks to the existing VM to increase its disk size.

**To increase the size of your virtual machine data disk:**

:::hint{type="info"}
**Important:&#x20;**&#x43;hanging the size of the disk can also change the level of the disk tier and may have extra costs. For more information, see [Performance tiers for managed disks](https://learn.microsoft.com/en-us/azure/virtual-machines/disks-change-performance).&#x20;
:::

1. Open the *Microsoft Azure* home page, and then navigate to **Virtual Machines**.
2. Select the **VM** you want to resize and in the toolbar, click **Stop**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IplOLvKahqSbab7a7XZAl_image.png" size="70" width="1121" height="463" position="center" caption="Virtual Machines pane" showCaption="true"}
3. After stopping the machine, navigate to the **Settings** section and click on **Disks**.
4. From the list of attached disks to your VM, select the one you want to resize.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kJQsEe7mqbFGx3SPjdVx6_image.png "Disks page")
5. From the *Disk Overview* page, scroll to **Essentials** pane.&#x20;
   You can see the default size of your disk in *Disk Configuration*.
6. To increase its storage capacity, navigate to **Size + performance** under the *Settings&#x20;*&#x73;ection.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3NZhgCFiulSceuGXSNyO8_image.png "Disk Overview page")
7. On the resulting screen, modify the value of the **Custom disk size (GiB)&#x20;**&#x73;ection and click the **Resize&#x20;**&#x62;utton to finish the process.
   In this example, the size was increased from 30 to 64 GB and the performance tier has also changed accordingly from P4 to P6 as shown below.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/64SCU1RLNqdMgJmiP2NdL_image.png "Size + performance page")
8. Navigate back to *Virtual Machine&#x20;*&#x68;ome page to start the VM.&#x20;
9. Click the **Start&#x20;**&#x62;utton and wait until the *Status&#x20;*&#x73;ection changes from `Stopped (deallocated)` to `Running`.

# Step 2: Verify the Disk Size

The next step is to verify that both the partition and filesystem have been successfully resized to ensure that the disk can now be used with the new storage space size.&#x20;

To do this, [connect to the VM through SSH](https://docs.bitnami.com/azure/faq/get-started/connect-ssh/) and execute the following command:

```shell
$ df -dh
```

The output shows that the disk space was correctly resized.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/963unYctMoUZ26XXHF30g_image.png "Output window")


[title] Set a Static IP Address
[path] How-To Guides/Litmus Edge Manager Admin Console Guides/

You can set a static IP address for Litmus Edge Manager instead of using DHCP.

If you have installed Litmus Edge Manager on ESXi and there is no IP address shown to access the interface, you must set a static IP address.

If you would like to change the current IP address used to access Litmus Edge Manager, see [Change the IP Address of Litmus Edge Manager](docId\:qcv7MR9ma_fzEqjKizQpC).&#x20;

Depending on your version of Litmus Edge Manager, refer to the appropriate steps.&#x20;

# Litmus Edge Manager Version 2.16.0 and Later

These steps are for Litmus Edge Manager 2.16.0 and later on Ubuntu 22. Network configuration is managed by Netplan [https://netplan.io/](https://netplan.io/).

**To set a static IP address:&#x20;**

1. Login to the VM console.&#x20;
2. Use the following command to get the filename in the NetPlan config directory. Depending on the Linux distribution NetPlan configuration, the file can have different filenames.&#x20;
   `sudo ls -l /etc/netplan`

The default configuration looks like the following:

```yaml
network:
  ethernets:
    ens192:
      dhcp4: true
  version: 2
```

You will need to update this configuration. As an example, you will disable DHCP and set the static IP address of 10.17.8.146/22 with the default router of 10.17.8.1. The configuration will be updated to the following:

```yaml
network:
  ethernets:
    ens192:
      dhcp4: false
      addresses:
        - 10.17.8.146/22
      routes:
        - to: default
          via: 10.17.8.1
  version: 2
```

Apply the configuration with the following command.&#x20;

:::BlockQuote
sudo netplan apply
:::

Once the new IP address is set, if the base domain name was set as an IP address, log in to the Litmus Edge Manager Admin Console (https\://\[LEM IP address]:8446) and update the base and remote domain names. See [Domain Settings](docId\:MC8Z1bK3yWcKQq4-kupCv) to learn more.&#x20;

If you get an error message that the network interface configuration failed, see [Static IP Address Error](docId\:qcfAzyS-rv5d-3oeSlLf3) to resolve it.&#x20;

# Litmus Edge Manager Version 2.15.0 and Earlier

These steps are for Litmus Edge Manager 2.15.0 and earlier on Ubuntu 18.&#x20;

**To set a static IP address:&#x20;**

&#x20;    1\. From a command prompt, enter the following:

:::BlockQuote
NEW\_IP=xxx.xxx.1.222
sudo /opt/lem/bin/lem-update-domain-names.sh $NEW\_IP $NEW\_IP
sudo /opt/lem/bin/stop-all-nomad-jobs.sh
sudo vi /etc/netplan/01-netcfg.yaml
:::

The `.yaml` file opens.

:::hint{type="info"}
**Note**: The `.yaml` file is located in `/etc/netplan/01-netcfg.yaml`.
:::

&#x20;    2\. Enter the following lines in the `.yaml `file while substituting `x` with the relevant numbers:

```yaml
network:
  version: x
  ethernets:
    eth0:
      dhcp4: false
      addresses: [xxx.xxx.x.xxx/xx]
      gateway4: xxx.xxx.x.x
      nameservers:
        addresses: [x.x.x.x,x.x.x.x]
```

&#x20;    3\. From a command prompt, enter the following:

:::BlockQuote
sudo netplan apply
sudo reboot
:::


[title] Litmus Edge Manager 2.10.1
[path] Product Updates/2023/

Release Date: May 05, 2023

## New Features

The following are new features introduced in this software release:

| **Description**                                                                                                                                                                                                                                                                                    |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Marketplace:**<br />* When an application release containing the special variable named `EDGE_API_TOKEN` is deployed to a Litmus Edge instance, the Litmus Edge will generate a token (REST API Key) named `MPC-APP` and pass it to the application release's respective Docker container.&#x20; |
| **Integration:**<br />* *Prometheus* and a Prometheus *Alert Manager&#x20;*&#x69;s now supported.                                                                                                                                                                                                  |
| **Network:**<br />* Added a new *DNS* tab, enabling you to configure the DNS servers that Litmus Edge Manager connects to.                                                                                                                                                                         |

## Enhancements and Features

The following features and enhancements are included in this software release:

| **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Litmus Edge Manager instances are now more compatible with Load Balancers. Previously certain Litmus Edge requests would be dropped.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Dashboard:**<br />- *VM Time* has been reworded to *System Time*.
- A warning in Admin Console > Dashboard will be shown if *System Time* in and your Local time differs by 10 minutes.
- Large numbers in Admin Console > Dashboard have been altered to be easier to read.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **Licenses:**<br />- Whitespace is no longer allowed while entering a license key.
- Whe&#x6E;*&#x20;Site* license is chosen in Admin Console > Settings > Licenses, *Available Licenses* will no longer be displayed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Edge Devices:**<br />- Redesigned the user interface for child DeviceHub devices.
- When *Forward Events* is enabled, and the connection with a Litmus Edge is lost, a more detailed error message is now displayed.
- Parameterized templates can now be successfully downloaded from Admin Console > Edge Devices > Edge Device Templates.
- When searching for a password policy (in Admin Console > Edge Devices > Edge Password Policies) with a keyword, only matching policy names will be displayed. Previously, both matching policy names and matching policy descriptions were displayed.
- When adding a new Edge Remote network (in Admin Console > Edge Devices > Edge Remote Networks), all IPv4 addresses that are in the format `0.xxx.xxx.xxx/8` are no longer allowed. |
| **Applications:**<br />- When you include the `EDGE_API_TOKEN` parameter in an application release deployment, the parameter will be read only.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **Software**:<br />- Applying software updates for Litmus Edge 3.5.0+ is now more reliable.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Company Settings:**<br />- When adding a new user, a warning will be displayed when SMTP is not set.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Data Lifecycle:**<br />- In cases where there are multiple versions of the same archived file, version numbers have been added to the file name.&#x20;
- Temporary files are now created in the `/var/lib/lem/tmp` directory.
- Free diskspace space limit can now only be set between 0%-50%.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **Network:**<br />- When DHCP is disabled, the interface will now require at least one IP address with a gateway.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| **Support:**<br />- Concurrent support bundle downloads are no longer allowed.
- When support bundle generation fails, an error message will now be displayed.
- Support bundles now also contain a configuration DB dump.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| * Network configuration MTU is now configurable.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                                                                                                           |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Login:**<br />* Fixed an issue where incorrect *System Time* prevented logins.                                                                                                                                                                                                                          |
| **Dashboard:**<br />* Fixed an issue with *Dashboard* *tagcount&#x20;*&#x62;eing inconsistent with the tag count in [Edge Devices](docId\:pqRVYqspADLvoCpHmC3WA).
* Fixed an issue where the pagination block in Admin Console > Dashboard was displaying even though there are no statistics to display. |
| **Edge Devices:**<br />* Fixed an issue where edge device details were not displaying while license info was still loading.
* When Metrics are not available, DeviceHub devices will now display `Metrics are not available` rather than incorrectly displaying them as offline.                          |
| **Activation:**<br />* Fixed an issue with activation fails when the User Root CA certificate is not uploaded.                                                                                                                                                                                            |
| **Templates:**<br />* Fixed an issue where parameterized templates cease being parameterized when the scope is edited                                                                                                                                                                                     |
| **Alerts:**<br />* Fixed an issue with emails not being successfully sent.                                                                                                                                                                                                                                |
| **Marketplace:**<br />* Fixed an issue where `enum`-type variables weren't displaying during application deployment.
* Fixed an issue where the Litmus Edge Manager Site license with catalog feature did not enable the *Marketplace* feature and the *Application* page.                                |
| **Data Lifecycle:**<br />* Fixed an issue where archived files may be overwritten.
* Fixed an issue where Purge Policies weren't executing properly.&#x20;
* Fixed an issue where events data is not automatically purged after archiving.                                                                |
| **Integration:**<br />* Fixed an issue with broken *Tabix* UI when accessing the UI from Litmus Edge Manager.                                                                                                                                                                                             |
| **Network:**<br />* Under *NTP Client Settings*, when adding an incorrect NTP server, the error message now contains a description of the error.                                                                                                                                                          |
| **Email:**<br />* Fixed an issue with *Email Settings* not being available for the Kubernetes version.                                                                                                                                                                                                    |
| **Licenses:**<br />* Fixed an issue where trial license in Admin Console > Settings > Licenses displayed incorrectly expired features.                                                                                                                                                                    |
| **Support:**<br />* Fixed an issue where support bundles couldn't be downloaded.                                                                                                                                                                                                                          |
| **Security:**<br />* Resolved a vulnerability related to CVE-2022-23806.                                                                                                                                                                                                                                  |

## Deprecated Components and Features

The following components/features will no longer be available:

| **Description**                                                                                                                                                                                                |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Company List:**<br />* When creating a new company, domain resolving validation has been removed.                                                                                                            |
| **Edge Devices:**<br />* The *Remote* tab has been removed.                                                                                                                                                    |
| **Remote Access:**<br />* The *ZeroTier* tab has been removed.                                                                                                                                                 |
| **Alerts:**<br />* Most *System Triggers* have been removed except for alert failure system trigger.
* When adding/editing triggers, *Data* sources have been removed. They have been replaced with *Metrics*. |
| **Network:**<br />* The *Remote network* tab (containing ZeroTier Network customization) in Admin Console > Settings has been removed.                                                                         |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Templates:**<br />* When uploading an invalid Parameterized Template (*.zip* folder), it will yield a successful result message but won't add the template.&#x20; |
| **Alerts:**<br />* Metrics alerts for Connector online status may not operate properly.                                                                             |


[title] Connect Litmus Edge Instance to License Server
[path] How-To Guides/Litmus Edge Manager Admin Console Guides/

You can connect a Litmus Edge instance directly to a License Server within the Litmus Edge Manager (LEM) Admin Console. This method allows you to configure the license server on the Edge device itself, bypassing the usual activation process initiated from the LEM user interface.

Before You Begin


- Ensure you have an unactivated instance of Litmus Edge.
- Familiarity with [Licenses](docId\:vbAuxHNHFHDN2MK8-8zgQ) and [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O).&#x20;

# Step 1: Generate and Copy the Configuration Key in Litmus Edge Manager

1. Log in to the **Litmus Edge Manager (LEM) Admin Console**.&#x20;
2. From the navigation panel, select **License Server Management**.&#x20;
3. In the *License Server Management* pane, access the **License Clients&#x20;**&#x74;ab.&#x20;
4. Click the **Add&#x20;**&#x69;con to create a new request for a device.&#x20;
   The *Create New Request&#x20;*&#x64;ialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/plDOBj9uJ0tO3buyzNAeZ_image.png" size="70" width="1280" height="648" position="center" showCaption="false"}
5. Configure the request by entering the following:&#x20;
   - **Label:** Unique name to identify the device.
   - **URL:** Review the URL for the license server.&#x20;
   - Click **Create**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eNB4wSI2cJtK-4bLxbwm4_image.png" size="70" width="1205" height="615" position="center" showCaption="false"}
6. The *New Request Created&#x20;*&#x64;ialog box displays the activation request/configuration key.&#x20;
7. Click the **Copy&#x20;**&#x69;con for the activation request to copy it to your clipboard.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wMRQVOCDsA0b_qJzjd0M9_image.png" size="50" width="497" height="314" position="center" showCaption="false"}

# &#x20;Step 2: Access License Settings in Litmus Edge

1. In a new browser window, log in to the **Litmus Edge&#x20;**&#x69;nstance you want to activate.&#x20;
2. From the navigation panel, navigate to **System&#x20;**> **Activation&#x20;**> **License**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hVaSsZQkR702mzmC8BEvB_image.png" size="70" width="1280" height="815" position="center" showCaption="false"}

# Step 3: Set the License Server Configuration

1. From the *License Server Settings* section, click **Set Server**.&#x20;
   The *Set License Server Configuration* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ehdIfuQHXE5q46cx0gJmJ_image.png" size="70" width="1230" height="536" position="center" showCaption="false"}
2. In the *Configuration&#x20;*&#x66;ield, paste the key you copied earlier.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1Qxws4oWQlM8Pe9sWatMy_image.png" size="70" width="1280" height="727" position="center" showCaption="false"}
3. Click **Save**.

If the activation is successful, a success message is displayed. Once the license server is set, you will have access to the site license.

:::hint{type="success"}
**Tip:&#x20;**&#x59;ou must refresh the page if you don't see the *UP* status.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4MrSFFsDoQ4N4TZ81oTYE_image.png" size="70" width="1280" height="484" position="center" showCaption="false"}
:::

# Step 4: Verify the Connection in Litmus Edge Manager

1. Navigate back to **LEM Admin Console** > **License Server** **Management** > **License Clients.**
2. Under the list of edge devices authorized on the license server, you can find the *Label*, *Host ID*, *Host Name*, *Company/Project*, *Last Seen*, *Request Type*, and action for revoking activation.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sUUQMldRc9fSwwSl_CTXB_image.png)


[title] Litmus Edge Manager 2.3.3
[path] Product Updates/2022/

Release Date: March 25, 2022

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                          |
| ---------------------------------------------------------------------------------------- |
| Fixed issue with inability to access the Users tab in Litmus Edge Manager Admin Console. |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                               |
| --------------------------------------------------------------------------------------------------------------------------------------------- |
| For FireFox browser with self-signed certificate, there are failures on all file uploads of Litmus Edge on Litmus Edge Manager Admin Console. |
| Parametrized templates are not supported for instance-level templates                                                                         |
| The Admin Dashboard usage stats are inconsistent with the Data Lifecycle Management statistics                                                |


[title] Litmus Edge Manager 2.16.0
[path] Product Updates/2024/

Release Date: January 4, 2024

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).&#x20;

## Enhancements and Features

| **Description**                                                                                                                                                                                                                                                                            |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Domain/SSL**:<br />* If there are issues when trying to change SSL settings, the error message now provides details on the cause of the issue.&#x20;
* You can no longer upload SSL or CA certificates with private keys.&#x20;
* You can now view more info for SSL certificates.&#x20; |
| **Edge Remote Networks:**<br />* The range of the MTU setting is now between 576 bytes and 1500 bytes. Previously, the range was between 1280 bytes to 1500 bytes.                                                                                                                         |
| **Admin Console**:<br />* Validation of remote domain name is no longer required.&#x20;                                                                                                                                                                                                    |
| **Admin Console Settings**:<br />* In **Upgrade**, the *New Versions* section is now renamed *Software Update Files* for better clarity.&#x20;                                                                                                                                             |

## Resolved Issues

| **Description**                                                                                                                                                                                                                                                                         |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Devices**:<br />* Fixed issue with device descriptions updated in Litmus Edge not updating in Litmus Edge Manager.                                                                                                                                                               |
| **Admin Console:&#x20;**<br />* **&#xFEFF;**&#x46;ixed issue with the Admin Console user interface freezing if you try to upload a user certificate with a passphrase-protected private key.&#x20;
* ﻿Fixed issue with updated MTU values in **Edge Remote Networks** not saving.&#x20; |
| **Backup**:<br />* Fixed issue with errors being generated for Grafana authentication after restoring an LEM backup.&#x20;                                                                                                                                                              |
| **Integration**:<br />* Fixed issue with insufficient space errors when trying to archive data for Clickhouse.&#x20;                                                                                                                                                                    |
| **User UI Settings**:<br />* Fixed issue with not being able to successfully create a topic in **User UI Settings** > **Credentials&#x20;**> **Topics&#x20;**&#x77;ith the name "+".&#x20;                                                                                              |
| **Integration**:<br />* Fixed issue with Tabix not being able to successfully use an API call to load the Monaco editor.&#x20;                                                                                                                                                          |


[title] Litmus Edge Manager 2.7.0
[path] Product Updates/2022/

Release Date: December 30, 2022

## New Features

The following are new features introduced in this software release:

| **Description**                                                                                                                                           |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| A new Task List (Task Details, SubTask log) has been introduced to monitor resource-heavy tasks applicable to multiple Litmus Edge instances.             |
| When accessing the version number, a new option in **Personal Settings&#x20;**&#x69;s available. The **Connected Feature** enables the customer chat box. |
| **Integration:**<br />* Log forwarding to an external Syslog server is now supported.                                                                     |
| **Admin Console Settings:**<br />* Litmus Edge Manager now offers long-term API Tokens.                                                                   |

## Enhancements and Features

| **Description**                                                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Login:**<br />* A loading indicator now displays when logging in to Litmus Edge Manager.                                                                               |
| **Overall:**<br />* Improved performed for operations (such as deploying) that apply to multiple Litmus Edge instances. 
* The Admin Console menu has been redesigned.   |
| **Dashboard:**<br />* System (Device and Up) time is now displayed.                                                                                                      |
| **Dashboard:**<br />* Redesigned Dashboard layout.
* Every alert will now contain details about the originating source.                                                  |
| **Edge Devices:**<br />* Edge Device time is now displayed.                                                                                                              |
| **Edge Devices:**<br />* Litmus Edge licenses are now removable. 
* Online licenses can now be upgraded.                                                                 |
| **Activation:**<br />* When activating Docker type edge devices, a failed activation error message now contains additional details.                                      |
| **Software:**<br />* Edge Device names with MAC addresses are now displayed instead of Edge Device ID.                                                                   |
| **Marketplace:**<br />* LEM users with a Grafana Administrator role will now also receive an Admin Role in the Grafana organization.                                     |
| **Admin Console Settings:**<br />* Offline activation for LEM licenses are now supported.                                                                                |
| **Asset Management Model:**<br />* Changed the model modification user interface with new customizations (Static Attributes/Transformation/Dynamic Attributes/Hierarchy) |
| **Integration:**<br />* Updated Tabix to the latest version of 22.15.7.                                                                                                  |

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                                                |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Keycloak:**<br />* Fixed an issue with Keycloak redirected URLs.                                                                                                                                                                             |
| **Sites:**<br />* Fixed an issue where uploading new site images doesn’t replace the old image, thereby wasting diskspace.                                                                                                                     |
| **Applications:**<br />* Fixed an issue where it is possible to deploy an application even before the Litmus Edge has the capability to receive the application.                                                                               |
| **Edge Devices Details:**<br />* When adding a license key, online/offline license activation is now re-enabled. 
* Fixed an issue with unsuccessful attempts to add datapoint licenses.                                                       |
| **Features:**<br />* Fixed an issue related with the Prometheus URL in Grafana settings.                                                                                                                                                       |
| **Admin Console:**<br />* Fixed an issue with the Admin Console not fully working without running Hazelcast. 
* Fixed an issue where a site-licensed, installed Litmus Edge Manager was displaying number of days before the license expires.  |
| **Asset Management:**<br />* Fixed an issue where a Litmus Edge-created instance did not show up on Litmus Edge Manager.                                                                                                                       |
| **Admin Console Settings:**<br />* Fixed an issue where disabling EdgeEvents did not disable the User UI: Edge Devices > Edge Device Details > Events Tab.                                                                                     |
| **Security:**<br />* Cipher suites have been updated to address SSL LUCKY13 vulnerability.                                                                                                                                                     |

## Deprecated Components and Features

The following components/features will no longer be available:

| **Description**                                                                                                                                                                                  |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Settings:**<br />* The OMA Registry tab has been removed.                                                                                                                                      |
| **Admin Console Settings:**<br />* Remote UI, Parametrized template, EdgeRemoteNetwork are now no longer experimental features. They are now fully part of Litmus Edge Manager User UI features. |
| **Admin Console Settings:**<br />* For the current version, the version size has been removed.                                                                                                   |


[title] Litmus Edge Manager 2.5.1
[path] Product Updates/2022/

Release Date: October 14, 2022

## New Features

The following are new features introduced in this software release:

| **Description**                                                                                                                                                                        |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Admin Console Settings:**<br />* Google Cloud Platform Cloud Credentials can be stored in `.json` format.
* Storage settings can be set to either *Local* or *Google Cloud Storage*. |

## Enhancements and Features

The following features and enhancements are included in this software release:

| **Description**                                                                                                                                                                                                                                                    |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Overall:**<br />* Restructured *Settings* menu.
* Removed various critical security vulnerabilities throughout Litmus Edge Manager.                                                                                                                              |
| **Company List:**<br />* Companies are now split between *Edge Lifecycle Management* and *Asset Management*.
  - *Edge Lifecycle Management*: Where users can manage Litmus Edge devices.
  - *Asset Management*: Where users can access the Digital Twins module. |
| **Applications:**<br />* Catalogs can now also be pushed to Litmus Edge devices.<br />**Applications:**<br />* Logs are now provided for multi-container application.                                                                                              |
| **Alerts:**<br />* Tag values can now be used as a Source of a trigger and/or as part of the return message.                                                                                                                                                       |
| **Admin Console Settings:**<br />* Support Bundle now contains all user actions.                                                                                                                                                                                   |

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Installation and Configuration:**<br />* Litmus Edge Manager will now successfully launch on Virtual Machines. Previously failed with error: `/usr/bin/vaultbot: No such file or directory`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Edge Devices:**<br />* When accessing a Litmus Edge using RemoteUI, its *Flow Manager*>*Flow Definition*>*dashboard* external link was previously not reachable. (Still reachable when accessing the Litmus Edge directly, without using the Litmus Edge Manager RemoteUI.) This has been fixed.<br /><br />**Edge Devices:**<br />* Litmus Edge Manager can now successfully create a backup of an activated, licensed-provisioned Litmus Edge instance. Previously failed to create backup with `message: "HTTP error: status=500 INTERNAL_SERVER_ERROR; response=couldn't upload backup: unexpected response"`.
* Resolved an issue when creating a backup of Litmus Edge instance with perpetual (node-locked) license. |
| **Activation:**<br />* Creating/modifying an activation configuration with a *Lease TTL* value beyond CA certificate expiration date is now restricted.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Applications:**<br />* For an application that has been deployed to multiple Litmus Edge devices, all the Litmus Edge devices will now be displayed. Previously only displayed one Litmus Edge device.
* Marketplace Catalogs in *Draft* state will no longer be available for deployment to Litmus Edge devices.
* Reworded *Upgrade Application* to *Update Application*.                                                                                                                                                                                                                                                                                                                                                 |
| **Users:**<br />* Deleting a user with Grafana Administrator role will now automatically delete that same user from Grafana.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **&#x20;Docker:**<br />* Uploading a docker image now shows correct creation date.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

## Deprecated Components and Features

The following components/features will no longer be available:

| **Description**                                                   |
| ----------------------------------------------------------------- |
| **Admin Console:**<br />* Separate port 8445 is no longer needed. |


[title] Troubleshooting
[path] /


[title] Acronym List
[path] Resources/

While many acronyms have become part of our common language, with their meanings well known to people in the industry, it can be entertaining to review the origin or decoded version of an acronym. The following list includes common acronyms found in the product documentation.

| **Acronym**      | **Decoded**                                          | **Description**                                                                                                                                                                                                                                                                                                                             |
| ---------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **ACL**          | Access Control List                                  | Lists the users and permissions for system access.                                                                                                                                                                                                                                                                                          |
| **AES**          | Advanced Encryption Standard                         | This security algorithm encrypts and decrypts data using the same encryption key. Software uses this standard to enforce privacy controls on each device and connection.                                                                                                                                                                    |
| **AMQP**         | Advanced Message Queuing Protocol                    | Open standard for business application messaging.                                                                                                                                                                                                                                                                                           |
| **BPM**          | Business Process Management                          | This business solution focuses on optimization of business processes and workflows.                                                                                                                                                                                                                                                         |
| **CDN**          | Content Delivery Network                             | Network nodes and content are located closer to the end user than with typical network configurations.                                                                                                                                                                                                                                      |
| **CIDR**         | Classless Inter-Domain Routing                       | The standard for creating unique identifiers for networks and individual devices.                                                                                                                                                                                                                                                           |
| **CNC**          | Computer Numerical Control                           | This pre-programmed sequences of commands enables automation of machine tools.                                                                                                                                                                                                                                                              |
| **CoAP**         | Constrained Application Protocol                     | Web-transfer protocol for IoT constrained nodes and networks; designed for machine-to-machine (M2M) applications.                                                                                                                                                                                                                           |
| **CRM**          | Customer Relationship Management                     | This software manages a database of interactions with customers and potential customers.                                                                                                                                                                                                                                                    |
| **CSR**          | Certificate Signing Request                          | Send this encoded file to a certificate authority for creation of an SSL certificate.                                                                                                                                                                                                                                                       |
| **DCS**          | Distributed Control System                           | A computerized control system for a process in which autonomous controllers are present in the system without a central operator supervisory control.                                                                                                                                                                                       |
| **DTC**          | Diagnostic Trouble Code                              | Engine control systems in vehicles issue DTCs for problems and failures. For example, a DTC triggers the check engine light in an automobile.                                                                                                                                                                                               |
| **DTLS**         | Datagram Transport Layer Security                    | Protocol for secure communications for datagram-based applications (UDP transport protocol).                                                                                                                                                                                                                                                |
| **ERP**          | Enterprise Resource Planning                         | This software integrates and manages core business functions/units in a shared database.                                                                                                                                                                                                                                                    |
| **ETL**          | Extract, Transform, and Load                         | This data warehousing term refers to a process of extracting data from one source, transforming the data, and then storing it in another database.                                                                                                                                                                                          |
| **FTP**          | File Transfer Protocol                               | A network protocol that is used to transfer files between a client and a server.                                                                                                                                                                                                                                                            |
| **HID**          | Human Interface Device                               | USB-connected devices, such as barcode scanners. In Litmus Edge, an HID remains disconnected because HIDs send data only when there is data to send.                                                                                                                                                                                        |
| **IoT and IIoT** | Internet of Things and Industrial Internet of Things | Communication among a large variety of devices and protocols, along with the collection of data from those devices, enables data analysis and efficient management and planning.                                                                                                                                                            |
| **IPC**          | Industrial PC                                        | PC-based computing platform for industrial applications.                                                                                                                                                                                                                                                                                    |
| **IPSO**         | Internet Protocol for Smart Objects                  | This security standard for data transmission (RFC 1108) promotes IoT device interoperability to enable “smart object” capabilities.                                                                                                                                                                                                         |
| **LWM2M**        | Lightweight Machine to Machine                       | The lightweight IoT device management protocol from the Open Mobile Alliance (OMA) is designed for sensor networks. See [OMA LightweightM2M (LwM2M) Object and Resource Registry](http://www.openmobilealliance.org/wp/OMNA/LwM2M/LwM2MRegistry.html).                                                                                      |
| **MES**          | Manufacturing Execution System                       | This system tracks the processes, data, and outcomes–from raw materials to finished goods–of a manufacturing process. This includes such things as materials tracking, management of overall equipment effectiveness (OEE), and resource scheduling.                                                                                        |
| **MQTT**         | Message Queuing Telemetry Transport                  | This lightweight messaging protocol uses a publish-subscribe method for connecting to sensors and devices.                                                                                                                                                                                                                                  |
| **NATS**         | Neural Autonomic Transport System                    | This messaging platform provides a text-based publish-subscribe protocol. This NATS name compares its functions with a central nervous system.                                                                                                                                                                                              |
| **NTP**          | Network Time Protocol                                | Devices, including Litmus Edge devices, use NTP for time synchronization.                                                                                                                                                                                                                                                                   |
| **OAuth**        | Open Authorization                                   | OAuth 2.0, an open standard for authorization and authentication, can be configured in Litmus Edge Manager. Other authorization methods supported in Litmus Edge Manager, include:<br />* Query Auth (a method of signing API requests with a key)
* Header Auth (HTTP authorization header)                                                |
| **OEE**          | Overall Equipment Effectiveness                      | The standard for improving manufacturing productivity.                                                                                                                                                                                                                                                                                      |
| **OMNA**         | Open Mobile Alliance Naming Authority                | The operational naming authority handles registration of assigned names and numbers to ensure interoperability of devices and software using OMA technology.                                                                                                                                                                                |
| **OPC**          | Open Platform Communications                         | Standard interface used to communicate with industrial devices. Legacy solutions used this standard for accessing devices. As manufacturing systems evolved, a new interoperability standard, OPC UA, was developed by the [OPC Foundation](https://opcfoundation.org/about/what-is-opc/).                                                  |
| **OPC DA**       | Open Platform Communications Data Access             | An OPC Foundation specification that defines how real-time data can be transferred between a data source and a data sink (for example: a PLC and an HMI) without either of them having to know each other's native protocol.                                                                                                                |
| **OPC UA**       | Open Platform Communications Unified Architecture    | This machine-to-machine protocol for industrial automation supports a Service-Oriented Architecture (SOA).                                                                                                                                                                                                                                  |
| **OTA**          | Over-the-Air                                         | Over-the-Air updates facilitate device software updates. OTA refers to the methods for distributing software, configuration settings, and even updating encryption keys.                                                                                                                                                                    |
| **PaaS**         | Platform as a Service                                | Litmus offers Litmus Edge Manager, a cloud platform (PaaS) that provides connectivity with IoT systems to collect data that enables device monitoring and management.                                                                                                                                                                       |
| **PLC**          | Programmable Logic Controller                        | A specialized small computer with a built-in optimized operating system used in industrial machines and sensors.                                                                                                                                                                                                                            |
| **RBAC**         | Role-Based Access Control                            | Enables customization of access control lists, which define who can access data, based on their assigned roles.                                                                                                                                                                                                                             |
| **REST**         | Representational State Transfer                      | REST provides a web service for exchanging messages between devices. Application programming interfaces (APIs) can be used to glean essential information from JSON over HTTP (refer to [REST API with JSON](https://technologyconversations.com/2014/08/12/rest-api-with-json/)). Users can use REST APIs to develop their own interfaces. |
| **SCADA**        | Supervisory Control and Data Acquisition             | An architecture for industrial control systems that includes sensors, control relays, PLCs, computers, and applications that directly interface with managed systems. The SCADA HMI (Human-Machine Interface) enables interactivity with devices.                                                                                           |
| **SOA**          | Service-Oriented Architecture                        | This approach to building systems focuses on business processes for which services need to be developed and supported. This is a departure from the development of systems that focus on hardware, software, and networking resources.                                                                                                      |
| **SOAP**         | Simple Object Access Protocol                        | SOAP provides a web service that defines a standard communication protocol for exchanging messages between devices.                                                                                                                                                                                                                         |
| **SSH**          | Secure Shell                                         | Protocol for secure communication over a network.                                                                                                                                                                                                                                                                                           |
| **SSL**          | Secure Socket Layer                                  | Protocol for secure communication over a network.                                                                                                                                                                                                                                                                                           |
| **TFA**          | Two Factor Authentication                            | Adds an extra layer of security for user logins.                                                                                                                                                                                                                                                                                            |
| **TLS**          | Transport Layer Security                             | Protocol for secure communication over a network.                                                                                                                                                                                                                                                                                           |
| **WSDL**         | Web Services Description Language                    | XML language used to describe web services functions. See [OMA WSDL Packages](http://www.openmobilealliance.org/wp/OMNA/WSDL-packages/WSDL-packages.html).                                                                                                                                                                                  |


[title] Apply a New Password Policy to a Litmus Edge Device
[path] How-To Guides/Litmus Edge Manager Admin Console Guides/

In this use case, you will create a new password policy in Litmus Edge Manager. Then you will apply it to a Litmus Edge device and try to change the password to confirm it adheres to the new password policy.

# Before You Begin

If you haven't yet connected your Litmus Edge instance to Litmus Edge Manager, see [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB).

# Step 1: Create a New Password Policy in Litmus Edge Manager

In this step, you will create a new password policy in Litmus Edge Manager. The created policy will be later applied to a Litmus Edge instance.

**To create a new password policy:**

1. Log in to the Litmus Edge Manager (LEM) Admin Console at the following URL: **https\://\[LEM IP address]:8446**.
2. From the navigation panel, select **Edge Devices**.
   The *Edge Software Update* pane appears.&#x20;
3. From the Edge Device navigation sub-panel, select **Edge Password Policies**.
   The *Edge Password Policies* pane appears.
4. Expand the *Default password policy* section and click **Copy**.                                                                  The *Create Password Policy* dialog appears.
5. In the **Policy Name** field, enter **New Password Policy**.
6. In the **Description&#x20;**&#x66;ield, enter a description.
7. Click **Save**.
8. Click the created **New Password Policy&#x20;**&#x62;o&#x78;*.&#x20;*&#x54;he password policy box expands with additional fields.
9. For the following fields, enter the following details:
   - **Minimum password length**:  8
   - **Maximum password length**: 16
   - **Auto generated password length**: 12
   - **Minimum uppercase characters**: 1
   - **Minimum lowercase characters**: 3
   - **Minimum number of digits**: 1
   - **Special characters**: \~!@
   - **Minimum special characters**: 1

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/S4Cfz28c3HYDGhPe5Q4K2_image.png" size="80" width="1765" height="791" position="center" caption="Password policy parameters" showCaption="true"}

# Step 2: Apply the Created Policy to a Litmus Edge in Litmus Edge Manager

From the previous step's created policy, you will then apply the policy settings to a selected Litmus Edge instance.

**To apply the password policy to a Litmus Edge instance:**

1. Log in to Litmus Edge Manager.
2. Select a company.
   The *Projects* pane appears.
3. Select the appropriate project.&#x20;
4. The *Dashboard* pane appears for the project.
5. From the Navigation panel, select **Edge Devices**.
   The *Edge Devices* pane appears.
6. Click an edge device **ID** link in the Edge Devices pane.
   The selected *Edge Device Details* page open with the **Info** tab.
7. Click the **Policy** tab.
8. From the *Selected Policy* dropdown menu, select the created **New Password Policy&#x20;**&#x66;rom Step 1.
9. Click **Save**.&#x20;
   - If successful, the bottom right corner will display *Policy for device saved.*
   - If unsuccessful, the Litmus Edge's current password does not adhere to the password policy as indicated by **New Password Policy**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5lTYKLXgIZqzcO010BnYh_image.png" size="80" width="1765" height="791" position="center" caption="New Password Policy applied to a Litmus Edge" showCaption="true"}

# Step 3: Confirm Received Policy Settings Change in Litmus Edge

After applying a password policy, you will then access the Litmus Edge instance that just received the policy. From there, you will then confirm the Litmus Edge instance has successfully received the password policy's settings.&#x20;

**To confirm the received password policy changes**:

1. Log in to Litmus Edge.
2. From the navigation panel, navigate to **System&#x20;**>**&#x20;Policy Management**.
   The *Policy Management&#x20;*&#x70;ane appears.&#x20;
3. From the *Password Policy* section, you can see the received password policy.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dIM8tt58km2jTblAqhqY0_image.png" size="80" width="1765" height="791" position="center" caption="Received password policy" showCaption="true"}

# Step 4: Attempt to Change Litmus Edge Password to Verify Password Policy

Finally, after receiving the password policy settings, you will attempt to change the password of the Litmus Edge instance to confirm the password policy settings.

**To attempt to change the Litmus Edge instance password**:

1. Log in to Litmus Edge.
2. Click your user icon in the top-right corner and select **User Profile**.&#x20;
3. In the *New Password* and *Confirm New Password* field, enter a password that goes against **New Password Policy**. You will see the new requirements being listed.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/V3j6PjCSnJ9qvWwCLG3ad_image.png" size="80" width="1765" height="791" position="center" caption="Attempting to change password" showCaption="true"}


[title] Litmus Edge Manager 2.3.5
[path] Product Updates/2022/

Release Date: August 1, 2022

## Enhancements and Features

The following features and enhancements are included in this software release:

| **Description**                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------- |
| For pre-signed URLs, port 443 can be used in lieu of port 8446. This prevents issues with self-signed certificates and SSL on non-standard ports. |
| **Edge Devices:**<br />* Litmus Edge Device Support Bundle files can now be downloaded.                                                           |

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                   |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Applications:**<br />* Marketplace applications can now be deployed to multiple edge devices concurrently. Previously, deployment had to be done consecutively. |


[title] Litmus Edge Manager 1.9.0
[path] Product Updates/2020/

Release Date: October 16, 2020

## Enhancements and Features

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                                                                                                       |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **New - Data Lifecycle Management:**<br />* Data LifeCycle Management allows user to manage collected data for analysis and trace it to the point of storage or cleaning
* Users can monitor data usage and download collected data in csv format
* Users can define policy to archive and purge data |
| **New - Trigger alert on Device Status:**<br />* Users have ability to create incidents and send alerts based on changing device online status                                                                                                                                                        |
| **Compatibility with both Litmus Edge 2.6.x and 3.x:**<br />* Litmus Edge Manager-1.9.0 can manage both Litmus Edge 2.6.x and 3.x                                                                                                                                                                     |
| **Miscellaneous:**<br />* Litmus Edge friendly name available on Litmus Edge Manager
* Health check on minio before domain name change
* Various bug fixes
* General UI and UX improvements                                                                                                           |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                                                                                     |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Failure on all file upload of Litmus Edge on Litmus Edge Manager Admin Console on FireFox browser with self-signed certificate&#xD;
- Upgrade Litmus Edge Manager-1.8.4 to 1.9.0 isn't compatible |


[title] Litmus Edge Manager 2.14.0
[path] Product Updates/2023/

Release Date: September 26, 2023

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).&#x20;

## Enhancements and Features

| **Description**                                                                                 |
| ----------------------------------------------------------------------------------------------- |
| **Integration**:<br />* Bridge performance between MQTT and Kafka is now improved.&#x20;        |
| **Alerts:**<br />* You can now customize the email message and subject for metric alerts.&#x20; |
| **Licenses:**<br />* You can now delete existing Litmus Edge Manager licenses.&#x20;            |

## Resolved Issues

| **Description**                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Settings**:<br />* Fixed issue with the firewall rule for NTP not being applied after installing or upgrading Litmus Edge Manager.&#x20;                                                                                                                                                                                                                                                         |
| **Users**:<br />* Fixed issue with insecure password policies being accepted.&#x20;
* When you change a user password and don't meet all the policy requirements, an error message now displays informing the user with these specific details.&#x20;                                                                                                                                              |
| **Companies:**<br />* Fixed issue with users without admin privileges being able to add and delete companies.&#x20;                                                                                                                                                                                                                                                                                |
| **Alerts:**<br />* Fixed issue with email alert notifications not working.&#x20;
* Fixed issue with a `SendAsDenied` error displaying when using a Microsoft Outlook account to send metric alerts and the authentication address is correct.&#x20;
* Fixed issue with triggers creating incidents for DeviceHub online status and automatically resolving when the status is still offline.&#x20; |
| **Templates:**<br />* Fixed issue with template files allowing more than 512 characters in th&#x65;*&#x20;Description* field.&#x20;                                                                                                                                                                                                                                                                |
| **Marketplace:**<br />* Fixed issue with Marketplace applications not launching successfully in the following scenario:
  - In Litmus Edge Manager version 2.2.2, add a new catalog and import an application.&#x20;
  - Upgrade Litmus Edge Manager from 2.2.2 to 2.12.0.
  - Activate a Litmus Edge version 3.5.5.
  - Launch the imported application in the activated Litmus Edge 3.5.5.&#x20; |

## Deprecated Components and Features

| **Description**                                 |
| ----------------------------------------------- |
| - GOM (Graph-over-MQTT) is no longer supported. |


[title] Litmus Edge Manager 2.1.1
[path] Product Updates/2021/

Release Date: May 27, 2021

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                |
| ------------------------------------------------------------------------------ |
| Fixed issue with configuration and data export/import feature on admin console |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                                                                                                                                                                                                                                                                                                 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Failure on all file upload of Litmus Edge on Litmus Edge Manager Admin Console on FireFox browser with self-signed certificate&#xD;
- Parametrized templates are not supported for instance level templates&#xD;
- DLM archive/purge doesn’t affect on the current time period (current month)&#xD;
- Admin Dashboard usage stats inconsistent to DLM statistics&#xD;
- Analytics templates are not supported |


[title] 2020
[path] Product Updates/

- [Litmus Edge Manager 1.9.2](docId\:ZDTnpcKRr_gbtoiXkI2F5)&#x20;
- [Litmus Edge Manager 1.9.1](docId:_t-YbzXPGpm8yXY1CdkN_)&#x20;
- [Litmus Edge Manager 1.9.0](docId:45lqlV0QEXBJmFO3_dV-W)&#x20;
- [Litmus Edge Manager 1.7.2](docId\:TuzFtMP-q2EhFaNal3AkZ)


[title] How to Setup Git Provider Integration
[path] How-To Guides/Litmus Edge Manager Admin Console Guides/

Git Provider is a one-directional integration that synchronizes Litmus Edge template files from your edge devices to a Git repository of your choice (GitHub, GitLab, or Azure DevOps). This integration enables you to maintain version control, track configuration changes, and ensure compliance across your distributed edge deployments.

When you configure Git Provider, Litmus Edge Manager (LEM) automatically pushes template updates to your Git repository based on a schedule you define (hourly, daily, weekly, or monthly) or when edge devices are backed up.

Before you begin, decide how to organize your repositories. You can create:

- One repository with folders mirroring your company or project structure
- Separate repositories per project or company

:::hint{type="info"}
**Note:** We recommend using a private repository to protect your edge configuration data.
:::

The examples in this topic use GitHub as a repository.

:::hint{type="info"}
**Note:** Also see [Git Provider](docId\:AC86nRgXAxKany3KRWrmm) for additional overview and workflow information.&#x20;
:::

## Prerequisites

Before you configure Git Provider integration, ensure you have:

- Administrative access to Litmus Edge Manager Admin Console
- A GitHub, GitLab, or Azure DevOps account with repository creation permissions
- Appropriate permissions on your Git repo

## Step 1: Create a Git Repository

To setup a GitHub repository:

1. In GitHub, create a new public or private repository. We recommend adding a private repo. The example repo here is named `le-templates`.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QQ1ioFXXXGHI9WmYb3CUg_image.png" size="80" width="1887" height="690" position="flex-start" darkWidth="1887" darkHeight="690" showCaption="false" indent="2"}

2. Record the repository name.

## Step 2: Configure Git Provider in LEM

To setup the LEM and Git integration:

1. &#x20;In LEM Admin Console, navigate to **Integration** > **Git Provider**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5_q9UpyHFiV5ihsLqsuO6_image.png" size="80" width="1354" height="523" position="flex-start" darkWidth="1354" darkHeight="523" showCaption="false" indent="2"}

2. In **Provider Type**, select one of GitHub, GitLab, or Azure DevOps. This example uses GitHub.
3. In SSH URL, provide the GitHub URL with the following syntax: `git@github.com:<your-org>/<github-repo>.git`. For example:`git@github.com:gpm-litmus/lem-template.git`

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TOlrFRNXgaDmBCpZHAq9h_git-provider-01.png" size="100" width="1302" height="542" position="flex-start" darkWidth="1302" darkHeight="542" showCaption="false" indent="2"}

4. Copy the value from **SSH Public Key**.

## Step 3: Add the Deploy Key to Your Git Repository

1. In GitHub, add the public key as a deploy key:
   1. Navigate to **Settings** > **Deploy keys** and click **Add deploy key**.
   2. Provide a key name in **Title** and paste the SSH public key in **Key**.
   3. Select **Allow write access** and click **Add key**.
2. In LEM Admin Console and in **Integration** > **Git Provider**, click **Validate**. If successful, the `Repository access successful` message displays.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fB1AixmYFl0aEu2GalobS_image.png" size="40" width="539" height="231" position="flex-start" darkWidth="539" darkHeight="231" showCaption="false" indent="2"}

3. Close the success message and click **Save**.

## Step 4: Configure Synchronization Settings

To configure synchronization settings:

1. Navigate to **Edge Devices** > **Edge Git Integration**. Verify that edge devices populate on the page.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FBIkufmclqFIwHi5c-fFq_image.png" size="80" width="1907" height="614" position="flex-start" darkWidth="1907" darkHeight="614" showCaption="false" indent="2"}

2. In **Synchronization Frequency**, specify how often Git synchronization occurs: hourly, daily, weekly, or monthly. Syncs occur at 00:00 (UTC) daily, weekly on Mondays, and monthly on the first day of the month.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WZTElZiXJOcFjt2NnCgWk_image.png" size="40" width="360" height="172" position="flex-start" darkWidth="360" darkHeight="172" showCaption="false" indent="2"}

## Step 5: Configure Synchronization Settings

Next configure in the integration for edge devices belonging to your company. Here you also view the number edge devices and synced devices, last sync and commit ID, and integration status. You set tracking at the project level.

The following columns display in Project Tracking:

| **Field**           | **Description**                                                                                                   |
| ------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Company&#xD;        | Company to which the devices belongs                                                                              |
| Project&#xD;        | Project to which the devices belong                                                                               |
| Track               | Enable to push changes to Git based on the selected synchronization frequency                                     |
| Sync on Backup&#xD; | Enable to push changes to Git when the device is backed up                                                        |
| Edge Devices&#xD;   | Number of devices in the project                                                                                  |
| Synced Devices&#xD; | Number of devices that have been synchronized                                                                     |
| Last Sync Time&#xD; | The last time that a synchronization was performed from all edge devices in the current project to LEM            |
| Last Commit&#xD;    | Git commit hash which is a unique identifier representing a specific commit in a Git repository                   |
| Status              | Status of the integration: `NEW`, `WAITING`, `RUNNING`, `CANCELING`, `SUCCESS`, `ERROR`, or `CANCEL`              |
| Action&#xD;         | Options to&#xD; enable or disable tracking on the predefined schedule, on device backup, or to run a manual synch |



To configure the integration for edge devices:

1. Navigate to **Edge Devices** > **Edge Git Integration**.
2. In **Project Tracking**, set the synchronization frequency for devices in a company. To sync templates:
   - Based on the synchronization frequency, select **Track**.
   - When the device is backed up, select **Sync on Backup**.
3. To enable the integration, in the **Actions** shortcut menu, select **Enable Sync on Backup** or **Run Manual Sync**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aSP-nXjQHZWizMYVWQFEp_image.png" size="40" width="481" height="259" position="flex-start" showCaption="false" indent="2"}

To test the sync, click **Run Manual Sync**. In Git, verify that the commit appears and contains the correct JSON template  file.&#x20;

[title] Issues with Custom SSL Certificates
[path] Troubleshooting/

When setting up a custom SSL certificate in the [Domain/SSL](docId\:MC8Z1bK3yWcKQq4-kupCv) settings in the Litmus Edge Manager Admin Console settings, it's important not to use a private key with a passphrase. If a user-defined SSL certificate uses a private key with a passphrase, it can cause Litmus Edge Manager to become unresponsive.

## Solution

To resolve this, use a private key with no passphrase.

:::hint{type="info"}
**Note:** The SSL certificates are normally cached in the browser and server sides. If you are going to make any changes to the certificates, you might need to wait or restart the server and/or refresh the browser.
:::


[title] 2024
[path] Product Updates/

- [Litmus Edge Manager 2.22.4](docId\:dt3SuJXBt0RHEpPKbXvSk)&#x20;
- [Litmus Edge Manager 2.22.2](docId\:HmmcR3FO95kT9ayZ1q22g)&#x20;
- [Litmus Edge Manager 2.16.7](docId\:BOWpgt0nj8C_j3POfR3NL)&#x20;
- [Litmus Edge Manager 2.16.6](docId\:Ep32wZrUT_xNKFa816QXn)
- [Litmus Edge Manager 2.16.5](docId\:AtZuOMClMxpjyf8uRzHDx)
- [Litmus Edge Manager 2.16.4](docId\:pOup9KgdIYNI1QANkfjAO)
- [Litmus Edge Manager 2.16.0](docId\:NDu-Qgze0fvQjiJcsQwKE)&#x20;


[title] Litmus Edge Manager 2.31.6
[path] Product Updates/2026/

Release Date: August 10, 2026

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Devices:**<br />* Fixed issue where the **Manage** tab for an offline device shifted and partially obscured the left side of the page.&#x20;
* Fixed an issue where a Litmus Edge session opened remotely could expire after a few minutes of inactivity. Changes made while editing were not saved and no timeout warning or session-expiry prompts displayed. The session now remains active for as long as the device UI is open.&#x20; |
| **Events:**<br />* Fixed a `MEMORY_LIMIT_EXCEEDED` error on the Events page caused by reading a wide attributes column.&#x20;                                                                                                                                                                                                                                                                                                                     |
| **Digital Twins:**<br />* Fixed an issue where images (such as PNG files) added to a Digital Twins model were not synchronized to edge devices.                                                                                                                                                                                                                                                                                                   |
| **License Server Management:**<br />* Fixed an issue where you could not change a device from Node Locked to Site License.&#x20;                                                                                                                                                                                                                                                                                                                  |
| **System:**<br />* Fixed issue where exporting settings data from **System** > **Export/Import Data** produced an error and the export did not occur.&#x20;                                                                                                                                                                                                                                                                                       |
| **MQTT:**<br />* Fixed an issue where an anonymous client could connect to the MQTT broker without authentication.                                                                                                                                                                                                                                                                                                                                |


[title] Litmus Edge Manager 2.31.7
[path] Product Updates/2026/

Release Date: September 5, 2026

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).

## Resolved issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Applications:**<br />* Fixed issue where Docker published a container on a random host port when a Compose file used a variable in short syntax, such as `${UI_PORT}:3130`. The catalog dropped the variable and stored an empty host port. After an upgrade, resave the Compose file for any application deployed before this fix. Existing releases still contain the empty port.&#x20;
* Fixed issue where Litmus Edge Manager (LEM) attached an application to a duplicate of the intended network. This occurred when an external network in a Compose file used a `name:` override that differed from its section key. If the service also requested a static IP address, Docker rejected the deployment because the duplicate had no user-configured subnet. Without a static IP request, the container ran on the wrong network and reported no error.&#x20;
* Fixed issue where adding an Azure Container Registry (ACR) provider in the Marketplace returned `Failed to add repository details`. This occurred because the registry address was not passed during ACR login.&#x20; |
| **System:**<br />* Resolved the CVE-2026-10050 vulnerability.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |


[title] Litmus Edge Manager Admin Console Guides
[path] How-To Guides/


[title] Litmus Edge Manager 2.0.0
[path] Product Updates/2021/

Release Date: January 31, 2021

## Enhancements and Features

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                                                                                                                                                                                                                     |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **New - Advanced dashboarding capabilities with Grafana:**<br />* Advanced dashboard using integrated Grafana
* Bind projects, IPSO objects and tags with dashboard template
* Added sample dashboards
* Access defined to dashboard using keycloak |
| **New - Zerotier Network Management:**<br />* Allows user to create set Zerotier token for Litmus Edge Manager instance                                                                                                                             |
| **New - Introduction of Experimental Features:**<br />* Added few experimental features with toggle mode to enable/disable it on UI
  - Digital Twin
  - Edge Events Management
  - OM Registry Management                                          |
| **New - Added Edge event alerts:**<br />* Added Litmus Edge events as source for alert generation                                                                                                                                                   |
| **New - Manage Edge event forwarding:**<br />* Added support to enable edge events from Litmus Edge Manager for connected devices                                                                                                                   |
| **New - Show Hashing on upgrade image:**<br />* Litmus Edge Manager web UI shows SHA256/MD5 hash after software upgrade image upload                                                                                                                |
| **New - Configurable Password Policy for Edge:**<br />* Admin user can configure password policy for edge devices from Litmus Edge Manager                                                                                                          |
| **New - Support to upload images from URL:**<br />* Added support to upload Litmus Edge and Litmus Edge Manager images using a signed link                                                                                                          |
| **Improved Alert trigger notifications:**<br />* Included new variables to improve alert subject and message
* Added system incident to show any issues with sending alerts                                                                         |
| **Realtime status update of Marketplace Application:**<br />* Litmus Edge Manager supports real time status update of marketplace applications with event forwarding enabled.                                                                       |
| **Updated version of Kafka:**<br />* Updated kafka to version 2.6                                                                                                                                                                                   |
| **UI/UX Improvements:**<br />* Improved input fields for password through the system                                                                                                                                                                |
| **Deprecated feature/component:**<br />* Reporting using Insights are deprecated as Grafana is integrated for dashboarding                                                                                                                          |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------------- |
| - Failure on all file upload of Litmus Edge on Litmus Edge Manager Admin Console on FireFox browser with self-signed certificate |




[title] 2026
[path] Product Updates/

- [Litmus Edge Manager 2.31.7](docId\:pELk2amA2PV6uFPVnwvGq)&#x20;
- [Litmus Edge Manager 2.31.6](docId:_LtDrtc5_f4yjFZsQmI_c)&#x20;
- [Litmus Edge Manager 2.31.5](docId\:lecG-G-zhxdDJGaIlfzrg)&#x20;
- [Litmus Edge Manager 2.31.3](docId:1YHZZYvVS8bJmEaW1OXAI)&#x20;
- [Litmus Edge Manager 2.31.2](docId:3j8fxbUExAvQMiKwdtzVv)
- [Litmus Edge Manager 2.31.1](docId\:LxiCGMIG-1l4gRkH0Sxz2)&#x20;

[title] Generate Comprehensive NL License Summary Report
[path] How-To Guides/Litmus Edge Manager Admin Console Guides/

You can create a summary report for Node-Locked (NL) licenses in Litmus Edge Manager. NL licenses are special permissions that allow users to access Litmus Edge instances from various companies and projects.

# Before You Begin

- Read more about the information you can generate in [Node-Locked Licenses](docId\:c0-d2jkjFVytbWDoL9FRr) in Litmus Edge Manager.

# License Report Contents

The Node-Locked (NL) license reports will display the license usage by Edge Devices. Here is a sample of the **Node-Locked (NL) License Report** with key sections included:

::File{src="https://archbee-doc-uploads.s3.amazonaws.com/Q116WJTAr1sefeVNvMCF9-XwUSymHxIqlcT16OXsyZr-20250421-210334.csv" label="NL_license_export_sample.csv"}

# Step 1: Access the Node-locked Licenses Pane

To find the settings, follow these steps:

1. Navigate to **Litmus Edge Manager Admin Console**.   &#x20;
2. Go to **Edge Devices** > **Node-locked Licenses&#x20;**&#x73;ection from the left menu.
3. In the *Node-locked Licenses* section, you will see the license usage of Edge Devices.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LN1x_FtqY2vMWYNkJ3XzB_image.png)

# Step 2: Generate Node-Locked Licenses Report

You can see a summary of your node-locked licenses on the Node-locked Licenses page. You can also perform several actions on this page. See [Node-Locked Licenses](docId\:c0-d2jkjFVytbWDoL9FRr) for more details.

To export a copy of the report, click on **Generate a Report**, and a summary copy of your node-locked licenses will be saved locally on your system.

:::hint{type="info"}
**Note:** The filters you have applied may affect the report generation, and you can search by *Network Name*, *Subnet*, or *Status&#x20;*&#x62;efore generating.
:::

# Step 3: View Report Contents

Below is the information you may find in every Node-Locked license report:

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/21AUt5JGcThr0czrklPiC_image.png)

| Column                   | Details                                                                                          |
| ------------------------ | ------------------------------------------------------------------------------------------------ |
| **Company name**         | The name of the company that the license belongs to.                                             |
| **Project name**         | The name of the project where the license is being used.                                         |
| **Project ID**           | A unique identification number for the project.                                                  |
| **Device ID**            | A unique identification number for the specific device using the license.                        |
| **Device name**          | The name given to the device.                                                                    |
| **Device friendly name** | A more user-friendly name for the device.                                                        |
| **Device MAC address**   | The unique hardware address of the network interface of the device.&#xD;&#xD;                    |
| **License key**          | A unique code that activates the software on the device.                                         |
| **SKU**                  | The Stock Keeping Unit, which is a code that identifies the specific type of license.            |
| **Activation date**      | The date when the license was activated on the device.&#xD;                                      |
| **Expiry date**          | The date when the license will no longer be valid.                                               |
| **Expiry feature date**  | Sometimes, specific features of the license might expire on a different date.                    |
| **Is core**              | Indicates if this license is a core license for the device. It can be "**TRUE**" or "**FALSE**". |
| **Is trial**             |  Indicates if the license is a trial version. It can be "**TRUE**" or "**FALSE**".               |
| **Status**               |  The current status of the license. For example, "**EXPIRED**", "**OK**", or "**NEW**".          |


[title] Static IP Address Error
[path] Troubleshooting/

When following the steps to [Set a Static IP Address](docId\:eu1MB0qeHF67YNC6i3ohh), you may see the following error message.&#x20;

:::BlockQuote
If you face an error like this&#x20;
Error occured: Failed to set network interface configuration: Network interface configuration error: \*\* (generate:33344): WARNING \*\*: 12:51:35.007: Permissions for /etc/netplan/50-cloud-init.yaml are too open
:::

# &#x20;Resolution

Change permissions on the config files with the following command.&#x20;

:::BlockQuote
sudo chmod 600 /etc/netplan/\*.yaml
:::


[title] Litmus Edge Manager 2.16.6
[path] Product Updates/2024/

:::hint{type="warning"}
**Important**: For a seamless upgrade experience in upcoming releases, it's crucial to upgrade from version 2.16.4 to 2.16.6 before making any further upgrades. Skipping the initial upgrade to version 2.16.4 and then 2.16.6 may disrupt the upgrade process, and is therefore not recommended.
:::

Release Date: July 3, 2024

## Resolved Issues

| **Description**                                                                                  |
| ------------------------------------------------------------------------------------------------ |
| **Security:&#x20;**<br />* Addressed security vulnerabilities associated with CVE-2024-6387.     |
| **Integration:**<br />* The Alertmanager version has been rolled back from `0.27.0` to `0.26.0`. |


[title] Litmus Edge Manager 2.22.5
[path] Product Updates/2025/

Release Date: Feb 14, 2025

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).&#x20;

## Resolved Issues

| Description                                                                                                            |
| ---------------------------------------------------------------------------------------------------------------------- |
| **Grafana Dashboard:**<br />* Fixed issue where the friendly name was not displayed in the Grafana dashboard dropdown. |


[title] Litmus Edge Manager 2.26.3
[path] Product Updates/2025/

Release Date: August 19, 2025

Review the current list of [Limitations](docId\:MRg6GMxJ4s8e56y0bNGXM).

## Resolved Issues

| Description                                                               |
| ------------------------------------------------------------------------- |
| **Security:**<br />* Fixed issues with upstream security vulnerabilities. |


[title] Litmus Edge Manager 1.9.3
[path] Product Updates/2021/

Release Date: January 29, 2021

## Enhancements and Features

The following issues that existed in one or more previous releases have been resolved:

| **Description**                                    |
| -------------------------------------------------- |
| **CVE fix:**<br />* Fix included for CVE-2021-3156 |

## Known Issues

The following issues are unresolved in this release:

| **Description**                                                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------ |
| Failure on all file upload of Litmus Edge on Litmus Edge Manager Admin Console on FireFox browser with self-signed certificate |


[title] Limitations
[path] Resources/

| Description                                                                                                                                                                                                                                                                   |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Edge Devices:**<br />* There may be issues when trying to create a backup for an edge device.&#x20;                                                                                                                                                                         |
| **Templates:**<br />* No notification appears when creating a template from a Litmus Edge device with a trial license.                                                                                                                                                        |
| **Applications:**<br />* When cloning a Marketplace application release to the latest version tag, the application container stops and must be manually restarted. As a workaround, create a new application release configuration and submit the release instead of cloning. |
| **System**:<br />* You may not be able to successfully archive files that are larger than 700MB.                                                                                                                                                                              |


[title] Upgrade from Litmus Edge Manager 2.16.0 to 2.16.4
[path] Troubleshooting/

If you are facing issues during an upgrade of Litmus Edge Manager version 2.16.0 to 2.16.4 (only for uploading a UPD file via browser from the local system), complete the following steps.&#x20;

1. SSH into the Litmus Edge Manager instance and enter the following commands.
   `sudo mkdir -p /var/lib/lem/tmp`
   `sudo nano /etc/systemd/system/lem-admin.service`
2. Insert the following line.&#x20;
   `Environment="JAVA_TOOL_OPTIONS=-Djava.io.tmpdir=/var/lib/lem/tmp"` after `Group=root`
3. Enter the following command.&#x20;
   `sudo systemctl daemon-reload; sudo systemctl restart lem-admin.service`
4. Upgrade Litmus Edge Manager to version 2.16.4. See [Software Update](docId\:hzLOrWMFP3cGa8OvH_njo) to learn more.&#x20;


[title] 2025
[path] Product Updates/

- [Litmus Edge Manager 2.31.0](docId\:za5q8bIG19s3wl6U1iDXW)&#x20;
- [Litmus Edge Manager 2.26.4](docId:4RN_DcDya8O8qpxCT3XOm)
- [Litmus Edge Manager 2.26.3](docId\:aAeHPJmM-9lunDetZUVNu)&#x20;
- [Litmus Edge Manager 2.26.2](docId\:tR8YKPvVPibZIFqN1IhFq)&#x20;
- [Litmus Edge Manager 2.26.1](docId\:Kht3hBpMY5GEFWXUJSbDO)&#x20;
- [Litmus Edge Manager 2.22.5](docId\:yt3ifVto8sYey7hYXn0nW)&#x20;


[title] 2022
[path] Product Updates/

- [Litmus Edge Manager 2.7.0](docId:93WCl7gzvUgFCQT3Sc0l0)
- [Litmus Edge Manager 2.5.3](docId\:Mxtz-qz5KVjR28VZ2-DYh)
- [Litmus Edge Manager 2.5.1](docId\:BVAQTHQyqfO_sOP4bc3lI)
- [Litmus Edge Manager 2.3.5](docId:9ZmrqCyKMcabtXmBLeCdG)
- [Litmus Edge Manager 2.3.3](docId:1pt2TVUNYxBNkoorWzTwh)
- [Litmus Edge Manager 2.3.1](docId\:eB0HVyA8qLgNpuxuAiyMo)


[title] 2021
[path] Product Updates/

- [Litmus Edge Manager 2.2.2](docId\:KHcYowd99-1TF0t4WpzuA)
- [Litmus Edge Manager 2.1.1](docId\:w5XkEWypUJMNXnoSOpRRI)
- [Litmus Edge Manager 2.1.0](docId\:VmdnGLBprUvMAIec8Zfsr)
- [Litmus Edge Manager 2.0.0](docId\:Vn1qQH16yUn2eXi6fPFOQ)
- [Litmus Edge Manager 1.9.3](docId\:TMwTQK1-b4YbzH_ydqLte)


[space] Litmus MCP Server (/litmus-mcp-server)

[title] Architecture
[path] /

The Litmus MCP Server is two cooperating processes packaged in one container.

## Processes

| Process    | File                | Port | Role                                                                                                                |
| ---------- | ------------------- | ---- | ------------------------------------------------------------------------------------------------------------------- |
| MCP server | `src/server.py`     | 8000 | Implements the MCP protocol over SSE. Exposes 57 tools and a set of `litmus://docs/*` resources.                    |
| Web client | `src/web_client.py` | 9000 | FastAPI app: chat UI, config pages, LLM streaming, multi-instance management. Launches `server.py` as a subprocess. |

Both ports come from a single Docker image. The Web UI is optional; clients can hit the SSE endpoint directly without ever touching port 9000.

## Request flow (Web UI)

```javascript
Browser
  |
  | POST /chat
  v
web_client.py  --->  client_utils.process_streaming_query
                          |
                          |  anthropic.messages.stream() / OpenAI / Gemini
                          v
                     LLM provider
                          |
                          |  tool_use events
                          v
                     session.call_tool(name, args)
                          |
                          v
                     MCP server (port 8000)
                          |
                          v
                     server.py handle_call_tool
                          |
                          v
                     tools/<category>_tools.py
                          |
                          v
                     Litmus Edge REST / NATS / InfluxDB
```

## Request flow (external MCP client)

```javascript
Claude Desktop / Cursor / VS Code / Windsurf / Claude Code
  |
  |  SSE (with headers)
  v
MCP server (port 8000)
  |
  v
tools/<category>_tools.py
  |
  v
Litmus Edge REST / NATS / InfluxDB
```

## Authentication

The server is stateless. Every tool call receives a `request` object and pulls credentials from headers (SSE mode) or environment variables (STDIO mode) at call time, via helpers in `src/utils/auth.py`:

- `get_litmus_connection(request)` - Litmus Edge REST/SDK
- `get_nats_connection_params(request)` - NATS broker
- `get_influx_connection_params(request)` - InfluxDB

This means a single MCP server can be shared across many users, each presenting their own headers. There is no server-side session, no shared credentials.

## Multi-instance edge support

The Web UI lets you register multiple Litmus Edge devices and switch between them. Internally, instances live in `.env` as:

```javascript
EDGE_INSTANCE_1_URL=...
EDGE_INSTANCE_1_CLIENT_ID=...
EDGE_INSTANCE_1_CLIENT_SECRET=...
EDGE_INSTANCE_1_NAME=...
EDGE_INSTANCE_2_URL=...
ACTIVE_EDGE_INSTANCE=1
```

The active instance's credentials are mirrored into the canonical `EDGE_URL`, `EDGE_API_CLIENT_ID`, `EDGE_API_CLIENT_SECRET` keys so the rest of the system needs no awareness of multi-tenancy.

See [Multi-Instance Edge](#).

## Transport modes

| Mode          | When to use                                          | Auth source                 |
| ------------- | ---------------------------------------------------- | --------------------------- |
| SSE (default) | Remote or shared MCP server, any HTTP-capable client | HTTP headers per connection |
| STDIO         | Single-user local install with Claude Desktop        | Environment variables       |

STDIO is opt-in via `ENABLE_STDIO=true` in `src/config.py` or environment.

## Source layout

```javascript
src/
├── server.py              MCP server entrypoint, SSE setup
├── web_client.py          FastAPI app, all web routes
├── client_utils.py        LLM streaming, tool-call loop
├── env_config.py          .env read/write, path constants
├── config.py              Ports, SSL, NATS/InfluxDB defaults
├── conversation.py        In-memory chat history
├── utils/
│   ├── auth.py            Header -> connection params
│   └── formatting.py      Tool response shape helpers
└── tools/
    ├── devicehub_tools.py
    ├── dm_tools.py
    ├── marketplace_tools.py
    ├── data_tools.py
    ├── digitaltwins_tools.py
    ├── system_tools.py
    ├── lem_tools.py
    └── resource_tools.py  MCP Resources (live docs.litmus.io)
```

Each `*_tools.py` exports a `TOOLS = [...]` list of dicts. `server.py` concatenates them and dispatches by name.

[title] MCP Resources
[path] /

The Litmus MCP server exposes a set of `litmus://docs/<section>` URIs as MCP **Resources**. MCP-aware clients can read these URIs on demand, fetching live content directly from [docs.litmus.io](https://docs.litmus.io).

This means an LLM client can pull current Litmus reference material into its context without you copying and pasting documentation.

## Why Resources

MCP tools are for actions the model takes. MCP resources are for static (or live-fetched) reference material the model reads. By exposing Litmus docs as resources, an MCP client can:

- Pull driver-specific documentation when configuring a new device.
- Read the DeviceHub or Digital Twins user guide when the model is unsure how a feature works.
- Confirm the current behavior of a Litmus Edge component before suggesting changes.

## Available resources

| URI                                     | Source page                                                                       |
| --------------------------------------- | --------------------------------------------------------------------------------- |
| `litmus://docs/overview`                | [docs.litmus.io](https://docs.litmus.io)                                          |
| `litmus://docs/edge`                    | `/litmusedge`                                                                     |
| `litmus://docs/edge/devicehub`          | `/litmusedge/product-features/devicehub`                                          |
| `litmus://docs/edge/digitaltwins`       | `/litmusedge/product-features/digital-twins`                                      |
| `litmus://docs/edge/datahub`            | `/litmusedge/product-features/datahub`                                            |
| `litmus://docs/edge/marketplace`        | `/litmusedge/product-features/applications`                                       |
| `litmus://docs/edgemanager`             | `/edgemanager`                                                                    |
| `litmus://docs/edgemanager/marketplace` | `/edgemanager/lem-user-ui/product-features/marketplace-catalogs-and-applications` |
| `litmus://docs/edgemanager/grafana`     | `/edgemanager/lem-user-ui/product-features/grafana-dashboards`                    |
| `litmus://docs/solutions`               | `/solutions`                                                                      |

The full list is defined in `src/tools/resource_tools.py`.

## How a client uses them

Standard MCP protocol:

1. Client calls `list_resources` -> server returns the URIs above.
2. Client calls `read_resource(uri)` with one of them -> server fetches the page via `httpx`, returns the rendered text.

Different MCP clients surface resources differently. Some expose them via a context menu ("attach resource"), some let the model autonomously call `read_resource` mid-conversation, some require manual selection.

## Live vs cached

Each `read_resource` call performs a fresh `httpx` GET against `docs.litmus.io`. No caching, no bundling. If the docs are updated, the next read picks up the changes.

## See also

- [Tools Reference](#) for the action-oriented half of the MCP surface.

[title] Device Identity
[path] Tools/

# Device Identity

Read and write the Litmus Edge device's friendly name.

| Tool                           | Description                                                     |
| ------------------------------ | --------------------------------------------------------------- |
| `get_litmusedge_friendly_name` | Get the human-readable name assigned to the Litmus Edge device. |
| `set_litmusedge_friendly_name` | Update the friendly name.                                       |

## When to use which

- **Display purposes:** `get_litmusedge_friendly_name` whenever you need a label rather than a URL or IP for the edge.
- **Provisioning / commissioning:** `set_litmusedge_friendly_name` once, typically at first install.

## Requirements

- `EDGE_URL`, `EDGE_API_CLIENT_ID`, `EDGE_API_CLIENT_SECRET`.

## Related

- [Cloud / LEM Activation](#) - once an edge has a friendly name, registering it with LEM is the typical next step.

[title] Getting Started
[path] /

Run the Litmus MCP Server in Docker and start using it in under a minute.

## Minimal: SSE only

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

The SSE endpoint is now at `http://localhost:8000/sse`. Wire it into an MCP client (see [Clients](#)) and you're done.

## With the built-in Web UI

If you want the bundled chat interface (no MCP client required), expose port `9000` and provide one LLM API key:

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 -p 9000:9000 \
  -e ANTHROPIC_API_KEY=<key> \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

Open `http://localhost:9000`, add a Litmus Edge instance from the config page, and start chatting.

## Choose your path

| If you want to...                                                 | Go here                       |
| ----------------------------------------------------------------- | ----------------------------- |
| Connect Claude Desktop, Cursor, VS Code, Windsurf, or Claude Code | [Clients](#)                  |
| Chat from the browser without installing a client                 | [Web UI](#)                   |
| Keep your settings across container replacement                   | [Persistent Configuration](#) |
| Run the server locally (no Docker) for STDIO clients              | [STDIO Mode](#)               |
| Understand what credentials to send                               | [Headers Reference](#)        |
| See the full tool catalog                                         | [Tools Reference](#)          |

## ARM64 hosts

The image is built for `linux/amd64`. On Apple Silicon or other ARM64 machines, pin the platform:

```bash
docker run -d --name litmus-mcp-server \
  --platform linux/amd64 \
  -p 8000:8000 \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

See [Docker](#) for additional options.

[title] LEM Bridge
[path] Tools/

# LEM Bridge

The LEM Bridge tools let you reach a specific edge **through** a Litmus Edge Manager tenant, without switching the MCP server's active edge instance.

| Tool                                | Description                                                                     |
| ----------------------------------- | ------------------------------------------------------------------------------- |
| `lem_bridge_list_devicehub_devices` | List DeviceHub devices on a specific edge by tunneling through LEM.             |
| `lem_bridge_get_le_info`            | Identity info (friendly name, cloud activation) for an edge via the LEM bridge. |

## When to use which

- **Cross-fleet inspection:** you have a LEM tenant with many edges, and you want to inspect one of them without changing the active `EDGE_URL` / `EDGE_API_CLIENT_ID` / `EDGE_API_CLIENT_SECRET` your MCP server is configured for.
- **Fleet automation:** loop over devices returned by `lem_list_devices`, calling bridge tools per device.

Bridge tools do **not** mutate the MCP server's active instance, so they're safe to run concurrently with normal tool calls.

## Required arguments

Every bridge tool takes:

- `project_id` - LEM project id.
- `device_id` - LEM device id (target edge).

## Requirements

- `EDGE_MANAGER_URL`, `EDGE_API_TOKEN`. See [LEM](#) for the full set.
- `VALIDATE_CERTIFICATE=true` if the LEM tenant uses a publicly verifiable cert and you want strict TLS.

## Related

- [Litmus Edge Manager (LEM)](#) - fleet-wide LEM operations.
- [Multi-Instance Edge](#) - alternative pattern when you control a small, named set of edges directly.

[title] VS Code Copilot
[path] Clients/

# VS Code / GitHub Copilot

Configure [VS Code with GitHub Copilot](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) to use the Litmus MCP server over SSE.

## 1. Run the server

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

## 2. Add the server config

Two options.

### Option A: User Settings (JSON)

Open **Preferences -> User Settings (JSON)** and add:

```json
{
  "mcpServers": {
    "litmus-mcp-server": {
      "url": "http://<MCP_SERVER_IP>:8000/sse",
      "headers": {
        "EDGE_URL": "https://<LITMUSEDGE_IP>",
        "EDGE_API_CLIENT_ID": "<oauth2_client_id>",
        "EDGE_API_CLIENT_SECRET": "<oauth2_client_secret>",
        "NATS_SOURCE": "<LITMUSEDGE_IP>",
        "NATS_PORT": "4222",
        "NATS_USER": "<access_token_username>",
        "NATS_PASSWORD": "<access_token_from_litmusedge>",
        "INFLUX_HOST": "<LITMUSEDGE_IP>",
        "INFLUX_PORT": "8086",
        "INFLUX_DB_NAME": "tsdata",
        "INFLUX_USERNAME": "<datahub_username>",
        "INFLUX_PASSWORD": "<datahub_password>"
      }
    }
  }
}
```

### Option B: Per-project

Create `.vscode/mcp.json` at the workspace root with the same JSON body.

## 3. Verify

Open the Copilot Chat panel and check the tools menu. The Litmus tools should appear. If they don't:

- Reload the VS Code window after editing `mcp.json`.
- Confirm `curl http://<MCP_SERVER_IP>:8000/health` returns `{"status":"ok"}` from your workstation.

## Reference

- [VS Code: MCP servers](https://code.visualstudio.com/docs/copilot/chat/mcp-servers)
- [Headers Reference](#)

[title] Cursor
[path] Clients/

# Cursor IDE

Configure [Cursor IDE](https://www.cursor.com/) to use the Litmus MCP server over SSE.

## 1. Run the server

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

## 2. Edit `mcp.json`

- **User-wide:** `~/.cursor/mcp.json`
- **Per-project:** `.cursor/mcp.json` in the repository root

```json
{
  "mcpServers": {
    "litmus-mcp-server": {
      "url": "http://<MCP_SERVER_IP>:8000/sse",
      "headers": {
        "EDGE_URL": "https://<LITMUSEDGE_IP>",
        "EDGE_API_CLIENT_ID": "<oauth2_client_id>",
        "EDGE_API_CLIENT_SECRET": "<oauth2_client_secret>",
        "NATS_SOURCE": "<LITMUSEDGE_IP>",
        "NATS_PORT": "4222",
        "NATS_USER": "<access_token_username>",
        "NATS_PASSWORD": "<access_token_from_litmusedge>",
        "INFLUX_HOST": "<LITMUSEDGE_IP>",
        "INFLUX_PORT": "8086",
        "INFLUX_DB_NAME": "tsdata",
        "INFLUX_USERNAME": "<datahub_username>",
        "INFLUX_PASSWORD": "<datahub_password>"
      }
    }
  }
}
```

Replace `<MCP_SERVER_IP>` with where the Docker container is reachable (`localhost` if you're running both on the same machine).

## 3. Verify

Open Cursor's MCP settings panel. The `litmus-mcp-server` entry should be listed with its tools enumerated. If you see a connection error:

- Confirm Cursor's host can reach `http://<MCP_SERVER_IP>:8000/sse`.
- Check the container is up: `docker ps`.

## Reference

- [Cursor: Model Context Protocol](https://docs.cursor.com/context/model-context-protocol)
- [Headers Reference](#)

[title] Claude Code
[path] Clients/

Configure the [Claude Code CLI](https://docs.claude.com/en/docs/claude-code) to use the Litmus MCP server over SSE.

## 1. Run the server

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

## 2. Create or edit `~/.claude/mcp.json`

Run Claude Code from a directory that has access to a config file at `~/.claude/mcp.json`:

```json
{
  "mcpServers": {
    "litmus-mcp-server": {
      "type": "sse",
      "url": "http://localhost:8000/sse",
      "headers": {
        "EDGE_URL": "${EDGE_URL}",
        "EDGE_API_CLIENT_ID": "${EDGE_API_CLIENT_ID}",
        "EDGE_API_CLIENT_SECRET": "${EDGE_API_CLIENT_SECRET}",
        "NATS_SOURCE": "${NATS_SOURCE}",
        "NATS_PORT": "${NATS_PORT:-4222}",
        "NATS_USER": "${NATS_USER}",
        "NATS_PASSWORD": "${NATS_PASSWORD}",
        "INFLUX_HOST": "${INFLUX_HOST}",
        "INFLUX_PORT": "${INFLUX_PORT:-8086}",
        "INFLUX_DB_NAME": "${INFLUX_DB_NAME:-tsdata}",
        "INFLUX_USERNAME": "${INFLUX_USERNAME}",
        "INFLUX_PASSWORD": "${INFLUX_PASSWORD}"
      }
    }
  }
}
```

The `${VAR}` syntax reads from your shell environment, so you can keep secrets out of the config file by exporting them before launching Claude Code.

## 3. Verify

Inside Claude Code, ask the agent to list available tools. You should see the full Litmus tool set (DeviceHub, NATS, InfluxDB, Digital Twins, LEM, etc.). If you don't, check:

- `docker logs litmus-mcp-server` for SSE connection attempts.
- `curl http://localhost:8000/health` returns `{"status":"ok"}`.
- The headers in `mcp.json` resolve to non-empty values (`echo "$EDGE_URL"`).

## Reference

- [Anthropic: Model Context Protocol in Claude Code](https://docs.anthropic.com/en/docs/agents-and-tools/mcp)
- [Headers Reference](#)

[title] Windsurf
[path] Clients/

Configure [Windsurf](https://codeium.com/windsurf) to use the Litmus MCP server over SSE.

## 1. Run the server

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

## 2. Edit `~/.codeium/windsurf/mcp_config.json`

```json
{
  "mcpServers": {
    "litmus-mcp-server": {
      "url": "http://<MCP_SERVER_IP>:8000/sse",
      "headers": {
        "EDGE_URL": "https://<LITMUSEDGE_IP>",
        "EDGE_API_CLIENT_ID": "<oauth2_client_id>",
        "EDGE_API_CLIENT_SECRET": "<oauth2_client_secret>",
        "NATS_SOURCE": "<LITMUSEDGE_IP>",
        "NATS_PORT": "4222",
        "NATS_USER": "<access_token_username>",
        "NATS_PASSWORD": "<access_token_from_litmusedge>",
        "INFLUX_HOST": "<LITMUSEDGE_IP>",
        "INFLUX_PORT": "8086",
        "INFLUX_DB_NAME": "tsdata",
        "INFLUX_USERNAME": "<datahub_username>",
        "INFLUX_PASSWORD": "<datahub_password>"
      }
    }
  }
}
```

## 3. Verify

Restart Windsurf so the new MCP server is picked up. The Litmus tools should be available in the agent's tool list.

## Reference

- [Windsurf: MCP docs](https://docs.windsurf.com/windsurf/mcp)
- [Headers Reference](#)

[title] Headers Reference
[path] Configuration/

# Headers Reference

The Litmus MCP server is stateless. Every tool call reads its credentials from the request headers (SSE mode) or environment variables (STDIO mode). This page documents every header the server understands.

## Litmus Edge (REST / SDK)

Required for almost every tool except a few system-only ones.

| Header                   | Required | Description                               |
| ------------------------ | -------- | ----------------------------------------- |
| `EDGE_URL`               | yes      | Litmus Edge base URL. Include `https://`. |
| `EDGE_API_CLIENT_ID`     | yes      | OAuth2 client ID issued by Litmus Edge.   |
| `EDGE_API_CLIENT_SECRET` | yes      | OAuth2 client secret.                     |

Generate the client credentials under **Litmus Edge -> System -> Access Control**.

## NATS (live values)

Used by `get_current_value_from_topic` and `get_multiple_values_from_topic`.

| Header          | Required | Default | Description                                                        |
| --------------- | -------- | ------- | ------------------------------------------------------------------ |
| `NATS_SOURCE`   | yes      |         | Litmus Edge IP, **no** scheme prefix.                              |
| `NATS_PORT`     | no       | `4222`  | NATS broker port.                                                  |
| `NATS_USER`     | yes      |         | Access token username from **System -> Access Control -> Tokens**. |
| `NATS_PASSWORD` | yes      |         | Access token value.                                                |
| `NATS_TLS`      | no       | `true`  | Set to `false` to disable TLS.                                     |

## InfluxDB (time series)

Used by every `**`-marked InfluxDB tool (`get_historical_data_from_influxdb`, `list_influxdb_measurements`, `get_device_historical_data`, `query_tag_data`, `get_tag_statistics`, `get_device_data_for_inference`, `get_device_connection_status`).

| Header            | Required | Default  | Description                           |
| ----------------- | -------- | -------- | ------------------------------------- |
| `INFLUX_HOST`     | yes      |          | Litmus Edge IP, **no** scheme prefix. |
| `INFLUX_PORT`     | no       | `8086`   | InfluxDB port.                        |
| `INFLUX_DB_NAME`  | no       | `tsdata` | Database name.                        |
| `INFLUX_USERNAME` | yes      |          | DataHub user.                         |
| `INFLUX_PASSWORD` | yes      |          | DataHub password.                     |

Allow port `8086/TCP` in **Litmus Edge -> System -> Network -> Firewall**.

## Litmus Edge Manager (LEM)

Used by every `lem_*` tool. LEM tools talk to a cloud Edge Manager tenant rather than an edge.

| Header                    | Required | Default                        | Description                                                              |
| ------------------------- | -------- | ------------------------------ | ------------------------------------------------------------------------ |
| `EDGE_MANAGER_URL`        | yes      |                                | LEM base URL. Include `https://`.                                        |
| `EDGE_API_TOKEN`          | yes      |                                | API token issued by LEM.                                                 |
| `EDGE_MANAGER_PROJECT_ID` | no       |                                | Default project id, used when a tool's `project_id` argument is omitted. |
| `EDGE_MANAGER_ADMIN_URL`  | no       | `<EDGE_MANAGER_URL host>:8446` | Admin URL.                                                               |
| `VALIDATE_CERTIFICATE`    | no       | `false`                        | `true` to verify TLS certs on the LEM bridge.                            |

The `lem_bridge_*` tools additionally tunnel through LEM to a specific edge and require both `project_id` and `device_id` as call arguments. They do **not** switch the active edge instance.

## STDIO mode

When the server runs in STDIO mode (`ENABLE_STDIO=true`), the same names are read from the process environment instead of HTTP headers. Pass them through your MCP client's `env` block. See [Claude Desktop (STDIO)](#).

## Header configuration guide

- `EDGE_URL`: include `https://`.
- `EDGE_API_CLIENT_ID` / `EDGE_API_CLIENT_SECRET`: OAuth2 credentials from Litmus Edge.
- `NATS_SOURCE`: IP only, no `http`/`https`.
- `NATS_USER` / `NATS_PASSWORD`: token credentials from **System -> Access Control -> Tokens**.
- `INFLUX_HOST`: IP only, no `http`/`https`.
- `INFLUX_USERNAME` / `INFLUX_PASSWORD`: DataHub user credentials.

[title] LLM Providers
[path] Configuration/

# LLM Providers

The Web UI works with three LLM providers. The MCP server itself is provider-neutral; the choice only matters when you use the bundled chat interface.

## Supported providers

| Provider         | API key env var     | Default model            |
| ---------------- | ------------------- | ------------------------ |
| Anthropic Claude | `ANTHROPIC_API_KEY` | `claude-sonnet-4-6`      |
| OpenAI           | `OPENAI_API_KEY`    | `gpt-4.1`                |
| Google Gemini    | `GEMINI_API_KEY`    | latest Gemini chat model |

Provide one or more keys at container startup, or enter them from the Web UI's setup screen.

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 -p 9000:9000 \
  -e ANTHROPIC_API_KEY=<key> \
  -e OPENAI_API_KEY=<key> \
  -e GEMINI_API_KEY=<key> \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

## Switching provider and model

`/update-env` has a two-panel selector:

- **Left:** provider pills, one per configured key.
- **Right:** scrollable list of models, fetched live from the provider's API (`client.models.list` for Anthropic, `oai.models.list` filtered to chat-capable models for OpenAI).

Selecting a model writes both:

- `PREFERRED_MODEL` - the provider identifier (`anthropic`, `openai`, `gemini`)
- `PREFERRED_MODEL_ID` - the specific model id (e.g., `claude-sonnet-4-6`)

`client_utils._get_model_id(provider)` reads `PREFERRED_MODEL_ID` from env, falling back to the provider's default.

## How the chat uses the provider

The Web UI's `/chat` endpoint streams from the selected provider, parsing tool-use events back into MCP `session.call_tool(...)` calls. The user sees:

- Streamed prose, rendered as markdown.
- A tool-call badge each time the model asks the MCP server to do something.
- A stop button to cancel mid-stream.

## API endpoints (provider-related)

| Endpoint                 | Method | Purpose                                                       |
| ------------------------ | ------ | ------------------------------------------------------------- |
| `/api/models?provider=X` | GET    | Fetch the live model list for a provider.                     |
| `/setup-key`             | POST   | Save one or more API keys (AJAX). Returns `{"saved": [...]}`. |
| `/setup`                 | POST   | Same as `/setup-key`, but used as the `<noscript>` fallback.  |
| `/switch-model`          | POST   | Accepts `provider` and optional `model_id`. Updates `.env`.   |


[title] Tools
[path] /

# Tools Reference

The Litmus MCP server exposes **57 tools across 11 categories**. Tools accept structured JSON arguments and return JSON results.

## Categories

| Category                  | Tools | Page                     |
| ------------------------- | ----- | ------------------------ |
| DeviceHub, Devices        | 4     | [devicehub-devices](#)   |
| DeviceHub, Tags           | 7     | [devicehub-tags](#)      |
| Device Identity           | 2     | [device-identity](#)     |
| Cloud / LEM Activation    | 1     | [cloud-activation](#)    |
| Docker Management         | 2     | [docker-management](#)   |
| NATS Topics               | 2     | [nats-topics](#)         |
| InfluxDB / Time Series    | 6     | [influxdb-timeseries](#) |
| System, Events            | 2     | [system-events](#)       |
| System, Network           | 6     | [system-network](#)      |
| Digital Twins             | 9     | [digital-twins](#)       |
| Litmus Edge Manager (LEM) | 14    | [litmus-edge-manager](#) |
| LEM Bridge                | 2     | [lem-bridge](#)          |

## Marker conventions

- `*` - Requires NATS access (see [Headers Reference](#)).
- `**` - Requires InfluxDB access. Open port 8086/TCP under **System -> Network -> Firewall**.
- `***` - Talks to a Litmus Edge Manager tenant, not a Litmus Edge. Needs LEM headers.

## Tool call contract

Every tool receives a `request` object containing the connection headers and returns `list[TextContent]` with a JSON payload. Error responses use MCP's `INVALID_PARAMS` and `INTERNAL_ERROR` codes.

Successful responses follow the shape produced by `format_success_response()`:

```json
{
  "ok": true,
  "data": { "...": "..." }
}
```

Errors:

```json
{
  "ok": false,
  "error": {
    "code": "...",
    "message": "..."
  }
}
```

## Header requirements at a glance

| Header set                                                      | Required for                                        |
| --------------------------------------------------------------- | --------------------------------------------------- |
| `EDGE_URL`, `EDGE_API_CLIENT_ID`, `EDGE_API_CLIENT_SECRET`      | Almost all non-system tools                         |
| `NATS_*`                                                        | NATS topic tools                                    |
| `INFLUX_*`                                                      | InfluxDB tools (and `get_device_connection_status`) |
| `EDGE_MANAGER_URL`, `EDGE_API_TOKEN`, `EDGE_MANAGER_PROJECT_ID` | LEM and LEM Bridge tools                            |

See [Headers Reference](#) for the full list.

[title] System Network
[path] Tools/

# System, Network

Inspect firewall rules, network interfaces, and packet captures on a Litmus Edge.

| Tool                            | Description                                                                               |
| ------------------------------- | ----------------------------------------------------------------------------------------- |
| `get_firewall_rules`            | Return configured firewall rules: ports, protocols, ALLOW / DENY actions.                 |
| `get_network_interface_info`    | Network interface details: IP, MAC, gateway, link status, MTU, speed. Defaults to `eth0`. |
| `get_packet_capture_interfaces` | List network interfaces available for packet capture.                                     |
| `get_packet_capture_status`     | Current packet capture state and list of captured `.pcap` files with metadata.            |
| `start_packet_capture`          | Start a packet capture on an interface. Duration 1-30 minutes.                            |
| `stop_packet_capture`           | Stop an in-progress packet capture.                                                       |

## When to use which

- **Connectivity triage:** `get_firewall_rules` and `get_network_interface_info`.
- **Diagnosing a flaky device:** start a packet capture on the relevant interface with `start_packet_capture`, wait, then `stop_packet_capture` and inspect `.pcap` files listed by `get_packet_capture_status`.
- **Multi-NIC edges:** use `get_packet_capture_interfaces` first to confirm what you can capture on.

Packet captures cap at 30 minutes per run. Pcap files accumulate on the edge until pruned.

## Requirements

- `EDGE_URL`, `EDGE_API_CLIENT_ID`, `EDGE_API_CLIENT_SECRET`.

## Related

- [System, Events](#) - event log captures network-related anomalies.
- [InfluxDB / Time Series](#) - port 8086 must be open in the firewall.

[title] Digital Twins
[path] Tools/

# Digital Twins

Create, inspect, and configure Digital Twin models and instances on Litmus Edge.

| Tool                           | Description                                                              |
| ------------------------------ | ------------------------------------------------------------------------ |
| `list_digital_twin_models`     | List all Digital Twin models with ID, name, description, and version.    |
| `create_digital_twin_model`    | Create a new Digital Twin model.                                         |
| `list_digital_twin_instances`  | List all Digital Twin instances or filter by model ID.                   |
| `create_digital_twin_instance` | Create a new Digital Twin instance from an existing model.               |
| `list_static_attributes`       | List static attributes (fixed key-value pairs) for a model or instance.  |
| `list_dynamic_attributes`      | List dynamic attributes (real-time data points) for a model or instance. |
| `list_transformations`         | List data transformation rules configured for a Digital Twin model.      |
| `get_digital_twin_hierarchy`   | Get the hierarchy configuration for a Digital Twin model.                |
| `save_digital_twin_hierarchy`  | Save a new hierarchy configuration to a Digital Twin model.              |

## When to use which

- **Modeling phase:** `list_digital_twin_models`, `create_digital_twin_model`, plus the attribute and transformation listers to inspect what an existing model exposes.
- **Instantiation:** `list_digital_twin_instances`, `create_digital_twin_instance` once the model is defined.
- **Hierarchy editing:** `get_digital_twin_hierarchy` -> modify -> `save_digital_twin_hierarchy`.

## Requirements

- `EDGE_URL`, `EDGE_API_CLIENT_ID`, `EDGE_API_CLIENT_SECRET`.

## Related

- [docs.litmus.io: Digital Twins](https://docs.litmus.io/litmusedge/product-features/digital-twins)
- `litmus://docs/edge/digitaltwins` MCP resource - feeds the model the up-to-date Digital Twins guide.

[title] DeviceHub Devices
[path] Tools/

# DeviceHub, Devices

Manage industrial devices configured in Litmus Edge DeviceHub: drivers, device records, and connection status.

| Tool                                | Description                                                                                                           |
| ----------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| `get_litmusedge_driver_list`        | List supported Litmus Edge drivers (e.g., ModbusTCP, OPCUA, BACnet).                                                  |
| `get_devicehub_devices`             | List all configured DeviceHub devices with connection settings and status.                                            |
| `create_devicehub_device`           | Create a new device with a specified driver and default configuration.                                                |
| `get_device_connection_status` `**` | Check whether devices are actively publishing data via InfluxDB heartbeat. Reports `connected` / `stale` / `no_data`. |

## When to use which

- **Onboarding a new asset:** `get_litmusedge_driver_list` -> `create_devicehub_device`.
- **Inventory / triage:** `get_devicehub_devices` for the configured set; `get_device_connection_status` for the live ingest state.
- **"Is data flowing?":** `get_device_connection_status`. The "connected" determination comes from InfluxDB recency of the device's tags, so the `INFLUX_*` headers must be set.

## Requirements

- `EDGE_URL`, `EDGE_API_CLIENT_ID`, `EDGE_API_CLIENT_SECRET` for all tools.
- `INFLUX_HOST`, `INFLUX_PORT`, `INFLUX_DB_NAME`, `INFLUX_USERNAME`, `INFLUX_PASSWORD` additionally for `get_device_connection_status`.

## Related

- [DeviceHub, Tags](#) - once a device exists, manage its tags.
- [InfluxDB / Time Series](#) - historical data for the device's tags.

[title] Release Notes
[path] /

For the canonical change history, see the [Releases page on GitHub](https://github.com/litmusautomation/litmus-mcp-server/releases).

This page summarizes notable additions in recent versions of the Litmus MCP server.

## Web UI

- Built-in chat interface on port `9000`, served from the same Docker image as the MCP server.
- First-run setup screen captures LLM API keys and fetches live model catalogs from Anthropic and OpenAI.
- Two-panel model selector (provider pills + scrollable model list) on `/update-env`.
- Stop button mid-stream; tool-call badges in the chat transcript; markdown rendering.

## Multi-Instance Litmus Edge

- Register multiple edges in `.env` under `EDGE_INSTANCE_{i}_*` keys.
- `ACTIVE_EDGE_INSTANCE` tracks the active one; canonical `EDGE_URL` / `EDGE_API_CLIENT_ID` / `EDGE_API_CLIENT_SECRET` mirror it.
- New endpoints: `/api/edge-instances`, `/api/add-edge-instance`, `/api/remove-edge-instance`, `/api/switch-edge-instance`, `/api/edge-health?index=N`.
- Instance switcher pill in the chat header; one status card per instance on the Health page.

## MCP Resources

- New `litmus://docs/<section>` URIs that fetch live content from `docs.litmus.io` on demand.
- Exposed via `@mcp.list_resources()` / `@mcp.read_resource()` handlers in `src/server.py`.
- Defined in `src/tools/resource_tools.py`.

## Tool surface (current)

- 57 tools across 11 categories.
- Per-file `TOOLS = [...]` registry in each `src/tools/*.py`; `server.py` concatenates and dispatches by name.
- LEM and LEM Bridge tool families added.

## Persistent Configuration

- Mount `/opt/litmus-mcp/.env` over `/app/.env` to survive container replacement.
- Docker Compose example included.

## Transport

- SSE on `:8000` (default).
- STDIO opt-in via `ENABLE_STDIO=true` for Claude Desktop and other local clients.

[title] DataHub NATS topics
[path] Tools/

# NATS Topics

Read live values published to Litmus Edge's internal NATS broker.

| Tool                                 | Description                                                              |
| ------------------------------------ | ------------------------------------------------------------------------ |
| `get_current_value_from_topic` `*`   | Subscribe to a NATS topic and return the next published message.         |
| `get_multiple_values_from_topic` `*` | Collect multiple sequential values from a NATS topic for trend analysis. |

## When to use which

- **Spot read:** `get_current_value_from_topic` for the next message on a topic. Useful when DeviceHub publishes tag values you want to inspect without persisting them.
- **Short window of samples:** `get_multiple_values_from_topic` to collect N consecutive messages for a quick trend check. For longer or historical windows, use [InfluxDB / Time Series](#) tools instead.

Both tools open a NATS subscription, wait for messages, then drain and close cleanly.

## Requirements

- `NATS_SOURCE`, `NATS_PORT`, `NATS_USER`, `NATS_PASSWORD` headers.
- `NATS_TLS` defaults to `true`; set to `false` if your broker is non-TLS.

## Setting up NATS access on Litmus Edge

1. Navigate to **Litmus Edge -> System -> Access Control -> Tokens**.
2. Create or configure an access token with permissions for the topics you want to read.
3. Provide the token username and value as `NATS_USER` / `NATS_PASSWORD` in your MCP client configuration.

## Related

- [DeviceHub, Tags](#) - the tag output topic is what these tools subscribe to.
- [InfluxDB / Time Series](#) for historical analysis.

[title] Docker
[path] Installation/

The official image is published to GitHub Container Registry:

```javascript
ghcr.io/litmusautomation/litmus-mcp-server:latest
```

## SSE-only (MCP server, no Web UI)

The simplest deployment runs only the MCP server on port `8000`:

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

The SSE endpoint is at `http://localhost:8000/sse` and a health check is at `http://localhost:8000/health`.

## With the Web UI

Expose port `9000` and provide at least one LLM API key:

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 -p 9000:9000 \
  -e ANTHROPIC_API_KEY=<key> \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

Open `http://localhost:9000` in your browser. See [Web UI](#) for what's available there.

You can also enter the API key later from the Web UI's setup screen - start without `-e` if you prefer.

## ARM64 (Apple Silicon and others)

The image is built for `linux/amd64`. On ARM64 hosts, pin the platform:

```bash
docker run -d --name litmus-mcp-server \
  --platform linux/amd64 \
  -p 8000:8000 \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

## Splitting Web UI and MCP server across hosts

If you deploy the Web UI on one host and the MCP server on another, point the Web UI at the server:

```bash
-e MCP_SSE_URL=http://<mcp-server-host>:8000/sse
```

## Environment variables

| Variable            | Default                     | Purpose                                         |
| ------------------- | --------------------------- | ----------------------------------------------- |
| `ANTHROPIC_API_KEY` | unset                       | Anthropic Claude API key (Web UI).              |
| `OPENAI_API_KEY`    | unset                       | OpenAI API key (Web UI).                        |
| `GEMINI_API_KEY`    | unset                       | Gemini API key (Web UI).                        |
| `MCP_SSE_URL`       | `http://localhost:8000/sse` | Where the Web UI looks for the MCP server.      |
| `ENABLE_STDIO`      | `false`                     | Set `true` for STDIO mode. See [STDIO Mode](#). |

LLM keys are persisted to `/app/.env` once entered through the Web UI, so you typically only need to pass them once.

## Docker Compose

```yaml
services:
  litmus-mcp-server:
    image: ghcr.io/litmusautomation/litmus-mcp-server:latest
    ports:
      - "8000:8000"
      - "9000:9000"
    environment:
      ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
    volumes:
      - /opt/litmus-mcp/.env:/app/.env
```

The volume mount is recommended; see [Persistent Configuration](#).

## Next

- [Persistent Configuration](#) - keep settings across container replacement.
- [Clients](#) - wire an MCP client into the running server.
- [Headers Reference](#) - what to send with each request.

[title] Installation
[path] /

The Litmus MCP Server ships as a single Docker image that runs in two modes:

| Mode          | Page            | When to use                                                                                          |
| ------------- | --------------- | ---------------------------------------------------------------------------------------------------- |
| Docker (SSE)  | [Docker](#)     | Default. Remote or shared MCP server. Any HTTP/SSE-capable client.                                   |
| STDIO (local) | [STDIO Mode](#) | Single-user local install for Claude Desktop or other STDIO-only clients. Requires cloning the repo. |

For production deployments, you almost always also want:

- [Persistent Configuration](#) - mount `/app/.env` from the host so the Web UI's saved settings survive container replacement.

## Ports

| Port | Service          | When exposed                                    |
| ---- | ---------------- | ----------------------------------------------- |
| 8000 | MCP SSE endpoint | Always, in Docker mode.                         |
| 9000 | Web UI / FastAPI | Optional. Skip if you only want the MCP server. |

The Web UI process supervises the MCP server process; both come up from the same container.

## Minimal command

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

See [Docker](#) for the full options (ARM64, Web UI, environment variables) and [Persistent Configuration](#) for the volume mount that retains your settings.

[title] Web UI
[path] Clients/

The Docker image includes a built-in chat interface that lets you interact with Litmus Edge using natural language. No MCP client configuration required.

## Start the server with the Web UI

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 -p 9000:9000 \
  -e ANTHROPIC_API_KEY=<key> \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

- `:9000` Web UI. Open `http://localhost:9000` in your browser, add a Litmus Edge instance via the config page, and start chatting.
- `:8000` SSE endpoint for external MCP clients. Still available; using the Web UI does not disable it.

## First-run setup

If no LLM API key is configured, opening `http://localhost:9000` lands on a setup screen. Enter at least one of:

- `ANTHROPIC_API_KEY`
- `OPENAI_API_KEY`
- `GEMINI_API_KEY`

The Web UI saves the keys and immediately fetches the live model catalog from each provider so you can pick a specific model.

## Pages

| Path          | Purpose                                                                                                         |
| ------------- | --------------------------------------------------------------------------------------------------------------- |
| `/`           | Chat interface. Streams the model's response, renders markdown, shows tool-call badges, supports a stop button. |
| `/update-env` | Configuration: API keys, model selection, Litmus Edge instances, NATS, InfluxDB, LEM.                           |
| `/health`     | One status card per configured Litmus Edge instance. Shows reachability and active-instance state.              |
| `/setup`      | First-run API key entry (auto-redirected to when no key is set).                                                |

## LLM providers

Supported providers: Anthropic Claude, OpenAI, Google Gemini.

The active provider and model are switchable from `/update-env` at any time. See [LLM Providers](#) for details.

## Multiple Litmus Edge instances

The Web UI lets you register and switch between multiple Litmus Edges from a single MCP server. Each instance keeps its own URL and OAuth2 credentials; the active instance is mirrored into the canonical `EDGE_URL` / `EDGE_API_CLIENT_ID` / `EDGE_API_CLIENT_SECRET` so the rest of the system works unchanged.

Manage instances under **Config -> Litmus Edge Instances**, or check status per-instance from the **Health** page. See [Multi-Instance Edge](#).

## Splitting the Web UI and MCP server across hosts

If you deploy the MCP server and the Web UI on separate hosts, point the Web UI at the server with:

```bash
-e MCP_SSE_URL=http://<mcp-server-host>:8000/sse
```

## Live Litmus documentation as MCP Resources

The server exposes `litmus://docs/<section>` URIs that fetch live content from [docs.litmus.io](https://docs.litmus.io) on demand. MCP-aware clients can pull current reference material directly into the model's context. See [MCP Resources](#).

[title] Claude Desktop
[path] Clients/

Claude Desktop does not speak SSE. To connect it to the Litmus MCP server, run the server locally in **STDIO mode** and point Claude Desktop at the Python process.

## Prerequisite: STDIO mode set up

Follow [STDIO Mode](#) first. It walks through cloning the repository, enabling STDIO, installing dependencies, and verifying the server runs.

You should end up with a working `python3 src/server.py` command that prints `Starting Litmus MCP Server in STDIO mode`.

## 1. Open the Claude Desktop config file

- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
- **Linux:** `~/.config/Claude/claude_desktop_config.json`

## 2. Add the server entry

```json
{
  "mcpServers": {
    "litmus-mcp-server": {
      "command": "/path/to/.venv/bin/python3",
      "args": [
        "/absolute/path/to/litmus-mcp-server/src/server.py"
      ],
      "env": {
        "PYTHONPATH": "/absolute/path/to/litmus-mcp-server/src",
        "EDGE_URL": "https://<LITMUSEDGE_IP>",
        "EDGE_API_CLIENT_ID": "<oauth2_client_id>",
        "EDGE_API_CLIENT_SECRET": "<oauth2_client_secret>",
        "NATS_SOURCE": "<LITMUSEDGE_IP>",
        "NATS_PORT": "4222",
        "NATS_USER": "<access_token_username>",
        "NATS_PASSWORD": "<access_token_from_litmusedge>",
        "INFLUX_HOST": "<LITMUSEDGE_IP>",
        "INFLUX_PORT": "8086",
        "INFLUX_DB_NAME": "tsdata",
        "INFLUX_USERNAME": "<datahub_username>",
        "INFLUX_PASSWORD": "<datahub_password>"
      }
    }
  }
}
```

- `command` should point at the Python interpreter for the project's venv (recommended) or any Python that has the project's dependencies installed.
- `args` is the absolute path to `src/server.py` in the cloned repository.

## 3. Restart Claude Desktop

The Litmus tools should appear in the model's tool list. If they don't, check Claude Desktop's logs for the server's startup output.

## Tips

For development that bridges differing MCP library versions (e.g., `npx @modelcontextprotocol/inspector` vs `litmus-mcp-server`), always point `command` at the project's venv Python so you don't pick up system-wide MCP installs.

See `claude_desktop_config_venv.example.json` in the repository for a ready-to-edit template.

## Reference

- [STDIO Mode](#) - server-side setup.
- [Headers Reference](#) - STDIO mode reads the same names from environment variables.
- [MCP transports (modelcontextprotocol.io)](https://modelcontextprotocol.io/legacy/concepts/transports)

[title] Configuration
[path] /

The Litmus MCP server is configured at two layers:

1. **Per-connection credentials** - passed as HTTP headers (SSE) or environment variables (STDIO). The server is stateless; every tool call reads these on demand.
2. **Server-side persistent state** - stored in `/app/.env` and managed via the Web UI. Things like registered Litmus Edge instances, the active one, the preferred LLM provider and model.

## Pages

| Page                     | Layer          | What it covers                                                                                         |
| ------------------------ | -------------- | ------------------------------------------------------------------------------------------------------ |
| [Headers Reference](#)   | Per-connection | The full list of headers the server recognizes, grouped by backend (Litmus Edge, NATS, InfluxDB, LEM). |
| [Multi-Instance Edge](#) | Persistent     | Registering and switching between multiple Litmus Edge devices from one MCP server.                    |
| [LLM Providers](#)       | Persistent     | API keys and model selection for the Web UI's chat.                                                    |

## Where each setting lives

| Setting                                                    | Source                    | Notes                                                        |
| ---------------------------------------------------------- | ------------------------- | ------------------------------------------------------------ |
| `EDGE_URL`, `EDGE_API_CLIENT_ID`, `EDGE_API_CLIENT_SECRET` | Per-request headers       | Mirror of the active instance (see Multi-Instance Edge).     |
| `NATS_*`                                                   | Per-request headers       | Token credentials from Litmus Edge System -> Access Control. |
| `INFLUX_*`                                                 | Per-request headers       | DataHub credentials. Firewall must permit port 8086.         |
| `EDGE_MANAGER_URL`, `EDGE_API_TOKEN`, etc.                 | Per-request headers       | LEM tenant credentials.                                      |
| `EDGE_INSTANCE_{i}_*`, `ACTIVE_EDGE_INSTANCE`              | `.env`                    | Managed by Web UI.                                           |
| `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`    | `.env` (or container env) | Read by the Web UI; not used by the MCP server itself.       |
| `PREFERRED_MODEL`, `PREFERRED_MODEL_ID`                    | `.env`                    | Web UI model selection.                                      |

## Persistent settings survive container replacement only with a volume mount

By default `.env` is inside the container. See [Persistent Configuration](#) for the host-side mount that keeps it.

[title] Multi-Instance Litmus Edge
[path] Configuration/

# Multi-Instance Litmus Edge

The Web UI lets you register multiple Litmus Edge devices from a single MCP server and switch the active one without restarting.

## Why

A single MCP server is often shared across more than one physical edge: a lab unit, a staging deployment, a production deployment, a customer demo box. Multi-instance support keeps each set of credentials on file and lets you flip between them from the chat header.

## Where it lives

Instances are stored in the `.env` file under indexed keys:

```javascript
EDGE_INSTANCE_1_URL=https://10.0.0.10
EDGE_INSTANCE_1_CLIENT_ID=...
EDGE_INSTANCE_1_CLIENT_SECRET=...
EDGE_INSTANCE_1_NAME=Lab

EDGE_INSTANCE_2_URL=https://10.0.0.20
EDGE_INSTANCE_2_CLIENT_ID=...
EDGE_INSTANCE_2_CLIENT_SECRET=...
EDGE_INSTANCE_2_NAME=Staging

ACTIVE_EDGE_INSTANCE=1
```

The active instance's credentials are mirrored into the canonical keys:

```javascript
EDGE_URL=...
EDGE_API_CLIENT_ID=...
EDGE_API_CLIENT_SECRET=...
```

So every tool and every external MCP client continues to see a single set of `EDGE_URL` / `EDGE_API_CLIENT_ID` / `EDGE_API_CLIENT_SECRET` headers, regardless of how many instances you have configured.

## Managing instances from the Web UI

`/update-env` -> **Litmus Edge Instances**:

- **Add** a new instance: provide URL, client ID, client secret, optional friendly name.
- **List** registered instances. The current active one is highlighted.
- **Switch** the active instance. The MCPClient is rebuilt server-side so subsequent tool calls use the new credentials immediately.
- **Remove** an instance. If the active one is removed, the next available instance becomes active.

## Managing instances from the API

| Endpoint                    | Method | Purpose                                                     |
| --------------------------- | ------ | ----------------------------------------------------------- |
| `/api/edge-instances`       | GET    | List all registered instances.                              |
| `/api/add-edge-instance`    | POST   | Append a new instance.                                      |
| `/api/remove-edge-instance` | POST   | Remove an instance by index.                                |
| `/api/switch-edge-instance` | POST   | Set a different instance as active.                         |
| `/api/edge-health?index=N`  | GET    | Check a specific instance without switching the active one. |

## Health page

`/health` shows one status card per configured instance. Each card calls `/api/edge-health?index=N` so you can verify all your edges from one place without disturbing the active one.

## External MCP clients and multi-instance

External clients (Claude Desktop, Cursor, etc.) connect to the SSE endpoint directly and supply their own headers. They are not aware of the Web UI's instance list. If you want different clients to talk to different edges, run separate MCP server containers or send different headers per client.

The instance list is only consumed by the Web UI's chat at `http://localhost:9000`.

[title] DeviceHub Tags
[path] Tools/

# DeviceHub, Tags

Manage tags (data points / registers) on DeviceHub devices: list, create, update, delete, and check status.

| Tool                                 | Description                                                                                  |
| ------------------------------------ | -------------------------------------------------------------------------------------------- |
| `get_devicehub_device_tags`          | Retrieve all tags for a specific device.                                                     |
| `get_current_value_of_devicehub_tag` | Read the current real-time value of a specific device tag.                                   |
| `create_devicehub_tag`               | Create a new tag (register) on a device. Driver-required properties auto-fill from defaults. |
| `update_devicehub_tag`               | Update mutable fields of an existing tag (display name, description, properties).            |
| `delete_devicehub_tag`               | Delete a tag from a device. Destructive.                                                     |
| `get_tag_status`                     | Return OK / ERROR status for tags on a specific device. Optionally filter to a single tag.   |
| `get_all_tags_status`                | Return tag status across all devices. Defaults to non-OK only so issues surface first.       |

## When to use which

- **"What tags does this device have?":** `get_devicehub_device_tags`.
- **"What's the current value of tag X?":** `get_current_value_of_devicehub_tag`. For trend analysis or live charts, prefer the NATS tools (see [NATS Topics](#)).
- **Bulk health check:** `get_all_tags_status` first (non-OK by default), then drill into a specific device with `get_tag_status` if needed.
- **Tag CRUD:** `create_devicehub_tag`, `update_devicehub_tag`, `delete_devicehub_tag`. `delete_devicehub_tag` is irreversible at the device level; confirm before calling.

## Requirements

- `EDGE_URL`, `EDGE_API_CLIENT_ID`, `EDGE_API_CLIENT_SECRET`.

## Related

- [DeviceHub, Devices](#) for device-level operations.
- [NATS Topics](#) for streaming current values.
- [InfluxDB / Time Series](#) for historical data per tag.

[title] Litmus Edge Manager (LEM)
[path] Tools/

# Litmus Edge Manager (LEM)

Drive a Litmus Edge Manager tenant: list devices, projects, companies, licenses, and alerts.

All LEM tools talk to a **cloud Edge Manager**, not a single Litmus Edge. They need the LEM header set.

| Tool                        | Description                                                                           |
| --------------------------- | ------------------------------------------------------------------------------------- |
| `lem_list_devices`          | List edge devices registered in a LEM project (paginated).                            |
| `lem_get_device_details`    | Full LEM-side record for a single edge device (versions, license, last seen, config). |
| `lem_list_device_versions`  | List Litmus Edge versions registered in a LEM project.                                |
| `lem_list_device_groups`    | List device group labels (project-level groupings) defined in a LEM project.          |
| `lem_get_license_expiry`    | List devices whose license expires within the next N days.                            |
| `lem_get_expired_licenses`  | List devices in a LEM project whose license has already expired.                      |
| `lem_dashboard_usage`       | Project usage summary (device counts, license usage, deployment stats).               |
| `lem_get_project_alerts`    | List active project-level alerts (device offline, license issues, etc.).              |
| `lem_list_companies`        | List all companies on the LEM tenant with project / device / model counts.            |
| `lem_get_company_details`   | Full details for a single company by name (teams, license, quotas).                   |
| `lem_list_company_projects` | List all projects belonging to a given company.                                       |
| `lem_get_project_details`   | Single-project details (timezone, data TTL, allocated slots, billing plan).           |
| `lem_deployment_info`       | LEM tenant deployment info (version, build, release metadata).                        |
| `lem_get_system_time`       | LEM server clock; useful when comparing edge timestamps.                              |

## When to use which

- **Fleet overview:** `lem_list_devices`, `lem_dashboard_usage`, `lem_get_project_alerts`.
- **Single-device deep dive:** `lem_get_device_details`. For executing actions on that device, see [LEM Bridge](#).
- **Licensing:** `lem_get_license_expiry` (upcoming) and `lem_get_expired_licenses` (already expired) for renewal workflows.
- **Tenant administration:** `lem_list_companies`, `lem_get_company_details`, `lem_list_company_projects`, `lem_get_project_details`.
- **Comparing edge timestamps to LEM:** `lem_get_system_time` gives the LEM server clock so you can sanity-check drift.

## Requirements

| Header                    | Required | Notes                                                           |
| ------------------------- | -------- | --------------------------------------------------------------- |
| `EDGE_MANAGER_URL`        | yes      | Include `https://`.                                             |
| `EDGE_API_TOKEN`          | yes      | API token issued by LEM.                                        |
| `EDGE_MANAGER_PROJECT_ID` | optional | Default project id when omitted from arguments.                 |
| `EDGE_MANAGER_ADMIN_URL`  | optional | Defaults to LEM host on port `8446`.                            |
| `VALIDATE_CERTIFICATE`    | optional | `true` to verify TLS certs on the LEM bridge (default `false`). |

The Web UI's **Config -> Litmus Edge Manager** page manages multiple LEM connections and writes these headers automatically.

## Related

- [LEM Bridge](#) - tunnel through LEM to call edge tools on a specific device without switching the active edge instance.
- `litmus://docs/edgemanager` MCP resource - live LEM documentation.

[title] Cloud
[path] Tools/

# Cloud / LEM Activation

Check whether the Litmus Edge is cloud-registered and connected to a Litmus Edge Manager tenant.

| Tool                          | Description                                                                                           |
| ----------------------------- | ----------------------------------------------------------------------------------------------------- |
| `get_cloud_activation_status` | Check cloud registration and Litmus Edge Manager (LEM) connection status from the edge's perspective. |

## When to use

- **Commissioning:** confirm the edge has been activated against the expected LEM tenant.
- **Troubleshooting:** if LEM-side queries don't see the device, the edge-side activation status is the first thing to check.

This tool reports what the edge itself believes about its activation; it does not query LEM. For the LEM-side view, see [Litmus Edge Manager (LEM)](#).

## Requirements

- `EDGE_URL`, `EDGE_API_CLIENT_ID`, `EDGE_API_CLIENT_SECRET`.

[title] Overview
[path] /

# Litmus MCP Server

The Litmus MCP Server is the official **Model Context Protocol (MCP)** server for Litmus Automation. It lets large language models (LLMs) and AI coding agents - including Claude, Cursor, VS Code Copilot, Windsurf, and Claude Code - interact directly with Litmus Edge for device configuration, real-time monitoring, and industrial automation management.

Built on the MCP SDK and compliant with the  [Model Context Protocol spec](https://modelcontextprotocol.io/) the server ships as a single Docker image with two components:

- **MCP Server (port 8000)**: SSE transport endpoint for external MCP clients such as Claude Desktop, Cursor, VS Code, Windsurf, and Claude Code
- **Web UI (port 9000):** a built-in chat interface for interacting with Litmus Edge directly in a browser, no MCP client required

## What you can do

The Litmus MCP Server exposes 57 tools across 11 categories, giving AI agents the ability to:

- Inspect and configure DeviceHub devices and tags
- Read live values from NATS topics
- Query historical time-series data from InfluxDB
- Manage Docker containers on the Litmus Edge Marketplace
- Build, list, and inspect Digital Twin models and instances
- Pull system events, network information, and packet captures
- Drive a Litmus Edge Manager (LEM) tenant: list devices, licenses, alerts, and project usage

See the [Tools Reference](#) for the full list.

## Supported AI Clients

- Claude Desktop
- Claude Code
- Cursor
- VS Code Copilot
- Windsurf
- Any MCP-compatible LLM client
- Built-in Web UI (no client needed)

## How It Works

The server is stateless. All credentials are supplied per connection via HTTP headers in SSE mode, or via environment variables in STDIO mode. An LLM client connects to the MCP server over SSE, which in turn communicates with:

- Litmus Edge:  via REST API and the Litmus SDK
- NATS Broker: for live tag and event values
- InfluxDB: for historical time-series data

This architecture means no credentials are ever stored on the server, and each session is independently authenticated.

### Architecture

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/c7T68HiZUUk-rI971IbH_-20260512-015211.png)

## Quick Start

- [Getting Started](#) - run the server in Docker in under a minute.
- [Web UI](#) - chat with Litmus Edge directly in your browser.
- [Client Configuration](#) - wire it into Claude Desktop, Cursor, VS Code, Windsurf, Claude Code.
- [Tools Reference](#) - every tool the LLM can call, grouped by category.
- [Headers Reference](#) - the full set of connection headers and what each one does.

## Project links

- GitHub: [litmusautomation/litmus-mcp-server](https://github.com/litmusautomation/litmus-mcp-server)
- Container image: ghcr.io/litmusautomation/litmus-mcp-server\:latest
- Glama registry: glama.ai/mcp/servers/@litmusautomation/litmus-mcp-server
- MCP.so registry: mcp.so/server/litmus-mcp-server/litmusautomation


[title] Datahub Influx DB
[path] Tools/

# InfluxDB / Time Series

Query historical time-series data from the Litmus Edge `tsdata` InfluxDB.

| Tool                                     | Description                                                                                         |
| ---------------------------------------- | --------------------------------------------------------------------------------------------------- |
| `get_historical_data_from_influxdb` `**` | Query historical time-series data by measurement and time range.                                    |
| `list_influxdb_measurements` `**`        | List all measurement names in `tsdata`. Use for discovery before more specific queries.             |
| `get_device_historical_data` `**`        | Fuzzy-match device names to InfluxDB measurements and pull historical data per match.               |
| `query_tag_data` `**`                    | Query historical data for a specific tag by resolving its output topic. Newest-first.               |
| `get_tag_statistics` `**`                | Aggregate stats for a tag: mean, min, max, stddev, count, plus baseline range (`mean +/- 2 sigma`). |
| `get_device_data_for_inference` `**`     | Composite payload for AI inference: device metadata, all tags, per-tag stats, and recent samples.   |

## When to use which

- **Discovery:** `list_influxdb_measurements` to see what's actually being recorded before querying.
- **By measurement (raw):** `get_historical_data_from_influxdb` if you already know the measurement name and time range.
- **By device (fuzzy):** `get_device_historical_data` when you have a human-readable device name and want everything related.
- **By tag:** `query_tag_data` for the per-tag time series.
- **Summary stats for a tag:** `get_tag_statistics`. Includes a `mean +/- 2 sigma` baseline range that's handy for anomaly checks.
- **AI inference input:** `get_device_data_for_inference` returns a composite payload (device + tags + stats + recent samples) suitable for handing to a model in one shot.

## Requirements

- `INFLUX_HOST`, `INFLUX_PORT` (default `8086`), `INFLUX_DB_NAME` (default `tsdata`), `INFLUX_USERNAME`, `INFLUX_PASSWORD`.
- Litmus Edge must allow port `8086/TCP` under **System -> Network -> Firewall**.
- For `query_tag_data` and similar tag-resolving tools, `EDGE_*` headers are also required to look up the tag's output topic from DeviceHub.

## Setting up firewall access

1. Navigate to **Litmus Edge -> System -> Network -> Firewall**.
2. Add a firewall rule to allow port **8086** on **TCP**.
3. Confirm InfluxDB is reachable from the MCP server host (`curl http://<edge>:8086/ping`).

## Related

- [DeviceHub, Tags](#) - current value vs. historical.
- [NATS Topics](#) - live streams (no persistence).
- `get_device_connection_status` in [DeviceHub, Devices](#) - uses InfluxDB recency to infer connection health.

[title] System Events
[path] Tools/

# System, Events

Read Litmus Edge's internal event log and event-manager statistics.

| Tool                     | Description                                                                                                |
| ------------------------ | ---------------------------------------------------------------------------------------------------------- |
| `get_system_events`      | Retrieve system events filtered by time range, component, and severity (`INFO`, `WARN`, `ALERT`, `ERROR`). |
| `get_system_event_stats` | Event manager statistics: queue sizes, processing rates, memory, health indicators.                        |

## When to use which

- **Postmortem / forensic:** `get_system_events` with a time range around the incident, optionally narrowed by component and severity.
- **"Is the event pipeline healthy?":** `get_system_event_stats` for current queue depth and processing rate. Useful when triaging slow event delivery.

## Requirements

- `EDGE_URL`, `EDGE_API_CLIENT_ID`, `EDGE_API_CLIENT_SECRET`.

## Related

- [System, Network](#) - firewall and interface info for the same edge.

[title] STDIO Mode
[path] Installation/

STDIO mode runs the Litmus MCP server as a local child process of an MCP client. It is the only way to use Claude Desktop (which does not speak SSE) and is convenient for local development.

STDIO mode is **not** available from the published Docker image. You need to clone the repository and run the Python process directly.

## 1. Clone

```bash
git clone https://github.com/litmusautomation/litmus-mcp-server.git
cd litmus-mcp-server
```

## 2. Enable STDIO

Edit `src/config.py` so that:

```python
ENABLE_STDIO = os.getenv("ENABLE_STDIO", "true").lower() in ("true", "1", "yes")
```

Defaulting to `true` means the server runs in STDIO mode unless `ENABLE_STDIO=false` is passed at launch.

## 3. Install dependencies

Using `uv`:

```bash
uv sync
```

Using pip in a venv:

```bash
python -m venv .venv
. .venv/bin/activate
pip install -e .
```

## 4. Run the server

```bash
# uv
uv run python3 src/server.py

# plain Python
python3 src/server.py
```

You should see `Starting Litmus MCP Server in STDIO mode` in the log. The process now waits for an MCP client on stdin / stdout.

## 5. Wire it into an MCP client

For Claude Desktop, see [Claude Desktop](#).

For any other STDIO-capable MCP client, the pattern is:

```json
{
  "mcpServers": {
    "litmus-mcp-server": {
      "command": "/path/to/.venv/bin/python3",
      "args": [
        "/absolute/path/to/litmus-mcp-server/src/server.py"
      ],
      "env": {
        "PYTHONPATH": "/absolute/path/to/litmus-mcp-server/src",
        "EDGE_URL": "https://<LITMUSEDGE_IP>",
        "EDGE_API_CLIENT_ID": "<oauth2_client_id>",
        "EDGE_API_CLIENT_SECRET": "<oauth2_client_secret>",
        "NATS_SOURCE": "<LITMUSEDGE_IP>",
        "NATS_PORT": "4222",
        "NATS_USER": "<access_token_username>",
        "NATS_PASSWORD": "<access_token_from_litmusedge>",
        "INFLUX_HOST": "<LITMUSEDGE_IP>",
        "INFLUX_PORT": "8086",
        "INFLUX_DB_NAME": "tsdata",
        "INFLUX_USERNAME": "<datahub_username>",
        "INFLUX_PASSWORD": "<datahub_password>"
      }
    }
  }
}
```

STDIO mode reads the same credentials as SSE mode, but from process environment variables instead of HTTP headers. See [Headers Reference](#) for what each one does.

## Notes

- For dev work that bridges differing MCP library versions (e.g., `npx @modelcontextprotocol/inspector` vs `litmus-mcp-server`), point `command` at the project's venv Python so you don't pick up system-wide MCP installs. See `claude_desktop_config_venv.example.json` in the repo for a ready-to-edit template.
- Only one MCP client can attach to a given STDIO server process at a time.
- For shared or multi-user setups, use Docker SSE mode instead. See [Docker](#).

[title] Clients
[path] /

There are three ways to talk to the Litmus MCP server:

- **The built-in Web UI** on port `9000`. A browser chat interface bundled with the server. No external MCP client required.
- **External SSE clients** connect to the MCP endpoint on port `8000`. Used by Claude Code, Cursor, VS Code, Windsurf, and any other MCP client that supports remote/SSE servers. Credentials are passed as HTTP headers.
- **External STDIO clients** like Claude Desktop run the server as a child process. Credentials come from environment variables.

Every external SSE client uses the same header set. See [Headers Reference](#) for what each header does.

## Pick a client

| Client                        | Transport     | Config file                                |
| ----------------------------- | ------------- | ------------------------------------------ |
| [Web UI](#)                   | n/a (bundled) | n/a                                        |
| [Claude Code CLI](#)          | SSE           | `~/.claude/mcp.json`                       |
| [Cursor IDE](#)               | SSE           | `~/.cursor/mcp.json` or `.cursor/mcp.json` |
| [VS Code / GitHub Copilot](#) | SSE           | User settings JSON or `.vscode/mcp.json`   |
| [Windsurf](#)                 | SSE           | `~/.codeium/windsurf/mcp_config.json`      |
| [Claude Desktop](#)           | STDIO         | `claude_desktop_config.json`               |

## Common header block

Every SSE client uses some variant of:

```json
"headers": {
  "EDGE_URL": "https://<LITMUSEDGE_IP>",
  "EDGE_API_CLIENT_ID": "<oauth2_client_id>",
  "EDGE_API_CLIENT_SECRET": "<oauth2_client_secret>",
  "NATS_SOURCE": "<LITMUSEDGE_IP>",
  "NATS_PORT": "4222",
  "NATS_USER": "<access_token_username>",
  "NATS_PASSWORD": "<access_token_from_litmusedge>",
  "INFLUX_HOST": "<LITMUSEDGE_IP>",
  "INFLUX_PORT": "8086",
  "INFLUX_DB_NAME": "tsdata",
  "INFLUX_USERNAME": "<datahub_username>",
  "INFLUX_PASSWORD": "<datahub_password>"
}
```

LEM-related headers (`EDGE_MANAGER_URL`, `EDGE_API_TOKEN`, `EDGE_MANAGER_PROJECT_ID`, `EDGE_MANAGER_ADMIN_URL`, `VALIDATE_CERTIFICATE`) are optional and only needed if you intend to call `lem_*` tools.

[title] Persistent Configuration
[path] Installation/

By default, configuration saved through the Web UI (API keys, Litmus Edge instances, model preferences, NATS / InfluxDB / LEM settings) is written to `/app/.env` inside the container. It is lost when the container is removed.

To retain configuration across container restarts and replacements, mount a host file over `/app/.env`.

## One-time setup

```bash
mkdir -p /opt/litmus-mcp
touch /opt/litmus-mcp/.env
```

:::BlockQuote
The host-side file must be created with `touch` **before** running the container. If it does not exist, Docker creates a directory at that path and the application fails to write configuration.
:::

## Run with the volume mount

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 -p 9000:9000 \
  -v /opt/litmus-mcp/.env:/app/.env \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

Any configuration you save in the UI is written to `/opt/litmus-mcp/.env` on the host. A new container started with the same `-v` flag picks it up automatically on startup.

## Docker Compose equivalent

```yaml
services:
  litmus-mcp-server:
    image: ghcr.io/litmusautomation/litmus-mcp-server:latest
    ports:
      - "8000:8000"
      - "9000:9000"
    volumes:
      - /opt/litmus-mcp/.env:/app/.env
```

## What gets persisted

The mounted `.env` ends up holding:

- `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY` (whichever you set)
- `PREFERRED_MODEL`, `PREFERRED_MODEL_ID`
- `ACTIVE_EDGE_INSTANCE`, plus `EDGE_INSTANCE_{i}_*` entries for each registered Litmus Edge
- Canonical `EDGE_URL`, `EDGE_API_CLIENT_ID`, `EDGE_API_CLIENT_SECRET` (mirror of the active instance)
- `NATS_SOURCE`, `NATS_PORT`, `NATS_USER`, `NATS_PASSWORD`, `NATS_TLS`
- `INFLUX_HOST`, `INFLUX_PORT`, `INFLUX_DB_NAME`, `INFLUX_USERNAME`, `INFLUX_PASSWORD`
- LEM headers if configured

You can also seed the file before first start by writing values directly. The Web UI will read what is already there.

[title] Docker Management
[path] Tools/

# Docker Management

List and run Docker containers on the Litmus Edge Marketplace.

| Tool                                 | Description                                                       |
| ------------------------------------ | ----------------------------------------------------------------- |
| `get_all_containers_on_litmusedge`   | List all Docker containers running on Litmus Edge Marketplace.    |
| `run_docker_container_on_litmusedge` | Deploy and run a new Docker container on Litmus Edge Marketplace. |

## When to use which

- **Inventory:** `get_all_containers_on_litmusedge` for the current container set, with names, images, and status.
- **Deploy:** `run_docker_container_on_litmusedge` with image, command, environment, and port bindings.

These tools talk to the Marketplace component on the Litmus Edge. For Marketplace catalog management at the LEM level, see [Litmus Edge Manager (LEM)](#).

## Requirements

- `EDGE_URL`, `EDGE_API_CLIENT_ID`, `EDGE_API_CLIENT_SECRET`.

## Related

- [docs.litmus.io: Marketplace applications](https://docs.litmus.io/litmusedge/product-features/applications)

[space] Litmus Edge (/litmusedge-v1)

[title] Flows and Analytics Explained
[path] Overview/

Flows and Analytics are important Litmus Edge (LE) features, offering robust data manipulation and analysis tools in industrial settings. You can enhance your data-driven decision-making and operational efficiency with these tools. See [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89) and [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5) to learn more about each feature.&#x20;

This topic compares the features and helps you determine when you should use each.&#x20;

# **Flows**

Flows are a series of processes that handle data in a way that can be customized to meet various operational requirements. Flows are particularly useful for tackling complex operational tasks as they permit detailed data processing and tailored workflows. The Flows Manager is a central feature that enables you to create and manage individual flows.

Litmus Edge provides a user-friendly interface that allows you to easily create, edit, and manage workflows by dragging and dropping nodes onto the flow canvas. You can design workflows with this interface if you have limited programming experience. However, you need to have a good understanding of [JSON](https://www.json.org/json-en.html) and [Node-RED](https://nodered.org/) to effectively customize these flows.

The ability to visually customize flows with low-code development and in a web-browser-based flow editor is a key feature of Litmus Edge. This tool is ideal for complex industrial applications, allowing you to tailor the flows to your specific requirements. You can integrate various data sources, apply diverse processing rules, and execute sophisticated logic.

**Litmus Edge Flows offers many filter nodes, including:**

- DataHub Subscribe and Publish
- Inject
- Debug
- Trigger
- Execute
- JSON Parser
- Read File

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8GDaq7AUziuVsCfB2MlcU_image.png "Flows Canvas")

## User Scenarios

- **Automate your manufacturing workflows with Flows:&#x20;**&#x46;lows automate complex manufacturing workflows, controlling the sequence of operations and adjusting settings, routing materials, and changing schedules dynamically based on real-time data inputs.
- **Customized Data Processing for Equipment Optimization**: Flows can create customized data processing algorithms in specialized manufacturing settings. For example, in facilities that use high-precision tools, Flows can analyze sensor data to optimize tool usage, predict maintenance needs, and prevent equipment failure.
- For additional detailed guides and user scenarios for leveraging Flows, see [Flows Guides](docId\:Gio8gobgZIW3WZxt9QAWR).&#x20;

## Limitations

The following limitations for Flows can help you determine if the Analytics feature is a more appropriate tool for your specific requirements.&#x20;

- **Technical Complexity for Non-Experts:&#x20;**&#x43;orrectly configuring your JSON and Flows canvas without syntax errors and bugs is crucial in Litmus Edge. Mistakes in JSON code can cause malfunctions in flow processes, affecting the efficiency and reliability of manufacturing operations.
- **Scalability Concerns in Large-Scale Operations:&#x20;**&#x41;s the number and complexity of flows increase, managing and maintaining these flows can be difficult. This is especially true in large manufacturing settings where data from thousands of sensors and devices need to be processed and analyzed continuously.

# Analytics

Analytics is a powerful tool for simplifying industrial data interpretation and visualization. It is designed to provide users of varying technical expertise levels with a straightforward and accessible method of processing, calculating, and computing analytical functions.

The analytics feature in Litmus Edge offers a full set of readily deployable processors, allowing you to quickly and efficiently add different mathematical functions to make informed decision-making in industrial environments.

The Analytics feature is user-friendly and does not require extensive programming knowledge, making it an ideal tool for users who need to analyze industrial data but need more specialized data science or programming skills.

**Litmus Edge Analytics offers many processor functions, including:**

- Anomaly Detection
- ARIMA Filter
- Feature Extraction
- Linear Prediction
- Normalization
- Statistical Prediction
- XMR Chart

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/E5DYJod2PXWJouX9bczU__image.png "Analytics canvas")

## **User Scenarios**

- **Routine Performance Monitoring:&#x20;**&#x41;nalytics is an ideal tool for regularly monitoring manufacturing processes. It can track key performance indicators (KPIs), such as production output, operational efficiency, and machine uptime. The data can be presented in an easily understandable format, and various customization options are available for each function.
- **Predictive Maintenance:&#x20;**&#x41;nalytics can predict machine or component failures based on historical and real-time data. This enables proactive maintenance scheduling, which minimizes downtime and saves money in the long term.
- For additional detailed guides and user scenarios for leveraging Analytics, see [Analytics Guides](docId\:O9EkCXH-d9DmHjOaru_2B)

## **Limitations**

Review the following limitations for Analytics to help you determine if the Flows feature is a more appropriate tool for your specific requirements.&#x20;

- **Limited Customizability:&#x20;**&#x54;he Analytics feature has limitations in terms of customization and works best with predefined processes and functions that can be configured for different parameters. It may be useful only for certain specialized industrial requirements.
- **Surface-Level Insights for Complex Data:&#x20;**&#x41;dvanced data sets require more sophisticated analytical tools to provide in-depth insights beyond surface-level analysis. In such cases, more sophisticated, customized analysis (such as that offered by Flows) might be necessary to uncover deeper patterns and correlations.

# Flows and Analytics Compared

Review the following capabilities of both features.&#x20;

| **Capability/Requirement**                                              | **Flows** | **Comment**                                                       | **Analytics** | **Comment**                                                                    |
| ----------------------------------------------------------------------- | --------- | ----------------------------------------------------------------- | ------------- | ------------------------------------------------------------------------------ |
| Knowledge of JSON required                                              | Yes       | Required for customizing certain nodes and functions              | No            | Pre-defined functions are ready to use and only require limited configurations |
| Viewing output of data on canvas&#xD;                                   | Yes       | Use the **debug&#x20;**&#x6E;ode to view output                   | Yes           | Click the **View&#x20;**&#x69;con on a processor to view data output           |
| Publishing output to defined topics                                     | Yes       | DataHub Publish node available                                    | Yes           | DataHub Publish output function available                                      |
| Out-of-the-box functions available&#xD;                                 | No        | Functions and data processing need to be manually configured      | Yes           | A number of pre-defined functions and KPIs are available to use                |
| Easy-to-use workflow for setting up data processing and publishing&#xD; | No        | Flows need to be manually set up and configured                   | Yes           | You can easily set up a flow by selecting the input, processor, and output     |
| Customizable functions and processes&#xD;                               | Yes       | You can fully customize flows to your specific requirements       | No            | Pre-defined functions have limited customization options                       |
| Parsin data into different formats&#xD;                                 | Yes       | Parser nodes are available for formats such as CSV, XML, and YAML | No            | This option is not available&#xD;                                              |
| Creating dashboards to view data&#xD;                                   | Yes       | You can create and customize Flow dashboards                      | No            | This option is not available                                                   |
| Sending alerts through email and text message                           | Yes       | The **email&#x20;**&#x61;nd **twilio out** nodes are available    | No            | This option is not available&#xD;                                              |


[title] AB CompactLogix FreeTag (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

Review the following information for setting up and configuring the AB CompactLogix FreeTag (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                                                                                                                                                                                                                                          |
| **Validated devices/series** | [CompactLogix](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/small-controllers/compactlogix-family.html)<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Allen Bradley                     |
| **Driver**             | AB CompactLogix FreeTag (Gen1)    |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 19200                             |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Slot**               | 0                                 |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following tag parameters and available value types.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the case-sensitive register name exactly as it is defined in the PLC.

A **Connected** status for the device won't display until a tag with a correct register name is created.

## Available Value Types

- `bool`
- `sint`
- `int`
- `dint`
- `real`
- `lint`

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] CodeSys Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/CodeSys Devices/

Review the following information for setting up and configuring the CodeSys Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items |
| ---------------------------- | ---------------- |
| **Driver type**              | Ethernet         |
| **Validated devices/series** | CODESYS V2       |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | CodeSys Devices                          |
| **Driver**          | CodeSys Ethernet (Gen1)                  |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 1200                                     |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** |
| -------- | --------------- | ------------------ | --------------- | --------------- |
| IX       | bit             | DDDDDdd            | 0               | 6553515         |
| QX       | bit             | DDDDDdd            | 0               | 6553515         |
| MX       | bit             | DDDDDdd            | 0               | 6553515         |
| IW       | word            | DDDDD              | 0               | 65535           |
| QW       | word            | DDDDD              | 0               | 65535           |
| MW       | word            | DDDDD              | 0               | 65535           |
| ID       | word            | DDDDD              | 0               | 65535           |
| QD       | word            | DDDDD              | 0               | 65535           |
| MD       | word            | DDDDD              | 0               | 65535           |



## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] AB EthernetIP Ethernet
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 2 Drivers/

Review the following information for setting up and configuring the AB EthernetIP Ethernet driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                 |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                                         |
| **Validated devices/series** | [MicroLogix](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/micro-controllers/micrologix-family/micrologix-1400-controllers.html)&#xA;[SLC 500](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/small-controllers/slc-500-controllers.html) |
| **Replaces Gen 1 driver(s)** | [AB MicroLogix (Gen1)](docId\:KAsZQeWgFgIb65dSuS7dd)&#xA;Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd)                                                                                                                                                                                                        |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Start the RSLogix 500 application.
2. Select **File** > **Open**, then select your PLC project.
3. In *Controller Organizer*, right-click the device and select **Properties** from the popup menu.
   The *Module Properties* dialog box appears.
4. Select the **Port Configuration** tab.
5. Copy the IP address from the **IP address** field.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                      |
| ------------------- | ------------------------------------------ |
| **Type**            | Allen-Bradley                              |
| **Driver**          | AB EthernetIP Ethernet                     |
| **Network Address** | The device address you recorded in Step 1. |
| **Port**            | 44818                                      |
| **Slot**            | 0                                          |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**    | **Value Types** | **Access Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                                                                                         |
| ----------- | --------------- | ---------------- | ------------------ | --------------- | --------------- | ------------------------------------------------------------------------------------------------------- |
| O(Bit)      | bool            | R/W              | DDDdd              | 0               | 25515           | Outputs                                                                                                 |
| I(Bit)      | bool            | R/W              | DDDdd              | 0               | 25515           | Inputs                                                                                                  |
| Slot O(Bit) | bool            | R/W              | SSEEdd             | 0               | 3115            | Outputs                                                                                                 |
| Slot I(Bit) | bool            | R/W              | SSEEdd             | 0               | 3115            | Inputs                                                                                                  |
| S(Bit)      | bool            | R/W              | DDDdd              | 0               | 25515           | Status Bits                                                                                             |
| S           | int             | R/W              | DDD                | 0               | 255             | Status Words                                                                                            |
| B(Bit)      | bool            | R/W              | DDDdd              | 0               | 25515           | Bit data file Bfn                                                                                       |
| B           | int             | R/W              | DDD                | 0               | 255             | Bit data file, 16-bit access                                                                            |
| Timer       | T               | R/W              | DDD                | 0               | 255             | Timer                                                                                                   |
| TfnPRE      | int             | R/W              | DDD                | 0               | 255             | Timer Preset Value                                                                                      |
| TfnACC      | int             | R/W              | DDD                | 0               | 255             | Timer Accumulator Value                                                                                 |
| Counter     | C               | R/W              | DDD                | 0               | 255             | Counter                                                                                                 |
| CfnPRE      | int             | R/W              | DDD                | 0               | 255             | Counter Preset Value                                                                                    |
| CfnACC      | int             | R/W              | DDD                | 0               | 255             | Counter Accumulator Value                                                                               |
| Control     | R               | R/W              | DDD                | 0               | 255             | Control Data Element                                                                                    |
| R6LEN       | int             | R/W              | DDD                | 0               | 255             | Control Data Element Number of characters specified to be sent or received                              |
| R6POS       | int             | R/W              | DDD                | 0               | 255             | Control Data Element: Number of characters actually sent or received                                    |
| N(Bit)      | bool            | R/W              | DDDdd              | 0               | 25515           | Integer File Nfn, but access                                                                            |
| N           | int             | R/W              | DDD                | 0               | 255             | Integer File is a general purpose file consisting of 16-bit signed integer data words                   |
| F           | real            | R/W              | DDD                | 0               | 255             | Floating point data file (F8) consisting of 32-bit IEEE-754 floating point data elements                |
| L           | dint            | R/W              | DDD                | 0               | 255             | The Long Word File is a general purpose file consisting of 32-bit signed integer data words             |
| ST          | string          | R/W              | DDD                | 0               | 255             | The String File is a file that stores ASCII characters. See String (ST) Data File for more information. |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Data File** (Optional): Enter the data file of the tag.&#x20;
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] ISO Installation on an Industrial PC (IPC)
[path] QuickStart Guide/Installation and Deployments/

You can install Litmus Edge with a physical gateway from a USB.

:::hint{type="warning"}
**Important**: The data storage visualization technology RAID (redundant array of inexpensive disks) is not supported when installing Litmus Edge on an industrial PC.&#x20;
:::

# Before You Begin

:::ExpandableHeading
*USB Pre-Installation Checklist*

- [ ] Format a USB flash drive with at least 8GB of storage space to FAT32.
-[ ]   Download and install software to create a bootable USB drive (for example, [balenaEtcher](https://www.balena.io/etcher/). If using balenaEtcher, you must skip the validation step when creating the bootable flash drive.)
- [ ] Load the Litmus Edge Installer ISO file on the USB drive.&#x20;
-[ ]   Litmus Edge must have an x86 or amd64 device for installation. See [System Requirements](docId\:boQw9Hv4KQBt6nUF7m9s9)  for more information.
- [ ] Ensure that there is enough space on the desired partition for Litmus Edge.
- [ ] Set the correct system time in the device BIOS to prevent any license activation issues. UTC is recommended.
- [ ] To ensure that the device boots after a power loss, set the boot mode in the BIOS to UEFI.
- [ ] Set the boot order to boot from USB in the BIOS.
- [ ] Connect a monitor and keyboard to the device.
- [ ] Connect a mouse to non-serial devices for navigating the install GUI.
:::

- Make sure you have a basic knowledge of BIOS and selecting bootable media.
- Adjust the system clock using the BIOS prior to installing Litmus Edge. UTC is recommended. The 15-day trial period may be rejected and invalidated by the license server if the system clock is not adjusted. If this happens, contact your Litmus representative.
- Adjust the **Boot Mode** setting to **UEFI** using the BIOS prior to installing.
- Obtain a valid file in the ISO format (example filename: `<litmusedge-std_3.1.5.0-amd64>.iso`). You can get the ISO file from Litmus or download it from the [Litmus Central portal](https://central.litmus.io/).
- Make sure you have more than 16GB disk space to run 3.x images on a Bare Metal server.&#x20;

To use a physical gateway to install Litmus Edge, you will need to do the following:

- Step 1: Download ISO File
- Step 2: Create a Bootable USB Flash Drive
- Step 3: Install On a Device
- Step 4: Log in to Litmus Edge

# Step 1: Download ISO File

Download the Litmus Edge ISO file from the [Litmus Central portal](https://central.litmus.io/).

# Step 2: Create a Bootable USB Flash Drive

You will need to create a bootable USB flash drive and then load the ISO file onto the flash drive.

## Important

- The boot mode should be UEFI.
- If you are using [balenaEtcher](https://www.balena.io/etcher/), you must skip the validation step while creating the flash drive. Otherwise, Litmus Edge won't install successfully.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nWZRKYCTt-bu4-omBK66Y_image.png "Skip validation step")

After preparing the USB drive, choose the instructions that are relevant for the device for which you are installing Litmus Edge.

# Step 3: Install on a Device

There are two methods to installing Litmus Edge on a device:

- Install on a Device with Graphic Capability
- Install on a Device with No Graphic Capability (Headless Installer)

Select the method relevant for your device.&#x20;

These instructions are applicable for VGA devices that can render the graphics displayed in the installer.

:::hint{type="info"}
**Notes**:&#x20;

- During the installation, the progress bar may decrease at times due to partitioning.
- The time to complete the installation is based on the size of the hard disk drive. Large disk drives will cause the installation to take longer to partition the disk and therefore longer to complete setting up the virtual machine.&#x20;
:::

## Install on a Device with Graphic Capability

Complete these steps to install from a USB flash drive.&#x20;

**To install on a device with graphic capability:**

1. Insert the USB flash drive (USB installation media) that contains the Litmus Edge Installer image into the USB port on the gateway device. To execute the installer, the gateway device must boot from the USB flash drive.&#x20;
2. Perform one of the following:
   - Start the gateway device.&#x20;
   - Reboot the gateway device from the USB flash drive to begin the installation.&#x20;
     If the gateway device is not booting from the USB drive, bring up a list of boot devices.     &#x20;Each manufacturer has a specific button which must be pressed immediately after the device has been turned on or rebooted. The button is briefly displayed when the device boots after or while the logo is displayed. Common buttons are F12, the Windows key, and F9. Refer to your IPC manufacturer for more information.&#x20;
3. After the device initiates the installer, respond to the questions in the terminal user interface (TUI). `Welcome to Operating System Installer. Are you installing over Serial (for advanced users)? Yes/No :`
4. Enter **No**,  and then press **Enter**.
5. Select **Install Operating System**, and then select **OK**. Use the arrow keys to navigate to selections.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/A4UWO97dROCtNRKnB-EzO_01-kwpqybbzbplcmlbmy0m3yloopedgeinstallvgastep-2.png" size="80" width="721" height="398" caption="Install Operating System option" position="center" showCaption="true"}
6. Select the partition to install, and then select **Ok**.
   The list is device-specific. Typically, the installation location is *sda*. If the device/gateway has embedded MMC (eMMC) components, the partition name may be listed as *mmcblk&#x20;*&#x69;nstead of *sda*. Make sure you select the correct hard-drive location.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/A-A6njgmzQZv5ZG1Ebtdb_02-17iyxlgmrtvmincy0hubiloopedgeinstallvgastep-3.png" size="80" width="722" height="397" caption="Select Partition and Install option" position="center" showCaption="true"}
7. Verify the OS installation location by selecting **Yes**. If you select **No**, you are returned to the beginning of the installation.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PLvX9ozyXQXtUOvbNX5h__03-e9ddghxncrawxvqvcew2mloopedgeinstallvgastep-4.png" size="80" width="716" height="394" caption="Select Partition and Install message" position="center" showCaption="true"}
8. A second verification ensures that you are overwriting the correct device partition during the formatting process. Select **Yes** to continue formatting the device and installing the operating system.
   The installer indicates its progress, followed by a success message.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/a5lI5pFNdliROWKbIpMoC_04-svsbvtrkv5qsv2i7oweffloopedgeinstallvgastep-5.png" size="80" width="664" height="372" caption="Format Devices and Install message" position="center" showCaption="true"}
9. Power off the device and remove the USB drive (installation media).
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hQS6JwE-eiZDdh6Lw0-rF_06-25n6hfel9hwglngkjhf32loopedgeinstallvgastep-7.png" size="80" width="662" height="135" caption="Power off message" position="center" showCaption="true"}
10. Reboot the gateway device.                                                                                                                                 &#x20;

The terminal window displays the URL that must be used to access the device using the Web UI.

:::hint{type="info"}
**Note**: If several URLs are displayed, the first one is used for accessing the device through the Web UI.
:::

You can now jump to "Step 3: Log in to Litmus Edge".&#x20;

## Install on a Device with No Graphic Rendering Capabilities (Headless Installer)

Complete these steps to install from a serial device.&#x20;

**To install on a device with no graphic rendering capabilities:&#x20;**

1. Insert the USB flash drive (USB installation media) that contains the Litmus Edge Installer image into the USB port on the gateway device. To execute the installer, the gateway device must boot from the USB flash drive.&#x20;
2. Perform one of the following:
   - Start the gateway device.&#x20;
   - Reboot the gateway device from the USB flash drive to begin the installation.&#x20;
     If the gateway device is not booting from the USB drive, bring up a list of boot devices.     &#x20;Each manufacturer has a specific button that must be pressed immediately after the device has been turned on or rebooted. The button is briefly displayed when the device boots after or while the logo is displayed. Common buttons are F12, the Windows key, and F9. Refer to your IPC manufacturer for more information.&#x20;
3. After the device initiates the installer, respond to the questions in the terminal user interface (TUI). `Welcome to Operating System Installer. Are you installing over Serial (for advanced users)? Yes/No :`
4. Enter **Yes** to continue with a text-only interface, and then press **Enter**.&#x20;
   A list of partitions are displayed. This list is specific to the device.
5. Enter the partition name. In this example, **sda**.
   If the device/gateway has embedded MMC (eMMC) components, the partition name may be listed as *mmcblk&#x20;*&#x69;nstead of *sda*. Make sure you select the correct hard drive location.&#x20;
   You must type the name of the device. If you press **Enter&#x20;**&#x77;ithout typing the name, the installation fails.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/c2lrRE-fDfLzEMMl90qHq_07-ne1fe-bncgl9ffjqosgarloopedgeinstallserialstep-2.png" size="80" width="350" height="150" caption="partition name prompt" position="center" showCaption="true"}
6. Confirm the installation and format partitions, enter **Yes**, and then press **Enter**.
   The installer displays the installation status, followed by a success message.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NNeahNuzbTIMZbVuYuayk_08-qjnmfkcmbct9dsxjkxtutloopedgeinstallserialstep-3.png" size="80" width="531" height="164" caption="Confirmation message" position="center" showCaption="true"}
7. Remove the USB flash drive.
8. Reboot the gateway device.                                                                                                          &#x20;

The terminal window displays the URL that must be used to access the device using the Web UI. If several URLs are displayed, use the first one.&#x20;

# Step 4: Log in to Litmus Edge

- See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;
- See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for instructions on how to navigate and log in for the first time.


[title] System Architecture
[path] Overview/

Review the following information to learn more about the system architecture and network architecture of Litmus Edge.&#x20;

# System Architecture 

The diagram below shows the system architecture of Litmus Edge and the different paths that data can travel through Litmus Edge.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/t5F6FhjgM77Tp4JK5Jg2Q_image.png "System Architecture")

**\[1]&#x20;**&#x59;ou have the option of accessing Litmus Edge through the Web UI, the Terminal User Interface (TUI), or REST API.&#x20;

See the following to learn more:

- [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ)
- [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP)
- [Litmus API Portal Overview](docId\:kNxgkk_CsgYpYpHe1DE7l)

**\[2]&#x20;**&#x54;o get data into Litmus Edge, you will need to configure a connection between PLCs and DeviceHub drivers. Review the list of available drivers and the parameters that need to be configured in the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr). Once the data flows into DeviceHub, it is sent to the message broker for further processing.&#x20;

**\[3]** Once the data reaches the message broker, there are different paths the data can flow.&#x20;

- You can store the data in a database. Learn more about database options for Litmus Edge in [DataHub](docId\:z0j1tmAAzK3kPvGFNmvHL).&#x20;
- There are different options for the data to flow northbound for further processing.&#x20;

\[4] You can send the data northbound to the following:&#x20;

- You can send the data through an application in Litmus Edge. Learn more about [Applications](docId\:j4jhjBWbwQY1BS9A3G6Zk) and [Applications Guides](docId:-DKHmS9kYfUcfLPohUyk2).&#x20;
- Create flows in the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89).&#x20;
- Process the data in [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5).&#x20;
- Integrate Litmus Edge with other applications for Cloud and DB Connectivity. Learn more about [Integration](docId\:Wpqo1fE02tmx3AsKewQU6) and [Integration Guides](docId\:ZJCZ7NP6pGLZGihEVl8Ed).&#x20;
- Configure an [OPC UA Server](docId\:Wu741skertOa8mwl1IpBY).&#x20;

# Network Architecture 

The diagram below shows the typical network architecture for Litmus Edge. Refer to the callouts in the diagram and descriptions below to learn more.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bdP8pWgkZbLddmMBe7hf5_network-architecture.png "Litmus Edge Typical Network Architecture")

## Options for Setting Up Litmus Edge

You have the following options for setting up Litmus Edge on your site.&#x20;

Learn more about [Installation and Deployments](docId\:kfV1aRRRlYrgPLszg75gl).&#x20;

### Option 1

Refer to callout **\[1]** in the diagram.&#x20;

- Litmus Edge in a DMZ is connected to PLCs through a Level 2 switch.&#x20;
- Only the "Head" PLC has a network connection in a designated VLAN.&#x20;
- The Litmus Edge in the DMZ must have access to the same VLAN as the "Head" PLC.&#x20;
- The Litmus Edge in the DMZ can read from registers of the "Head" PLC.&#x20;
- Other PLCs attached to the "Head" PLC must transfer their data to the "Head" PLC to be read.&#x20;

### Option 2

Refer to callout **\[2]** in the diagram.&#x20;

- Litmus Edge in a DMZ is connected to PLCs through a Level 2 switch.&#x20;
- All PLCs have a network connection in a designated VLAN.&#x20;
- The Litmus Edge in the DMZ must have access to the same VLAN as the PLCs.&#x20;
- The Litmus Edge in the DMZ will be able to connect to all PLCs to read data.

### Option 3

Refer to callout **\[3]** in the diagram.&#x20;

- Litmus Edge in a DMZ is connected to other data sources through a Level 2 switch.
- All data sources have a network connection in a designated VLAN.&#x20;
- The Litmus Edge in the DMZ must have access to the same VLAN as the data sources.&#x20;
- The Litmus Edge in the DMZ will be able to connect to all data sources to read data.&#x20;

### Option 4

Refer to callout **\[4]** in the diagram.&#x20;

- Litmus Edge in a DMZ is connected to a PLC through a panel switch.&#x20;
- The panel switch is connected to a Level 2 switch.
- The PLC is connected to the panel switch.&#x20;
- The Litmus Edge in the DMZ must have access to the same VLAN as the PLC.
- The Litmus Edge in the DMZ will read data from any PLC connected to the panel switch.&#x20;

### Option 5

Refer to callout **\[5]** in the diagram.&#x20;

- An RS232 to Ethernet converter connects to a PLC through an RS232/484 physical connection.&#x20;
- Litmus Edge can read from the registers on the connected PLC.&#x20;
- The Litmus Edge in the DMZ will read the data from the PLC through the Ethernet converter.&#x20;

### Option 6

Refer to callout **\[6]** in the diagram.&#x20;

- Litmus Edge in a DMZ connects to a Remote I/O Module/Sensor Gateway.&#x20;
- The Remote I/O Module/Sensor Gateway is connected to the PLC (or in some cases to the Level 2 switch).&#x20;
- Sensors are connected to the gateway through wireless or proprietary technology.&#x20;
- The Litmus Edge reads sensor data through the PLC or through the gateway if it's connected to the Level 2 switch.&#x20;

## Cloud and Litmus Edge Manager Setup

Refer to the following options for setting up cloud storage and Litmus Edge Manager.&#x20;

### Litmus Edge Manager

Refer to callout **\[7]** in the diagram.&#x20;

Data collected from Litmus Edge is sent to [Litmus Edge Manager](https://docs.litmus.io/edgemanager) for consolidation.&#x20;

### Cloud Storage&#x20;

Refer to callout **\[8]** in the diagram.&#x20;

Litmus Edge Manager sends data to cloud systems or other enterprise systems. Learn more about [Applications](docId\:j4jhjBWbwQY1BS9A3G6Zk) and [Applications Guides](docId:-DKHmS9kYfUcfLPohUyk2).&#x20;

### Integrations

Refer to callout **\[9]** in the diagram.&#x20;

Litmus Edge can also send data directly to cloud systems/other enterprise systems through integrations. Learn more about [Integration](docId\:Wpqo1fE02tmx3AsKewQU6) and [Integration Guides](docId\:ZJCZ7NP6pGLZGihEVl8Ed).&#x20;


[title] SLC Gateway (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

Review the following information for setting up and configuring the SLC Gateway (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                                                        |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                |
| **Validated devices/series** | [SLC 500](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/small-controllers/slc-500-controllers.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Allen Bradley                            |
| **Driver**          | SLC Gateway (Gen1)                       |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 44818                                    |
| **Channel**         | A/B                                      |
| **Node ID**         | 1                                        |
| **Slot**            | 1                                        |
| **Slots**           | \<#>                                     |
| **Type**            | Input/Output                             |
| **Word**            | \<#>                                     |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Access  Types&#x20;** | **Address Format** | **Min Address** | **Max Address** | **Description**                    |
| -------- | --------------- | ----------------------- | ------------------ | --------------- | --------------- | ---------------------------------- |
| I        | bit             | R/W                     | SSOO               | 0               | 9977            | Input bit                          |
| O        | bit             | R/W                     | SSOO               | 0               | 9977            | Output bit                         |
| S        | int             | R/W                     | DDD                | 0               | 255             | Status bit                         |
| B3       | bit             | R/W                     | DDDdd              | 0               | 25515           | Bit Data file (B3)                 |
| Bfn      | bit             | R/W                     | FFFDDDdd           | 0               | 25525515        |                                    |
| T4.ACC   | int             | R/W                     | DDD                | 0               | 255             | Timer Accumulator (T4)             |
| T4.PRE   | int             | R/W                     | DDD                | 0               | 255             | Timer Preset (T4)                  |
| Tfn.ACC  | int             | R/W                     | FFFDDD             | 0               | 255255          |                                    |
| Tfn.PRE  | int             | R/W                     | FFFDDD             | 0               | 255255          |                                    |
| C5.ACC   | int             | R/W                     | DDD                | 0               | 255             | Counter Accumulator (C5)           |
| C5.PRE   | int             | R/W                     | DDD                | 0               | 255             | Counter Preset (C5)                |
| Cfn.ACC  | int             | R/W                     | FFFDDD             | 0               | 255255          |                                    |
| Cfn.PRE  | int             | R/W                     | FFFDDD             | 0               | 255255          |                                    |
| R6.POS   | int             | R/W                     | DDD                | 0               | 255             | Control file pointer position (R6) |
| R6.LEN   | int             | R/W                     | DDD                | 0               | 255             | Control file length (R6)           |
| Rfn.POS  | int             | R/W                     | FFFDDD             | 0               | 255255          |                                    |
| Rfn.LEN  | int             | R/W                     | FFFDDD             | 0               | 255             |                                    |
| N7       | int             | R/W                     | DDD                | 0               | 255             | Integer Data File (N7)             |
| Nfn      | int             | R/W                     | FFFDDD             | 0               | 255999          |                                    |
| F8       | float           | R/W                     | DDD                | 0               | 255             | Floating Point data file (F8)      |
| Ffn      | float           | R/W                     | FFFDDD             | 0               | 255999          |                                    |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Torque Tool Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Atlas Copco/

| **Name**                                 | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                                                                                                            |
| ---------------------------------------- | --------------- | ------------------ | --------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------- |
| LTR\_CELL\_ID                            | word            | D                  | 0               | 0               | Cell ID                                                                                                                    |
| LTR\_CHAN\_ID                            | word            | D                  | 0               | 0               | Channel ID                                                                                                                 |
| LTR\_TC\_NAME                            | string          | D                  | 0               | 0               | Torque controller Name                                                                                                     |
| LTR\_VIN                                 | string          | D                  | 0               | 0               | VIN Number                                                                                                                 |
| LTR\_JOB                                 | word            | D                  | 0               | 0               | Job ID                                                                                                                     |
| LTR\_PSET                                | word            | D                  | 0               | 0               | Parameter set ID                                                                                                           |
| LTR\_STRATEGY                            | word, word      | D                  | 0               | 0               | The strategies currently run by the controller                                                                             |
| LTR\_BATCH\_SIZE                         | word            | D                  | 0               | 0               | Batch size                                                                                                                 |
| LTR\_BATCH\_COUNTER                      | word            | D                  | 0               | 0               | Batch counter                                                                                                              |
| LTR\_TIGHT\_STATUS                       | word            | D                  | 0               | 0               | Tightening status                                                                                                          |
| LTR\_TORQUE\_STATUS                      | word            | D                  | 0               | 0               | Torque status                                                                                                              |
| LTR\_ANGLE\_STATUS                       | word            | D                  | 0               | 0               | Angle status                                                                                                               |
| LTR\_TORQUE\_MIN                         | float           | D                  | 0               | 0               | Torque Min limit                                                                                                           |
| LTR\_TORQUE\_MAX                         | float           | D                  | 0               | 0               | Torque Max limit                                                                                                           |
| LTR\_TORQUE\_TARGET                      | float           | D                  | 0               | 0               | Torque final target                                                                                                        |
| LTR\_TORQUE\_VALUE                       | float           | D                  | 0               | 0               | Torque                                                                                                                     |
| LTR\_ANGLE\_MIN                          | word            | D                  | 0               | 0               | Angle Min                                                                                                                  |
| LTR\_ANGLE\_MAX                          | word            | D                  | 0               | 0               | Angle Max                                                                                                                  |
| LTR\_ANGLE\_TARGET                       | word            | D                  | 0               | 0               | Angle final target                                                                                                         |
| LTR\_ANGLE\_VALUE                        | word            | D                  | 0               | 0               | Angle                                                                                                                      |
| LTR\_TIMESTAMP                           | string          | D                  | 0               | 0               | Time stamp                                                                                                                 |
| LTR\_CHANGETIME                          | string          | D                  | 0               | 0               | Date/time of last change in parameter set settings                                                                         |
| LTR\_BATCH\_STATUS                       | word            | D                  | 0               | 0               | Batch status                                                                                                               |
| LTR\_ID                                  | word            | D                  | 0               | 0               | Tightening ID                                                                                                              |
| LTR\_STRATEGY\_OPTIONS                   | word            | D                  | 0               | 0               | Strategy options. Five bytes long bit field                                                                                |
| LTR\_RUNDOWN\_ANGLE\_STATUS              | word            | D                  | 0               | 0               | Rundown angle status&#xD;                                                                                                  |
| LTR\_CURRENT\_MONITORING\_STATUS         | word            | D                  | 0               | 0               | Current Monitoring Status&#xD;                                                                                             |
| LTR\_SELF\_TAP\_STATUS                   | word            | D                  | 0               | 0               | Self-tap status&#xD;                                                                                                       |
| LTR\_PREVAIL\_TORQUE\_MONITORING\_STATUS | word            | D                  | 0               | 0               | Prevail Torque monitoring status&#xD;                                                                                      |
| LTR\_PREVAIL\_TORQUE\_COMPENSATE\_STATUS | word            | D                  | 0               | 0               | Prevail Torque compensate status&#xD;                                                                                      |
| LTR\_TIGHTENING\_ERROR\_STATUS           | word            | D                  | 0               | 0               | Tightening error status                                                                                                    |
| LTR\_RUNDOWN\_ANGLE\_MIN                 | word            | D                  | 0               | 0               | Rundown angle Min                                                                                                          |
| LTR\_RUNDOWN\_ANGLE\_MAX                 | word            | D                  | 0               | 0               | Rundown angle Max                                                                                                          |
| LTR\_RUNDOWN\_ANGLE\_VALUE               | word            | D                  | 0               | 0               | Rundown angle                                                                                                              |
| LTR\_CURRENT\_MONITORING\_MIN            | word            | D                  | 0               | 0               | Current Monitoring Min                                                                                                     |
| LTR\_CURRENT\_MONITORING\_MAX            | word            | D                  | 0               | 0               | Current Monitoring Max                                                                                                     |
| LTR\_CURRENT\_MONITORING\_VALUE          | word            | D                  | 0               | 0               | Current Monitoring angle                                                                                                   |
| LTR\_SELF\_TAP\_MIN                      | float           | D                  | 0               | 0               | Self-tap min                                                                                                               |
| LTR\_SELF\_TAP\_MAX                      | float           | D                  | 0               | 0               | Self-tap max                                                                                                               |
| LTR\_SELF\_TAP\_TORQUE                   | float           | D                  | 0               | 0               | Self-tap torque                                                                                                            |
| LTR\_PREVAIL\_MONITORING\_MIN            | float           | D                  | 0               | 0               | Prevail torque monitoring min                                                                                              |
| LTR\_PREVAIL\_MONITORING\_MAX            | float           | D                  | 0               | 0               | Prevail torque monitoring max                                                                                              |
| LTR\_PREVAIL\_TORQUE                     | float           | D                  | 0               | 0               | Prevail torque                                                                                                             |
| LTR\_JOB\_SEQUENCE                       | word            | D                  | 0               | 0               | Job sequence number                                                                                                        |
| LTR\_SYNC\_ID                            | word            | D                  | 0               | 0               | Sync tightening ID                                                                                                         |
| LTR\_TOOL\_SERIAL                        | string          | D                  | 0               | 0               | Tool serial number                                                                                                         |
| LTR\_PARAMETER\_SET\_NAME                | string          | D                  | 0               | 0               | Parameter set Name                                                                                                         |
| LTR\_TORQUE\_UNIT                        | word            | D                  | 0               | 0               | Torque values Unit                                                                                                         |
| LTR\_RESULT\_TYPE                        | word            | D                  | 0               | 0               | Result type                                                                                                                |
| LTR\_IDENTIFIER\_RESULT\_2               | string          | D                  | 0               | 0               | Identifier result part 2                                                                                                   |
| LTR\_IDENTIFIER\_RESULT\_3               | string          | D                  | 0               | 0               | Identifier result part 3                                                                                                   |
| LTR\_IDENTIFIER\_RESULT\_4               | string          | D                  | 0               | 0               | Identifier result part 4                                                                                                   |
| LTR\_CUSTOMER\_TIGHTENING\_ERROR         | string          | D                  | 0               | 0               | Customer tightening error code                                                                                             |
| LTR\_PREVAIL\_TORQUE\_COMPENSATE         | float           | D                  | 0               | 0               | Prevail Torque compensate value                                                                                            |
| LTR\_TIGHTENING\_ERROR\_STATUS\_2        | word            | D                  | 0               | 0               | Tightening error status 2                                                                                                  |
| LTR\_COMPENSATED\_ANGLE                  | float           | D                  | 0               | 0               | Compensated angle                                                                                                          |
| LTR\_FINAL\_ANGLE\_DECIMAL               | float           | D                  | 0               | 0               | Final Angle Decimal                                                                                                        |
| LTR\_START\_FINAL\_ANGLE                 | float           | D                  | 0               | 0               | Start final angle                                                                                                          |
| LTR\_POST\_VIEW\_TORQUE\_ACTIVATED       | word            | D                  | 0               | 0               | Post view torque activated                                                                                                 |
| LTR\_POST\_VIEW\_TORQUE\_HIGH            | float           | D                  | 0               | 0               | Post view torque high                                                                                                      |
| LTR\_POST\_VIEW\_TORQUE\_LOW             | float           | D                  | 0               | 0               | Post view torque low                                                                                                       |
| LTR\_CURRENT\_MONITORING\_AMP            | float           | D                  | 0               | 0               | Current Monitoring Amp                                                                                                     |
| LTR\_CURRENT\_MONITORING\_AMP\_MIN       | float           | D                  | 0               | 0               | Current Monitoring Amp Min                                                                                                 |
| LTR\_CURRENT\_MONITORING\_AMP\_MAX       | float           | D                  | 0               | 0               | Current Monitoring Amp Max                                                                                                 |
| LTR\_ANGLE\_NUMERATOR\_SCALE\_FACTOR     | word            | D                  | 0               | 0               | Angle numerator scale factor                                                                                               |
| LTR\_ANGLE\_DENOMINATOR\_SCALE\_FACTOR   | word            | D                  | 0               | 0               | Angle denominator scale factor                                                                                             |
| LTR\_OVERALL\_ANGLE\_STATUS              | word            | D                  | 0               | 0               | Overall Angle Status                                                                                                       |
| LTR\_OVERALL\_ANGLE\_MIN                 | word            | D                  | 0               | 0               | Overall Angle Min                                                                                                          |
| LTR\_OVERALL\_ANGLE\_MAX                 | word            | D                  | 0               | 0               | Overall Angle Max                                                                                                          |
| LTR\_OVERALL\_ANGLE\_VALUE               | word            | D                  | 0               | 0               | Overall Angle                                                                                                              |
| LTR\_PEAK\_TORQUE                        | float           | D                  | 0               | 0               | Peak Torque                                                                                                                |
| LTR\_RESIDUAL\_BREAKAWAY\_TORQUE         | float           | D                  | 0               | 0               | Residual Breakaway Torque                                                                                                  |
| LTR\_START\_RUNDOWN\_ANGLE               | float           | D                  | 0               | 0               | Start Rundown angle                                                                                                        |
| LTR\_RUNDOWN\_ANGLE\_COMPLETE            | word            | D                  | 0               | 0               | Rundown angle complete                                                                                                     |
| TOOL\_ENABLE                             | word            | D                  | 0               | 0               | Value is Tool Number.                                                                                                      |
| TOOL\_DISABLE                            | word            | D                  | 0               | 0               | Upper 4 digits of Value is Tool Number, Lower 2 digits of Value is Disable Type.                                           |
| BATCH\_SIZE\_WRITE                       | word            | D                  | 0               | 0               | MID 0019 Set Parameter set batch size, Upper 3 digits of Value is Parameter set ID, Lower 4 digits of Value is Batch size. |
| VIN\_WRITE                               | string          | D                  | 0               | 0               | VIN number write. Max characters is 25                                                                                     |
| VIN\_NUMBER                              | string<br />    | D                  | 0               | 0               | VIN number identifiers. Max characters is 25                                                                               |
| VIN\_IDENTIFIER\_2                       | string          | D                  | 0               | 0               | VIN number identifiers. Max characters is 25                                                                               |
| VIN\_IDENTIFIER\_3                       | string          | D                  | 0               | 0               | VIN number identifiers. Max characters is 25                                                                               |
| VIN\_IDENTIFIER\_4                       | string          | D                  | 0               | 0               | VIN number identifiers. Max characters is 25                                                                               |
| JOB\_ID                                  | word            | D                  | 0               | 0               | Job ID                                                                                                                     |
| JOB\_STATUS                              | word            | D                  | 0               | 0               | The Job batch status                                                                                                       |
| JOB\_BATCH\_MODE                         | string          | D                  | 0               | 0               | Job batch mode                                                                                                             |
| JOB\_BATCH\_SIZE                         | string          | D                  | 0               | 0               | Job batch size                                                                                                             |
| JOB\_BATCH\_COUNTER                      | word            | D                  | 0               | 0               | Job batch counter                                                                                                          |
| JOB\_TIMESTAMP                           | word            | D                  | 0               | 0               | Job Time stamp                                                                                                             |
| JOB\_CURRENT\_STEP                       | word            | D                  | 0               | 0               | Job current step                                                                                                           |
| JOB\_TOTAL\_NUMBER\_OF\_STEPS            | word            | D                  | 0               | 0               | Job total number of steps                                                                                                  |
| JOB\_TOTAL\_NUMBER\_OF\_STEPS            | word            | D                  | 0               | 0               | Job step type                                                                                                              |
| JOB\_TIGHTENING\_STATUS                  | word            | D                  | 0               | 0               | Job tightenting status                                                                                                     |
| JOB\_SEQUENCE\_NUMBER                    | word            | D                  | 0               | 0               | Job sequence number                                                                                                        |
| JOB\_VIN\_NUMBER                         | string          | D                  | 0               | 0               | VIN number                                                                                                                 |
| JOB\_VIN\_IDENTIFIER\_2                  | string          | D                  | 0               | 0               | Identifier result part 2                                                                                                   |
| JOB\_VIN\_IDENTIFIER\_3                  | string          | D                  | 0               | 0               | Identifier result part 3                                                                                                   |
| JOB\_VIN\_IDENTIFIER\_4                  | string          | D                  | 0               | 0               | Identifier result part 4                                                                                                   |
| MS\_NUMBER                               | word            | D                  | 0               | 0               | Number of running spindles                                                                                                 |
| MS\_VIN                                  | string          | D                  | 0               | 0               | Vehicle ID number                                                                                                          |
| MS\_JOBNUM                               | word            | D                  | 0               | 0               | Job number (Link Group)                                                                                                    |
| MS\_PSET                                 | word            | D                  | 0               | 0               | Parameter set (App)                                                                                                        |
| MS\_BSIZE                                | word            | D                  | 0               | 0               | Batch size                                                                                                                 |
| MS\_BCOUNT                               | word            | D                  | 0               | 0               | Batch counter                                                                                                              |
| MS\_BSTATUS                              | word            | D                  | 0               | 0               | Batch status                                                                                                               |
| MS\_TMIN                                 | float           | D                  | 0               | 0               | Torque minimum limit                                                                                                       |
| MS\_TMAX                                 | float           | D                  | 0               | 0               | Torque maximum limit                                                                                                       |
| MS\_TTARG                                | float           | D                  | 0               | 0               | Torque final target                                                                                                        |
| MS\_AMIN                                 | dword           | D                  | 0               | 0               | Angle minimum limit                                                                                                        |
| MS\_AMAX                                 | dword           | D                  | 0               | 0               | Angle maximum limit                                                                                                        |
| MS\_ATARG                                | dword           | D                  | 0               | 0               | Angle final target                                                                                                         |
| MS\_CHANGETIME                           | string          | D                  | 0               | 0               | Last change in setting                                                                                                     |
| MS\_TIME                                 | string          | D                  | 0               | 0               | Time stamp                                                                                                                 |
| MS\_SYNCID                               | dword           | D                  | 0               | 0               | Sync tightening ID                                                                                                         |
| MS\_SYNCSTAT                             | word            | D                  | 0               | 0               | Overall tightening status                                                                                                  |
| SPD\_NUM                                 | array           | D                  | 0               | 0               | Spindle number                                                                                                             |
| SPD\_CHAN                                | array           | D                  | 0               | 0               | Channel ID                                                                                                                 |
| SPD\_STATUS                              | array           | D                  | 0               | 0               | Overall spindle status                                                                                                     |
| SPD\_TSTATUS                             | array           | D                  | 0               | 0               | Individual torque status                                                                                                   |
| SPD\_TORQUE                              | array           | D                  | 0               | 0               | Individual torque                                                                                                          |
| SPD\_ASTATUS                             | array           | D                  | 0               | 0               | Individual angle status                                                                                                    |
| SPD\_ANGLE                               | array           | D                  | 0               | 0               | Individual angle                                                                                                           |
| OTR\_VIN                                 | string          | D                  | 0               | 4294967295      | Vehicle ID number                                                                                                          |
| OTR\_PSET                                | word            | D                  | 0               | 4294967295      | PSet number                                                                                                                |
| OTR\_BCOUNT                              | word            | D                  | 0               | 4294967295      | Batch counter                                                                                                              |
| OTR\_TIGHTSTAT                           | word            | D                  | 0               | 4294967295      | Tightening status                                                                                                          |
| OTR\_TORQSTAT                            | word            | D                  | 0               | 4294967295      | Torque Status                                                                                                              |
| OTR\_ANGSTAT                             | word            | D                  | 0               | 4294967295      | Angle Status                                                                                                               |
| OTR\_TORQUE                              | float           | D                  | 0               | 4294967295      | Torque value                                                                                                               |
| OTR\_ANGLE&#xD;                          | dword           | D                  | 0               | 4294967295      | Turning angle value in degrees                                                                                             |
| OTR\_TIME                                | string          | D                  | 0               | 4294967295      | Timestamp                                                                                                                  |
| OTR\_BATSTAT                             | word            | D                  | 0               | 4294967295      | Batch status                                                                                                               |
| OTR\_JOBNUM                              | word            | D                  | 0               | 4294967295      | Job number                                                                                                                 |
| OTR\_STRATEGY                            | word            | D                  | 0               | 4294967295      | Strategy                                                                                                                   |
| OTR\_STROPT                              | word            | D                  | 0               | 4294967295      | Strategy options                                                                                                           |
| OTR\_BSIZE                               | word            | D                  | 0               | 4294967295      | Batch size                                                                                                                 |
| OTR\_RASTAT                              | word            | D                  | 0               | 4294967295      | Rundown angle status                                                                                                       |
| OTR\_CMSTAT                              | word            | D                  | 0               | 4294967295      | Current monitoring status                                                                                                  |
| OTR\_STSTAT                              | word            | D                  | 0               | 4294967295      | Selftap status                                                                                                             |
| OTR\_PTMSTAT                             | word            | D                  | 0               | 4294967295      | Prevail torque monitoring                                                                                                  |
| OTR\_PTCSTAT                             | word            | D                  | 0               | 4294967295      | Prevail torque compensate                                                                                                  |
| OTR\_TERRSTAT                            | dword           | D                  | 0               | 4294967295      | Tightening error status                                                                                                    |
| OTR\_RANGLE&#xD;                         | dword           | D                  | 0               | 4294967295      | Rundown angle value                                                                                                        |
| OTR\_CMVALUE                             | word            | D                  | 0               | 4294967295      | Current monitoring value is percent                                                                                        |
| OTR\_STORQUE                             | float           | D                  | 0               | 4294967295      | Selftap torque                                                                                                             |
| OTR\_PTORQUE                             | float           | D                  | 0               | 4294967295      | Prevail torque value                                                                                                       |
| OTR\_JOBSEQ                              | word            | D                  | 0               | 4294967295      | Job sequence number                                                                                                        |
| OTR\_STID                                | word            | D                  | 0               | 4294967295      | Synch Tightening ID                                                                                                        |
| OTR\_SERIAL                              | string          | D                  | 0               | 4294967295      | Tool serial number                                                                                                         |
| OTR\_TVUNIT                              | word            | D                  | 0               | 4294967295      | Torque value units                                                                                                         |
| OTR\_RTYPE                               | word            | D                  | 0               | 4294967295      | Result type                                                                                                                |
| OTR\_ID2                                 | string          | D                  | 0               | 4294967295      | Identifier result part 2                                                                                                   |
| OTR\_ID3                                 | string          | D                  | 0               | 4294967295      | Identifier result part 3                                                                                                   |
| OTR\_ID4                                 | string          | D                  | 0               | 4294967295      | Identifier result part 4                                                                                                   |
| OTR\_CUSTOM\_ERR                         | string          | D                  | 0               | 4294967295      | Customer tightening error code                                                                                             |
| OTR\_PVT                                 | float           | D                  | 0               | 4294967295      | PVT compensation value                                                                                                     |
| OTR\_TERR\_STATUS2                       | dword           | D                  | 0               | 4294967295      | Tightening error status                                                                                                    |
| OTR\_STATION\_ID                         | word            | D                  | 0               | 4294967295      | Station ID                                                                                                                 |
| OTR\_STATION\_NAM                        | string          | D                  | 0               | 4294967295      | Station name                                                                                                               |
| OTR\_SFINANG                             | float           | D                  | 0               | 4294967295      | Torque to reach the snug level                                                                                             |
| OTR\_PVT\_ACT                            | word            | D                  | 0               | 4294967295      | PVT On/Off                                                                                                                 |
| OTR\_PVT\_HIGH                           | float           | D                  | 0               | 4294967295      | PVT high value                                                                                                             |
| OTR\_PVT\_LOW                            | float           | D                  | 0               | 4294967295      | PVT low value                                                                                                              |
| OTR\_CMAMP                               | float           | D                  | 0               | 4294967295      | Current monitoring value                                                                                                   |
| OTR\_CMAMP\_MIN                          | float           | D                  | 0               | 4294967295      | Current monitoring min value                                                                                               |
| OTR\_CMAMP\_MAX                          | float           | D                  | 0               | 4294967295      | Current monitoring max value                                                                                               |
| OTR\_ANGNUMSF                            | word            | D                  | 0               | 4294967295      | Scale factor defined by numerator/denominator                                                                              |
| OTR\_ANGDENSF                            | word            | D                  | 0               | 4294967295      | Scale factor defined by numerator/denominator&#xD;                                                                         |
| OTR\_OANGSTAT                            | word            | D                  | 0               | 4294967295      | Overall angle status                                                                                                       |
| OTR\_OANGMIN                             | word            | D                  | 0               | 4294967295      | Overall angle min                                                                                                          |
| OTR\_OANGMAX                             | word            | D                  | 0               | 4294967295      | Overall angle max                                                                                                          |
| OTR\_OANG                                | word            | D                  | 0               | 4294967295      | Overall angle                                                                                                              |
| OTR\_PKTORQUE                            | float           | D                  | 0               | 4294967295      | Peak torque                                                                                                                |
| OTR\_RBTORQUE                            | float           | D                  | 0               | 4294967295      | Residual breakaway torque                                                                                                  |
| OTR\_SRANGLE                             | float           | D                  | 0               | 4294967295      | Start rundown angle                                                                                                        |
| OTR\_RANGLEC                             | float           | D                  | 0               | 4294967295      | Rundown angle complete                                                                                                     |
| PSET\_ID                                 | word            | D                  | 0               | 0               | Parameter set ID                                                                                                           |
| PSET\_NAME                               | string          | D                  | 0               | 0               | Parameter set time                                                                                                         |
| PSET\_LASTCHANGE                         | string          | D                  | 0               | 0               | &#xD;Date of last change in parameter set setting                                                                          |
| PSET\_DIRECTION                          | word            | D                  | 0               | 0               | Rotation direction                                                                                                         |
| PSET\_BATCHSIZE                          | word            | D                  | 0               | 0               | Batch size                                                                                                                 |
| PSET\_TORQUEMIN                          | float           | D                  | 0               | 0               | Torque min                                                                                                                 |
| PSET\_TORQUEMAX                          | float           | D                  | 0               | 0               | Torque max                                                                                                                 |
| PSET\_TORQUETARGET                       | float           | D                  | 0               | 0               | Torque final target                                                                                                        |
| PSET\_ANGLEMIN&#xD;                      | dword           | D                  | 0               | 0               | Angle min                                                                                                                  |
| PSET\_ANGLEMAX                           | dword           | D                  | 0               | 0               | Angle max                                                                                                                  |
| PSET\_ANGLETARGET                        | dword           | D                  | 0               | 0               | Final Angle target                                                                                                         |
| PSET\_FIRSTTARGET                        | float           | D                  | 0               | 0               | First Target                                                                                                               |
| PSET\_STFINALANGLE                       | float           | D                  | 0               | 0               | Start final angle                                                                                                          |
| ID\_DOWNLOAD                             | string          | D                  | 0               | 0               | Identifier data                                                                                                            |
| SELECT\_PSET                             | word            | D                  | 0               | 0               | Parameter Set ID                                                                                                           |
| PSETUPLOAD\_ID                           | array           | D                  | 0               | 0               | Parameter set ID upload                                                                                                    |


[title] ESXi ISO (VMWare
vSphere 7.0.3.01400)
[path] QuickStart Guide/Installation and Deployments/ISO Installation on Hypervisors/

You can install Litmus Edge on a virtual machine (VM) using the ESXi Hypervisor (VMWare vSphere 7.0.3.01400) with an ISO file.&#x20;

A typical Litmus Edge virtual file for ESXi deployment adheres to a naming convention as follows: **\<product>-std\_3.1.5.0-amd64.iso**.&#x20;

# Video

:::Iframe{code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/adrAUkweHDc?si=psPnKddk-stc24Hf&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

# Before You Begin



- Prepare your environment for running virtualization by using VMWare ESXi - Hypervisor.&#x20;
  - Review [Verified VM Versions](docId:36xPLuILTp2QajsR8ltHw) and confirm the correct version to download. See [VMWare](https://www.vmware.com/worldwide.html).&#x20;
  - The virtual machine will run on the same physical network card as the host environment. To ensure that the device can communicate with data sources such as PLC, DCS or CNC and can be accessed through the Web UI, make sure that communication can be established.
- Adjust the system clock for the host environment prior to installing Litmus Edge. UTC is recommended. The 15-day trial period may be rejected and invalidated by the license server if the system clock is not adjusted. If this happens, contact your Litmus representative.&#x20;
- Obtain a valid file in the ISO format (example filename: `<litmusedge-std_3.1.5.0-amd64>.iso`). You can get the ISO file from the [Litmus Central portal](https://central.litmus.io/).

To install Litmus Edge on VMWare vSphere 7.0.3.01400, you will need to do the following.&#x20;

- Step 1: Create a Virtual Machine
- Step 2: Run Operating System Installer
- Step 3: Disable Startup of ISO File
- Step 4: Start Litmus Edge
- Step 5: Log in to Litmus Edge&#x20;

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Create a Virtual Machine

You will first need to create the virtual machine that will run Litmus Edge.&#x20;

**To install the ESXi-Hypervisor virtual machine:**

1. Start the VMware (VMWare vSphere 7.0.3.01400) application.&#x20;
2. For the folder you want to add the virtual machine to, right-click the folder name and select **New Virtual Machine...**
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Kl8ff89YPWd6xBF-5SwHM_esxi-iso-01.png)

The *New Virtual Machine* window displays.&#x20;

## Step 1a: Select Creation Type

Select **Create a new virtual machine** and click **Next**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/H5Rmk5njDZ3UK3jLn9Zbm_image.png)

## Step 1b: Select Name and Folder

Enter a name for the virtual machine and review/update the location of the virtual machine.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zIqOnvkkQ9ySQClWK-tA2_image.png)

## Step 1c: Select Compute Resource

Select the destination compute resource for the virtual machine deployment.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/b1XWVySx6mddfSiv5UKUn_image.png)

## Step 1d: Select Storage

Select where the configuration and disk files for the virtual machine will be stored. Ensure that there is at least 50 GB of free capacity.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rPY0Kf3RPYpa2dS14N5tH_image.png)

## Step 1e: Select Compatibility

Select compatibility for this virtual machine depending on the hosts in your environment. Your selection must be compatible with your ESXi version Guest OS family (Linux).

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DCFENSCijjewokggy0yDs_image.png)

## Step 1f: Select Guest OS

Select the Guest OS that will be installed on the virtual machine.&#x20;

- **Guest OS family**: The operating system is based on Linux.
- **Guest OS version**: The kernel used for the operating system is a 64-bit Yocto Kernel.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rO9ter6ZXMVqw9o4YvL6y_image.png)

## Step 1g: Customize Hardware

Configure the parameters for the virtual machine.&#x20;

### Virtual Hardware

From the **Virtual Hardware** tab, configure the following parameters.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/j8KlRqroj9mrigqwDheih_image.png)

- **CPU**: The recommended number of CPUs is **4**. You can allocate more depending on the setup and requirements of your environment.&#x20;
- **Memory**: The recommended amount of memory is **8** GB, and the minimum is 2048 MB. You can allocate more depending on the setup and requirements of your environment.&#x20;
- **New Hard disk**: The recommended hard disk capacity is **25&#x20;**&#x47;B, and the minimum is 16 GB. Configuring 16 GB provides the VM with about 2 GB data storage. You can allocate more depending on the setup and requirements of your environment.&#x20;
- **New Network**: Configure the appropriate network for the VM to connect to. Select the checkbox to connect to the network when the VM powers up.&#x20;

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

- By default, VMs are defined with two network cards. They are configured for the first network card as a Bridged Network and the second network card as NAT.
- Based on the ESXi host environment, if a NAT network exists, a second network adapter must be added and set to NAT.
:::

- **New CD/DVD Drive**: Select Datastore ISO File and choose the ISO file. Select the checkbox to load the ISO file the first time the VM powers up. After Litmus Edge is installed and running, you will need to unselect the checkbox.&#x20;

You can expand each section and make additional configurations depending on the requirements of your environment.&#x20;

### VM Options

Click the **VM Options** tab, open th&#x65;*&#x20;Boot Options* section, and unselect the **Secure Boot Enabled** checkbox.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sLXyasO0k0VTKmpDruM5Q_image.png)

You can expand each section and make additional configurations depending on the requirements of your environment.&#x20;

## Step 1h: Review Configuration

Review the configurations for the VM. When done, click **FINISH**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wQkBYNRsnHW2DShwxaUxM_image.png)

# Step 2: Run Operating System Installer

You will run the operating system installer that will install Litmus Edge.&#x20;

:::hint{type="info"}
**Notes**:&#x20;

- During the installation, the progress bar may decrease at times due to partitioning.
- The time to complete the installation is based on the size of the hard disk drive. Large disk drives will cause the installation to take longer to partition the disk and therefore longer to complete setting up the virtual machine.&#x20;
:::

**To run the Operating System installer:**

1. Select the VM from the navigation menu and click the **Play&#x20;**&#x69;con to power up the VM.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6kx4-DIcxLgoABXDOUoQe_esxi-iso-12.png)
2. From the *Welcome to Operating System Installer* screen, enter `yes` and press **ENTER**.
   *Select a drive to Install (sda)* appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vSWT9mqnGSPsxZjvGWfoK_terminal-01.png)
3. Enter `sda` and press **ENTER**.
   *To Confirm Installation and format partitions* appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zIhZfveoq4RIQ3XEyhyg1_terminal-02.png)
4. Enter `yes` and press **ENTER**.
   The installation begins. During the installation, another error appears regarding an invalid partition table. You can ignore it.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yggHRpKPeLhp1wPBkMcPe_terminal-03.png)
5. When the installation completes, close the terminal shell and make sure the VM is powered off.&#x20;

# Step 3: Disable Startup of ISO File

Once Litmus Edge is successfully installed, you will need to disable the setting that loads the ISO file when the VM powers on.&#x20;

Right-click the VM from the navigation menu and select **Edit Settings...**

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ec6hw9xSvGxt1MPUtJzAs_image.png)

For *CD/DVD drive 1*, unselect the **Connect At Power On** checkbox.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lBx3-edY7WxUsqG1D2T9Z_image.png)

# Step 4: Start Litmus Edge

Click the **Play&#x20;**&#x69;con again to power up the VM.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iHwqaCIr8Rv6MChCd9wlM_image.png)

Click **Launch Web Console** and wait for the screen to load up and display connection information.&#x20;

Refer to the numerical IP address. Open a new browser window and enter this address to access Litmus Edge.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4VL2FmRK6gAADGPgDudzi_image.png)

# Step 5: Log in to Litmus Edge

- See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;
- See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for instructions on how to navigate and log in for the first time.


[title] Gen 2 Drivers
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/


[title] AB Micro850 FreeTag (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

Review the following information for setting up and configuring the AB Micro850 FreeTag (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                 |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                                                                                                                                                                                                                                                           |
| **Validated devices/series** | [Micro800](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/micro-controllers/micro800-family/micro800-plug-in-modules.html)<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Allen Bradley                     |
| **Driver**             | AB Micro850 FreeTag (Gen1)        |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 19200                             |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station ID**         | 1                                 |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following tag parameters and available value types.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the case-sensitive register name exactly as it is defined in the PLC.

A **Connected** status for the device won't display until a tag with a correct register name is created.

## Available Value Types

- `bool`
- `sint`
- `int`
- `dint`
- `real`
- `lint`
- `byte`
- `word`
- `dword`
- `lword`
- `uint`
- `udint`
- `ulint`

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] AB CompactLogix Ethernet FreeTag
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 2 Drivers/

Review the following information for setting up and configuring the AB CompactLogix Ethernet FreeTag driver.&#x20;

:::hint{type="info"}
**Note**: We recommend this driver for CompactLogix and ControlLogix PLCs, as it provides the best stability over other compatible drivers. If you prefer speed over stability, you can use the [AB CompactLogix Ethernet Advanced](docId\:ZoRCIH6XT9QOP_PV260bZ).&#x20;
:::

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                                                                                                                        |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                |
| **Validated devices/series** | [CompactLogix](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/small-controllers/compactlogix-family.html)&#xD;&#xA;[ControlLogix](http://ab.rockwellautomation.com/) |
| **Replaces Gen 1 driver(s)** | [AB CompactLogix (Gen1)](docId:-BqtVfTg6-G52T2Z_8kng)&#xA;[AB ControlLogix (Gen1)](docId:3hu9fyQZ3CfUO8vibEQzY)&#xA;Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd)                    |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Start the Studio 5000 Logix Designer application.
2. Select **File** > **Open**, then select your PLC project.
3. In **Controller Organizer**, right-click the device and select **Properties** from the popup menu.
   The Module Properties dialog box appears.
4. Select the **Port Configuration** tab.
5. Copy aside the IP address from the **IP address** field.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Allen-Bradley                            |
| **Driver**          | AB CompactLogix Ethernet FreeTag         |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 44818                                    |
| **Slot**            | 0                                        |

# Step 3: Configure the List of Registers

Browse for tags to add to this FreeTag device. See [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd) to learn more. Alternatively, when you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX), type the tag name in the **Name** field exactly as it is defined in the device (case-sensitive). You can find a list of tags by navigating to **Controller Organizer > Controller > Controller Tags** in Studio 5000 Logix Designer.

The following data types are supported:&#x20;

- `bool`
- `byte`
- `sint`
- `int`
- `dint`
- `real`
- `dword`
- `lint`
- `lreal`
- `string`

## Addressing Tips

- To access the bits of a `dint` tag, use the data type `bool` and append the bit address (`.0` to `.31`) to the name of the `dint` tag.
- To access the elements of a two- or three-dimensional array, use multiple square brackets instead of commas to separate the indices. For example, if the array in RSLogix 5000 has the name `MyArray` with the data type `dint[2,2,2]`, you can access the 0th index by entering `MyArray[0][0][0]` in Litmus Edge.

Refer to the following tag parameters in Litmus Edge.&#x20;

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Heidenhain 530 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Heidenhain/

Review the following information for setting up and configuring the Heidenhain 530 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                      |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                              |
| **Validated devices/series** | [Heidenhain iTNC 530](https://content.heidenhain.de/doku/tnc_guide/pdf_files/iTNC530/34049x-05/zyklen/670_388-20.pdf) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Heidenhain                               |
| **Driver**          | Heidenhain 530 Ethernet (Gen1)           |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 9000                                     |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**                      | **Value Types**                   | **Address Format** | **Min Address** | **Max Address** |
| ----------------------------- | --------------------------------- | ------------------ | --------------- | --------------- |
| PLC                           | marker, byte, word, dword, string | DDDDD              | 0               | 99999           |
| DNC\_EXEC\_MODE               | custom                            | D                  | 0               | 0               |
| DNC\_EVT\_PROGRAM             | custom                            | D                  | 0               | 0               |
| DNC\_ERROR\_CLASS             | custom                            | D                  | 0               | 0               |
| DNC\_ERROR\_LOCATION          | custom                            | D                  | 0               | 0               |
| DNC\_FEED\_MODE               | custom                            | D                  | 0               | 0               |
| DNC\_SPINDLE\_STATE           | custom                            | D                  | 0               | 0               |
| DNC\_EVT\_PROGRAM             | custom                            | D                  | 0               | 0               |
| IJHTool                       | custom                            | DDDD               | 0               | 9999            |
| IJHProgramPosition            | custom                            | D                  | 0               | 0               |
| GetOverrideInfo               | custom                            | D                  | 0               | 0               |
| MachineParameter              | custom                            | D                  | 0               | 0               |
| RUNINFO\_AXES\_POSITION       | custom                            | D                  | 0               | 0               |
| RUNINFO\_CUTTER\_LOCATION     | custom                            | D                  | 0               | 0               |
| RUNINFO\_NC\_UPTIME           | custom                            | D                  | 0               | 0               |
| RUNINFO\_MACHINE\_UPTIME      | custom                            | D                  | 0               | 0               |
| RUNINFO\_MACHINE\_RUNNINGTIME | custom                            | D                  | 0               | 0               |
| RUNINFO\_TOOL                 | custom                            | D                  | 0               | 0               |
| RUNINFO\_PCCT                 | custom                            | D                  | 0               | 0               |
| PLC\_SYMBOLIC                 | custom                            | D                  | 0               | 0               |
| FILE                          | custom                            | D                  | 0               | 0               |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Sheet**: Enter the sheet number of the tag.&#x20;
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Beckhoff
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC.

| **PLC**                                                                                                                           | **Compatible Ethernet DeviceHub Driver**                          |
| --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| [Beckhoff TwinCAT 2](https://www.beckhoff.com/en-us/products/automation/twincat/txxxxx-twincat-2-base/txxxxx-twincat-2-base.html) | [Beckhoff ADS/AMS Ethernet (Gen1)](docId\:DKbnBqWymUcRnmCZ_9bus)  |
| [Beckhoff TwinCAT 3](https://www.beckhoff.com/en-ca/products/automation/twincat/tc1xxx-twincat-3-base/tc1200.html)                | [Beckhoff TwinCAT3 Ethernet (Gen1)](docId:0Nv_6R_5ePDilSEUQ9U_Q)  |


[title] Heidenhain 640 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Heidenhain/

Review the following information for setting up and configuring the Heidenhain 640 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                               |
| ---------------------------- | ------------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                       |
| **Validated devices/series** | [Heidenhain TNC 640](https://www.heidenhain.com/products/cnc-controls/tnc-640) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Heidenhain                               |
| **Driver**          | Heidenhain 640 Ethernet (Gen1)           |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 9000                                     |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**                      | **Value Types**                   | **Address Format** | **Min Address** | **Max Address** |
| ----------------------------- | --------------------------------- | ------------------ | --------------- | --------------- |
| PLC                           | marker, byte, word, dword, string | DDDDD              | 0               | 99999           |
| DNC\_EXEC\_MODE               | custom                            | D                  | 0               | 0               |
| DNC\_EVT\_PROGRAM             | custom                            | D                  | 1               | 1               |
| DNC\_ERROR\_CLASS             | custom                            | D                  | 2               | 2               |
| DNC\_ERROR\_LOCATION          | custom                            | D                  | 3               | 3               |
| DNC\_FEED\_MODE               | custom                            | D                  | 4               | 4               |
| DNC\_SPINDLE\_STATE           | custom                            | D                  | 5               | 5               |
| DNC\_EVT\_PROGRAM             | custom                            | D                  | 6               | 6               |
| IJHTool                       | custom                            | DDDD               | 0               | 9999            |
| IJHProgramPosition            | custom                            | D                  | 7               | 7               |
| GetOverrideInfo               | custom                            | D                  | 8               | 8               |
| MachineParameter              | custom                            | D                  | 0               | 0               |
| RUNINFO\_AXES\_POSITION       | custom                            | D                  | 9               | 9               |
| RUNINFO\_CUTTER\_LOCATION     | custom                            | D                  | 10              | 10              |
| RUNINFO\_NC\_UPTIME           | custom                            | D                  | 11              | 11              |
| RUNINFO\_MACHINE\_UPTIME      | custom                            | D                  | 12              | 12              |
| RUNINFO\_MACHINE\_RUNNINGTIME | custom                            | D                  | 13              | 13              |
| RUNINFO\_TOOL                 | custom                            | D                  | 14              | 14              |
| RUNINFO\_PCCT                 | custom                            | D                  | 15              | 15              |
| PLC\_SYMBOLIC                 | custom                            | D                  | 0               | 0               |
| FILE                          | custom                            | D                  | 0               | 0               |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Sheet**: Enter the sheet number of the tag.&#x20;
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] AB FlexLogix (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

Review the following information for setting up and configuring the AB FlexLogix (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                                                                                             |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                     |
| **Validated devices/series** | FlexLogix<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device**

1. Note down the following information and refer to it as needed.&#x20;

   **Device**: AB FlexLogix L24ER-QB1B

   **Communication I/F**: Ethernet and USB. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GbbzCKrgmVLWpRH5UjYkv_ab-flexlogix.png" size="80" width="613" height="341" caption="AB FlexLogix reference" position="center" showCaption="true"}
2. Connect the device to a PC using a serial port.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mJdLZWqx7p9MbnipjxQWQ_ab-flexlogix-serial.png" size="80" width="407" height="197" caption="Serial port" position="center" showCaption="true"}
3. Launch RSLinx classic and click **Configure Drivers**.
4. Select **RS232 DF1 Device driver**, and click **Add New**.
5. Set up the *Comm&#x20;*&#x61;nd click **Auto-Configure**. Make sure the device can be detected successfully. The new device appears.&#x20;
6. Right-click the **02 1788-ENBT/A module > Module Configuration**.
7. Set up Ethernet parameters in *Port Configuration* page.
8. Create another Ethernet driver, select **EthernetIP** Driver, and add it.
9. Select the adapter with the same subnet as the device. The Rockwell device appears including the target.&#x20;
10. Launch RSLogix5000 v16, create a project with the correct device model and version, and then click **Communication > Who Active**.
11. Select the target.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Allen-Bradley                            |
| **Driver**          | AB FlexLogix (Gen1)                      |
| **Network address** | The device address you defined in Step 1 |
| **Port**            | 44818                                    |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following tag parameters and available value types.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the case-sensitive register name exactly as it is defined in the PLC.

A **Connected** status for the device won't display until a tag with a correct register name is created.

## Available Value Types

- `bool`
- `sint`
- `int`
- `dint`
- `real`
- `lint`

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Allen-Bradley
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

:::hint{type="info"}
**Note**: For CompactLogix and ControlLogix PLCs, we recommend using [AB CompactLogix Ethernet FreeTag](docId\:RnJtfL6l5lXb52iFF6QJm), as it provides the best stability. If you prefer speed over stability, then you can use [AB CompactLogix Ethernet Advanced](docId\:ZoRCIH6XT9QOP_PV260bZ).&#x20;
:::

| **PLC Series**                                                                                                                                                                       | **Compatible Ethernet DeviceHub Drivers**                                                                                                                                                                               | **Compatible Serial DeviceHub Drivers**                                                         |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| [CompactLogix](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/small-controllers/compactlogix-family.html)                         | - [AB CompactLogix Ethernet FreeTag](docId\:RnJtfL6l5lXb52iFF6QJm)&#x20;
- [AB CompactLogix Ethernet Advanced](docId\:ZoRCIH6XT9QOP_PV260bZ)
- [AB ControlLogix Unsolicited (Gen1)](docId\:nZp23M-Srp4kG4GMmt46Y)&#x20; | [AB CompactLogix FreeTag (Gen1)](docId:0ThUFulItvz-Oxax2jExG)                                   |
| [ControlLogix](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/large-controllers/controllogix.html)                                | * [AB CompactLogix Ethernet FreeTag](docId\:RnJtfL6l5lXb52iFF6QJm)&#x20;
* [AB ControlLogix Unsolicited (Gen1)](docId\:nZp23M-Srp4kG4GMmt46Y)&#x20;                                                                     | [AB ControlLogix FreeTag (Gen1)](docId:_oIiX4vvlfgTm5gtENnZ1)                                   |
| [FlexLogix](https://literature.rockwellautomation.com/idc/groups/literature/documents/um/1794-um001_-en-p.pdf)                                                                       | [AB FlexLogix (Gen1)](docId\:PnnsbOOV2dnV1gzGzgovV)                                                                                                                                                                     | [AB Flex Serial (Gen1)](docId:7pOC8ErVF6VOTOrfRAsjG)                                            |
| [Micro800](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/micro-controllers/micro800-family/micro800-plug-in-modules.html)        | [AB Micro850 (Gen1)](docId\:UkYt3esGuvDCk7IAzWaMd)                                                                                                                                                                      | [AB Micro850 FreeTag (Gen1)](docId\:cxqNSz-_4oEoMTrnJbMZK)                                      |
| [MicroLogix](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/micro-controllers/micrologix-family/micrologix-1400-controllers.html) | [AB EthernetIP Ethernet](docId\:xsgWCn1sN07M4DjRxwSJX)                                                                                                                                                                  | [AB DF1 (Gen1)](docId\:LuEPjxvVU52z2fTECpV-e)                                                   |
| [PLC-5](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/discontinued-products/plc-5-controllers.html)                                                       | - [AB DF1 Ethernet](docId:3bVGgNJg73EOfTVU03gr4)
- [AB PLC5 Ethernet (Gen1)](docId\:yX8GI9I6EUSaeEL5Cco9R)                                                                                                              | * [AB DF1 Serial](docId\:TGb2JgAZMuU7tBJO10Rvb)
* [AB PLC5 (Gen1)](docId:410fEWFmRkuUTpdcGnuT7) |
| [SLC 500](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/small-controllers/slc-500-controllers.html)                              | - [AB EthernetIP Ethernet](docId\:xsgWCn1sN07M4DjRxwSJX)&#x20;
- [SLC Gateway (Gen1)](docId\:xntHayapBowcDk1XtgXfk)&#x20;                                                                                               | [AB DF1 (Gen1)](docId\:LuEPjxvVU52z2fTECpV-e)                                                   |


[title] AB DF1 Serial
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 2 Drivers/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

Review the following information for setting up and configuring the AB DF1 Serial driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                                |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                          |
| **Validated devices/series** | [PLC-5](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/discontinued-products/plc-5-controllers.html)  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

:::hint{type="info"}
**Note**: When configuring the settings for the PLC, the *Error Detect* setting must be set to CRC, otherwise a connection with Litmus Edge won't be successful.&#x20;
:::

Refer to the following parameters and reference images when setting up the PLC.

- **Device**: PLC5/40C
- **Communication I/F**ꓽ RS232

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Vuzyjc9Ga0gsbEKsKmp0J_image.png" size="80" width="1509" height="1740" position="center" showCaption="false"}

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/I1cWq7sLWkZLO5s6KmGmE_image.png)

Complete the following steps to setup and configure the PLC.&#x20;

**To configure the PLC:**



1. Connect the PLC to the computer with a serial port 25-pin D-shell cable.
2. Open **RSLinx Classic&#x20;**&#x73;oftware.&#x20;
3. Click the **Configure Drivers** icon. Then, click **Add New\...** and add the *RS-232 DF1 devices* driver.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Pv7L50fnFDVDhH32HMKQr_plc5-03.png)
4. Configure the driver with the following parameter values and click **OK**.&#x20;
   **Baud Rate**: 9600
   **Bits Per Char**: 8
   **Stop Bits**: 1
   **Parity**: None
   **Error Detect**: CRC
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/l4ly-qvg5A0gpC4UzNtlQ_plc5-04.png)
5. In the driver settings, click **Auto-Configure** and confirm you see an `Auto Configuration Successful!` message.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1YiiprT-HsMr9d2xZHc2c_plc5-05.png)
6. Ensure these same settings are configured in the PLC to establish a connection.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SyrwJ7JGbpPGMHPA0p1YX_plc5-06.png)
7. Open **RSLogix 5** software.&#x20;
8. Click **Comms&#x20;**&#x61;nd select **Who Active Go Online**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1aKoajDOGyJLH_9qZp0RQ_plc5-07.png)
9. Select the device that you configured and click **Online**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FndapLEP2lzeKLxbfrOdJ_plc5-08.png)
10. In the navigation menu, click **Channel Configuration** and select **Open**.&#x20;
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GP2NNwVk0f6nNt3AhQPJs_plc5-09.png)
11. Confirm the *Serial Port* settings for **Channel 0**, which is the RS232 port. Note down the Baud Rate, Data Bits, Stop Bits, and Parity. The *Error Detect* setting must be set to **CRC**.&#x20;
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2NO4ryrjiopaxydtoFlrw_plc5-10.png)
12. You can use **Channel 3A** to configure the Ethernet port, if applicable.&#x20;
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iTtHacTheCd3F6ocBhMMi_plc5-11.png)

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                     | Value                                                                                                     |
| ----------------------------- | --------------------------------------------------------------------------------------------------------- |
| **Type**                      | Allen Bradley                                                                                             |
| **Driver**                    | AB DF1 Serial                                                                                             |
| **Communication Port**        | Local Serial connection file path                                                                         |
| **Data Bits**                 | 5&#xA;6&#xA;7&#xA;8                                                                                       |
| **Baud Rate**                 | 1200&#xA;2400&#xA;4800&#xA;9600&#xA;19200&#xA;38400&#xA;57600&#xA;115200&#xA;230400&#xA;460800&#xA;921600 |
| **Parity**                    | Even, Mark, None, Odd, Space                                                                              |
| **Stop Bits**                 | 1&#xA;1.5&#xA;2                                                                                           |
| **PLC Type**                  | PLC5                                                                                                      |
| **Source ID (SRC Byte)**      | 0                                                                                                         |
| **Destination ID (DST Byte)** | 1                                                                                                         |
| **Read Timeout**              | 200                                                                                                       |
| **Retry Count**               | 2                                                                                                         |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

:::hint{type="info"}
**Note:&#x20;**&#x54;he register table below represents the PLC address format. In Litmus Edge, you will need to enter the tag address in decimal format. This means you must convert the PLC addresses for the Input and Output Data Files from octal format to decimal format.
:::

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------- |
| O        | uint            | OOO                | 0               | 255             | Output          |
| O\_bit   | bit             | OOOoo              | 0               | 25515           | Output          |
| I        | uint            | OOO                | 0               | 255             | Input           |
| I\_bit   | bit             | OOOoo              | 0               | 25515           | Input           |
| S        | uint            | DDD                | 0               | 255             | Status          |
| S\_bit   | bit             | DDDdd              | 0               | 25515           | Status          |
| B        | bit             | DDDDDdd            | 0               | 3276015         | Binary          |
| T\_bit   | bit             | DDDDD              | 0               | 32760           | Timer           |
| T        | uint            | DDDDD              | 0               | 32760           | Timer           |
| C\_bit   | bit             | DDDDD              | 0               | 32760           | Counter         |
| C        | uint            | DDDDD              | 0               | 32760           | Counter         |
| R\_bit   | bit             | DDDDD              | 0               | 32760           | Control         |
| R        | uint            | DDDDD              | 0               | 32760           | Control         |
| N        | uint, int       | DDDDD              | 0               | 32760           | Integer         |
| F        | float           | DDDDD              | 0               | 32760           | Float           |
| D        | bcd             | DDDDD              | 0               | 32760           | BCD             |
| A        | string          | DDDDD              | 0               | 32760           | ASCII           |
| ST       | string          | DDDDD              | 0               | 32760           | String          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values.&#x20;
- **Length**: Available for ASCII Data Files. Enter the number of characters for tag values.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Hyper-V
[path] QuickStart Guide/Installation and Deployments/ISO Installation on Hypervisors/

You can install Litmus Edge on a virtual machine using Windows Hyper-V. See the [Introduction to Hyper-V on Windows 10](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/about/) for more information.

A typical Litmus Edge virtual file for Hyper-V deployment adheres to a naming convention as follows: **\<product-std\_3.1.5.0-amd64>.iso**.

# Video

:::Iframe{code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/jr8HBpCfV0o?si=OYm3Cty7r-uNTJrP&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

# Before You Begin

- Adjust the system clock for the host environment prior to installing Litmus Edge. UTC is recommended. The 15-day trial period may be rejected and invalidated by the license server if the system clock is not adjusted. If this happens, contact your Litmus representative.
- Obtain a valid file in the ISO format (example filename: `<litmusedge-std_3.1.2.0-amd64>.iso`). You can get the ISO file from Litmus or download it from the [Litmus Central portal](https://portal.litmus.io/).

To use Hyper-V to install Litmus Edge, you will need to do the following.&#x20;

- Step 1: Turn Hyper-V Feature On
- Step 2: Start the Hyper-V Service
- Step 3: Create Virtual Machine
- Step 4: Configure the Virtual Machine
- Step 5: Install the Edge Device
- Step 6: Run the Virtual Machine
- Step 7: Log in to Litmus Edge

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Turn Hyper-V Feature On

You must first turn on the Hyper-V feature.&#x20;

**To turn the Hyper-V feature on:**

1. In Windows, navigate to **Control Panel&#x20;**>**&#x20;Programs** >**&#x20;Programs and Features**.
2. Click **Turn Windows features on or off**.
3. Select **Hyper-V** from the list and click **OK**.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/D_5NB_ELlM8NMaLKl9jKw_image.png)

# Step 2: Start Hyper-V Service

You can now start the Hyper-V Service.&#x20;

**To start the Hyper-V Service:**

1. Open the **Hyper-V Manager**.
2. Select the disk to install the virtual machine in and click **Start Service**.
   The Hyper-V service is running.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6Vt_dWEQeOJrw544ynhMm_image.png)

# Step 3: Create Virtual Machine

Once the Hyper-V service is running, you can create the virtual machine. You have two options for creating it. If you don't see the *Quick Create* option in your version of Windows, you must follow the steps in the *Create New Virtual Machine* section.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EwU6hyZXiqQ9jpkXR9_VX_image.png)

## Create Virtual Machine with Quick Create

Complete the following steps if you see the *Quick Create&#x20;*&#x6F;ption. If you don't see this option, see the *Create New Virtual Machine* section below.&#x20;

**To create the virtual machine:**

1. Select the disk to create the virtual machine in and click **Quick Create**.
   The *Create Virtual Machine* dialog box appears.
2. Click **Local installation source**.&#x20;
   The *Change installation source* button appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HTMwC2934uhxMu2hgFfKn_hyper-v-04.png)
3. Unselect the checkbox for **This virtual machine will run Windows**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ke4SoCQWieWyugl1iRHhJ_hyper-v-05.png)
4. Click **Change installation source**.
   The *New&#x20;*&#x64;ialog box appears.
5. Navigate to the downloaded ISO file, select the file, and click **Open**.
   The name of the selected ISO file appears.
6. Click **More options**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IiqKHITiheO7LPcnHL0j3_hyper-v-06.png)
7. Enter a name for the virtual machine and confirm that the network selection is **Default Switch**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yDzeqKniyRVX6b_OAmSyE_hyper-v-07.png)
8. Click **Create Virtual Machine**.&#x20;

The new virtual machine is created with the name you added and appears in the *Virtual Machines* pane.

## Create New Virtual Machine

If the *Quick Create* option is not available, complete the following steps.&#x20;

:::hint{type="warning"}
**Important**: To ensure you successfully configure the virtual machine, you must select **Generation 2** when configuring th&#x65;*&#x20;Specify Generation* section.&#x20;
:::

**To create a new virtual machine:**

1. Right-click the disk to install the virtual machine in and select **New&#x20;**> **Virtual Machine**.
   The *New Virtual Machine* Wizard appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UNUj36T_YTmg2PcD6CvrX_hyper-v-08.png)
2. Review the *Before You Begin* section and click **Next**.&#x20;
3. Configure the parameters for the virtual machine.&#x20;
   - **Specify Name and Location**: Enter a name and configure the location for the virtual machine.&#x20;
   - **Specify Generation***:* You must select **Generation 2**.&#x20;
   - **Assign Memory**: Assign a minimum of 4096 MB.
   - **Configure Networking**: If you are not using a specific ethernet adapter, select **Default Switch**.&#x20;
   - **Connect Virtual Hard Disk**: Select **Attach a virtual hard disk later**.&#x20;
   - **Installation Options**: Configure the installation options and click **Next**.&#x20;
4. Review the summary and click **Finish**.&#x20;
   The virtual machine will display in the *Virtual Machines* section.&#x20;
5. Select the new virtual machine and click **Settings...**
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/H9ur7T39_IC23YIrn8yNF_hyper-v-10.png)
6. Select **SCSI Controller**. Then, click **DVD Drive** and **Add**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qWQFJuH_L7l76Xq11sy-r_hyper-v-11.png)
7. For *Media*, select **Image file&#x20;**&#x61;nd select the Litmus Edge ISO file.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CHDJRDPR6bO7GhxXyiETZ_hyper-v-12.png)
8. Click **Apply&#x20;**&#x61;nd then **OK**.&#x20;

Continue with the following steps to further configure the virtual machine.&#x20;

# Step 4: Configure Virtual Machine

**To configure the virtual machine:**

1. From the *Virtual Machines* pane in the Hyper-V Manager, click the virtual machine name.
   The virtual machine name appears in the *Actions&#x20;*&#x70;ane and includes sub-menus.
2. From the *Actions&#x20;*&#x70;ane, click **Settings** under the virtual machine name.
   The *Settings for new VM* dialog box appears.
3. From the *Settings for new VM* dialog box, configure the following.&#x20;
   - **Firmware**: Make sure that **DVD drive with Image File** is in first place for the *Boot order*.
   - **Security**: Select the **Enable Trusted Platform Module** checkbox and deselect the remaining checkboxes.
   - **Memory**: Enter at least 4096 MB in the *RAM&#x20;*&#x66;ield.
   - **Processor**: Enter `2` in the *Virtual Processors* field.
   - **Network**: Selec&#x74;**&#x20;Default Switch** from the *Virtual Switch* drop-down list.
4. Click **Apply**, and then click **OK** to close the *Settings&#x20;*&#x64;ialog box.
5. Click the **Connect** sub-menu.
   The *Starting the new VM* dialog box appears.
   A message appears that the VM is turned off and prompts you to start.
6. Click **Start**.

The installation for the virtual machine begins.

# Step 5: Run Operating System Installer

You will run the operating system installer that will install Litmus Edge.&#x20;

:::hint{type="info"}
**Notes**:&#x20;

- During the installation, the progress bar may decrease at times due to partitioning.
- The time to complete the installation is based on the size of the hard disk drive. Large disk drives will cause the installation to take longer to partition the disk and therefore longer to complete setting up the virtual machine.&#x20;
:::

**To install the edge device:**

1. After the device initiates the installer, respond to the questions in the terminal user interface (TUI).
   `Welcome to Operating System Installer. Are you installing over Serial (for advanced users)? Yes/No :`
2. Enter `No`, and then press **ENTER**.
3. Select **Install Operating System**, and then select **OK**.&#x20;
   Use the arrow keys to navigate to selections.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hAvMk3gpWB-Dxe1YMKVOW_03-adgvjjf47i2hzl20tkborhyper-v-install-operating-system.png" size="80" width="408" height="168" caption="Install Operating System option" position="center" showCaption="true"}
4. Select the partition to install, and then select **OK**.
   This list is device specific. Typically, the installation location is *sda*. If the device/gateway has embedded MMC (eMMC) components, the partition name may be listed as *mmcblk&#xA0;*&#x69;nstead of *sda*. Make sure you select the correct hard-drive location.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OOtH9jOK2QNXQ3uSMds6z_04-hehzjn84ofmpxgmzul2yhyper-v-installation-location.png" size="80" width="501" height="169" caption="Select partition step" position="center" showCaption="true"}
5. Verify the OS installation location by selecting **Yes**. If you select **No**, you are returned to the beginning of the installation.
6. A second verification ensures that you are overwriting the correct device partition during the formatting process. Select **Yes** to continue formatting the device and installing the operating system.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KVVbH9JUtLlRQrUWgfHU8_06-m6rjzhbsiooaca44b96gehyper-v-format.png" size="80" width="490" height="129" caption="Format devices warning message" position="center" showCaption="true"}
7. The installer indicates its progress, followed by a success message. Select **Yes&#x20;**&#x74;o power off the device.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/k_1ZIv3HUMEBKhBJR7hCv_08-szxw4-5ucqmtk7jkhp3hmhyper-v-power-off.png" size="80" width="817" height="168" caption="Power off option" position="center" showCaption="true"}
8. Close the *Virtual Machine* dialog box.
9. From the *Actions&#x20;*&#x70;ane, click th&#x65;**&#x20;Settings&#x20;**&#x73;ub-menu again under the new virtual machine name.
   Th&#x65;*&#x20;Settings for new VM* dialog box appears.
10. From the *Settings for new VM* dialog box, configure the following.&#x20;
    - **SCSI Controller**: Select **DVD Drive&#x20;**&#x61;nd click **Remove** to delete this drive.
    - **Firmware**: Make sure that **Hard Drive with Image File&#x20;**&#x69;s in first place of the *Boot&#x20;*&#x6F;rder.
11. Click **Apply**, and then click **OK&#x20;**&#x74;o close the *Settings&#x20;*&#x64;ialog box.

The virtual machine is ready to run from the hard drive.

# Step 6: Run Virtual Machine

Now that the edge device is installed, you can run the virtual machine.&#x20;

**To run the virtual machine:**

1. From the *Actions&#x20;*&#x70;ane in the Hyper-V Manager, click **Connect...&#x20;**&#x75;nder the new virtual machine name.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PIm6jLCDUNfZOf6YOplcU_hyper-v-14.png)
2. From the virtual machine window, click **Start**, and then select **Continue** from the pop-up window.

The virtual machine boots up and displays the IP address to access using a web browser.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7bObinl0lpfVu_v9NO5qb_image.png)

# Step 7: Log in to Litmus Edge

- See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;
- See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for instructions on how to navigate and log in for the first time.


[title] DNP3 Ethernet
[path] QuickStart Guide/Industrial Systems Connection Guide/Emerson/

:::hint{type="info"}
**Note**:&#x20;

- This driver is available for Litmus Edge version 3.3.1 and later.&#x20;
- This driver does not support File Transfer or SAv5.
- This driver supports Emerson's DNP3 tunneling method for Emerson FBx RTUs only.
:::

Review the following information for setting up and configuring the DNP3 Ethernet driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                   |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                           |
| **Validated devices/series** | [Emerson FB1200](https://www.emerson.com/documents/automation/emerson-fb1200-flow-computer-instruction-manual-en-586728.pdf) &#xA;[Emerson FB3000](https://www.emerson.com/documents/automation/fb3000-remote-terminal-unit-rtu-product-data-sheet-en-7625900.pdf) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

:::hint{type="warning"}
**Caution**: Make sure that the value you enter for *Master Address* is unique.&#x20;
:::

| Parameter                 | Value                                    |
| ------------------------- | ---------------------------------------- |
| **Type**                  | Emerson                                  |
| **Driver**                | DNP3 Ethernet                            |
| **Network Address**       | The device address you defined in Step 1 |
| **Network Port&#x20;**    | 20000                                    |
| **Outstation Address**    | 1                                        |
| **Master Address**        | 0                                        |
| **Class 1 Poll Interval** | 5                                        |
| **Class 2 Poll Interval** | 5                                        |
| **Class 3 Poll Interval** | 5                                        |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following register table and tag parameters. You can also [Search for Pre-defined Device Tags](docId\:W1Est_A3MIDOUIZrkSgvi) for the device.&#x20;

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types**             | **Min Address** | **Max Address** | **Description**      |
| -------- | --------------------------- | --------------- | --------------- | -------------------- |
| G0       | ATTRIBUTE                   | 0               | 1023            | Device Attributes    |
| G1       | BIN                         | 0               | 1023            | Binary Input         |
| G10      | BIN                         | 0               | 1023            | Binary Output Status |
| G20      | UINT16, UINT32              | 0               | 1023            | Counter              |
| G30      | FLT 32, FLT64, INT16, INT32 | 0               | 65535           | Analog Input         |
| G40      | FLT 32, FLT64, INT16, INT32 | 0               | 65535           | Analog Output Status |
| G50      | DNP3TIME                    | 0               | 65535           | Time                 |
| G110     | OSTR                        | 0               | 65535           | Octet strings        |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Heidenhain
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC.

| **PLC**                                                                                                               | **Compatible Ethernet DeviceHub Drivers**                                                                                                  |
| --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| [Heidenhain iTNC 530](https://content.heidenhain.de/doku/tnc_guide/pdf_files/iTNC530/34049x-05/zyklen/670_388-20.pdf) | - [Heidenhain 530 Ethernet (Gen1)](docId\:zaNxmvkgZNWClSqNIzLTw)
- [Heidenhain 530 Advanced Ethernet (Gen1)](docId\:R3kDUkx2bKpuLUd7y42dZ) |
| [Heidenhain TNC 640](https://www.heidenhain.com/products/cnc-controls/tnc-640)                                        | [Heidenhain 640 Ethernet (Gen1)](docId\:oyTfVtuQzpa3vmBantsZa)                                                                             |


[title] Quickstart Guide
[path] /




[title] Docker Installation
[path] QuickStart Guide/Installation and Deployments/

You can use Docker to install Litmus Edge. 

:::hint{type="info"}
**Note**: You can't upgrade the Litmus Edge Docker version using a software update file (UPD). You can follow the Docker recommended approach for Docker image upgrade and volume management.
:::

# Before you begin&#x20;

- Install [Docker Engine 19.03+](https://docs.docker.com/get-docker/) on an Intel 64-bit machine.
- On the Intel 64-bit machine, have administrative permissions to execute Docker commands.
- Ensure the Docker Engine is configured to run a Docker image with a root user.
- Contact your Litmus account representative to get access to the service account `.json` file.&#x20;

To use Docker to install Litmus Edge, you will need to do the following:

- Step 1: Launch a Litmus Edge Docker Image
- Step 2: Log in to Litmus Edge

# Step 1: Launch a Litmus Edge Docker Image

**To launch a Litmus Edge Docker image:**

1\. Download the service account .json file, which you can get from your Litmus account representative.&#x20;
2\. Open a Command Prompt Terminal (CTRL+R) on the Intel 64-bit machine.
3\. Use one of the commands below to launch the Docker image: Linux or Windows.&#x20;

:::CodeblockTabs
```linux
cat <file_name>.json | docker login -u _json_key --password-stdin https://us-docker.pkg.dev
```

```windows
type <file_name>.json | docker login -u _json_key --password-stdin https://us-docker.pkg.dev
```
:::

The `<file_name>.json` parameter is the service account file requested from step 1.&#x20;

:::hint{type="info"}
**Example:** If the .json file is named abc123.json, execute: `cat abc123.json | docker login -u _json_key --password-stdin https://us-docker.pkg.dev`
:::

Refer to [Google's Setting Up Authentication: Service Account Key](https://cloud.google.com/artifact-registry/docs/docker/authentication#json-key) for more information.

:::hint{type="info"}
**Note:&#x20;**&#x49;f the Docker container (that will be initialized from the Docker image from Step 3) will be configured with CPU/RAM limits, allocate at least 2-4 CPUs and 4-8 GB RAM. Scale up as needed.
:::

4\. Execute the following command to initialize the Litmus Edge Docker container from the downloaded Docker image from Step 3.

```linux
docker run --name LE -d --cap-add=NET_ADMIN -p 8443:443 -v vol1:/var us-docker.pkg.dev/litmus-sales-enablement/litmusedge/litmusedge-std-docker:latest
```

Refer to the command parameters:

- `--name LE` parameter can be changed with a different name than LE.
- `--cap-add=NET_ADMIN` parameter should not be changed as NET\_ADMIN is required.
- `-p 8443:443` parameter can be changed with a different port than 8443. Internal port 443 can be mapped to any other external port other than 8443 as desired.
- The command `-v vol1:/var` will mount all container data to a volume called `vol1`. You can name the volume to your preference.&#x20;

:::hint{type="info"}
**Note**: The `--sysctl net.ipv4.ping_group_range="0 2147483647"` parameter is not always required. However, if you are using Utilities and ping encounters errors due to host system limitations, add this parameter before initiating the container.
:::

5\. From the Docker terminal window, it will display the IP address to access the Litmus Edge device through the Web UI. Enter the IP address into an internet browser URL bar to access the Litmus Edge device.

# Step 2: Log in to Litmus Edge

See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;


[title] BacnetIP
[path] QuickStart Guide/Industrial Systems Connection Guide/BACnet/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

Review the following information for setting up and configuring the BacnetIP device.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                            |
| ---------------------------- | ------------------------------------------- |
| **Driver type**              | Ethernet                                    |
| **Validated devices/series** | BACnet/IP devices                           |

# Before You Begin

- You will need to open UDP port 47808 on your firewall to successfully browse tags.&#x20;
- If you are using the **Docker version** of Litmus Edge:
  - You will need to use the `--net=host` option in the Docker run command for the [Device Discovery Tool](docId\:N9jtAdKuUXNU_YNhq87x4) to successfully work.&#x20;
  - When using the  [Device Discovery Tool](docId\:N9jtAdKuUXNU_YNhq87x4), you will need to use the IP address 0.0.0.0. You can't use the IP address of the host machine.&#x20;
  - If the `--net=host` option is not enabled:
    - Device Discovery will not work.&#x20;
    - Browse tags will not work **unless&#x20;**&#x79;ou map `47808:47808/UDP`.&#x20;

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="warning"}
**Important**: When setting up the PLC device, the BACnet driver and your Litmus Edge instance must be on the same subnet. If they aren't on the same subnet, the BACnet driver won't be able to connect to Litmus Edge.&#x20;
:::

To find the network parameters of the driver, you have the option of using the [Device Discovery Tool](docId\:N9jtAdKuUXNU_YNhq87x4). Otherwise, set up the device for Ethernet access and collect the network parameters.&#x20;

**To use the device discovery tool:**

1. &#x20;Navigate to **DeviceHub&#x20;**> **Devices**.
2. Click the **Connect a Device** box.&#x20;
   The *Connect Device&#x20;*&#x64;ialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EsdTOzwz08SbFyIjrMSkH_connectdevice.png" size="80" width="1046" height="528" caption="Connect a Device box" position="center" showCaption="true"}
3. Click the **Device Type** drop-down list and select **BACnet**.
4. Click the **Driver Name** drop-down list, and select **BacnetIP**.
5. Click **Device Discovery**.&#x20;
   Th&#x65;*&#x20;Device Discovery* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hhgwr9rUjmT4zyBcKvsDb_connectdevicebacnet.png" size="80" width="1170" height="608" caption="Device Discovery option" position="center" showCaption="true"}
6. In th&#x65;**&#x20;Network address** field, open the drop-down list and select the appropriate ethernet port. The available options are based on the interfaces configured in Litmus Edge. To review interfaces, navigate to **System&#x20;**> **Network&#x20;**> **Interfaces**.&#x20;
7. In the **Retry count** field, review the default value (5) and update it if needed. This configures the number of times Litmus Edge will attempt to discover devices.&#x20;
8. In the **Timeout&#x20;**&#x66;ield, review the default value (2) and update it if needed.&#x20;
9. Click **Start discovery**. When the search is complete, available devices will be listed with the following parameters:
   - Device ID
   - IP address
   - Port
10. Click the appropriate device, and then click **Update form with discovery results**.&#x20;
    The *Connect Device* dialog box appears with *Network Address*, *Network Port*, and *Target Device ID* pre-filled based on the discovery results.&#x20;
11. Move onto Step 2 and continue configuring the device with the remaining parameters.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                                                                                                          |
| ---------------------- | -------------------------------------------------------------------------------------------------------------- |
| **Type**               | BACnet                                                                                                         |
| **Driver**             | BacnetIP                                                                                                       |
| **Network Address**    | The device address you defined in Step 1                                                                       |
| **Port**               | 47808                                                                                                          |
| **Target Device ID**   | The Object ID of the device                                                                                    |
| **Instance Device ID** | If the default value of 0 is configured, then a random instance ID will be generated. This ID must be unique.  |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following register table and tag parameters. You can also [Search for Pre-defined Device Tags](docId\:W1Est_A3MIDOUIZrkSgvi) for the device.&#x20;

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

:::hint{type="info"}
**Note**: When browsing for tags, only tags with the property of **Present\_Value** will be identified.&#x20;
:::

| **Name**    | **Value Types**                                              | **Access   Types&#x20;** | **Address Format** | **Min Address** | **Max Address** | **Description**               |
| ----------- | ------------------------------------------------------------ | ------------------------ | ------------------ | --------------- | --------------- | ----------------------------- |
| AI          | float32                                                      | R/W                      |                    | 0               | 2147483647      | Analog input                  |
| AO          | float32                                                      | R/W                      |                    | 0               | 2147483647      | Analog output                 |
| AV          | float32                                                      | R/W                      |                    | 0               | 2147483647      | Analog value                  |
| BI          | uint32, bool                                                 | R/W                      |                    | 0               | 2147483647      | Binary input                  |
| BO          | uint32, bool                                                 | R/W                      |                    | 0               | 2147483647      | Binary output                 |
| BV          | uint32, bool                                                 | R/W                      |                    | 0               | 2147483647      | Binary value                  |
| MSI         | int32                                                        | R/W                      |                    | 0               | 2147483647      | Multi state input             |
| MSO         | int32                                                        | R/W                      |                    | 0               | 2147483647      | Multi state output            |
| MSV         | int32                                                        | R/W                      |                    | 0               | 2147483647      | Multi state value             |
| SCH         | float32                                                      | R/W                      |                    | 0               | 2147483647      | Schedule                      |
| LFSP        | uint32                                                       | R/W                      |                    | 0               | 2147483647      | Life safety point             |
| LOCTL       | float32                                                      | R/W                      |                    | 0               | 2147483647      | Local control                 |
| OCTSTR      | octet\_string                                                | R/W                      |                    | 0               | 2147483647      | Octet string                  |
| PINT        | uint32                                                       | R/W                      |                    | 0               | 2147483647      | Positive integer              |
| CHV         | string                                                       | R/W                      |                    | 0               | 2147483647      | Object character string value |
| F           | octet\_string                                                | R/W                      |                    | 0               | 2147483647      | File object                   |
| PROPRIETARY | bool, int32, uint32, float32, float64, string, octet\_string | R/W                      |                    | 0               | 2147483647      | Proprietary                   |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] License Server Installation
[path] QuickStart Guide/Installation and Deployments/

A license server provides an efficient and secure way to install and manage licenses to multiple Edge devices (Bare-metal, Docker, VM, K8S). A built-in license server is available with Litmus Edge Manager, so you don't need to complete any additional setup for it. You can also set up and install a license server separately in an air-gapped environment.

After receiving a site license key from the [Litmus Central portal](https://central.litmus.io/)., a respective site license can then be activated and added to the license server.&#x20;

- If you set up the license server with Litmus Edge Manager, see [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O) for more information on managing site licenses.&#x20;
- If you set up the license server without Litmus Edge Manager, see the section below *Install Licenses in License Server&#x20;*&#x66;or more information on adding licenses through the license server. You can also add site-based licenses to individual Litmus Edge instances. See the section below *Register License Server to Individual Litmus Edge Instance* to learn more.&#x20;

# License Server with Litmus Edge Manager (Easy)

If your organization has an instance of Litmus Edge Manager along with instances of Litmus Edge, then you can install and manage the license server in Litmus Edge Manager. See [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O) and [Activate an Edge Device](docId\:G1kWiYDlSR5u8qEJk0djp) for more information.

# Set Up License Server without Litmus Edge Manager (Advanced)

You can set up a license server without Litmus Edge Manager by completing the steps below.&#x20;

## Before You Begin

To set up the license server, you will need to do the following:

- Install Docker Engine 19.03+ on an Ubuntu or similar Linux system. It can be a VM or Bare-metal. It must be installed separately from any Litmus Edge and Litmus Edge Manager.
- Make sure the host system has the correct system time and is connected to any NTP Server for proper time sync. Any change in the system time on the host system will invalidate the license.
- Have administrative permissions to execute Docker commands on the host system.
- Ensure the Docker Engine is configured to run a Docker run command.
- Obtain access to a License Server Docker image, which is available from the [Litmus Central portal](https://central.litmus.io/).
- Configure firewall inbound port access to the host and docker container from an external Edge device: 8443 TCP, 8445 TCP.&#x20;

## Step 1: Generate API Key

You will need to create a unique alpha-numeric API key.&#x20;

To generate the API key, enter the following command in a command prompt window:

```shell
# generate a random apikey_secret
# copy the apikey to a safe storage
apikey_secret=$(uuidgen) && echo $apikey_secret
```

:::hint{type="info"}
**Note**: After the key is generated, make sure to copy it and store it securely.&#x20;
:::

## Step 2: Set Server IP and DNS

To set the server IP and DNS, enter the following command in a command prompt window:

```shell
# set the server ip/dns. It should be accessible from the edge device on port 8445
server_url=172.17.0.1:8445
```

The server URL is the IP address or the DNS address of the host system. The server IP/DNS you configure in the command should be accessible from the edge device on port 8445.

## Step 3: Download License Server Docker Image

**To download the license server Docker image:&#x20;**

1\.  Download the service account .json file from the [Litmus Central Portal](https://central.litmus.io/).
2\. Open a command prompt window on the host system.
3\. Enter the following Linux command to authenticate.

```shell
cat <file_name>.json | docker login -u _json_key --password-stdin https://us-docker.pkg.dev
```

The `<file_name>.json` parameter is the service account file requested from step 1.&#x20;

:::hint{type="success"}
**Example:** If the `.json` file is named abc123.json, enter: `cat abc123.json | docker login -u _json_key --password-stdin https://us-docker.pkg.dev`
:::

Refer to [Google's Setting Up Authentication: Service Account Key](https://cloud.google.com/artifact-registry/docs/docker/authentication#json-key) for more information.

4\. Pull the License Server Docker image with the following command.&#x20;

```shell
docker pull us-docker.pkg.dev/litmus-sales-enablement/ls/litmus-licensing-server:latest
```

## Step 4: Run License Server

To run the license server, enter the following Docker command:&#x20;

```shell
# Run License Server docker container
docker run --name=lls -d -v lls-data:/var/lib/litmus -v lls-license:/var/lib/litmus-licensing -p 8443:8443 -p 8445:8445 -e LITMUS_LICENSING_API_KEY=$apikey_secret -e LITMUS_LICENSING_SERVER_URL=$server_url us-docker.pkg.dev/litmus-sales-enablement/ls/litmus-licensing-server:latest
```

If the Docker is not in a running state, an error message will be generated. The `$apikey_secret` and `$server_url` are the variables created in Step 1 (API key) and Step 2 (Server IP and DNS).&#x20;

# Install Licenses in License Server

Once you have set up the license server without Litmus Edge Manager, you can start installing licenses in the License Server.&#x20;

:::hint{type="info"}
**Note**: If you have already set up a license server through Litmus Edge Manager, see [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O) and [Activate an Edge Device](docId\:G1kWiYDlSR5u8qEJk0djp) to learn how to manage licenses through Litmus Edge Manager.&#x20;
:::

## Before You Begin

Request the activation key you will need from the [Litmus Central portal](https://central.litmus.io/).

## Install a License in Litmus Edge

**To install a license in Litmus Edge:**

1. In a web browser, log in to the license server you previously installed in the following format: \[license server URL]:\[port number]. For example: `10.19.12.48:8443`.&#x20;
2. If this is the first time you are logging in to the license server, enter the following default credentials:
   - **Username**: admin
   - **Password**: password
3. Click **Add License**.&#x20;
   The *Add License&#x20;*&#x64;ialog box appears.&#x20;
4. In the **License Key** field, enter or paste the activation key you received from Litmus. If you will be upgrading the core license, select the **Upgrade Core License&#x20;**&#x63;heck box.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1KPvxbPOvLRbV9c8EKwS1_add-license.png" size="80" width="977" height="307" caption="Add License dialog box" position="center" showCaption="true"}
5. Click **Generate Request**.&#x20;
6. Click the **Copy&#x20;**&#x69;con for the activation request. Then, click the URL (`https://litmus.activate.id`) to visit the *Licensing Portal&#x20;*&#x70;age.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/67WZpA72901_ErJb8eu8t_activation-request.png" size="80" width="973" height="363" caption="Copy icon and URL link" position="center" showCaption="true"}
7. In the **Activation Request** box, paste the activation request you copied in the previous step. Then, click the **I'm not a robot** check box.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yZ-kkn0n1mtRn_PlWcJqN_licensing-portal.png" size="80" width="952" height="408" caption="Licensing Portal page" position="center" showCaption="true"}
8. Click **Make License**.&#x20;
9. Copy the license key that is created and return to the *License server* page.&#x20;
10. From the *Add License* dialog box, click **Next**.&#x20;
11. In the **Activation Data** field, paste the license key you copied in step 9.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HGaCreP6I3e1-o_XDSFKx_activation-data.png" size="80" width="981" height="311" caption="Activation Data field" position="center" showCaption="true"}
12. Click **Add**.&#x20;
    The license is added to the license server.&#x20;

# Register License Server to Individual Litmus Edge Instance

If you set up a license server without Litmus Edge Manager, you have the option of registering the license server to individual Litmus Edge instances.&#x20;

:::hint{type="info"}
**Note**: If you have already set up a license server through Litmus Edge Manager, see [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O) and [Activate an Edge Device](docId\:G1kWiYDlSR5u8qEJk0djp) to learn how to manage licenses through Litmus Edge Manager.&#x20;
:::

**To register the license server to an individual Litmus Edge instance:&#x20;**

1. From the *License Server* page, click **Authorize Device**.&#x20;
   The *Authorize Device* dialog box appears.&#x20;
2. In the **Device Label** field, enter a name for the Litmus Edge instance.&#x20;
3. Click **Generate Configuration**.&#x20;
   A configuration key is generated.&#x20;
4. Click **Copy & Close**.&#x20;
   The configuration key is copied and the dialog box closes.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/431ihAIG4c4XX0B9u_gbC_authorize-device.png" size="80" width="980" height="325" caption="Authorize Device dialog box" position="center" showCaption="true"}
5. In Litmus Edge, navigate to **System&#x20;**> **License**.&#x20;
6. In the *License Server Settings* section, click **Set Server**.&#x20;
   The *Set License Server Configuration* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/invuCEWMNR3qhmCd10gpI_set-server.png" size="80" width="1048" height="652" caption="Set Server button" position="center" showCaption="true"}
7. In the **Configuration&#x20;**&#x66;ield, paste the configuration key you copied.&#x20;
8. Click **Save**.&#x20;
   The license is added to the Litmus Edge instance and the instance is added to the *Devices&#x20;*&#x73;ection in the *License Server* page.


[title] HID Device (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/HID Devices/

Review the following information for setting up and configuring the HID Device (Gen1) driver.&#x20;

# Introduction

Human Interface Devices (HID), USB-connected peripheral devices such as scanners (generally for barcodes or QR codes), can be polled for data.

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                    |
| ---------------------------- | ----------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                              |
| **Validated devices/series** | Human Interface Devices. Examples include scanners used for barcodes and QR codes.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | HID Devices                       |
| **Driver**             | HID Device (Gen1)                 |
| **Communication Port** | Local Serial connection file path |

# Step 3: Configure the List of Registers

In the context of Litmus Edge, the following characteristics are relevant for this serial device:

- The HID remains disconnected because HIDs send data only when there is data to send.
- Only one tag is required in order to read the data. Only one register name and data type are available to select. Use this one name and data type to connect to the HID device.
- The tag supports only ASCII characters.
- By default, the polling interval is set to "1." The default value cannot be changed in Litmus Edge. The actual interval is defined by the device's publishing rate.
- Data can be collected onto flows when it is scanned.

Refer to the following tag parameters.&#x20;

## Tag Parameters

- **Name**: Select **R**.
- **Value Type**: Select **raw**.&#x20;
- **Polling Interval**: Enter a value in seconds.&#x20;
- **Tag Name**: Enter a name.&#x20;
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Fuji NB Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Fuji Devices/

Review the following information for setting up and configuring the Fuji NB Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items |
| ---------------------------- | ---------------- |
| **Driver type**              | Serial           |
| **Validated devices/series** | Fuji NB Series   |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed.&#x20;

   **Device**: Fuji NBOU14

   **Communication I/F**: RS485 2W. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/i3JUAda-DNpYt8sTfvQu__fuji-nb-serial01.png" size="80" width="642" height="828" caption="Fuji NB Serial reference" position="center" showCaption="true"}
2. Launch Flex PC Programmer v2.1.0.35 software.
3. Click **Options > Communication**.
4. Set up COM port and communication parameters.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kIjq8zrdzXflX2kgEb4WS_fuji-nb-serial-parameters.png" size="80" width="699" height="361" caption="COM port and communication parameters" position="center" showCaption="true"}
5. Click the **Online&#xA0;**&#x69;con.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Fuji Devices                      |
| **Driver**             | Fuji NB Serial (Gen1)             |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 19200                             |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description**              |
| -------- | -------------- | ------------------ | --------------- | --------------- | ---------------------------- |
| X        | bit            | Ddd                | 1               | 816             | Input Status (Read Only)     |
| Y        | bit            | Ddd                | 1               | 816             | Output Status                |
| C        | bit            | DDDDD              | 1               | 2000            | Control Bit                  |
| T        | bit            | DDDDD              | 1               | 500             | Timer Status                 |
| CT       | bit            | DDDD               | 1               | 250             | Counter Status               |
| SC       | bit            | DDD                | 1               | 1000            | System Control Bit           |
| DS       | word           | DDDD               | 1               | 4500            | Data Registers               |
| DD       | word           | DDDD               | 1               | 1000            | Data Registers (Double Word) |
| DH       | word           | DDD                | 1               | 500             | Data Registers               |
| DF       | word           | DDD                | 1               | 500             | Data Registers (Double Word) |
| XD       | word           | D                  | 0               | 8               | Input Status Registers       |
| YD       | word           | D                  | 0               | 8               | Output Status Registers      |
| TD       | word           | DDD                | 1               | 500             | Timer Current Values         |
| CTD      | word           | DDD                | 1               | 250             | Counter Current Values       |
| SD       | word           | DDDD               | 1               | 1000            | System Data Registers        |
| TXT      | word           | DDDD               | 1               | 1000            | Text Data Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] ESXi ISO (VMWare vSphere 6.7.0)
[path] QuickStart Guide/Installation and Deployments/ISO Installation on Hypervisors/

You can install Litmus Edge on a virtual machine using the ESXi Hypervisor (VMWare vSphere 6.7.0) with an ISO file.&#x20;

A typical Litmus Edge virtual file for ESXi deployment adheres to a naming convention as follows: **\<product>-std\_3.1.5.0-amd64.iso**.&#x20;

# Before You Begin



- Prepare your environment for running virtualization by using VMWare ESXi - Hypervisor.&#x20;
  - Review [Verified VM Versions](docId:36xPLuILTp2QajsR8ltHw) and confirm the correct version to download. See [VMWare](https://www.vmware.com/worldwide.html).&#x20;
  - The virtual machine will run on the same physical network card as the host environment. To ensure that the device can communicate with data sources such as PLC, DCS or CNC and can be accessed through the Web UI, make sure that communication can be established.
- Adjust the system clock for the host environment prior to installing Litmus Edge. UTC is recommended. The 15-day trial period may be rejected and invalidated by the license server if the system clock is not adjusted. If this happens, contact your Litmus representative.&#x20;
- Obtain a valid file in the ISO format (example filename: `<litmusedge-std_3.1.5.0-amd64>.iso`). You can get the ISO file from the [Litmus Central portal](https://central.litmus.io/).

To install Litmus Edge on VMWare vSphere 6.7.0, you will need to do the following., you will need to do the following.&#x20;

- Step 1: Create a Virtual Machine
- Step 2: Log in to Litmus Edge

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Create a Virtual Machine

You will first need to create the virtual machine that will run Litmus Edge.&#x20;

**To install the ESXi-Hypervisor virtual machine:**

1. Start the VMWare (VMWare vSphere 6.7.0) application.
   The VMWare ESXi application appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eaoN_NfLc-N7lNsgnKeSP_01l1qe23vfpm0jufvc45azvmware-esxi-hypervisor-app.png "ESXi Application window")
2. From the left panel, select **Virtual Machines**.
3. Click **Create/Register VM**.
   The *New virtual machine wizard > Select creation type* window appears.

## Select Creation Type

Select **Create a new virtual machine** and click **Next**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ai_VcCP_U84et6rBPDgTw_02tyxtalj5puatejerctgqsimage.png" size="80" width="1163" height="719" caption="Select creation type screen" position="center" showCaption="true"}

## Select a Name and Guest OS

This section allows you to provide a name for the virtual machine and identify the guest operating system.&#x20;

Enter the details for the name and guest OS.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sd71Fogpc-D_8X5nBD7Hx_03ujvx7krxx6i39eob4bhtbimage.png" size="80" width="1161" height="730" caption="Name and guest OS" position="center" showCaption="true"}

- **Name**: Enter a name for the virtual machine.&#x20;
- **Compatibility**: Your selection must be compatible with your ESXi version Guest OS family (Linux).
- **Guest OS family**: The operating system is based on Linux.
- **Guest OS version**: The kernel used for the operating system is a 64-bit Yocto Kernel.

## Select Storage

You will need to select a datastore for the virtual machine's configuration files and all of its virtual disks.&#x20;

Select a datastore and click **Next**.&#x20;

:::hint{type="info"}
**Note:** The datastore must have at least 50 GB of free capacity.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AQbPSIhsDzlL3oqsYoF3g_04dmp0yordjzcla2jfvfkdimage.png" size="80" width="1163" height="726" caption="Select storage screen" position="center" showCaption="true"}

## Customize Settings

You will need to configure the virtual machine hardware and virtual machine additional options.&#x20;

:::hint{type="info"}
**Note**: Your specific setup may require different or additional configurations. Follow up with your IT department for these requirements.
:::

Configure the *Virtual Hardware* parameters.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PhPonIdjpfRlUoViMSybO_05wo-ce0lmzfo6nbiamlulnimage.png" size="80" width="1170" height="699" caption="Customize settings screen" position="center" showCaption="true"}

### CPU parameter

Select **4**. This value is recommended to improve the performance of the VM. If the host system permits or the VM is a production deployment, more cores should be allocated.

### Memory parameter

Enter **8** GB or set the memory size to the desired allocation. At least 2048 MB should be allocated to prevent significant reduction in performance. If the host system permits, more memory is better.

### Hard disk 1 parameter

Enter a minimum of **25** GB in the *Hard disk* field. Depending on your storage requirements, you may have to select a higher value.&#x20;

:::hint{type="info"}
**Note**: The VM should boot up successfully with the hard disk *Controller location* configured with an SCSI controller. If there are issues with the VM booting up, follow up with your IT department. Review this configuration by expanding this section.&#x20;
:::

### Network Adapter 1 parameter

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

- By default, VMs are defined with two network cards. They are configured for the first network card as a Bridged Network and the second network card as NAT.
- Based on the ESXi host environment, if a NAT network exists, a second network adapter must be added and set to NAT.
- If a NAT network exists, move to the next section. Otherwise, skip it.
:::

**To confirm the network adapter:**

1. Click **Add network adapter**.
2. From the *New Network Adapter* drop-down list, select **NAT Network**.

### CD/DVD Drive 1 parameter

**To configure the CD/DVD Drive:**

1. From the *CD / DVD Drive 1* drop-down list, select **Datastore ISO file**.
   The *Datastore&#x20;*&#x62;rowser appears.
2. Select the ISO file, and then click **Select**.

Click the *VM Options* tab.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_E0BzCHSw3ns5mr5xgnWV_06dzxeziqfmomu48gttr-sdimage.png" size="80" width="1161" height="695" caption="The VM Options section" position="center" showCaption="true"}

**To configure the VM options:**

1. Select the **VM Options** tab.
2. Expand **Boot Options** and select **BIOS** from the *Firmware&#x20;*&#x64;rop-down list. BIOS is needed for the installer to load.&#x20;
3. Click **Next**.&#x20;
4. Click **Finish**.&#x20;
   The new virtual machine link appears in the Virtual Machine list.

# Step 2: Run Operating System Installer

You will run the operating system installer that will install Litmus Edge.&#x20;

:::hint{type="info"}
**Notes**:&#x20;

- During the installation, the progress bar may decrease at times due to partitioning.
- The time to complete the installation is based on the size of the hard disk drive. Large disk drives will cause the installation to take longer to partition the disk and therefore longer to complete setting up the virtual machine.&#x20;
:::

**To configure the operating system installer:**

1. Click the new virtual machine link.
   The virtual machine details pane appears.
2. Click the Terminal shell to start the virtual machine. Some errors appear in the terminal window. You can disregard them.&#x20;
   The *Welcome to Operating System Installer* appears in the Terminal shell.
3. From the *Welcome to Operating System Installer* screen, enter `yes` and press **ENTER**.
   *Select a drive to Install (sda)* appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4-lPs7p50SYVyucvAqU_C_terminal-01.png)
4. Enter `sda` and press **ENTER**.
   *To Confirm Installation and format partitions* appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4iKDWmJzsHtmkK6mEXtO2_terminal-02.png)
5. Enter `yes` and press **ENTER**.
   The installation begins. During the installation, another error appears regarding an invalid partition table. You can disregard it.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/z_DUSbp_NvUdvcgqGol4o_terminal-03.png)
6. When the installation completes, close the terminal shell.
7. From the *virtual machine details* pane, click **Edit**.&#x20;
   The *Edit settings* dialog box appears.
8. Select the **VM Options** tab.
9. Expand **Boot Options** and select **EFI&#x20;**&#x66;rom the **Firmware** drop-down list.
10. Click **Save**.
    The virtual machine details pane appears.
11. Click **Power on**, and then click the **Terminal** shell.
    The *Welcome&#x20;*&#x77;indow appears.
12. Note the IP address required for log in.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/z9v_AJAWPL4PSUHx7mKjs_image.png" size="80" width="1087" height="813" position="center" caption="Terminal User Interface : Welcome to Litmus Edge" showCaption="true"}

# Step 3: Log in to Litmus Edge

- See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;
- See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for instructions on how to navigate and log in for the first time.


[title] Industrial Systems Connection Guide
[path] QuickStart Guide/

Refer to the following configuration settings for specific devices when you [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq).&#x20;

- [ABB](docId:-zBqvOWn7REbeQsxNW3Ij)&#x20;
- [Atlas Copco](docId\:EmdRd8WJIXlcooeSqeXb_)&#x20;
- [Allen-Bradley](docId:9ZsFyXkJV85UZ_pP09soR)&#x20;
- [BACnet](docId\:aWH-acBd7AsdR0-5323wz)&#x20;
- [Beckhoff](docId\:hNyIKznFaDT_a8gAJe0Qd)&#x20;
- [Brother Industries Ltd](docId\:E5_lZMXVnR69icCRo8zYk)&#x20;
- [CAN Bus](docId\:Z5kL0Z0CFZ0W1uNibqN_s)&#x20;
- [CodeSys Devices](docId\:WbN5dAtyp1xwhwRRZHzVk)&#x20;
- [Cutler-Hammer](docId\:d9vjPzaqbccL7F1Q9joeX)&#x20;
- [Danfoss](docId\:DMtE1kgxTLpb0M2v9GJ4m)&#x20;
- [Delta PLC](docId:-7qdS1GiJwYI_5bdH-hx8)&#x20;
- [Emerson](docId\:v_abq8srzqzbBjCVupdu8)&#x20;
- [Euromap63](docId\:U-4s0uX7JN-K4TQR7cf_6)&#x20;
- [Excel](docId\:OzNGybwpINq02s7cy8NOk)&#x20;
- [Fanuc Corporation](docId\:d7O2EvwzgCPiGaXlkmInI)&#x20;
- [Fuji Devices](docId\:XHM4fwjoNXyIMyQjN4mSz)&#x20;
- [GE Fanuc](docId:80RK3E0x5WtOjlqtyGuVX)&#x20;
- [GPIO](docId:3JMLFLZnD899gupuDi3NI)&#x20;
- [Heidenhain](docId:7SE79rZTpcJiGIU1w3alz)&#x20;
- [HID Devices](docId\:AbKV0hiHjth1uO7A6K37s)&#x20;
- [Hitachi Devices](docId\:lZxf0arkFZYMkxof_8xpF)&#x20;
- [HPE](docId\:gkqVgVVNX67s1v_PsDJLh)&#x20;
- [IEC](docId\:ZPaEvCAdIL0iXQec76rTh)&#x20;
- [JTEKT Toyopuc](docId:7WDpaJ0j73M2ccSmI65e2)&#x20;
- [Keyence](docId\:jDVUy4nwIporC34Z08jk9)&#x20;
- [Koyo](docId\:C_FcqmDGFAsAQ4AUlXeLp)&#x20;
- [LS Industrial System](docId\:S3QVUqbWb7sHlsyir5x50)&#x20;
- [Lumberg Automation](docId\:CmEO6_vMyw3nAbfbyJ_he)
- [Mitsubishi](docId:1OW_1_y5xO6lNQwpmSPwX)&#x20;
- [Modbus](docId\:xNJZkzFg7ZZvvuIJshiGQ)&#x20;
- [MQTT](docId\:eVuDNBFCPnhdO4h2Q7Y1S)
- [MTConnect](docId\:qTbc84Ctc9CsilgJRoc6y)&#x20;
- [ODVA](docId\:qrijYUVaRRMbKRyMfpU1-)&#x20;
- [OPC UA](docId\:R8MlB0gvFHqRMC0lrUxmd)&#x20;
- [Opto Devices](docId\:wx1yh_V3Cf1VMaTtgtbDI)&#x20;
- [OSI](docId\:OyPEuGm0ZelrzgYBOgjAV)
- [Panasonic](docId\:U6Yt6Gg7WR4WPg_SGgalA)&#x20;
- [Parker](docId\:KfN0Za_FpZElcEnoXGDVW)&#x20;
- [Ping](docId:1jWK0O1ruqG4Dzfcx-Stf)&#x20;
- [Profinet](docId\:wiOYcFpcgqHmVC2pVzDeC)&#x20;
- [RS Automation](docId\:HWj4JapHkqgf6ykt6OFLi)&#x20;
- [SAIA](docId\:dLKCeDJTY2y_CNRDygvln)&#x20;
- [Sick Flexi](docId:1U5KkXiAruverUnPTpS4Q)&#x20;
- [Siemens](docId\:gWVPSui-2hDYmW9I9Xgs5)&#x20;
- [Simulator](docId\:CxO2ajWlOADNdOZkUoDA3)&#x20;
- [Toshiba](docId\:m-XhlaMNCL-tt6oNpaD4Z)&#x20;
- [VIPA](docId\:f_5Qe8HEoMBhvgEpU_3F4)&#x20;
- [Yokogawa](docId\:jb7ZoZqhi7JMiA38t_YHW)&#x20;
- [Yaskawa](docId\:qAPaoz3MfJ_T-rjdYRB2b)&#x20;

# Video

Review the following tutorial video on connecting a device.&#x20;

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/r7fseyvRQJA?si=2ISrBv3uaXIFEiAc&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Deprecated Drivers

Refer to the table for drivers that have been deprecated or will be deprecated in a future release. Review the **Recommended Replacement Driver** column for drivers that should be used instead.&#x20;

| **Driver**                                                     | **Recommended Replacement Driver**                                                                                                   | **Litmus Edge Version Removed** |
| -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------- |
| [Mitsubishi QJ71E71 (Gen1)](docId\:t4exR_Oy9OTrm4yZ6e-Fw)      | [Mitsubishi QJ71E71](docId\:fMNTPyWvoIqVeQOidccC2)                                                                                   | 3.3.2                           |
| [AB CompactLogix (Gen1)](docId:-BqtVfTg6-G52T2Z_8kng)          | [AB CompactLogix Ethernet FreeTag](docId\:RnJtfL6l5lXb52iFF6QJm)                                                                     | 3.5.2                           |
| [AB ControlLogix (Gen1)](docId:3hu9fyQZ3CfUO8vibEQzY)          | [AB CompactLogix Ethernet FreeTag](docId\:RnJtfL6l5lXb52iFF6QJm)                                                                     | 3.5.2                           |
| [AB MicroLogix (Gen1)](docId\:KAsZQeWgFgIb65dSuS7dd)           | [AB EthernetIP Ethernet](docId\:xsgWCn1sN07M4DjRxwSJX)                                                                               | 3.5.2                           |
| [OPC UA Client (Gen1)](docId\:f3iumcndSDygNOJ6JXQMu)           | [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR)                                                                               | 3.5.2                           |
| [OPC UA Client Subscribe (Gen1)](docId\:PKB97rg3Wy7I5VWbHbuKq) | [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR)                                                                               | 3.5.2                           |
| [Siemens S7-1200 (Gen1)](docId\:Uze9HSlcKuC_vWCWj2fRf)         | One of the following: <br />* [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4)
* [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d) | 3.5.2                           |
| [Siemens S7-1500 (Gen1)](docId\:s908RZ8XqcinuirgYIgDz)         | One of the following: <br />* [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4)
* [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d) | 3.5.2                           |
| [Siemens S7-300 (Gen1)](docId:6QFqTxO5VHAwSPofiSf-G)           | One of the following: <br />* [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4)
* [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d) | 3.5.2                           |
| [Siemens S7-400 (Gen1)](docId\:eZsGbT1lnd84FDx_VQD4h)          | One of the following:<br />* [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4)
* [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d)  | 3.11.0                          |
| [Mitsubishi A2SH Serial (Gen1)](docId\:rGNHxyFgEdx-uVzpvHEQ-)  | [Mitsubishi A Series Serial](docId:2vVoJ8ys8gVfV7O6T8zNg)                                                                            | Future version                  |
| [OPC UA Client](docId\:CYSORhlYGBTc7-CJiLi0v)                  | [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR)                                                                               | Future version                  |
| [OPC UA Client Poll](docId\:wz06OtFIN6LdMrxzoMj7i)             | [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR)                                                                               | Future version                  |
| [Modbus ASCII (Gen1)](docId\:XhV-tpwiACYqHAPZOFoIa)            | [Modbus ASCII](docId\:oEOHqIBxp46l0dWTp-Xmz)                                                                                         | Future version                  |
| [Modbus RTU (Gen1)](docId\:uFdsdCj0htV8fkv2YbeTm)              | [Modbus RTU](docId\:cLMEYaOkmeSZSJ9GmpLB-)                                                                                           | Future version                  |
| [Modbus TCP (Gen1)](docId\:qiP9F4QgCya63Nm3OWaWM)              | [Modbus TCP](docId\:NbER6LlRZwtlKO50-hv3V)                                                                                           | Future version                  |
| [Modbus UDP (Gen1)](docId\:Jz6SLfJ9P6g2La9KStWMv)              | [Modbus UDP](docId:2tSQ-h8tueu-_mt9d-Zgs)                                                                                            | Future version                  |
| [Modbus RTU-Offset (Gen1)](docId\:LRuQ4f-sopIyuHzDmgUw3)       | [Modbus RTU](docId\:cLMEYaOkmeSZSJ9GmpLB-)                                                                                           | Future version                  |
| [Modbus TCP-Offset (Gen1)](docId:_ec6me-3T4rL91uo8cz8T)        | [Modbus TCP](docId\:NbER6LlRZwtlKO50-hv3V)                                                                                           | Future version                  |


[title] Establishing a Litmus Edge-Litmus Edge Manager Connection From the Litmus Edge Side
[path] QuickStart Guide/System Requirements/

For details on the Litmus Edge Manager side of port customization, see [Establishing a Litmus Edge-Litmus Edge Manager Connection: From the Litmus Edge Manager Side](docId:07fCvAm4NfT3dW1_5LWJF).

 A Litmus Edge instance is activated by the Litmus Edge Manager in the following set of steps:

1. Litmus Edge users enter activation URL and activation code. See *Step 2: Create an Activation Request in Litmus Edge&#x20;*&#x73;ection of [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) for details.
2. Litmus Edge attempts to establish an initial connection with inbound port 443/TCP (HTTPS) of Litmus Edge Manager.
3. Litmus Edge Manager receives the connection at its inbound port 443/TCP (HTTPS).
4. Litmus Edge sends an activation request that is received, and approved by Litmus Edge Manager. See *Step 3: Approve the Activation Request in Litmus Edge Manager&#x20;*&#x73;ection of [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) for details.
   - Litmus Edge sends activation requests on port 443/TCP of Litmus Edge Manager.
   - Litmus Edge Manager user accepts the activation request in UI.
   - Litmus Edge Manager responds to the Activation request with Litmus Remote credentials.
5. Litmus Edge attempts to establish a permanent connection with inbound port 51820/UDP (Remote Access) of Litmus Edge Manager.
6. Litmus Edge Manager receives the connection at inbound port 51820/UDP (Remote Access).
7. Litmus Edge confirms the permanent connection with Litmus Edge Manager.
8. The permanent connection becomes a secure two-way (bi-directional) connection. Both Litmus Edge and Litmus Edge Manager use Litmus Edge's to Litmus Edge Manager's inbound port 51820/UDP (Remote Access) to communicate with each other.

# Port Customization For Litmus Edge

- Ensure all required outbound/egress ports are open to be able to reach Litmus Edge Manager.
- No inbound/ingress ports are needed to reach and maintain a connection with Litmus Edge Manager.

# Additional Connection: Supporting Litmus Edge's Default Generic MQTT SSL Connector to Litmus Edge Manager

After a Litmus Edge-Litmus Edge Manager connection has been established, the Litmus Edge Manager can receive [metrics](docId\:XZ4oKukesfg7rDekrLhPU) data or [events](docId\:Qh9PnCUT-G1k_Lz9p4-m3) data (enabling event forwarding is needed) from a Litmus Edge instance. For Litmus Edge Manager to receive the data, the Litmus Edge instance must enable its Default Generic MQTT SSL Connector ([Integration](docId\:Wpqo1fE02tmx3AsKewQU6)). Once the connector is enabled, the Litmus Edge instance will attempt to reach a connection at Litmus Edge Manager's inbound port 8883/TCP.

:::hint{type="info"}
**Note:&#x20;**&#x50;orts 443 and 51820 are required for establishing the initial connection. Port 8883 is used for ongoing data transmission once the connection is in place. For additional details about each port, please refer to the [Firewall Port Configuration Requirements](docId\:boQw9Hv4KQBt6nUF7m9s9).
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zzf3omglCtYjvCA628km2_diagram-1.png "LE connecting to LEM and MQTT data connection")

## Port Customization For Litmus Edge

Ensure all required outbound/egress ports are open to be able to reach Litmus Edge Manager.


[title] Roc800 Ethernet
[path] QuickStart Guide/Industrial Systems Connection Guide/Emerson/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

Review the following information for setting up and configuring the Roc800 Ethernet driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                              |
| ---------------------------- | ----------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                      |
| **Validated devices/series** | [Emerson ROC800](https://www.emerson.com/en-us/catalog/emerson-roc800-series) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use Emerson software V2.55 on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                                    |
| ---------------------- | ---------------------------------------- |
| **Type**               | Emerson                                  |
| **Driver**             | Roc800 Ethernet                          |
| **Network Address**    | The device address you defined in Step 1 |
| **Network Port&#x20;** | 4000                                     |
| **Operator ID**        | LOI                                      |
| **Password**           | Enter your password                      |
| **Device Address**     | 240                                      |
| **Device Group**       | 240                                      |
| **Host Address**       | 239                                      |
| **Host Group**         | 1                                        |
| **Next Request Delay** | 0                                        |
| **Optimizations**      | Disable or Enable                        |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following register table and tag parameters. You can also [Search for Pre-defined Device Tags](docId\:W1Est_A3MIDOUIZrkSgvi) for the device.&#x20;

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types**                                                                                                  |
| -------- | ---------------------------------------------------------------------------------------------------------------- |
| OP       | JSON, HEX                                                                                                        |
| PT       | JSON, HEX, AC3, AC7, AC10, AC12, AC20, AC30, AC40, INT8, INT16, INT32, UINT8, UINT16, UINT32, FL, DBL, TLP, TIME |
| History  | JSON                                                                                                             |
| Alarms   | JSON                                                                                                             |
| Events   | JSON                                                                                                             |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Opcode**: Select the Opcode to use. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::

## Supported Opcodes

- 6 - System Configuration
- 7 - Read Real-time Clock
- 8 - Set Real-time Clock
- 10 - Read Configurable Opcode Point Data
- 17 - Set Operator Identification&#x20;
- 50 - Request I/O Point Position
- 105 - Request Today’s and Yesterday’s Min/Max Values
- 108 - Request History Tag and Periodic Index
- 118 - Request Alarm Data
- 119 - Request Event Data
- 135 - Request Single History Point Data
- 136 - Request Multiple History Point Data
- 137 - Request History Index for a day
- 138 - Request Daily and Periodic History for a Day
- 139 - History Information Data
- 166 - Set Single Point Parameters
- 167 - Request Single Point Parameters
- 180 - Request Parameters
- 181 - Write Parameters
- 204 - Long Request Event Data
- 206 - Read Transaction History Data

## Supported Point Types

- 60
- 68
- 71
- 84: HART Extended Point Type
- 85: HART Point Type
- 91: System Variables
- 92
- 93
- 94
- 95: Communication Ports
- 96
- 97
- 98: Soft Point Parameters
- 99: Configurable Opcode Table
- 100
- 101: Discrete Inputs
- 103: Analog Inputs
- 109: System Analog Inputs
- 110: PID Control Parameters
- 111
- 117: Modbus Configuration Parameters
- 118: Modbus Register to TLP Mapping
- 119: Modbus Event, Alarm, and History Table
- 120: Modbus Master Modem Configuration
- 121: Modbus Master Table
- 122
- 123: Security – Group Configuration
- 124: History Segment Configuration
- 125: History Segment 0 Point Configuration
- 126: History Segment 1 Point Configuration
- 127: History Segment 2 Point Configuration
- 128: History Segment 3 Point Configuration
- 129: History Segment 4 Point Configuration
- 130: History Segment 5 Point Configuration
- 131: History Segment 6 Point Configuration
- 132: History Segment 7 Point Configuration
- 133: History Segment 8 Point Configuration
- 134: History Segment 9 Point Configuration
- 135: History Segment 10 Point Configuration
- 136: ROC Clock
- 137: Internet Configuration Parameters
- 138
- 139: Smart I/O Module Information
- 142: History Segment 11 Point Configuration
- 143: History Segment 12 Point Configuration
- 144: Transactional History Configuration Point Type
- 145: Transactional History Point Configuration Point Type
- 196-208
- 210-216
- 218
- 219
- 230-234


[title] Euromap63 (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Euromap63/

Review the following information for setting up and configuring the Euromap63 (Gen1) driver.

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                    |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | File-based                                                                                                                                                                                                                                                                                          |
| **Validated devices/series** | Euromap 63<br />The Euromap 63 standard defines the data exchange with injection molding machines through files.<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

# Supported Commands

The Euromap63 (Gen1) driver supports the following commands in the specification.&#x20;

| **Euromap63 command** | **Use in Litmus Edge**                                   |
| --------------------- | -------------------------------------------------------- |
| GETID                 | Browses available tags.                                  |
| REPORT                | Retrieves tag values from the injection molding machine. |

# Set up and Configure the the Euromap63 Driver

**To set up and configure the Euromap63 driver:**

1. Create a shared folder. See [Create a Shared Folder in Windows 10](docId:_ANcVQH9-4RvQCigOJu7u) to learn more.&#x20;
2. In Litmus Edge, follow the steps to [Mount External Storage](docId:0EHe48bvf0CeWNmDGVD_T) and configure the following parameters.&#x20;
   - **Mount Point Name**: Enter the name of the shared folder you created previously.&#x20;
   - **Share**: Enter the share name in the following format: `//[IP address of the PC running the simulator]/[shared folder name]`. For example: **//192.168.53.34/Euromap63folder**.&#x20;
   - **Read Only**: Uncheck the checkbox.&#x20;
   - **Username**: Enter the username you configured.&#x20;
   - **Password**: Enter the password you configured.&#x20;
3. In Litmus Edge, follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters. Configure other parameters as needed.&#x20;
   - **Device Type**: Select **Euromap63**.
   - **Driver Name**: Select **Euromap63 (Gen1)**.
   - **Path**: Enter the path of the shared folder in the following format: `/data/[shared folder name]`. For example: **/data/Euromap63folder**.&#x20;
4. Follow the steps to [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd) and add tags to the DeviceHub device.&#x20;



If you need to manually [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device, refer to the following tag parameters and available value types.&#x20;

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the case-sensitive register name exactly as it is defined in the PLC.

A **Connected** status for the device won't display until a tag with a correct register name is created.

## Available Value Types

- `int`
- `float`
- `int64`
- `float64`
- `string`

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Overview
[path] /

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tEcTzyrUnnK-w4cTUkXXx_le.png)

Litmus Edge is an Industrial Edge Data Platform that allows you to collect, analyze, and act on real-time data at the edge. It offers out-of-the-box support for a wide range of native drivers for Industrial Devices, Control Systems, Robotics, and other industrial assets.&#x20;

Once the device data is collected, Litmus Edge normalizes it and enables data sharing with any edge environment, big data platform, cloud, or enterprise system. Both raw and processed data are normalized to enable visualization and analysis at the edge regardless of the data source (device type).

You can access Litmus Edge using any of the following:

- Web UI (User Interface)
- Terminal User Interface
- REST APIs

# Security

Litmus Edge is built with security at every step to address the unique challenges of Industrial IoT.&#x20;

It offers:

- **Deployment Security:&#x20;**&#x4C;itmus Edge supports the offline first and air-gapped installation.
- **Authentication and Authorization**: Enterprise-ready authentication, authorization, and RBAC (Role-Based Access Control) policies. The Litmus Edge user interface is only accessible with a login and password.&#x20;
- **Platform Access Security:** Protected and modern HTTPS web interfaces.&#x20;
- **LDAP / AD authentication**: Litmus Edge LDAP and AD settings allow you to integrate the login system with an external authentication registry.
- **Certificate Management**: Litmus Edge includes a default self-signed certificate and therefore all communications are secure by default.
- **Encryption**: All communication between a Litmus Edge device and a user’s browser are protected by transport layer encryption, which uses SSL/TLS.
- **Software Update**: An over-the-air update system delivers updates remotely and ensures their security with thorough verification checks.
- **Token-Based Security:&#x20;**&#x50;rovides token-based security for apps authentication.
- **Data Access Security:** Secure and isolated message broker for real-time data subscription.

# Functionality

Litmus Edge allows you to do the following:

- Securely collect data from any industrial device.
- Normalize the collected data.
- Process, analyze, and store data at the edge.
- Run container-based applications on top of the data.
- Support time-series analysis using ready analytics and KPIs.
- Easily build flows for configuration and analytics.
- Integrate edge systems with cloud or enterprise systems, including Big Data.

# Frequently Asked Questions

Refer to our [FAQs](docId\:DrxteIBGueT0mAc-GX7Kt).


[title] Heidenhain 530 Advanced Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Heidenhain/

Review the following information for setting up and configuring the Heidenhain 530 Advanced Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                      |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                              |
| **Validated devices/series** | [Heidenhain iTNC 530](https://content.heidenhain.de/doku/tnc_guide/pdf_files/iTNC530/34049x-05/zyklen/670_388-20.pdf) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Heidenhain                               |
| **Driver**          | Heidenhain 530 Advanced Ethernet (Gen1)  |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 9000                                     |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**                      | **Value Type**                    | **Address Format** | **Min Address** | **Max Address** |
| ----------------------------- | --------------------------------- | ------------------ | --------------- | --------------- |
| PLC                           | marker, byte, word, dword, string | DDDDD              | 0               | 99999           |
| DNC\_EXEC\_MODE               | custom                            | D                  | 0               | 0               |
| DNC\_EVT\_PROGRAM             | custom                            | D                  | 1               | 1               |
| DNC\_ERROR\_CLASS             | custom                            | D                  | 2               | 2               |
| DNC\_ERROR\_LOCATION          | custom                            | D                  | 3               | 3               |
| DNC\_FEED\_MODE               | custom                            | D                  | 4               | 4               |
| DNC\_SPINDLE\_STATE           | custom                            | D                  | 5               | 5               |
| DNC\_EVT\_PROGRAM             | custom                            | D                  | 6               | 6               |
| IJHTool                       | custom                            | DDDD               | 0               | 9999            |
| IJHProgramPosition            | custom                            | D                  | 7               | 7               |
| GetOverrideInfo               | custom                            | D                  | 8               | 8               |
| MachineParameter              | custom                            | D                  | 0               | 0               |
| RUNINFO\_AXES\_POSITION       | custom                            | D                  | 9               | 9               |
| RUNINFO\_CUTTER\_LOCATION     | custom                            | D                  | 10              | 10              |
| RUNINFO\_NC\_UPTIME           | custom                            | D                  | 11              | 11              |
| RUNINFO\_MACHINE\_UPTIME      | custom                            | D                  | 12              | 12              |
| RUNINFO\_MACHINE\_RUNNINGTIME | custom                            | D                  | 13              | 13              |
| RUNINFO\_TOOL                 | custom                            | D                  | 14              | 14              |
| RUNINFO\_PCCT                 | custom                            | D                  | 15              | 15              |
| PLC\_SYMBOLIC                 | custom                            | D                  | 0               | 0               |
| FILE                          | custom                            | D                  | 0               | 0               |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Sheet**: Enter the sheet number of the tag.&#x20;
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] VirtualBox ISO
[path] QuickStart Guide/Installation and Deployments/ISO Installation on Hypervisors/

You can use Oracle VirtualBox to install Litmus Edge using an ISO file.

# Video

:::Iframe{code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/IVGKFc3ScLA?si=27j3xp5wrzdM2OSO&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

# Before You Begin

- Prepare your environment for running virtualization by using Oracle VirtualBox.&#x20;
  - Review [Verified VM Versions](docId:36xPLuILTp2QajsR8ltHw) and confirm the correct version to download. See  [VirtualBox Downloads](https://www.virtualbox.org/wiki/Downloads).&#x20;
  - Refer to [VirtualBox Documentation](https://www.virtualbox.org/wiki/Documentation) to learn more.&#x20;
  - The virtual machine will run on the same physical network card as the host environment. To ensure that the device can communicate with data sources such as PLC, DCS or CNC and can be accessed through the Web UI, make sure that communication can be established.
- Adjust the system clock for the host environment prior to installing Litmus Edge. UTC is recommended. The 15-day trial period may be rejected and invalidated by the license server if the system clock is not adjusted. If this happens, contact your Litmus representative.
- Obtain a valid file in the ISO format (example filename: `<litmusedge-std_3.1.5.0-amd64>.iso`). You can get the ISO file from Litmus or download it from the [Litmus Central portal](https://central.litmus.io/).

To use Oracle VirtualBox to install Litmus Edge using an ISO file, you will need to do the following.&#x20;

- Step 1: Create a Virtual Machine
- Step 2: Configure the Virtual Machine
- Step 3: Install the ISO File
- Step 4: Run Litmus Edge On the Virtual Machine
- Step 5: Log in to Litmus Edge

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Create a Virtual Machine

You will need to create a virtual machine (VM) that will be used to run Litmus Edge.&#x20;

**To create a virtual machine**:

1. Start the Oracle VirtualBox application.
2. From the *Oracle VM VirtualBox Manager* window, click **New&#xA0;**&#x6F;n the toolbar.
   The *Create Virtual Machine* dialog box appears.
3. If needed, toggle **Guided Mode** to **Expert Mode**.
   The dialog box expands.
4. Enter a name for the virtual machine in the **Name** field.
5. Select **Linux** from the **Type** drop-down list.
6. Select **Other Linux (64-bit)** from the **Version** drop-down list. You can select Linux 2.6, 3.x, or 4.x (64-bit).
7. Move the **Memory Size&#xA0;**&#x73;lider to set the memory size. The minimum is 2 GB of (2048 MB). Select more memory if the host system permits.
8. From the *Hard disk&#x20;*&#x73;ection, select **Create a virtual hard disk now**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Vp1-c36calrAwVDWXAqTi_01-1tpt74joo7cuctby3ksysimage.png" size="80" width="896" height="779" caption="Create virtual machine dialog box" position="center" showCaption="true"}
9. Click **Create**.
   The **Create Virtual Hard Disk** dialog box appears.
10. From the *Hard disk file type* section, select the **VMDK (Virtual Machine Disk)**.
11. From the *Storage on physical hard disk&#x20;*&#x73;ection, select **Dynamically allocated**.
12. Move the **File Size** slider to set the file size. The minimum value is 16 GB, which enables the VM to run. This size provides the resulting VM with about 2 GB of data storage. This is enough for a small-scale PoC without much data storage on the disk. If this VM is deployed as a production system or the PoC requires more storage for databases, increase the file size beyond 16 GB.
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/m1M0gTirOrXvxJFfhp_1F_02-ihklwlmgncgehevbnbrgbimage.png" size="80" width="782" height="703" caption="Virtual Disk parameters" position="center" showCaption="true"}
13. Click **Create**.&#x20;
    The new VM is deployed. It appears on the list in the *Oracle VM VirtualBox Manager* window.
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RZyc7VEocj7Z4rmB10Y9O_03-dnydbqsiqqkn8btoo9mbyimage.png" size="80" width="1496" height="820" caption="New VM listed in left pane" position="center" showCaption="true"}

# Step 2: Configure the Virtual Machine

After installing the VM, you will need to configure it.&#x20;

From the *Oracle VM VirtualBox Manager* window, select the new VM on the left pane, then click **Settings** on the toolbar. Th&#x65;**&#xA0;***Settings&#xA0;*&#x64;ialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vvnGa-VSuxdgMxO58VKJ6_image.png" size="80" width="1326" height="886" caption="The Settings dialog box" position="center" showCaption="true"}

## Step 2a Configure System Settings

Configure the following system settings from the *Motherboard&#x20;*&#x74;ab.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8VWC2MFb1kggnE0RE0S9i_image.png" size="80" width="1326" height="886" caption="Motherboard system settings" position="center" showCaption="true"}

- &#x20;**Boot Order**: Highlight **Optical&#x20;**&#x61;nd click the **Up&#x20;**&#x61;rrow to make it the first item in the boot order.&#x20;
- **Pointing Device**: Select **PS/2 Mouse**.&#x20;
- **Extended Features**: Make sure **Enable EFI (special OSes only)** is selected.&#x20;

Configure the following settings from the **Processor&#x20;**&#x74;ab.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/oZIzJgZPcVImNjrWK38FI_image.png" size="80" width="1226" height="741" caption="Processor system settings" position="center" showCaption="true"}

Move th&#x65;**&#xA0;Processor(s)** slider to set the cores for the VM to **2** (the recommended minimum). If the host system permits or the VM is a production deployment, more cores should be allocated.

## Step 2b: Configure Storage Settings

1. From the left pane, select **Storage**.
2. From the *Storage Devices* section, select the **Controller**.&#x20;
3. From the *Type&#x20;*&#x64;rop-down list, select **AHCI**.&#x20;
   If *AHCI&#x20;*&#x69;s not available, select, **PIIX4**. The PIIX4 option works, but displays a number of messages throughout the installation.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/L2AdCESfXAhBySmoPgJCo_isovirtualboxstorage01.png" size="80" width="1227" height="908" caption="Storage controller settings" position="center" showCaption="true"}
4. From the *Storage Devices&#x20;*&#x73;ection, select the **Optical&#x20;**&#x64;rive (currently shown as *Empty*).&#x20;
5. From the *Attributes&#x20;*&#x73;ection, click the **Optical Drive** icon and select **Choose a disk file**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eVugEq9xGgKm7zKxmSX4z_isovirtualboxstorage02.png" size="80" width="1227" height="908" caption="Optical settings" position="center" showCaption="true"}
6. Navigate to the ISO file from which you want to install, and then click **Open**.
   The Optical drive in the *Storage Devices* section displays the name of the ISO file you selected.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/oJ7hbeMpF2Ayni7Zl_EQV_17-koj9jzs-hssiheusny6luimage.png" size="80" width="1226" height="742" caption="ISO file listed in Controller: IDE" position="center" showCaption="true"}

## Step 2c: Configure Audio Settings

1. From the left pane, select **Audio**.&#x20;
2. Clear the **Enable Audio Output** checkbox.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/m9KzWcLcJS2H8U942Pj3U_18-h9garqgevxhxeogguqimage.png" size="80" width="1226" height="742" caption="Audio settings" position="center" showCaption="true"}

## Step 2d: Configure Network Settings

1. From the left pane, select **Network**.
2. Click the **Adapter 1** tab.
3. Select th&#x65;**&#xA0;Enable Network Adapter** checkbox.
4. From the *Attached to* drop-down list, select **Bridged Adapter**.
5. Select the appropriate network card name from the **Name&#xA0;**&#x64;rop-down list.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/K_DNC1QPR0pB_ykymRAII_19-hmapy5hnqugbgzukao9rtimage.png" size="80" width="1226" height="742" caption="Network settings" position="center" showCaption="true"}
6. Select the **Adapter 2** tab.
7. Select th&#x65;**&#xA0;Enable Network Adapter** checkbox.
8. From th&#x65;*&#x20;Attached to* drop-down list, select **NAT**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qsMYFRsg3hQnlRa2MJhrc_20-kdvuafcs96jzh3shc4eadimage.png" size="80" width="1226" height="742" caption="Adapter 2 tab" position="center" showCaption="true"}

## Step 2e: Configure USB Settings

1. From the left pane, select **USB**.
   The **USB** pane appears on the right.
2. Deselect the **Enable USB Controller** checkbox.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/or72WzxrUtsEoLIMKHrLh_21-fnusb9qr-htqgcqsmnllvimage.png" size="80" width="1226" height="742" caption="USB settings" position="center" showCaption="true"}
3. Click **OK**.&#x20;

# Step 3: Run the Operating System Installer

You will run the operating system installer that will install Litmus Edge.&#x20;

:::hint{type="info"}
**Notes**:&#x20;

- During the installation, the progress bar may decrease at times due to partitioning.
- The time to complete the installation is based on the size of the hard disk drive. Large disk drives will cause the installation to take longer to partition the disk and therefore longer to complete setting up the virtual machine.&#x20;
:::

**To install the ISO file:**

1. From the *Oracle VM VirtualBox Manager* window, select your VM and click **Start** on the toolbar.
2. If prompted, select the ISO file you added to the Optical device in the **Storage&#xA0;**&#x73;ettings, then click **Start**. If the Start button does not close the prompt box, click **Cancel**. This will not interfere with the installation.&#x20;
   The Terminal User Interface (TUI) appears. If a message appears warning you that the mouse you are using is not supported in TUI, ignore it. You can navigate the TUI using arrow keys and make selections by pressing the `ENTER` key.
   During loading, the Terminal User Interface may display the following warning/error messages. These can be ignored.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XpcrGKSTdXToEskOH347Z_22-j99c4rqmqic80gzv-hb7doc454-screenshot-1.png "Warning/error messages")
3. After the device initiates, respond to the questions in the TUI. Enter **No** to continue with the installation using the graphical interface.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fdv6yuZoLjvvMW8WdklsI_23-if9prgtfougvok8qothuoimage.png" size="80" width="720" height="90" caption="Question asking if you are installing over Serial interface" position="center" showCaption="true"}
4. Select **Install Operating System**, and then select **Ok**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/l8vADEN0UVOa1g9SNGDJc_24-wbmapjshnkw4qnrvimaaaimage.png" size="80" width="720" height="400" caption="Install Operating System message" position="center" showCaption="true"}
5. Select the partition to install, and then select **Ok**.
   The list is device-specific. Typically, the installation location is *sda*. If the device/gateway has embedded MMC (eMMC) components, the partition name may be listed as *mmcblk&#x20;*&#x69;nstead of *sda*. Make sure you select the correct hard-drive location.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/v2H4KZ6UWvp_IkfhiyG10_25-0oizj2isjura3lff6zrrimage.png" size="80" width="719" height="400" caption="Partition selection option" position="center" showCaption="true"}
6. Select **Yes&#xA0;**&#x74;o verify the OS installation location. If you selec&#x74;**&#xA0;No**, you return to the beginning of the installation.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UXBG6qqb1_30UuC-G7Dx4_26-r1tw9wawtgicjqiv276nimage.png" size="80" width="719" height="400" caption="Select Partition and Install message" position="center" showCaption="true"}
7. Select **Yes** to continue formatting the device and installing the operating system.
   The installer indicates its progress followed by a success message.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EkP6nk11UbkJL4g81ckBa_27-bdvxoumzyrintkn9s2y6yimage.png" size="80" width="720" height="400" caption="Format Devices and Install message" position="center" showCaption="true"}
8. After installation, the Terminal User Interface may display the following warning/error messages. These can be ignored.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xVGgGmSB5qFEuah90hA0T_29-ne7kjp5ak6bwcec4d62-qdoc454-screenshot-2.png "Warning/error messages")
9. Select **Yes** to power off the device.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zqc9QOlQ1ypEjRljni2Iy_30-e9ok6r03gmpmslrhgn4l5image.png" size="80" width="720" height="400" caption="Power Off message" position="center" showCaption="true"}

# Step 4: Run Litmus Edge on the Virtual Machine

Once the ISO file is successfully installed, you can run Litmus Edge on the virtual machine.&#x20;

**To run Litmus Edge on the virtual machine:**

1. You will need to remove the ISO file from the Optical drive. From the *Oracle VM VirtualBox Manager* window, select your VM on the left pane. On the right pane, click the **\[Optical Drive]** text in the *Storage&#xA0;*&#x73;ection.
   The selected file turns blue.
2. Right-click the file and deselect the ISO file.&#x20;
   The Optical Drive shows empty.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2l5RbfhMeAgnIG5ZL1Ieo_storagefile.png" size="80" width="1140" height="919" caption="Optical Drive settings" position="center" showCaption="true"}
3. In the *System* section, select **Boot Order**.&#x20;
4. Highlight **Hard Disk**, click the **Up&#xA0;**&#x61;rrow to move the Hard Disk to the top, and then click **OK**. The order should be Hard Disk, Optical, and Floppy.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nXiPAv1--cO-tNBaQFzAb_boot-order.png" size="80" width="1140" height="919" caption="Boot Order settings" position="center" showCaption="true"}
5. Click **Start**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Pe54p8g3-znr4AwMAxmep_startvm.png" size="80" width="1140" height="919" caption="Start VM" position="center" showCaption="true"}

During loading, the Terminal User Interface may display the following warning/error messages. These can be ignored.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5J-6KMWRWLIh4x301cCq2_33-i5ojuy6lnrqequ00ztydoc454-screenshot-3.png "Warning/error messages")

The VM starts up and the terminal window displays the URLs to be used to access the edge device through the Web UI. If several URLs are shown, use the first one.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JJVFrtma1Ce-ow2-N7VQL_image.png "URLs to access Web UI")

# Step 5: Log in to Litmus Edge

- See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;
- See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for instructions on how to navigate and log in for the first time.

# Troubleshooting

If you don't see an option for a 64-bit version and only see a 32-bit version, refer to [VirtualBox only Showing 32-bit and no 64-bit Versions](docId\:MBz6EGyBcBfkTvjvJCL_P).


[title] AB ControlLogix Unsolicited (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

Review the following information for setting up and configuring the AB ControlLogix Unsolicited (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                                                      |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                                                                                              |
| **Validated devices/series** | [ControlLogix](http://ab.rockwellautomation.com/)&#xA;[CompactLogix](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/small-controllers/compactlogix-family.html)<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter  | Value                              |
| ---------- | ---------------------------------- |
| **Type**   | Allen-Bradley                      |
| **Driver** | AB ControlLogix Unsolicited (Gen1) |
| **Port**   | 44818                              |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following tag parameters and available value types.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the case-sensitive register name exactly as it is defined in the PLC.

A **Connected** status for the device won't display until a tag with a correct register name is created.

## Available Value Types

- `bool`
- `sint`
- `int`
- `dint`
- `real`
- `lint`

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Danfoss FC/TSC
[path] QuickStart Guide/Industrial Systems Connection Guide/Danfoss/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

Review the following information for setting up and configuring the Danfoss FC/TSC driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                              |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                      |
| **Validated devices/series** | [Danfoss VLT AQUA Drive FC 202](https://www.danfoss.com/en/products/dds/low-voltage-drives/vlt-drives/vlt-aqua-drive-fc-202/) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                                    |
| ---------------------- | ---------------------------------------- |
| **Type**               | Danfoss                                  |
| **Driver**             | Danfoss FC/TSC                           |
| **Network Address**    | The device address you defined in Step 1 |
| **Network Port&#x20;** | 4000                                     |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------- |
| PNU      | Number, String  | DDDD               | 0               | 65535           | Parameters      |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Index**: Enter the index value. Index is used to access array parameters.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Zerotouch Installation
[path] QuickStart Guide/Installation and Deployments/

:::hint{type="info"}
**Note**: Zerotouch Installation is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Zerotouch provisioning allows you to pre-define a Litmus Edge configuration and use it to deploy edge devices on-site with no additional human input. This provides you an efficient and reliable strategy to install hundreds or thousands of edge devices. It also enables a simple experience for on-site users.&#x20;

There are three stages for zerotouch:

1. Prepare a bootable USB drive that can be used to install Litmus Edge. The USB drive includes the Litmus Edge installer and your custom zerotouch configurations.&#x20;
2. Use the USB drive within your production / assembly facility to install Litmus Edge on hundreds or thousands of edge devices. The zerotouch configurations will also be copied from the USB drive into the edge device. After installation, ship the edge devices to your users on-site.&#x20;
3. On-site users can boot up the edge device. Litmus Edge will start running, and the zerotouch configurations will be automatically applied.&#x20;

# Before You Begin

You will need the following:

- IMG file of the version of Litmus Edge you want to install. You can download it from the [Litmus Central portal](https://central.litmus.io/).
- The edge-zerotouch command-line interface (CLI) tool for generating zerotouch files.&#x20;
- A Linux computer for running the edge-zerotouch tool. Ubuntu 20.04 or above is recommended. It also needs Docker installed. Internet connection is also needed for signing.&#x20;
- A signing key, as an input into the edge-zerotouch tool, for signing the zerotouch files. You can request this key from customer support.
- A USB drive.

# Prepare USB installer with Zerotouch Configuration

Complete the following steps to prepare a bootable USB drive that will be used to install Litmus Edge. The USB drive includes the Litmus Edge installer and your custom zerotouch configurations.&#x20;

## Step 1: Create Bootable USB with Litmus Edge IMG File

Burn the Litmus Edge IMG file onto a USB drive that you will be using for the installation. You can use free tools like Balena Etcher and Rufus.

Later, you will copy the zerotouch files into the USB drive as well.&#x20;

## Step 2: Create Zerotouch Files

This step will help you to create the zerotouch files that will be used during installation.&#x20;

### Step 2a: Define Config File

You will need to create a config file to define all the docker applications that you would like to be installed on the edge device as part of the zerotouch provisioning process. The config file will be in JSON format.&#x20;

When creating the file, keep the following in mind:

- `run-cmd` allows you to define a "docker run" command for your application. The parameters `{{.ApiKey}}` and `{{.ImageName}}`, if defined, will be automatically populated at run time.&#x20;
- `{{.ApiKey}}`will be automatically populated with a REST API token of the Litmus Edge. This allows your application to access the Litmus Edge's REST API.&#x20;
- `{{.ImageName}}` will be automatically populated with the value defined for "name".&#x20;

Refer to the following sample file.&#x20;

```json
{
    "images" : [
        {
            "name" : "hello-world", 
            "run-cmd" : "docker run -e APIKEY={{.ApiKey}} {{.ImageName}}"
        },
        {
            "name" : "eclipse-mosquitto",
            "run-cmd" : "docker run -d -p 1883:1883 -p 9001:9001 -e APIKEY={{.ApiKey}} {{.ImageName}}"
        },  
        {
            "name" : "mongo",
            "run-cmd" : "docker run -d -e \"WebApi:ApiKey\"=\"{{.ApiKey}}\" {{.ImageName}}"
        }
    ]
  }
```

### Step 2b: Use Edge-zerotouch CLI Tool to Generate Zerotouch File

After creating the config file, you will use the edge-zerotouch tool to generate the zerotouch file. This zerotouch file will later be copied into the USB key to be used during the installation process.&#x20;

The edge-zerotouch tool needs to be run inside a Linux environment that has Docker installed and a connection to internet.&#x20;

**Command to Generate Zerotouch Archive**

```none
./edge-zerotouch-amd64-linux generate -cfg=files/cfg-sample.json -sign-key=${signing_apikey}
```

**Sample Output of Command**

:::BlockQuote
INFO\[02-14|23:06:27] using config file                     cfg=files/cfg-sample.json
INFO\[02-14|23:06:27] output directory is not specified&#x20;
INFO\[02-14|23:06:27] using output directory                output=/tmp/zerotouch
INFO\[02-14|23:06:40] Done!&#x20;
:::

**Sample Output of File and Directory Structure**

The final file will have the following format: `zerotouch-1.0.0.tar.gz`

The file is an archive that includes the docker images for your applications. It also includes a signature that will be used for authenticity verification during the installation process.&#x20;

Example of what's inside the archive:

:::BlockQuote
$ tree /tmp/zerotouch
/tmp/zerotouch
├── eclipse-mosquitto.tar
├── hello-world.tar
├── manifest.sig
├── manifest.yaml
└── mongo.tar
:::

## Step 3: Copy Zerotouch File into USB

Copy the file `zerotouch-1.0.0.tar.gz` into the USB drive under the folder `zerotouch_preboot`.

The USB drive is now ready to be used to install Litmus Edge on a device.&#x20;

# Install Litmus Edge from USB with Zerotouch Config

Within your production or assembly facility, use the USB drive (prepared above) to install Litmus Edge on hundreds or thousands of edge devices. The installer will also copy the custom zerotouch configurations from the USB drive into the edge device.&#x20;

After installation, the edge device is powered off and ready to be shipped for on-site deployment.

**To install Litmus Edge from the USB:**

1. Insert the USB drive into the device you want to install Litmus Edge.
2. Power on the device.
3. After the device initiates the installer, respond to the questions in the terminal user interface (TUI).
   `Welcome to Operating System Installer. Are you installing over Serial (for advanced users)? Yes/No :`
4. Enter `No`, and then press **ENTER**.
   The Zerotouch Preboot message displays.
5. Press **ENTER&#x20;**&#x66;or **Ok**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ClAD28DyO8QoF8qGtzOIA_screenmessage.png" size="80" width="838" height="213" caption="Zerotouch Preboot message" position="center" showCaption="true"}
6. Select **Install Operating System**, and then select **OK**.&#x20;

   Use the arrow keys to navigate to selections.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/395VPsfgtSOO8Z2ZuEU7V_main-menu.png" size="70" width="384" height="212" caption="Install Operating System option" position="center" showCaption="true"}
7. From the *Select Partition and Install&#x20;*&#x64;ialog box, select the correct installation location, navigate to **Ok**, and press **ENTER**.&#x20;
8. Confirm the selected location and select **Yes**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Z02XZxZZCPztVP2fOXYlu_confirm-location.png" size="70" width="332" height="182" caption="Confirm selected location" position="center" showCaption="true"}
9. Confirm that the selected device will be erased during the formatting process. Select **Yes**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/19JrUTwW0iNNU7J3mQz82_format-devices.png" size="70" width="526" height="170" position="center" caption="Warning message for installation" showCaption="true"}
10. Select **Yes&#x20;**&#x74;o power off the device.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MxaaYafOJp1Cpr2ba70I0_power-off.png "Power off notification")

The device is now ready to be shipped for deployment.

# On-site Bootup

At the site of deployment, you can boot up the Litmus Edge device.&#x20;

Litmus Edge will start running. The terminal window displays the URL that must be used to access the device using the Web UI. If several URLs are displayed, use the first one. See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for more information.&#x20;

On first boot, the zerotouch configurations will be automatically applied. The container applications specified in the zerotouch config will start running.&#x20;

:::hint{type="info"}
**Note**: After the first boot, any docker images and associated containers specified in the zerotouch configuration file may take some time to display in the Litmus Edge UI.&#x20;
:::


[title] Euromap63
[path] QuickStart Guide/Industrial Systems Connection Guide/

Euromap 63 is a standard that defines the data exchange with injection molding machines through files. Use the [Euromap63 (Gen1)](docId:9n8T8hyxY-5rf1NknMkvP) driver if your device supports Euromap 63.

[title] Software Updates
[path] QuickStart Guide/Installation and Deployments/

You have several options to upgrade Litmus Edge. If you need to download an updated version of Litmus Edge, visit the [Litmus Central portal](https://central.litmus.io/).&#x20;

The upgrade process preserves your data and existing configurations. After the Litmus Edge software has been installed on a device, this upgrade process can be used throughout the lifetime of the device.

# Important

- You can't downgrade a lower version.&#x20;
- If needed, you can upgrade to the same version you're currently on. For example, if your current version is 3.3.1, you can upload the 3.3.1 UPD file again to your Litmus Edge instance. &#x20;
- An upgrade to an internal pre-release version is possible, but contains a warning. Pre-release versions are not upgradeable.
- Creating a backup prior to upgrading is recommended.&#x20;
- You cannot upgrade if your controller is IDE. You must have a SATA controller to upgrade.
- Software upgrades haven’t been validated yet on VirtualBox 6.1.x. An upgrade attempt running on VirtualBox 6.1.x may result in a corrupted and unrecoverable Litmus Edge instance.
- If  you want the same edge device configuration and setup on a fresh installation or with an update, you can use a template. See [Templates](docId\:Me1x3I4rPT_IIgNPCY1GA) for more information.&#x20;

:::hint{type="warning"}
**Caution**: Software upgrades haven’t been validated yet on VirtualBox 6.1.x. An upgrade attempt running on VirtualBox 6.1.x may result in a corrupted and unrecoverable Litmus Edge instance.
:::

# Upgrade Paths

:::hint{type="warning"}
**Important**: Before upgrading, make sure to review the list of planned [Deprecated Drivers](docId\:x7F6RogWGUb9AiJkZ8aFr) so that you can migrate to any recommended replacement drivers.&#x20;
:::

Review the following information for the required upgrade path of Litmus Edge versions.&#x20;

## Simplified Upgrade Path

You can follow this simplified upgrade path:

3.2.3 > 3.2.8 > 3.2.11 > 3.2.12 > 3.5.6 > Latest version

For more detailed upgrade paths for specific versions of Litmus Edge, see below.&#x20;

## Specific Upgrade Paths

Refer to the table below for specific upgrade paths depending on your current version and the latest Litmus Edge version.&#x20;

| **Target version (right)**  | **3.11.5**                                       |
| --------------------------- | ------------------------------------------------ |
| **Current version (below)** |                                                  |
| **3.2.x**                   | 3.2.3 > 3.2.8 > 3.2.11 > 3.2.12 > 3.5.6 > 3.11.5 |
| **3.3.1**                   | 3.5.6 > 3.11.5                                   |
| **3.3.2**                   | 3.5.6 > 3.11.5                                   |
| **3.5.4**                   | 3.5.6 > 3.11.5                                   |
| **3.5.5**                   | 3.5.6 > 3.11.5                                   |
| **3.5.6**                   | 3.11.5                                           |
| **3.11.0**                  | 3.11.5                                           |
| **3.11.1**                  | 3.11.5                                           |
| **3.11.3**                  | 3.11.5                                           |
| **3.11.4**                  | 3.11.5                                           |

# Litmus Edge-Litmus Edge Manager Compatibility

Refer to the following table to review which versions of Litmus Edge and Litmus Edge Manager are compatible.&#x20;

| **Litmus Edge version (right)**         | **3.0.x** | **3.1.x** | **3.2.x** | **3.3.x** | **3.5.x** | **3.11.x** | **3.16.x** | **4.0.x** |
| --------------------------------------- | --------- | --------- | --------- | --------- | --------- | ---------- | ---------- | --------- |
| **Litmus Edge Manager version (below)** |           |           |           |           |           |            |            |           |
| **2.x**                                 | Yes       | Yes       | Yes       | Yes       | Yes       | Yes        | Yes        | Yes       |

# Upgrade Litmus Edge

You have three options for upgrading Litmus Edge.&#x20;

## Backup Checklist

For backup purposes, you can complete the following tasks before doing a software upgrade. All configurations and settings are maintained and carried over after upgrading to a new version.&#x20;

:::hint{type="info"}
**Note**: For Litmus Edge version 3.11.0 and later, you will need to download a backup before upgrading.&#x20;
:::

- [ ] Download all tags in a CSV file from **DeviceHub&#x20;**>**&#x20;Tags**. See ﻿[Manage Tags](docId\:G9ROOmPC3XZ4Zq6CbNONc).
- [ ] Download flows files from **Flows Manager**. See [Manage a Flows Manager](docId\:OPLiUxbWehjB1orbsnQe5).
- [ ] Export all flows from your **Analytics** groups. See ﻿[Manage Processors and Analytics Flows](docId\:exEMunifUlmNIucviFRsL) for more information.
- [ ] Export the OPC UA hierarchy configuration JSON file from the **OPC&#x20;**>**&#x20;Hierarchy** pane. See ﻿[Manage Nodes](docId\:e7jjD9hUJ7EO2WjBNhwiu) for more information.&#x20;
- [ ] Create a Template from the **Template** tab in **System&#x20;**> **Backup / Restore**. See the *Download a Template* section in [Manage Templates](docId\:Vge3AG1QmW9S7YJS7-2IB). &#x20;
- [ ] Create a support bundle from the **Support** section in **System&#x20;**>**&#x20;Support**. See [Support](docId\:b_UKFjBuLxq7q7liWxVkJ).
- [ ] Make a backup of your system from the **Backup / Restore Configuration** section in **Settings&#x20;**>**&#x20;Backup / Restore**. See ﻿[Back Up a Device](docId:2DmvdQMHuALT7NPXDmUeu). &#x20;

## Option 1: Upload Local File

This is the recommended upgrade method.&#x20;

### Before You Begin

- Verify the current software version running on Litmus Edge in **System** > **Info** under the *General&#x20;*&#x73;ection.
- Download the correct version of the UPD file you want to upgrade to from the [Central Portal](https://central.litmus.io/). If needed, review the *Upgrade Paths* section above.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OSHlEj20xPjHShZnVR79a_image.png" size="80" width="1046" height="520" position="center" caption="Litmus Edge software version" showCaption="true"}

### Upload a New Version of Litmus Edge Software

Once you have the correct UPD file, complete the following steps to upload it to your Litmus Edge instance.&#x20;

**To upload a new version of Litmus Edge:**

1. In Litmus Edge, navigate to **System&#x20;**> **Device Management**.
   The *Device Management* pane appears.
2. From th&#x65;*&#x20;Software Update* section, click **Upload File**.&#x20;
   For Litmus Edge version 3.3.1 and earlier, this button is in the *Manage&#x20;*&#x73;ection.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ju7tgwvSHPyGVazdpW_w7_upload-file-button.png" size="80" width="838" height="124" position="center" caption="Software Update section" showCaption="true"}
3. Select the UPD file and click **Open**.
4. Click **Ok**. For Litmus Edge version 3.11.0 and later, follow the prompts to download a backup before proceeding with the upgrade.&#x20;
   The software loads and installs. The progress of the upload will display. Once finished, the system reboots.
5. Once the system has restarted, close your browser and open the browser again.&#x20;
6. Clear your browser cache.&#x20;
7. Log in to Litmus Edge and navigate to **System > Info**. Verify the software version is the updated version.&#x20;

## Option 2: Upgrade Through Litmus Edge Manager

If you have access to Litmus Edge Manager, see the following for upgrading remotely:

- [Software Update](docId:2vCj2fF1K9z-dd9sCfn0O)
- [Add New Software Update Tasks](docId\:i24b2ShVA4EeOxUPftj_M)

## Option 3: Download Upgrade File

:::hint{type="info"}
**Note**: This option is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

If the two options above are not available, then you can download the upgrade file from a URL.&#x20;

### Before You Begin

Visit the [Central Portal](https://central.litmus.io/) to download the correct UPD file locally to your computer and get the Checksum value you will need. Then, upload the file to your preferred file storage service. You will use the URL to access the file when entering the *Download URL* in Litmus Edge.&#x20;

### Download the Upgrade File in Litmus Edge

**To download the upgrade file in Litmus Edge:**

1. In Litmus Edge, navigate to **System&#x20;**> **Device Management**.
   The *Device Management* pane appears.
2. In the *Software Update* section, click **Download from URL**.&#x20;
   The *Download Software Update* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZnYdkUidCkhbgVbBsdGfh_download-from-url-link.png" size="80" width="838" height="124" position="center" caption="Download from URL link" showCaption="true"}
3. Enter or paste the *Download URL* and *Checksum&#x20;*&#x76;alue in the required fields. Then, click **Start download**. When the download successfully completes, the file displays in the *Update Files* section.&#x20;
4. For the downloaded file, click **Update**. For Litmus Edge version 3.11.0 and later, follow the prompts to download a backup before proceeding with the upgrade.&#x20;


[title] Kubernetes Installation
[path] QuickStart Guide/Installation and Deployments/

You can use Kubernetes to install Litmus Edge. 

# Before you begin

- Get access to a configured Kubernetes cluster.
- Get access to PersistentVolumeClaim (PVC). Learn more about [Persistent Volumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) from the Kubernetes documentation.&#x20;
- Get administrative permissions to run the kubectl command-line tool.
- Contact your Litmus account representative to get access to the service account .json file.&#x20;
- Depending on the specific requirements of your environment, you may need to get access to a storage class. Learn more about [Storage Classes](https://kubernetes.io/docs/concepts/storage/storage-classes/) from the Kubernetes documentation.&#x20;

To use Kubernetes to install Litmus Edge, you will need to do the following:

- Step 1: Launch a Litmus Edge Kubernetes
- Step 2: Log in to Litmus Edge

# Step 1: Launch a Litmus Edge Kubernetes

**To launch a Litmus Edge Kubernetes:**

1\.  Download the service account .json file, which you can get from your Litmus account representative.&#x20;
2\. Open a Command Prompt Terminal (CTRL+R).
3\. Execute the following Linux commands to setup credentials for a Kubernetes namespace.

```linux
kubectl create namespace le-prod
```

The command creates a namespace named le-prod.

```linux
kubectl create secret --namespace le-prod docker-registry litmus-credential --docker-server=us-docker.pkg.dev --docker-username=_json_key --docker-password="$(cat ~/<file_name>.json)"
```

:::hint{type="warning"}
**Important:&#x20;**&#x49;f you encounter an error as shown in the screenshot below when using Windows PowerShell, make sure to follow these steps:

- The namespace has been created
- There are no spaces in the command
- Replace the double quotes with single quotes

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mqH3oynyDLSb3oMY1BVal_image.png)
:::

Refer to the command parameters:

- `kubectl` create secret sets a Secret for use with a Docker registry.
- `--namespace le-prod` sets up a Kubernetes namespace of le-prod.
- `docker-registry litmus-credential` sets up Secret name as litmus-credential. This should not be changed.
- `--docker-server=us-docker.pkg.dev` sets the Docker registry server as `us-docker.pkg.dev`. This should not be changed.
- `--docker-username=_json_key` sets the Docker registry username to connect to the server above. This should not be changed.
- `--docker-password="$(cat ~/<file_name>.json)"` retrieves the password within the service account file requested from step 1.

:::hint{type="info"}
**Note:** le-prod should be changed to an isolated namespace to suit deployment best.
:::

4\. Copy or download the following Litmus Edge deployment file.&#x20;

::File[]{src="https://archbee-doc-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nesQx5re9CzKv-9prW-kb_litmusedge-deployment.yaml" label="litmusedge-deployment.yaml" uploadAsPublic="false"}

```yaml
# Create ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
  name: litmusedge-docker
  namespace: le-prod
  labels:
    app.kubernetes.io/name: litmusedge-docker
    app.kubernetes.io/instance: litmusedge-instance
---
# Create PVC
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: litmusedge-data
  namespace: le-prod
  labels:
    app.kubernetes.io/name: litmusedge-docker
    app.kubernetes.io/instance: litmusedge-instance
spec:
  accessModes:
    - "ReadWriteOnce"
  resources:
    requests:
      storage: "10G"
---
# Create Service
apiVersion: v1
kind: Service
metadata:
  name: litmusedge-docker
  namespace: le-prod
  labels:
    app.kubernetes.io/name: litmusedge-docker
    app.kubernetes.io/instance: litmusedge-instance
spec:
  type: ClusterIP
  ports:
    - port: 443
      targetPort: https
      protocol: TCP
      name: https
  selector:
    app.kubernetes.io/name: litmusedge-docker
    app.kubernetes.io/instance: litmusedge-instance
---
# Create Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: litmusedge-docker
  namespace: le-prod
  labels:
    app.kubernetes.io/name: litmusedge-docker
    app.kubernetes.io/instance: litmusedge-instance
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: litmusedge-docker
      app.kubernetes.io/instance: litmusedge-instance
  template:
    metadata:
      labels:
        app.kubernetes.io/name: litmusedge-docker
        app.kubernetes.io/instance: litmusedge-instance
    spec:
      serviceAccountName: litmusedge-docker
      securityContext:
        {}
      imagePullSecrets:
        - name: litmus-credential
      containers:
        - name: litmusedge-docker
          securityContext:
            capabilities:
              add:
              - NET_ADMIN
          image: "us-docker.pkg.dev/litmus-sales-enablement/litmusedge/litmusedge-std-docker:latest"
          imagePullPolicy: IfNotPresent
          ports:
            - name: https
              containerPort: 443
              protocol: TCP
          volumeMounts:
            - mountPath: /var
              mountPropagation: 
              name: litmusedge-data
              subPath: 
              subPathExpr: 
          resources:
            requests:
              cpu: 1
              memory: 1024Mi
            limits:
              cpu: 4
              memory: 4096Mi
      volumes:
        - name: litmusedge-data
          persistentVolumeClaim:
            claimName: litmusedge-data
```

5\. Execute the following command to deploy a Litmus Edge Kubernetes cluster using the deployment file from Step 4.

```linux
kubectl apply -f litmusedge-deployment.yaml --namespace le-prod
```

Refer to the command parameters:

- `-f litmusedge-deployment.yaml` uses the file litmusedge-deployment.yaml for deployment. This should not be changed.
- `--namespace le-prod` sets` le-prod` to be the deployment that Kubernetes will use.

Special and Additional Considerations:

- Litmus Edge can function in both single and multi Kubernetes node clusters, and can support various networking modes. Your Kubernetes admin has the responsibility to configure proper networking.​​
- Adjust CPU/RAM/Storage for the Kubernetes cluster as needed. Storage should be set to at least 10GB. Scale additional computing resources when using Litmus Edge features that require high-computing power, such as PLC drivers, integrations, and Flows.
- Consult [Kubernetes official documentation](https://kubernetes.io/docs/home/) for best practices.
- Ensure credentials are stored properly with Kubernetes management​.
- `NET_ADMIN` permissions are required​.

# Step 2: Log in to Litmus Edge

- See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;
- See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for instructions on how to navigate and log in for the first time.

:::hint{type="info"}
**Note:** To identify the port configured by the admin, use the following command: `kubectl get svc -n le-prod`
:::


[title] FB107 Ethernet
[path] QuickStart Guide/Industrial Systems Connection Guide/Emerson/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

Review the following information for setting up and configuring the FB107 Ethernet driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                       |
| ---------------------------- | -------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                               |
| **Validated devices/series** | [FloBoss™ 107 Flow Manager](https://www.emerson.com/en-us/catalog/emerson-floboss-107) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                                    |
| ---------------------- | ---------------------------------------- |
| **Type**               | Emerson                                  |
| **Driver**             | FB107 Ethernet                           |
| **Network Address**    | The device address you defined in Step 1 |
| **Network Port&#x20;** | 4000                                     |
| **Operator ID**        | LOI                                      |
| **Password**           | Enter your password                      |
| **Device Address**     | 240                                      |
| **Device Group**       | 240                                      |
| **Host Address**       | 239                                      |
| **Host Group**         | 1                                        |
| **Next Request Delay** | 0                                        |
| **Response Timeout**   | 3000                                     |
| **Optimizations**      | Disable or Enable                        |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following register table and tag parameters. You can also [Search for Pre-defined Device Tags](docId\:W1Est_A3MIDOUIZrkSgvi) for the device.&#x20;

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types**                                                                                                    |
| -------- | ------------------------------------------------------------------------------------------------------------------ |
| OP       | JSON, HEX                                                                                                          |
| PT       | HEX, AC3, AC7, AC10, AC12, AC20, AC30, AC40, INT8, INT16, INT32, UINT8, UINT16, UINT32, FL, DOUBLE, TLP, TIME, DT6 |
| History  | JSON                                                                                                               |
| Alarms   | JSON                                                                                                               |
| Events   | JSON                                                                                                               |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Opcode**: Select the Opcode to use. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::

## Supported Opcodes

- 0 - Obtain a general update of the current state for the physical input/output (I/O) points and the standard application-oriented points
- 6 - System Configuration
- 7 - Read Real-time Clock
- 8 - Set Real-time Clock
- 17 - Set an operator identification code for the communications port through which communications are occurring
- 103 - Determine the current version of firmware residing in the ROC, as well as other device-specific information
- 120 - Send current pointers for the Alarm and Event Logs
- 121 - Request alarm data from the Alarm Log in the ROC
- 122 - Request up to 10 events from the Event Log in the ROC
- 123 - Read User Template Data. Up to seven template parameters may be requested.
- 126 - Request the ROC unit’s minute data for a specified history point
- 130 - Request a specified number of hourly or daily data values for a specified history point
- 167 - Request Single Point Parameters
- 180 - Request Parameters
- 181 - Write Parameters

## Supported Point Types

- 0-5
- 8
- 12-17
- 19-23
- 25-28
- 43-48
- 55
- 80
- 86
- 88
- 89
- 93
- 94
- 98
- 117
- 118
- 120
- 121
- 122


[title] AB CompactLogix Ethernet Advanced
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 2 Drivers/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Review the following information for setting up and configuring the AB CompactLogix Ethernet Advanced driver.&#x20;

# Overview

This driver can be used for better performance. Multiple tags that belong to the same polling cycle can be read in a single request/response.

:::hint{type="info"}
**Notes**:&#x20;

- The maximum-length custom string that the driver can read as a string is 480 characters.&#x20;
- This driver provides faster performance over other compatible drivers. If you prefer stability over speed, you can use [AB CompactLogix Ethernet FreeTag](docId\:RnJtfL6l5lXb52iFF6QJm).&#x20;
:::

The driver implements two modes: Symbolic and CompactLogix.&#x20;

## Symbolic Mode

In Symbolic mode, the driver supports both CompactLogix and ControlLogix connections. This mode makes tag grouping more efficient compared to the standard driver by trying to combine as many tags as possible but not exceeding the maximum transmission unit (MTU) size for both requests and responses. Compared to CompactLogix mode, it performs better when dealing with PLC changes.&#x20;

## CompactLogix Mode

In CompactLogix mode, only CompactLogix connections are possible. The driver uses numeric handles instead of symbolic names. Usually this allows the reading of more tags per single request compared to Symbolic mode, especially if symbolic names are quite long. Compared to Symbolic mode, it performs better overall without taking into account PLC changes.&#x20;

## PLC Changes

The driver does not detect PLC program changes. Structure templates are read once when a connection is established. If the PLC program is changed, you need to restart the connection.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Validated devices/series** | [CompactLogix](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/small-controllers/compactlogix-family.html)&#xD;&#xA;[ControlLogix](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/large-controllers/controllogix.html)<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Allen-Bradley                            |
| **Driver**          | AB CompactLogix Ethernet Advanced        |
| **Network Address** | The device address you defined in Step 1 |
| **Network Port**    | 44818                                    |
| **Access Mode**     | Select Symbolic or CompactLogix          |
| **Slot Number**     | 0                                        |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following tag parameters and available value types.

You can also [Search for Pre-defined Device Tags](docId\:W1Est_A3MIDOUIZrkSgvi) for this device.&#x20;

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the register name exactly as it is defined in the PLC.



## Available Value Types

- `bool`
- `byte`
- `sint`
- `int`
- `dint`
- `real`
- `dword`
- `lint`
- `lreal`
- `string`

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] GE Fanuc CMM Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/GE Fanuc/

Review the following information for setting up and configuring the GE Fanuc CMM Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items      |
| ---------------------------- | --------------------- |
| **Driver type**              | Serial                |
| **Validated devices/series** | GE Fanuc Series 90-30 |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

Refer to the following device details:

- **Device**: GE Fanuc IC693CPU363
- **Device type** (driver: GE SNP-X (GE CMM)
- **I/F**: RS485 4W (RS232)

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | GE Fanuc                          |
| **Driver**             | GE Fanuc CMM Serial (Gen1)        |
| **Communication Port** | Local Serial connection file path |
| **Baud Rate**          | 19200                             |
| **Data Bits**          | 8                                 |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**        |
| -------- | --------------- | ------------------ | --------------- | --------------- | ---------------------- |
| I        | bit             | DDDDD              | 1               | 10000           | Input Relay            |
| Q        | bit             | DDDDD              | 1               | 10000           | Output Relay           |
| M        | bit             | DDDDD              | 1               | 10000           | Auxiliary Relay        |
| G        | bit             | DDDD               | 1               | 7680            |                        |
| T        | bit             | DDD                | 1               | 256             |                        |
| SA       | bit             | DDD                | 1               | 128             |                        |
| SB       | bit             | DDD                | 1               | 128             |                        |
| SC       | bit             | DDD                | 1               | 128             |                        |
| S        | bit             | DDD                | 1               | 128             |                        |
| R        | word            | DDDDD              | 1               | 32640           | Data Register          |
| AQ       | word            | DDDDD              | 1               | 10000           | Analog output register |
| AI       | word            | DDDDD              | 1               | 10000           | Analog input register  |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Brother TC Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Brother Industries Ltd/

Review the following information for setting up and configuring the Brother TC Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                    |
| ---------------------------- | ------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                            |
| **Validated devices/series** | [TC-R2B](https://machinetool.global.brother/en-ap/tcr2b/index.aspx) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Brother Industries Ltd                   |
| **Driver**          | Brother TC Ethernet (Gen1)               |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 10000                                    |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**                                       | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                               |
| ---------------------------------------------- | --------------- | ------------------ | --------------- | --------------- | --------------------------------------------- |
| WKCNTR\_A\_Count                               | number          | D                  | 0               | 4               | WKCETR-A-Count                                |
| WKCNTR\_A\_Current value                       | number          | D                  | 0               | 4               | WKCNTR-A-Current value                        |
| WKCNTR\_A\_Target value                        | number          | D                  | 0               | 4               | WKCNTR-A-Target value                         |
| WKCNTR\_A\_End signal value                    | number          | D                  | 0               | 4               | WKCNTR-A-End signal value                     |
| WKCNTR\_B\_Count                               | number          | D                  | 0               | 4               | WKCNTR-B-Count                                |
| WKCNTR-B-Current value                         | number          | D                  | 0               | 4               | WKCNTR-B-Current value                        |
| WKCNTR\_B\_Target value                        | number          | D                  | 0               | 4               | WKCNTR-B-Target value                         |
| WKCNTR\_B\_End signal value                    | number          | D                  | 0               | 4               | WKCNTR-B-End signal value                     |
| TOLNM\_T\_Initial tool life / End of tool life | number          | BDD                | 0               | 999             | TOLNM-T\_Initial tool life / End of tool life |
| TOLNM\_T\_Tool life                            | number          | BDD                | 0               | 999             | TOLNM-T-Tool life                             |
| ALARM\_E\_Alarm/Operator                       | number          | D                  | 0               | 18              | ALARM-E-Alarm/Operator                        |
| MEM\_A\_Operation state                        | number          | D                  | 1               | 1               | MEM-A-Oeration state                          |
| MEM\_A\_mode                                   | number          | D                  | 1               | 1               | MEM-A-Mode                                    |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Fanuc CNC Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Fanuc Corporation/

Review the following information for setting up and configuring the Fanuc CNC Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                        |
| ---------------------------- | --------------------------------------- |
| **Driver type**              | Ethernet                                |
| **Validated devices/series** | Any PLC model that supports FANUC FOCAS |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

Review the following parameters for the PLC Configuration.

**Supported Data Types**

Refer to the following supported data types by Fanuc and Litmus Edge. Below is for the Fanuc PMC (Programmable Machine Control).

Fanuc Macro variables support the FLOAT data type.

**Table 1**

| **Data Type** | **Size** |
| ------------- | -------- |
| BYTE          | 1 byte   |
| WORD          | 2 bytes  |

**Table 2**

| **Signed Value** | **Data Type** | **Size** |
| ---------------- | ------------- | -------- |
| INT8             | SINT          | 1 byte   |
| INT16            | INT           | 2 bytes  |
| INT32            | DINT          | 4 bytes  |

**Table 3**

| **Unsigned Value** | **Data Type** | **Size** |
| ------------------ | ------------- | -------- |
| UINT8              | USINT         | 1 byte   |
| UINT16             | UINT          | 2 bytes  |
| UINT32             | UDINT         | 4 bytes  |

The Fanuc PMC System is the interface between the Fanuc CNC and the machine tool. For information on the PMC system, visit the [Fanuc Corporation website](https://www.fanucamerica.com/fanuc-america-product-support/fanuc-product-training/cnc-robodrill-training/online-cnc-training-2018/fanuc-pmc-training-online).

**RDPMC Tags**

RDPMC tags provide all information about the **Address Type**, the **Address Number** to read data from, and **Size** within the tag itself.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rp4b-YEbLXAoBUPp-mjoo_image.png" size="80" width="501" height="289" caption="Address types" position="center" showCaption="true"}

**Example of an RDPMC Tag**

| **Tag**            | **Address Type** | **Address Number** | **Size** |
| ------------------ | ---------------- | ------------------ | -------- |
| Rdpmc \[9\_746\_2] | D                | 746                | 4 bytes  |

In the previous example, 9 refers to an address type listed in the image, 746 is the address number to read data from, and 2 means that the data is four bytes long.

## Configure Device

Refer to the following configurations if the device doesn't connect right away.&#x20;

**To configure the device:**

1. Note down the following information and refer to it when needed. ****
   **Device**: Fanuc 0i-F****
   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fwoBsmtOAexVXak7alS2T_01fanuc-cnc-ethernet.png" size="80" width="471" height="545" caption="Fanuc CNC Ethernet reference" position="center" showCaption="true"}
2. Press **Soft key** five times to set up the IP Address.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fwvMVtQf330-iyRTm01Vq_02fanuc-cnc-ethernet-ip482x338.png" size="80" width="482" height="338" caption="IP Address set up screen" position="center" showCaption="true"}
3. Press the Soft key **Embed Port&#xA0;**&#x74;o set up the network parameters, and then press the Soft key **OPRT**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LPmF1PLNNS_a0oZ7-ByJM_03fanuc-cnc-ethernet-ip482x338.png" size="80" width="535" height="386" caption="Set up network parameters screen" position="center" showCaption="true"}
4. Press the Soft key **Restart&#xA0;**&#x74;o activate the settings.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TBGmJBCz6DUz3H9rvKBj2_04fanuc-cnc-ethernet-settings.png" size="80" width="624" height="372" caption="Activate settings screen [1]" position="center" showCaption="true"}
5. Press the Soft key **Execute&#xA0;**&#x74;o activate the settings.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OdVxfjpyDOFcc9_GS-9-R_05fanuc-cnc-ethernet-activate.png" size="80" width="624" height="392" caption="Activate settings screen [2]" position="center" showCaption="true"}
6. Press the Soft key two times to reach this page, and then press the Soft key **FOCAS2**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yKdznXawbByL6y0g2gJxp_06fanuc-cnc-ethernet-focas2.png" size="80" width="606" height="406" caption="FOCAS2 button reference" position="center" showCaption="true"}
7. Set up the port number, and then press the Soft key **OPRT**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ccr3yWUc7OHaoNw4yGRI__07fanuc-cnc-ethernet-port.png" size="80" width="695" height="421" caption="Port setup screen" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Fanuc Corporation                        |
| **Driver**          | Fanuc CNC Ethernet (Gen1)                |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 8191                                     |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

Refer to the appropriate register table depending on your version of Litmus Edge.&#x20;

### Register Table for Litmus Edge Version 3.11.4 and Earlier

| **Name**               | **Value Types**                | **Address Format** | **Min Address** | **Max Address** | **Description**                                                                                           |
| ---------------------- | ------------------------------ | ------------------ | --------------- | --------------- | --------------------------------------------------------------------------------------------------------- |
| G\_Bit                 | bit                            | DDDDo              | 0               | 999977          |                                                                                                           |
| F\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                           |
| Y\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                           |
| X\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                           |
| A\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                           |
| R\_Bit                 | bit                            | DDDDDo             | 0               | 599997          |                                                                                                           |
| T\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                           |
| K\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                           |
| C\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                           |
| D\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                           |
| E\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                           |
| G                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                           |
| F                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                           |
| Y                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                           |
| X                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                           |
| A                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                           |
| R                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 59999           |                                                                                                           |
| T                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                           |
| K                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                           |
| C                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                           |
| D                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                           |
| E                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                           |
| cnc\_absolute          | dint                           | D                  | 1               | 8               |                                                                                                           |
| cnc\_absolute2         | dint                           | D                  | 1               | 8               |                                                                                                           |
| cnc\_machine           | dint                           | D                  | 1               | 8               |                                                                                                           |
| cnc\_relative          | dint                           | D                  | 1               | 8               |                                                                                                           |
| cnc\_distance          | dint                           | D                  | 1               | 8               |                                                                                                           |
| cnc\_acts              | dint                           | D                  | 0               | 0               |                                                                                                           |
| cnc\_acts2             | dint                           | D                  | 1               | 8               |                                                                                                           |
| cnc\_actf              | dint                           | DDDD               | 0               | 0               |                                                                                                           |
| cnc\_rdmacror          | float                          | DDDD               | 1               | 9999            |                                                                                                           |
| cnc\_rdtoolrng\_number | dint                           | DDDD               | 0               | 9999            |                                                                                                           |
| cnc\_rdtoolrng\_life   | dint                           | DDDD               | 0               | 9999            |                                                                                                           |
| cnc\_rdtoolrng\_count  | dint                           | DDDD               | 0               | 9999            |                                                                                                           |
| cnc\_rdparam           | sint,int,float                 | DDDDDDD            | 0               | 9999947         | Address consist of 2 parts. last 2 numbers are axis.                                                      |
| cnc\_rdparam3          | sint,int,float                 | TDDDDDDD           | 0               | 19999947        | Address consists of 3 parts; last 2 number are axis, T:0 Relative axis, 1 Absolute axis.                  |
| cnc\_rdalmmsg          | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdalmmsg2         | alarm                          | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdalminfo         | alarmInfo                      | D                  | 0               | 19              |                                                                                                           |
| cnc\_statinfo          | statinfo                       | D                  | 0               | 0               |                                                                                                           |
| cnc\_statinfo2         | statinfo                       | D                  | 0               | 0               |                                                                                                           |
| cnc\_gettimer\_date    | date                           | D                  | 0               | 0               |                                                                                                           |
| cnc\_gettimer-time     | time                           | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdtpfsr           | dint                           | TDDDD              | 0               | 19999           | T 0: Machining Mode, 1: Lathe mode                                                                        |
| cnc\_rdsvmeter         | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdspmeter\_meter  | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdspmeter\_speed  | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_exeprgname        | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdseqnum          | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdblkcount        | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdopnlsgnl        | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_sysinfo           | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_sysinfo\_ex       | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_alarm             | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_alarm2            | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdposition        | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdtofsinfo        | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdtofsinfo2       | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_tofs\_mge         | custom                         | TTTDDDD            | 0               | 1029999         |                                                                                                           |
| cnc\_rdparainfo        | custom                         | DDDD               | 0               | 9999            |                                                                                                           |
| cnc\_rdparainfo3       | custom                         | DDDD               | 0               | 9999            |                                                                                                           |
| cnc\_rdactfixofs       | custom                         | DD                 | 1               | 48              |                                                                                                           |
| pmc\_rdpmcinfo         | custom                         | DD                 | 0               | 99              |                                                                                                           |
| pmc\_getdtailerr       | custom                         | D                  | 0               | 0               |                                                                                                           |
| pmc-rdalmmsg           | custom                         | DD                 | 1               | 99              |                                                                                                           |
| cnc\_diagnoss          | sint,int,float                 | DDDDDDD            | 0               | 9999947         |                                                                                                           |
| cnc\_diagnosr          | sint,int,float                 | DDDDDDD            | 0               | 9999947         | Address consist of 2 parts. last 2 numbers are axus,                                                      |
| cnc\_rddiaginfo        | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rdopmsg           | custom                         | D                  | 0               | 9               |                                                                                                           |
| cnc\_rdopmsg2          | custom                         | D                  | 0               | 9               |                                                                                                           |
| cnc\_rdopmsg3          | custom                         | D                  | -1              | 9               |                                                                                                           |
| cnc\_rdspcss           | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdspeed           | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdspload          | custom                         | DD                 | 0               | 99              |                                                                                                           |
| cnc\_rdspmaxrpm        | custom                         | DD                 | 0               | 99              |                                                                                                           |
| cnc\_rdspgear          | custom                         | DD                 | 0               | 999             |                                                                                                           |
| cnc\_rdgrpid2          | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rdngrp            | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdntool           | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rdlife            | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rdcount           | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rd1length         | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                             |
| cnc\_rd2length         | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                             |
| cnc\_rd1radius         | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                             |
| cnc\_rd2radius         | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                             |
| cnc\_t1info            | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                             |
| cnc\_t2info            | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                             |
| cnc\_toolnum           | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                             |
| cnc\_rdtoolgrp         | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rdtoolgrp         | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdusegrpid        | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdmaxgrp          | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdmaxtool         | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdusetlno         | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rd1tlifedata      | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                             |
| cnc\_rd1tlifedat2      | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                             |
| cnc\_rd2tlifedata      | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                             |
| cnc\_rdgrpinfo         | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rdgrpinfo2        | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rdgrpinfo3        | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rdgrpinfo4        | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rdtinfo           | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdtlusegrp        | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdtlgrp           | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rdtltool          | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                             |
| cnc\_rdexchgtgrp       | custom                         | DDDDD              | 0               | 99999           |                                                                                                           |
| cnc\_rdtlgeomsize\_ext | custom                         | DDDDDD             | 0               | 199999          | Address consist of 2 parts. first 1 numbers are coordinate.                                               |
| cnc\_rdzofs<br />      | dint                           | DDDdd              | 0               | 99948           | Address consist of 2 parts. first 3 numbers are offset number, second 2 numbers are axis.                 |
| cnc\_rdzofsinfo<br />  | dint                           | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdfixofs<br />    | dint                           | Ddd                | 101             | 848             | Address consist of 2 parts. first 1 numbers are c fixture offset number.                                  |
| cnc\_rdintchk          | dint                           | DDDDd              | 0               | 99997           | Address consist of 2 parts. first 4 numbers are check data number, second 1 number is type of coordinate. |
| cnc\_rdwkcdshft        | dint                           | DD                 | 1               | 48              |                                                                                                           |
| cnc\_rdwkcdsfms        | dint                           | DD                 | 1               | 48              |                                                                                                           |
| cnc\_wksft\_rnge       | custom                         | DD                 | 1               | 48              |                                                                                                           |
| cnc\_dtsvcnclupdn      | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_dtsvgetdncpg      | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rddncfname        | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rddsdncfile       | custom                         | D                  | 0               | 1               | 0: DATA SERVER, 1: DATA SERVER Host&#xD;                                                                  |
| cnc\_dsftpstat         | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_dsftpcancel       | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdloopgain        | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdcurrent         | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdsrvspeed        | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdnspdl           | dint                           | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdopmode          | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdposerrs         | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_loadtorq          | short                          | Ddd                | 0               | 147             | D 1: Spindle motor, 0: Servo motor, dd: Axis                                                              |
| cnc\_rddiag\_ext       | custom                         | DDDD               | 0               | 9999            | DDDD: Specify the pointer to the array of the diagnosis data numbers.                                     |
| cnc\_getpath           | dint                           | D                  | 0               | 0               |                                                                                                           |
| cnc\_sysconfig         | custom                         | D                  | 0               | 0               | Reads the CNC system configuration information.                                                           |
| cnc\_rdmenuswitch      | dint                           | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdradofs          | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdlenofs          | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdfixcycle        | customcustom                   | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdcdrotate        | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rd3dcdcnv         | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdmirimage        | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdscaling         | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rd3dtofs          | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdposofs          | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdaxisdata        | custom                         | Dd                 | 10              | 59              | D: class of data, d: type                                                                                 |
| cnc\_skip              | custom                         | DD                 | 1               | 48              | DD: axis                                                                                                  |
| cnc\_srvdelay          | custom                         | DD                 | 1               | 48              | DD: axis                                                                                                  |
| cnc\_accdecdly         | custom                         | DD                 | 1               | 48              | DD: axis                                                                                                  |
| cnc\_rdmovrlap         | custom                         | DD                 | 1               | 48              | DD: axis                                                                                                  |
| cnc\_canmovrlap        | custom                         | DD                 | 1               | 48              | DD: axis                                                                                                  |
| cnc\_rdhndintrpt       | custom                         | D                  | 0               | 1               | 0: input unit, 1: output unit                                                                             |
| cnc\_rd3dtooltip&#xD;  | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rd3dpulse         | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rd3dmovrlap       | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rd3dofschg        | dint                           | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdunsolicprm      | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdunsolicprm2     | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdunsolicmsg      | custom                         | D                  | 0               | 0               |                                                                                                           |
| cnc\_rdunsolicmsg2     | custom                         | D                  | 0               | 0               |                                                                                                           |

### Register Table for Litmus Edge Version 3.11.5

| **Name**               | **Value Types**                | **Address Format** | **Min Address** | **Max Address** | **Description**                                                                                                                                                                                                         |
| ---------------------- | ------------------------------ | ------------------ | --------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| G\_Bit                 | bit                            | DDDDo              | 0               | 999977          |                                                                                                                                                                                                                         |
| F\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                                                                                                                                         |
| Y\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                                                                                                                                         |
| X\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                                                                                                                                         |
| A\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                                                                                                                                         |
| R\_Bit                 | bit                            | DDDDDo             | 0               | 599997          |                                                                                                                                                                                                                         |
| T\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                                                                                                                                         |
| K\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                                                                                                                                         |
| C\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                                                                                                                                         |
| D\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                                                                                                                                         |
| E\_Bit                 | bit                            | DDDDo              | 0               | 99997           |                                                                                                                                                                                                                         |
| G                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| F                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| Y                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| X                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| A                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| R                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 59999           |                                                                                                                                                                                                                         |
| T                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| K                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| C                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| D                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| E                      | usint,sint,int,uint,dint,udint | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| cnc\_absolute          | dint                           | D                  | 1               | 8               |                                                                                                                                                                                                                         |
| cnc\_absolute2         | dint                           | D                  | 1               | 8               |                                                                                                                                                                                                                         |
| cnc\_machine           | dint                           | D                  | 1               | 8               |                                                                                                                                                                                                                         |
| cnc\_relative          | dint                           | D                  | 1               | 8               |                                                                                                                                                                                                                         |
| cnc\_distance          | dint                           | D                  | 1               | 8               |                                                                                                                                                                                                                         |
| cnc\_acts              | dint                           | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_acts2             | dint                           | D                  | 1               | 8               |                                                                                                                                                                                                                         |
| cnc\_actf              | dint                           | DDDD               | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdmacror          | float                          | DDDD               | 1               | 9999            |                                                                                                                                                                                                                         |
| cnc\_rdtoolrng\_number | dint                           | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| cnc\_rdtoolrng\_life   | dint                           | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| cnc\_rdtoolrng\_count  | dint                           | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| cnc\_rdparam           | sint,int,float                 | DDDDDDD            | 0               | 9999947         | Address consist of 2 parts. last 2 numbers are axis.                                                                                                                                                                    |
| cnc\_rdparam3          | sint,int,float                 | TDDDDDDD           | 0               | 19999947        | Address consists of 3 parts; last 2 number are axis, T:0 Relative axis, 1 Absolute axis.                                                                                                                                |
| cnc\_rdalmmsg          | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdalmmsg2         | alarm                          | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdalminfo         | alarmInfo                      | D                  | 0               | 19              |                                                                                                                                                                                                                         |
| cnc\_statinfo          | statinfo                       | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_statinfo2         | statinfo                       | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_gettimer\_date    | date                           | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_gettimer-time     | time                           | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdtpfsr           | dint                           | TDDDD              | 0               | 19999           | T 0: Machining Mode, 1: Lathe mode                                                                                                                                                                                      |
| cnc\_rdsvmeter         | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdspmeter\_meter  | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdspmeter\_speed  | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_exeprgname        | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdseqnum          | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdblkcount        | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdopnlsgnl        | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_sysinfo           | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_sysinfo\_ex       | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_alarm             | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_alarm2            | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdposition        | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdtofsinfo        | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdtofsinfo2       | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_tofs\_mge         | custom                         | TTTDDDD            | 0               | 1029999         |                                                                                                                                                                                                                         |
| cnc\_rdparainfo        | custom                         | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| cnc\_rdparainfo3       | custom                         | DDDD               | 0               | 9999            |                                                                                                                                                                                                                         |
| cnc\_rdactfixofs       | custom                         | DD                 | 1               | 48              |                                                                                                                                                                                                                         |
| pmc\_rdpmcinfo         | custom                         | DD                 | 0               | 99              |                                                                                                                                                                                                                         |
| pmc\_getdtailerr       | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| pmc-rdalmmsg           | custom                         | DD                 | 1               | 99              |                                                                                                                                                                                                                         |
| cnc\_diagnoss          | sint,int,float                 | DDDDDDD            | 0               | 9999947         |                                                                                                                                                                                                                         |
| cnc\_diagnosr          | sint,int,float                 | DDDDDDD            | 0               | 9999947         | Address consist of 2 parts. last 2 numbers are axus,                                                                                                                                                                    |
| cnc\_rddiaginfo        | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rdopmsg           | custom                         | D                  | 0               | 9               |                                                                                                                                                                                                                         |
| cnc\_rdopmsg2          | custom                         | D                  | 0               | 9               |                                                                                                                                                                                                                         |
| cnc\_rdopmsg3          | custom                         | D                  | -1              | 9               |                                                                                                                                                                                                                         |
| cnc\_rdspcss           | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdspeed           | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdspload          | custom                         | DD                 | 0               | 99              |                                                                                                                                                                                                                         |
| cnc\_rdspmaxrpm        | custom                         | DD                 | 0               | 99              |                                                                                                                                                                                                                         |
| cnc\_rdspgear          | custom                         | DD                 | 0               | 999             |                                                                                                                                                                                                                         |
| cnc\_rdgrpid2          | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rdngrp            | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdntool           | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rdlife            | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rdcount           | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rd1length         | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                                                                                                                                           |
| cnc\_rd2length         | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                                                                                                                                           |
| cnc\_rd1radius         | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                                                                                                                                           |
| cnc\_rd2radius         | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                                                                                                                                           |
| cnc\_t1info            | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                                                                                                                                           |
| cnc\_t2info            | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                                                                                                                                           |
| cnc\_toolnum           | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                                                                                                                                           |
| cnc\_rdtoolgrp         | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rdtoolgrp         | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdusegrpid        | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdmaxgrp          | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdmaxtool         | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdusetlno         | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rd1tlifedata      | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                                                                                                                                           |
| cnc\_rd1tlifedat2      | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                                                                                                                                           |
| cnc\_rd2tlifedata      | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                                                                                                                                           |
| cnc\_rdgrpinfo         | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rdgrpinfo2        | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rdgrpinfo3        | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rdgrpinfo4        | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rdtinfo           | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdtlusegrp        | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdtlgrp           | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rdtltool          | custom                         | TTTTTDDDDD         | 0               | 9999999999      | Address consist of 2 parts. first 5 numbers are group number.                                                                                                                                                           |
| cnc\_rdexchgtgrp       | custom                         | DDDDD              | 0               | 99999           |                                                                                                                                                                                                                         |
| cnc\_rdtlgeomsize\_ext | custom                         | DDDDDD             | 0               | 199999          | Address consist of 2 parts. first 1 numbers are coordinate.                                                                                                                                                             |
| cnc\_rdzofs<br />      | dint                           | DDDdd              | 0               | 99948           | Address consist of 2 parts. first 3 numbers are offset number, second 2 numbers are axis.                                                                                                                               |
| cnc\_rdzofsinfo<br />  | dint                           | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdfixofs<br />    | dint                           | Ddd                | 101             | 848             | Address consist of 2 parts. first 1 numbers are c fixture offset number.                                                                                                                                                |
| cnc\_rdintchk          | dint                           | DDDDd              | 0               | 99997           | Address consist of 2 parts. first 4 numbers are check data number, second 1 number is type of coordinate.                                                                                                               |
| cnc\_rdwkcdshft        | dint                           | DD                 | 1               | 48              |                                                                                                                                                                                                                         |
| cnc\_rdwkcdsfms        | dint                           | DD                 | 1               | 48              |                                                                                                                                                                                                                         |
| cnc\_wksft\_rnge       | custom                         | DD                 | 1               | 48              |                                                                                                                                                                                                                         |
| cnc\_dtsvcnclupdn      | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_dtsvgetdncpg      | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rddncfname        | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rddsdncfile       | custom                         | D                  | 0               | 1               | 0: DATA SERVER, 1: DATA SERVER Host&#xD;                                                                                                                                                                                |
| cnc\_dsftpstat         | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_dsftpcancel       | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdloopgain        | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdcurrent         | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdsrvspeed        | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdnspdl           | dint                           | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdopmode          | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdposerrs         | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_loadtorq          | short                          | Ddd                | 0               | 147             | D 1: Spindle motor, 0: Servo motor, dd: Axis                                                                                                                                                                            |
| cnc\_rddiag\_ext       | custom                         | DDDD               | 0               | 9999            | DDDD: Specify the pointer to the array of the diagnosis data numbers.                                                                                                                                                   |
| cnc\_getpath           | dint                           | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_sysconfig         | custom                         | D                  | 0               | 0               | Reads the CNC system configuration information.                                                                                                                                                                         |
| cnc\_rdmenuswitch      | dint                           | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdradofs          | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdlenofs          | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdfixcycle        | customcustom                   | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdcdrotate        | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rd3dcdcnv         | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdmirimage        | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdscaling         | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rd3dtofs          | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdposofs          | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdaxisdata        | custom                         | Dd                 | 10              | 59              | D: class of data, d: type                                                                                                                                                                                               |
| cnc\_skip              | custom                         | DD                 | 1               | 48              | DD: axis                                                                                                                                                                                                                |
| cnc\_srvdelay          | custom                         | DD                 | 1               | 48              | DD: axis                                                                                                                                                                                                                |
| cnc\_accdecdly         | custom                         | DD                 | 1               | 48              | DD: axis                                                                                                                                                                                                                |
| cnc\_rdmovrlap         | custom                         | DD                 | 1               | 48              | DD: axis                                                                                                                                                                                                                |
| cnc\_canmovrlap        | custom                         | DD                 | 1               | 48              | DD: axis                                                                                                                                                                                                                |
| cnc\_rdhndintrpt       | custom                         | D                  | 0               | 1               | 0: input unit, 1: output unit                                                                                                                                                                                           |
| cnc\_rd3dtooltip&#xD;  | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rd3dpulse         | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rd3dmovrlap       | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rd3dofschg        | dint                           | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdunsolicprm      | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdunsolicprm2     | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdunsolicmsg      | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_rdunsolicmsg2     | custom                         | D                  | 0               | 0               |                                                                                                                                                                                                                         |
| cnc\_modal             | custom                         | DDDD               | 0               | 3033            | Address consist of 2 parts. First 3 numbers are the type.                                                                                                                                                               |
| cnc\_rdgcode           | custom                         | DDDD               | 0               | 1032            | Address consist of 2 parts. First 3 numbers are the group of G code. Second number is block.                                                                                                                            |
| cnc\_rdcommand         | custom                         | DD                 | 10              | 32              | Address consist of 2 parts. First number is type. 1: Read all modal data except G code at a time, 2: Read all commanded data at a time, 3: Read all commanded data concerning axis at a time. Second Number is block.   |
| cnc\_rdmacro           | float                          | DDDD               | 0               | 9999            | custom macro variable number                                                                                                                                                                                            |
| cnc\_rdmacror2         | float                          | DDDD               | 0               | 9999            | custom macro variable number                                                                                                                                                                                            |
| cnc\_wrmacro           | float                          | DDDD               | 0               | 9999            | custom macro variable number                                                                                                                                                                                            |
| cnc\_wrmacror          | float                          | DDDD               | 0               | 9999            | custom macro variable number                                                                                                                                                                                            |
| cnc\_wrmacror2         | float                          | DDDD               | 0               | 9999            | custom macro variable number                                                                                                                                                                                            |
| pmc\_wrcntldata        | custom                         | DDDD               | 0               | 9999            | group number                                                                                                                                                                                                            |
| pmc\_wrcntlgrp         | uint                           | D                  | 0               | 0               | group number                                                                                                                                                                                                            |
| pmc\_wrkpm             | custom                         | &#xD;DDDDD         | 0               | 65535           | start address                                                                                                                                                                                                           |
| pmc\_wrkpm2            | custom                         | &#xD;DDDDD         | 0               | 65535           | start address                                                                                                                                                                                                           |
| pmc\_wrmsg             | custom                         | 0                  | 0               | 0               | start address                                                                                                                                                                                                           |
| pmc\_wrpmcparam        | custom                         | 0                  | 0               | 0               | start address                                                                                                                                                                                                           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Path No**: Enter the path number.&#x20;
  - If you are using 2-path control with independent macros on each path, then entering 1 or 2 should be the correct configuration.&#x20;
  - If you are using custom macro common variables (the macros used are the same for each path), then this value should be irrelevant and the default value of 1 can be used.&#x20;
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] CAN Raw (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/CAN Bus/

Review the following information for setting up and configuring the CAN Raw (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items              |
| ---------------------------- | ----------------------------- |
| **Driver type**              | CAN                           |
| **Validated devices/series** | CAN Bus 2.0A&#xA;CAN Bus 2.0B |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the connection parameters for the device. These parameters will be used for setting up the driver in the next step.&#x20;

Refer to the following parameters.&#x20;

**Online Simulator**: No

**Extend address mode**: No

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter     | Value          |
| ------------- | -------------- |
| **Type**      | CAN Bus        |
| **Driver**    | CAN Raw (Gen1) |
| **Channel**   | can0           |
| **Interface** | socketcan      |
| **Bit Rate**  | 1000000        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** |
| -------- | --------------- | ------------------ | --------------- | --------------- |
| R        | hex             | DDDDD              | 0               | 65535           |
| R        | decimal         | DDDDD              | 0               | 65535           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] System Requirements
[path] QuickStart Guide/

Refer to the following system requirements for running Litmus Edge.&#x20;

# Minimum Requirements&#x20;

A Litmus Edge instance is designed to collect, analyze, and forward data. These data operations could require heavy computing resources to be able to facilitate all the day-to-day processes a Litmus Edge instance will execute. Although it is possible to run Litmus Edge on a wide range of devices, not having enough computing resources for your particular scenario could create serious performance issues.

Consider the following factors when deciding upon the hardware that your Litmus Edge will use:

- What is the amount of data that will be processed?
- What is your hardware budget?
- How many devices will you connect to Litmus Edge?
- How many Flows/Analytics/Applications/Integrations will you need?
- What programming language and frameworks will you use?
- Will you need frequent Litmus Edge Manager-Litmus Edge interactions (for example, in the case of automatic backups) as well?

To address some of these questions, we recommend you first install Litmus Edge on a test Virtual Machine (VM). Then run a partial execution of all your possible workloads to see how it performs. From there, you can get a better idea whether you need less, about the same, or a multiplying factor of your test VM's computing resources. See below for setting up this VM.

# Recommended Configurations

A Litmus Edge instance is typically customized under one of the following three configurations.

## Data Pass-Through

- Reading and passing data executed externally exclusively on Integrations.
- Minimal data processing and/or storage performed on the Litmus Edge instance.
- Most computing resources consumed by only DeviceHub and data storage/ forwarding to Integrations.

## In-Stream Processing

- Low-volume in-stream processing of data using Flows and/or Analytics (for example, value change or anomaly detection).
- Data stored in InfluxDB for local visualization using a container running the Grafana or Python application.
- Computing resources consumed by InfluxDB, Flows, Analytics, Containers, and DeviceHub.

## Heavy In-Stream Processing and Application Usage

- High-volume in-stream processing of all collected data involving complex Flows and Analytics.
  - Multiple Flows are configured with the maximum allowed RAM.
  - In Analytics, many groups operate, each including multiple processors.
  - Several containers may be run for further data processing, traceability, downtime recording, and so on.
- InfluxDB will require additional CPU and RAM resources if a large number of devices and tags are configured.
  - Each device will become its own InfluxDB data table (measurement).
- Computing resources consumed by user-defined code within Flows, Applications, and Analytics flows.

The following table summarizes parameters for the above three starting configurations when sizing a Litmus Edge instance.

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | **Configuration 1 (Data pass-through)**                                                                                           | **Configuration 2 (In-stream processing)**                                                                                        | **Configuration 3 (Heavy in-stream processing and application usage)**                                                            |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| Devices                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 1-5                                                                                                                               | 5-10                                                                                                                              | 10+                                                                                                                               |
| Average Tags per Device                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 10-20                                                                                                                             | 20-100                                                                                                                            | 100+                                                                                                                              |
| Flows Instances                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | 0-4                                                                                                                               | 1-4                                                                                                                               | 1-4                                                                                                                               |
| Average Flow Nodes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | \< 10                                                                                                                             | 10-50                                                                                                                             | 50+                                                                                                                               |
| Analytics                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 0-5                                                                                                                               | 5-25                                                                                                                              | 25+                                                                                                                               |
| Applications/                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Containers | 0                                                                                                                                 | 1-2                                                                                                                               | 2+                                                                                                                                |
| Integrations                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 1-2                                                                                                                               | 1-5                                                                                                                               | 5+                                                                                                                                |
| InfluxDB Usage                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Optional                                                                                                                          | Mandatory                                                                                                                         | Mandatory                                                                                                                         |
| OPC UA Server Usage                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Cannot function with OPC UA Server                                                                                                | Can function with OPC UA Server                                                                                                   | Can function with OPC UA server                                                                                                   |
| Cores                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 4                                                                                                                                 | 8                                                                                                                                 | 12+                                                                                                                               |
| Memory(RAM)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 8-16 GB                                                                                                                           | 16-32 GB                                                                                                                          | 32+ GB                                                                                                                            |
| Storage (Disc)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 100-250 GB                                                                                                                        | 250- 500 GB                                                                                                                       | 500+ GB                                                                                                                           |
| NIC (Network Interface)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | - Typically at least two:
- One for IT network (users, Litmus Edge Manager, Integrations)
- One for OT network (PLC connectivity) | * Typically at least two:
* One for IT network (users, Litmus Edge Manager, Integrations)
* One for OT network (PLC connectivity) | - Typically at least two:
- One for IT network (users, Litmus Edge Manager, Integrations)
- One for OT network (PLC connectivity) |

# Firewall Port Configuration Requirements

:::hint{type="info"}
Note: You have the option of managing ports in Litmus Edge. See [Manage Firewall Rules](docId:7EPAu9hxQoVl546Scor1Q) to learn more.&#x20;
:::

The firewall managing Litmus Edge's traffic must **always&#x20;**&#x6F;pen the following port to allow you to access the Web User Interface.

| **Function for Litmus Edge**                    | **Port #** | **Encrypted** | **Direction** | **Protocol** | **Description** | **Source**<br />**(Port is used by who/what)** | **Destination**<br />**(Port must be opened at)** |
| ----------------------------------------------- | ---------- | ------------- | ------------- | ------------ | --------------- | ---------------------------------------------- | ------------------------------------------------- |
| Access Litmus Edge through a Web User Interface | 443        | Yes<br />SSL  | Inbound       | TCP          | HTTPS           | Litmus Edge Users                              | Litmus Edge                                       |

To allow a connection with Litmus Edge and Litmus Edge Manager, the following ports must be open.&#x20;

| **Function for Litmus Edge**               | **Port #** | **Encrypted**  | **Direction** | **Protocol** | **Description**                            | **Source**<br />**(Port is used by who/what)** | **Destination**<br />**(Port must be opened at)** |
| ------------------------------------------ | ---------- | -------------- | ------------- | ------------ | ------------------------------------------ | ---------------------------------------------- | ------------------------------------------------- |
| Redirects 443                              | 80         | No             | Inbound       | TCP          | HTTP                                       | Litmus Edge Users                              | Litmus Edge                                       |
| Connect Litmus Edge to Litmus Edge Manager | 8883       | Yes<br />MQTTS | Outbound      | TCP          | MQTT-SSL                                   | Litmus Edge                                    | Litmus Edge Manager<br />and Customer MQTT Broker |
| Connect Litmus Edge to Litmus Edge Manager | 443        | Yes            | Outbound      | TCP          | HTTPS                                      | Litmus Edge                                    | Litmus Edge Manager                               |
| Connect Litmus Edge to Litmus Edge Manager | 51820      | Yes            | Outbound      | UDP          | UDP<br />Litmus Edge Manager Remote Access | Litmus Edge                                    | Litmus Edge Manager                               |

The firewall managing Litmus Edge's traffic must open **Only if corresponding services are present and running.**

| **Function for Litmus Edge**                                                     | **Port #** | **Encrypted**                          | **Direction** | **Protocol** | **Description**                              | **Source**<br />**(Port is used by who/what)** | **Destination**<br />**(Port must be opened at)** |
| -------------------------------------------------------------------------------- | ---------- | -------------------------------------- | ------------- | ------------ | -------------------------------------------- | ---------------------------------------------- | ------------------------------------------------- |
| Use Litmus Edge as an FTP Server                                                 | 21, 2121   | No                                     | Inbound       | TCP          | FTP                                          | Customer FTP Server                            | Litmus Edge                                       |
| Use Litmus Edge as an SSH Server<br />Used for backend support access            | 22         | Yes<br />Session key                   | Inbound       | TCP          | SSH                                          | Litmus Support Team                            | Litmus Edge                                       |
| Use Litmus Edge as an LDAP Client                                                | 389        | No                                     | Outbound      | TCP          | LDAP                                         | Litmus Edge                                    | Customer LDAP Server                              |
| Use Litmus Edge as an LDAP Client                                                | 636        | Yes<br />SSL                           | Outbound      | TCP          | LDAP with SSL                                | Litmus Edge                                    | Customer LDAP Server                              |
| Use Litmus Edge as an OPC UA Server                                              | 4840       | Yes&#xA;(Depends on server settings)   | Inbound       | TCP/UDP      | OPC UA Server                                | Customer Northbound Application                | Litmus Edge                                       |
| Collaboration with name servers to replace IP of Litmus Edge with a name server  | 5353       | No                                     | Outbound      | UDP          | mDNS (Multicast DNS)                         | Litmus Edge                                    | Multicast Local Network                           |
| Collaboration with name servers to replace IP of Litmus Edge with a name server  | 5355       | No                                     | Inbound       | TCP/UDP      | LLMNR<br />(Link-Local Multicast Resolution) | 224.0.0.252&#xA;&#xA;                          | Litmus Edge                                       |
| Remote access over internet when accessing Litmus Edge                           | 9993       | Yes (asymmetric public key encryption) | Outbound      | UDP          | Remote Access                                | Litmus Support Team                            | Litmus Edge                                       |

## PLC-Specific Ports

The firewall managing Litmus Edge's traffic must open specific ports for certain PLC devices to connect to Litmus Edge. To manage firewall rules in Litmus Edge, see [Manage Firewall Rules](docId:7EPAu9hxQoVl546Scor1Q).&#x20;

Ports for Industrial Systems and Sensors Connections are PLC specific and should be open on a case-by-case basis. See the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr) for more information.&#x20;

## Marketplace Ports

Marketplace applications manage their own ports. Those ports are application-specific and are outside of the `iptables` firewall.

## Other Ports

Any other ports are blocked by the `iptables` firewall. This means that the Litmus Edge flows application can initiate only outgoing traffic and cannot listen to incoming connections.


[title] User Journey
[path] Overview/

The diagram below displays the most common user journey of the Litmus Edge experience. This journey can include multiple paths and you are welcome to combine these as you see fit.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Mx3TYtvJJC8P1Hd4fOv3Z_user-journey.png "Litmus Edge User Journey")

| **Action** | **Details**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **\[1]**   |  You have several options for installing Litmus Edge depending on your specific requirements. The most common installation scenarios are the following:<br />* Installation on a physical hardware device such as an IPC (Industrial PC)
* Installation as a VM (virtual machine). You can install as a VM using the following virtual environments:
  - Oracle VirtualBox
  - VMWare ESXi
  - VMware Workstation Player
  - QEMU Emulator KVM
  - Windows Hyper-V
* Installation on Docker
* Installation on Kubernetes<br />See [Installation and Deployments](docId\:kfV1aRRRlYrgPLszg75gl) to learn more.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **\[2]**   |  After installing Litmus Edge, you can customize the setup of the instance to your specific requirements.<br />* **\[2a]** The Litmus Edge software package installation includes a default configuration for the selected device's interface. You must configure the default entries with your own network information. See [Configure Network Interfaces](docId\:VZke6BcTDXbG0WsyrEZNf) to learn more.&#x20;
* **\[2b]&#x20;**&#x54;he Litmus Edge software package installation includes a default configuration for the Fallback DNS Resolvers that is only suitable for the open Internet. You must delete and replace the default entries with your own network information. See [Fallback DNS Resolvers](docId\:pz9D0WPBQbUGyh0MH6wyx) to learn more.&#x20;
* **\[2c]&#x20;**&#x54;he Litmus Edge software package installation includes a default configuration for the NTP server ports that is only suitable for the open Internet. You must delete and replace the default entries with your own network information. See [NTP Servers](docId\:pz9D0WPBQbUGyh0MH6wyx) to learn more.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **\[3]**   |  Once Litmus Edge is installed and configured properly, you can start adding devices and tags in DeviceHub. <br />* **\[3a]** See [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) to learn how to connect devices to DeviceHub. Review the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr) to see the list of available drivers and compatible PLCs/devices.&#x20;
* **\[3b]** [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device to subscribe to that device’s data by register.&#xD; For example, you may tag the PLC registers that contain the current temperature and vibration values. The data is collected with the frequency you define, automatically normalized, and published to the internal Message Broker. This data becomes available to both internal and external entities.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| **\[4]**   |  You have several options to process, visualize, and analyze the polled and normalized data. <br />* **Create and Manage Data Flows**: Flows allow you to view device data and configure the output so you can better visualize how the device is operating. For example, you can subscribe to a tag that provides temperature values, average the temperature values per hour, and then publish the average values to the Message Broker. You can then add a function that monitors the published average temperatures and raises an alarm if the value exceeds a predefined threshold. See [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89) to learn more.&#x20;
* **Create and Manage Analytics Flows & Models**: [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5) are used to create flows. You can add input, function, and output instances, and then connect them. The flows can use KPIs or Machine Learning models. For example, you can apply out-of-the-box Compliance and Loss or Production Cycle KPIs to the data obtained from the Message Broker. You can then publish the results to another tag at the Message Broker. Alternatively, you can submit the data to a pre-trained TensorFlow machine learning model and use the resulting predictions for decision making.
* **Visualize and Analyze Data with Marketplace Applications**: You have access to a default set of applications in a Public Marketplace. You can add your own Docker container-based applications in a Private Repository. See [Applications](docId\:j4jhjBWbwQY1BS9A3G6Zk) and [Applications Guides](docId:-DKHmS9kYfUcfLPohUyk2) to learn more.&#x20;
* **Integrate Connector to Third-Party Systems**: You can configure connectors to connect to cloud services. This allows you to publish data from an edge device directly to a cloud service provider or database. See [Integration](docId\:Wpqo1fE02tmx3AsKewQU6) and [Integration Guides](docId\:ZJCZ7NP6pGLZGihEVl8Ed) to learn more.&#x20;
* **Add an OPC UA Hierarchy**: The OPC UA protocol provides a publish-subscribe client server technology for reliable data transmission. You can add your edge devices and tags in a hierarchy. See [OPC UA Server](docId\:Wu741skertOa8mwl1IpBY) to learn more.&#x20;
* **Customize Systems**: Customize settings such as security, network, user, and other settings to protect the integrity of your edge instance. See the options in the [System](docId\:ZU_wIc5Nr2iFCWJK46kKf) section of Litmus Edge to learn more.&#x20; |




[title] Excel (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Excel/

You can set up the Excel driver to read values in an Excel file.

# Before You Begin

Make sure you do the following:

- Have an Excel file located on your hard drive.
- Ensure the FTP service is running. See [Manage FTP and System Services](docId\:V290pRiyfyiSr9yWDfyMX) for more information.
- Install the [WinSCP FTP client ](https://winscp.net/eng/index.php)on your computer.
- Add an FTP user. See [Add an FTP User](docId:7brk_nIh3pGCZEBYdMJcw) for more information.

# Set Up Excel Driver

Setting up the Excel driver includes the following tasks:

- Step 1: Set Up FTP Client
- Step 2: Add Excel Driver
- Step 3: Add a Tag For a Single Cell in Excel
- Step 4: Add a Tag for Range of Cells in Excel
- Step 5: Create Flow for Single Cell in Excel
- Step 6: Create Flow for Range of Cells in Excel

## Step 1: Set Up FTP Client

**To set up the FTP client:**

1. Open the WinSCP FTP client.&#x20;
   The *FTP Login* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kHFvF63MmsPXpbz2ST2Eg_ftp-client-window.png" size="80" width="827" height="538" caption="FTP Login dialog box" position="center" showCaption="true"}
2. For **File Protocol**, select **FTP**.&#x20;
3. Configure the following parameters.&#x20;
   - **Host name**: Enter the Litmus Edge URL.&#x20;
   - **User name**: Enter the FTP username you created when you [Added an FTP User](docId:7brk_nIh3pGCZEBYdMJcw).
   - **Password**: Paste the password you copied when you [Added an FTP User](docId:7brk_nIh3pGCZEBYdMJcw).
4. Click **Login**.&#x20;
   The WinSCP window appears.

5. Open the DeviceHub folder in the right pane.
6. From the left pane, drag the Excel file to the open DeviceHub folder.
   The Excel file uploads to the folder.

## Step 2: Add Excel Driver

**To add the Excel driver:&#x20;**

1. In Litmus Edge, navigate to **DeviceHub&#x20;**> **Devices**.&#x20;
2. Click the **Connect a Device** box.&#x20;
   The *Connect Device&#x20;*&#x64;ialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/atJL37pPuLGI2bM_w2ibz_adddevice.png" size="80" width="1046" height="528" caption="Connect a Device box" position="center" showCaption="true"}
3. In the **Device Type** drop-down list, select **Excel**.&#x20;
4. In the **Driver Name** drop-down list, select **Excel (Gen1)**.&#x20;
5. In the **Name&#x20;**&#x66;ield, enter a name for the device.&#x20;
6. In the **Path&#x20;**&#x66;ield, enter the path for the Excel file that you just previously uploaded.&#x20;
7. Click **Add Device**.&#x20;
   The Excel device appears in the *Devices&#x20;*&#x70;ane.&#x20;

## Step 3: Add a Tag For a Single Cell in Excel

The Excel device is disconnected until you add a tag.

**To add a tag for single cell:**

1. In Litmus Edge, navigate to **DeviceHub&#x20;**> **Tags**.
2. Click the Excel device.&#x20;
3. Click the **Add&#x20;**&#x69;con and select **Add a Tag**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4nexvxRZvUEqBp9uGaXNl_addexceltag.png" size="80" width="1186" height="337" caption="Add a Tag option" position="center" showCaption="true"}
4. Configure the following parameters.&#x20;
   - **Name**: Select **R**.&#x20;
   - **Value Type**: Select **single**.
   - **Polling Interval**: Enter a value.&#x20;
   - **Tag Name**: Enter a tag name.
   - **Start Cell**: Enter a value. For example, **A1**.&#x20;
   - **End Cell**: To configure the tag for only one cell, enter the same value as the Start Cell. &#x20;
   - **Sheet**: Enter the Excel file sheet name from which the cell data is used. The sheet name must be exactly the same as the sheet name in the Excel file.
5. Click **Add Tag**.&#x20;
   The tag is added to the tags pane.
6. Click the **Copy&#x20;**&#x69;con for the tag in the *RAW Topic* column.&#x20;

## Step 4: Add a Tag for Range of Cells in Excel

**To add a tag for a range of cells:**

1. In Litmus Edge, navigate to **DeviceHub&#x20;**> **Tags**.
2. Select the Excel device.&#x20;
3. Click the **Add&#x20;**&#x69;con and select **Add a Tag**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4nexvxRZvUEqBp9uGaXNl_addexceltag.png" size="80" width="1186" height="337" caption="Add a Tag option" position="center" showCaption="true"}
4. Configure the following parameters.&#x20;
   - **Name**: Select **R**.&#x20;
   - **Value Type**: Select **range**.
   - **Polling Interval**: Enter a value.&#x20;
   - **Tag Name**: Enter a tag name.
   - **Start Cell**: Enter the starting cell to read data.&#x20;
   - **End Cell**: Enter the ending cell to read data.&#x20;
   - **Sheet**: Enter the Excel file sheet name from which the cell data is used. The sheet name must be exactly the same as the sheet name in the Excel file.
5. Click **Add Tag**.&#x20;
   The tag is added to the tags pane.
6. Click the **Copy&#x20;**&#x69;con for the tag in the *RAW Topic* column.&#x20;

## Step 5: Create Flow

**To create a flow:**

1. In Litmus Edge, navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow. See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
2. Drag the **DataHub Subscribe&#xA0;**&#x61;nd **Debug&#xA0;**&#x6E;odes to the canvas and wire them together.
3. Double-click the **DataHub Subscribe&#xA0;**&#x6E;ode
4. In the Topic field, paste the RAW Topic value from either "Step 3: Add a Tag For a Single Cell in Excel" or "Step 4: Add a Tag for Range of Cells in Excel".&#x20;
5. If needed, configure the *Datahub Subscribe* connection. See the "Step 3: Configure Connector Nodes" section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
6. Click **Deploy**.
7. Click the **Debug&#x20;**&#x69;con. See the "Additional Options" section in [Manage the Flow Canvas](docId\:qQnwjDagEcrDG0JtIVulu) to learn more.&#x20;
8. Review the debug messages and confirm they correspond to the values in the Excel file.&#x20;


[title] Fuji Devices
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                                                  | **Compatible Ethernet DeviceHub Driver**                      | **Compatible Serial DeviceHub Driver**                |
| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------- |
| Fuji NB Series                                                                                  |                                                               | [Fuji NB Serial (Gen1)](docId\:w80LrNFVarFL4Y0M4Yyk4) |
| [Fuji SPH Series](https://www.fujielectric.com/products/plc/product_information/cpu/guide.html) | [Fuji SPH2000 Ethernet (Gen1)](docId\:w5cLSjgD-Iq_fQfaMcDi7)  |                                                       |


[title] GE Fanuc RX3i Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/GE Fanuc/

Review the following information for setting up and configuring the GE Fanuc RX3i Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items     |
| ---------------------------- | -------------------- |
| **Driver type**              | Ethernet             |
| **Validated devices/series** | GE Fanuc RX3i Series |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: GE Fanuc RX3i

   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0dFcPjkLInMW7OJiUUxUC_ge-fanuc-rx3i-ethernet.png" size="80" width="354" height="353" caption="GE Fanuc RX3i Ethernet reference" position="center" showCaption="true"}
2. Launch Proficy Machine Edition v8.0, create a project based on the device model, and then click **Target1&#x20;**&#x69;n the Project page to check if the model is correct.
3. From the Project page, set up the Physical Port and IP Address, and then click **Online/Offline**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | GE Fanuc                                 |
| **Driver**          | GE Fanuc RX3i Ethernet (Gen1)            |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 18245                                    |
| **Slot Number**     | 1                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------- |
| I        | bit             | DDDDD              | 1               | 32768           | Input bit       |
| Q        | bit             | DDDDD              | 1               | 32768           | Output bit      |
| M        | bit             | DDDDD              | 1               | 32768           |                 |
| G        | bit             | DDDD               | 1               | 7680            |                 |
| T        | bit             | DDDD               | 1               | 1024            |                 |
| SA       | bit             | DDD                | 1               | 128             |                 |
| SB       | bit             | DDD                | 1               | 128             |                 |
| SC       | bit             | DDD                | 1               | 128             |                 |
| S        | bit             | DDD                | 1               | 25471           |                 |
| R        | word            | DDDDD              | 1               | 32640           |                 |
| AQ       | word            | DDDDD              | 1               | 32640           | Analog Output   |
| AI       | word            | DDDDD              | 1               | 32640           | Analog Input    |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Installation and Deployments
[path] QuickStart Guide/

The Litmus Edge operating system can be deployed in several ways.

# Litmus Edge Deployment Models

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yPQeQgFpoZcd19U2NM_ic_litmus-edge-deployment-models.png "Litmus Edge deployment models")

The most common installation scenarios are:

- Installation on a physical hardware device such as an IPC (Industrial PC)
- Installation as a VM (virtual machine). You can install as a VM using the following virtual environments:
  - Oracle VirtualBox
  - VMWare ESXi
  - VMware Workstation Player
  - QEMU Emulator KVM
  - Windows Hyper-V
- Installation on Docker
- Installation on Kubernetes

To determine the best approach for installation, you must first establish how Litmus Edge is to be used.

# Collect Data for an Asset or Line Base

If Litmus Edge is used to collect data on an asset or line base, the most common form of deployment is an installation on a physical device such as an IPC (Industrial PC) device.

The IPC is installed close to the asset or line, often within the same cabinet as the data source, such as a PLC (Programmable Logic Controller), CNC (Computer Numerical Control), robotic system, or DCS (Distributed Control System).

It is connected through one of its network cards to the VLAN of the asset or line. The second network card connects the device to the plant OT (Operational Technology) network and allows for access using the Web UI (User Interface).

# Collect Data For a Section or Plant

If Litmus Edge is used to collect data for a section or plant level that includes several lines or assets, the choice may be to deploy it as a virtual system.

This is usually done using managed virtual environments such as VMWare ESXi. The virtual machine runs inside the virtualized environment and connects to the data sources through the plant OT network.

This requires that routing allows the VM to reach every data source located within isolated VLANs.

# Development System

The installation as virtual machine using Oracle VirtualBox is another option. This is usually a development system. For example, in a PoV (proof of value) project, or where many stakeholders test the system and it is not feasible to provide a physical device to everyone.

# Mixed Installation

It is also possible to use a mixed installation. This combines the deployment of physical devices on an asset or line basis and the deployment of a virtualized system as a consolidation layer.

See [Verified VM Versions](docId:36xPLuILTp2QajsR8ltHw)  and [Validated Gateway Devices](docId:9Y8tT29rbakbk2HyvXKLx) for more information.

# Next Steps

- [OVA Installation on Virtual Machine](docId\:PeHY40FIwC4eUku2uCr04)&#x20;
- [ISO Installation on Virtual Machine](docId\:hfQ4XuEelug1sfF7UmV2G)&#x20;
- [Physical Gateway Installation](docId\:TvqRcSCI72ATtvVwmMqdo)&#x20;
- [Docker Installation](docId\:yYQfcyjvKqbgSBvAt0EEO)&#x20;
- [Kubernetes Installation](docId\:ftimUSwNLqdbMGQ9p-bYx)&#x20;
- [Raspberry Pi Installation](docId\:yws0J5kBQCFs_xuIRdb5W)
- [License Server Installation](docId\:hRCG1143QUU3HaNq2slFc)


[title] Emerson
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your device.

| **Device**                                                                                                                                              | **Compatible Ethernet DeviceHub Driver**         |
| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| - [Emerson FB1200](https://www.emerson.com/en-us/catalog/emerson-fb1200)&#x20;
- [Emerson FB3000](https://www.emerson.com/en-us/catalog/emerson-fb3000) | [DNP3 Ethernet](docId\:g0xtwEupr8jQtkIMvTxZ5)    |
| [Emerson ROC800](https://www.emerson.com/en-us/catalog/emerson-roc800-series)                                                                           | [Roc800 Ethernet](docId\:d-NMpfVCcXTbxZF5p-H8Y)  |
| [FloBoss™ 107 Flow Manager](https://www.emerson.com/en-us/catalog/emerson-floboss-107)                                                                  | [FB107 Ethernet](docId\:Pfkg7srta_ZVRLfc85eHE)   |


[title] KVM
[path] QuickStart Guide/Installation and Deployments/ISO Installation on Hypervisors/

You can use KVM with QEMU emulator version 2.11.1 (Debian 1:2.11+dfsg-1ubuntu7.34) or later to install Litmus Edge.

:::hint{type="danger"}
**Caution**: This installation has been validated using QEMU version `2.11.1` on host OS Ubuntu `20.04` and `22.04`. While newer versions of QEMU configurations may work, they have not been officially tested or guaranteed. Use newer versions at your own discretion, and ensure proper testing in your environment.
:::

# Before You Begin

- You must have access to QEMU emulator version 2.11.1 (Debian 1:2.11+dfsg-1ubuntu7.34) or a later version, and OS Ubuntu 20.04 or 22.04.
- Make sure you have the appropriate user permissions to use the QEMU Virtual Machine Manager.&#x20;

To use QEMU Emulator KVM to install Litmus Edge, you will need to do the following.&#x20;

- Step 1: Create a Virtual Machine
- Step 2: Configure Settings
- Step 3: Install KVM
- Step 4: Log in to Litmus Edge

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Create a Virtual Machine

You will first need to create the virtual machine that will run Litmus Edge.&#x20;

**To create the virtual machine:**

1. From the QEMU emulator, open the Virtual Machine Manager.&#x20;
2. Click **File** and select **New Virtual Machine**.
   The *Create a new virtual machine - step 1* dialog box appears.

## Create a new virtual machine - step 1

**To complete step 1:**

1. From the *Create new virtual machine - step 1* dialog box, select **Local install media** (**ISO image or CDROM**).&#x20;
2. Click **Forward**.&#x20;
   The *Create a new virtual machine - step 2* dialog box appears.

## Create a new virtual machine - step 2

**To complete step 2:**

1. From the *Create a new virtual machine - step 2* dialog box, select **Use ISO image**.&#x20;
2. Click **Browse**.&#x20;
   The *Choose storage volume* dialog box appears.
3. Click **Browse Local**.&#x20;
4. Navigate to the ISO file and click double-click the file.
   The path for the image appears in the field.
5. Click **Forward**.&#x20;
   The *Create new virtual machine - step 3* dialog box appears.&#x20;

## Create a new virtual machine - step 3

**To complete step 3:**

1. From the *Create new virtual machine - step 3* *dialog box*, enter`4096` in the **Memory (RAM)** field.
2. Enter `2` in the **CPUs&#x20;**&#x66;ield.&#x20;
3. Click **Forward**.&#x20;
   The *Create new virtual machine - step 4* dialog box appears.

## Create a new virtual machine - step 4

**To complete step 4:**

1. From the *Create new virtual machine - step 4* dialog box, select **Create a disk image for the virtual machine**.
2. Enter `20.0` in the field.&#x20;
3. Click **Forward**.&#x20;
   The *Create a new virtual machine - step 5* dialog box appears.

## Create a new virtual machine - step 5

**To complete step 5:**

1. From the *Create a new virtual machine - step 5* dialog box, enter a name for the virtual machine.&#x20;
2. Under *Storage*, select **Customize configuration before install**.
3. Click the **Expand** (**v**) icon next to *Network selection*.
   The network selection box drops down.
4. From the options. select **Host device enp2s0: macvtap**.
   The source mode selection box drops down.
5. From the options, select **Bridge**.&#x20;
6. Click **Finish**.&#x20;
   The `<VMName>` on QEMU/KVM dialog box appears.

# Step 2: Configure Settings

After installing the virtual machine, you will need to configure its settings.&#x20;

**To configure the settings:**

1. Navigate to the **Overview** tab in the left panel.&#x20;
2. From the Firmware drop-down list, Select **UEFIx86\_64: /usr/share/OVMF/\_CODE.fd**. &#x20;
3. Click **Apply**.&#x20;
4. From the left panel, select **IDE Disk 1**.&#x20;
5. From the *IDE Disk 1* pane, click the Expand (**v**)  icon next to *Advanced options*.
   The disk fields drop down.&#x20;
6. From the *Disk bus* drop-down list, select **SATA**.&#x20;
7. Click **Apply**. &#x20;
8. Click **Begin Installation**.&#x20;
   The *Creating Virtual Machine* dialog box appears and begins the installation.
9. Click the dialog box to open the KVM OS installation application.

# Step 3: Run the Operating System Installer

You will run the operating system installer that will install Litmus Edge.&#x20;

:::hint{type="info"}
**Notes**:&#x20;

- During the installation, the progress bar may decrease at times due to partitioning.
- The time to complete the installation is based on the size of the hard disk drive. Large disk drives will cause the installation to take longer to partition the disk and therefore longer to complete setting up the virtual machine.&#x20;
:::

**To install KVM:**

1. From the Welcome screen, enter `No` and then press **ENTER**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JTK6YxuDdSivoy_q26kEE_andnwrjv7o5j51j-miyfckvm-welcome-tui.png" size="80" width="787" height="614" caption="KVM OS Installer start up screen. " position="center" showCaption="true"}
2. Select **Install Operating System**, and then select **Ok**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uOpPhO79dsLz-rV28jWL2_hxtpsbxtroefiuvvpoufckvm-install-os.png" size="80" width="787" height="616" caption="Install Operating System option" position="center" showCaption="true"}
3. Select the partition to install, and then select **Ok**. This list is device specific. Typically, the installation location is sda. If the device/gateway has embedded MMC (eMMC) components, the partition name may be listed as mmcblk instead of sda. Make sure you select the correct hard-drive location.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/s_2m0aF0fmidjyihhLBQq_ibvcwkm7ac5ozcsj37yyqkvm-select-partition.png" size="80" width="785" height="616" caption="Select partition option" position="center" showCaption="true"}
4. Verify the OS installation location by selecting **Yes**. If you select **No**, you are returned to the beginning of the installation.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CqkLfkX4IncPKoPd4by_F_pyshkwyl6mjewquv0ihinkvm-verify-installation-location.png" size="80" width="784" height="613" caption="Installation verification" position="center" showCaption="true"}
5. &#x20;A second verification ensures that you are overwriting the correct device partition during the formatting process. Select **Yes** to continue formatting the device and installing the operating system.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HoYDSSm6-xSdiJFZ9e3lt_eoooly6ntj92hnjrngllakvm-warning.png" size="80" width="783" height="612" position="center" caption="Warning message for installation" showCaption="true"}
6. The installer indicates its progress, followed by a success message.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/28-CQZ6Lg7y07nRvjYSVw_-nywnx6hragmfwrlmdudnkvm-installing.png" size="80" width="783" height="609" caption="Installation progress bar" position="center" showCaption="true"}
7. Select **Yes** to power off the device.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JLunY6zS1Z2m9o_SrOMOg_ionlcldxbewdfwzpt6rxkvm-power-off.png" size="80" width="783" height="611" caption="Power off notification" position="center" showCaption="true"}
8. Reboot the device.
   The terminal window displays the URL which must be used to access the device using the Web UI.

:::hint{type="info"}
**Note**: If several URLs are displayed, the first one is used for accessing the device through the Web UI.
:::

# Step 4: Configure TUI Settings

**To configure the TUI settings:**

1. Press Left Control+ Left Alt to release the pointer on the TUI.
   The TUI settings appear.
2. Navigate to the TUI settings.&#x20;
3. From the *Keyboard Layout&#x20;*&#x73;etting, select US, and then select **Apply**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EdrMC9G971MPj1P-y3buX_hxt8rxwkqpyjw2dcql9ackvm-keyboard-layout.png" size="80" width="784" height="610" caption="Keyboard settings" position="center" showCaption="true"}
4. From the *Authentication&#x20;*&#x73;etting, enter the following credentials and log in.&#x20;
   **Username**: `admin`
   **Password**: `litmusedge`
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zoBmVrQSJYEu9sufN07S1_afafd7la7jd26ixy7tkvm-authentication.png" size="80" width="782" height="607" caption="Login screen" position="center" showCaption="true"}
5. Scroll to the bottom of the license agreement and proceed.&#x20;
6. From the *Change Password* screen, enter the existing and new password and select **Change**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Inrr8XqonxDYbuAE3Oy7Y_ldndusxc5kpsyjf95wxl7kvm-change-password.png" size="80" width="785" height="611" caption="Change password screen. " position="center" showCaption="true"}
7. From the *Authentication&#x20;*&#x73;creen, enter `admin` as the username, your new password, and select **Log in**.&#x20;


   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rFMZo6CKyPcjODXQORnAq_qu5ir3z2qphfvxbuhycqykvm-authentication2.png" size="80" width="787" height="612" caption="Authentication screen" position="center" showCaption="true"}
8. From the System settings screen, select **Configure Interfaces**, and then select **Next**.

# Step 5: Log in to Litmus Edge

- See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;
- See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for instructions on how to navigate and log in for the first time.


[title] Fuji SPH2000 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Fuji Devices/

Review the following information for setting up and configuring the Fuji SPH2000 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                        |
| ---------------------------- | ------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                |
| **Validated devices/series** | [Fuji SPH Series](https://www.fujielectric.com/products/plc/product_information/cpu/guide.html#SPH2000) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: Fuji SPH2000

   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/R8m-oeQnVa9w7VZHEe5XY_fuji-sph2000-ethernet.png" size="80" width="576" height="518" caption="Fuji SPH2000 reference" position="center" showCaption="true"}
2. Set up the IP address. If you don't know the IP address of the device, connect the device with USB first and then set up the IP for the device.
3. Set up the D300 v3.6.5.10 programming tool.&#x20;
4. Right-click your device and select setting.
5. Select Ethernet as communication I/F.
6. Click **Online > Project Control**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Fuji Devices                             |
| **Driver**          | Fuji SPH2000 Ethernet (Gen1)             |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 507                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                |
| -------- | --------------- | ------------------ | --------------- | --------------- | ------------------------------ |
| X        | bit             | DDDDDDdd           | 100             | 23851115        | DDD/(Slot)/ DDD(word)/ dd(bit) |
| Y        | bit             | DDDDDDdd           | 100             | 23851115        | DDD(Slot)/ DDD(word)/ dd(bit)  |
| M        | bit             | DDDDdd             | 0               | 819115          |                                |
| L        | bit             | DDDDdd             | 0               | 409515          |                                |
| SM       | bit             | DDDdd              | 0               | 5115            |                                |
| S        | bit             | DDdd               | 0               | 9999            |                                |
| WX       | word            | DDDDDD             | 1               | 238511          | DDD(Slot)/ DDD(word)           |
| WY       | word            | DDDDDD             | 1               | 238511          | DDD(Slot)/ DDD(word)           |
| WM       | word            | DDDDD              | 0               | 20000           |                                |
| DM       | word            | DDDDD              | 0               | 20000           |                                |
| WL       | word            | DDDDD              | 0               | 20000           |                                |
| DL       | word            | DDDDD              | 0               | 20000           |                                |
| WSM      | word            | DDD                | 0               | 511             |                                |
| DSM      | word            | DDD                | 0               | 510             |                                |
| WS       | word            | DD                 | 0               | 99              |                                |
| DX       | word            | DDDDDD             | 1000            | 238511          | DDD(Slot)/ DDD(word)           |
| DY       | word            | DDDDDD             | 1000            | 238511          | DDD(Slot)/ DDD(word)           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] AB CompactLogix (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

:::hint{type="warning"}
**Important**: This driver was deprecated in Litmus Edge version 3.5.2. We recommend using the Gen 2 [AB CompactLogix Ethernet FreeTag](docId\:RnJtfL6l5lXb52iFF6QJm).&#x20;
:::

Review the following information for setting up and configuring the AB CompactLogix (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter        | Compatible items                                                                                                                                                                               |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**                | Ethernet                                                                                                                                                                                       |
| **Validated devices/series**   | [Rockwell Automation Allen-Bradley CompactLogix](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/small-controllers/compactlogix-family.html) |
| **Replaced with Gen 2 driver** | [AB CompactLogix Ethernet FreeTag](docId\:RnJtfL6l5lXb52iFF6QJm)                                                                                                                               |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1\. Note down the following information and refer to it when needed.&#x20;

**Device**: AB CompactLogix L24ER-QB1B

**Communication I/F**: Ethernet, USB. Refer to the following figure.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/16_zsafVn6V7n8lOUaTLz_ab-compactlogix.png" size="80" width="914" height="662" caption="Reference image of device" position="center" showCaption="true"}

2\. Connect the device to a PC using a USB port.

3\. Launch Rockwell's driver configuration tool, RXLinx classic, and add the SmartGuard USB driver.

4\. Right-click the device and configure the module.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/oh-wD8SV1RJnNg6kSM-cn_ab-compactlogix-parameters.png" size="80" width="894" height="544" caption="Network parameters section" position="center" showCaption="true"}

5\. Add driver: EtherNet/IP device.

6\. Choose adapter: make sure it's the same subnet as the device.

7\. Detect the device.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/h6Dna7P6FeeDE_qwu7vqv_ab-compactlogix-detect.png" size="80" width="1088" height="599" caption="Device detection option" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | Allen-Bradley                                |
| **Driver**          | AB CompactLogix (Gen1)                       |
| **Network address** | The device address you defined during Step 1 |
| **Port**            | 44818                                        |
| **Slot Number**     | 0                                            |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, use the following tag/register mapping table.

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

- The **Browse** icon displayed on the device tile means that this PLC uses Browse Tags. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX)  for more information.&#x20;
- Certain device drivers do not have a list of register names in the DeviceHub Add Tag form. These ar&#x65;*&#xA0;Free Tag PLCs*. For Free Tag requirements, see [Troubleshooting - DeviceHub](docId\:okFkYcmKRIrYz8gtRQMh9).&#x20;
:::

:::hint{type="warning"}
**Caution**: Because this device belongs to a free tag PLC, the case-sensitive register name must be entered exactly as it is defined in the PLC. The device does not display a *Connected&#xA0;*&#x73;tatus until a tag with a correct register name is created.
:::

| **Name** | **Value** |
| -------- | --------- |
| R        | BOOL      |
| R        | SINT      |
| R        | INT       |
| R        | BIT(INT)  |
| R        | DINT      |
| R        | REAL      |
| R        | LINT      |


[title] Hitachi Devices
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                                                                                                                                                                                                                                                                    | **Compatible Serial DeviceHub Drivers**               |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| - [Hitachi H series](https://automation.hitachi-industrial.eu/en/products/plc/modular-series/h-series)
- [Hitachi EH-150](https://automation.hitachi-industrial.eu/en/products/plc/modular-series/eh-150)
- [Hitachi Micro-EH ](https://automation.hitachi-industrial.eu/en/products/plc/compact-series/micro-eh) | [Hitachi Serial (Gen1)](docId:2WltfPWjP8WebWe89M2-U)  |


[title] Gen 1 Drivers
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/


[title] Access the Litmus Edge Web UI
[path] QuickStart Guide/

After successfully installing Litmus Edge, you can access the Web UI from a browser such as Chrome or Firefox.&#x20;

:::hint{type="warning"}
**Important**:&#x20;

- If you can't access features in Litmus Edge when logging in, see the "Activate a License" section below.&#x20;
- You may see the following error message when working with [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5):  "Http failure response for /analytics/v2/version: 0 Unknown Error". If you see this message, disable any ad-blockers your browser may have.
:::

# Access from a Browser

After you have installed Litmus Edge you can connect to the Litmus Edge device from a browser using the network IP address for the device. The address can be found on the terminal display of the gateway or of the VM terminal.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9931JITXoPvPyC_afLHaQ_image.png "URLs to access Web UI")

:::hint{type="info"}
**Notes**:&#x20;

- The system is accessible from a browser by host name if your computer supports mDNS. This is a convenient feature if your device uses DHCP for address allocation and the address may change time to time. The host name is static and it never changes.&#x20;
- Make sure that your network is not behind a company firewall or proxy that is blocking the connection.
:::

# Log in to the Litmus Edge Web UI the First Time

Refer to the following to log in to Litmus Edge the first time after installing it to your device.&#x20;

- Make sure you connect your personal computing device (laptop, tablet, desktop) to the network in which the device operates. The Litmus Edge software should be installed on the device that is connected to the same network as your personal computing device so that you can establish a network connection.
- To access the Web UI, you must use Google Chrome, Mozilla Firefox, or Apple Safari. The browser must be able to establish a network connection to the device.
- Gather the Litmus Edge IP address from the terminal window as shown above.&#x20;

The IP used to access the device is usually the WAN IP or eth0 IP. If the IT and OT networks are segregated, the network used to establish the connection to the PLC system, robotic system, or CNC system is the eth1 network and cannot be accessed from the browser. If no segregation exists, only eth0 is used by both the OT and IT connection. There is no open external API point.

Litmus Edge uses a self-signed certificate, so the browser will most likely block the login for security reasons. Choose the advanced option to bypass the error message. See [Browser Issues](docId\:GO0YYPghttNpVcx0owNQR) to learn more.&#x20;

**To log in to Litmus Edge the first time:**

1. Enter Litmus Edge IP address into the browser address bar.
2. Enter the default credentials. The default username is `admin` and password is `litmusedge`
3. Clic&#x6B;*&#x20;Log in*.
4. A Software License Agreement displays. Review the agreement and click **Accept**.
5. Follow the prompts to change your password.&#x20;
6. Litmus Edge opens in your browser. The *Dashboard&#x20;*&#x70;age appears by default. You are now logged into Litmus Edge.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jylJDLd7xXhH8gUyZp5QC_image.png" size="80" width="1897" height="860" caption="Litmus Edge EULA" position="center" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XkJ5ock_dmAPjh88iAbi6_image.png" size="80" width="1491" height="646" caption="Change default password on first login" position="center" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JTLWE8-wOtgk2p1au6Z3x_image.png" size="80" width="1901" height="872" caption="Litmus Edge Dashboard" position="center" showCaption="true"}

## Password Requirements

Password requirements are applied when you reset your password or create user accounts within Litmus Edge. At the first login, you will be prompted to change the default password. When creating a password, the password must meet the Password Policy Management Requirements. See [Policy Management](docId\:RJcVMjGrq0jMwlTB2caHS)&#x20;for more information.&#x20;


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

- Do not forget your password. For security reasons, there is no password recovery. If you lose the administrator password, you must reinstall Litmus Edge.
- In some cases, you may need to use the [Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) as you may have no direct network access to the device. In this case, you can connect locally to the device using a keyboard, mouse, and monitor. This will allow you to perform the required network setup to make the device accessible through the Web UI.
:::

## Support Links on Litmus Edge

The user name icon at the top-right of the Litmus Edge toolbar opens a menu that offers support and information options.&#x20;

- **User Manual:** Opens the Litmus Documentation Portal where you can select the relevant guide or manual.
- **Litmus Support:&#x20;**&#x4F;pens Litmus Customer Portal where you can contact the support team.
- **Litmus University:** Opens Litmus LMS where you can take online courses for Litmus products.
- **View License:&#x20;**&#x44;isplays the End-User License Agreement.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AkYnTY8DMJSuH8AZdl6fn_image.png" size="80" width="1426" height="545" caption="Litmus Edge Support Links" position="center" showCaption="true"}

# Activate a License

You will need to activate a license to access Litmus Edge features if:&#x20;

- Your trial license or production license has expired.&#x20;
- You are running Litmus Edge through Docker.&#x20;

:::hint{type="info"}
**Note**: If you can access Litmus Edge features and would still like to activate a license, see [Activate a License Online if Your Current License is Not Expired](docId\:ew63TzR21xC_8mkhmT1mp) and [Activate a License Offline if Your Current License is Not Expired](docId\:G1c_-lr4pvtRxoqx-DXYN).&#x20;
:::

To decide the most optimal license for your Litmus Edge configuration, see [Site and Node-Locked License Overview for Litmus Edge](docId\:nbX0O6C5ylSh-qVy0sdJc) for details. You have the following options for activating a license.&#x20;

## Option 1: Activate Litmus Edge with Litmus Edge Manager

To activate Litmus Edge with Litmus Edge Manager, Litmus Edge Manager must have a site license on its own license server. See [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) to learn more.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JLiB--oTbxF-bMucYduM5_image.png" size="80" width="871" height="450" caption="Activation fields for Litmus Edge Manager activation" position="center" showCaption="true"}

## Option 2: Activate Litmus Edge with License Server

You can activate a Litmus Edge license by setting a license server in Litmus Edge under **Advanced Options**. See [Set a License Server](docId\:O7eilD-y-IaNlsjKtaSli) to learn more.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OIGsv_Q4621EFm8IHq4WQ_image.png" size="80" width="870" height="564" caption="License Server Settings option" position="center" showCaption="true"}

## Option 3: Activate Node-Locked License

You can activate a node-locked license for the Litmus Edge instance under **Advanced Options**. See [Activate a License Online if Your Current License is Expired](docId\:ew63TzR21xC_8mkhmT1mp) and [Activate a License Offline if Your Current License is Expired](docId\:G1c_-lr4pvtRxoqx-DXYN) to learn more.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qUgoS0VxjAYk111YGBlFV_image.png" size="80" width="870" height="812" caption="Node-locked license" position="center" showCaption="true"}


[title] GE Fanuc 90-30 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/GE Fanuc/

Review the following information for setting up and configuring the GE Fanuc 90-30 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items      |
| ---------------------------- | --------------------- |
| **Driver type**              | Ethernet              |
| **Validated devices/series** | GE Fanuc Series 90-30 |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

Refer to the following device details:

- Device: GE Fanuc 90-30 IC693CPU363
- Device type (driver): GE 90-30 Series (Ethernet)
- I/F: Ethernet

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | GE Fanuc                                 |
| **Driver**          | GE Fanuc 90-30 Ethernet (Gen1)           |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 18245                                    |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** |
| -------- | --------------- | ------------------ | --------------- | --------------- |
| I\_Bit   | bit             | DDDDD              | 1               | 32768           |
| Q\_Bit   | bit             | DDDDD              | 1               | 32768           |
| M\_Bit   | bit             | DDDDD              | 1               | 32768           |
| G\_Bit   | bit             | DDDDD              | 1               | 32768           |
| T\_Bit   | bit             | DDDDD              | 1               | 32768           |
| SA\_Bit  | bit             | DDDDD              | 1               | 32768           |
| SB\_Bit  | bit             | DDDDD              | 1               | 32768           |
| SC\_Bit  | bit             | DDDDD              | 1               | 32768           |
| S\_Bit   | bit             | DDDDD              | 1               | 32768           |
| I        | word            | DDDDD              | 1               | 32753           |
| Q        | word            | DDDDD              | 1               | 32753           |
| M        | word            | DDDDD              | 1               | 32753           |
| G        | word            | DDDDD              | 1               | 32753           |
| T        | word            | DDDDD              | 1               | 32753           |
| SA       | word            | DDDDD              | 1               | 32753           |
| SB       | word            | DDDDD              | 1               | 32753           |
| SC       | word            | DDDDD              | 1               | 32753           |
| S        | word            | DDDDD              | 1               | 32753           |
| R        | word            | DDDDD              | 1               | 32768           |
| AI       | word            | DDDDD              | 1               | 32768           |
| AQ       | word            | DDDDD              | 1               | 32768           |
| W        | word            | DDDDDDD            | 1               | 5000000         |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Access the Terminal User Interface
[path] QuickStart Guide/Access the Litmus Edge Web UI/

In some cases, you may need to use the terminal user interface (TUI) as you may have no direct network access to the device. In this case, you can connect locally to the device using a keyboard, mouse, and monitor. This will allow you to perform the required network setup to make the device accessible through the Web UI.

Using the TUI on the gateway device makes it possible to configure Litmus Edge if network access is not possible and you have physical access to the device.

# Connect a Keyboard and Monitor

The Gateway device has back-panel connectors for the monitor and a keyboard. These allow you to access the configuration options of the installed Litmus Edge operating system.

You can:

- Connect a keyboard (for example, a USB connection).
- Connect a monitor (for example, an HDMI, Micro HDMI, or VGA connection).

# Log in to the TUI after Initial Installation

When the system startup is complete, the TUI welcome screen displays the IP addresses and network interface settings. See the section below, *Navigating the TUI*, for tips on using the keyboard to navigate.

The eth0 Ethernet interface is required on first boot.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PGJBXDQvvt0pS53OSwQu8_le-tui-bootup-v3150.png" size="80" width="872" height="290" caption="Litmus Edge Terminal with IP Address" position="center" showCaption="true"}

**To log in to the TUI after the initial installation:**

1. Press **F2** to enter the setup.
2. When logging in for the first time, you need to select the keyboard layout. The *us* layout is sufficient for most English keyboards. To select another layout, scroll up/down the list using the up/down arrows on your keyboard.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BNURNY7A1jxyXmWgBmKo__01-r4l7y6hhvvvrocarm40ttuikeyboard.png" size="80" width="765" height="310" caption="Keyboard selection" position="center" showCaption="true"}
3. Press **Enter** to apply the layout and display the login screen. If this is the first time anyone is logging in to this edge device, the credentials are: `admin` / `litmusedge`.&#x20;
4. Enter your credentials. If this is the first time anyone is logging in to this edge device, the credentials are: `admin` / `litmusedge`. Use the **Tab&#x20;**&#x6B;ey to move fields.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tFb7jGQ7P4jIChnHCCkrr_02-4m3cv6nvxc3h8grzolvotuilogin.png" size="80" width="432" height="201" caption="Login screen" position="center" showCaption="true"}
5. Tab to *Log In* and press **Enter**.

If this is the first time logging in to Litmus Edge, refer to the following *Log in to Litmus Edge for the First Time* section.&#x20;

# Log in to Litmus Edge for the First Time

If you are logging in to Litmus Edge for the first time, the end-user license agreement (EULA) is displayed.

**To log in to Litmus Edge for the first time:**

1. Use the down arrow key to scroll through the agreement.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CcZLQJx46b3BKALDyr0L2_03-hvglcqekd50ujv3nz6b8sloopedgetui-eula.png" size="80" width="952" height="700" caption="Terms and conditions" position="center" showCaption="true"}
2. Press **Enter** to accept the agreement. The *Change Password* screen is displayed.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/inZ1c6pI0_uj_BibGk9dc_04-e5qucx7hye2lnjpwlvz4rtuichangelogin.png" size="80" width="750" height="252" caption="Change password screen" position="center" showCaption="true"}
3. Enter the old password (`litmusedge`) when logging in for the first time.
4. Enter the new password and confirm it by entering that password again. See [Policy Management](docId\:RJcVMjGrq0jMwlTB2caHS)   &#x20;for more information.
5. Tab to select **Change**, and then press **Enter**.

# Navigating the TUI

- The TUI logs you out if no activity occurs within a few minutes.
- To log in again, press **F2**.

The TUI is limited to keyboard input. Here are some tips for navigating the TUI with the keyboard:

- **F2**: Enter setup to configure settings.
- **F5**: Refresh the screen.
- **Tab**: Move the cursor from one field to the next.
- **Arrows keys**:
  - Move the cursor to select an item in a list, such as the TUI Configuration Options.
  - Use the **Arrow keys** to select an item, tab to **Next** at the bottom of the screen, then press **Enter** to advance to the screen of the selected option.
- **Enter**:
  - Accept the data and move to the next field.
  - Submit the form and display the next screen in the workflow.

## Example of TUI Navigation

When selecting an option:

- Use the **Arrow keys** to move through the list of TUI Configuration Options.
- Use the **Tab&#xA0;**&#x6B;ey to select the item highlighted by the cursor. The cursor moves to the *Next&#x20;*&#x62;utton.
- Press **Enter** when the cursor is on the *Next&#x20;*&#x62;utton to advance to the screen of the selected option.

# Configure Litmus Edge Using the TUI

The TUI has many of the same options that are available through the web browser interface.

Many of these settings need to be set when first deploying a device. Several options can be set later.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/q9a_MPDsayuBGVvmNkGr__loopedgetuioptions1.png" size="80" width="517" height="368" caption="Litmus Edge Terminal System Configurations" position="center" showCaption="true"}

## Configure Interfaces

Select the interface configuration type and enter the details.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vtp6y8K5nLJDrgzYV_MzL_loopedgetuiconfigureinterface-1.png" size="80" width="400" height="155" caption="Litmus Edge Terminal Interface Configurations" position="center" showCaption="true"}

**In the following example, you can set a static IP address by providing the following information**:

- **CIDR**: This Classless Inter-Domain Routing (CIDR) notation identifies a block of IP addresses, similar to network subnetting. This example of CIDR notation (`192.168.0.15/24`) means that the first 24 bits of the IP address are used for network routing.
- **Gateway**: The default gateway address on a network can be found using the `ipconfig` command.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/F3s2WX4XK4I2GnRbcmZ-8_tuiinterfaces.png" size="80" width="444" height="264" caption="Litmus Edge Terminal Interface CIDR/Gateway Configuration" position="center" showCaption="true"}

## Configure DNS

Use this dialog to enter space-separated IP addresses of the DNS servers.

- At least one server is required.
- If internet access is enabled, only the first three servers are used.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/93mjWnIAnhjuXen7xLYO-_tuidns.png" size="80" width="750" height="213" caption="Litmus Edge Terminal DNS configuration" position="center" showCaption="true"}

## Configure Docker Subnet

Enter the default subnet for Docker and select **Apply**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QinUG4bqQltaHYQwbiJw1_loopedgetuidockersubnet.png" size="80" width="482" height="185" caption="Litmus Edge Terminal Docket Subnet configuration" position="center" showCaption="true"}

## Configure Time

Network Time is the recommended configuration.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/i80K5jrP14fUL2ZdfJtQu_tuitime.png" size="80" width="761" height="216" caption="Litmus Edge Terminal Time Configuration" position="center" showCaption="true"}

Enter NTP (Network Time Protocol) servers and select **Apply**.

Two or more NTP servers is recommended.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KyzrGfb0u0J4R4Zc6XSQP_tuintp.png" size="80" width="669" height="263" caption="Litmus Edge Terminal NTP server configuration" position="center" showCaption="true"}

## Set Timezone

The time zone setting is significant because it is used for data collected by the system and log timestamps. See [System Troubleshooting](docId\:vwzGI3keiAp21vdOvLxrd) to learn more.&#x20;

It is best practice to use UTC for your time zone.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/paQ691VickYOivEjhceN7_tuitimezone.png" size="80" width="744" height="310" caption="Litmus Edge Terminal Time zone configuration" position="center" showCaption="true"}

## Change Country

Country is the physical location of the device. This affects the frequency band of the WLAN adapter.

Choosing the appropriate frequency band of the WLAN adapter is a legal requirement.


::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nwJ6JI7UbDLQP_9kxoDhP_tuicountry.png" size="80" width="716" height="311" caption="Litmus Edge Terminal Country Configuration" position="center" showCaption="true"}

## Change Keyboard Layout

Use this menu to change the keyboard layout to match the keyboard layout of your country.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7vVMDs0jwyUQSwI4fUtmN_tuikeyboard.png" size="80" width="765" height="310" caption="Litmus Edge Terminal Keyboard Configuration" position="center" showCaption="true"}

## Manage Cloud Activation

Use this option to activate the Litmus Edge device with Litmus Edge Manager.

This TUI option should only be used when someone at another location is accessing Litmus Edge Manager through a web browser. Contact Litmus to provide the activation code to the TUI user.

The validity period of the activation code is usually several minutes. See [Activate a License](docId\:ew63TzR21xC_8mkhmT1mp) for more information.

Enter the activation code and select **Activate**.


::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Lw0CM0KoOl7LFizDs6hHE_tuicloud.png" size="80" width="763" height="166" caption="Litmus Edge Terminal Cloud Activation" position="center" showCaption="true"}

If your edge device had already been cloud-activated, the activation details are shown.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ypuniQ2iQXMG0m3HoZUFK_loopedgetuicloudconfiguration1.png" size="80" width="664" height="283" caption="Litmus Edge Terminal Activation details" position="center" showCaption="true"}

To deactivate the edge device, select **Deactivate**.

## Manage License

Use this option to enter a license key.

:::hint{type="info"}
**Notes**: For Litmus Edge version 3.11.0 and later, you can't enter a site-based license key through the TUI. To enter a site-based license or to complete offline license activation, you will need to use the Web UI for Litmus Edge or Litmus Edge Manager. Refer to the following for more information.&#x20;

- [Licenses](docId\:xa4e89MI09GOTjpoJvIug) for Litmus Edge
- [Licenses](docId\:Zurp8hVnSYJMgcZ1mceUQ) for Litmus Edge Manager
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qcpjZwPzHxC5O2CzMjEbT_tuilicense.png "Litmus Edge Terminal License Configuration")

## Manage Services

Select or deselect the required service and select **Apply**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DGy5Bb4nx8UpAFGweSQgS_tuiservselect.png" size="80" width="387" height="192" caption="Litmus Edge Terminal Services Configuration" position="center" showCaption="true"}

## Change Password

See [Policy Management](docId\:RJcVMjGrq0jMwlTB2caHS)&#x20;for more information.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cM1YEc5IH8bRGIoTl2wYp_tuichangelogin.png "Litmus Edge Terminal Change Password configuration")

## Configure Static Routes

:::hint{type="info"}
**Note**: The ability to configure static routes is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

See [Manage Static Routes](docId\:Co_QNOa4j7R84FfBXEZqL) for more information.&#x20;

:::hint{type="warning"}
**Warning**: Incorrect static routes can break network connections. Please add or modify with caution.
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SuHm6ZZSNenkmdjZ2334u_image.png "Configure Static Routes section")

## Reboot

**If you decide to reboot:**

Use the arrow keys to select **Cancel**, then press **Enter**.

The operating system reboots and returns to the initial screen where you can once again press **F2** to log in, then choose TUI Configuration Options.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Osqy_5uEZ0vPkXLzchiCz_tuireboot.png" size="80" width="356" height="161" caption="Litmus Edge Terminal Reboot configuration" position="center" showCaption="true"}

## Shutdown

**If you decide to not shut down the operating system**:

Use the arrow keys to select **Cancel**, then press **Enter**.

When you shut down Litmus Edge, the TUI interface closes.


::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_cUL_L5QiuuoawJFUqqqy_tuishutdown.png" size="80" width="358" height="165" caption="Litmus Edge Terminal Shutdown" position="center" showCaption="true"}


[title] Beckhoff ADS/AMS Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Beckhoff/

Review the following information for setting up and configuring the Beckhoff ADS/AMS Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                  |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                          |
| **Validated devices/series** | [Beckhoff TwinCAT 2](https://www.beckhoff.com/en-us/products/automation/twincat/txxxxx-twincat-2-base/txxxxx-twincat-2-base.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.

:::hint{type="info"}
**Note**: Make sure Litmus Edge IP address is configured in TWINCAT.
:::

**To configure your device:**

1\. Note down the following information and refer to it as needed.&#x20;
&#x20;    **Device**: Beckhoff CX1100-002
&#x20;    **Communication I/F**: Ethernet. Refer to the following figures.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rnp7bXed_-apBuJ-_kua6_image.png" size="80" width="654" height="500" caption="Beckhoff ADS/EMS Ethernet reference" position="center" showCaption="true"}

2\. Launch TwinCAT V2.11 Build 2302 software.

:::hint{type="info"}
**Note**: The Beckhoff PLC is also a PC with its own OS, and an IP address can be set up like a PC.
:::



3\. Click the TwinCAT icon in the Notification area, launch the system, and then click the system status indicator switch from Config Node (blue) to Running (green).

4\. Launch the PLC.

5\. Set up the target.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uUfSL4AFniSWnT0tfQwMD_beckhott-ads-ams-ethernet-target.png" size="80" width="786" height="487" caption="Ethernet target [1]" position="center" showCaption="true"}

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/K41_YwAfD2O_UOtVu5x29_beckhoff-ads-ams-ethernet-target2.png "Ethernet target \[2]")

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NhJWkfPTOnGte7-9NsZLW_beckhoff-ads-ams-ethernet-target3.png "Ethernet target \[3]")

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/77Tcz7vaxcKGZ3WGlR_89_beckhoff-ads-ams-ethernet-target4.png "Ethernet target \[4]")

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gxweNBAv05Wc4zLBLauc9_beckhoff-ads-ams-ethernet-target5.png "Ethernet target \[5]")

6\. Select the target.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fiM2YkaXCR0knFiWSiTrX_image.png "Target select \[1]")

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cs6y6UtOfNCXlgTtsnWun_image.png "Target select \[2]")

7\. Launch TwinCAT system manager and TwinCAT PLC Control.

8\. Click **Online > Login**, and then download the program and run the PLC.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                                                                                                                                                                             |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type**            | Beckhoff                                                                                                                                                                                          |
| **Driver**          | Beckhoff ADS/AMS Ethernet (Gen1)                                                                                                                                                                  |
| **Network Address** | The device address you defined in Step 1                                                                                                                                                          |
| **Network Port**    | 48898&#xA;Enter the network port for the Beckhoff device defined in Step 1                                                                                                                        |
| **Ads port**        | 801&#xA;Enter the ADS port for the Beckhoff device                                                                                                                                                |
| **Ams ID**          | AMS ID for the Beckhoff device<br />Enter the following: `[Beckhoff device Ams ID].1.1`&#xA;For example, if your Beckhoff Ams ID is 37.136.43.210, enter `37.136.43.210.1.1`.                     |
| **Local Ams ID**    | Local AMS ID for the Litmus Edge device&#xA;&#xA;Enter the following: `[Litmus Edge IP address].1.1`&#xA;For example, if your Litmus Edge IP address is 192.168.0.152, enter `192.168.0.152.1.1`. |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

Refer to the appropriate register table depending on your version of Litmus Edge.&#x20;

### Register Table for Litmus Edge 3.11.0 and Later

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | -------------- | ------------------ | --------------- | --------------- | --------------- |
| I        | bit, word      | DDDDDdd            | 0               | 6553515         | Input word      |
| Q        | bit, word      | DDDDDdd            | 0               | 6553515         | Output bit      |
| M        | bit, word      | DDDDDdd            | 0               | 6553515         |                 |

### Register Table for Litmus Edge 3.5.6 and Earlier

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | -------------- | ------------------ | --------------- | --------------- | --------------- |
| I        | bit            | DDDDDdd            | 0               | 6553515         | Input bit       |
| Q        | bit            | DDDDDdd            | 0               | 6553515         | Output bit      |
| M        | bit            | DDDDDdd            | 0               | 6553515         |                 |
| I        | word           | DDDDD              | 0               | 65535           | Input word      |
| Q        | word           | DDDDD              | 0               | 65535           | Output word     |
| M        | word           | DDDDD              | 0               | 65535           |                 |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] AB DF1 Ethernet
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 2 Drivers/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

Review the following information for setting up and configuring the AB DF1 Ethernet driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                               |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                                                                       |
| **Validated devices/series** | [PLC-5](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/discontinued-products/plc-5-controllers.html) |
| **Replaces Gen 1 driver(s)** | [AB PLC5 (Gen1)](docId:410fEWFmRkuUTpdcGnuT7)                                                                                  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                     | Value                                      |
| ----------------------------- | ------------------------------------------ |
| **Type**                      | Allen-Bradley                              |
| **Driver**                    | AB DF1 Ethernet                            |
| **Network Address**           | The device address you recorded in Step 1. |
| **Port**                      | 2222                                       |
| **Plc Type**                  | PLC5                                       |
| **Source ID (SRC Byte)**      | 0                                          |
| **Destination ID (DST Byte)** | 0                                          |
| **Read Timeout**              | 1000 (ms)                                  |
| **Retry Count**               | 0                                          |
| **Keep Alive**                | 60 (TCP Keep-Alive)                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

:::hint{type="info"}
**Note:&#x20;**&#x54;he register table below represents the PLC address format. In Litmus Edge, you will need to enter the tag address in decimal format. This means you must convert the PLC addresses for the Input and Output Data Files from octal format to decimal format.
:::

| **Name** | **Value Types** | **Access Types** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------- | ---------------- | ------------------ | --------------- | --------------- | --------------- |
| O        | uint            | R/W              | OOO                | 0               | 255             | Output          |
| O\_bit   | bit             | R/W              | OOOoo              | 0               | 25515           | Output          |
| I        | uint            | R/W              | OOO                | 0               | 255             | Input           |
| I\_bit   | bit             | R/W              | OOOoo              | 0               | 25515           | Input           |
| S        | uint            | R/W              | DDD                | 0               | 255             | Status          |
| S\_bit   | bit             | R/W              | DDDdd              | 0               | 25515           | Status          |
| B        | bit             | R/W              | DDDDDdd            | 0               | 3276015         | Binary          |
| T\_bit   | bit             | R/W              | DDDDD              | 0               | 32760           | Timer           |
| T        | uint            | R/W              | DDDDD              | 0               | 32760           | Timer           |
| C\_bit   | bit             | R/W              | DDDDD              | 0               | 32760           | Counter         |
| C        | uint            | R/W              | DDDDD              | 0               | 32760           | Counter         |
| R\_bit   | bit             | R/W              | DDDDD              | 0               | 32760           | Control         |
| R        | uint            | R/W              | DDDDD              | 0               | 32760           | Control         |
| N        | uint, int       | R/W              | DDDDD              | 0               | 32760           | Integer         |
| F        | float           | R/W              | DDDDD              | 0               | 32760           | Float           |
| D        | bcd             | R/W              | DDDDD              | 0               | 32760           | BCD             |
| A        | string          | R/W              | DDDDD              | 0               | 32760           | ASCII           |
| ST       | string          | R/W              | DDDDD              | 0               | 32760           | String          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values.&#x20;
- **Length**: Available for ASCII Data Files. Enter the number of characters for tag values.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] GE Fanuc SNP Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/GE Fanuc/

Review the following information for setting up and configuring the GE Fanuc SNP Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items  |
| ---------------------------- | ----------------- |
| **Driver type**              | Serial            |
| **Validated devices/series** | GE Fanuc VersaMax |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: GE Fanuc VersaMax Microax Micro, IC200UDR064

   **Communication I/F**: RS232. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uybBXWF-ml7i-6dgALThi_ge-fanuc-snp-serial.png" size="80" width="513" height="285" caption="GE Fanuc SNP Serial reference" position="center" showCaption="true"}
2. Launch Proficy Machine Edition v.80 software, and then select the COM port.
3. Click **Target > Go Online with Target1**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | GE Fanuc                          |
| **Driver**             | GE Fanuc SNP Serial (Gen1)        |
| **Communication Port** | Local Serial connection file path |
| **Baud Rate**          | 19200                             |
| **Data Bits**          | 8                                 |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station**            | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**        |
| -------- | --------------- | ------------------ | --------------- | --------------- | ---------------------- |
| I        | bit             | DDDDD              | 1               | 10000           | Input Relay            |
| Q        | bit             | DDDDD              | 1               | 10000           | Output Relay           |
| M        | bit             | DDDDD              | 1               | 10000           | Auxiliary Relay        |
| G        | bit             | DDDD               | 1               | 7680            |                        |
| T        | bit             | DDD                | 1               | 256             |                        |
| SA       | bit             | DDD                | 1               | 128             |                        |
| SB       | bit             | DDD                | 1               | 128             |                        |
| SC       | bit             | DDD                | 1               | 128             |                        |
| S        | bit             | DDD                | 1               | 128             |                        |
| R\_Bit   | bit             | DDDDDdd            | 100             | 3264015         | Data Register bit      |
| R        | word            | DDDDD              | 1               | 32640           | Data Register          |
| AQ       | word            | DDDDD              | 1               | 10000           | Analog output register |
| AI       | word            | DDDDD              | 1               | 10000           | Analog input register  |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] AB ControlLogix FreeTag (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

Review the following information for setting up and configuring the AB ControlLogix FreeTag (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                     |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Serial                                                                                                                                                                                                                               |
| **Validated devices/series** | [ControlLogix](http://ab.rockwellautomation.com/)<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed.&#x20;
   **Device**: AB ControlLogix FreeTag 1756-L55
   **Communication I/F**: RS232. Refer to the following figure.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SSp4v8C87SjqfCgvoTLwD_ab-controllogix-freetag.png "AB ControlLogix FreeTag")
2. Launch RSLinx Classic, and then click **Configure Drivers**.
3. Add a new RS-232-DF1 driver.
4. Set up the communication port and set up parameters as follows, and then click **Auto-Configure**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tqIEohWhk6dy_BhOWLt9g_ab-controllogix-freetag-auto-configure482x338.png" size="80" width="482" height="338" caption="Configure parameters" position="center" showCaption="true"}
5. Right-click the Ethernet communication module and select **Module Configuration&#xA0;**&#x74;o set up its network parameters.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Allen-Bradley                     |
| **Driver**             | AB ControlLogix FreeTag (Gen1)    |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 19200                             |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Slot**               | 0                                 |
| **Communication Port** | Local Serial connection file path |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following tag parameters and available value types.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the case-sensitive register name exactly as it is defined in the PLC.

A **Connected** status for the device won't display until a tag with a correct register name is created.

## Available Value Types

- `bool`
- `sint`
- `int`
- `bit(int)`
- `dint`
- `real`
- `lint`

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] AB Flex Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

Review the following information for setting up and configuring the AB Flex Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                                                                                             |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                                                                                       |
| **Validated devices/series** | FlexLogix<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Use PLC software on your computer to configure the device for serial access.&#x20;

Refer to the following parameters.&#x20;

**Communication mode**: DF1 No Handshake protocol 19200, None, 8, 1 (default). Error Check: BCC, Station Address: 1

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Allen Bradley                     |
| **Driver**             | AB Flex Serial (Gen1)             |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 19200                             |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following tag parameters and available value types.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the case-sensitive register name exactly as it is defined in the PLC.

A **Connected** status for the device won't display until a tag with a correct register name is created.

## Available Value Types

- `bool`
- `sint`
- `int`
- `dint`
- `real`
- `lint`

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] VirtualBox MacOS
[path] QuickStart Guide/Installation and Deployments/ISO Installation on Hypervisors/

You can use Oracle VirtualBox on MacOS BigSur to install Litmus Edge.

# Before You Begin

- Prepare your environment for running virtualization by using Oracle VirtualBox.&#x20;
  - Review [Verified VM Versions](docId:36xPLuILTp2QajsR8ltHw) and confirm the correct version to download. See  [VirtualBox Downloads](https://www.virtualbox.org/wiki/Downloads).&#x20;
  - Refer to [VirtualBox Documentation](https://www.virtualbox.org/wiki/Documentation) to learn more.&#x20;
  - The virtual machine will run on the same physical network card as the host environment. To ensure that the device can communicate with data sources such as PLC, DCS or CNC and can be accessed through the Web UI, make sure that communication can be established.
- Adjust the system clock for the host environment prior to installing Litmus Edge. UTC is recommended. The 15-day trial period may be rejected and invalidated by the license server if the system clock is not adjusted. If this happens, contact your Litmus representative.&#x20;
- Obtain a valid file in the ISO format (example filename: `<litmusedge-std_3.1.5.0-amd64>.iso`). You can get the ISO file from the [Litmus Central portal](https://central.litmus.io/).

To use VirtualBox on MacOS BigSur to install Litmus Edge, you will need to do the following.&#x20;

- Step 1: Create a Virtual Machine
- Step 2: Configure Settings
- Step 3: Log in to Litmus Edge

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Create a Virtual Machine

You will first need to create the virtual machine that will run Litmus Edge.&#x20;

**To create the virtual machine:**

1. Start the Oracle VirtualBox application.&#x20;
2. Click the **New&#x20;**&#x69;con.&#x20;
3. From the Name and operating system dialog box, configure the following.&#x20;
   - **Name**: Enter a name for the virtual machine.&#x20;
   - **Type**: Select **Other**.&#x20;
   - **Version**: Select **Other/Unknown (64-bit)**.&#x20;
4. Click **Continue**.&#x20;
   The *Memory size* dialog box appears.
5. From the Memory size dialog box, enter `4096` in the **MB&#x20;**&#x66;ield.&#x20;
6. Click **Continue**.&#x20;
   The *Hard disk* dialog box appears.&#x20;
7. From the *Hard disk* dialog box, select **Create a virtual hard disk now** and click **Create**.
   The *Hard disk file type* dialog box appears.
8. From the *Hard disk file type* dialog box, Select **VDI** (**VirtualBox Disk Image**) and click **Continue**.
   The *Storage on physical hard disk dialog box* appears.
9. From the *Storage on physical hard disk dialog box*, select **Fixed size&#x20;**&#x61;nd click **Continue**.&#x20;
   Th&#x65;*&#x20;File location and size* dialog box appears.
10. From the *File location and size* dialog box, Enter `32.00` in the **Size** field and click **Create**.&#x20;
    The progress bar appears, and then th&#x65;*&#x20;Hard disk&#x20;*&#x64;ialog box appears.
11. From the *Hard disk* dialog box, select **Create a virtual hard disk now** and click **Create**.
    The *VirtualBox Manager* appears.

# Step 2: Configure Settings

After installing the virtual machine, you will need to configure its settings.&#x20;

**To configure the settings:**

1. From the open Oracle VirtualBox application, select the deployed virtual machine from the left pane.
2. Click the **Settings** icon, and then click the **General** section in the right pane.
   The *General&#x20;*&#x64;ialog box appears.
3. From the *General&#x20;*&#x64;ialog box, select the **System** icon at the top.
   The *System&#x20;*&#x64;ialog box appears.
4. From the *System&#x20;*&#x64;ialog box, configure the following.&#x20;
   - **Enable I/O APIC**: Select the checkbox.
   - **Hardware Clock in UTC Time**: Select the checkbox.
   - **Processor**: Click **Processor&#x20;**&#x61;nd enter `2`.&#x20;
5. Click **Storage**.&#x20;
   The *Storage&#x20;*&#x64;ialog box appears.
6. From the *Storage&#x20;*&#x64;ialog box, select the **Empty** device in the left pane.
7. Hover over the **Optical Drive** icon and select **Choose a disk file**.
8. Navigate to the *ISO&#x20;*&#x66;ile, and then click **Open**.
9. Click **Network**.
   The *Network&#x20;*&#x64;ialog box appears.
10. From the *Network&#x20;*&#x64;ialog box, selec&#x74;**&#x20;Bridged Adapter&#x20;**&#x66;rom the *Attached to* drop-down list and the appropriate network card name.&#x20;
11. Click **OK**.&#x20;
    The *VirtualBox Manager* appears.
12. From th&#x65;*&#x20;VirtualBox Manager*, Click **Start**.
    The Terminal User Interface (TUI) opens and runs the installation you configured, and then the VirtualBox Manager appears.
13. Click **Settings**, and then click **System**.
14. From the *System&#x20;*&#x64;ialog box, configure the following:
    - **Optical**: Uncheck the check box.&#x20;
    - **Hard Disk**: Select **Hard Disk** and click the **Up** arrow to move it up in the boot order.
    - **Enable EFI (special OSes only)**: Select the check box.&#x20;
15. Click **OK**.&#x20;
    The *VirtualBox Manager* appears.
16. Click **Start**.&#x20;

The VM starts up and the terminal window displays the URLs to be used to access the edge device through the Web UI. If several URLs are shown, use the first one.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JJVFrtma1Ce-ow2-N7VQL_image.png "URLs to access Web UI")

After you create the virtual machine, you must configure the network adapters.

# Step 3: Log in to Litmus Edge

- See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;
- See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for instructions on how to navigate and log in for the first time.

# Troubleshooting

If you don't see an option for a 64-bit version and only see a 32-bit version, refer to [Installation and Deployments Troubleshooting](docId\:IHIEwQEAMZnmwuo93HwYo).


[title] AB ControlLogix (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

:::hint{type="warning"}
**Important**: This driver was deprecated in Litmus Edge version 3.5.2.  We recommend using the Gen 2 [AB CompactLogix Ethernet FreeTag](docId\:RnJtfL6l5lXb52iFF6QJm).&#x20;
:::

Review the following information for setting up and configuring the AB ControlLogix (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter        | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**                | Ethernet                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **Validated devices/series**   | [Rockwell Automation ](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/large-controllers/controllogix.html)[Allen-Bradley ControlLogix](http://ab.rockwellautomation.com/)<br />Certain device drivers do not have a list of register names in the DeviceHub Add Tag form. These are *Free Tag* PLCs. For Free Tag requirements, see [Device Connectivity Status](docId\:okFkYcmKRIrYz8gtRQMh9).  |
| **Replaced with Gen 2 driver** | [AB CompactLogix Ethernet FreeTag](docId\:RnJtfL6l5lXb52iFF6QJm)                                                                                                                                                                                                                                                                                                                                                                                    |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

The instructions listed here provide only the basic configuration steps. Refer to the Rockwell Automation Allen-Bradley PLC documentation for current, complete details.

1. Set the PLC IP address.
2. Create new tags (Controller and Program tags supported).
3. Export tag data to a CSV file: **Tools > Export > Tags and Logic Comments**.

The CSV consists of PLC settings along with the Tags which can be read using Litmus Edge.

**To configure the PLC:**

1. Note down the following information and refer to it as needed.&#x20;
   **Device**: AB ControlLogix 1756-L55
   **Communication I/F**: Ethernet. Refer to the following figure.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zEQd-2740g_Zsc2OX0rYu_ab-controllogix.png "AB ControlLogix")
2. Launch RSLinx 5000 v16 Software, and then click **Configure Drivers**.
3. Add a new RS-232-DF1 driver.
4. Set up the communication port and parameters, and then click **Auto-Configure**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7QyA_xCTHD9zAx2Q5k1Q5_ab-controllogix-parameters482x338.png "AB ControlLogix parameters")
5. Right-click the **Ethernet communication module > Module Configuration&#xA0;**&#x74;o set up its network parameters.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AxeVXfbt4vsV69LkCoZDY_ab-controllogix-network.png "AB ControlLogix network")
6. Add an Ethernet Device driver.
7. Click **Configure&#xA0;**&#x61;nd select the IP for the device.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XLMpMQXePiGDMqEvPduxP_ab-controllogix-configure.png "AB ControlLogix configure")

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Allen-Bradley                            |
| **Driver**          | AB ControlLogix (Gen1)                   |
| **Network address** | The device address you defined in Step 1 |
| **Port**            | 44818                                    |
| **Slot Number**     | 0                                        |

# Step 3: Configure the List of Registers

:::hint{type="info"}
**Note**: The **Browse** icon displayed on the device tile means that this PLC uses Browse Tags. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX)  for more information. [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX)
:::

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, use the following tag/register mapping table.

| **Name** | **Value Type** |
| -------- | -------------- |
| R        | BOOL           |
| R        | SINT           |
| R        | INT            |
| R        | BIT(INT)       |
| R        | DINT           |
| R        | REAL           |
| R        | LINT           |


[title] OVA Installation on Virtual Machine
[path] QuickStart Guide/Installation and Deployments/

You can complete the following OVA installations:

- [VirtualBox OVA Installation](docId\:vLrRM0_PGvQMqcYxPDItO)&#x20;
- [ESXi](docId\:bS5hrmmzlhmD7SkBHC5GW)&#x20;


[title] GE Fanuc
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**        | **Validated Ethernet DeviceHub Drivers**                        | **Validated Serial DeviceHub Drivers**                      |
| --------------------- | --------------------------------------------------------------- | ----------------------------------------------------------- |
| GE Fanuc Series 90-30 | [GE Fanuc 90-30 Ethernet (Gen1)](docId\:cWxmPkdPUepp4R8JuBc4a)  | [GE Fanuc CMM Serial (Gen1)](docId\:k6sQxplkwtMWGML3TE88D)  |
| GE Fanuc RX3i Series  | [GE Fanuc RX3i Ethernet (Gen1)](docId\:Qdf3BjK1s43qRz6v0Bm-C)   | [GE Fanuc RX3i Serial (Gen1)](docId\:KekEiVlwzT4ijLJa3EKru) |
| GE Fanuc VersaMax     |                                                                 | [GE Fanuc SNP Serial (Gen1)](docId:8jQNu1kjvehcXJhccrYvC)   |


[title] AB PLC5 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

Review the following information for setting up and configuring the AB PLC5 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                              |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                      |
| **Validated devices/series** | [PLC5](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/discontinued-products/plc-5-controllers.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1\. Note down the following information and refer to it as needed.&#x20;
&#x20;    **Device**: Allen Bradley
&#x20;    **Communication I/F**: Ethernet. Refer to the following figures.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3RQglYQ3cGcU4r8l5dPFV_image.png" size="80" width="604" height="694" caption="AB PLC5 Ethernet reference [1]" position="center" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OuHoVyIOnnaBzlh_h8Xui_image.png" size="80" width="449" height="416" caption="AB PLC5 Ethernet reference [2]" position="center" showCaption="true"}

2\. Connect the device to your PC with Serial Port 25-pin D-shell cable.

3\. Launch RXLinx Classic, click the **Configure driver** icon, and add an **RS232 DF1** device driver.

4\. Configure the driver as follows, and then click **Auto Configure**.

5\. Launch RSLogix 5 pro v8.00, and then click **Comm > Who Active Go Online**.

6\. Find the device to be connected, and click **Online**.

7\. Check communication settings in *Channel Configuration*. Use Channel 1.

8\. Use Channel 3A to set up the IP Address.

9\. List the data types that the PLC supports.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Allen-Bradley                            |
| **Driver**          | AB PLC5 Ethernet (Gen1)                  |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 2222                                     |
| **Slot Number**     | 0                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

Refer to the appropriate register table depending on your version of Litmus Edge.&#x20;

###

| **Name** | **Value Type** | **Access Types&#x20;** | **Address Format** | **Min Address** | **Max Address** | **Description**                    |
| -------- | -------------- | ---------------------- | ------------------ | --------------- | --------------- | ---------------------------------- |
| I        | bit            | R/W                    | DDDdd              | 0               | 25515           | Input bit                          |
| O        | bit            | R/W                    | DDDdd              | 0               | 25515           | Output bit                         |
| S        | int            | R/W                    | DDD                | 0               | 255             | Status file                        |
| B3       | bit            | R/W                    | DDDdd              | 0               | 25515           |                                    |
| Bfn      | bit            | R/W                    | FFFDDDdd           | 10000           | 25525515        |                                    |
| T4.ACC   | int            | R/W                    | DDD                | 0               | 255             | Timer Accumulator (T4)             |
| T4.PRE   | int            | R/W                    | DDD                | 0               | 255             |                                    |
| Tfn.ACC  | int            | R/W                    | FFFDDD             | 10000           | 255255          |                                    |
| Tfn.PRE  | int            | R/W                    | FFFDDD             | 10000           | 255255          |                                    |
| CS.ACC   | int            | R/W                    | DDD                | 0               | 255             | Counter Accumulator (CS)           |
| CS.PRE   | int            | R/W                    | DDD                | 0               | 255             |                                    |
| Cfn.ACC  | into           | R/W                    | FFFDDD             | 10000           | 255255          |                                    |
| Cfn.PRE  | int            | R/W                    | FFFDDD             | 10000           | 255255          |                                    |
| R6       | int            | R/W                    | DDD                | 0               | 255             | Control File(R6)                   |
| R6.POS   | int            | R/W                    | DDD                | 0               | 255             | Control file pointer position (R6) |
| R6.LEN   | int            | R/W                    | DDD                | 0               | 255             |                                    |
| Rfn      | int            | R/W                    | FFFDDD             | 0               | 255255          |                                    |
| Rfn.POS  | int            | R/W                    | FFFDDD             | 0               | 255255          |                                    |
| Rfn.LEN  | int            | R/W                    | FFFDDD             | 0               | 255255          |                                    |
| N7       | int, bit(int)  | R/W                    | DDDdd              | 0               | 25515           |                                    |
| Nfn      | int, bit(int)  | R/W                    | FFFDDD             | 10000           | 25599915        |                                    |
| Lfn      | int            | R/W                    | FFFDDD             | 10000           | 255999          |                                    |
| F8       | float          | R/W                    | DDD                | 0               | 255             |                                    |
| Ffn      | float          | R/W                    | FFFDDD             | 10000           | 255999          |                                    |

### Register Table for Litmus Edge 3.5.6 and Earlier

| **Name** | **Value Type** | **Access Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                    |
| -------- | -------------- | ---------------- | ------------------ | --------------- | --------------- | ---------------------------------- |
| I        | bit            | R/W              | DDDdd              | 0               | 25515           | Input bit                          |
| O        | bit            | R/W              | DDDdd              | 0               | 25515           | Output bit                         |
| S        | int            | R/W              | DDD                | 0               | 255             | Status file                        |
| B3       | bit            | R/W              | DDDdd              | 0               | 25515           |                                    |
| Bfn      | bit            | R/W              | FFFDDDdd           | 10000           | 25525515        |                                    |
| T4.ACC   | int            | R/W              | DDD                | 0               | 255             | Timer Accumulator (T4)             |
| T4.PRE   | int            | R/W              | DDD                | 0               | 255             |                                    |
| Tfn.ACC  | int            | R/W              | FFFDDD             | 10000           | 255255          |                                    |
| Tfn.PRE  | int            | R/W              | FFFDDD             | 10000           | 255255          |                                    |
| CS.ACC   | int            | R/W              | DDD                | 0               | 255             | Counter Accumulator (CS)           |
| CS.PRE   | int            | R/W              | DDD                | 0               | 255             |                                    |
| Cfn.ACC  | into           | R/W              | FFFDDD             | 10000           | 255255          |                                    |
| Cfn.PRE  | int            | R/W              | FFFDDD             | 10000           | 255255          |                                    |
| R6       | int            | R/W              | DDD                | 0               | 255             | Control File(R6)                   |
| R6.POS   | int            | R/W              | DDD                | 0               | 255             | Control file pointer position (R6) |
| R6.LEN   | int            | R/W              | DDD                | 0               | 255             |                                    |
| Rfn      | int            | R/W              | FFFDDD             | 0               | 255255          |                                    |
| Rfn.POS  | int            | R/W              | FFFDDD             | 0               | 255255          |                                    |
| Rfn.LEN  | int            | R/W              | FFFDDD             | 0               | 255255          |                                    |
| N7       | int            | R/W              | DDD                | 0               | 255             |                                    |
| N7       | bit(int)       | R/W              | DDDdd              | 0               | 25515           |                                    |
| Nfn      | int            | R/W              | FFFDDD             | 10000           | 255999          |                                    |
| Nfn      | bit(int)       | R/W              | FFFDDDdd           | 1000015         | 25599915        |                                    |
| Lfn      | int            | R/W              | FFFDDD             | 10000           | 255999          |                                    |
| F8       | float          | R/W              | DDD                | 0               | 255             |                                    |
| Ffn      | float          | R/W              | FFFDDD             | 10000           | 255999          |                                    |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Delta DVP (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Delta PLC/

Review the following information for setting up and configuring the Delta DVP (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                   |
| ---------------------------- | -------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                           |
| **Validated devices/series** | [Delta DVP Series](https://www.deltaww.com/en-us/products/PLC-Programmable-Logic-Controllers/ALL/) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: Delta DVP-12E

   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RqwYXlHKKaIUbw_icmg_r_delta-svp.png" size="80" width="395" height="417" caption="Delta DVP reference" position="center" showCaption="true"}
2. Launch IPSoft V3.06 software, and then open a new project.
3. Search for the device.&#x20;
4. Click the device, click the **Basic&#x20;**&#x74;ab, and set up the network parameters.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/muNbDiHj-4OYEf9MZ4DHM_delta-svp-parameters.png "Network parameters")
5. Launch COMMGR and configure the driver.
6. Click **Tool > Communication Setting**, select the driver, and then click **Connect**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Y04zsLdSa-_6vkoBLljr2_delta-svp-connection.png" size="80" width="933" height="397" caption="Connect option" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Delta PLC                                |
| **Driver**          | Delta DVP (Gen1)                         |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 502                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** |
| -------- | --------------- | ------------------ | --------------- | --------------- |
| C\_Bit   | bit             | DDD                | 0               | 255             |
| M        | bit             | DDDD               | 0               | 4095            |
| S        | bit             | DDDD               | 0               | 1023            |
| T\_Bit   | bit             | DDD                | 0               | 255             |
| X        | bit             | OOO                | 0               | 571             |
| Y        | bit             | OOO                | 0               | 571             |
| T        | word            | DDD                | 0               | 255             |
| D        | word            | DDDDD              | 0               | 11999           |
| C\_32Bit | word            | DDD                | 200             | 255             |
| C        | word            | DDD                | 0               | 199             |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Atlas Copco
[path] QuickStart Guide/Industrial Systems Connection Guide/

For devices that support the Atlas Copco Open Protocol specification, you can use the [Torque Tool Ethernet (Gen1)](docId\:I0hxZVwaeGG8J5oUitl1m) DeviceHub driver.&#x20;


[title] Raspberry Pi Installation
[path] QuickStart Guide/Installation and Deployments/

You can install Litmus Edge on a Raspberry Pi (version 3 or 4) by using [balenaEtcher](https://etcher.balena.io/) (recommended for Windows, macOS, and Ubuntu) or terminal commands (for advanced users on Linux-based systems).&#x20;

:::hint{type="info"}
**Note**: You can't upgrade Litmus Edge versions on Raspberry Pi. You must reinstall newer Litmus Edge versions. See [Backup/Restore](docId\:Q_mfOXtLO2fAHvHW1JcEf) to learn more about backing up your data and managing templates before reinstalling a newer version.&#x20;
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kTXM_GkgQ5_5XYygKzZPk_rpi4.jpg" size="80" width="3047" height="2171" position="center" caption="Raspberry Pi 4 Model B" showCaption="true"}

# Before You Begin

- Make sure you use Raspberry Pi version 3 or 4.&#x20;
- Contact support\@litmus.io to get a Litmus Edge license.&#x20;
- Download the appropriate Litmus Edge image file (`litmusedge-std_[version number]-arm64.gz`) from the [Litmus Central Portal](https://central.litmus.io/).
- You will need to format an SD card (minimum of 16GB). See the steps below.

## Format SD Card

1. Remove the SD card from the Raspberry Pi and insert it into your computer.
2. Format the SD card to one partition using the FAT32 file system with a formatting tool such as [GParted](https://gparted.org/) or [Windows Disk Management](https://support.microsoft.com/en-us/windows/create-and-format-a-hard-disk-partition-bbb8e185-1bda-ecd1-3465-c9728f7d7d2e).

# Installation Using balenaEtcher

balenaEtcher is a user-friendly, graphical tool for writing images to SD cards, compatible with Windows, macOS, and Ubuntu.&#x20;

**To install using balenaEtcher:**

1. [Download](https://etcher.balena.io/#download-etcher) and open balenaEtcher on your computer.&#x20;
2. Click **Flash from file**, then select the Litmus Edge image file you downloaded.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NS7CYlyrzwl7Kz53IIDoK_balenaetcher01.png" size="80" width="800" height="505" position="center" caption="Flash from file option" showCaption="true"}
3. Click **Select target** and select your SD card.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RLWy2F3jmnns0y1D5SoN0_balenaetcher02.png" size="80" width="798" height="478" position="center" caption="Select target option" showCaption="true"}
4. Click **Flash&#x20;**&#x74;o start, then wait for balenaEtcher to finish.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hjGoIbphhOYq-sMKpTPg4_balenaetcher03.png" size="80" width="798" height="478" position="center" caption="Flash option" showCaption="true"}
5. Once balenaEtcher shows the completed screen, safely eject the SD card from your computer.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2I5fEwktOXVyGxCspykim_balenaetcher04.png" size="80" width="798" height="478" position="center" caption="Flash completed screen" showCaption="true"}
6. Insert the SD card into the Raspberry Pi and power up the Raspberry Pi.&#x20;
7. Litmus Edge will boot and the Litmus Edge Terminal User Interface (TUI) will appear if a monitor is connected to the Raspberry Pi.&#x20;

## Log in to Litmus Edge

Once the Litmus Edge TUI loads, you can log in to Litmus Edge.&#x20;

- See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for instructions on how to navigate and log in for the first time.
- See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;

# Installation Using Terminal&#x20;

Complete the following steps to install Litmus Edge using terminal commands.&#x20;

**To import the LE image from the terminal:**

1. Open a terminal window.
2. Use `df -h` to identify the mount point of your SD card.
3. Copy and run the commands below with your SD card's path and the downloaded Litmus Edge image file name. Replace `/dev/sde` with the correct mount path, and replace `litmusedge-std_3.11.0-arm64.gz` with the correct file name and Litmus Edge version based on the file you downloaded.&#x20;
   - The first two commands are used to set environment variables for the SD card mount and LE image file paths.
   - The third command unzips the image and writes it to the SD card.

```linux
SDCARD_SLOT=/dev/sde
GZ_SDCARD_IMAGE=litmusedge-std_3.11.0-arm64.gz
gzip -cd ${GZ_SDCARD_IMAGE} | sudo dd of=${SDCARD_SLOT} bs=4M conv=notrunc,noerror status=progress ; sync
```

&#x20;    4\. Once the gzip command completes, safely eject the SD card from your computer.
&#x20;    5\. Insert the SD card into the Raspberry Pi and power up the Raspberry Pi.
&#x20;    6\. Litmus Edge will boot and the Litmus Edge Terminal User Interface (TUI) will appear if
&#x20;        monitor is connected to the Raspberry Pi.&#x20;

## **Log in to Litmus Edge**

Once the Litmus Edge TUI loads, you can log in to Litmus Edge.&#x20;

- See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for instructions on how to navigate and log in for the first time.
- See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;


[title] BACnet
[path] QuickStart Guide/Industrial Systems Connection Guide/

For devices that support the BACnet/IP specification, you can use the [BacnetIP](docId\:khkIjze09sfiCOc7vtkZu) DeviceHub driver.


[title] CodeSys Devices
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC.

| **PLC**    | **Compatible Ethernet DeviceHub Driver**                |
| ---------- | ------------------------------------------------------- |
| CODESYS V2 | [CodeSys Ethernet (Gen1)](docId:7yRrho2lLUshH367acajq)  |


[title] Brother Speedio Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Brother Industries Ltd/

Review the following information for setting up and configuring the Brother Speedio Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                              |
| ---------------------------- | ----------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                      |
| **Validated devices/series** | [Brother CNC S700X2](https://machinetool.global.brother/en-ap/sx2/index.aspx) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Important**: When setting up the PLC device, you must activate **Remote Operation**.&#x20;
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Brother Industries Ltd                   |
| **Driver**          | Brother Speedio Ethernet (Gen1)          |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 10000                                    |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**                                         | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                                |
| ------------------------------------------------ | --------------- | ------------------ | --------------- | --------------- | ---------------------------------------------- |
| BDX                                              | word            | DDD                | 0               | 255             |                                                |
| BDY                                              | word            | DDD                | 0               | 255             |                                                |
| D                                                | word            | DDDD               | 0               | 2047            |                                                |
| LD\_HS1                                          | word            | DDDD               | 0               | 2047            |                                                |
| LT\_CV\_HS1                                      | word            | DDD                | 0               | 255             |                                                |
| LT\_SV\_HS1                                      | word            | DDD                | 0               | 255             |                                                |
| LD\_S1                                           | word            | DDDD               | 0               | 2047            |                                                |
| LT\_CV\_S1                                       | word            | DDD                | 0               | 255             |                                                |
| LT\_SV\_S1                                       | word            | DDD                | 0               | 255             |                                                |
| LC\_CV\_S1                                       | word            | DDD                | 0               | 255             |                                                |
| LC\_SV\_S1                                       | word            | DDD                | 0               | 255             |                                                |
| LD\_HS2                                          | word            | DDDD               | 0               | 2047            |                                                |
| LT\_CV\_HS2                                      | word            | DDD                | 0               | 255             |                                                |
| LT\_SV\_HS2                                      | word            | DDD                | 0               | 255             |                                                |
| LC\_CV\_HS2                                      | word            | DDD                | 0               | 255             |                                                |
| LC\_SV\_HS2                                      | word            | DDD                | 0               | 255             |                                                |
| LD\_S2                                           | word            | DDDD               | 0               | 2047            |                                                |
| LT\_CV\_S2                                       | word            | DDD                | 0               | 255             |                                                |
| LT\_SV\_S2                                       | word            | DDD                | 0               | 255             |                                                |
| LC\_CV\_S2                                       | word            | DDD                | 0               | 255             |                                                |
| LC\_SV\_S2                                       | word            | DDD                | 0               | 255             |                                                |
| X                                                | bit             | HHH                | 0               | 1023            |                                                |
| Y                                                | bit             | HHH                | 0               | 1023            |                                                |
| BX                                               | bit             | HHH                | 0               | 1023            |                                                |
| BY                                               | bit             | HHH                | 0               | 1023            |                                                |
| M                                                | bit             | DDDD               | 0               | 8191            |                                                |
| LM\_HS1                                          | bit             | DDDD               | 0               | 1023            |                                                |
| LM\_S1                                           | bit             | DDDD               | 0               | 1023            |                                                |
| LM\_HS2                                          | bit             | DDDD               | 0               | 1023            |                                                |
| LM\_S2                                           | bit             | DDDD               | 0               | 1023            |                                                |
| MONTR\_P\_Operation program number               | number          | D                  | 1               | 1               | MONTR-P-Operation program number               |
| MONTR\_P\_Edit program number                    | number          | D                  | 1               | 1               | MONTR-P-Edit program number                    |
| MONTR\_T\_Total operation time                   | number          | D                  | 1               | 1               | MONTR-T-Total operation time                   |
| MONTR\_T\_Power on time                          | number          | D                  | 1               | 1               | MONTR-T-Power on time                          |
| MONTR\_T\_Operation time                         | number          | D                  | 1               | 1               | MONTR-T-Operation time                         |
| CONTR\_C\_Count                                  | number          | D                  | 1               | 4               | MONTR-C-Count                                  |
| MONTR\_C\_Current value                          | number          | D                  | 1               | 4               | MONTR-C-Current value                          |
| MONTR\_C\_Target value                           | number D        | D                  | 1               | 4               | MONTR-C-Target value                           |
| MONTR\_C\_End signal value                       | number          | D                  | 1               | 4               | MONTR-End-Signal value                         |
| HEACM\_A\_no. of calculations                    | number          | DDD                | 1               | 540             | HEACM-A-No. of calculations                    |
| HEACM\_A\_Correction flag                        | number          | DDD                | 1               | 540             | HEACM-A-Correction flag                        |
| HEACM\_A\_Z axis travel sum                      | number          | DDD                | 1               | 540             | HEACM-A-Z axis travel sum                      |
| HEACM\_A\_Spindle rotation sum                   | number DDD      | DDD                | 1               | 540             | HEACM-A-Spingle rotation sum                   |
| HEACM\_A\_Z axis displacemen                     | number          | DDD                | 1               | 540             | HEACM-A-Z axis displacemen                     |
| HEACM\_A\_Spindle displacement                   | number          | DDD                | 1               | 540             | HEACM-A-Spindle displacement                   |
| HEACM\_A\_Z axis displacement sum                | number          | DDD                | 1               | 540             | HEACM-A-Z axis displacement sum                |
| HEACM\_B\_No. of calculations                    | number          | DDD                | 1               | 540             | HEACM-B-No. of calculations                    |
| HEACM\_B\_Correction flag                        | number          | DDD                | 1               | 540             | HEACM-B-Correction flag                        |
| HEACM\_B\_Z axis travel sum                      | number          | DDD                | 1               | 540             | HEACM-B-Z axis travel sum                      |
| HEACM\_B\_Spindle rotation sum                   | number          | DDD                | 1               | 540             | HEACM-B-Spindle rotation sum                   |
| HEACM\_B\_Z axis displacemen                     | number          | DDD                | 1               | 540             | HEACM-B-Z axis displacemen                     |
| HEACM\_B\_Spindle displacement                   | number          | DDD                | 1               | 540             | HEACM-B-Spindle displacement                   |
| HEACM\_B\_Z axis displacement sum                | number          | DDD                | 1               | 540             | HEACM-B-Z axis displacement sum                |
| HEACM\_B\_Spindle displacement sum               | number          | DDD                | 1               | 540             | HEACM-B-Spindle displacement sum               |
| HEACM\_C\_No. of calculations                    | number          | DDD                | 1               | 540             | HEACM-C-No. of calculations                    |
| HEACM\_C\_Correction flag                        | number          | DDD                | 1               | 540             | HEACM-C-Correction flag                        |
| HEACM-C\_Z axis travel sum                       | number          | DDD                | 1               | 540             | HEACM-C-Z axis travel sum                      |
| HEACM\_C\_Spindle rotation sum                   | number          | DDD                | 1               | 540             | HEACM-C-Spindle rotation sum                   |
| HEACM\_C\_Z axis displacemen                     | number          | DDD                | 1               | 540             | HEACM-C-Z axis displacemen                     |
| HEACM\_C\_Spindle displacement                   | number          | DDD                | 1               | 540             | HEACM-C-Spindle displacement                   |
| HEACM\_C\_Z axis displacement sum                | number          | DDD                | 1               | 540             | HEACM-C-Z axis displacement sum                |
| HEACM\_C\_Spindle displacement sum               | number          | DDD                | 1               | 540             | HEACM-C-Spindle displacement sum               |
| MEM\_A\_Operation program No                     | number          | D                  | 1               | 1               | Mem-A-Operation program No                     |
| MEM\_A\_Operation state                          | number          | D                  | 1               | 1               | MEM-A-Operation state                          |
| MEM\_A\_Inner pallet state                       | number          | D                  | 1               | 1               | MEM-A-Inner pallet state                       |
| MEM\_A\_Spare part usage                         | number          | D                  | 1               | 1               | MEM-A-Spare part usage                         |
| MEM\_A\_Mode                                     | number          | D                  | 1               | 1               | MEM-A-Mode                                     |
| MEM\_A\_Extended operation                       | number          | D                  | 1               | 1               | MEM-A-Extended operation                       |
| MEM\_E\_Alarm 1                                  | number          | D                  | 1               | 1               | MEM-E-Alarm 1                                  |
| MEM\_E\_Alarm 2                                  | number          | D                  | 1               | 1               | MEM-E-Alarm 2                                  |
| MEM\_E\_Alarm 3                                  | number          | D                  | 1               | 1               | MEM-E-Alarm 3                                  |
| MEM\_E\_Alarm 4                                  | number          | D                  | 1               | 1               | MEM-E-Alarm 4                                  |
| MEM\_E\_Alarm 5                                  | number          | D                  | 1               | 1               | MEM-E-Alarm 5                                  |
| MEM\_E\_Alarm 6                                  | number          | D                  | 1               | 1               | MEM-E-Alarm 6                                  |
| MEM\_E\_Alarm 7                                  | number          | D                  | 1               | 1               | MEM-E-Alarm 7                                  |
| MEM\_E\_Alarm 8                                  | number          | D                  | 1               | 1               | MEM-E-Alarm 8                                  |
| MEM\_E\_Alarm 9                                  | number          | D                  | 1               | 1               | MEM-E-Alarm 9                                  |
| MEM\_E\_Alarm 10                                 | number          | D                  | 1               | 1               | MEM-E-Alarm 10                                 |
| MEM\_E\_Alarm 11                                 | number          | D                  | 1               | 1               | MEM-E-Alarm 11                                 |
| MEM\_E\_Alarm 12                                 | number          | D                  | 1               | 1               | MEM-E-Alarm 12                                 |
| MEM\_E\_Alarm 13                                 | number          | D                  | 1               | 1               | MEM-E-Alarm 13                                 |
| MEM\_E\_Alarm 14                                 | number          | D                  | 1               | 1               | MEM-E-Alarm 14                                 |
| MEM\_E\_Alarm 15                                 | number          | D                  | 1               | 1               | MEM-E-Alarm 15                                 |
| MEM\_E\_Alarm 16                                 | number          | D                  | 1               | 1               | MEM-E-Alarm 16                                 |
| MEM\_E\_Alarm 17                                 | number          | D                  | 1               | 1               | MEM-E-Alarm 17                                 |
| MEM\_E\_Alarm 18                                 | number          | D                  | 1               | 1               | MEM-E-Alarm 18                                 |
| PANEL\_D\_Outer (front) door state               | number          | D                  | 1               | 1               | PANEL-D-Outer (front) door state               |
| PANEL\_D\_Inner door state                       | number          | D                  | 1               | 1               | PANEL-D-Inner door state                       |
| PANEL\_D\_Side door state                        | number          | D                  | 1               | 1               | PANEL-D-Side door state                        |
| PANEL\_K\_Mode                                   | number          | D                  | 1               | 1               | PANEL-K-Mode                                   |
| PANEL\_K\_Screen                                 | number          | D                  | 1               | 1               | PANEL-K-Screen                                 |
| PANEL\_K\_Block skip                             | number          | D                  | 1               | 1               | PANEL-K-Block skip                             |
| PANEL\_K\_Optional stop                          | number          | D                  | 1               | 1               | PANEL-K-Optional stop                          |
| PANEL\_K\_Single operation                       | number          | D                  | 1               | 1               | PANEL-K-Single operation                       |
| PANEL\_K\_Dry run                                | number          | D                  | 1               | 1               | PANEL-K-Dry run                                |
| PANEL\_K\_Machine lock                           | number          | D                  | 1               | 1               | PANEL-K-Machine lock                           |
| PANEL\_K\_Coolant switch                         | number          | D                  | 1               | 1               | PANEL-K-Coolant switch                         |
| PANEL\_K\_Chip flow switch                       | number          | D                  | 1               | 1               | PANEL-K-Chip flow switch                       |
| PANEL\_K\_Machine light switch                   | number          | D                  | 1               | 1               | PANEL-K-Machine light switch                   |
| PANEL\_K\_Pallet select switch                   | number          | D                  | 1               | 1               | PANEL-K-Pallet select switch                   |
| PANEL\_S\_Rapid traverse override state          | number          | D                  | 1               | 1               | PANEL-S-Rapid traverse override state          |
| PANEL\_S\_Cutting feed override state            | number          | D                  | 1               | 1               | PANEL-S-Cutting feed override state            |
| PANEL\_S\_Spindle override state                 | number          | D                  | 1               | 1               | PANEL-S-Spindle override state                 |
| PANEL\_S\_Emergency stop                         | number          | D                  | 1               | 1               | PANEL-S-Emergency stop                         |
| PANEL\_S\_Door interlock state                   | number          | D                  | 1               | 1               | PANEL-S-Door interlock state                   |
| PANEL\_S\_Mode change                            | number          | D                  | 1               | 1               | PANEL-S-Mode change                            |
| PANEL\_S\_Data protection                        | number          | D                  | 1               | 1               | PANEL-S-Data protection                        |
| PDSP\_L01\_Language                              | number          | D                  | 1               | 1               | PDSP-L01-Language                              |
| PDSP\_G01\_G0 group                              | number          | D                  | 1               | 1               | PDSP-G01-G0 group                              |
| PDSP\_G01\_G17 group                             | number          | D                  | 1               | 1               | PDSP-G01-G17 group                             |
| PDSP\_G01\_G22 group                             | number          | D                  | 1               | 1               | PDSP-G01-G22 group                             |
| PDSP\_G01\_G40 group                             | number          | D                  | 1               | 1               | PDSP-G01-G40 group                             |
| PDSP\_G01\_G49 group                             | number          | D                  | 1               | 1               | PDSP-G01-G49 group                             |
| PDSP\_G01\_G50 group                             | number          | D                  | 1               | 1               | PDSP-G01-G50 group                             |
| PDSP\_G01\_G50.1 group                           | number          | D                  | 1               | 1               | PDSP-G01-G50.1 group                           |
| PDSP\_G01\_G64 group                             | number          | D                  | 1               | 1               | PDSP-G01-G64 group                             |
| PDSP\_G01\_G54 group                             | number          | D                  | 1               | 1               | PDSP-G01-G54 group                             |
| PDSP\_G01\_G67 group                             | number          | D                  | 1               | 1               | PDSP-G01-G67 group                             |
| PDSP\_G01\_G69 group                             | number          | D                  | 1               | 1               | PDSP-G01-G69 group                             |
| PDSP\_G01\_G80 group                             | number          | D                  | 1               | 1               | PDSP-G01-G80 group                             |
| PDSP\_G01\_G90 group                             | number          | D                  | 1               | 1               | PDSP-G01-G90 group                             |
| PDSP\_G01\_G94 group                             | number          | D                  | 1               | 1               | PDSP-G01-G94 group                             |
| PDSP\_G01\_G98 group                             | number          | D                  | 1               | 1               | PDSP-G01-G98 group                             |
| PDSP\_M01\_M5 group                              | number          | D                  | 1               | 1               | PDSP-M01-M5 group                              |
| PDSP\_M01\_M9 group                              | number          | D                  | 1               | 1               | PDSP-M01-M9 group                              |
| PDSP\_M01\_M221 group                            | number          | D                  | 1               | 1               | PDSP-M01-M221 group                            |
| PDSP\_M01\_M222 group                            | number          | D                  | 1               | 1               | PDSP-M01-M222 group                            |
| PDSP\_M01\_M223 group                            | number          | D                  | 1               | 1               | PDSP-M01-M223 group                            |
| PDSP\_M01\_M224 group                            | number          | D                  | 1               | 1               | PDSP-M01-M224 group                            |
| PDSP\_M01\_M230 group                            | number          | D                  | 1               | 1               | PDSP-M01-M230 group                            |
| PDSP\_M01\_M269 group                            | number          | D                  | 1               | 1               | PDSP-M01-M269 group                            |
| PDSP\_M01\_M401 group                            | number          | D                  | 1               | 1               | PDSP-M01-M401 group                            |
| PDSP\_M01\_M495 group                            | number          | D                  | 1               | 1               | PDSP-M01-M495 group                            |
| PDSP\_M01\_M239 group                            | number          | D                  | 1               | 1               | PDSP-M01-M239 group                            |
| PDSP\_M01\_M250 group                            | number          | D                  | 1               | 1               | PDSP-M01-M250 group                            |
| PDSP\_M01\_M403 group                            | number          | D                  | 1               | 1               | PDSP-M01-M403 group                            |
| PDSP\_M01\_M405 group                            | number          | D                  | 1               | 1               | PDSP-M01-M405 group                            |
| PDSP\_M01\_M407 group                            | number          | D                  | 1               | 1               | PDSP-M01-M407 group                            |
| PDSP\_M01\_M409 group                            | number          | D                  | 1               | 1               | PDSP-M01-M409 group                            |
| PDSP\_M01\_M431 group                            | number          | D                  | 1               | 1               | PDSP-M01-M431 group                            |
| PDSP\_M01\_M441 group                            | number          | D                  | 1               | 1               | PDSP-M01-M441 group                            |
| PDSP\_M01\_M443 group                            | number          | D                  | 1               | 1               | PDSP-M01-M443 group                            |
| PDSP\_M01\_M459 group                            | number          | D                  | 1               | 1               | PDSP-M01-M459 group                            |
| PDSP\_M01\_M481 group                            | number          | D                  | 1               | 1               | PDSP-M01-M481 group                            |
| PDSP\_M01\_M483 group                            | number          | D                  | 1               | 1               | PDSP-M01-M483 group                            |
| PDSP\_M01\_M485 group                            | number          | D                  | 1               | 1               | PDSP-M01-M485 group                            |
| PDSP\_M01\_M487 group                            | number          | D                  | 1               | 1               | PDSP-M01-M487 group                            |
| PDSP\_M01\_M270 group                            | number          | D                  | 1               | 1               | PDSP-M01-M270 group                            |
| PDSP\_M01\_M435 group                            | number          | D                  | 1               | 1               | PDSP-M01-M435 group                            |
| PDSP\_M01\_M419 group                            | number          | D                  | 1               | 1               | PDSP-M01-M419 group                            |
| PDSP\_M01\_M290 group                            | number          | D                  | 1               | 1               | PDSP-M01-M290 group                            |
| PDSP\_P01\_Machine coordinate position X-axis    | number          | D                  | 1               | 1               | PDSP-P01-Machine coordinate position X-axis    |
| PDSP\_P01\_Machine coordinate position Y-axis    | number          | D                  | 1               | 1               | PDSP-P01-Machine coordinate position Y-axis    |
| PDSP\_P01\_Machine coordinate position Z-axis    | number          | D                  | 1               | 1               | PDSP-P01-Machine coordinate position Z-axis    |
| PDSP\_P01\_Machine coordinate position 4th-axis  | number          | D                  | 1               | 1               | PDSP-P01-Machine coordinate position 4th-axis  |
| PDSP\_P01\_Machine coordinate position 5th-axis  | number          | D                  | 1               | 1               | PDSP-P01-Machine coordinate position 5th-axis  |
| PDSP\_P01\_Machine coordinate position 6th-axis  | number          | D                  | 1               | 1               | PDSP-P01-Machine coordinate position 6th-axis  |
| PDSP\_P01\_Machine coordinate position 7th-axis  | number          | D                  | 1               | 1               | PDSP-P01-Machine coordinate position 7th-axis  |
| PDSP\_P01\_Machine coordinate position 8th-axis  | number          | D                  | 1               | 1               | PDSP-P01-Machine coordinate position X8th-axis |
| PDSP\_P02\_Relative coordinate position X-axis   | number          | D                  | 1               | 1               | PDSP-P02-Relative coordinate position X-axis   |
| PDSP\_P02\_Relative coordinate position Y-axis   | number          | D                  | 1               | 1               | PDSP-P02-Relative coordinate position Y-axis   |
| PDSP\_P02\_Relative coordinate position Z-axis   | number          | D                  | 1               | 1               | PDSP-P02-Relative coordinate position Z-axis   |
| PDSP\_P02\_Relative coordinate position 4th-axis | number          | D                  | 1               | 1               | PDSP-P02-Relative coordinate position 4th-axis |
| PDSP\_P02\_Relative coordinate position 5th-axis | number          | D                  | 1               | 1               | PDSP-P02-Relative coordinate position 5th-axis |
| PDSP\_P02\_Relative coordinate position 6th-axis | number          | D                  | 1               | 1               | PDSP-P02-Relative coordinate position 6th-axis |
| PDSP\_P02\_Relative coordinate position 7th-axis | number          | D                  | 1               | 1               | PDSP-P02-Relative coordinate position 7th-axis |
| PDSP\_P02\_Relative coordinate position 8th-axis | number          | D                  | 1               | 1               | PDSP-P02-Relative coordinate position 8th-axis |
| PDSP\_P03\_Absolute coordinate position X-axis   | number          | D                  | 1               | 1               | PDSP-P03-Absolute coordinate position X-axis   |
| PDSP\_P03\_Absolute coordinate position Y-axis   | number          | D                  | 1               | 1               | PDSP-P03-Absolute coordinate position Y-axis   |
| PDSP\_P03\_Absolute coordinate position Z-axis   | number          | D                  | 1               | 1               | PDSP-P03-Absolute coordinate position Z-axis   |
| PDSP\_P03\_Absolute coordinate position 4th-axis | number          | D                  | 1               | 1               | PDSP-P03-Absolute coordinate position 4th-axis |
| PDSP\_P03\_Absolute coordinate position 5th-axis | number          | D                  | 1               | 1               | PDSP-P03-Absolute coordinate position 5th-axis |
| PDSP\_P03\_Absolute coordinate position 6th-axis | number          | D                  | 1               | 1               | PDSP-P03-Absolute coordinate position 6th-axis |
| PDSP\_P03\_Absolute coordinate position 7th-axis | number          | D                  | 1               | 1               | PDSP-P03-Absolute coordinate position 7th-axis |
| PDSP\_P03\_Absolute coordinate position 8th-axis | number          | D                  | 1               | 1               | PDSP-P03-Absolute coordinate position 8th-axis |
| PDSP\_P04\_Remaining distance X-axis             | number          | D                  | 1               | 1               | PDSP-P04-Remaining distance X-axis             |
| PDSP\_P04\_Remaining distance Y-axis             | number          | D                  | 1               | 1               | PDSP-P04-Remaining distance Y-axis             |
| PDSP\_P04\_Remaining distance Z-axis             | number          | D                  | 1               | 1               | PDSP-P04-Remaining distance Z-axis             |
| PDSP\_P04\_Remaining distance 4th-axis           | number          | D                  | 1               | 1               | PDSP-P04-Remaining distance 4th-axis           |
| PDSP\_P04\_Remaining distance 5th-axis           | number          | D                  | 1               | 1               | PDSP-P04-Remaining distance 5th-axis           |
| PDSP\_P04\_Remaining distance 6th-axis           | number          | D                  | 1               | 1               | PDSP-P04-Remaining distance 6th-axis           |
| PDSP\_P04\_Remaining distance 7th-axis           | number          | D                  | 1               | 1               | PDSP-P04-Remaining distance 7th-axis           |
| PDSP\_P04\_Remaining distance 8th-axis           | number          | D                  | 1               | 1               | PDSP-P04-Remaining distance 8th-axis           |
| PDSP\_X01\_Feed rate                             | number          | D                  | 1               | 1               | PDSP-X01-Feed rate                             |
| PDSP\_X01\_Spindle speed                         | number          | D                  | 1               | 1               | PDSP-X01-Spindle speed                         |
| PDSP\_X01\_Inner pallet state                    | number          | D                  | 1               | 1               | PDSP-X01-Inner pallet state                    |
| PDSP\_X01\_Spindle tool number                   | number          | D                  | 1               | 1               | PDSP-X01-Spindle tool number                   |
| PDSP\_X01\_Next tool number                      | number          | D                  | 1               | 1               | PDSP-X01-Next tool number                      |
| PDSP\_X01\_Magazine number                       | number          | D                  | 1               | 1               | PDSP-X01-Magazine number                       |
| PDSP\_X01\_Door interlock state                  | number          | D                  | 1               | 1               | PDSP-X01-Door interlock state                  |
| PDSP\_X01\_Outer/front door state                | number          | D                  | 1               | 1               | PDSP-X01-Outer/front door state                |
| PDSP\_X01\_Inner door state                      | number          | D                  | 1               | 1               | PDSP-X01-Inner door state                      |
| PDSP\_X01\_Slide door state                      | number          | D                  | 1               | 1               | PDSP-X01-Slide door state                      |
| PDSP\_X01\_Rapid traverse override state         | number          | D                  | 1               | 1               | PDSP-X01-Rapid traverse override state         |
| PDSP\_X01\_Cutting feed override state           | number          | D                  | 1               | 1               | PDSP-X01-Cutting feed override state           |
| PDSP\_X01\_Spindle override state                | number          | D                  | 1               | 1               | PDSP-X01-Spindle override state                |
| VER\_M01\_Model                                  | number          | D                  | 1               | 1               | VER-M01-Model                                  |
| VER\_V01\_Main version                           | number          | D                  | 1               | 1               | VER-V01-Main version                           |
| VER\_V01\_Local version                          | number          | D                  | 1               | 1               | VER-V01-Local version                          |
| VER\_V01\_Slave version                          | number          | D                  | 1               | 1               | VER-V01-Slave version                          |
| VER\_V01\_Main (copy) version                    | number          | D                  | 1               | 1               | VER-V01-Main (copy) version                    |
| VER\_V01\_Slave (copy) version                   | number          | D                  | 1               | 1               | VER-V01-Slave (copy) version                   |
| VER\_V01\_PLC version                            | number          | D                  | 1               | 1               | VER-V01-PLC version                            |
| VER\_S01\_Machine number                         | number          | D                  | 1               | 1               | VER-S01-Machine number                         |
| LOG\_A01\_Status                                 | number          | D                  | 1               | 1               | LOG-A01-Status                                 |
| LOG\_A01\_Index                                  | number          | D                  | 1               | 1               | LOG-A01-Index                                  |
| LOG\_B\_yymmddhhmmss                             | number          | D                  | 1               | 100             | LOG-B-yymmddhhmmss                             |
| LOG\_B\_Alarm number                             | number          | D                  | 1               | 100             | LOG-B-Alarm number                             |
| LOG\_B\_Auxilliary number                        | number          | D                  | 1               | 100             | LOG-B-Auxilliary number                        |
| LOG\_B\_Attribute                                | number          | D                  | 1               | 100             | LOG-B-Attribute                                |
| LOG\_B\_Operation program number                 | number          | D                  | 1               | 100             | LOG-B-Operation program number                 |
| LOG\_B\_Edit program number                      | number          | D                  | 1               | 100             | LOG-B-Edit program number                      |
| LOG\_B\_Block number / Job number                | number          | D                  | 1               | 100             | LOG-B-Block number / Job number                |
| LOG\_B\_Mode                                     | number          | D                  | 1               | 100             | LOG-B-Mode                                     |
| LOG\_B\_Screen                                   | number          | D                  | 1               | 100             | LOG-B-Screen                                   |
| LOG\_B\_Extended operation                       | number          | D                  | 1               | 100             | LOG-B-Extended operation                       |
| LOG\_C\_Machine coordinate position X-axis       | number          | D                  | 1               | 100             | LOG-C-Machine coordinate position X-axis       |
| LOG\_C\_Machine coordinate position Y-axis       | number          | D                  | 1               | 100             | LOG-C-Machine coordinate position Y-axis       |
| LOG\_C\_Machine coordinate position Z-axis       | number          | D                  | 1               | 100             | LOG-C-Machine coordinate position Z-axis       |
| LOG\_C\_Machine coordinate position 4th-axis     | number          | D                  | 1               | 100             | LOG-C-Machine coordinate position 4th-axis     |
| LOG\_C\_Machine coordinate position 5th-axis     | number          | D                  | 1               | 100             | LOG-C-Machine coordinate position 5th-axis     |
| LOG\_C\_Machine coordinate position 6th-axis     | number          | D                  | 1               | 100             | LOG-C-Machine coordinate position 6th-axis     |
| LOG\_C\_Machine coordinate position 7th-axis     | number          | D                  | 1               | 100             | LOG-C-Machine coordinate position 7th-axis     |
| LOG\_C\_Machine coordinate position 8th-axis     | number          | D                  | 1               | 100             | LOG-C-Machine coordinate position 8th-axis     |
| LOG\_C\_Machine coordinate position 9th-axis     | number          | D                  | 1               | 100             | LOG-C-Machine coordinate position 9th-axis     |
| LOG\_C\_Machine coordinate position 10th-axis    | number          | D                  | 1               | 100             | LOG-C-Machine coordinate position 10th-axis    |
| LOG\_C\_Remaining distance X-axis                | number          | D                  | 1               | 100             |                                                |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Delta PLC
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC.

| **PLC**                                                                                            | **Compatible Ethernet DeviceHub Driver**         |
| -------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [Delta DVP Series](https://www.deltaww.com/en-us/products/PLC-Programmable-Logic-Controllers/ALL/) | [Delta DVP (Gen1)](docId\:exoYTvo4sIWN9nL_nRJAU) |


[title] ABB Totalflow DB2 (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/ABB/

Review the following information for setting up and configuring the ABB Totalflow DB2 (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **Validated devices/series** | [6000 Series FCU](https://new.abb.com/products/measurement-products/upstream-oil-and-gas/flow-computers-remote-controllers/flow-computers)&#xA;[6000 Series MicroFLO](https://new.abb.com/products/measurement-products/upstream-oil-and-gas/flow-computers-remote-controllers/flow-computers)&#xA;[6000 XSeriesG3](https://new.abb.com/products/measurement-products/upstream-oil-and-gas/flow-computers-remote-controllers/flow-computers)&#xA;[6000 XSeriesG4](https://new.abb.com/products/measurement-products/upstream-oil-and-gas/flow-computers-remote-controllers/flow-computers) |

Please refer to the following devices that are not compatible with this driver.&#x20;

- [IRC5 Controller](https://new.abb.com/products/robotics/controllers/irc5-overview/irc5): As an alternative, you can connect through an OPC UA server.&#x20;

***

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                                        |
| ---------------------- | -------------------------------------------- |
| **Type**               | ABB                                          |
| **Driver**             | ABB Totalflow DB2 (Gen1)&#xD;&#xA;&#xD;      |
| **Network Address**    | The device address you defined during Step 1 |
| **Network Port&#x20;** | 9999&#xD;                                    |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following register table and tag parameters. You can also [Search for Pre-defined Device Tags](docId\:W1Est_A3MIDOUIZrkSgvi) for the device.&#x20;

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

The register table addresses follow the format *\<application>.\<array>.\<register>*. When entering the address in DeviceHub, add left-padding zeros and remove the period delimiters. The list of registers can be found in the [TotalFlow XSeries Remote Controller User's Manual](https://library.e.abb.com/public/f767e1b1766dfa26c1257b1a005b0e6b/XRC%20Manual%20AA.pdf).

| **Name** | **Value Types**                                    | **Address Format** | **Min Address** | **Max Address** |
| -------- | -------------------------------------------------- | ------------------ | --------------- | --------------- |
| BIT      | bit                                                | TTTFFFDDDD         | 0               | 2552553647      |
| W\_BIT   | bit                                                | TTTFFFDDDDdd       | 0               | 255255364715    |
| BYTE     | byte, sint                                         | TTTFFFDDDD         | 0               | 2552553647      |
| WORD     | word, int, dword, dint, float, double, lword, lint | TTTFFFDDDD         | 0               | 2552553647      |
| DWORD    | dword, dint, float, double, lword, lint            | TTTFFFDDDD         | 0               | 2552553647      |
| STRING   | string                                             | TTTFFFDDDD         | 0               | 2552553647      |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] HID Devices
[path] QuickStart Guide/Industrial Systems Connection Guide/

Human Interface Devices (HID) are USB-connected peripheral devices that can be polled for data. Examples include scanners used for barcodes and QR codes. To connect these devices to Litmus Edge, you can use the [HID Device (Gen1)](docId:9b2MDQb76LKPqMRy8lN7a) serial DeviceHub driver.&#x20;

[title] ELC Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Cutler-Hammer/

Review the following information for setting up and configuring the ELC Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                           |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                                                     |
| **Validated devices/series** | [Cutler-Hammer Eaton ELC Series](https://www.eaton.com/us/en-us/products/controls-drives-automation-sensors/i-o-systems/logic-and-io-legacy-products.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:&#x20;**

1\. Note down the following information and refer to it when needed.&#x20;

**Device**: Cutler-Hammer ELC-PV28NNDR

**Communication I/F**: RS232, refer to the following figures.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/S0CKD5lAmibbvuwri6spB_image.png" size="80" width="401" height="366" caption="ELC Serial (Gen1) reference [1]" position="center" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4jK6p-X6ePRP-LbNWKxY2_image.png" size="80" width="360" height="456" caption="ELC Serial (Gen1) reference [2]" position="center" showCaption="true"}

2\. Launch ELCSoft v2.07 software, **Options > Communication Setting**.

3\. Click **Communication > Transfer Setup**.

4\. Read from PLC to PC.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Cutler-Hammer                     |
| **Driver**             | ELC Serial (Gen1)                 |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 7                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** |
| -------- | --------------- | ------------------ | --------------- | --------------- |
| C\_Bit   | bit             | DDD                | 0               | 255             |
| M        | bit             | DDDD               | 0               | 4095            |
| S        | bit             | DDDD               | 0               | 1023            |
| T\_Bit   | bit             | DDD                | 0               | 255             |
| X        | bit             | OOO                | 0               | 255             |
| Y        | bit             | OOO                | 0               | 255             |
| T        | word            | DDD                | 0               | 255             |
| D        | word            | DDDDD              | 0               | 11999           |
| C\_32Bit | dword           | DDD                | 200             | 255             |
| C        | word            | DDD                | 0               | 199             |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] GPIO
[path] QuickStart Guide/Industrial Systems Connection Guide/

Use the [HPE GPIO (Gen1)](docId\:QOKXGHXWSnRqi2kNXnU24) driver to connect to your gateway hardware I/O port.


[title] Danfoss
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC.

| **PLC**                                                                                                                   | **Compatible Ethernet DeviceHub Driver**        |
| ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
| [Danfoss VLT AQUA Drive FC](https://www.danfoss.com/en/products/dds/low-voltage-drives/vlt-drives/vlt-aqua-drive-fc-202/) | [Danfoss FC/TSC](docId\:AeZdnMhg7YDPtDQqT1Brr)  |


[title] ESXi OVA
[path] QuickStart Guide/Installation and Deployments/OVA Installation on Virtual Machine/

You can use VMware ESXi to install Litmus Edge with an OVA file.

# Before You Begin

- Prepare your environment for running virtualization by using VMWare ESXi.&#x20;
  - Review [Verified VM Versions](docId:36xPLuILTp2QajsR8ltHw) and confirm the correct version to download. See [VMWare](https://www.vmware.com/worldwide.html).&#x20;
  - The virtual machine will run on the same physical network card as the host environment. To ensure that the device can communicate with data sources such as PLC, DCS or CNC and can be accessed through the Web UI, make sure that communication can be established.
- Adjust the system clock for the host environment prior to installing Litmus Edge. UTC is recommended. The 15-day trial period may be rejected and invalidated by the license server if the system clock is not adjusted. If this happens, contact your Litmus representative.
- Obtain a valid file in the OVA (Open Virtualization Alliance) format (example filename: `<litmusedge-std_3.1.5.0-amd64>.ova`).&#x20;

To use ESXi to install Litmus Edge, you will need to do the following.&#x20;

- Step 1: Create a Virtual Machine
- Step 2: Log in to Litmus Edge&#x20;

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Create Virtual Machine

You will first need to create the virtual machine that will run Litmus Edge.&#x20;

**To create the virtual machine:**

1. Log in to VMware ESXi and click **Create a new virtual machine**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rld5GE2jkKtFYzr39rU7Y_esxi01.png" size="80" width="1207" height="749" caption="Select creation type screen" position="center" showCaption="true"}
2. Enter a name for the virtual machine in the field, select the OVA file, and then click **Next**.
3. Apply storage settings, and then click **Next**.&#x20;
4. Agree to license, and then click **Next**.&#x20;
5. Apply deployment settings, and then click **Next**.&#x20;
6. Apply network settings, and then click **Next**.&#x20;
7. Review your settings, and then click **Finish**.&#x20;

:::hint{type="danger"}
**Known Issue:&#x20;**&#x57;hen importing ESXi image using vSphere client (Windows). Refer to the solution from [VMware Customer Connect](https://kb.vmware.com/s/article/2151537).
:::

# Step 2: Log in to Litmus Edge

- See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;
- See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for instructions on how to navigate and log in for the first time.


[title] ISO Installation on Hypervisors
[path] QuickStart Guide/Installation and Deployments/

You can complete the following ISO installations:

- [ESXi ISO (VMWare vSphere 6.7.0)](docId\:lWfqky24lk9bMl2N1tWFz)
- [ESXi ISO (VMWare
  vSphere 7.0.3.01400)](docId\:Y8mIiVbJEL77oDAfOvNU3)
- [Hyper-V](docId\:dekGNHNSbtVhz2I-JnX7f)
- [KVM](docId\:uVxVOQD4cGswE_EJTfD_w)
- [VirtualBox ISO](docId\:ru9HEtN8t_03cXVCXhVyA)
- [VirtualBox MacOS](docId\:lupR6rKjwAHtBpDrEH_Om)


[title] CAN Bus
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your device.

| **Device**                    | **Compatible CAN DeviceHub Driver**             |
| ----------------------------- | ----------------------------------------------- |
| - CAN Bus 2.0A
- CAN Bus 2.0B | [CAN Raw (Gen1)](docId\:X5cUYYB7vqfKYxB1jjpBI)  |


[title] Brother Industries Ltd
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC.

| **PLC**                                                                       | **Compatible Ethernet DeviceHub Driver**                         |
| ----------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| [Brother CNC S700X2](https://machinetool.global.brother/en-ap/sx2/index.aspx) | [Brother Speedio Ethernet (Gen1)](docId\:b9ciqyCsBOyeNqpLsFqZX)  |
| [TC-R2B](https://machinetool.global.brother/en-ap/tcr2b/index.aspx)           | [Brother TC Ethernet (Gen1)](docId\:rEOVdhwpT4TeCu6_GEdtc)       |


[title] VirtualBox OVA
[path] QuickStart Guide/Installation and Deployments/OVA Installation on Virtual Machine/

You can use Oracle VirtualBox to install Litmus Edge using an OVA file.

# Video

:::Iframe{code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/xqFLd0c4x6U?si=-Pld84YCmRAZc3NX&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

# Before You Begin

- Prepare your environment for running virtualization by using Oracle VirtualBox.&#x20;
  - Review [Verified VM Versions](docId:36xPLuILTp2QajsR8ltHw) and confirm the correct version to download. See  [VirtualBox Downloads](https://www.virtualbox.org/wiki/Downloads).&#x20;
  - Refer to [VirtualBox Documentation](https://www.virtualbox.org/wiki/Documentation) to learn more.&#x20;
  - The virtual machine will run on the same physical network card as the host environment. To ensure that the device can communicate with data sources such as PLC, DCS or CNC and can be accessed through the Web UI, make sure that communication can be established.
- Adjust the system clock for the host environment prior to installing Litmus Edge. UTC is recommended. The 15-day trial period may be rejected and invalidated by the license server if the system clock is not adjusted. If this happens, contact your Litmus representative.
- Obtain a valid file in the OVA (Open Virtualization Alliance) format (example filename: `<litmusedge-std_3.1.5.0-amd64>.ova`).&#x20;

To use Oracle VirtualBox to install Litmus Edge using an OVA file, you will need to do the following.&#x20;

- Step 1: Create a Virtual Machine
- Step 2: Enable EFI
- Step 3: Configure Network Adapters
- Step 4: Log in to Litmus Edge

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Create Virtual Machine

You will first need to create the virtual machine that will run Litmus Edge.&#x20;

**To create the virtual machine:**

1. Start the Oracle VirtualBox application.
2. From the *File&#x20;*&#x6D;enu, select the **Import Appliance** option.
   The *Appliance to import&#x20;*&#x64;ialog box appears.
3. Click the **Browse&#x20;**&#x69;con, navigate to the desired .ova file, click **Open**, and then click **Next**.
   The *Appliance settings dialog* box appears.
4. (Optional) From the *Appliance settings* dialog box, modify the default settings:
   - The name of the virtual machine.&#x20;
   - The number of CPU cores assigned to the virtual machine.
   - The amount of RAM assigned to the virtual machine.
   - The base folder where the configuration for this virtual machine is stored by Oracle VirtualBox.
5. Click **Import**.

The virtual machine is created along with the Litmus Edge operating system.

The deployed virtual machine appears in the left pane of the Oracle VirtualBox application.

After you create the virtual machine, you must configure the network adapters.

See [VirtualBox only Showing 32-bit and no 64-bit Versions](docId\:MBz6EGyBcBfkTvjvJCL_P) if you only see a 32-bit version when installing VirtualBox.

# Step 2: Enable EFI

After installing the virtual machine, you must enable the *EFI&#x20;*&#x6F;ption for VirtualBox deployment.&#x20;

**To enable EFI:**

1. From the open Oracle VirtualBox application, select the deployed virtual machine from the left pane, and then click the **Settings** icon in the right pane.
   The *Settings* *dialog* box appears.
2. Click **System** in the left pane.
   The *System dialog&#x20;*&#x62;ox appears.
3. From the *Motherboard&#x20;*&#x74;ab, select th&#x65;**&#x20;Enable EFI&#x20;**(**special OSes only**) check box from *Extended Features*.
4. Click **OK**.

# Step 3: Configure Network Adapters

You will now need to configure the network adapters for the VM.&#x20;

**To configure the network adapters:**

1. From the open Oracle VirtualBox application, select the deployed virtual machine from the left pane, and then click the **Settings** icon in the right pane.
   The *Settings dialog* box appears.
2. Click **Network** in the left pane.
   The *Network dialog* box appears.
3. Click the **Adapter 1** tab, and do the following:
   - Make sure the **Enable Network Adapter** check box is selected.&#x20;
   - From the *Attached to* drop-down list, select **Bridged Adapter**.
   - From the *Name&#x20;*&#x64;rop-down list, select the appropriate network card name, and then click **OK**.
4. From th&#x65;*&#x20;Oracle VirtualBox&#x20;*&#x61;pplication, click **Start.**

The VM starts up and the terminal window displays the URLs to be used to access the edge device through the Web UI. If several URLs are shown, use the first one.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aYsfWsvVM4LQm81nfxo0g_image.png "URLs to access Web UI")

# Step 4: Log in to Litmus Edge

- See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for details on logging in.&#x20;
- See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for instructions on how to navigate and log in for the first time.

# Troubleshooting

If you don't see an option for a 64-bit version and only see a 32-bit version, refer to [VirtualBox only Showing 32-bit and no 64-bit Versions](docId\:MBz6EGyBcBfkTvjvJCL_P).


[title] AB MicroLogix (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

:::hint{type="warning"}
**Important**: This driver was deprecated in Litmus Edge version 3.5.2.  We recommend using the Gen 2 [AB EthernetIP Ethernet](docId\:xsgWCn1sN07M4DjRxwSJX). &#x20;
:::

Review the following information for setting up and configuring the AB MicroLogix (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter        | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**                | Ethernet                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Validated devices/series**   | Rockwell Automation Allen-Bradley MicroLogix 1000&#xA;Rockwell Automation Allen-Bradley MicroLogix 1100&#xA;Rockwell Automation Allen-Bradley MicroLogix 1200&#xA;Rockwell Automation Allen-Bradley MicroLogix 1400&#xA;Rockwell Automation Allen-Bradley MicroLogix 1500&#xA;Rockwell Automation Allen-Bradley SLC 5/03&#xA;Rockwell Automation Allen-Bradley SLC 5/04 with 1761-NET-ENI&#xA;Rockwell Automation Allen-Bradley SLC 5/05 Ethernet port   |
| **Replaced with Gen 2 driver** | [AB EthernetIP Ethernet](docId\:xsgWCn1sN07M4DjRxwSJX)                                                                                                                                                                                                                                                                                                                                                                                                   |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

Refer to the following parameters.&#x20;

**Communication mode**: Port Setting: 10/100 Mbps Full Duplex/Half Duplex

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Allen-Bradley                            |
| **Driver**          | AB MicroLogix (Gen1)                     |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 102                                      |
| **Slot Number**     | 0                                        |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, use the following tag/register mapping table.

| **Name** | **Value Type** | **Access Types**  | **Address Format** | **Min Address** | **Max Address** | **Description**                    |
| -------- | -------------- | ----------------- | ------------------ | --------------- | --------------- | ---------------------------------- |
| I        | bit            | R/W               | DDDdd              | 0               | 25515           | Input bit                          |
| O        | bit            | R/W               | DDDdd              | 0               | 25515           | Output bit                         |
| S        | bit            | R/W               | DDD                | 0               | 255             | Status bit                         |
| B3       | bit            | R/W               | DDDdd              | 0               | 25515           | Bit Data file (B3)                 |
| Bfn      | bit            | R/W               | FFFDDDdd           | 100000          | 25525515        | Bit Data File                      |
| T4ACC    | int            | R/W               | DDD                | 0               | 255             | Timer Accumulator (T4)             |
| T4PRE    | int            | R/W               | DDD                | 0               | 255             | Timer Prese (T4)                   |
| TfnACC   | int            | R/W               | FFFDDD             | 1000            | 255255          | Timer Accumulator                  |
| Tfn\_PRE | int            | R/W               | FFFDDD             | 1000            | 255255          | Timer Preset                       |
| CS\_ACC  | int            | R/W               | DDD                | 0               | 255             | Counter Accumulator (CS)           |
| CS\_PRE  | int            | R/W               | DDD                | 0               | 255             | Counter Preset (CS)                |
| Cfn\_ACC | int            | R/W               | FFFDDD             | 1000            | 255255          | Counter Accumulator                |
| Cfn\_PRE | int            | R/W               | FFFDDD             | 1000            | 255255          | Counter Preset                     |
| R6       | int            | R/W               | DDD                | 0               | 255             | Control File (R6)                  |
| R6.POS   | int            | R/W               | DDD                | 0               | 255             | Control file pointer position (R6) |
| R6.LEN   | int            | R/W               | DDD                | 0               | 255             | Control file length (R6)           |
| Rfn      | int            | R/W               | FFFDDD             | 0               | 255255          | Control File                       |
| Rfn\_POS | int            | R/W               | FFFDDD             | 0               | 255255          | Control file pointer position      |
| Rfn\_LEN | int            | R/W               | FFFDDD             | 0               | 255255          | Control file length                |
| N7       | int            | R/W               | DDD                | 0               | 255             | Integer Data File (N7)             |
| Nfn      | int            | R/W               | FFFDDD             | 1000            | 255999          | Integer Data File                  |
| Lfn      | int            | R/W               | FFFDDD             | 1000            | 255999          |                                    |
| F8       | float          | R/W               | DDD                | 0               | 255             | Floating Point data file (F8)      |
| Ffn      | float          | R/W               | FFFDDD             | 1000            | 255999          | Floating Point data file           |


[title] Cutler-Hammer
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                                                                                                             | **Compatible Serial DeviceHub Driver**             |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| [Cutler-Hammer Eaton ELC Series](https://www.eaton.com/us/en-us/products/controls-drives-automation-sensors/i-o-systems/logic-and-io-legacy-products.html) | [ELC Serial (Gen1)](docId\:L_iz5jm4pcTORnN85k4El)  |


[title] GE Fanuc RX3i Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/GE Fanuc/

Review the following information for setting up and configuring the GE Fanuc RX3i Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items     |
| ---------------------------- | -------------------- |
| **Driver type**              | Serial               |
| **Validated devices/series** | GE Fanuc RX3i Series |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: GE Fanuc RX3i

   **Communication I/F**: RS232, refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5exWOJp75HB843lQzWlZz_ge-fanuc-rx3i-serial.png" size="80" width="355" height="351" caption="GE Fanuc RX3i Serial reference" position="center" showCaption="true"}
2. Launch Proficy Machine Edition v8.0 software to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | GE Fanuc                          |
| **Driver**             | GE Fanuc RX3i Serial (Gen1)       |
| **Communication Port** | Local Serial connection file path |
| **Baud Rate**          | 19200                             |
| **Data Bits**          | 8                                 |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station ID**         | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | -------------- | ------------------ | --------------- | --------------- | --------------- |
| I        | bit            | DDDDD              | 1               | 32768           | Input bit       |
| Q        | bit            | DDDDD              | 1               | 32768           | Output bit      |
| M        | bit            | DDDDD              | 1               | 32768           |                 |
| G        | bit            | DDDD               | 1               | 7680            |                 |
| T        | bit            | DDDD               | 1               | 1024            |                 |
| SA       | bit            | DDD                | 1               | 128             |                 |
| SB       | bit            | DDD                | 1               | 128             |                 |
| SC       | bit            | DDD                | 1               | 128             |                 |
| S        | bit            | DDD                | 1               | 25471           |                 |
| R        | word           | DDDDD              | 1               | 32640           |                 |
| AQ       | word           | DDDDD              | 1               | 32640           | Analog Output   |
| AI       | word           | DDDDD              | 1               | 32640           | Analog Input    |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] HPE GPIO (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/GPIO/

Review the following information for setting up and configuring the HPE GPIO (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                  |
| ---------------------------- | ----------------------------------------------------------------- |
| **Driver type**              | Serial                                                            |
| **Validated devices/series** | Use the this driver to connect to your gateway hardware I/O port. |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter   | Value           |
| ----------- | --------------- |
| **Type**    | GPIO            |
| **Driver**  | HPE GPIO (Gen1) |
| **Address** | 33              |
| **Bus**     | 7               |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| Name               | Value Type | Address Format | Min Address | Max Address |
| ------------------ | ---------- | -------------- | ----------- | ----------- |
| DI\_bit            | bit        | D              | 1           | 8           |
| DO\_bit            | bit        | D              | 1           | 8           |
| Polarity\_bit      | bit        | D              | 1           | 8           |
| Configuration\_bit | bit        | D              | 1           | 8           |
| DI                 | byte       | D              | 0           | 0           |
| DO                 | byte       | D              | 0           | 0           |
| Polarity Inversion | byte       | D              | 0           | 0           |
| Configuration      | byte       | D              | 0           | 0           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Beckhoff TwinCAT3 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Beckhoff/

Review the following information for setting up and configuring the Beckhoff TwinCAT3 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                      |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                              |
| **Validated devices/series** | [Beckhoff TwinCat 3](https://www.beckhoff.com/en-ca/products/automation/twincat/tc1xxx-twincat-3-base/tc1200.html)<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.

:::hint{type="info"}
**Notes**:&#x20;

- Make sure the Litmus Edge IP address is configured in TWINCAT.
- The Beckhoff PLC is also a PC with its own OS, and an IP address can be set up like a PC.
:::

**To configure your device:**

1. &#x20;Note down the following information and refer to it as needed.&#x20;
   &#x20;    **Device**: TwinCAT 3 Beckhoff PLC
   &#x20;    **Communication I/F**: Ethernet
2. Launch a new project in TcXaeShell.&#x20;
3. Click **Routes&#x20;**&#x74;o add the target that is going to connect to the PLC.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HaponcqXFtWYQjLP27IRQ_twincat-01-update.png)
4. Click **Add...**&#x43;onfigure the following parameters. Please note that only clients in the *Routes&#x20;*&#x6C;ist can connect to the simulator.&#x20;
   **Route Name (Target)**: Enter a name for the route.&#x20;
   **AmsNetId**: Enter the AmsNetId for the route. If the PLC is running as a soft connection, and Litmus Edge and the panel PC are on the same network, the *AmsNetId* and *Address info* values should be the same with `.1.1` at the end.&#x20;
   **Transport Type**: Review and confirm the transport type for the route.&#x20;
   **Address Info**: Enter the IP address of the corresponding target system in the network. If the PLC is running as a soft connection, and Litmus Edge and the panel PC are on the same network, the *AmsNetId&#x20;*&#x61;nd *Address info* values should be the same with `.1.1` at the end.
   **Target Route**: Select **Static**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-7FWVIf21WcYjwoyXpa0o_twincat-02-01.png)
5. Click the **Restart TwinCAT&#x20;**&#x69;con. Then, click the **Login&#x20;**&#x69;con to start the simulator.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HNFglQwMydR6a1sq3g0P6_twincat-03.png)

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                                                                                                                                                                             |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type**            | Beckhoff                                                                                                                                                                                          |
| **Driver**          | Beckhoff TwinCAT3 Ethernet (Gen1)                                                                                                                                                                 |
| **Network Address** | The device address you defined in Step 1                                                                                                                                                          |
| **Network Port**    | 48898&#xA;Enter the network port for the Beckhoff device defined in Step 1                                                                                                                        |
| **Ads port**        | 851                                                                                                                                                                                               |
| **Ams ID**          | AMS ID for the Beckhoff device<br />Enter the following: `[Beckhoff device Ams ID].1.1`&#xA;For example, if your Beckhoff Ams ID is 37.136.43.210, enter `37.136.43.210.1.1`.                     |
| **Local Ams ID**    | Local AMS ID for the Litmus Edge device&#xA;&#xA;Enter the following: `[Litmus Edge IP address].1.1`&#xA;For example, if your Litmus Edge IP address is 192.168.0.152, enter `192.168.0.152.1.1`. |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following tag parameters and available value types.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the case-sensitive register name exactly as it is defined in the PLC.

A **Connected** status for the device won't display until a tag with a correct register name is created.

## Available Value Types

- `bool`
- `sint`
- `byte`
- `int`
- `word`
- `dint`
- `dword`
- `lint`
- `lword`
- `real `
- `lreal`
- `ltime`
- `string`
- `wstring`
- `date`
- `time`
- `dateandtime`
- `timeofday`

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] AB DF1 (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

Review the following information for setting up and configuring the AB DF1 (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                                                                                                                                                                                                                                                                                            |
| **Validated devices/series** | [MicroLogix](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/micro-controllers/micrologix-family/micrologix-1400-controllers.html)&#xA;[SLC 500](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/small-controllers/slc-500-controllers.html)<br />Allen-Bradley DF1 drivers use CRC checksum. |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

The setup shown here is for the Rockwell Automation Allen-Bradley DF1 (Gen1) PLC.

Refer to the following parameters.&#x20;

**Communication Mode:**

DF1 Full Duplex protocol 19200, None, 8, 1 (default)

Error Check: CRC

**To configure your device:&#x20;**

1. Note down the following information and refer to it as needed.&#x20;
   **Device**: AB DF1 SLC 5/04
   **Communication I/F**: RS232. Refer to the following figure.

   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Zx0ExTUn_RHbbI5EVM1bj_abdf1reference.png" size="80" width="523" height="795" caption="AB DF1 reference" position="center" showCaption="true"}
2. Launch RSLinx Classic, and then click **Configure Drivers**.
3. Add an RS-232 DF1 devices driver and then click **Configure**.
4. Set up communication parameters, click **Auto-Configure** to test, and then click **OK**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NOjKDxWnJPl-iHG06B1f2_ab-df1-auto.png "Communication parameters")
5. Launch RSLogix 500 V8.10.00, and then click **Comms > System Comms**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Allen Bradley                     |
| **Driver**             | AB DF1 (Gen1)                     |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 19200                             |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Slot**               | 0                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Access Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                        |   |
| -------- | --------------- | ---------------- | ------------------ | --------------- | --------------- | -------------------------------------- | - |
| I        | bit             | R/W              | DDDdd              | 0               | 25515           | Input bit                              |   |
| O        | bit             | R/W              | DDDdd              | 0               | 25515           | Output bit                             |   |
| S        | int             | R/W              | DDD                | 0               | 255             | Status bit                             |   |
| B3       | bit             | R/W              | DDDdd              | 0               | 25515           | Bit data file (B3)                     |   |
| Bfn      | bit             | R/W              | FFFDDDdd           | 10000           | 25525515        | Bit data file                          |   |
| T4.ACC   | int             | R/W              | DDD                | 0               | 255             | Timer Preset Value (T4)                |   |
| T4.PRE   | int             | R/W              | DDD                | 0               | 255             | Timer Accumulator Value (T4)           |   |
| Tfn.ACC  | int             | R/W<br />R/W     | FFFDDD             | 1000            | 255255          | Timer Accumulator Value                |   |
| Tfn.PRE  | int             | R/W              | FFFDDD             | 1000            | 255255          | Timer Preset Value                     |   |
| CS.ACC   | int             | R/W              | DDD                | 0               | 255             | Counter Accumulator Value (CS)         |   |
| CS.PRE   | int             | R/W              | DDD                | 0               | 255             | Counter Preset Value (CS)              |   |
| Cfn.ACC  | int             | R/W              | FFFDDD             | 1000            | 255255          | Counter Accumulator Value              |   |
| Cfn.PRE  | int             | R/W              | FFFDDD             | 1000            | 255255          | Counter Preset Value                   |   |
| R6       | int             | R/W              | DDD                | 0               | 255             | Control Register (R6)                  |   |
| R6.POS   | int             | R/W              | DDD                | 0               | 255             | Control Register pointer position (R6) |   |
| R6.LEN   | int             | R/W              | DDD                | 0               | 255             | Control Register pointer length (R6)   |   |
| Rfn      | int             |                  | FFFDDD             | 0               | 255255          | Control Rgister                        |   |
| Rfn.POS  | int             |                  | FFFDDD             | 0               | 255255          | Control Register pointer position      |   |
| Rfn.LEN  | int             |                  | FFFDDD             | 0               | 255255          | Control Register pointer length        |   |
| N7       | int             |                  | DDD                | 0               | 255             | Integer data file (N7)                 |   |
| Nfn      | int             |                  | FFFDDD             | 1000            | 255999          | Integer data file                      |   |
| Lfn      | int             |                  | FFFDDD             | 1000            | 255999          |                                        |   |
| F8       | float           |                  | DDD                | 0               | 255             | Floating point data file (F8)          |   |
| Ffn      | float           |                  | FFFDDD             | 1000            | 255999          | Floating point data file               |   |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] ABB
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your device.

| **Device**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | **Compatible Ethernet DeviceHub Driver**                |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| - [6000 Series FCU](https://new.abb.com/products/measurement-products/upstream-oil-and-gas/flow-computers-remote-controllers/flow-computers)
- [6000 Series MicroFLO](https://new.abb.com/products/measurement-products/upstream-oil-and-gas/flow-computers-remote-controllers/flow-computers)
- [6000 XSeriesG3](https://new.abb.com/products/measurement-products/upstream-oil-and-gas/flow-computers-remote-controllers/flow-computers)
- [6000 XSeriesG4](https://new.abb.com/products/measurement-products/upstream-oil-and-gas/flow-computers-remote-controllers/flow-computers) | [ABB Totalflow DB2 (Gen1)](docId:4kr-ty1vt3iQTpeCgGgtz) |


[title] AB PLC5 (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

Review the following information for setting up and configuring the AB PLC5 (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                              |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                        |
| **Validated devices/series** | [PLC5](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/discontinued-products/plc-5-controllers.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

:::hint{type="info"}
**Note**: When configuring the settings for the PLC, the *Error Detect* setting must be set to CRC, otherwise a connection with Litmus Edge won't be successful.&#x20;
:::

Refer to the following parameters and reference images when setting up the PLC.

- **Device**: PLC5/40C
- **Communication I/F**ꓽ RS232

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Vuzyjc9Ga0gsbEKsKmp0J_image.png" size="80" width="1509" height="1740" position="center" showCaption="false"}

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/I1cWq7sLWkZLO5s6KmGmE_image.png)

Complete the following steps to setup and configure the PLC.&#x20;

**To configure the PLC:**

1. Connect the PLC to the computer with a serial port 25-pin D-shell cable.
2. Open **RSLinx Classic&#x20;**&#x73;oftware.&#x20;
3. Click the **Configure Drivers** icon. Then, click **Add New\...** and add the *RS-232 DF1 devices* driver.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Pv7L50fnFDVDhH32HMKQr_plc5-03.png)
4. Configure the driver with the following parameter values and click **OK**.&#x20;
   **Baud Rate**: 9600
   **Bits Per Char**: 8
   **Stop Bits**: 1
   **Parity**: None
   **Error Detect**: CRC
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/l4ly-qvg5A0gpC4UzNtlQ_plc5-04.png)
5. In the driver settings, click **Auto-Configure** and confirm you see an `Auto Configuration Successful!` message.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1YiiprT-HsMr9d2xZHc2c_plc5-05.png)
6. Ensure these same settings are configured in the PLC to establish a connection.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SyrwJ7JGbpPGMHPA0p1YX_plc5-06.png)
7. Open **RSLogix 5** software.&#x20;
8. Click **Comms&#x20;**&#x61;nd select **Who Active Go Online**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1aKoajDOGyJLH_9qZp0RQ_plc5-07.png)
9. Select the device that you configured and click **Online**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FndapLEP2lzeKLxbfrOdJ_plc5-08.png)
10. In the navigation menu, click **Channel Configuration** and select **Open**.&#x20;
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GP2NNwVk0f6nNt3AhQPJs_plc5-09.png)
11. Confirm the *Serial Port* settings for **Channel 0**, which is the RS232 port. Note down the Baud Rate, Data Bits, Stop Bits, and Parity. The *Error Detect* setting must be set to **CRC**.&#x20;
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2NO4ryrjiopaxydtoFlrw_plc5-10.png)
12. You can use **Channel 3A** to configure the Ethernet port, if applicable.&#x20;
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iTtHacTheCd3F6ocBhMMi_plc5-11.png)

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Allen Bradley                     |
| **Driver**             | AB PLC5 (Gen1)                    |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Slot**               | 0                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

Refer to the appropriate register table depending on your version of Litmus Edge.&#x20;

### Register Table for Litmus Edge 3.11.0 and Later

| **Name** | **Value Type** | **Access Types&#x20;** | **Address Format** | **Min Address** | **Max Address** | **Description**                    |
| -------- | -------------- | ---------------------- | ------------------ | --------------- | --------------- | ---------------------------------- |
| I        | bit            | R/W                    | DDDdd              | 0               | 25515           | Input bit                          |
| O        | bit            | R/W                    | DDDdd              | 0               | 25515           | Output bit                         |
| S        | int            | R/W                    | DDD                | 0               | 255             | Status file                        |
| B3       | bit            | R/W                    | DDDdd              | 0               | 25515           |                                    |
| Bfn      | bit            | R/W                    | FFFDDDdd           | 10000           | 25525515        |                                    |
| T4.ACC   | int            | R/W                    | DDD                | 0               | 255             | Timer Accumulator (T4)             |
| T4.PRE   | int            | R/W                    | DDD                | 0               | 255             |                                    |
| Tfn.ACC  | int            | R/W                    | FFFDDD             | 10000           | 255255          |                                    |
| Tfn.PRE  | int            | R/W                    | FFFDDD             | 10000           | 255255          |                                    |
| CS.ACC   | int            | R/W                    | DDD                | 0               | 255             | Counter Accumulator (CS)           |
| CS.PRE   | int            | R/W                    | DDD                | 0               | 255             |                                    |
| Cfn.ACC  | int            | R/W                    | FFFDDD             | 10000           | 255255          |                                    |
| Dfn.PRE  | int            | R/W                    | FFFDDD             | 10000           | 255255          |                                    |
| R6       | int            | R/W                    | DDD                | 0               | 255             | Control File(R6)                   |
| R6.POS   | int            | R/W                    | DDD                | 0               | 255             | Control file pointer position (R6) |
| R6.LEN   | int            | R/W                    | DDD                | 0               | 255             |                                    |
| Rfn      | int            | R/W                    | FFFDDD             | 0               | 255255          |                                    |
| Rfn.POS  | int            | R/W                    | FFFDDD             | 0               | 255255          |                                    |
| Rfn.LEN  | int            | R/W                    | FFFDDD             | 0               | 255255          |                                    |
| N7       | int, bit(int)  | R/W                    | DDDdd              | 0               | 25515           |                                    |
| Nfn      | int, bit(int)  | R/W                    | FFFDDDdd           | 10000           | 25599915        |                                    |
| Lfn      | int            | R/W                    | FFFDDD             | 10000           | 255999          |                                    |
| F8       | float          | R/W                    | DDD                | 0               | 255             |                                    |
| Ffn      | float          | R/W                    | FFFDDD             | 10000           | 255999          |                                    |

### Register Table for Litmus Edge 3.5.6 and Earlier

| **Name** | **Value Types** | **Access Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                    |
| -------- | --------------- | ---------------- | ------------------ | --------------- | --------------- | ---------------------------------- |
| I        | bit             | R/W              | DDDdd              | 0               | 25515           | Input bit                          |
| O        | bit             | R/W              | DDDdd              | 0               | 25515           | Output bit                         |
| S        | int             | R/W              | DDD                | 0               | 255             | Status file                        |
| B3       | bit             | R/W              | DDDdd              | 0               | 25515           |                                    |
| Bfn      | bit             | R/W              | FFFDDDdd           | 10000           | 25525515        |                                    |
| T4.ACC   | int             | R/W              | DDD                | 0               | 255             | Timer Accumulator (T4)             |
| T4.PRE   | int             | R/W              | DDD                | 0               | 255             |                                    |
| Tfn.ACC  | int             | R/W              | FFFDDD             | 10000           | 255255          |                                    |
| Tfn.PRE  | int             | R/W              | FFFDDD             | 10000           | 255255          |                                    |
| CS.ACC   | int             | R/W              | DDD                | 0               | 255             | Counter Accumulator (CS)           |
| CS.PRE   | int             | R/W              | DDD                | 0               | 255             |                                    |
| Cfn.ACC  | int             | R/W              | FFFDDD             | 10000           | 255255          |                                    |
| Dfn.PRE  | int             | R/W              | FFFDDD             | 10000           | 255255          |                                    |
| R6       | int             | R/W              | DDD                | 0               | 255             | Cotorl File(R6)                    |
| R6.POS   | int             | R/W              | DDD                | 0               | 255             | Control file pointer position (R6) |
| R6.LEN   | int             | R/W              | DDD                | 0               | 255             |                                    |
| Rfn      | int             | R/W              | FFFDDD             | 0               | 255255          |                                    |
| Rfn.POS  | int             | R/W              | FFFDDD             | 0               | 255255          |                                    |
| Rfn.LEN  | int             | R/W              | FFFDDD             | 0               | 255255          |                                    |
| N7       | int             | R/W              | DDD                | 0               | 255             |                                    |
| N7       | bit(int)        | R/W              | DDDdd              | 0               | 25515           |                                    |
| Nfn      | int             | R/W              | FFFDDD             | 10000           | 255999          |                                    |
| Nfn      | bit(int)        | R/W              | FFFDDDdd           | 1000015         | 25599915        |                                    |
| Lfn      | int             | R/W              | FFFDDD             | 10000           | 255999          |                                    |
| F8       | float           | R/W              | DDD                | 0               | 255             |                                    |
| Ffn      | float           | R/W              | FFFDDD             | 10000           | 255999          |                                    |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] AB Micro850 (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Allen-Bradley/Gen 1 Drivers/

Review the following information for setting up and configuring the AB Micro850 (Gen1) driver.&#x20;

# Litmus Edge Compatible Series

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                 |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                                                         |
| **Validated devices/series** | [Micro800](https://www.rockwellautomation.com/en-us/products/hardware/allen-bradley/programmable-controllers/micro-controllers/micro800-family/micro800-plug-in-modules.html)<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: Allen-Bradley

   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WCDrI7sm2UjoP1nUjVkY3_ab-micro850.png" size="80" width="604" height="345" position="center" showCaption="false"}
2. Launch RSLinx Classic, and connect the device to a PC using USB cable. The device is added to the browser.
3. Right-click the device and then click **Module Configuration**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PAvXurV3Acmsjt3gZGH8j_ab-micro850-browse482x338.png" size="80" width="482" height="338" caption="Module Configuration option" position="center" showCaption="true"}
4. From *Port Configuration*, set up the device Ethernet parameters.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Sib9aU1z13qakcOoSP_lK_ab-micro850-ethernet-parameters.png" size="60" width="276" height="367" caption="AB Micro850 parameters" position="center" showCaption="true"}
5. Create an AB\_ETHP-1 driver. Select an adapter on the same subnet as the device. If you cannot find it in the local subnet, select **Remote Subnet**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3TbiMQQ5ZH9y7I1kigRxR_ab-micro850-adapter.png" size="70" width="382" height="294" caption="Configure Driver dialog box" position="center" showCaption="true"}
6. Launch CCS, Connected Component Workbench.&#x20;
7. Click the **Discover&#x20;**&#x69;con to browse the device.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hDE__igxxrA_kWyUZcwel_ab-micro850-ccs-browse.png" size="80" width="418" height="426" caption="Connection Browser dialog box" position="center" showCaption="true"}
8. Double-click the device.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DeTwluyUmHzpgdVBFTwO-_ab-micro850-details.png" size="80" width="880" height="573" caption="AB Micro850 details" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Allen-Bradley                            |
| **Driver**          | AB Micro850 (Gen1)                       |
| **Network address** | The device address you defined in Step 1 |
| **Port**            | 44818                                    |
| **Slot Number**     | 0                                        |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following tag parameters and available value types.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the case-sensitive register name exactly as it is defined in the PLC.

A **Connected** status for the device won't display until a tag with a correct register name is created.

## Available Value Types

- `bool`
- `sint`
- `int`
- `dint`
- `real`
- `lint`
- `byte`
- `word`
- `dword`
- `lword`

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Excel
[path] QuickStart Guide/Industrial Systems Connection Guide/

You can use the [Excel (Gen1)](docId\:u6h-I2KTdOq32LmU469Pu) driver to read values in an Excel file.

[title] Fanuc Corporation
[path] QuickStart Guide/Industrial Systems Connection Guide/

For any CNC model that supports FANUC FOCAS 2 (the standard protocol for collecting data from Fanuc CNC machines), you can use the [Fanuc CNC Ethernet (Gen1)](docId\:dVtELM4I6jlPxQrqJjIYz) DeviceHub driver.&#x20;

[title] OPC UA
[path] QuickStart Guide/Industrial Systems Connection Guide/

:::hint{type="info"}
**NOTE**: If the server is running on Windows, make sure to add the Domain name to the list of local hosts. See the *Hosts File* section in [Configure DNS/NTP Servers](docId\:pz9D0WPBQbUGyh0MH6wyx) for more information.
:::

Here are the major differences for the OPC UA Client drivers:

| **This driver**                                        | **Does this**                                                                                                                                                                                                                              |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [DeviceHub Agent](docId\:n5DPmd_7X1eCqZxVimhFw)        | Connects to the Litmus Edge DeviceHub Agent, which forwards data from an OPC Classic (Data Access) Server.                                                                                                                                 |
| [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR) | - Recommended driver to use to connect to an OPC UA Server.
- Has subscribe and polling modes.                                                                                                                                             |
| [OPC UA Client](docId\:CYSORhlYGBTc7-CJiLi0v)          | * Used to subscribe data from OPC UA servers.
* Only sends a message to the broker if the value changes at the server level.
* Subscription interval is defined at the driver level and does not have a polling interval at the tag level. |
| [OPC UA Client Poll](docId\:wz06OtFIN6LdMrxzoMj7i)     | - Polls the OPC UA server at regular user-defined intervals, returning the latest status from all specified nodes.
- As soon as a record is generated, the status is passed to the pipeline to avoid delays in processing.                 |


[title] Enron Modbus
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 2 Drivers/

:::hint{type="info"}
**Notes**:&#x20;

- This driver is available for Litmus Edge version 3.11.0 and later.&#x20;
- If multiple stations are connected to the RS-485 bus, then use the [Modbus ASCII Advanced](docId\:dGgP6KMsUj7B3cqj6lKp8) driver instead of this one.&#x20;
:::

Review the following information for setting up and configuring the Enron Modbus driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter | Compatible items                                        |
| ----------------------- | ------------------------------------------------------- |
| **Driver type**         | Serial (RS-485) or Ethernet                             |
| **When to use&#x20;**   | Serial connection or TCP connection to a Modbus device  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

- If you are setting up an Ethernet connection, find the device's network parameters.&#x20;
- If you are setting up a serial connection, record the serial communication parameters for the device.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                                                                     | Value                                                                                                     |
| ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| **Type**                                                                      | Modbus                                                                                                    |
| **Driver**                                                                    | Enron Modbus                                                                                              |
| **Override Station ID**&#xA;Override registers' Station ID setting            | False&#xA;True                                                                                            |
| **Override BW Order**&#xA;Override registers' "Bytes And Words Order" setting | False&#xA;True                                                                                            |
| **Protocol Mode**                                                             | RTU&#xA;ASCII                                                                                             |
| **Request Timeout (ms)**                                                      | 2000                                                                                                      |
| **Transport Type**                                                            | Serial&#xA;TCP/IP                                                                                         |
| **Network Address**&#xA;If TCP/IP selected                                    | The device address you recorded in Step 1.                                                                |
| **Network Port**&#xA;If TCP/IP selected                                       | 502                                                                                                       |
| **Device File**&#xA;If Serial selected                                        | The file of the serial port you are using                                                                 |
| **Baud Rate**&#xA;If Serial selected                                          | 1200&#xA;2400&#xA;4800&#xA;9600&#xA;19200&#xA;38400&#xA;57600&#xA;115200&#xA;230400&#xA;460800&#xA;921600 |
| **Data Bits**&#xA;If Serial selected                                          | 5&#xA;6&#xA;7&#xA;8                                                                                       |
| **Stop Bits**&#xA;If Serial selected                                          | 1&#xA;1.5&#xA;2                                                                                           |
| **Parity**&#xA;If Serial selected                                             | Even&#xA;Mark&#xA;None&#xA;Odd&#xA;Space                                                                  |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**                  | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                         |
| ------------------------- | --------------- | ------------------ | --------------- | --------------- | --------------------------------------- |
| 1x                        | bool            | 1DDD               | 100             | 1999            | Boolean Registers                       |
| 3x                        | int16           | 3DDD               | 3001            | 1999            | Short 16-bit Integer Registers          |
| 5x                        | int32           | 5DDD               | 5001            | 1999            | Long 32-bit Integer Registers           |
| 7x                        | float32         | 7DDD               | 7001            | 65535           | Floating Point Registers                |
| EventAlarm                | JSON            |                    |                 |                 | Event/Alarm Register                    |
| Acknowledgment<br />&#xA; | bool            |                    |                 |                 | Event/Alarm Acknowledgment (write only) |
| Archive                   | JSON            | 7DD                | 701             | 799             | Hourly and Daily Archive                |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Record Number** (not available for all names): Enter the record number for the tag.&#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Station ID**: Enter the value that indicates the position of the tag. &#x20;
- **Bytes and Words Order&#x20;**(not available for all names): This option configures how the tag data will be formatted and whether bytes and/or words will be counted from the start (big-endian style) or end (little-endian style) of strings of data. Select one of the following options.&#x20;
  - **Bytes-BigEndian**: Only bytes will be formatted in big-endian style (counted from the start).&#x20;
  - **Bytes-LittleEndian**: Only bytes will be formatted in little-endian style (counted from the end).&#x20;
  - **Bytes-BigEndian, Words-BigEndian**: Both bytes and words will be formatted in big-endian style (bytes and words counted from the start). For example: AB CD.&#x20;
  - **Bytes-BigEndian, Words-LittleEndian**: Bytes will be formatted in big-endian style and words will be formatted in little-endian style. For example: CD AB.&#x20;
  - **Bytes-LittleEndian, Words-BigEndian**: Bytes will be formatted in little-endian style and words will be formatted in big-endian style. For example: BA DC.
  - **Bytes-LittleEndian, Words-LittleEndian**: Both words and bytes will be formatted in little-endian style (counted from the end). For example: DC BA.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi Melsec-Q-Binary (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi Melsec-Q-Binary (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                     |
| ------------------------------ | ------------------------------------------------------------------------------------ |
| **Driver type**                | Ethernet                                                                             |
| **Validated devices/series**   | [MELSEC-Q](https://www.mitsubishielectric.com/fa/products/cnt/plcq/items/index.html) |
| **Replaced with Gen 2 driver** | [Mitsubishi Q/L Ethernet](docId\:h1mVsD1jQaa1ON79jn_UQ)                              |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC. See the steps below to view and edit the open ports on the PLC.
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

Refer to the following parameters.&#x20;

**Online simulator**: YES

**To configure your device:&#x20;**

1. PLC Configuration Software****
   **Device**: Mitsubishi Q03UDECPU
   **Communication I/F**: Ethernet, refer to the following figure
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/No1CkvJaM1EToyalGNl6l_mitsubishi-melsec-q-binary.png" size="80" width="592" height="317" caption="Reference image of device" position="center" showCaption="true"}
2. Connect the device to your PC using a USB.
3. Launch GXWork2 1.560J software, and then select **PLC Series**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2ZhK2CZSv4E3ZsM4fFtaK_mitsubishi-melsec-l-binary-read.png" size="80" width="657" height="468" caption="Read from PLC option" position="center" showCaption="true"}
4. Set up connection and then click **Connection Test**. Connect with the device using *Read*.
5. From the Navigation panel, click **Parameter > PLC Parameter > Build-in Ethernet Port Setting&#xA0;**&#x74;o set up the Ethernet parameters.
6. From the Navigation panel, click **Connection Destination > connection1**.
7. Double-click **PLC Module&#xA0;**&#x61;nd click **Find CPU (Build-in Ethernet port),** select the target device, and then click **Connection Test**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Mitsubishi                               |
| **Driver**          | Mitsubishi Melsec-Q-Binary (Gen1)        |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 5002                                     |
| **Station ID**      | 255                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**               |
| -------- | --------------- | ------------------ | --------------- | --------------- | ----------------------------- |
| X        | bit             | HHHH               | 0               | 65536           | Input Relay                   |
| Y        | bit             | HHHH               | 0               | 65536           | Output Relay                  |
| M        | bit             | DDDDD              | 0               | 65535           | Internal Relay                |
| SM       | bit             | DDDD               | 0               | 2047            | Special Relay                 |
| L        | bit             | DDDDD              | 0               | 32237           | Latch Relay                   |
| F        | bit             | DDDDD              | 0               | 32237           | Annunciator                   |
| V        | bit             | DDDDD              | 0               | 32237           | Edge Relay                    |
| B        | bit             | HHHH               | 0               | 32237           | Link Relay                    |
| TS       | bit             | DDDDD              | 0               | 25471           | Timer Contact                 |
| TC       | bit             | DDDDD              | 0               | 25471           | Timer Coil                    |
| SS       | bit             | DDDDD              | 0               | 25471           | Retentive Timer Contact       |
| SC       | bit             | DDDDD              | 0               | 25471           | Retentive Timer Coil          |
| CS       | bit             | DDDDD              | 0               | 25471           | Counter Contact               |
| CC       | bit             | DDDDD              | 0               | 25471           | Counter Coil                  |
| SB       | bit             | HHHH               | 0               | 32237           | Special Link Relay            |
| S        | bit             | DDDD               | 0               | 8191            | Step Relay                    |
| DX       | bit             | HHHH               | 0               | 8191            | Direct Input                  |
| DY       | bit             | HHHH               | 0               | 8191            | Direct Output                 |
| D        | word            | DDDD               | 0               | 9999            | Data Register                 |
| W        | word            | HHHH               | 0               | 8191            | Link Register                 |
| TN       | word            | DDDDD              | 0               | 25471           | Timer Current value           |
| SN       | word            | DDDD               | 0               | 25471           | Retentive Timer Current value |
| CN       | word            | DDDDD              | 0               | 25471           | Counter Current value         |
| SD       | word            | DDDD               | 0               | 2047            | Special register              |
| R        | word            | DDDD               | 0               | 9999            | File Register                 |
| ZR       | word            | HHHHHH             | 0               | 999999          | File Register                 |
| Z        | word            | DD                 | 0               | 20              | Index Register                |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::




[title] Mitsubishi A Series Serial
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 2 Drivers/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Review the following information for setting up and configuring the Mitsubishi A Series Serial driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                 |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Serial                                                                                                                                                                                           |
| **Validated devices/series** | [A Series](https://www.mitsubishielectric.com/fa/products/cnt/plca/pmerit/concept/index.html) models:<br />* A1S
* A2N
* A2A
* A2U
* A2AS
* A2USH
* A3A
* A2N
* A1SH
* A2SH                      |
| **Replaces Gen 1 driver(s)** | [Mitsubishi A2N Serial (Gen1)](docId:_dj7I56PSK6TSqzHS9-8D)&#xA;[Mitsubishi A2SH Serial (Gen1)](docId\:rGNHxyFgEdx-uVzpvHEQ-)&#xA;[Mitsubishi A2USH Serial (Gen1)](docId\:r7lUi53Cq8TcF5Wn05hSc) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter       | Value                                                                                                                     |
| --------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Type**        | Mitsubishi                                                                                                                |
| **Driver**      | Mitsubishi A Series Serial                                                                                                |
| **Device File** | The file of the serial port you are using                                                                                 |
| **Baud Rate**   | Select one of the following:<br />* 1200
* 2400
* 4800
* 9600
* 19200
* 38400
* 57600
* 115200
* 230400
* 460800
* 921600 |
| **Data Bits**   | Select one of the following:<br />* 5
* 6
* 7
* 8                                                                         |
| **Stop Bits**   | Select one of the following:<br />* 1
* 1.5
* 2                                                                           |
| **Parity**      | Select one of the following:<br />* Even
* Mark
* None
* Odd
* Space                                                      |
| **Plc Type**    | Select one of the following:<br />* A2N
* A2SH
* A2USH                                                                    |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

:::hint{type="info"}
**Note**: The address format in this Gen 2 driver is different from the replaced Gen 1 drivers for the same device.&#x20;
:::

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------- |
| X        | bit             | HHH                | 0               | 2047            | Input Relay     |
| Y        | bit             | HHH                | 0               | 2047            | Output Relay    |
| M        | bit             | DDDD               | 0               | 2047            | Internal Relay  |
| B        | bit             | HHH                | 0               | 1023            | Link Relay      |
| F        | bit             | DDDD               | 0               | 1023            | Annunciator     |
| R        | word            | DDDDD              | 0               | 65535           | File Register   |
| W        | word            | HHH                | 0               | 1023            | Link Register   |
| D        | word            | DDDD               | 0               | 1023            | Data Register   |
| CV       | word            | DDDD               | 0               | 4095            | Counter Memory  |
| TV       | word            | DDD                | 0               | 255             | Timer Memory    |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Panasonic FP Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Panasonic/

Review the following information for setting up and configuring the Panasonic FP Ethernet (Gen1)&#x20;driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Validated devices/series** | [FP2](https://na.industrial.panasonic.com/products/industrial-automation/plc-hmi-communication/lineup/programmable-logic-controllers-interface-terminal/series/245)&#xA;[FP7](https://na.industrial.panasonic.com/products/industrial-automation/plc-hmi-communication/lineup/programmable-logic-controllers-interface-terminal/series/227)&#xA;[FP-X](https://na.industrial.panasonic.com/products/industrial-automation/plc-hmi-communication/lineup/programmable-logic-controllers-interface-terminal/series/295) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed.&#x20;
   **Device**: Panasonic FP2SH-60K
   **Communication I/F**: RS232
2. Launch Control FPWIN Pro7 v7.2.3.0 software and click **Online > Communication parameters**.
3. Set up communication parameters.
4. Click **Online mode**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Panasonic                         |
| **Driver**             | Panasonic FP Serial (Gen1)        |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 19200                             |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station ID**         | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**             |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------------------- |
| X        | bit             | DDDDdd             | 0               | 999915          | Input bit                   |
| Y        | bit             | DDDDdd             | 0               | 999915          | Output bit                  |
| R        | bit             | DDDDdd             | 0               | 999915          | Internal Relay              |
| L        | bit             | DDDDdd             | 0               | 9999            | Link Relay                  |
| L\_Bit   | bit             | DDDDdd             | 0               | 999915          |                             |
| T        | bit             | DDDD               | 0               | 9999            | Timer                       |
| C        | bit             | DDDD               | 0               | 9999            | Counter                     |
| SV       | word            | DDDD               | 0               | 9999            | Timer/Counter Set Value     |
| EV       | word            | DDDDD              | 0               | 65535           | Timer/Counter Elapsed Value |
| DT       | word            | DDDDD              | 0               | 262143          | Data Register               |
| LD       | word            | DDDD               | 0               | 8447            | Link Register               |
| WX       | word            | DDDD               | 0               | 9999            | Input                       |
| WY       | word            | DDDD               | 0               | 9999            | Output                      |
| WR       | word            | DDDD               | 0               | 9999            | Internal Relay              |
| WL       | word            | DDDD               | 0               | 9999            | Link Relay                  |
| FL       | word            | DDDDD              | 0               | 99999           | File Register               |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Modbus ASCII Advanced
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 2 Drivers/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Use this driver instead of the [Modbus ASCII](docId\:oEOHqIBxp46l0dWTp-Xmz) driver when multiple stations are connected to the RS-485 bus. The **Station ID** setting can be customized at the tag level with this driver. The device connection status is defined by the last received response.

Review the following information for setting up and configuring the Modbus ASCII Advanced driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter | Compatible items                                 |
| ----------------------- | ------------------------------------------------ |
| **Driver type**         | Serial (RS-485)                                  |
| **When to use&#x20;**   | Serial connection to a device using Modbus ASCII |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                 | Value                                                                                                                     |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Type**                  | Modbus                                                                                                                    |
| **Driver**                | Modbus ASCII Advanced                                                                                                     |
| **Device File**           | The file of the serial port you are using                                                                                 |
| **Baud Rate**             | Select one of the following:<br />* 1200
* 2400
* 4800
* 9600
* 19200
* 38400
* 57600
* 115200
* 230400
* 460800
* 921600 |
| **Data Bits**             |                                                                                                                           |
| **Parity**                | Select even, none, or odd                                                                                                 |
| **Stop Bits**             | 1                                                                                                                         |
| **Zero-Based Addressing** | Select Enable or Disable                                                                                                  |
| **Delay Between Polls**   | 0                                                                                                                         |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types**                                | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| -------- | ---------------------------------------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D        | bit                                            | DDDDD              | 0               | 65535           | Discrete Input Contacts         |
| C        | bit                                            | DDDDD              | 0               | 65535           | Discrete Output Coils           |
| H        | uint16, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Output Holding Registers |
| I        | uint16, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Input Registers          |
| H\_bit   | bit                                            | DDDDDdd            | 0               | 6553515         | Analog Output Holding Registers |
| I\_bit   | bit                                            | DDDDDdd            | 0               | 6553515         | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Endianness&#x20;**(not available for all names): This option configures how the tag data will be formatted and whether bytes and/or words will be counted from the start (big-endian style) or end (little-endian style) of strings of data. Select one of the following options.&#x20;
  - **No Swap**: Data will be formatted in big-endian style (bytes and words counted from the start). For example: AB CD.&#x20;
  - **Swap Bytes**: Only bytes will be formatted in little-endian style (counted from the end). For example: BA DC.&#x20;
  - **Swap Words**: Only words will be formatted in little-endian style (counted from the end). For example: CD AB.&#x20;
  - **Swap Words & Bytes**: Both words and bytes will be formatted in little-endian style (counted from the end). For example: DC BA.&#x20;
- **Station ID**: Enter the value that indicates the position of the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] MQTT
[path] QuickStart Guide/Industrial Systems Connection Guide/

You have the option of connecting an [MQTT Client](docId\:Fcy3vjuZ_L8iqBj0_siX4) and [Industrial OT Server (formerly MQTT Server)](docId\:Zc7YcU8frONKFGnj2FcBn) as DeviceHub devices.

:::hint{type="info"}
**Note**: You can't connect the [MQTT Client](docId\:Fcy3vjuZ_L8iqBj0_siX4) to the DeviceHub [Industrial OT Server (formerly MQTT Server)](docId\:Zc7YcU8frONKFGnj2FcBn) if they are using the same Litmus Edge instance. This includes connecting through the Flows Manager or through an Integration connector. If they are using different Litmus Edge instances, they can connect.
:::


[title] Lumberg Automation
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your device.

| **Device**                | **Compatible Ethernet DeviceHub Driver** |
| ------------------------- | ---------------------------------------- |
| Lumberg Automation LioN-X | [LioN-X](docId\:ES9x_PLVkaHEf1qtz2irX)   |


[title] ODVA
[path] QuickStart Guide/Industrial Systems Connection Guide/

For devices that support the [ODVA EtherNet/IP™ network](https://www.odva.org/technology-standards/key-technologies/ethernet-ip/), you can use the [CIP Explicit (Gen1)](docId\:VWWMIuqmbsCB-gXFcXQH4) DeviceHub driver.

[title] Modbus ASCII (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 1 Drivers/

:::hint{type="info"}
**Note**: This driver will be deprecated in a future release. We recommend using the Gen 2 [Modbus ASCII](docId\:oEOHqIBxp46l0dWTp-Xmz).
:::

Review the following information for setting up and configuring the Modbus ASCII (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                 |
| ------------------------------ | ------------------------------------------------ |
| **Driver type**                | Serial                                           |
| **When to use**                | Serial connection to a device using Modbus ASCII |
| **Replaced with Gen 2 driver** | [Modbus ASCII](docId\:oEOHqIBxp46l0dWTp-Xmz)     |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Modbus                            |
| **Driver**             | Modbus ASCII (Gen1)               |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 7                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station ID**         | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| -------- | --------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D        | bit             | DDDD               | 0               | 9999            | Discrete Input Contacts         |
| C        | bt              | DDDD               | 0               | 9999            | Discrete Output Coils           |
| H        | word            | DDDD               | 0               | 9999            | Analog Output Holding Registers |
| I        | word            | DDDD               | 0               | 9999            | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Keyence Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Keyence/

Review the following information for setting up and configuring the Keyence Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **Validated devices/series** | [Keyence KV-L20V](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-8000/models/kv-l20v/)&#xA;[Keyence KV-700](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-5000_3000/models/kv-700/)&#xA;[Keyence KV-1000](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-5000_3000/models/kv-1000/)&#xA;[Keyence KV-3000](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-5000_3000/models/kv-3000/)&#xA;[Keyence KV-5000](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-5000_3000/models/kv-5000/)&#xA;[Keyence KV-7500&#xA;](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-7000/models/kv-7500/)[Keyence KV-8000](https://www.keyence.com/products/controls/plc-building-block-type/kv-8000/) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: Keyence KV-40DT

   **Communication I/F**: RS232. Refer to the following figures.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9nNvf2tfJmMHSfdZbJsXT_keyenceserial01.png" size="80" width="465" height="481" caption="Keyence Serial reference" position="center" showCaption="true"}
2. Launch KV-Studio software.&#x20;
3. Select HMI and PLC Devices.
4. Set up the PLC.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Keyence                           |
| **Driver**             | Keyence Serial (Gen1)             |
| **Communication Port** | Local Serial connection file path |
| **Baud Rate**          | 115200                            |
| **Data Bits**          | 8                                 |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**           |
| -------- | --------------- | ------------------ | --------------- | --------------- | ------------------------- |
| MR       | bit             | DDDDdd             | 0               | 399915          | Internal Auxiliary relay  |
| LR       | bit             | DDDdd              | 0               | 99915           | Latch Relay               |
| CR       | bit             | DDDdd              | 0               | 99915           | Control Relay             |
| R        | bit             | DDDdd              | 0               | 99915           | Relay                     |
| B        | bit             | HHHh               | 0               | 32767           | Link Relay                |
| T-Bit    | bit             | DDDD               | -               | 9999            | Counter bit               |
| C\_Bit   | bit             | DDDDDdd            | 0               | 6553515         | Data memory bit           |
| SM\_Bit  | vir             | DDDDdd             | 0               | 999915          | Temporary data memory bit |
| CM\_bit  | bt              | DDDDDdd            | 0               | 6553515         | Control memory bit        |
| EM\_Bit  | bit             | DDDDDdd            | 0               | 6553515         | Data memory               |
| FM\_Bit  | bit             | DDDDDdd            | 0               | 6553515         | File Register bit         |
| CTC\_Bit | bit             | D                  | 0               | 7               |                           |
| W\_Bit   | bit             | HHHh               | 0               | 524287          | Link Register bit         |
| VM\_Bit  | bit             | DDDDDdd            | 0               | 6553515         |                           |
| VB\_Bit  | bit             | HHHh               | 0               | 63999           |                           |
| CTC      | word            | D                  | 0               | 7               |                           |
| CTH      | word            | D                  | 0               | 3               |                           |
| Z        | word            | DD                 | 1               | 12              |                           |
| CS       | word            | DDDD               | 0               | 9999            | Counter preset            |
| CC       | word            | DDDD               | 0               | 9999            | Counter current           |
| TS       | word            | DDDD               | 0               | 99999           | Timer preset              |
| TC       | word            | DDDD               | 0               | 9999            | Timer Current             |
| B\_Word  | word            | HHH                | 0               | 2047            | Link Relay                |
| R-Word   | word            | DDD                | 0               | 999             | Relay                     |
| VB       | word            | HHH                | 0               | 3999            |                           |
| CR-Word  | word            | DDD                | 0               | 999             | Control Relay             |
| LR\_Word | word            | DDD                | 0               | 999             | Latch Relay               |
| MR\_Word | word            | DDDD               | 0               | 3999            | Internal Auxiliary relay  |
| FM       | word            | DDDDD              | 0               | 65535           | File Register             |
| EM       | word            | DDDDD              | 0               | 63535           | Data memory               |
| VM       | word            | DDDDD              | 0               | 65535           |                           |
| W        | word            | HHHH               | 0               | 32767           | Link Register             |
| TM       | word            | DDDD               | 0               | 9999            | Temporary data memory     |
| DM       | word            | DDDDD              | 0               | 65535           | Data memory               |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi FX5U-Ethernet ASCII (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi FX5U-Ethernet ASCII (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                        |
| ---------------------------- | --------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                |
| **Validated devices/series** | [MELSEC iQ-F](https://www.mitsubishielectric.com/fa/products/cnt/plcf/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC. See the steps below to view and edit the open ports on the PLC.
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed. ****
   **Device**: Mitsubishi FX5U Ethernet ASCII FX5U-32M****
   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lTXYbKV5HwJLobE_-4nhQ_mitsubishi-fx5u-ethernet-binary-reference.png" size="80" width="955" height="588" caption="Reference image of device" position="center" showCaption="true"}
2. Launch GXWork3 V1.035M software, and then click **Online > Read from PLC**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Sw3n3iOUDE9NhWXoF5MjS_mitsubishi-fx5u-gx-online-read482x338.png" size="80" width="482" height="338" caption="Read from PLC option" position="center" showCaption="true"}
3. Select the series.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VCGUFwGmsLbIgU9TSSMr9_mitsubishi-fx5u-ethernet-binary-series-select.png" size="70" width="323" height="111" caption="Series Selection dialog box" position="center" showCaption="true"}
4. Select the connection destination.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6SBNb9RA0DbV-q7dU55w7_mitsubishi-fx5u-ethernet-binary-destination.png" size="80" width="820" height="429" caption="Select Connection Destination dialog box" position="center" showCaption="true"}
5. Double-click the PLC module icon, and click Find to browse the device on the network.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MrFx2s2JWTYdvd5BZOph-_mitsubishi-fx5u-ethernet-binary-browse.png" size="80" width="1121" height="550" caption="Network browse step" position="center" showCaption="true"}
6. From the Navigation panel, click **Ethernet Port&#xA0;**&#x74;o set up communication parameters. Use **ASCII&#x20;**&#x66;or this device.&#x20;
7. Double-click **External Device Configuration**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/z_GMbNgF_qKC9kS9laMs2_mitsubishi-fx5u-ethernet-binary-communication.png" size="80" width="1048" height="510" caption="External Device Configuration option" position="center" showCaption="true"}
8. Set up the connections. In this case, port 4996 through 4999 are able to connect.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SzbfndO0OvOkjsWGUqMu2_mitsubishi-fx5u-ethernet-binary-ports.png" size="80" width="975" height="185" caption="Connection setup screen" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Mitsubishi                               |
| **Driver**          | Mitsubishi FX5U-Ethernet-ASCII (Gen1)    |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 5002                                     |
| **Station ID**      | 255                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description**               |
| -------- | -------------- | ------------------ | --------------- | --------------- | ----------------------------- |
| SM       | bit            | DDDD               | 0               | 9999            | Special Relay                 |
| X        | bit            | HHHH               | 0               | 1023            | Input Relay                   |
| Y        | bit            | HHHH               | 0               | 1023            | Output Relay                  |
| M        | bit            | DDDDD              | 0               | 65535           | Internal Relay                |
| L        | bit            | DDDDD              | 0               | 32237           | Latch Relay                   |
| F        | bit            | DDDDD              | 0               | 32237           | Annunciator                   |
| B        | bit            | DDDDD              | 0               | 32237           | Link Relay                    |
| TS       | bit            | DDDD               | 0               | 1023            | Timer Contact                 |
| TC       | bit            | DDDD               | 0               | 1023            | Timer Coil                    |
| CS       | bit            | DDDD               | 0               | 1023            | Counter Contact               |
| CC       | bit            | DDDD               | 0               | 1023            | Counter Coil                  |
| SB       | bit            | DDDDD              | 0               | 32737           | Special Link Relay            |
| S        | bit            | DDDD               | 0               | 4095            | Step Relay                    |
| Z        | word           | DD                 | 0               | 19              | Index Register                |
| SW       | word           | DDDDD              | 0               | 32767           | Special Link Register         |
| CN       | word           | DDDD               | 0               | 1023            | Counter Current Value         |
| SN       | word           | DDDD               | 0               | 1023            | Retentive Timer Current Value |
| TN       | word           | DDDD               | 0               | 1023            | Timer current Value           |
| W        | word           | DDDDD              | 0               | 32767           | Link Register                 |
| R        | word           | DDDDD              | 0               | 32767           | File Register                 |
| D        | word           | DDDD               | 0               | 7999            | Data Register                 |
| SD       | word           | DDDDD              | 0               | 11999           | Special Register              |
| LZ       | word           | D                  | 0               | 1               | Long Index Register           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi SLMP (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi SLMP (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                            |
| ---------------------------- | ------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                    |
| **Validated devices/series** | [Mitsubishi iQ-R](https://www.mitsubishielectric.com/fa/products/cnt/plcr/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC.
:::

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Mitsubishi                               |
| **Driver**          | Mitsubishi SLMP (Gen1)                   |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 1025                                     |
| **Station ID**      | 255                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description**         |
| -------- | -------------- | ------------------ | --------------- | --------------- | ----------------------- |
| X        | bit            | HHHh               | 0               | 12287           | Input                   |
| Y        | bit            | HHHh               | 0               | 12287           | Output                  |
| M        | bit            | DDDDDDDD           | 0               | 16777215        | Internal Relay          |
| L        | bit            | DDDDD              | 0               | 32767           | Latch Relay             |
| B        | bit            | HHHHHHHh           | 0               | 268435455       | Link Relay              |
| F        | bit            | DDDDD              | 0               | 32767           | Annunciator             |
| S        | bit            | DDDD               | 0               | 4095            |                         |
| SB       | bit            | HHHHHHh            | 0               | 268435455       | Link Special Relay      |
| V        | bit            | DDDDD              | 0               | 32767           | Edge Relay              |
| DX       | bit            | HHHH               | 0               | 8191            |                         |
| DY       | bit            | HHHH               | 0               | 8191            |                         |
| TS       | bit            | DDDDDDD            | 0               | 8993439         | Timer Contact           |
| TC       | bit            | DDDDDDD            | 0               | 08993439        | Timer Coil              |
| SS       | bit            | DDDDDDD            | 0               | 8993439         | Retentive Timer         |
| SC       | bit            | DDDDDDD            | 0               | 8993439         | Retentive Timer Coil    |
| CS       | bit            | DDDDDDD            | 0               | 8993439         | Counter Contact         |
| CC       | bit            | DDDDDDD            | 0               | 8993439         | Counter Coil            |
| SM       | bit            | DDDD               | 0               | 4095            | Special Relay           |
| TN       | word           | DDDDDDD            | 0               | 8993439         | Timer Current Value     |
| SN       | word           | DDDDDDD            | 0               | 8993439         | Retentive Timer Current |
| CN       | word           | DDDDDDD            | 0               | 8993439         | Counter Current Value   |
| D        | word           | DDDDDDDD           | 0               | 10117631        | Data Register           |
| W        | word           | HHHHHH             | 0               | 10117631        | Link Register           |
| SW       | word           | HHHHHH             | 0               | 10117631        | Special Link Register   |
| SD       | word           | DDDD               | 0               | 4095            | Special Register        |
| Z        | word           | DD                 | 0               | 23              | Index Register          |
| R        | word           | DDDDD              | 0               | 32767           | File Register           |
| ZR       | word           | HHH                | 0               | 65535           | File Register           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] JTEKT Toyopuc Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/JTEKT Toyopuc/

Review the following information for setting up and configuring the JTEKT Toyopuc Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                            |
| ---------------------------- | ------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                      |
| **Validated devices/series** | [JTEKT Toyopuc PCk06](https://toyoda.jtekt.co.jp/e/products/toyopuc/toyopuc-pck/index.html) |




To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: Jtekt PCk06-P-CPU

   **Communication I/F**: RS232C. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/75rvim4cohXSEkXIgX1g4_jtekt-toyopuc-serial-pinout.png" size="80" width="419" height="468" caption="JTEKT Toyopuc Serial reference" position="center" showCaption="true"}
2. Use PCwin software on your computer to configure the device for Ethernet access. &#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | JTEKT Toyopuc                     |
| **Driver**             | JTEKT Toyopuc Serial (Gen1)       |
| **Communication Port** | Local Serial connection file path |
| **Baud Rate**          | 9600                              |
| **Data Bits**          | 8                                 |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** |
| -------- | --------------- | ------------------ | --------------- | --------------- |
| 1D\_Bit  | bit             | HHHdd              | 0               | 409515          |
| D\_Bit   | bit             | HHHdd              | 0               | 332715          |
| 1N\_Bit  | bit             | HHdd               | 0               | 12715           |
| N\_Bit   | bit             | HHdd               | 0               | 25515           |
| S\_Bit   | bit             | HHHdd              | 0               | 102315          |
| 4M\_Bit  | bit             | Hdd                | 0               | 1515            |
| 1M\_Bit  | bit             | Hdd                | 0               | 1515            |
| M\_Bit   | bit             | Hdd                | 0               | 1515            |
| 5Y\_Bit  | bit             | Hdd                | 0               | 1515            |
| 4Y\_Bit  | bit             | Hdd                | 0               | 1515            |
| 1X\_Bit  | bit             | Hdd                | 0               | 1515            |
| X\_Bit   | bit             | Hdd                | 0               | 1515            |
| I\_Bit   | bit             | HHdd               | 0               | 12715           |
| 1C\_Bit  | bit             | Hdd                | 0               | 715             |
| T\_Bit   | bit             | Hdd                | 0               | 1515            |
| V\_Bit   | bit             | Hdd                | 0               | 1515            |
| 1K\_Bit  | bit             | Hdd                | 0               | 1515            |
| K\_Bit   | bit             | Hdd                | 0               | 1515            |
| 1D       | word            | HHH                | 0               | 4095            |
| D        | word            | HHH                | 0               | 3327            |
| 1N       | word            | HH                 | 0               | 127             |
| N        | word            | HH                 | 0               | 255             |
| S        | word            | HHH                | 0               | 1023            |
| 4M       | word            | H                  | 0               | 15              |
| 1M       | word            | H                  | 0               | 15              |
| M        | word            | H                  | 0               | 15              |
| 5Y       | word            | H                  | 0               | 15              |
| 4Y       | word            | H                  | 0               | 15              |
| 1X       | word            | H                  | 0               | 15              |
| X        | word            | H                  | 0               | 15              |
| L        | word            | HH                 | 0               | 127             |
| 1C       | word            | H                  | 0               | 7               |
| T        | word            | H                  | 0               | 15              |
| V        | word            | H                  | 0               | 15              |
| 1K       | word            | H                  | 0               | 15              |
| K        | word            | H                  | 0               | 15              |



## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Modbus RTU (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 1 Drivers/

:::hint{type="info"}
**Note**: This driver will be deprecated in a future release. We recommend using the Gen 2 [Modbus RTU](docId\:cLMEYaOkmeSZSJ9GmpLB-).
:::

Review the following information for setting up and configuring the Modbus RTU (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                               |
| ------------------------------ | ---------------------------------------------- |
| **Driver type**                | Serial                                         |
| **When to use&#x20;**          | Serial connection to a device using Modbus RTU |
| **Replaced with Gen 2 driver** | [Modbus RTU](docId\:cLMEYaOkmeSZSJ9GmpLB-)     |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Modbus                            |
| **Driver**             | Modbus RTU (Gen1)                 |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station ID**         | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**  | **Value Types**             | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| --------- | --------------------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D         | bit                         | DDDD               | 1               | 9999            | Discrete Input Contacts         |
| C         | bit                         | DDDD               | 1               | 9999            | Discrete Output Coils           |
| H\_Bit    | bit                         | DDDDdd             | 100             | 999915          | Analog Output Holding Registers |
| I\_Bit    | bit                         | DDDDdd             | 100             | 999915          | Analog Input Registers          |
| H         | int, uint                   | DDDD               | 1               | 9999            | Analog Output Holding Registers |
| I         | int, uint                   | DDDD               | 1               | 9999            | Analog Input Registers          |
| H\_Ulong  | ulong, ulong (big-endian)   | DDDD               | 1               | 9998            | Analog Output Holding Registers |
| I\_Ulong  | ulong, ulong (big-endian)   | DDDD               | 1               | 9998            | Analog Input Registers          |
| H\_Float  | float, float (big-endian)   | DDDD               | 1               | 9998            | Analog Output Holding Registers |
| I\_Float  | float, float (big-endian)   | DDDD               | 1               | 9998            | Analog Input Registers          |
| H\_Double | double, double (big-endian) | DDDD               | 1               | 9996            | Analog Output Holding Registers |
| I\_Double | double, double (big-endian) | DDDD               | 1               | 9996            | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Opto22 MMIO Protocol Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Opto Devices/

Review the following information for setting up and configuring the Opto22 MMIO Protocol Ethernet (Gen1)&#x20;driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                 |
| ---------------------------- | ------------------------------------------------ |
| **Driver type**              | Ethernet                                         |
| **Validated devices/series** | [OPTO22 SNAP PAC System](http://www.opto22.com/) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure your device for Ethernet access.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | Opto Devices&#xD;&#xA;&#xD;                  |
| **Driver**          | Opto22 MMIO Protocol Ethernet (Gen1)         |
| **Network Address** | The device address you defined during Step 1 |
| **Port**            | 2001                                         |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following register table and tag parameters. You can also [Search for Pre-defined Device Tags](docId\:W1Est_A3MIDOUIZrkSgvi) for the device.&#x20;

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**                | **Value Types** | **Address Format** | **Min Address** | **Max Address** |
| ----------------------- | --------------- | ------------------ | --------------- | --------------- |
| STATE                   | bit             | DD                 | 0               | 63              |
| ONLATCH                 | bit             | DD                 | 0               | 63              |
| OFFLATCH                | bit             | DD                 | 0               | 63              |
| ACTIVECOUNTER           | bit             | DD                 | 0               | 63              |
| ONLATCH\_READCLEAR      | bit             | DD                 | 0               | 63              |
| OFFLATCH\_READCLEAR     | bit             | DD                 | 0               | 63              |
| HDD\_STATE              | bit             | DDdd               | 0               | 1531            |
| HDD\_ONLATCH            | bit             | DDdd               | 0               | 1531            |
| HDD\_OFFLATCH           | bit             | DDdd               | 0               | 1531            |
| HDD\_ONLATCH\_CLEAR     | bit             | DDdd               | 0               | 1531            |
| HDD\_OFFLATCH\_CLEAR    | bit             | DDdd               | 0               | 1531            |
| ALARM\_HI\_STATE        | bit             | DD                 | 0               | 63              |
| ALARM\_HI\_ENABLE       | bit             | DD                 | 0               | 63              |
| ALARM\_LO\_STATE        | bit             | DD                 | 0               | 63              |
| ALARM\_LO\_ENABLE       | bit             | DD                 | 0               | 63              |
| SP\_BIT                 | bit             | DD                 | 0               | 63              |
| EU                      | dword           | DD                 | 0               | 63              |
| COUNTS                  | dword           | DD                 | 0               | 63              |
| MIN                     | dword           | DD                 | 0               | 63              |
| MAX                     | dword           | DD                 | 0               | 63              |
| MIN\_READCLEAR          | dword           | DD                 | 0               | 63              |
| MAX\_READCLEAR          | dword           | DD                 | 0               | 63              |
| EU\_4096                | dword           | DDDD               | 0               | 4095            |
| COUNTS\_4096            | dword           | DDDD               | 0               | 4095            |
| MIN\_4096               | dword           | DDDD               | 0               | 4095            |
| MAX\_4096               | dword           | DDDD               | 0               | 4095            |
| MIN\_READCLEAR\_4096    | dword           | DDDD               | 0               | 4095            |
| MAX\_READCLEAR\_4096    | dword           | DDDD               | 0               | 4095            |
| COUNTERDATA             | dword           | DD                 | 0               | 63              |
| COUNTERDATA\_READCLEAR  | dword           | DD                 | 0               | 63              |
| HDD\_COUNTER            | dword           | DD                 | 0               | 15              |
| HDD\_COUNTER\_READCLEAR | dword           | DD                 | 0               | 15              |
| HDD\_BANK\_STATE        | dword           | DD                 | 0               | 15              |
| HDD\_BANK\_ONLATCH      | dword           | DD                 | 0               | 15              |
| HDD\_BANK\_OFFLATCH     | dword           | DD                 | 0               | 15              |
| MODULETYPE              | dword           | DD                 | 0               | 63              |
| POINTTYPE               | dword           | DD                 | 0               | 63              |
| FEATURE                 | dword           | DD                 | 0               | 63              |
| OFFSET                  | dword           | DD                 | 0               | 63              |
| GAIN                    | dword           | DD                 | 0               | 63              |
| HISCALE                 | dword           | DD                 | 0               | 63              |
| LOSCALE                 | dword           | DD                 | 0               | 63              |
| MODULETYPE\_4096        | dword           | DDDD               | 0               | 4096            |
| POINTTYPE\_4096         | dword           | DDDD               | 0               | 4096            |
| FEATURE\_4096           | dword           | DDDD               | 0               | 4096            |
| OFFSET\_4096            | dword           | DDDD               | 0               | 4096            |
| GAIN\_4096              | dword           | DDDD               | 0               | 4096            |
| MODUHISCALE\_4096       | dword           | DDDD               | 0               | 4096            |
| LOSCALE\_4096           | dword           | DDDD               | 0               | 4096            |
| ALARM\_HI\_SETPOINT     | dword           | DD                 | 0               | 63              |
| ALARM\_HI\_DEADBAND     | dword           | DD                 | 0               | 63              |
| ALARM\_LO\_SETPOINT     | dword           | DD                 | 0               | 63              |
| ALARM\_LO\_DEADBAND     | dword           | DD                 | 0               | 63              |
| SP\_INTEGER             | dword           | DDDDD              | 0               | 10239           |
| SP\_FLOAT               | dword           | DDDDD              | 0               | 10239           |
| SP\_STRING              | dword           | DDDD               | 0               | 6300            |
| PID\_CV\_IN             | dword           | DDD                | 0               | 127             |
| PID\_CV\_SP             | dword           | DDD                | 0               | 127             |
| PID\_CV\_OUT            | dword           | DDD                | 0               | 127             |
| PID\_CV\_FF             | dword           | DDD                | 0               | 127             |
| PID\_CV\_ERROR          | dword           | DDD                | 0               | 127             |
| PID\_CV\_P              | dword           | DDD                | 0               | 127             |
| PID\_CV\_I              | dword           | DDD                | 0               | 127             |
| PID\_CV\_D              | dword           | DDD                | 0               | 127             |
| PID\_CV\_INTEGRAL       | dword           | DDD                | 0               | 127             |
| PID\_LSV\_IN            | dword           | DDD                | 0               | 127             |
| PID\_LSV\_SP            | dword           | DDD                | 0               | 127             |
| PID\_STATUS             | dword           | DDD                | 0               | 127             |
| PID\_STATUS\_ON         | dword           | DDD                | 0               | 127             |
| PID\_STATUS\_OFF        | dword           | DDD                | 0               | 127             |
| PID\_TUNE\_P            | dword           | DDD                | 0               | 127             |
| PID\_TUNE\_I            | dword           | DDD                | 0               | 127             |
| PID\_TUNE\_D            | dword           | DDD                | 0               | 127             |
| PID\_TUNE\_FF           | dword           | DDD                | 0               | 127             |
| PID\_CFG\_MAX\_OUT      | dword           | DDD                | 0               | 127             |
| PID\_CFG\_MIN\_OUT      | dword           | DDD                | 0               | 127             |
| PID\_CFG\_SCAN\_TIME    | dword           | DDD                | 0               | 127             |
| PID\_CFG\_LOW\_RANGE    | dword           | DDD                | 0               | 127             |
| PID\_CFG\_HI\_RANGE     | dword           | DDD                | 0               | 127             |
| PID\_CFG\_ALG           | dword           | DDD                | 0               | 127             |
| PID\_CFG\_MAN\_MODE     | dword           | DDD                | 0               | 127             |
| PID\_CFG\_FLAGS         | dword           | DDD                | 0               | 127             |
| PID\_CFG\_FLAGS\_ON     | dword           | DDD                | 0               | 127             |
| PID-CFG\_FLAGS\_OFF     | dword           | DDD                | 0               | 127             |
| PID\_CFG\_MM\_IN        | dword           | DDD                | 0               | 127             |
| PID\_CFG\_MM\_SP        | dword           | DDD                | 0               | 127             |
| PID\_CFG\_MM\_OUT       | dword           | DDD                | 0               | 127             |
| PID\_SCALE\_IN\_LOW     | dword           | DDD                | 0               | 127             |
| PID\_SCALE\_IN\_HI      | dword           | DDD                | 0               | 127             |
| PID\_SCALE\_OUT\_LOW    | dword           | DDD                | 0               | 127             |
| PID\_SCALE\_OUT\_HI     | dword           | DDD                | 0               | 127             |
| PID\_SCAN\_COUNTER      | dword           | DDD                | 0               | 127             |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Koyo Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Koyo/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

Review the following information for setting up and configuring the Koyo Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                        |
| **Validated devices/series** | Koyo DirectLogic Series &#xA;[Automation Direct DirectLogic PLC Series](https://www.automationdirect.com/adc/overview/catalog/programmable_controllers/directlogic_plcs_\(micro_to_small,_brick_-a-_modular\)?gclid=CjwKCAjwq-WgBhBMEiwAzKSH6CBiyKAdShGTwXSUtgzDLhYfK7y-0u1z0p6V5wzVcfCztV1oL9k03BoCJugQAvD_BwE#bodycontentppc) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use DirectSoft6 V6.1 software to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | Koyo                                         |
| **Driver**          | Koyo Ethernet (Gen1)                         |
| **Network Address** | The device address you defined during Step 1 |
| **Network Port**    | 428784                                       |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**        |
| -------- | --------------- | ------------------ | --------------- | --------------- | ---------------------- |
| CCM\_31  | word            | HHHH               | 0               | 17056           | V                      |
| CCM\_32  | word            | HHH                | 0               | 512             | GX, X, SP              |
| CCM\_33  | word            | HHH                | 0               | 832             | GY,Y,C,S,T,CT          |
| V        | word            | OOOOO              | 0               | 17055           | V-memory               |
| GX       | bit             | OOOO               | 0               | 2047            | Global I/O             |
| X        | bit             | OOOO               | 0               | 1023            | Real Word Inputs       |
| SP       | bit             | OOOO               | 0               | 1023            | Special Purpose Relays |
| GY       | bit             | OOOO               | 0               | 2047            | More Global I/O        |
| Y        | bit             | OOOO               | 0               | 1023            | Real Word Outputs      |
| C        | bit             | OOOO               | 0               | 1023            | Control Relays         |
| S        | bit             | OOOO               | 0               | 1023            | Stage Status Bits      |
| T        | bit             | OOO                | 0               | 255             | Timer Status Bits      |
| CT       | bit             | OOO                | 0               | 255             | Counter Status Bits    |

:::hint{type="info"}
**Note**: The Count parameter is available for Litmus Edge version 3.11.5.&#x20;
:::

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] DeviceHub Agent
[path] QuickStart Guide/Industrial Systems Connection Guide/OPC UA/

Review the following information for setting up and configuring the DeviceHub Agent driver.&#x20;

# Set Up the DeviceHub Agent

See [Set Up the DeviceHub Agent](docId\:D5z1SFjCvhqoFIdqmGu0C) to review how to set up and configure the DeviceHub Agent driver.&#x20;

# DeviceHub Agent Driver Settings in Litmus Edge

If you review or edit the settings of the OSI Agent device, refer to the following parameters.&#x20;

| Parameter                | Value                                         |
| ------------------------ | --------------------------------------------- |
| **Type**                 | OPC UA                                        |
| **Driver**               | DeviceHub Agent                               |
| **Network Address**      | If unsure, leave the default value of 0.0.0.0 |
| **Network Port**         | 41250                                         |
| **Data Validity Period** | 60                                            |

If you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) in Litmus Edge, refer to the following supported data types and tag parameters. There isn't a list of available register names.

## Supported Data Types

- `Word`&#x20;
- `StrArg`&#x20;
- `Null`
- `Single`
- `Byte`
- `RefToNull`
- `Mask`
- `ArrayOfDouble`
- `ArrayOfString`
- `RefToEmpty`
- `RefToSmallInt`
- `RefToMask`
- `SmallInt`
- `ShortInt`
- `RefToDate`
- `RefToDispatch`
- `Date`
- `Dispatch`
- `ArrayOfNull`
- `ArrayOfBoolean`
- `RefToVariant`
- `RefToString`
- `LongWord`
- `ArrayOfInteger`
- `ArrayOfDispatch`
- `Error`
- `ArrayOfUnknown`
- `ArrayOfLongWord`
- `ArrayOfAny`
- `String`
- `Any`
- `ArrayOfOleString`
- `RefToSingle`
- `RefToUnknown`
- `Double`
- `OleString`
- `RefToOleString`
- `Unknown`
- `ArrayOfInt64`
- `ArrayOfMask`
- `RefToInteger`
- `Currency`
- `Variant`
- `ArrayOfSmallInt`
- `ArrayOfVariant`
- `ArrayOfShortInt`
- `ArrayOfWord`
- `Empty`
- `ArrayOfEmpty`
- `ArrayOfStrArg`
- `RefToByte`
- `Integer`
- `Boolean`
- `ArrayOfDate`
- `RefToError`
- `RefToBoolean`
- `ArrayOfSingle`
- `ArrayOfCurrency`
- `ArrayOfError`
- `RefToDouble`
- `RefToCurrency`
- `UnknownType`
- `Int64`
- `ArrayOfByte`

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi R04-Ethernet-Binary (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi R04-Ethernet-Binary (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                        |
| ---------------------------- | --------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                |
| **Validated devices/series** | [MELSEC iQ-R](https://www.mitsubishielectric.com/fa/products/cnt/plcr/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC. See the steps below to view and edit the open ports on the PLC.
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: Mitsubishi R04CPU
   **Communication I/F**: Ethernet
2. Connect the device to your PC using a USB.
3. Launch GXWorks 3 v1.035M software.
4. From the navigation panel, navigate to **System Parameters&#x20;**>**&#x20;Read Mounting status**, and then check for the CPU to display.
5. From the navigation panel, click **Module Configuration&#xA0;**&#x74;o see if the base rack and CPU display.
6. Click **Module Parameters&#xA0;**&#x61;nd enter the desired IP Address, Subnet Mask, and Default Gateway.
7. If you want to write back to PLC tags with Litmus Edge, make sure the **Enable/Disable Online Change** setting is set to **Enable All (SLMP)**.
8. Click **External Device Configuration (Detailed Setting)&#xA0;**&#x74;o set up the connection (Ethernet Built-in port).
9. Draw SLMP Connection Module from the *Module list* to the left.
10. Set up of the port number depends on how many devices need to connect with the PLC.
11. Click **Close with Reflecting the Setting**, click **Apply**, and then click **Write to PLC**.&#x20;
12. Power the PLC off and on again to activate the setting.&#x20;
13. From the navigation panel, navigate to **Connection Destination&#x20;**>**&#x20;connection**, click **Find CPU (Built-in Ethernet port) on Network**, and then select the target device.
14. Click **Connection Test**.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Mitsubishi                               |
| **Driver**          | Mitsubishi R04-Ethernet-Binary (Gen1)    |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 5007                                     |
| **Station ID**      | 255                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**         |
| -------- | --------------- | ------------------ | --------------- | --------------- | ----------------------- |
| X        | bit             | HHHh               | 0               | 12287           | Input                   |
| Y        | bit             | HHHh               | 0               | 12287           | Output                  |
| M        | bit             | DDDDDDDD           | 0               | 16777215        | Internal Relay          |
| L        | bit             | DDDDD              | 0               | 32767           | Latch Relay             |
| B        | bit             | HHHHHHh            | 0               | 268435455       | Link Relay              |
| F        | bit             | DDDDD              | 0               | 32767           | Annunciator             |
| SB       | bit             | HHHHHHh            | 0               | 268435455       | Link Special Relay      |
| V        | bit             | DDDDD              | 0               | 32767           | Edge Relay              |
| TS       | bit             | DDDDDDD            | 0               | 8993439         | Timer Contact           |
| TC       | bit             | DDDDDDD            | 0               | 8493439         | Timer Coil              |
| SS       | bit             | DDDDDDD            | 0               | 8993439         | Retentive Timer         |
| SC       | bit             | DDDDDDD            | 0               | 8993439         | Retentive Timer Coil    |
| CS       | bit             | DDDDDDD            | 0               | 8993439         | Counter Contact         |
| CC       | bit             | DDDDDDD            | 0               | 8993439         | Counter Coil            |
| SM       | bit             | DDDD               | 0               | 4095            | Special Relay           |
| TN       | word            | DDDDDDD            | 0               | 8993439         | Timer Current Value     |
| SN       | word            | DDDDDDD            | 0               | 8993439         | Retentive Timer Current |
| CN       | word            | DDDDDDD            | 0               | 8993439         | Counter Current Value   |
| D        | word            | DDDDDDDD           | 0               | 10117631        | Data Register           |
| W        | word            | HHHHHH             | 0               | 10117631        | Link Register           |
| SW       | word            | HHHHHH             | 0               | 10117631        | Special Link Register   |
| SD       | word            | DDDD               | 0               | 4095            | Special Register        |
| Z        | word            | DD                 | 0               | 23              | Index Register          |
| R        | word            | DDDDD              | 0               | 32767           | File Register           |
| ZR       | word            | HHHH               | 0               | 65535           | File Register           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi Melsec-Q-ASCII (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi Melsec-Q-ASCII (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                     |
| ------------------------------ | ------------------------------------------------------------------------------------ |
| **Driver type**                | Ethernet                                                                             |
| **Validated devices/series**   | [MELSEC-Q](https://www.mitsubishielectric.com/fa/products/cnt/plcq/items/index.html) |
| **Replaced with Gen 2 driver** | [Mitsubishi Q/L Ethernet](docId\:h1mVsD1jQaa1ON79jn_UQ)                              |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC. See the steps below to view and edit the open ports on the PLC.
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed. ****
   **Device**: Mitsubishi Q03UDECPU****
   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/T8ySMmMs87TdmJOwynRg4_mitsubishi-melsec-q-binary.png" size="80" width="592" height="317" caption="Image reference of device" position="center" showCaption="true"}
2. Connect the device to your PC through USB.
3. Launch GX Work2 1.560J, and then select **PLC Series**.
4. Set up connection and then click **Connection Test**. Connect with the device using *Read*.
5. From the Navigation panel, click **Parameter > PLC Parameter > Build-in Ethernet Port Setting&#xA0;**&#x74;o set up the Ethernet parameters.
6. From the Navigation panel, click **Connection Destination > connection1**.
7. Double-click **PLC Module&#xA0;**&#x61;nd click **Find CPU (Build-in Ethernet port),** select the target device, and then click **Connection Test**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Mitsubishi                               |
| **Driver**          | Mitsubishi Melsec-Q-ASCII (Gen1)         |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 5002                                     |
| **Station ID**      | 255                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description**               |
| -------- | -------------- | ------------------ | --------------- | --------------- | ----------------------------- |
| X        | bit            | HHHH               | 0               | 65536           | Input Relay                   |
| Y        | bit            | HHHH               | 0               | 65536           | Output Relay                  |
| M        | bit            | DDDDD              | 0               | 65535           | Internal Relay                |
| SM       | bit            | DDDD               | 0               | 2047            | Special Relay                 |
| L        | bit            | DDDDD              | 0               | 32237           | Latch Relay                   |
| F        | bit            | DDDDD              | 0               | 32237           | Annunciator                   |
| V        | bit            | DDDDD              | 0               | 32237           | Edge Relay                    |
| B        | bit            | HHHH               | 0               | 32237           | Link Relay                    |
| TS       | bit            | DDDDD              | 0               | 25471           | Timer Contact                 |
| TC       | bit            | DDDDD              | 0               | 25471           | Timer Coil                    |
| SS       | bit            | DDDDD              | 0               | 25471           | Retentive Timer Contact       |
| SC       | bit            | DDDDD              | 0               | 25471           | Retentive Timer Coil          |
| CS       | bit            | DDDDD              | 0               | 25471           | Counter Contact               |
| CC       | bit            | DDDDD              | 0               | 25471           | Counter Coil                  |
| SB       | bit            | HHHH               | 0               | 32237           | Special Link Relay            |
| S        | bit            | DDDD               | 0               | 8191            | Step Relay                    |
| DX       | bit            | HHHH               | 0               | 8191            | Direct Input                  |
| DY       | bit            | HHHH               | 0               | 8191            | Direct Output                 |
| D        | word           | DDDD               | 0               | 9999            | Data Register                 |
| W        | word           | HHHH               | 0               | 8191            | Link Register                 |
| TN       | word           | DDDDD              | 0               | 25471           | Timer Current value           |
| SN       | word           | DDDD               | 0               | 25471           | Retentive Timer Current value |
| CN       | word           | DDDDD              | 0               | 25471           | Counter Current value         |
| SD       | word           | DDDD               | 0               | 2047            | Special register              |
| R        | word           | DDDD               | 0               | 9999            | File Register                 |
| ZR       | word           | HHHHHH             | 0               | 999999          | File Register                 |
| Z        | word           | DD                 | 0               | 20              | Index Register                |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Modbus RTU
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 2 Drivers/

:::hint{type="info"}
**Note**: If multiple stations are connected to the RS-485 bus, then use the [Modbus RTU Advanced](docId\:VO594N1omAyQaztcnFXR-) driver instead of this one.&#x20;
:::

Review the following information for setting up and configuring the Modbus RTU driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                      |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial (RS-485)                                                                                                                                                                                       |
| **When to use&#x20;**        | Serial connection to a device using Modbus RTU                                                                                                                                                        |
| **Replaces Gen 1 driver(s)** | [Modbus RTU (Gen1)](docId\:uFdsdCj0htV8fkv2YbeTm) &#xA;[Modbus RTU-Offset (Gen1)](docId\:LRuQ4f-sopIyuHzDmgUw3)<br />Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                 | Value                                      |
| ------------------------- | ------------------------------------------ |
| **Type**                  | Modbus                                     |
| **Driver**                | Modbus ASCII                               |
| **Device File**           | The file of the serial port you are using  |
| **Baud Rate**             | 19200                                      |
| **Data Bits**             | 8                                          |
| **Parity**                | Select even, none, or odd                  |
| **Station ID**            | 0                                          |
| **Stop Bits**             | 1                                          |
| **Zero-Based Addressing** | Select Enable or Disable                   |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

:::hint{type="info"}
**Note**: The address format in this Gen 2 driver is different from the Gen 1 driver ([Modbus RTU (Gen1)](docId\:uFdsdCj0htV8fkv2YbeTm)) for the same device. Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd).&#x20;
:::

| **Name** | **Value Types**                              | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| -------- | -------------------------------------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D        | bit                                          | DDDDD              | 0               | 65535           | Discrete Input Contacts         |
| C        | bit                                          | DDDDD              | 0               | 65535           | Discrete Output Coils           |
| H        | word, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Output Holding Registers |
| I        | word, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Input Registers          |
| H\_bit   | bit                                          | DDDDDdd            | 0               | 6553515         | Analog Output Holding Registers |
| I\_bit   | bit                                          | DDDDDdd            | 0               | 6553515         | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Endianness&#x20;**(not available for all names): This option configures how the tag data will be formatted and whether bytes and/or words will be counted from the start (big-endian style) or end (little-endian style) of strings of data. Select one of the following options.&#x20;
  - **No Swap**: Data will be formatted in big-endian style (bytes and words counted from the start). For example: AB CD.&#x20;
  - **Swap Bytes**: Only bytes will be formatted in little-endian style (counted from the end). For example: BA DC.&#x20;
  - **Swap Words**: Only words will be formatted in little-endian style (counted from the end). For example: CD AB.&#x20;
  - **Swap Words & Bytes**: Both words and bytes will be formatted in little-endian style (counted from the end). For example: DC BA.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Untitled
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/


[title] Omron-NJ-Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Omron/

Review the following information for setting up and configuring the Omron-NJ-Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Validated devices/series** | [NJ](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/controller-nj-series/index.html)&#xA;[NX1P](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/controller-nx1p/index.html)<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed.&#x20;
   **Device**: Omron NJ Ethernet
   **Communication I/F**: Ethernet. Refer to the following figure.
2. Connect the device with a USB cable.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9oG-E_KPeouzfIa_vQkQk_omron-nj-ethernet.png" size="80" width="1248" height="379" caption="Reference image of device" position="center" showCaption="true"}
3. Launch Sysmac Studio v1.20.1.0 software, select **Controller > Communication Setup**, and then set up the IP address.
4. Use a direct connection through **USB > USB Communication Test**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | Omron                                        |
| **Driver**          | Omron NJ Ethernet NJ301-1100                 |
| **Network Address** | The device address you defined during Step 1 |
| **Port**            | 44818                                        |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following tag parameters and available value types.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the case-sensitive register name exactly as it is defined in the PLC.

A **Connected&#x20;**&#x73;tatus for the device won't display until a tag with a correct register name is created and a value is generated (not null/blank).

## Available Value Types

## T Arrays

If you want to read a DINT array, you need to write the element number of the array that you want to read in square brackets along with the tag name.&#x20;

:::hint{type="info"}
**Example**: If the array name is ArrayDint and you want to read the third element of the array, the format for the tag name in Litmus Edge is `ArrayDint[2]`.&#x20;
:::

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi FX5U Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi FX5U Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                        |
| ---------------------------- | --------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                  |
| **Validated devices/series** | [MELSEC iQ-F](https://www.mitsubishielectric.com/fa/products/cnt/plcf/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed. ****
   **Device**: Mitsubishi FX5U-32M****
   **Communication I/F**: RS485. Refer to the following figures.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/U58spZmOnhdKtSHmuUYF__mitsubishi-fx5u-gx-reference.png" size="80" width="874" height="848" caption="Reference image of device" position="center" showCaption="true"}
2. Launch the GX Work3-V1.035M software, and then click **Online > Read from PLC**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IAfpmxbpAyighIJKb6qqs_mitsubishi-fx5u-gx-online-read482x338.png" size="80" width="482" height="338" caption="Read from PLC option" position="center" showCaption="true"}
3. Select series.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/i370u2PB5LmGW37CBt_ZN_mitsubishi-fx5u-serial-series.png" size="80" width="745" height="401" caption="Series selection drop-down list" position="center" showCaption="true"}
4. Select connection destination.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2TkGj96zd91C12dOJU4_2_mitsubishi-fx5u-serial-connection.png" size="80" width="825" height="467" caption="Select Connection Destination dialog box" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Mitsubishi                        |
| **Driver**             | Mitsubishi FX5U Serial (Gen1)     |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 19200                             |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**               |
| -------- | --------------- | ------------------ | --------------- | --------------- | ----------------------------- |
| LCS      | bit             | DDDD               | 0               | 1023            | Long counter Contact          |
| LCC      | bit             | DDDD               | 0               | 1023            | Long counter Col              |
| SM       | bit             | DDDD               | 0               | 9999            | Special Relay                 |
| X        | bit             | OOOO               | 0               | 1023            | Input Relay                   |
| Y        | bit             | OOOO               | 0               | 1023            | Output Relay                  |
| M        | bit             | DDDDD              | 0               | 32767           | Internal Relay                |
| L        | bit             | DDDDD              | 0               | 32767           | Latch Relay                   |
| F        | bit             | DDDDD              | 0               | 32767           | Annunciator                   |
| B        | bit             | DDDDD              | 0               | 32767           | Link Relay                    |
| TS       | bit             | DDDD               | 0               | 1023            | Timer Contact                 |
| TC       | bit             | DDDD               | 0               | 1023            | Timer Coil                    |
| SS       | bit             | DDDD               | 0               | 1023            | Retentive Timer Contact       |
| SC       | bit             | DDDD               | 0               | 1023            | Retentive Timer Coil          |
| CS       | bit             | DDDD               | 0               | 1023            | Counter Contact               |
| CC       | bit             | DDDD               | 0               | 1023            | Counter Coil                  |
| SB       | bit             | HHHH               | 0               | 32767           | Special Link Relay            |
| S        | bit             | DDDD               | 0               | 4095            | Step relay                    |
| D\_Bit   | bit             | DDDDdd             | 0               | 799915          | Data Register bit             |
| SD\_Bit  | bit             | DDDDDdd            | 0               | 1199915         | Special Register bit          |
| R\_Bit   | bit             | DDDDDdd            | 0               | 3276715         | File Register bit             |
| SW\_Bit  | bit             | HHHHh              | 0               | 3276715         | Special Link Register Bit     |
| W\_Bit   | bit             | HHHHh              | 0               | 3276715         | Lin Register Bit              |
| LCN      | word            | DDDD               | 0               | 1023            | Long counter Current Value    |
| LZ       | word            | D                  | 0               | 1               | Long Index Register           |
| SD       | word            | DDDDD              | 0               | 11999           | Special register              |
| D        | word            | DDDD               | 0               | 7999            | Dat Register                  |
| R        | word            | DDDDD              | 0               | 32767           | File Register                 |
| W        | word            | HHHH               | 0               | 32767           | Link Register                 |
| TN       | word            | DDDD               | 0               | 1023            | Timer Current value           |
| SN       | word            | DDDD               | 0               | 1023            | Retentive Timer Current value |
| CN       | word            | DDDD               | 0               | 1023            | Counter Current value         |
| SW       | word            | HHHH               | 0               | 32767           | Special Link Register         |
| Z        | word            | DD                 | 0               | 19              | Index Register                |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi QJ71E71 (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

:::hint{type="warning"}
**Important**: This driver was deprecated in Litmus Edge version 3.3.2. We recommend using [Mitsubishi QJ71E71](docId\:fMNTPyWvoIqVeQOidccC2).
:::

Review the following information for setting up and configuring the Mitsubishi QJ71E71 (Gen1) PLC.&#x20;

# Litmus Edge Compatible Series&#x20;

| **Driver type**                | **Ethernet**                                       |
| ------------------------------ | -------------------------------------------------- |
| **Validated devices/series**   | Mitsubishi QJ71E71                                 |
| **Replaced with Gen 2 driver** | [Mitsubishi QJ71E71](docId\:fMNTPyWvoIqVeQOidccC2) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC. See the steps below to view and edit the open ports on the PLC.
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed. ****
   **Device**: Mitsubishi Q02CPU+Q71E71-100****
   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eRudfJaBjVu9Tagi4HBbC_mitsubishi-qj71e71-binary-reference.png" size="80" width="580" height="490" caption="Reference image of device" position="center" showCaption="true"}
2. Launch GX Works2 v1.560J software, click **Create a project**, and then click **Connection1&#xA0;**&#x69;n the navigation panel.
3. Set up communication parameters, and then click **Connect**.
4. Set up the network parameters. The *Station Number* cannot be duplicated.
5. Click **Operation Setting&#xA0;**&#x74;o set up IP for modules.
6. Click **Online > Write to PLC**, and then reboot the device to activate the settings.
7. Click **Connection1&#xA0;**&#x69;n the navigation panel.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Use the following parameters/values when you [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) with this driver:

| Parameter                | Value                                    |
| ------------------------ | ---------------------------------------- |
| **Type**                 | Mitsubishi                               |
| **Driver**               | Mitsubishi QJ71E71-(Gen1)                |
| **Network Address**      | The device address you defined in Step 1 |
| **Port**                 | 5002                                     |
| **Station ID**           | 0                                        |
| **Show Device Security** | Enabled                                  |
| **Enable Alias Topics**  | Enabled                                  |
| **Enable Data Store**    | Enabled                                  |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, use the following tag/register mapping table.

| Name | Value Type | Address Format | Min Address | Max Address | Description                   |
| ---- | ---------- | -------------- | ----------- | ----------- | ----------------------------- |
| X    | bit        | DDDD           | 0           | 9999        | Input Relay                   |
| Y    | bit        | DDDD           | 0           | 9999        | Output Relay                  |
| M    | bit        | DDDDD          | 0           | 65535       | Internal Relay                |
| SM   | bit        | DDDD           | 0           | 2047        |                               |
| L    | bit        | DDDDD          | 0           | 32237       | Latch Relay                   |
| F    | bit        | DDDDD          | 0           | 32237       | Annunciator                   |
| V    | bit        | DDDDD          | 0           | 32237       | Edge Relay                    |
| B    | bit        | DDDDD          | 0           | 32237       | Link Relay                    |
| TS   | bit        | DDDDD          | 0           | 25471       | Timer Contact                 |
| TC   | bit        | DDDDD          | 0           | 25471       | Timer Coil                    |
| SS   | bit        | DDDDD          | 0           | 25471       | Retentive Timer Contact       |
| SC   | bit        | DDDDD          | 0           | 25471       | Retentive Timer Coil          |
| CS   | bit        | DDDDD          | 0           | 25471       | Counter Contact               |
| CC   | bit        | DDDDD          | 0           | 25471       | Counter Coil                  |
| SB   | bit        | DDDDD          | 0           | 32237       | Special Link Relay            |
| S    | bit        | DDDD           | 0           | 8191        | Step Relay                    |
| DX   | bit        | DDDD           | 0           | 8191        | Direct Input                  |
| DY   | bit        | DDDD           | 0           | 8191        | Direct Output                 |
| CN   | word       | DDDD           | 0           | 1023        | Counter current               |
| D    | word       | DDDD           | 0           | 9999        | Data Register                 |
| W    | word       | DDDD           | 0           | 8191        | Link Register                 |
| TN   | word       | DDDDD          | 0           | 25471       | Timer Current Value           |
| SN   | word       | DDDD           | 0           | 25471       | Retentive Timer Current Value |
| SD   | word       | DDDD           | 0           | 2047        |                               |
| R    | word       | DDDD           | 0           | 9999        | File Register                 |
| ZR   | word       | DDDDDD         | 0           | 999999      | File Register                 |
| Z    | word       | DD             | 0           | 20          | Index Register                |


[title] Panasonic FP7 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Panasonic/

Review the following information for setting up and configuring the Panasonic FP7 Ethernet (Gen1)&#x20;driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                    |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                            |
| **Validated devices/series** | [FP7](https://na.industrial.panasonic.com/products/industrial-automation/plc-hmi-communication/lineup/programmable-logic-controllers-interface-terminal/series/227) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed.&#x20;

   **Device**: Panasonic FP7 CPS31ES

   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pjbJN6l25JZOYCwAflUpZ_panasonic-fp7-ethernet.png" size="50" width="284" height="478" caption="Reference image of de" position="center" showCaption="true"}
2. Connect the device to a PC with a USB cable.
3. Launch FPWIN GR7S v2.24, and click **Online > Communication**..
4. Set up communication parameters.
5. Click the **Online&#x20;**&#x69;con and then go online.
6. Click **Options > FP7 Configuration > Build-in ET-LAN**.
7. Set up the Ethernet communication parameters and then click **OK**.
8. Download the setting into the PLC.
9. Set up the communication settings.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                | Value                                        |
| ------------------------ | -------------------------------------------- |
| **Type**                 | Panasonic                                    |
| **Driver**               | Panasonic FP7 Ethernet (Gen1)                |
| **Network Address**      | The device address you defined during Step 1 |
| **********Port********** | 32769                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**  | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**          |
| --------- | --------------- | ------------------ | --------------- | --------------- | ------------------------ |
| X         | bit             | DDDdd              | 0               | 51115           | External input           |
| Y         | bit             | DDDdd              | 0               | 5115            | External output          |
| R         | bit             | DDDDdd             | 0               | 204715          | Internal relay           |
| L         | bit             | DDDDdd             | 0               | 102315          | Link relay               |
| T         | bit             | DDDD               | 0               | 4095            | Timer                    |
| C         | bit             | DDDD               | 0               | 1023            | Counter                  |
| P         | bit             | DDDdd              | 0               | 25515           | Pulse relay              |
| E         | bit             | DDDD               | 0               | 4095            | Error notification relay |
| SR        | bit             | DDDdd              | 0               | 22315           | System relay             |
| IN        | bit             | SSDDdd             | 0               | 6215            | Direct input             |
| OT        | bit             | SSDDdd             | 0               | 6215            | Direct output            |
| LD\_Bit   | bit             | DDDDDdd            | 0               | 1638315         | LD bit specification     |
| DT\_Bit   | bit             | DDDDDDdd           | 0               | 99942315        | DT bit specification     |
| UM\_Bit   | bit             | HHHHHdd            | 0               | 52428715        | UM bit specification     |
| \_X       | bit             | DDDdd              | 0               | 5115            | External input           |
| \_Y       | bit             | DDDdd              | 0               | 5115            | External output          |
| \_R       | bit             | DDDDdd             | 0               | 204715          | Internal relay           |
| \_L       | bit             | DDDDdd             | 0               | 102315          | Link relay               |
| \_T       | bit             | DDDD               | 0               | 4095            | Timer                    |
| \_C       | bit             | DDDD               | 0               | 1023            | Counter                  |
| \_P       | bit             | DDDdd              | 0               | 25515           | Pulse relay              |
| \_LD\_Bit | bit             | DDDDDdd            | 0               | 1638315         | LD bit specification     |
| \_DT\_Bit | bit             | DDDDDDdd           | 0               | 99942315        | DT bit specification     |
| WX        | word            | DDD                | 0               | 511             | External input word      |
| WY        | word            | DDD                | 0               | 511             | External output word     |
| WR        | word            | DDDDD              | 0               | 20480           | Internal relay word      |
| WL        | word            | DDDD               | 0               | 1023            | Link relay word          |
| WS        | word            | DDD                | 0               | 223             | System relay word        |
| LD        | word            | DDDDD              | 0               | 16383           | Link register            |
| DT        | word            | DDDDDD             | 0               | 999423          | Data register            |
| SD        | word            | DDD                | 0               | 255             | System register          |
| WI        | word            | SSDD               | 0               | 62              | Input register           |
| WO        | word            | SSDD               | 0               | 62              | Output register          |
| UM        | word            | HHHHH              | 0               | 524287          | Unit memory              |
| TS        | word            | DDDD               | 0               | 4095            | Timer setting vlaue      |
| TE        | word            | DDDD               | 0               | 4095            | Timer elapsed value      |
| CS        | word            | DDDD               | 0               | 1023            | Counter setting value    |
| CE        | word            | DDDD               | 0               | 1023            | Counter elapsed value    |
| I         | word            | H                  | 0               | 14              | Index register           |
| \_WX      | word            | DDD                | 0               | 511             | External input word      |
| \_WY      | word            | DDD                | 0               | 511             | Exernal output word      |
| \_WR      | word            | DDDDD              | 0               | 20480           | Internal relay word      |
| \_WL      | word            | DDDD               | 0               | 1023            | Link relay word          |
| \_LD      | word            | DDDDD              | 0               | 16383           | Link register            |
| \_DT      | word            | DDDDDD             | 0               | 999423          | Data register            |
| \_TS      | word            | DDDD               | 0               | 4095            | Timer setting value      |
| \_TE      | word            | DDDD               | 0               | 4095            | Timer elapsed value      |
| CS        | word            | DDDD               | 0               | 1023            | Counter setting value    |
| \_CE      | word            | DDDD               | 0               | 1023            | Counter elapsed value    |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Modbus RTU over TCP
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 2 Drivers/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Review the following information for setting up and configuring the Modbus RTU over TCP driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter | Compatible items                                                               |
| ----------------------- | ------------------------------------------------------------------------------ |
| **Driver type**         | Ethernet                                                                       |
| **When to use&#x20;**   | TCP connection to a Modbus server which has one or more Modbus RTU connections |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                 | Value                                    |
| ------------------------- | ---------------------------------------- |
| **Type**                  | Modbus                                   |
| **Driver**                | Modbus RTU over TCP                      |
| **Network Address**       | The device address you defined in Step 1 |
| **Network Port**          | 502                                      |
| **Station ID**            | 0                                        |
| **Zero-Based Addressing** | Select Enable or Disable                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types**                              | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| -------- | -------------------------------------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D        | bit                                          | DDDDD              | 0               | 65535           | Discrete Input Contacts         |
| C        | bit                                          | DDDDD              | 0               | 65535           | Discrete Output Coils           |
| H        | word, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Output Holding Registers |
| I        | word, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Input Registers          |
| H\_bit   | bit                                          | DDDDDdd            | 0               | 6553515         | Analog Output Holding Registers |
| I\_bit   | bit                                          | DDDDDdd            | 0               | 6553515         | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Endianness&#x20;**(not available for all names): This option configures how the tag data will be formatted and whether bytes and/or words will be counted from the start (big-endian style) or end (little-endian style) of strings of data. Select one of the following options.&#x20;
  - **No Swap**: Data will be formatted in big-endian style (bytes and words counted from the start). For example: AB CD.&#x20;
  - **Swap Bytes**: Only bytes will be formatted in little-endian style (counted from the end). For example: BA DC.&#x20;
  - **Swap Words**: Only words will be formatted in little-endian style (counted from the end). For example: CD AB.&#x20;
  - **Swap Words & Bytes**: Both words and bytes will be formatted in little-endian style (counted from the end). For example: DC BA.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] IEC60870-5-102 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/IEC/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

Review the following information for setting up and configuring the IEC60870-5-102 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter | Compatible items |
| ----------------------- | ---------------- |
| **Driver type**         | Ethernet         |
| **Device standard**     | IEC 60870-5-102  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                                    |
| ---------------------- | ---------------------------------------- |
| **Type**               | IEC                                      |
| **Driver**             | IEC60870-5-102 Ethernet (Gen1)           |
| **Network Address**    | The device address you defined in Step 1 |
| **Network Port&#x20;** | 2404                                     |
| **Asdu Addr Size**     | 2                                        |
| **Link Address**       | 3                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**     | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                                                                                                             |
| ------------ | --------------- | ------------------ | --------------- | --------------- | --------------------------------------------------------------------------------------------------------------------------- |
| M\_SP\_TA\_2 | bit             | DDDddd             | 0               | 255999          | Single point information                                                                                                    |
| M\_IT\_TA\_2 | word            | DDDddd             | 0               | 255999          | Accounting integrated totals, four octets each                                                                              |
| M\_IT\_TB\_2 | word            | DDDddd             | 0               | 255999          | Accounting integrated totals, three octets each                                                                             |
| M\_IT\_TC\_2 | word            | DDDddd             | 0               | 255999          | Accounting integrated totals, two octets each                                                                               |
| M\_IT\_TD\_2 | word            | DDDddd             | 0               | 255999          | Periodically Reset Accounting integrated totals, four octets each                                                           |
| M\_IT\_TE\_2 | word            | DDDddd             | 0               | 255999          | Periodically Reset Accounting integrated totals, three octets each                                                          |
| M\_IT\_TF\_2 | word            | DDDddd             | 0               | 255999          | Periodically Reset Accounting integrated totals, two octets each                                                            |
| M\_IT\_TG\_2 | word            | DDDddd             | 0               | 255999          | Operational integrated totals, four octets each                                                                             |
| M\_IT\_TH\_2 | word            | DDDddd             | 0               | 255999          | Operational integrated totals, three octets each                                                                            |
| M\_IT\_TI\_2 | word            | DDDddd             | 0               | 255999          | Operational integrated totals, two octets each                                                                              |
| M\_IT\_TK\_2 | word            | DDDddd             | 0               | 255999          | Periodically Reset Operational integrated totals, four octets each                                                          |
| M\_IT\_TL\_2 | word            | DDDddd             | 0               | 255999          | Periodically Reset Operational integrated totals, three octets each                                                         |
| M\_IT\_TM\_2 | word            | DDDddd             | 0               | 255999          | Periodically Reset Operational integrated totals, two octets each                                                           |
| C\_RD\_NA\_2 | custom          | D                  | 1               | 1               | Read manufacture and product specification                                                                                  |
| C\_TI\_NA\_2 | custom          | D                  | 1               | 1               | Read current system time of integrated total DTE                                                                            |
| C\_SP\_NA\_2 | custom          | DDD                | 0               | 255             | Read record of single-point information with time tag                                                                       |
| C\_SP\_NB\_2 | custom          | DDD                | 0               | 255             | Read record of single-point information with time tag of a selected time range                                              |
| C\_CI\_NA\_2 | custom          | DDD                | 0               | 255             | Read accounting integrated totals of the oldest integration period                                                          |
| C\_CI\_NE\_2 | custom          | DDD                | 0               | 255             | Read periodically reset accounting integrated totals of the oldest integration period                                       |
| C\_CI\_NI\_2 | custom          | DDD                | 0               | 255             | Read operational integrated totals of the oldest integration period                                                         |
| C\_CI\_NN\_2 | custom          | DDD                | 0               | 255             | Read periodically reset operational integrated totals of the oldest integration period                                      |
| C\_CI\_NB\_2 | custom          | DDDSSSEEE          | 0               | 255255255       | Read accounting integrated totals of the oldest integration period and of a selected range of addresses                     |
| C\_CI\_NF\_2 | custom          | DDDSSSEEE          | 0               | 255255255       | Read periodically reset accounting integrated totals of the oldest integration period and of a selected range of addresses  |
| C\_CI\_NK\_2 | custom          | DDDSSSEEE          | 0               | 255255255       | Read operational integrated totals of the oldest integration period and of a selected range of addresses                    |
| C\_CI\_NO\_2 | custom          | DDDSSSEEE          | 0               | 255255255       | Read periodically reset operational integrated totals of the oldest integration period and of a selected range of addresses |
| C\_CI\_NR\_2 | custom          | DDDSSSEEE          | 0               | 255255255       | Read accounting integrated totals of a selected time range and of a selected range of addresses                             |
| C\_CI\_NS\_2 | custom          | DDDSSSEEE          | 0               | 255255255       | Read periodically reset accounting integrated totals of a selected time range and of a selected range of addresses          |
| C\_CI\_NT\_2 | custom          | DDDSSSEEE          | 0               | 255255255       | Read operational integrated totals of a selected time range and of a selected range of addresses                            |
| C\_CI\_NU\_2 | custom          | DDDSSSEEE          | 0               | 255255255       | Read periodically reset operational integrated totals of a selected time range and of a selected range of addresses         |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Start Date**: Enter a start date.&#x20;
- **End Date**: Enter an end date.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Koyo
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                                                                                                                                                                                                                                                                                                            | **Compatible Ethernet DeviceHub Driver**             | **Compatible Serial DeviceHub Driver**                     |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------------- |
| - [Automation Direct Click PLC Series](https://www.automationdirect.com/clickplcs)
- [Koyo Click PLC Series](https://www.automationdirect.com/adc/overview/catalog/programmable_controllers/click_plus_plcs_\(stackable_micro_modular\)?gclid=CjwKCAjwq-WgBhBMEiwAzKSH6NSnIBrVmEivDgn7PoLTc-owzEKANnQnVV_hAMgxeUd-MDsgDlWYIBoCsV0QAvD_BwE#bodycontentppc) |                                                      | [Koyo Click Serial (Gen1)](docId\:CXqjxrE44JiQqU0-ll7eO)   |
| * [Automation Direct DirectLogic PLC Series](https://www.automationdirect.com/adc/overview/catalog/programmable_controllers/directlogic_plcs_\(micro_to_small,_brick_-a-_modular\))
* Koyo DirectLogic Series                                                                                                                                             | [Koyo Ethernet (Gen1)](docId\:Qb3GgED7Ne6-f88qGDJEf) | [Koyo Direct Serial (Gen1)](docId\:i_Ro1pPy2HTCoWGk1B4oj)  |


[title] CIP Explicit (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/ODVA/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

Review the following information for setting up and configuring the CIP Explicit (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                 |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                         |
| **Validated devices/series** | Devices that support the [ODVA EtherNet/IP™ network](https://www.odva.org/technology-standards/key-technologies/ethernet-ip/)<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                                    |
| ---------------------- | ---------------------------------------- |
| **Type**               | ODVA                                     |
| **Driver**             | CIP Explicit (Gen1)                      |
| **Network Address**    | The device address you defined in Step 1 |
| **Network Port&#x20;** | 44818                                    |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following tag parameters and available value types.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the case-sensitive register name exactly as it is defined in the PLC.

A **Connected** status for the device won't display until a tag with a correct register name is created.

## Available Value Types

- `bool`
- `byte`
- `byteinarray`
- `sint`
- `sintinarray`
- `usint`
- `usintinarray`
- `word`
- `int`
- `uint`
- `uintinarray`
- `dword`
- `udint`
- `udintinarray`


[title] Mitsubishi FX3G ASCII Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi FX3G ASCII Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                       |
| ---------------------------- | -------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                               |
| **Validated devices/series** | [MELSEC-F](https://www.mitsubishielectric.com/fa/products/cnt/plc_fx/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC. See the steps below to view and edit the open ports on the PLC.
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed. ****
   **Device**: Mitsubishi FX3GE-24M****
   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ooOmPpTCH64e_aaCJrF87_mitsubishi-fx3g-ascii.png" size="80" width="398" height="244" caption="Reference image of device" position="center" showCaption="true"}
2. Connect the device to your pc using USB and launch the GX Works 2 v1.560J software.
3. Click **Online > Read from PLC**.
4. Select PLC series.
5. Set up the connection.&#x20;
6. Click **Connection Test**.&#x20;
7. From the Navigation panel, click **Parameter > PLC Parameter > Ethernet Port**.
8. From the Navigation panel, click **Connection Destination > connection1**.
9. Double-click **PLC Module&#xA0;**, click **Search for FXCPU on network**, and then select the target device.
10. Click **Connection Test**.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Mitsubishi                               |
| **Driver**          | Mitsubishi FX3G ASCII (Gen1)             |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 5001                                     |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**       |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------------- |
| X        | bit             | DDD                | 0               | 255             | Input Relay           |
| Y        | bit             | DDD                | 0               | 255             | Output Relay          |
| M        | bit             | DDDD               | 0               | 7999            | Internal Relay        |
| T        | bit             | DDD                | 0               | 511             | Timer Contacts        |
| C        | bit             | DDD                | 0               | 255             | Counter Contacts      |
| SM       | bit             | DDDD               | 8000            | 8511            | Source Int. Relays    |
| S        | bit             | DDDD               | 0               | 4095            | Step Relays           |
| R        | word            | DDDDD              | 0               | 32767           | File Register         |
| SD       | word            | DDDD               | 8000            | 8511            | Service Data Register |
| CV2      | word            | DDD                | 200             | 255             | Counter Value         |
| D        | word            | DDDD               | 0               | 7999            | Data Registers        |
| CV       | word            | DDD                | 0               | 199             | Counter Value         |
| TV       | word            | DDD                | 0               | 511             | Timer Value           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Koyo Ethernet
[path] QuickStart Guide/Industrial Systems Connection Guide/Koyo/

:::hint{type="info"}
**Note**: This driver is deprecated as of Litmus Edge version 3.11.0. We recommend using the [Koyo Ethernet (Gen1)](docId\:Qb3GgED7Ne6-f88qGDJEf) driver instead.&#x20;
:::

Review the following information for setting up and configuring the Koyo Ethernet driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                        |
| **Validated devices/series** | Koyo DirectLogic Series &#xA;[Automation Direct DirectLogic PLC Series](https://www.automationdirect.com/adc/overview/catalog/programmable_controllers/directlogic_plcs_\(micro_to_small,_brick_-a-_modular\)?gclid=CjwKCAjwq-WgBhBMEiwAzKSH6CBiyKAdShGTwXSUtgzDLhYfK7y-0u1z0p6V5wzVcfCztV1oL9k03BoCJugQAvD_BwE#bodycontentppc) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use DirectSoft6 V6.1 software to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | Koyo                                         |
| **Driver**          | Koyo Ethernet                                |
| **Network Address** | The device address you defined during Step 1 |
| **Network Port**    | 428784                                       |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** |
| -------- | --------------- | ------------------ | --------------- | --------------- |
| GX       | bit             | OOOO               | 0               | 2047            |
| X        | bit             | OOOO               | 0               | 1023            |
| SP       | bit             | OOOO               | 0               | 1023            |
| GY       | bit             | OOOO               | 0               | 2047            |
| Y        | bit             | OOOO               | 0               | 1023            |
| C        | bit             | OOOO               | 0               | 1023            |
| S        | bit             | OOOO               | 0               | 1023            |
| T        | bit             | OOO                | 0               | 255             |
| CT       | bit             | OOO                | 0               | 255             |
| CCM\_31  | word            | HHHH               | 0               | 17056           |
| CCM\_32  | word            | HHH                | 0               | 512             |
| CCM\_33  | word            | HHH                | 0               | 832             |
| V        | word            | OOOOO              | 0               | 17055           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi FX2N-10GM/20GM Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi FX2N-10GM/20GM Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                       |
| ---------------------------- | -------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                 |
| **Validated devices/series** | [MELSEC-F](https://www.mitsubishielectric.com/fa/products/cnt/plc_fx/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed. ****
   **Device**: Mitsubishi FX2n-10GM****
   **Communication I/F**: Serial. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WubzK4HSWY0Ersg2jwWVw_mitsubishi-fx2n-10-20gm-serialreference.png" size="80" width="627" height="872" caption="Reference image of device" position="center" showCaption="true"}
2. Use FX PCS-VPS/WIN-E software to configure the device for Ethernet device.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                                   |
| ---------------------- | --------------------------------------- |
| **Type**               | Mitsubishi                              |
| **Driver**             | Mitsubishi FX2N-10GM/20GM Serial (Gen1) |
| **Communication Port** | Local Serial connection file path       |
| **Data Bits**          | 8                                       |
| **Baud Rate**          | 9600                                    |
| **Parity**             | Even, Odd, None                         |
| **Stop Bits**          | 1                                       |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description**         |
| -------- | -------------- | ------------------ | --------------- | --------------- | ----------------------- |
| X        | bit            | OOO                | 0               | 67              | Input Relay             |
| Y        | bit            | OOO                | 0               | 67              | Output Relay            |
| M        | bit            | DDD                | 0               | 511             | Auxiliary Relay         |
| SM       | bit            | DDDD               | 9000            | 9175            | Special Auxiliary Relay |
| X\_W     | word           | OOO                | 0               | 67              |                         |
| Y\_W     | bit            | OOO                | 0               | 67              |                         |
| M\_W     | bit            | DDD                | 0               | 511             |                         |
| SM\_W    | bit            | DDDD               | 9000            | 9175            |                         |
| D        | word           | DDDD               | 0               | 6999            | Data Register           |
| SD       | word           | DDDD               | 9000            | 9599            | Special Data Register   |
| V        | word           | D                  | 0               | 7               | Index Register          |
| Z        | word           | D                  | 0               | 7               | Index Register          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Keyence Nano Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Keyence/

Review the following information for setting up and configuring the Keyence Nano Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                           |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                                   |
| **Validated devices/series** | [Keyence KV-5000](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-5000_3000/models/kv-5000/)&#xA;[Keyence KV-7500](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-7000/models/kv-7500/)&#xA;[Keyence KV-8000](https://www.keyence.com/products/controls/plc-building-block-type/kv-8000/) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: Keyence Nano Ethernet

   **Communication I/F**: Ethernet. Refer to the following figures.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZJS7Az-QzXe41kRUHpEJ7_keyence-nano-ethernet.png" size="80" width="373" height="420" caption="Keyence Nano Ethernet reference" position="center" showCaption="true"}
2. Launch the KV-Studio Software, and then click **Tools > Ethernet IP Settings**.
3. Set up the IP address.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8yrnI9S-IHaPDD1phYgLg_keyence-nano-ethernet-ip-address.png" size="80" width="568" height="444" caption="IP address setup" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Use the following parameters/values when you [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) with this driver:

| Parameter               | Value                                    |
| ----------------------- | ---------------------------------------- |
| **Type**                | Keyence                                  |
| **Driver**              | Keyence Nano Ethernet (Gen1)             |
| **Network Address**     | The device address you defined in Step 1 |
| **Port**                | 8501                                     |
| **Enable Alias Topics** | Enabled                                  |
| **Enable Data Store**   | Enabled                                  |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Important

When you enter a count greater than 1 for 32- and 64-bit types, the driver will skip the appropriate addresses, so it doesn’t read the overlapping addresses. For example, if you enter a count of 4 for address DM0, the following addresses will be read based on the data-type size:

- 16 bit: DM0, DM1, DM2, DM3
- 32 bit: DM0, DM2, DM4, DM6
- 64 bit: DM0, DM4, DM8, DM12

For the string data type, you will need to set the count as the number of characters to read. There are 2 ASCII characters per 16-bit register, so if you enter a count of 10 and address DM0, then the driver should read DM0-4 and print 10 characters (or less, if the registers are null). If you write a string with fewer characters than the count of the tag, the string will be right-padded with null characters that will overwrite any values in those registers.

## Register Table

Refer to the appropriate register table depending on your version of Litmus Edge.&#x20;

### Register Table for Litmus Edge 3.11.0 and Later

| **Name**  | **Value Types**                                          | **Address Format** | **Min Address** | **Max Address** | **Description**           |
| --------- | -------------------------------------------------------- | ------------------ | --------------- | --------------- | ------------------------- |
| MR        | bit                                                      | DDDDdd             | 0               | 399915          | Internal Auxiliary Relay  |
| LR        | bit                                                      | DDDdd              | 0               | 99915           | Latch Relay               |
| CR        | bit                                                      | DDDdd              | 0               | 99915           | Control Relay             |
| RLY       | bit                                                      | DDDdd              | 0               | 99915           | Relay                     |
| B         | bit                                                      | HHHh               | 0               | 32767           | Link Relay                |
| T\_Bit    | bit                                                      | DDDD               | 0               | 9999            | Timer bit                 |
| C\_Bit    | bit                                                      | DDDD               | 0               | 9999            | Counter bit               |
| DM\_Bit   | bit                                                      | DDDDDdd            | 0               | 6553515         | Data memory bit           |
| TM\_Bit   | bit                                                      | DDDDdd             | 0               | 999915          | Temporary data memory bit |
| CM\_Bit   | bit                                                      | DDDDDdd            | 0               | 6553515         | Control memory bit        |
| EM\_Bit   | bit                                                      | DDDDDdd            | 0               | 6553515         | Data memory               |
| FM\_Bit   | bit                                                      | DDDDDdd            | 0               | 6553515         | File Register bit         |
| CTC\_Bit  | bit                                                      | D                  | 0               | 7               |                           |
| ZF\_Bit   | bit                                                      | DDDDDDdd           | 0               | 52428715        | File Register (SQ) bit    |
| W\_Bit    | bit                                                      | HHHHh              | 0               | 524287          | Link Register bit         |
| VM\_Bit   | bit                                                      | DDDDDdd            | 0               | 6553515         |                           |
| VB\_Bit   | bit                                                      | HHHh               | 0               | 63999           |                           |
| CTC       | word, int16, int32, uint32, ascii, float, double, string | D                  | 0               | 7               |                           |
| CTH       | word, int16, int32, uint32, ascii, float, double, string | D                  | 0               | 3               |                           |
| Z         | word, int16, int32, uint32, ascii, float, double, string | DD                 | 1               | 12              |                           |
| TRM       | word, int16, int32, uint32, ascii, float, double, string | D                  | 0               | 7               |                           |
| C\_Preset | word, int16, int32, uint32, ascii, float, double, string | DDDD               | 0               | 9999            | Counter preset            |
| C\_Curr   | word, int16, int32, uint32, ascii, float, double, string | DDDD               | 0               | 9999            | Counter current           |
| T\_Preset | word, int16, int32, uint32, ascii, float, double, string | DDDD               | 0               | 9999            | Timer preset              |
| T-Curr    | word, int16, int32, uint32, ascii, float, double, string | DDDD               | 0               | 9999            | Timer Current             |
| C         | word, int16, int32, uint32, ascii, float, double, string | DDDD               | 0               | 9999            | Counter                   |
| T         | word, int16, int32, uint32, ascii, float, double, string | DDDD               | 0               | 9999            | Timer                     |
| B\_Word   | word, int16, int32, uint32, ascii, float, double, string | HHH                | 0               | 2047            | Link Delay                |
| RLY\_Word | word, int16, int32, uint32, ascii, float, double, string | DDD                | 0               | 999             | Relay                     |
| VB        | word, int16, int32, uint32, ascii, float, double, string | HHH                | 0               | 3999            |                           |
| ZF        | word, int16, int32, uint32, ascii, float, double, string | DDDDDD             | 0               | 524287          | File Register             |
| CR\_Word  | word, int16, int32, uint32, ascii, float, double, string | DDD                | 0               | 999             | Control Relay             |
| LR\_Word  | word, int16, int32, uint32, ascii, float, double, string | DDD                | 0               | 999             | Latch Relay               |
| MR\_Word  | word, int16, int32, uint32, ascii, float, double, string | DDDD               | 0               | 3999            | Internal Auxiliary relay  |
| FM        | word, int16, int32, uint32, ascii, float, double, string | DDDDD              | 0               | 65535           | File Register             |
| EM        | word, int16, int32, uint32, ascii, float, double, string | DDDDD              | 0               | 65535           | Data memory               |
| CM        | word, int16, int32, uint32, ascii, float, double, string | DDDDD              | 0               | 65535           | Control memory            |
| VM        | word, int16, int32, uint32, ascii, float, double, string | DDDDD              | 0               | 65535           |                           |
| W         | word, int16, int32, uint32, ascii, float, double, string | HHHH               | 0               | 32767           | Link Register             |
| TM        | word, int16, int32, uint32, ascii, float, double, string | DDDD               | 0               | 9999            | Temporary data memory     |
| DM        | word, int16, int32, uint32, ascii, float, double, string | DDDDD              | 0               | 65535           | Data memory               |

### Register Table for Litmus Edge 3.5.6 and Earlier

| **Name**  | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**           |
| --------- | --------------- | ------------------ | --------------- | --------------- | ------------------------- |
| MR        | bit             | DDDDdd             | 0               | 399915          | Internal Auxiliary Relay  |
| LR        | bit             | DDDdd              | 0               | 99915           | Latch Relay               |
| CR        | bit             | DDDdd              | 0               | 99915           | Control Relay             |
| RLY       | bit             | DDDdd              | 0               | 99915           | Relay                     |
| B         | bit             | HHHh               | 0               | 32767           | Link Relay                |
| T\_Bit    | bit             | DDDD               | 0               | 9999            | Timer bit                 |
| C\_Bit    | bit             | DDDD               | 0               | 9999            | Counter bit               |
| DM\_Bit   | bit             | DDDDDdd            | 0               | 6553515         | Data memory bit           |
| TM\_Bit   | bit             | DDDDdd             | 0               | 999915          | Temporary data memory bit |
| CM\_Bit   | bit             | DDDDDdd            | 0               | 6553515         | Control memory bit        |
| EM\_Bit   | bit             | DDDDDdd            | 0               | 6553515         | Data memory               |
| FM\_Bit   | bit             | DDDDDdd            | 0               | 6553515         | File Register bit         |
| CTC\_Bit  | bit             | D                  | 0               | 7               |                           |
| ZF\_Bit   | bit             | DDDDDDdd           | 0               | 52428715        | File Register (SQ) bit    |
| W\_Bit    | bit             | HHHHh              | 0               | 524287          | Link Register bit         |
| VM\_Bit   | bit             | DDDDDdd            | 0               | 6553515         |                           |
| VB\_Bit   | bit             | HHHh               | 0               | 63999           |                           |
| CTC       | word            | D                  | 0               | 7               |                           |
| CTH       | word            | D                  | 0               | 3               |                           |
| Z         | word            | DD                 | 1               | 12              |                           |
| TRM       | word            | D                  | 0               | 7               |                           |
| C\_Preset | word            | DDDD               | 0               | 9999            | Counter preset            |
| C\_Curr   | word            | DDDD               | 0               | 9999            | Counter current           |
| T\_Preset | word            | DDDD               | 0               | 9999            | Timer preset              |
| T-Curr    | word            | DDDD               | 0               | 9999            | Timer Current             |
| C         | word            | DDDD               | 0               | 9999            | Counter                   |
| T         | word            | DDDD               | 0               | 9999            | Timer                     |
| B\_Word   | word            | HHH                | 0               | 2047            | Link Delay                |
| RLY\_Word | word            | DDD                | 0               | 999             | Relay                     |
| VB        | word            | HHH                | 0               | 3999            |                           |
| ZF        | word            | DDDDDD             | 0               | 524287          | File Register             |
| CR\_Word  | word            | DDD                | 0               | 999             | Control Relay             |
| LR\_Word  | word            | DDD                | 0               | 999             | Latch Relay               |
| MR\_Word  | word            | DDDD               | 0               | 3999            | Internal Auxiliary relay  |
| FM        | word            | DDDDD              | 0               | 65535           | File Register             |
| EM        | word            | DDDDD              | 0               | 65535           | Data memory               |
| CM        | word            | DDDDD              | 0               | 65535           | Control memory            |
| VM        | word            | DDDDD              | 0               | 65535           |                           |
| W         | word            | HHHH               | 0               | 32767           | Link Register             |
| TM        | word            | DDDD               | 0               | 9999            | Temporary data memory     |
| DM        | word            | DDDDD              | 0               | 65535           | Data memory               |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] OPC UA Client Poll
[path] QuickStart Guide/Industrial Systems Connection Guide/OPC UA/

:::hint{type="info"}
**Note**: This driver will be deprecated in a future Litmus Edge release. We recommend using [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR).
:::

Review the following information for setting up and configuring the OPC UA Client Poll driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                                                                                                                                                           |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**                | Ethernet                                                                                                                                                                                                                   |
| **Functionality&#x20;**        | - Polls the OPC UA server at regular user-defined intervals, returning the latest status from all specified nodes.
- As soon as a record is generated, the status is passed to the pipeline to avoid delays in processing. |
| **Replaced with Gen 2 driver** | [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR)                                                                                                                                                                     |

# Supported Servers

## OPC UA Client

- It provides better performance compared to other OPC UA Clients.
- OPC UA Client with new design supports both poll and subscription mode.

# Set up the Driver in DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                 |
| ------------------- | --------------------- |
| **Type**            | OPC UA                |
| **Driver**          | OPC UA Client Poll    |
| **Network Address** | The device IP address |
| **Network Port**    | 4840                  |
| **Certificate**     | Auto-generated        |
| **Private Key**     | Auto-generated        |
| **Timeout Seconds** | 10                    |

# Configure the List of Registers

Browse for tags to add to this FreeTag device. See [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd) to learn more.&#x20;

Alternatively, when you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX), for **Name** map the OPC server tags to the client using this format: `ns=1;s=tagname`.

Example: Example: `ns=2;s=Demo.Static.Scalar.Boolean`

The following value types are supported:&#x20;

- `int32`
- `bool`
- `sbyte`
- `byte`
- `int16`
- `uint16`
- `int32`
- `uint32`
- `int64`
- `uint64`
- `float32`
- `float64`
- `string`
- `dump`
- `desc`

Refer to the following tag parameters.&#x20;

## Tag Parameters

- **Name**: Enter a name based on this format: `ns=1;s=tagname`.
  - Example: `ns=2;s=Demo.Static.Scalar.Boolean`
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.&#x20;
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Untitled
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/


[title] Omron
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                                                                                                                                                                                                                                                                                              | **Compatible Ethernet DeviceHub Drivers**                                                                               | **Compatible Serial DeviceHub Drivers**                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| C Series                                                                                                                                                                                                                                                                                                                                    |                                                                                                                         | [Omron-Hostlink (Gen1)](docId\:aXOmM1vYVNLeebczDq1jb)                                                             |
| - [CJ1](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cj1/index.html)
- [CJ2](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cj2/index.html)
- [CS](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cs1/index.html) | * [Omron Fins Ethernet](docId\:xrEVl-B0944s7c8rn1G1A)
* [Omron Fins Ethernet (Gen1)](docId:6uGrLpojzk4yk5pGp-JO4)&#x20; | - [Omron-Hostlink (Gen1)](docId\:aXOmM1vYVNLeebczDq1jb)
- [Omron-Peripheral (Gen1)](docId\:kI52i2KC2EFRBd9A67bCx) |
| * [NJ](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/controller-nj-series/index.html)
* [NX1P](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/controller-nx1p/index.html)                                                                                  | [Omron-NJ-Ethernet (Gen1)](docId\:vvdaPUOB3YgEqa4m9SZM_)                                                                | [Omron-Peripheral (Gen1)](docId\:kI52i2KC2EFRBd9A67bCx)                                                           |


[title] Modbus ASCII
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 2 Drivers/

:::hint{type="info"}
**Note**: If multiple stations are connected to the RS-485 bus, then use the [Modbus ASCII Advanced](docId\:dGgP6KMsUj7B3cqj6lKp8) driver instead of this one.&#x20;
:::

Review the following information for setting up and configuring the Modbus ASCII driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                            |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial (RS-485)                                                                                                                             |
| **When to use&#x20;**        | Serial connection to a device using Modbus ASCII                                                                                            |
| **Replaces Gen 1 driver(s)** | [Modbus ASCII (Gen1)](docId\:XhV-tpwiACYqHAPZOFoIa) <br />Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd)  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                 | Value                                      |
| ------------------------- | ------------------------------------------ |
| **Type**                  | Modbus                                     |
| **Driver**                | Modbus ASCII                               |
| **Device File**           | The file of the serial port you are using  |
| **Baud Rate**             | 19200                                      |
| **Data Bits**             | 8                                          |
| **Parity**                | Select even, none, or odd                  |
| **Station ID**            | 0                                          |
| **Stop Bits**             | 1                                          |
| **Zero-Based Addressing** | Select Enable or Disable                   |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

:::hint{type="info"}
**Note**: The address format in this Gen 2 driver is different from the Gen 1 driver ([Modbus ASCII (Gen1)](docId\:XhV-tpwiACYqHAPZOFoIa)) for the same device. Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd).&#x20;
:::

| **Name** | **Value Types**                                | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| -------- | ---------------------------------------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D        | bit                                            | DDDDD              | 0               | 65535           | Discrete Input Contacts         |
| C        | bit                                            | DDDDD              | 0               | 65535           | Discrete Output Coils           |
| H        | uint16, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Output Holding Registers |
| I        | uint16, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Input Registers          |
| H\_bit   | bit                                            | DDDDDdd            | 0               | 6553515         | Analog Output Holding Registers |
| I\_bit   | bit                                            | DDDDDdd            | 0               | 6553515         | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Endianness&#x20;**(not available for all names): This option configures how the tag data will be formatted and whether bytes and/or words will be counted from the start (big-endian style) or end (little-endian style) of strings of data. Select one of the following options.&#x20;
  - **No Swap**: Data will be formatted in big-endian style (bytes and words counted from the start). For example: AB CD.&#x20;
  - **Swap Bytes**: Only bytes will be formatted in little-endian style (counted from the end). For example: BA DC.&#x20;
  - **Swap Words**: Only words will be formatted in little-endian style (counted from the end). For example: CD AB.&#x20;
  - **Swap Words & Bytes**: Both words and bytes will be formatted in little-endian style (counted from the end). For example: DC BA.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Modbus RTU-Offset (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 1 Drivers/

:::hint{type="info"}
**Note**: This driver will be deprecated in a future release. We recommend using the Gen 2 [Modbus RTU](docId\:cLMEYaOkmeSZSJ9GmpLB-).
:::

Review the following information for setting up and configuring the Modbus RTU-Offset (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                               |
| ------------------------------ | ---------------------------------------------- |
| **Driver type**                | Serial                                         |
| **When to use**                | Serial connection to a device using Modbus RTU |
| **Replaced with Gen 2 driver** | [Modbus RTU](docId\:cLMEYaOkmeSZSJ9GmpLB-)     |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Modbus                            |
| **Driver**             | Modbus RTU (Offset) (Gen1)        |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station ID**         | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**  | **Value Types**             | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| --------- | --------------------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D         | bit                         | DDDD               | 0               | 9999            | Discrete Input Contacts         |
| C         | bit                         | DDDD               | 0               | 9999            | Discrete Output Coils           |
| H\_Bit    | bit                         | DDDDdd             | 0               | 999915          | Analog Output Holding Registers |
| I\_Bit    | bit                         | DDDDdd             | 0               | 999915          | Analog Input Registers          |
| H         | int, uint                   | DDDD               | 0               | 9999            | Analog Output Holding Registers |
| I         | int, uint                   | DDDD               | 0               | 9999            | Analog Input Registers          |
| H\_Ulong  | ulong, ulong (big-endian)   | DDDD               | 0               | 9998            | Analog Output Holding Registers |
| I\_Ulong  | ulong, ulong (big-endian)   | DDDD               | 0               | 9998            | Analog Input Registers          |
| H\_Float  | float, float (big-endian)   | DDDD               | 0               | 9998            | Analog Output Holding Registers |
| I\_Float  | float, float (big-endian)   | DDDD               | 0               | 9998            | Analog Input Registers          |
| H\_Double | double, double (big-endian) | DDDD               | 0               | 9996            | Analog Output Holding Registers |
| I\_Double | double, double (big-endian) | DDDD               | 0               | 9996            | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi FX3U Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi FX3U Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                       |
| ---------------------------- | -------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                 |
| **Validated devices/series** | [MELSEC-F](https://www.mitsubishielectric.com/fa/products/cnt/plc_fx/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed. ****
   **Device**: Mitsubishi Fx3U-16M****
   **Communication I/F**: RS232. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lZ-3TYfHOPmEHymLCsqAw_mitsubishi-q02-02h-serial-connection1reference.png" size="80" width="480" height="840" caption="Reference image of device" position="center" showCaption="true"}
2. Launch GX Works2 v1.560J software, click **Create a Project**, and then click **Connection 1&#xA0;**&#x69;n the navigation panel.
3. Set up communication parameters, and then click **Connection Test**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Mitsubishi                        |
| **Driver**             | Mitsubishi FX3U Serial (Gen1)     |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 7                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**       |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------------- |
| X        | bit             | OOO                | 0               | 500             | Input Relay           |
| Y        | bit             | OOO                | 0               | 500             | Output Relay          |
| M        | bit             | DDDD               | 0               | 7999            | Auxiliary Relay       |
| T        | bit             | DDD                | 0               | 511             | Timer Relay           |
| C        | bit             | DDD                | 0               | 255             | Counter Relay         |
| SM       | bit             | DDDD               | 8000            | 8511            | Special Relay         |
| S        | bit             | DDDD               | 0               | 4095            | State Relay           |
| R        | word            | DDDDD              | 0               | 32767           | Extended Register     |
| SD       | word            | DDDD               | 8000            | 8511            | Special Data Register |
| CV2      | word            | DDD                | 200             | 255             | Counter Memory        |
| D        | word            | DDDD               | 0               | 7999            | Data Register         |
| CV       | word            | DDD                | 0               | 199             | Counter Memory        |
| TV       | word            | DDD                | 0               | 511             | Timer Memory          |
| Z        | word            | D                  | 0               | 7               | Index Register        |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Modbus RTU Advanced
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 2 Drivers/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Use this driver instead of the [Modbus RTU](docId\:cLMEYaOkmeSZSJ9GmpLB-) driver when multiple stations are connected to the RS-485 bus. The **Station ID** setting can be customized at the tag level with this driver. The device connection status is defined by the last received response.

Review the following information for setting up and configuring the Modbus RTU Advanced driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter | Compatible items                               |
| ----------------------- | ---------------------------------------------- |
| **Driver type**         | Serial (RS-485)                                |
| **When to use&#x20;**   | Serial connection to a device using Modbus RTU |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                 | Value                                                                                                                     |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Type**                  | Modbus                                                                                                                    |
| **Driver**                | Modbus RTU Advanced                                                                                                       |
| **Device File**           | The file of the serial port you are using                                                                                 |
| **Baud Rate**             | Select one of the following:<br />* 1200
* 2400
* 4800
* 9600
* 19200
* 38400
* 57600
* 115200
* 230400
* 460800
* 921600 |
| **Data Bits**             | 8                                                                                                                         |
| **Parity**                | Select even, none, or odd                                                                                                 |
| **Stop Bits**             | 1                                                                                                                         |
| **Zero-Based Addressing** | Select Enable or Disable                                                                                                  |
| **Delay Between Polls**   | 0                                                                                                                         |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types**                                | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| -------- | ---------------------------------------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D        | bit                                            | DDDDD              | 0               | 65535           | Discrete Input Contacts         |
| C        | bit                                            | DDDDD              | 0               | 65535           | Discrete Output Coils           |
| H        | uint16, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Output Holding Registers |
| I        | uint16, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Input Registers          |
| H\_bit   | bit                                            | DDDDDdd            | 0               | 6553515         | Analog Output Holding Registers |
| I\_bit   | bit                                            | DDDDDdd            | 0               | 6553515         | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Endianness&#x20;**(not available for all names): This option configures how the tag data will be formatted and whether bytes and/or words will be counted from the start (big-endian style) or end (little-endian style) of strings of data. Select one of the following options.&#x20;
  - **No Swap**: Data will be formatted in big-endian style (bytes and words counted from the start). For example: AB CD.&#x20;
  - **Swap Bytes**: Only bytes will be formatted in little-endian style (counted from the end). For example: BA DC.&#x20;
  - **Swap Words**: Only words will be formatted in little-endian style (counted from the end). For example: CD AB.&#x20;
  - **Swap Words & Bytes**: Both words and bytes will be formatted in little-endian style (counted from the end). For example: DC BA.&#x20;
- **Station ID**: Enter the value that indicates the position of the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi QJ71E71
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 2 Drivers/

Review the following information for setting up and configuring the Mitsubishi QJ71E71 driver.

:::hint{type="info"}
**Note**: We recommend the [Mitsubishi Q/L Ethernet](docId\:h1mVsD1jQaa1ON79jn_UQ) driver to connect to QJ71E71 modules, because it has more efficient communication with the PLC and supports more data types.
:::

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                     |
| ---------------------------- | ------------------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                             |
| **Validated devices/series** | [MELSEC-Q](https://www.mitsubishielectric.com/fa/products/cnt/plcq/items/index.html) |
| **Replaces Gen 1 driver(s)** | [Mitsubishi QJ71E71 (Gen1)](docId\:t4exR_Oy9OTrm4yZ6e-Fw)                            |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use GX Works2 v1.560J software on your computer to configure the device for Ethernet access.&#x20;

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC.&#x20;
:::

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Mitsubishi                               |
| **Driver**          | Mitsubishi QJ71E71                       |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 5002                                     |
| **Station ID**      | 1                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**               |
| -------- | --------------- | ------------------ | --------------- | --------------- | ----------------------------- |
| B        | bit             | DDDDD              | 0               | 32237           | Link Relay                    |
| CC       | bit             | DDDDD              | 0               | 25471           | Counter Coil                  |
| CS       | bit             | DDDDD              | 0               | 25471           | Counter Contact               |
| DX       | bit             | DDDD               | 0               | 8191            | Direct Input                  |
| DY       | bit             | DDDD               | 0               | 8191            | Direct Output                 |
| F        | bit             | DDDDD              | 0               | 32237           | Annunciator                   |
| L        | bit             | DDDDD              | 0               | 32237           | Latch Relay                   |
| M        | bit             | DDDDD              | 0               | 65535           | Internal Relay                |
| S        | bit             | DDDD               | 0               | 8191            | Step Relay                    |
| SB       | bit             | DDDDD              | 0               | 32237           | Special Link Relay            |
| SM       | bit             | DDDD               | 0               | 2047            | Special Relay                 |
| STC      | bit             | DDDDD              | 0               | 25471           | Retentive Timer Coil          |
| STS      |                 | DDDDD              | 0               | 25471           | Retentive Timer Current Value |
| TC       | bit             | DDDDD              | 0               | 25471           | Timer Coil                    |
| TS       | bit             | DDDDD              | 0               | 25471           | Timer Contact                 |
| V        | bit             | DDDDD              | 0               | 32237           | Edge Relay                    |
| X        | bit             | DDDDD              | 0               | 65535           | Input Relay                   |
| Y        | bit             | DDDDD              | 0               | 65535           | Output Relay                  |
| CN       | word            | DDDD               | 0               | 1023            | Counter current               |
| D        | word            | DDDD               | 0               | 9999            | Data Register                 |
| R        | word            | DDDD               | 0               | 9999            | File Register                 |
| SD       | word            | DDDD               | 0               | 2047            | Special Register              |
| STN      | word            | DDDDD              | 0               | 25471           | Retentive Timer Current Value |
| TN       | word            | DDDDD              | 0               | 25471           | Timer Current Value           |
| W        | word            | DDDD               | 0               | 8191            | Link Register                 |
| Z        | word            | DD                 | 0               | 20              | Index Register                |
| ZR       | word            | DDDDDD             | 0               | 999999          | File Register                 |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi A2N Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi A2N Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                                                       |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| **Driver type**                | Serial                                                                                                                 |
| **Validated devices/series**   | [A Series](https://www.mitsubishielectric.com/fa/products/cnt/plca/pmerit/concept/index.html) models:<br />* A1S
* A2N |
| **Replaced with Gen 2 driver** | [Mitsubishi A Series Serial](docId:2vVoJ8ys8gVfV7O6T8zNg)                                                              |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed. ****
   **Device**: Mitsubishi A2NCPU****
   **Communication I/F**: RS232. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SqMt6Ya6_dDmMX2dzVeZX_ls-xbm-serial-reference.png" size="80" width="715" height="282" caption="Mitsubishi A2N Serial reference" position="center" showCaption="true"}
2. Launch GX developer v8.103 software and connect the device with a serial cable.
3. Click **Online > Read from PLC**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MLA3ZFZ2hfcagelDvbR-D_mitsubishi-a2n-serial-read.png" size="80" width="616" height="433" caption="Read from PLC option" position="center" showCaption="true"}
4. Select the PLC series.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eZnK_RaZ7LsAWZIm8BepA_mitsubishi-a2n-serial-series.png" size="60" width="302" height="106" caption="PLC series drop-down list " position="center" showCaption="true"}
5. Set up communications, and then click **Communication Test**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LQkmOe9yRKuJjTp0F2Ykc_mitsubishi-a2n-serial-communication.png" size="80" width="750" height="480" caption="Communication Test option " position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Mitsubishi                        |
| **Driver**             | Mitsubishi A2N Serial (Gen1)      |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------- |
| X        | bit             | HHHH               | 0               | 65535           | Input Relay     |
| Y        | bit             | HHHH               | 0               | 65535           | Output Relay    |
| M        | bit             | DDDDD              | 0               | 65535           | Auxiliary Relay |
| B        | bit             | HHHH               | 0               | 65535           |                 |
| F        | bit             | DDDDD              | 0               | 65535           |                 |
| R        | word            | DDDDD              | 0               | 65535           |                 |
| W        | word            | HHHH               | 0               | 65535           |                 |
| D        | word            | DDDDD              | 0               | 65535           | Data Register   |
| CV       | word            | DDDDD              | 0               | 65535           | Counter Memory  |
| TV       | word            | DDDDD              | 0               | 65535           | Timer Memory    |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Panasonic Mewtocol Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Panasonic/

Review the following information for setting up and configuring the Panasonic Mewtocol Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                     |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                             |
| **Validated devices/series** | [FP0H](https://na.industrial.panasonic.com/products/industrial-automation/plc-hmi-communication/lineup/programmable-logic-controllers-interface-terminal/series/238) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                | Value                                        |
| ------------------------ | -------------------------------------------- |
| **Type**                 | Panasonic                                    |
| **Driver**               | Panasonic Mewtocol Ethernet (Gen1)           |
| **Network Address**      | The device address you defined during Step 1 |
| **********Port********** | 8500                                         |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**            |
| -------- | --------------- | ------------------ | --------------- | --------------- | -------------------------- |
| X        | bit             | DDDDdd             | 0               | 999915          | Input                      |
| Y        | bit             | DDDDdd             | 0               | 999915          | Output                     |
| R        | bit             | DDDDdd             | 0               | 999915          | Internal Relay             |
| L        | bit             | DDDDdd             | 0               | 9999            | Link Relay                 |
| L\_Bit   | bit             | DDDDdd             | 0               | 999915          | Link Relay bit             |
| T        | bit             | DDDD               | 0               | 9999            | Timer                      |
| C        | bit             | DDDD               | 0               | 9999            | Counter                    |
| SV       | word            | DDDD               | 0               | 9999            | Timer/Counter Set Value    |
| EV       | word            | DDDDD              | 0               | 65535           | Timer/Counter Elapse Value |
| DT       | word            | DDDDD              | 0               | 262143          | Data Register              |
| LD       | word            | DDDD               | 0               | 8447            | Link Register              |
| WX       | word            | DDDD               | 0               | 9999            | Input                      |
| WY       | word            | DDDD               | 0               | 9999            | Output                     |
| WR       | word            | DDDD               | 0               | 9999            | Internal Relay             |
| WL       | word            | DDDD               | 0               | 9999            | Link Relay                 |
| FL       | word            | DDDDD              | 0               | 99999           | File Register              |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] LS XBM Cnet Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/LS Industrial System/

Review the following information for setting up and configuring the LS XBM Cnet Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                          |
| ---------------------------- | --------------------------------------------------------- |
| **Driver type**              | Serial                                                    |
| **Validated devices/series** | LS Electric XBM Series with communication module XGL-CH2A |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | LS Industrial System              |
| **Driver**             | LS XBM Cnet Serial (Gen1)         |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 115200                            |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station ID**         | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**            |
| -------- | --------------- | ------------------ | --------------- | --------------- | -------------------------- |
| PW\_bit  | bit             | DDDDdd             | 0               | 204715          | I/O device bit             |
| MW\_Bit  | bit             | DDDDdd             | 0               | 204715          | Internal device bit        |
| LW\_Bit  | bit             | DDDDDdd            | 0               | 1126316         | Communication device bit   |
| KW\_Bit  | bit             | DDDDdd             | 0               | 255915          | Preservation device bit    |
| FW\_Bit  | bit             | DDDDdd             | 0               | 204715          | Special device bit         |
| DW\_Bit  | bit             | DDDDDdd            | 0               | 3276715         | Data register bit          |
| UW\_Bit  | bit             | DDDDdd             | 0               | 633115          |                            |
| RW\_Bit  | bit             | DDDDDdd            | 0               | 3276715         |                            |
| SX       | bit             | DDDDD              | 0               | 12799           | Relay for step control bit |
| TX       | bit             | DDDD               | 0               | 2047            | Timer device bit           |
| CX       | bit             | DDDD               | 0               | 2047            | Counter device bit         |
| PW       | word            | DDDD               | 0               | 2047            | I/O device                 |
| MW       | word            | DDDD               | 0               | 2047            | Internal device            |
| LW       | word            | DDDDD              | 0               | 11263           | Communication device       |
| KW       | word            | DDDD               | 0               | 2559            | Preservation device        |
| FW       | word            | DDDD               | 0               | 2047            | Special device             |
| SW       | word            | DDD                | 0               | 127             | Relay for step control     |
| DW       | word            | DDDDD              | 0               | 32767           | Data register              |
| UW       | word            | DDDD               | 0               | 6331            | Analog data register       |
| NW       | word            | DDDDD              | 0               | 21503           | Communiction data register |
| ZW       | word            | DDD                | 0               | 127             | Index register             |
| TW       | word            | DDDD               | 0               | 2047            | Timer current value        |
| CW       | word            | DDDD               | 0               | 2047            | Counter current value      |
| RW       | word            | DDDDD              | 0               | 32767           |                            |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Panasonic
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                                                                                                                       | **Compatible Ethernet DeviceHub Drivers**                          | **Compatible Serial DeviceHub Drivers**                     |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------- |
| [FP0H](https://na.industrial.panasonic.com/products/industrial-automation/plc-hmi-communication/lineup/programmable-logic-controllers-interface-terminal/series/238) | [Panasonic Mewtocol Ethernet (Gen1)](docId\:Rr3ILluV6uWA6WR90kQ6e) |                                                             |
| [FP2](https://na.industrial.panasonic.com/products/industrial-automation/plc-hmi-communication/lineup/programmable-logic-controllers-interface-terminal/series/245)  | [Panasonic FP Ethernet (Gen1)](docId\:qUjhNLWO1NJP7cqkhz0O5)       | [Panasonic FP Serial (Gen1)](docId\:cVReSiPFoRrTEj4PIsTwO)  |
| [FP7](https://na.industrial.panasonic.com/products/industrial-automation/plc-hmi-communication/lineup/programmable-logic-controllers-interface-terminal/series/227)  | [Panasonic FP7 Ethernet (Gen1)](docId:5PyROqobqxi3piji6rNWu)       | [Panasonic FP Serial (Gen1)](docId\:cVReSiPFoRrTEj4PIsTwO)  |
| [FP-X](https://na.industrial.panasonic.com/products/industrial-automation/plc-hmi-communication/lineup/programmable-logic-controllers-interface-terminal/series/295) |                                                                    | [Panasonic FP Serial (Gen1)](docId\:cVReSiPFoRrTEj4PIsTwO)  |


[title] Omron-Hostlink (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Omron/

Review the following information for setting up and configuring the Omron-Hostlink (Gen1)&#x20;driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                           |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                                                                                                                                                                                                                                                     |
| **Validated devices/series** | C Series&#xA;[CJ1](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cj1/index.html)&#xA;[CJ2](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cj2/index.html)&#xA;[CS](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cs1/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed.&#x20;

   **Device**: Omron CJ2M CPU15

   **Communication I/F**: RS232. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nN_g2Hgjd0HF2aWIGBvwI_omron-hostlink.png" size="80" width="639" height="244" caption="Reference image of device" position="center" showCaption="true"}
2. Connect PC to the device with serial cable.
3. Launch CX Programmer V9.52 software.
4. Double-click **New PLC&#xA0;**&#x69;n the navigation panel, and then select the model type and network type for the device communication.
5. Click **PLC > Work Online**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Omron                             |
| **Driver**             | Omron-Hostlink (Gen1)             |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 7                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 2                                 |
| **Station ID**         | 0                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------- |
| CIO\_bit | bit             | DDDDDdd            | 0               | 3276715         | Channel I/O bit |
| CIO      | word, string    | DDDDD              | 0               | 32767           | Channel I/O     |
| W        | word, string    | DDDDD              | 0               | 32767           | Work Area       |
| A        | word, string    | DDDDD              | 0               | 32767           | Auxiliary Relay |
| H        | word, string    | DDDDD              | 0               | 32767           | Holding Area    |
| C        | word, string    | DDDDD              | 0               | 32767           | Counter         |
| T        | word, string    | DDDDD              | 0               | 32767           | Timer           |
| D        | word, string    | DDDDD              | 0               | 32767           | Data Memory     |
| EM0      | word, string    | DDDDD              | 0               | 32767           | Extended Memory |
| EM1      | word, string    | DDDDD              | 0               | 32767           | Extended Memory |
| EM2      | word, string    | DDDDD              | 0               | 32767           | Extended Memory |
| EM3      | word, string    | DDDDD              | 0               | 32767           | Extended Memory |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] LioN-X
[path] QuickStart Guide/Industrial Systems Connection Guide/Lumberg Automation/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Review the following information for setting up and configuring the LioN-X driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                                        |
| **Validated devices/series** | [Lumberg Automation LioN-X](https://www.belden.com/dfsmedia/f1e38517e0cd4caa8b1acb6619890f5e/12628-source/lion-x-product-bulletin-2021-03)<br />When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See *Step 3: Configure the List of Registers* below to learn more.  |

# Step 1: Set up and Configure the Driver

To find the network parameters of the driver, you have the option of using the [Device Discovery Tool](docId\:N9jtAdKuUXNU_YNhq87x4). Otherwise, set up the device for Ethernet access and collect the network parameters.&#x20;

**To use the device discovery tool:**

1. &#x20;Navigate to **DeviceHub&#x20;**> **Devices**.
2. Click the **Connect a Device** box.&#x20;
   The *Connect Device&#x20;*&#x64;ialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kWeqiHESLSAdRZjSpgRN0_connectdevice.png" size="80" width="1046" height="528" caption="Connect a Device box" position="center" showCaption="true"}
3. Click the **Device Type** drop-down list and select **Lumberg Automation**.
4. Click the **Driver Name** drop-down list, and select **LioN-X**.
5. Click **Device Discovery**.&#x20;

   The *Device Discovery* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Yyb3SRNTlXOjTnIkJc5U3_lionxdevicediscovery.png" size="80" width="1161" height="777" caption="Device Discovery option" position="center" showCaption="true"}
6. Select only one of the following fields to use for discovering the device. &#x20;
   - **Discovery Server URL (Servers and Endpoints Discovery)**: No prior setup/configuration is needed to use this field. Replace **localhost** with the appropriate IP address or domain name that will be used to search for the device. Ensure the correct port number is entered.&#x20;
   - **Server URL (Endpoints Discovery)**: You'll need to enable/configure the server to use this field. Replace **localhost** with the appropriate IP address or domain name that will be used to search for the device. Ensure the correct port number is entered.
7. Delete all text from the field not being used.&#x20;
8. Click **Start discovery**. When the search is complete, available servers with corresponding security policies will be listed.&#x20;
9. Click the appropriate server/security policy, and then click **Update form with discovery results**.
   The *Connect Device* dialog box appears with *Server URL*, *Security Policy*, and *Security Mode* pre-filled based on the discovery results.&#x20;
10. In the **Driver Mode** field, select either **Polling&#x20;**&#x6F;r **Subscription**.&#x20;
11. Move onto Step 2 and continue configuring the driver with the remaining parameters.&#x20;

# Step 2: Set up the Driver in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                                       | Value                                                                                                                                                                    |
| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Type**                                        | Lumberg Automation                                                                                                                                                       |
| **Driver**                                      | LioN-X                                                                                                                                                                   |
| **Driver Mode**                                 | Select Polling or Subscription                                                                                                                                           |
| **Server URL**                                  | opc.tcp\://localhost:48010                                                                                                                                               |
| **Security Policy**                             | Select one of the following:<br />* Aes128Sha256RsaOaep
* Aes256Sha256RsaPss
* Basic128Rsa15
* Basic256
* Basic256Sha256
* None                                          |
| **Security Mode**                               | Select None, Sign, or SignAndEncrypt                                                                                                                                     |
| **Session Certificate**                         | Auto-generated                                                                                                                                                           |
| **Session Private Key**                         | Auto-generated                                                                                                                                                           |
| **Auth Mode**                                   | Select Anonymous, Certificate, or Username                                                                                                                               |
| **Disable Error Certificate Host Name Invalid** | Select true or false<br />Flag used to disable the check if the hostname the client connected to matches one of the hostnames or IP addresses in the server certificate. |
| **Disable Application Uri Check**               | Select true or false<br />Flag used to disable the certificate ApplicationUri match check.                                                                               |
| **Default Root**                                | ns=0;i=84 <br />Start node to browse the server                                                                                                                          |

# Step 3: Configure the List of Registers

Browse for tags to add to this FreeTag device. See [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd) to learn more.&#x20;

Alternatively, when you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX), for **Name** map the LioN-X server tags to the client using this format, where the semicolon is significant: `ns=1;s=tagname`.

Example: `ns=2;s=Demo.Static.Scalar.Boolean`

The following value types are supported:&#x20;

- `bool`
- `sbyte`
- `byte`
- `int16`
- `uint16`
- `int32`
- `uint32`
- `int64`
- `uint64`
- `float32`
- `float64`
- `string`
- `BLOB`
- `bool[]`
- `sbyte[]`
- `byte[]`
- `int16[]`
- `uint16[]`
- `int32[]`
- `uint32[]`
- `int64[]`
- `uint64[]`
- `float32[]`
- `float64[]`
- `string[]`
- `BLOB[]`

## Tag Parameters

- **Name**: Enter a name based on this format: `ns=1;s=tagname`.
  - Example: `ns=2;s=Demo.Static.Scalar.Boolean`
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.&#x20;
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi A2SH Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

:::hint{type="info"}
**Note**: This driver will be deprecated in a future Litmus Edge release. We recommend using the Gen 2 [Mitsubishi A Series Serial](docId:2vVoJ8ys8gVfV7O6T8zNg).
:::

Review the following information for setting up and configuring the Mitsubishi A2SH Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                                                                     |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**                | Serial                                                                                                                               |
| **Validated devices/series**   | [A Series](https://www.mitsubishielectric.com/fa/products/cnt/plca/pmerit/concept/index.html) models:<br />* A3A
* A2N
* A1SH
* A2SH |
| **Replaced with Gen 2 driver** | [Mitsubishi A Series Serial](docId:2vVoJ8ys8gVfV7O6T8zNg)                                                                            |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed. ****
   **Device**: Mitsubishi A3A/A3N/A1SH/A2SH****
   **Communication I/F**: RS232 with a serial cable. Refer to the following figure.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uobvr4WMIsUjrpnAVF7bY_mitsubishi-a2sh-serial.png)
2. Launch GX developer v8.103 software and connect the device with a serial cable.
3. Click **Online > Read from PLC**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MLA3ZFZ2hfcagelDvbR-D_mitsubishi-a2n-serial-read.png" size="80" width="616" height="433" caption="Read from PLC option" position="center" showCaption="true"}
4. Select the PLC series.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eZnK_RaZ7LsAWZIm8BepA_mitsubishi-a2n-serial-series.png" size="60" width="302" height="106" caption="PLC series drop-down list " position="center" showCaption="true"}
5. Set up communications, and then click **Communication Test**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LQkmOe9yRKuJjTp0F2Ykc_mitsubishi-a2n-serial-communication.png" size="80" width="750" height="480" caption="Communication Test option " position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Mitsubishi                        |
| **Driver**             | Mitsubishi A2SH Serial (Gen1)     |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------- |
| X        | bit             | HHHH               | 0               | 65535           | Input Relay     |
| Y        | bit             | HHHH               | 0               | 65535           | Output Relay    |
| M        | bit             | DDDDD              | 0               | 65535           | Auxiliary Relay |
| B        | bit             | HHHH               | 0               | 65535           |                 |
| F        | bit             | DDDDD              | 0               | 65535           |                 |
| R        | word            | DDDDD              | 0               | 65535           |                 |
| W        | word            | HHHH               | 0               | 65535           |                 |
| D        | word            | DDDDD              | 0               | 65535           | Data Register   |
| CV       | word            | DDDDD              | 0               | 65535           | Counter Memory  |
| TV       | word            | DDDDD              | 0               | 65535           | Timer Memory    |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Modbus UDP
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 2 Drivers/

Review the following information for setting up and configuring the Modbus UDP driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                           |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                                                                                   |
| **When to use**              | UDP connection to a Modbus device                                                                                                          |
| **Replaces Gen 1 driver(s)** | [Modbus UDP (Gen1)](docId\:Jz6SLfJ9P6g2La9KStWMv) <br />Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd)   |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                 | Value                                   |
| ------------------------- | --------------------------------------- |
| **Type**                  | Modbus                                  |
| **Driver**                | Modbus UDP                              |
| **Network Address**       | The device IP address defined in Step 1 |
| **Network Port**          | 502                                     |
| **Station ID**            | 0                                       |
| **Zero-Based Addressing** | Select Enable or Disable                |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

:::hint{type="info"}
**Note**: The address format in this Gen 2 driver is different from the Gen 1 driver ([Modbus UDP (Gen1)](docId\:Jz6SLfJ9P6g2La9KStWMv)) for the same device. Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd).&#x20;
:::

| **Name** | **Value Types**                                | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| -------- | ---------------------------------------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D        | bit                                            | DDDDD              | 0               | 65535           | Discrete Input Contacts         |
| C        | bit                                            | DDDDD              | 0               | 65535           | Discrete Output Coils           |
| H        | uint16, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Output Holding Registers |
| I        | uint16, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Input Registers          |
| H\_bit   | bit                                            | DDDDDdd            | 0               | 6553515         | Analog Output Holding Registers |
| I\_bit   | bit                                            | DDDDDdd            | 0               | 6553515         | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Endianness&#x20;**(not available for all names): This option configures how the tag data will be formatted and whether bytes and/or words will be counted from the start (big-endian style) or end (little-endian style) of strings of data. Select one of the following options.&#x20;
  - **No Swap**: Data will be formatted in big-endian style (bytes and words counted from the start). For example: AB CD.&#x20;
  - **Swap Bytes**: Only bytes will be formatted in little-endian style (counted from the end). For example: BA DC.&#x20;
  - **Swap Words**: Only words will be formatted in little-endian style (counted from the end). For example: CD AB.&#x20;
  - **Swap Words & Bytes**: Both words and bytes will be formatted in little-endian style (counted from the end). For example: DC BA.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Industrial OT Server (formerly MQTT Server)
[path] QuickStart Guide/Industrial Systems Connection Guide/MQTT/

:::hint{type="info"}
**Notes**:&#x20;

- This driver is available for Litmus Edge version 3.5.2 and later.&#x20;
- As of Litmus Edge version 3.5.6, this driver is renamed to Industrial OT Server.&#x20;
:::

You can set up an MQTT Server through DeviceHub that supports MQTT generic and MQTT SSL v.5.&#x20;

# Authentication Options

You can configure the server with the following authentication options when connecting to clients.&#x20;

When configuring the server, can select to enable only **MQTT**, only **MQTT SSL**, or both **MQTT&#x20;**&#x61;nd **MQTT SSL**. You have the option of adding *User Credentials* or *Mutual TLS Authentication* to existing authentication configurations.&#x20;

Learn more about [Certificates](docId\:s0dXZeU8mTAywyQsYEDyj).

When considering authentication options, keep the following in mind:

- You can't use any certificates used for your Litmus Edge instance for server authentication.&#x20;
- The automatically generated self-signed certificates may not be compatible with third-party hostname verification.&#x20;
- If using your own CA Chain, the client connecting to the server needs to be configured to trust the server or one of the server's CAs (certificate authorities).&#x20;
- If the certificate files have no hostname defined, then you may need to disable hostname checking in the client to connect successfully to the server.&#x20;

## User Credentials

If you enable the **User Password** option, the client will have to provide a username and password to connect to the server.&#x20;

## No TLS Authentication

When you enable the **Enable MQTT** option, no authentication will be used to connect the client to the server.&#x20;

## TLS Authentication Using Server Self-Signed Certificates

When you enable the **Enable MQTT SSL** option, you have the option of using the automatically generated self-signed certificates for the server. Copy and paste the self-signed Server Certificate and Server Private Key in the appropriate certificate files when configuring the client.&#x20;

You can also use your own self-signed certificates by replacing the automatically generated ones. If you'll be using your own certificates, you'll need to replace the Server Certificate and Server Private Key in the server configuration.&#x20;

## TLS Authentication Using CA Chains

When you enable the **Enable MQTT SSL** option, you can replace the automatically generated self-signed certificates with your own CA Chain. You will need to replace the self-signed Server Certificate and Server Private Key in the server configuration by copying and pasting or uploading the files. In the **Server Certificate** field, paste or upload the appropriate server "leaf" certificate associated with the CA Chain.&#x20;

## Mutual TLS Authentication

When you enable the Enable MQTT SSL option, you can also enable the **Require Client Certificate&#x20;**&#x6F;ption. This provides two-way authentication between the server and client. You will need to paste or upload the client certificate in the **Certificate Authority** field for the server.

# Step 1: Add MQTT Server to DeviceHub

**To add the MQTT Server to Device Hub:**

1. In Litmus Edge, navigate to **DeviceHub**.&#x20;
2. Click the **Connect a Device** box.&#x20;

   The *Connect Device* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4WzJkTieEFwi1rirnct9O_adddevice.png" size="80" width="1046" height="528" caption="Conect a device icon" position="center" showCaption="true"}
3. For *Driver Type*, select **MQTT**. Then, for *Driver Name*, select **MQTT Server**.&#x20;
4. Enter a name for the server. Optionally, add a description.&#x20;

Configure the server with the following options.&#x20;

## User Password

You can enable a required username and password for the client to connect to the server.

If you enable this option, update the default values as needed for **User&#x20;**&#x61;nd **Password**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/otBqkFAemo0q5HwXHp83u_image.png" size="80" width="1152" height="760" caption="User and Password fields" position="center" showCaption="true"}

## MQTT

The MQTT generic option connects the server and client with no authentication.&#x20;

If you enable this option, configure the port and interface.&#x20;

**MQTT Port**: The default port is 1883.&#x20;

**MQTT Interface**: The default value 0.0.0.0 means the server listens to all interfaces. If needed, update to a specific network interface.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8zv8a-Uiw9gzPSK_AlK1S_image.png" size="80" width="1161" height="769" position="center" showCaption="false"}

## MQTT SSL

The MQTT SSL option allows the client to connect to the server by providing the client configuration with certificates. Learn more about [Certificates](docId\:s0dXZeU8mTAywyQsYEDyj).

If you enable MQTT SSL, configure the following parameters. Please review the *Authentication Options* section.&#x20;

**MQTT SSL Port**: The default port value is 8883.&#x20;

**MQTT SSL Interface**: The default value 0.0.0.0 means the server listens to all interfaces. If needed, update to a specific network interface.

**Server Certificate**: A self-signed certificate is automatically generated. When configuring the MQTT client, copy and paste this value in the certificate file. If you are using your own certificate, replace the self-signed certificate by copying and pasting or uploading the certificate file. &#x20;

**Server Private Key**: A self-signed private key is automatically generated. When configuring the MQTT client, copy and paste this value in the private key file. If you are using your own certificate, replace the self-signed certificate by copying and pasting or uploading the certificate file. &#x20;

**Require Client Certificate**: If enabled, you will need to provide the client certificate that will be used by the server to authenticate the client. Paste or upload the certificate in the **Certificate Authority** field &#x20;

**Advanced**: If you select **Show**, use the **Min TLS Version** drop-down list to select the minimum version of TLS to use for authentication.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nT71NlLhA_dlySC6xUpTC_image.png" size="80" width="1150" height="756" caption="MQTT SSL fields" position="center" showCaption="true"}

## Additional Options

See the [Define Optional Parameters](docId:3eyAfPpweuVmBLCEy17sq) section to learn more about additional options.&#x20;

When done configuring the device, click **Add Device**.&#x20;

:::hint{type="info"}
**Note**: The server will show a disconnected status until an MQTT client connects to the server.&#x20;
:::

# Step 2: Connect MQTT Client

Once you set up the server in DeviceHub, you can connect an MQTT Client to the server.&#x20;

:::hint{type="info"}
**Note**: You can't connect the DeviceHub [MQTT Client](docId\:Fcy3vjuZ_L8iqBj0_siX4) to the MQTT Server if they are using the same Litmus Edge instance. This includes connecting through the Flows Manager or through an Integration connector. If they are using different Litmus Edge instances, they can connect. &#x20;
:::

When connecting the client, configure the following:

**Host**: Enter the IP address or domain name of your Litmus Edge instance. For example, if your Litmus Edge instance IP address is https\://192.168.0.26, ente&#x72;**&#x20;mqtt://192.168.0.26**.&#x20;

**Port**: If connecting to MQTT generic, enter port 1883 or the port specific to your configuration. If connecting to MQTT SSL, enter port 8883 or the port specific to your configuration.&#x20;

**Username**: If *User Password* is enabled, enter the **User&#x20;**&#x76;alue.&#x20;

**Password**: If *User Password* is enabled, enter the **Password&#x20;**&#x76;alue.&#x20;

**SSL Authentication**: If MQTT SSL is enabled, copy the *Server Certificate* and *Server Private Key* values from the MQTT Server configuration and paste them into the appropriate certificate files. Then, upload the files as needed in the client configuration.&#x20;

# Step 3: Add Tags

Once the client has published topics, you can add tags to the server based on the published topics. Follow the steps to [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd) to the server. The tags will be used as topics to receive data from MQTT clients.&#x20;

[title] Gen 1 Drivers
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/


[title] MQTT Client
[path] QuickStart Guide/Industrial Systems Connection Guide/MQTT/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

You can set up an MQTT Client through DeviceHub.&#x20;

:::hint{type="info"}
**Note**: You can't connect the MQTT Client to the DeviceHub [Industrial OT Server (formerly MQTT Server)](docId\:Zc7YcU8frONKFGnj2FcBn) if they are using the same Litmus Edge instance. This includes connecting through the Flows Manager or through an Integration connector. If they are using different Litmus Edge instances, they can connect. &#x20;
:::

# Step 1: Add MQTT Client to DeviceHub

**To add the MQTT Client to Device Hub:**

1. In Litmus Edge, navigate to **DeviceHub**.&#x20;
2. Click the **Connect a Device** box.&#x20;

   The *Connect Device* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4WzJkTieEFwi1rirnct9O_adddevice.png" size="80" width="1046" height="528" caption="Connect a device icon" position="center" showCaption="true"}
3. For *Driver Type*, select **MQTT**. Then, for *Driver Name*, select **MQTT Client**.&#x20;
4. Enter a name for the client. Optionally, add a description.&#x20;
5. For **Broker Address**, enter the broker IP address or host name.&#x20;
6. For **Port**, enter the port of the broker.&#x20;

Configure the client with the following options.&#x20;

## Client Authentication

Select one of the following client authentication methods:

- Anonymous
- Certificate (only for SSL mode)
- Username/Password
- Username/Password & Certificate

Update the default username and password values as needed.&#x20;

## Security Mode

If you enable security mode, upload or paste the certificate in the **Certificate Authority** field.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vQFZoT5mfvqp7P3QusWGE_image.png" size="80" width="1155" height="761" caption="Certificate Authority field" position="center" showCaption="true"}

## Will Enabled (Last Will and Testament)

If you enable a last will and testament, (LWT) configure the following.

- **Will Topic**: Enter the topic for the last will and testament.&#x20;
- **Will Payload**: Enter the payload in string format.&#x20;
- **Will Qos**: Select one of the following message delivery options.
  - 0 - At most once (fire and forget)
  - 1 - At least once (acknowledged delivery)
  - 2 - Exactly once (assured delivery)
- **Will Retained**: Select Enable or Disable.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uxnE4QAWCgVt9B-CgukDK_image.png" size="80" width="1161" height="769" position="center" showCaption="false"}

## Advanced

If you show these options, configure the following as needed.&#x20;

- **Client ID**: Enter the MQTT Client ID. The default client ID is the DeviceHub device name.&#x20;
- **Persistent Session**: Select Enable or Disable.&#x20;
- **Certificate Verification**: Select Enable or Disable.&#x20;
- **Protocol Version**: Select the MQTT protocol version: v3 (3.1), v4 (3.1.1), v5 (5.0).&#x20;
- **Keep Alive Period**: Configure the keep-alive period in seconds.&#x20;
- **Write Timeout**: Configure the write timeout in seconds.&#x20;
- **Connect Timeout**: Configure the connect timeout in seconds.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yobgzdcGSlKVNt_fJVFdW_image.png" size="80" width="1152" height="761" caption="Advanced fields" position="center" showCaption="true"}

## Additional Options

See the [Define Optional Parameters](docId:3eyAfPpweuVmBLCEy17sq) section to learn more about additional options.&#x20;

When done configuring the device, click **Add Device**.&#x20;

# Step 2: Add Tags

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device refer to the following tag parameters.

## Tag Parameters

- **Name**: Enter the case-sensitive topic name in the server without any wildcard symbols. The name must be unique for the driver. &#x20;
- **Value Type**: Select string.&#x20;
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Qos**: Select a Quality of Service.&#x20;
  - 0 - At most once (fire and forget)
  - 1 - At least once (acknowledged delivery)
  - 2 - Exactly once (assured delivery)
- **Retain**: Select a message policy.&#x20;
  - Don't Retain
  - Retain last Publish
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::

# Step 3: Connect to MQTT Server

Once the client is connected in Litmus Edge with tags, you can connect it to an MQTT server.&#x20;

:::hint{type="info"}
**Note**: You can't connect the MQTT Client to the DeviceHub [Industrial OT Server (formerly MQTT Server)](docId\:Zc7YcU8frONKFGnj2FcBn) if they are using the same Litmus Edge instance. If they are using different Litmus Edge instances, they can connect. &#x20;
:::


[title] OPC UA Client Advanced
[path] QuickStart Guide/Industrial Systems Connection Guide/OPC UA/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

Review the following information for setting up and configuring the OPC UA Client Advanced.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                      |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                              |
| **Functionality&#x20;**      | - Recommended driver to use to connect to an OPC UA Server.
- Has subscribe and polling modes.                                                                                        |
| **Replaces Gen 1 driver(s)** | OPC UA Client&#xA;OPC UA Client Poll&#xA;OPC UA Client (Gen1)&#xA;OPC UA Client Subscribe (Gen1)&#xA;Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd) |

# Step 1: Set up and Configure the Driver

To find the network parameters of the driver, you have the option of using the [Device Discovery Tool](docId\:N9jtAdKuUXNU_YNhq87x4). Otherwise, set up the device for Ethernet access and collect the network parameters.&#x20;

**To use the device discovery tool:**

1. &#x20;Navigate to **DeviceHub&#x20;**> **Devices**.
2. Click the **Connect a Device** box.&#x20;
   The *Connect Device&#x20;*&#x64;ialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kWeqiHESLSAdRZjSpgRN0_connectdevice.png" size="80" width="1046" height="528" caption="Connect a Device box" position="center" showCaption="true"}
3. Click the **Device Type** drop-down list and select **OPCUA**.
4. Click the **Driver Name** drop-down list, and select **OPC UA Client Advanced**.
5. Click **Device Discovery**.&#x20;
   Th&#x65;*&#x20;Device Discovery* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jYG0hPnkovERIKbN1NR2-_connectdeviceopcua.png" size="80" width="1165" height="739" caption="Device Discovery option" position="center" showCaption="true"}
6. Select only one of the following fields to use for discovering the device.&#x20;
   - **Discovery Server URL (Servers and Endpoints Discovery)**: No prior setup/configuration is needed to use this field. Replace **localhost** with the appropriate IP address or domain name that will be used to search for the device. Ensure the correct port number is entered.&#x20;
   - **Server URL (Endpoints Discovery)**: You'll need to enable/configure the server to use this field. Replace **localhost** with the appropriate IP address or domain name that will be used to search for the device. Ensure the correct port number is entered.
7. Delete all text from the field not being used.&#x20;
8. Click **Start discovery**. When the search is complete, available servers with corresponding security policies will be listed.&#x20;
9. Click the appropriate server/security policy, and then click **Update form with discovery results**.
   The *Connect Device* dialog box appears with *Server URL*, *Security Policy*, and *Security Mode* pre-filled based on the discovery results.&#x20;
10. In the **Driver Mode** field, select either **Polling&#x20;**&#x6F;r **Subscription**.&#x20;
11. Move onto Step 2 and continue configuring the driver with the remaining parameters.&#x20;

# Step 2: Set up the Driver in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                                       | Value                                     |
| ----------------------------------------------- | ----------------------------------------- |
| **Type**                                        | OPC UA                                    |
| **Driver**                                      | OPC UA Client Advanced                    |
| **Driver Mode**                                 | Polling or Subscription                   |
| **Server URL**                                  | The server endpoint URL defined in Step 1 |
| **Security Policy**                             | The policy you defined in Step 1          |
| **Security Mode**                               | The mode you defined in Step 1            |
| **Certificate**                                 | Auto-generated                            |
| **Private Key**                                 | Auto-generated                            |
| **Auth Mode**                                   | Anonymous, Certificate, or UserName       |
| **Disable Error Certificate Host Name Invalid** | false or true                             |
| **Default Root**                                | Start node to browse the server           |

# Step 3: Configure the List of Registers

Browse for tags to add to this FreeTag device. See [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd) to learn more.&#x20;

Alternatively, when you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX), for **Name** map the OPC server tags to the client using this format: `ns=1;s=tagname`.

Example: `ns=2;s=Demo.Static.Scalar.Boolean`

The following value types are supported:&#x20;

- `bool`
- `sbyte`
- `byte`
- `int16`
- `uint16`
- `int32`
- `uint32`
- `int64`
- `uint64`
- `float32`
- `float64`
- `string`
- `BLOB`
- `bool[]`
- `sbyte[]`
- `byte[]`
- `int16[]`
- `uint16[]`
- `int32[]`
- `uint32[]`
- `int64[]`
- `uint64[]`
- `float32[]`
- `float64[]`
- `string[]`
- `BLOB[]`

Refer to the following tag parameters.&#x20;

## Tag Parameters

- **Name**: Enter a name based on this format: `ns=1;s=tagname`.
  - Example: `ns=2;s=Demo.Static.Scalar.Boolean`
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.&#x20;
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] MTConnect
[path] QuickStart Guide/Industrial Systems Connection Guide/

For devices that support the [MTConnect](https://www.mtconnect.org/) standard, you can use the [MTConnect Ethernet (Gen1)](docId\:skokThYT9kNa6yJZQeWrh) DeviceHub driver.

[title] Keyence
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | **Compatible Ethernet DeviceHub Drivers**                    | **Compatible Serial DeviceHub Drivers**                    |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------ | ---------------------------------------------------------- |
| - Keyence KV Series 16-80
- Visual KV Series                                                                                                                                                                                                                                                                                                                                                                                                                                         |                                                              | [Keyence KV10 Serial (Gen1)](docId\:B_vDL5eAGXabG0esxiF78) |
| * [Keyence KV-L20V](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-8000/models/kv-l20v/)
* [Keyence KV-700](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-5000_3000/models/kv-700/)
* [Keyence KV-1000](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-5000_3000/models/kv-1000/)
* [Keyence KV-3000](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-5000_3000/models/kv-3000/) |                                                              | [Keyence Serial (Gen1)](docId\:fRtngFFjI0mzScHtLKdTh)      |
| - [Keyence KV-5000](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-5000_3000/models/kv-5000/)
- [Keyence KV-7500](https://www.keyence.com.sg/products/controls/plc-building-block-type/kv-7000/models/kv-7500/)
- [Keyence KV-8000](https://www.keyence.com/products/controls/plc-building-block-type/kv-8000/)                                                                                                                                             | [Keyence Nano Ethernet (Gen1)](docId\:kjMYCO9pQdUsR_HjQes2Y) | [Keyence Serial (Gen1)](docId\:fRtngFFjI0mzScHtLKdTh)      |


[title] Mitsubishi
[path] QuickStart Guide/Industrial Systems Connection Guide/

- Refer to the following table of compatible DeviceHub drivers for your PLC series.&#x20;
- Refer to th&#x65;*&#x20;Recommended Driver&#x20;*&#x63;olumn to review drivers that we recommend to use for best performance.&#x20;

| **PLC Series**                                                                                                                              | **Compatible Ethernet DeviceHub Drivers**                                                                                                                                                                                                             | **Compatible Serial DeviceHub Drivers**                                                                                                                                                                  | **Recommended Driver**                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| These [A Series](https://www.mitsubishielectric.com/fa/products/cnt/plca/pmerit/concept/index.html) models:<br />- A1S
- A2N                |                                                                                                                                                                                                                                                       | * [Mitsubishi A Series Serial](docId:2vVoJ8ys8gVfV7O6T8zNg)
* [Mitsubishi A2N Serial (Gen1)](docId:_dj7I56PSK6TSqzHS9-8D)                                                                                | [Mitsubishi A Series Serial](docId:2vVoJ8ys8gVfV7O6T8zNg)                             |
| These [A Series](https://www.mitsubishielectric.com/fa/products/cnt/plca/pmerit/concept/index.html) models:<br />* A2A
* A2U
* A2AS
* A2USH |                                                                                                                                                                                                                                                       | - [Mitsubishi A Series Serial](docId:2vVoJ8ys8gVfV7O6T8zNg)
- [Mitsubishi A2USH Serial (Gen1)](docId\:r7lUi53Cq8TcF5Wn05hSc)                                                                             | [Mitsubishi A Series Serial](docId:2vVoJ8ys8gVfV7O6T8zNg)                             |
| These [A Series](https://www.mitsubishielectric.com/fa/products/cnt/plca/pmerit/concept/index.html) models:<br />- A3A
- A2N
- A1SH
- A2SH  |                                                                                                                                                                                                                                                       | * [Mitsubishi A Series Serial](docId:2vVoJ8ys8gVfV7O6T8zNg)
* [Mitsubishi A2SH Serial (Gen1)](docId\:rGNHxyFgEdx-uVzpvHEQ-)                                                                              | [Mitsubishi A Series Serial](docId:2vVoJ8ys8gVfV7O6T8zNg)                             |
| [MELSEC iQ-F](https://www.mitsubishielectric.com/fa/products/cnt/plcf/items/index.html)                                                     | - [Mitsubishi iQ-F Ethernet](docId:0IM7wYTPM6nBuJzyomg6U)
- [Mitsubishi FX5U-Ethernet ASCII (Gen1)](docId:7rCY1iGmmtCdt_5hDrVdK)
- [Mitsubishi FX5U-Ethernet-Binary (Gen1)](docId\:ROlBOIphFZ5cR9WDdlBzB)                                             | [Mitsubishi FX5U Serial (Gen1)](docId:_AwpnlGdRXYUJdMmrrYDe)                                                                                                                                             | For ethernet connection:<br />[Mitsubishi iQ-F Ethernet](docId:0IM7wYTPM6nBuJzyomg6U) |
| [MELSEC iQ-R](https://www.mitsubishielectric.com/fa/products/cnt/plcr/items/index.html)                                                     | * [Mitsubishi iQ-F Ethernet](docId:0IM7wYTPM6nBuJzyomg6U)
* [Mitsubishi R04-Ethernet-Binary (Gen1)](docId\:IhLShd66K4K1szwpeZQCw)
* [Mitsubishi SLMP (Gen1)](docId\:eAUwDZfpDRS1KG4xGpYEx)                                                            |                                                                                                                                                                                                          | [Mitsubishi iQ-F Ethernet](docId:0IM7wYTPM6nBuJzyomg6U)                               |
| [MELSEC-F](https://www.mitsubishielectric.com/fa/products/cnt/plc_fx/items/index.html)                                                      | - [Mitsubishi Q/L Ethernet](docId\:h1mVsD1jQaa1ON79jn_UQ)
- [Mitsubishi FX3G ASCII Ethernet (Gen1)](docId\:OjDCAgnWRWCJ5fs5p_48F)
- [Mitsubishi FX3G Binary Ethernet (Gen1)](docId\:jLJNphXYwmZtguJtXe2a3)                                            | * [Mitsubishi FX2N Serial (Gen1)](docId\:gOg6z4Wo0nnspMHf79lnD)
* [Mitsubishi FX2N-10GM/20GM Serial (Gen1)](docId\:RNZG5Qvu6rqqWmMxR3ZRW)
* [Mitsubishi FX3U Serial (Gen1)](docId:0fFJiZBt5Bo6eDiV9V_Yj) | For ethernet connection:<br />[Mitsubishi Q/L Ethernet](docId\:h1mVsD1jQaa1ON79jn_UQ) |
| [MELSEC-L](https://www.mitsubishielectric.com/fa/products/cnt/plcl/items/index.html)                                                        | - [Mitsubishi Q/L Ethernet](docId\:h1mVsD1jQaa1ON79jn_UQ)
- [Mitsubishi Melsec-L-ASCII (Gen1)](docId\:D6CMjoDn_9atTmtYa-4Ly)
- [Mitsubishi Melsec-L-Binary (Gen1)](docId\:JF-76V6CalQM8ubs7gKK9)                                                      |                                                                                                                                                                                                          | [Mitsubishi Q/L Ethernet](docId\:h1mVsD1jQaa1ON79jn_UQ)                               |
| [MELSEC-Q](https://www.mitsubishielectric.com/fa/products/cnt/plcq/items/index.html)                                                        | * [Mitsubishi Q/L Ethernet](docId\:h1mVsD1jQaa1ON79jn_UQ)
* [Mitsubishi QJ71E71](docId\:fMNTPyWvoIqVeQOidccC2)
* [Mitsubishi Melsec-Q-ASCII (Gen1)](docId\:pRhymN02dmUgS14j02IJs)
* [Mitsubishi Melsec-Q-Binary (Gen1)](docId\:Ngukz7gU_Hlc4_MIY30Vc) | - [Mitsubishi Q00-01H Serial (Gen1)](docId\:QjRVs0TvYUkRtmLtGEHKR)
- [Mitsubishi Q02 02H Serial (Gen1)](docId\:DbESZgN_o0t4qj8UKXLkO)
- [Mitsubishi Q06 Serial (Gen1)](docId:2MyDMxLz29uR_RTRBgHq_)      | For ethernet connection:<br />[Mitsubishi Q/L Ethernet](docId\:h1mVsD1jQaa1ON79jn_UQ) |


[title] Mitsubishi FX2N Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi FX2N Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                       |
| ---------------------------- | -------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                 |
| **Validated devices/series** | [MELSEC-F](https://www.mitsubishielectric.com/fa/products/cnt/plc_fx/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Mitsubishi                        |
| **Driver**             | Mitsubishi FX2N Serial (Gen1)     |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description**         |
| -------- | -------------- | ------------------ | --------------- | --------------- | ----------------------- |
| X        | bit            | OOO                | 0               | 255             | Input Relay             |
| Y        | bit            | OOO                | 0               | 255             | Output Relay            |
| M        | bit            | DDDD               | 0               | 7999            | Auxiliary Relay         |
| T        | bit            | DDD                | 0               | 511             | Timer Relay             |
| C        | bit            | DDD                | 0               | 255             | Counter Relay           |
| SM       | bit            | DDDD               | 8000            | 8511            | Special Auxiliary Relay |
| S        | bit            | DDDD               | 0               | 4095            | State Relay (5)         |
| D\_Bit   | bit            | DDDDdd             | 0               | 799915          | Data Register Bit (D)   |
| SD       | word           | DDDD               | 8000            | 8511            | Special Data Register   |
| CV2      | word           | DDD                | 200             | 255             | Counter Memory (D Word) |
| D        | word           | DDDD               | 0               | 7999            | Data Register           |
| CV       | word           | DDD                | 0               | 199             | Counter Memory          |
| TV       | word           | DDD                | 0               | 511             | Timer Memory            |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Modbus TCP (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 1 Drivers/

:::hint{type="info"}
**Note**: This driver will be deprecated in a future release. We recommend using the Gen 2 [Modbus TCP](docId\:NbER6LlRZwtlKO50-hv3V).
:::

Review the following information for setting up and configuring the Modbus TCP (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                           |
| ------------------------------ | ------------------------------------------ |
| **Driver type**                | Ethernet                                   |
| **When to use&#x20;**          | TCP connection to a Modbus device          |
| **Replaced with Gen 2 driver** | [Modbus TCP](docId\:NbER6LlRZwtlKO50-hv3V) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: Modbus TCP X20CP1381

   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/02TQLmNOFsOQkmW-cVoN7_modbus-tcp.png" size="80" width="562" height="378" caption="Reference image of device" position="center" showCaption="true"}
2. Launch Automation Studio v4.6.2 software, create a new project, and then select **identify hardware configuration online**.
3. Click **Identify Hardware&#xA0;**&#x74;o browse the device automatically.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Modbus                                   |
| **Driver**          | Modbus TCP (Gen1)                        |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 502                                      |
| **Station ID**      | 0                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**  | **Value Type**             | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| --------- | -------------------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D         | bit                        | DDDD               | 1               | 9999            | Discrete Input Contacts         |
| C         | bit                        | DDDD               | 1               | 9999            | Discrete Output Coils           |
| H\_Bit    | bit                        | DDDDdd             | 100             | 999915          | Analog Output Holding Registers |
| I\_Bit    | bit                        | DDDDdd             | 100             | 999915          | Analog Input Registers          |
| H         | int, uint                  | DDDD               | 1               | 9999            | Analog Output Holding Registers |
| I         | int, uint                  | DDDD               | 1               | 9999            | Analog Input Registers          |
| H\_Ulong  | ulong, ulong(big-endian)   | DDDD               | 1               | 9998            | Analog Output Holding Registers |
| I\_Ulong  | ulong, ulong(big-endian)   | DDDD               | 1               | 9998            | Analog Input Registers          |
| H\_Float  | float, float(big-endian)   | DDDD               | 1               | 9998            | Analog Output Holding Registers |
| I\_Float  | float, float(big-endian)   | DDDD               | 1               | 9998            | Analog Input Registers          |
| H\_Double | double, double(big-endian) | DDDD               | 1               | 9996            | Analog Output Holding Registers |
| I\_Double | double, double(big-endian) | DDDD               | 1               | 9996            | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Omron Fins Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Omron/

Review the following information for setting up and configuring the Omron Fins Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                                                                                                                                                                                                                                                                              |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**                | Ethernet                                                                                                                                                                                                                                                                                                                                      |
| **Validated devices/series**   | [CJ1](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cj1/index.html)&#xA;[CJ2](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cj2/index.html)&#xA;[CS](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cs1/index.html) |
| **Replaced with Gen 2 driver** | [Omron Fins Ethernet](docId\:xrEVl-B0944s7c8rn1G1A)                                                                                                                                                                                                                                                                                           |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed.&#x20;

   **Device**: Omron CJ2M CPU15

   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/c2ZbyGeMDiWLkzNeB5gLB_omron-fins-ethernet.png" size="80" width="679" height="255" caption="Reference image of device" position="center" showCaption="true"}
2. Connect the PC to the device using USB cable.
3. Launch CX Programmer and create a project.
4. Click **PLC > Work Online**.
5. Open IO Table and Unit Setting and create IO table based on hardware allocation.
6. Set up communication Parameters for communication module.
7. Transfer to PLC.
8. Log in using Ethernet, click **Offline**, and then click the device name.
9. Select Ethernet as the network type, click **Settings**, set up the IP and Port number, and then click **PLC > Work Online**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | Omron                                        |
| **Driver**          | Omron Fins Ethernet (Gen1)                   |
| **Network Address** | The device address you defined during Step 1 |
| **Port**            | 9600                                         |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------- |
| CIO\_bit | bit             | DDDDDdd            | 0               | 3276715         | Channel I/O bit |
| CIO      | word, string    | DDDDD              | 0               | 32767           | Channel I/O     |
| W        | word, string    | DDDDD              | 0               | 32767           | Work Area       |
| A        | word, string    | DDDDD              | 0               | 32767           | Auxiliary Relay |
| H        | word, string    | DDDDD              | 0               | 32767           | Holding Area    |
| C        | word, string    | DDDDD              | 0               | 32767           | Counter         |
| T        | word, string    | DDDDD              | 0               | 32767           | Timer           |
| D        | word, string    | DDDDD              | 0               | 32767           | Data Memory     |
| EM0      | word, string    | DDDDD              | 0               | 32767           | Extended Memory |
| EM1      | word, string    | DDDDD              | 0               | 32767           | Extended Memory |
| EM2      | word, string    | DDDDD              | 0               | 32767           | Extended Memory |
| EM3      | word, string    | DDDDD              | 0               | 32767           | Extended Memory |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::




[title] OPC UA Client
[path] QuickStart Guide/Industrial Systems Connection Guide/OPC UA/

:::hint{type="info"}
**Note**: This driver will be deprecated in a future Litmus Edge release. We recommend using [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR).
:::

Review the following information for setting up and configuring the OPC UA Client.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                                                                                                                                                                           |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**                | Ethernet                                                                                                                                                                                                                                   |
| **Functionality&#x20;**        | - Used to subscribe data from OPC UA servers.
- Only sends a message to the broker if the value changes at the server level.
- Subscription interval is defined at the driver level and does not have a polling interval at the tag level. |
| **Replaced with Gen 2 driver** | [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR)                                                                                                                                                                                     |

:::hint{type="info"}
**Note**: The OPC UA client does not connect to the server with the Basic256Sha256-SE security policy.
:::

# Supported Servers

## OPC UA Client

- It provides better performance compared to other OPC UA Clients.
- OPC UA Client with new design supports both poll and subscription mode.

# Set up the Driver in DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                 |
| ------------------- | --------------------- |
| **Type**            | OPC UA                |
| **Driver**          | OPC UA Client         |
| **Network Address** | The device IP address |
| **Network Port**    | 4840                  |
| **Certificate**     | Auto-generated        |
| **Private Key**     | Auto-generated        |

# Configure the List of Registers

Browse for tags to add to this FreeTag device. See [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd) to learn more.&#x20;

Alternatively, when you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX), for **Name** map the OPC server tags to the client using this format: `ns=1;s=tagname`.

Example: `ns=2;s=Demo.Static.Scalar.Boolean`

The following value types are supported:&#x20;

- `int32`
- `bool`
- `sbyte`
- `byte`
- `int16`
- `uint16`
- `int32`
- `uint32`
- `int64`
- `uint64`
- `float32`
- `float64`
- `string`
- `dump`
- `desc`

Refer to the following tag parameters.&#x20;

## Tag Parameters

- **Name**: Enter a name based on this format: `ns=1;s=tagname`.
  - Example: `ns=2;s=Demo.Static.Scalar.Boolean`
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Tag Name**: Enter a name for the tag.&#x20;
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Keyence KV10 Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Keyence/

Review the following information for setting up and configuring the Keyence KV10 Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                             |
| ---------------------------- | -------------------------------------------- |
| **Driver type**              | Serial                                       |
| **Validated devices/series** | Keyence KV Series 16-80&#xA;Visual KV Series |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Keyence                           |
| **Driver**             | Keyence KV10 Serial (Gen1)        |
| **Communication Port** | Local Serial connection file path |
| **Baud Rate**          | 9600                              |
| **Data Bits**          | 8                                 |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**  | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description**       |
| --------- | -------------- | ------------------ | --------------- | --------------- | --------------------- |
| RLY       | bit            | DDDDD              | 0               | 65535           | Relay                 |
| DM\_Bit   | bit            | DDDDDdd            | 0               | 999915          | Data memory bit       |
| DM        | word           | DDDDD              | 0               | 9999            | Data memory           |
| TM        | word           | DDDD               | 0               | 9999            | Temporary data memory |
| T         | word           | DDDD               | 0               | 9999            | Timer                 |
| T\_Curr   | word           | DDDD               | 0               | 9999            | Timer current         |
| T\_Preset | word           | DDDD               | 0               | 9999            | Timer Preset          |
| C         | word           | DDDD               | 0               | 9999            | Counter               |
| C\_Curr   | word           | DDDDD              | 0               | 9999            | Counter current       |
| C\_Preset | word           | DDDDD              | 0               | 9999            | Counter Preset        |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi Q02 02H Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi Q02 02H Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                     |
| ---------------------------- | ------------------------------------------------------------------------------------ |
| **Driver type**              | Serial                                                                               |
| **Validated devices/series** | [MELSEC-Q](https://www.mitsubishielectric.com/fa/products/cnt/plcq/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed. ****
   **Device**: Mitsubishi Q02CPU****
   **Communication I/F**: RS232. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lPSCxGR3FS0adX0y1bQTM_mitsubishi-q02-02h-serial-reference.png" size="80" width="440" height="613" caption="Reference image of device" position="center" showCaption="true"}
2. Launch GX Works2 v1.560J software, click **Create a Project**, and then click **Connection 1&#xA0;**&#x69;n the navigation panel.
3. Set up communication parameters, and then click **Connection Test**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Mitsubishi                        |
| **Driver**             | Mitsubishi Q02-02H Serial (Gen1)  |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 115200                            |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description**               |
| -------- | -------------- | ------------------ | --------------- | --------------- | ----------------------------- |
| X        | bit            | DDDD               | 0               | 9999            | Input Relay                   |
| Y        | bit            | DDDD               | 0               | 9999            | Output Relay                  |
| M        | bit            | DDDDD              | 0               | 65535           | Internal Relay                |
| SM       | bit            | DDDD               | 0               | 2047            |                               |
| L        | bit            | DDDDD              | 0               | 32237           | Latch Relay                   |
| F        | bit            | DDDDD              | 0               | 32237           | Annunciator                   |
| V        | bit            | DDDDD              | 0               | 32237           | Edge Relay                    |
| B        | bit            | DDDDD              | 0               | 32237           | Link Relay                    |
| TS       | bit            | DDDDD              | 0               | 25471           | Timer Contact                 |
| TC       | bit            | DDDDD              | 0               | 25471           | Timer Coil                    |
| SS       | bit            | DDDDD              | 0               | 25471           | Retentive Timer Contact       |
| SC       | bit            | DDDDD              | 0               | 25471           | Retentive Timer Coil          |
| CS       | bit            | DDDDD              | 0               | 25471           | Counter Contact               |
| CC       | bit            | DDDDD              | 0               | 25471           | Counter Coil                  |
| SB       | bit            | DDDDD              | 0               | 32237           | Special Link Relay            |
| S        | bit            | DDDD               | 0               | 8191            | Step Relay                    |
| DX       | bit            | DDDD               | 0               | 8191            | Direct Input                  |
| DY       | bit            | DDDD               | 0               | 8191            | Direct Output                 |
| D        | word           | DDDD               | 0               | 9999            | Data Register                 |
| W        | word           | DDDD               | 0               | 8191            | Link Register                 |
| SW       | word           | DDDD               | 0               | 8191            | Special Link Register         |
| TN       | word           | DDDDD              | 0               | 25471           | Timer Current Value           |
| SN       | word           | DDDD               | 0               | 25471           | Retentive Timer Current Value |
| CN       | word           | DDDDD              | 0               | 25471           | Counter Current Value         |
| SD       | word           | DDDD               | 0               | 2047            |                               |
| R        | word           | DDDD               | 0               | 9999            | File Register                 |
| ZR       | word           | DDDDDD             | 0               | 999999          | File Register                 |
| Z        | word           | DD                 | 0               | 20              | Index Register                |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] HPE CAN Raw (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/HPE/

Review the following information for setting up and configuring the HPE CAN Raw (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items              |
| ---------------------------- | ----------------------------- |
| **Driver type**              | CAN                           |
| **Validated devices/series** | CAN Bus 2.0A&#xA;CAN Bus 2.0B |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the connection parameters for the device. These parameters will be used for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter         | Value                          |
| ----------------- | ------------------------------ |
| **Type**          | HPE                            |
| **Driver**        | HPE CAN Raw (Gen1)             |
| **Channel Count** | 1                              |
| **Interface**     | Local interface of the CAN Bus |
| **Bit Rate**      | 250K                           |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** |
| -------- | -------------- | ------------------ | --------------- | --------------- |
| R        | hex            | DDDDD              | 0               | 65535           |
| R        | decimal        | DDDDD              | 0               | 65535           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Channel**: Enter the channel of the module.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Omron Fins Ethernet
[path] QuickStart Guide/Industrial Systems Connection Guide/Omron/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Review the following information for setting up and configuring the Omron Fins Ethernet driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                              |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                                      |
| **Validated devices/series** | [CJ1](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cj1/index.html)&#xA;[CJ2](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cj2/index.html)&#xA;[CS](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cs1/index.html) |
| **Replaces Gen 1 driver(s)** | [Omron Fins Ethernet (Gen1)](docId:6uGrLpojzk4yk5pGp-JO4)                                                                                                                                                                                                                                                                                     |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | Omron                                        |
| **Driver**          | Omron Fins Ethernet                          |
| **Network Address** | The device address you defined during Step 1 |
| **Port**            | 9600                                         |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**    | **Value Types**                                                   | **Address Format** | **Min Address** | **Max Address** | **Description**      |
| ----------- | ----------------------------------------------------------------- | ------------------ | --------------- | --------------- | -------------------- |
| CIO\_bit    | bit                                                               | DDDDdd             | 0               | 614315          | Channel I/O          |
| CIO         | int, dint, lint, bcd, dbcd, lbcd, real, lreal, word, dword, lword | DDDD               | 0               | 6143            | Channel I/O          |
| CIO\_string | string                                                            | DDDD               | 0               | 6143            | Channel I/O          |
| W           | int, dint, lint, bcd, dbcd, lbcd, real, lreal, word, dword, lword | DDD                | 0               | 511             | Work Area            |
| W\_bit      | bit                                                               | DDDdd              | 0               | 51115           | Work Area            |
| W\_string   | string                                                            | DDD                | 0               | 511             | Work Area            |
| H           | int, dint, lint, bcd, dbcd, lbcd, real, lreal, word, dword, lword | DDD                | 0               | 511             | Holding Area         |
| H\_bit      | bit                                                               | DDDdd              | 0               | 51115           | Holding Area         |
| H\_string   | string                                                            | DDD                | 0               | 511             | Holding Area         |
| A\_bit      | bit                                                               | DDDdd              | 0               | 95915           | Auxiliary Relay      |
| A           | int, dint, lint, bcd, dbcd, lbcd, real, lreal, word, dword, lword | DDD                | 0               | 959             | Auxiliary Relay      |
| C           | flag, int, bcd, word                                              | DDDD               | 0               | 4095            | Counter              |
| T           | flag, int, bcd, word                                              | DDDD               | 0               | 4095            | Timer                |
| D           | int, dint, lint, bcd, dbcd, lbcd, real, lreal, word, dword, lword | DDDDD              | 0               | 32767           | Data Memory          |
| D\_bit      | bit                                                               | DDDDDdd            | 0               | 3276715         | Data Memory          |
| D\_string   | string                                                            | DDDDD              | 0               | 32767           | Data Memory          |
| EM0         | int, dint, lint, bcd, dbcd, lbcd, real, lreal, word, dword, lword | DDDDD              | 0               | 32767           | Extend Memory        |
| EM0\_bit    | bit                                                               | DDDDDdd            | 0               | 3276715         | Extend Memory        |
| EM0\_string | string                                                            | DDDDD              | 0               | 32767           | Extend Memory        |
| EM1         | int, dint, lint, bcd, dbcd, lbcd, real, lreal, word, dword, lword | DDDDD              | 0               | 32767           | Extend Memory        |
| EM1\_bit    | bit                                                               | DDDDDdd            | 0               | 3276715         | Extend Memory        |
| EM1\_string | string                                                            | DDDDD              | 0               | 32767           | Extend Memory        |
| EM2         | int, dint, lint, bcd, dbcd, lbcd, real, lreal, word, dword, lword | DDDDD              | 0               | 32767           | Extend Memory        |
| EM2\_bit    | bit                                                               | DDDDDdd            | 0               | 3276715         | Extend Memory        |
| EM2\_string | string                                                            | DDDDD              | 0               | 32767           | Extend Memory string |
| EM3         | int, dint, lint, bcd, dbcd, lbcd, real, lreal, word, dword, lword | DDDDD              | 0               | 32767           | Extend Memory        |
| EM3\_bit    | bit                                                               | DDDDDdd            | 0               | 3276715         | Extend Memory        |
| EM3\_string | string                                                            | DDDDD              | 0               | 32767           | Extend Memory string |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values.&#x20;
- **Length**: Available when you select the `string` value type. Enter the number of characters for tag values.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] OSI Agent
[path] QuickStart Guide/Industrial Systems Connection Guide/OSI/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Review the following information for setting up and configuring the OSI Agent driver.&#x20;

:::hint{type="warning"}
**Important**:&#x20;

- The DH Historian Agent can only have one OSI PI agent and one OSI PI server connection with one username/password configured for the OSI PI server.
- The username/password in the DeviceHub configuration is to access the DH Historian Agent, not the OSI PI server.
- If you would like to manage access to tags/data being sent through the OSI PI agent and server, you can set up multiple Litmus Edge connections through the NATS connector. See [Set Up Edge Cascading with the NATS Connector](docId\:p9zqIlAmmJcfPzzj5kJLO) to learn more. &#x20;
:::

# Set Up the OSI Agent

See [DH Historian Agent](docId\:YMPR6YQtY8t2-KoFYC35y) to review how to set up and configure the OSI Agent driver.&#x20;

# OSI Agent Driver Settings in Litmus Edge

If you review or edit the settings of the OSI Agent device, refer to the following parameters.&#x20;

| Parameter        | Value                                                                                                                                                                                            |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Type**         | OSI                                                                                                                                                                                              |
| **Driver**       | OSI Agent                                                                                                                                                                                        |
| **Network Port** | The port configured in the DH Historian Agent. The default value is 4777.                                                                                                                        |
| **Interface**    | You have the option of selecting the interface for accepting client connections. The default value is 0.0.0.0, which means using all network interfaces for accepting connections from clients.  |
| **User**         | The username configured in the DH Historian Agent.                                                                                                                                               |
| **Password**     | The password configured in the DH Historian Agent.                                                                                                                                               |

If you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) in Litmus Edge, select the **R** register name, and then refer to the following supported data types and tag parameters. &#x20;

## Supported Data Types

- `uint32`
- `uint64`
- `float64`
- `string`
- `byte[]`
- `float32[]`
- `bool`
- `byte`
- `float64[]`
- `string[]`
- `uint16`
- `int64`
- `uint16[]`
- `sbyte`
- `int16`
- `int16[]`
- `int32[]`
- `int64[]`
- `uint64[]`
- `float32`
- `bool[]`
- `uint32[]`
- `int32`
- `sbyte[]`

## Tag Parameters

- **Name**: Select **R**. &#x20;
- **Value Type**: Select a value type.&#x20;
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Panasonic FP Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Panasonic/

Review the following information for setting up and configuring the Panasonic FP Ethernet (Gen1)&#x20;driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                    |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                            |
| **Validated devices/series** | [FP2](https://na.industrial.panasonic.com/products/industrial-automation/plc-hmi-communication/lineup/programmable-logic-controllers-interface-terminal/series/245) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it as needed.&#x20;

   **Device**: Panasonic FP Ethernet FP2SH-60K

   **Communication I/**&#x46;: Ethernet. Refer to the following figure.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FT5_9hrzag3AGMidO9qZs_panasonic-fp-ethernet.png "Reference image of device")
2. Launch Control FPWIN Pro7 v7.2.3.0 software, and then click **Online > Communication parameters**.
3. Set up communication parameters, and then click **Connect**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | Panasonic                                    |
| **Driver**          | Panasonic FP Ethernet (Gen1)                 |
| **Network Address** | The device address you defined during Step 1 |
| ******Port******    | 8500                                         |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**            |
| -------- | --------------- | ------------------ | --------------- | --------------- | -------------------------- |
| X        | bit             | DDDDdd             | 0               | 999915          | Input bit                  |
| Y        | bit             | DDDDdd             | 0               | 999915          | Output bit                 |
| R        | bit             | DDDDdd             | 0               | 999915          | Internal Relay             |
| L        | bit             | DDDDdd             | 0               | 9999            | Link Relay                 |
| L\_Bit   | bit             | DDDDdd             | 0               | 999915          |                            |
| T        | bit             | DDDD               | 0               | 9999            | Timer                      |
| C        | bit             | DDDD               | 0               | 9999            | Counter                    |
| SV       | word            | DDDD               | 0               | 9999            | Timer/Counter Set Value    |
| EV       | word            | DDDDD              | 0               | 65535           | Timer/Counter Elapse Value |
| DT       | word            | DDDDD              | 0               | 262143          | Data Register              |
| LD       | word            | DDDD               | 0               | 8447            | Link Register              |
| WX       | word            | DDDD               | 0               | 9999            | Input                      |
| WY       | word            | DDDD               | 0               | 9999            | Output                     |
| WR       | word            | DDDD               | 0               | 9999            | Internal Relay             |
| WL       | word            | DDDD               | 0               | 9999            | Link Relay                 |
| FL       | word            | DDDDD              | 0               | 99999           | File Register              |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Koyo Direct Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Koyo/

Review the following information for setting up and configuring the Koyo Direct Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                                                                                                                                                                                                                          |
| **Validated devices/series** | Koyo DirectLogic Series &#xA;[Automation Direct DirectLogic PLC Series](https://www.automationdirect.com/adc/overview/catalog/programmable_controllers/directlogic_plcs_\(micro_to_small,_brick_-a-_modular\)?gclid=CjwKCAjwq-WgBhBMEiwAzKSH6CBiyKAdShGTwXSUtgzDLhYfK7y-0u1z0p6V5wzVcfCztV1oL9k03BoCJugQAvD_BwE#bodycontentppc) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: Koyo Direct Logic 06 D0-06DR

   **Communication I/F**: RS232. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/U8QXrm4b0H0_oI96O_Vmx_koyo-direct-serial.png" size="80" width="478" height="233" caption="Koyo Direct Serial reference" position="center" showCaption="true"}
2. Launch DirectSoft6 v6.1 software and click **Reset PLC**.
3. From the Links dialog box, click **Add**.
4. Click **Next**.&#x20;
5. Select the PLC family, and then click **Next**.
6. Select the protocol, and then click **Next**.
7. Click **Finish**.&#x20;
8. Select the link just created for serial communication.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BlmGbkIiFbo2iQ2kfqmWX_koyo-direct-serial-link.png" size="80" width="830" height="471" caption="Serial communication configuration" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Koyo                              |
| **Driver**             | Koyo Direct Serial (Gen1)         |
| **Communication Port** | Local Serial connection file path |
| **Baud Rate**          | 9600                              |
| **Data Bits**          | 8                                 |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station ID**         | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**              |
| -------- | --------------- | ------------------ | --------------- | --------------- | ---------------------------- |
| X        | bit             | Ddd                | 1               | 816             | Input Status (Read Only)     |
| Y        | bit             | Ddd                | 1               | 816             | Output Status                |
| C        | bit             | DDDDD              | 1               | 2000            | Control Bit                  |
| T        | bit             | DDDDD              | 1               | 500             | Timer Status                 |
| CT       | bit             | DDDD               | 1               | 250             | Counter Status               |
| SC       | bit             | DDD                | 1               | 1000            | System Control Bit           |
| DS       | word            | DDDD               | 1               | 4500            | Data Registers               |
| DD       | word            | DDDD               | 1               | 1000            | Data Registers (Double Word) |
| DH       | word            | DDD                | 1               | 500             | Data Registers               |
| DF       | word            | DDD                | 1               | 500             | Data Registers (Double Word) |
| XD       | word            | D                  | 0               | 8               | Input Status Registers       |
| YD       | word            | D                  | 0               | 8               | Output Status Registers      |
| TD       | word            | DDD                | 1               | 500             | Timer Current Values         |
| CTD      | word            | DDD                | 1               | 250             | Counter Current Values       |
| SD       | word            | DDDD               | 1               | 1000            | System Data Registers        |
| TXT      | word            | DDDD               | 1               | 1000            | Text Data Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi Melsec-L-Binary (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi Melsec-L-Binary (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                     |
| ------------------------------ | ------------------------------------------------------------------------------------ |
| **Driver type**                | Ethernet                                                                             |
| **Validated devices/series**   | [MELSEC-L](https://www.mitsubishielectric.com/fa/products/cnt/plcl/items/index.html) |
| **Replaced with Gen 2 driver** | [Mitsubishi Q/L Ethernet](docId\:h1mVsD1jQaa1ON79jn_UQ)                              |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC. See the steps below to view and edit the open ports on the PLC.
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed. ****
   **Device**: Mitsubishi Melsec L Binary L26CPU-PBT
   When creating a new project file in the software or reading from the PLC, the device model is **L02CPU-P**.
   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gRz60BXfAJV2QWrAGE0vE_mitsubishi-melsec-l-binaryreference.png" size="80" width="818" height="873" caption="Reference image of device" position="center" showCaption="true"}
2. Connect the device to your PC using a USB.
3. Launch GXWorks2 Software and click **Online > Read from PLC**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2ZhK2CZSv4E3ZsM4fFtaK_mitsubishi-melsec-l-binary-read.png" size="80" width="657" height="468" caption="Read from PLC option" position="center" showCaption="true"}
4. Select the PLC series.
5. Set up connection, and then click **Connection Test**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/47Klh3cO5AS_SOAe5ohtj_mitsubishi-melsec-l-binary-connection.png" size="80" width="666" height="481" caption="Connection test option" position="center" showCaption="true"}
6. From the Navigation panel, click **Parameter > PLC Parameter > Build in Ethernet Port Setting**, and set up the parameters.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CtnzGvEWogGGQSxaK_k_A_mitsubishi-melsec-l-binary-parameters.png" size="80" width="834" height="582" caption="Port setting parameters" position="center" showCaption="true"}
7. From the Navigation panel, click **Connection Destination > connection1**.
8. Click **Find CPU (Build-in Ethernet port) on Network**, then pick up the target device.
9. Click **Connection Test&#xA0;**&#x61;fter set up is complete.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BJ6YOw9Y4VGwap5pCpbBM_mitsubishi-melsec-l-binary-destination.png" size="80" width="1032" height="573" caption="Connection test option" position="center" showCaption="true"}
10. Power off and launch the device again to activate any setting changed in the device.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Mitsubishi                               |
| **Driver**          | Mitsubishi Melsec-L Binary (Gen1)        |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 5002                                     |
| **Station ID**      | 255                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**               |
| -------- | --------------- | ------------------ | --------------- | --------------- | ----------------------------- |
| X        | bit             | HHHH               | 0               | 65536           | Input Relay                   |
| Y        | bit             | HHHH               | 0               | 65536           | Output Relay                  |
| M        | bit             | DDDDD              | 0               | 65535           | Internal Relay                |
| SM       | bit             | DDDD               | 0               | 2047            | Special Relay                 |
| L        | bit             | DDDDD              | 0               | 32237           | Latch Relay                   |
| F        | bit             | DDDDD              | 0               | 32237           | Annunciator                   |
| V        | bit             | DDDDD              | 0               | 32237           | Edge Relay                    |
| B        | bit             | DDDDD              | 0               | 32237           | Link Relay                    |
| TS       | bit             | DDDDD              | 0               | 25471           | Timer Contact                 |
| TC       | bit             | DDDDD              | 0               | 25471           | Timer Coil                    |
| SS       | bit             | DDDDD              | 0               | 25471           | Retentive Timer Contact       |
| SC       | bit             | DDDDD              | 0               | 25471           | Retentive Timer Coil          |
| CS       | bit             | DDDDD              | 0               | 25471           | Counter Contact               |
| CC       | bit             | DDDDD              | 0               | 25471           | Counter Coil                  |
| SB       | bit             | DDDDD              | 0               | 32237           | Special Link Relay            |
| S        | bit             | DDDD               | 0               | 8191            | Step relay                    |
| DX       | bit             | DDDD               | 0               | 8191            | Direct Input                  |
| DY       | bit             | DDDD               | 0               | 8191            | Direct Output                 |
| D        | word            | DDDD               | 0               | 9999            | Data Register                 |
| W        | word            | DDDD               | 0               | 8191            | Link Register                 |
| TN       | word            | DDDDD              | 0               | 25471           | Timer Current value           |
| SN       | word            | DDDD               | 0               | 25471           | Retentive Timer Current value |
| CN       | word            | DDDDD              | 0               | 25471           | Counter Current value         |
| SD       | word            | DDDD               | 0               | 2047            | Special register              |
| R        | word            | DDDD               | 0               | 9999            | File Register                 |
| ZR       | word            | DDDDDD             | 0               | 999999          | File Register                 |
| Z        | word            | DD                 | 0               | 20              | Index Register                |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi Q/L Ethernet
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 2 Drivers/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Review the following information for setting up and configuring the Mitsubishi Q/L Ethernet driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                  |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                          |
| **Validated devices/series** | [MELSEC-F](https://www.mitsubishielectric.com/fa/products/cnt/plc_fx/items/index.html)&#xA;[MELSEC-L](https://www.mitsubishielectric.com/fa/products/cnt/plcl/items/index.html)&#xA;[MELSEC-Q](https://www.mitsubishielectric.com/fa/products/cnt/plcq/items/index.html)          |
| **Replaces Gen 1 driver(s)** | [Mitsubishi Melsec-L-Binary (Gen1)](docId\:JF-76V6CalQM8ubs7gKK9)&#xA;[Mitsubishi Melsec-L-ASCII (Gen1)](docId\:D6CMjoDn_9atTmtYa-4Ly)&#xA;[Mitsubishi Melsec-Q-Binary (Gen1)](docId\:Ngukz7gU_Hlc4_MIY30Vc)&#xA;[Mitsubishi Melsec-Q-ASCII (Gen1)](docId\:pRhymN02dmUgS14j02IJs) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC. See the steps below to view and edit the open ports on the PLC.
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.

1. Open the PLC project in GXWorks 2.
2. From the Navigation panel, click **Parameter > PLC Parameter**.&#x20;
   The PLC Parameter Setting window will open.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CtnzGvEWogGGQSxaK_k_A_mitsubishi-melsec-l-binary-parameters.png" size="80" width="834" height="582" position="center" caption="Built-in Ethernet Port Setting" showCaption="true"}
3. Select the **Built-in Ethernet Port Setting** tab, and note down the **IP Address**, **Subnet Mask Pattern**, **Default Router IP Address**, and **Communication Data Code**.
   To allow the driver to write tag values to the PLC, the check box for **Enable online change (FTP, MC Protocol)&#x20;**&#x6E;eeds to be checked.
4. Press the **Open Setting&#x20;**&#x62;utton to view the open ports using MC Protocol. If necessary, add more ports.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vpIdKW5_xiy7LU8Iztj7E_image.png" size="80" width="701" height="442" position="center" caption="Open Setting" showCaption="true"}

:::hint{type="info"}
**Note:** If you modify any CPU or module parameters, you must power cycle the PLC after downloading the changes.
:::

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

:::hint{type="info"}
**Note**: If you are using this driver to connect to a QJ71E71 Ethernet module, please be sure to verify the Network ID and Station ID with your device settings.&#x20;
:::

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Mitsubishi                               |
| **Driver**          | Mitsubishi Q/L Ethernet                  |
| **Network Address** | The device address you defined in Step 1 |
| **Network Port**    | 5002                                     |
| **Network ID**      | 0                                        |
| **Station ID**      | 255                                      |
| **Encoding**        | Select Ascii or Binary                   |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

:::hint{type="info"}
**Note**: The address format in this Gen 2 driver is different from the replaced Gen 1 drivers for the same device.&#x20;
:::

| **Name**   | **Value Types**                     | **Address Format** | **Min Address** | **Max Address** | **Description**               |
| ---------- | ----------------------------------- | ------------------ | --------------- | --------------- | ----------------------------- |
| X          | bit                                 | HHHH               | 0               | 16383           | Input Relay                   |
| Y          | bit                                 | HHHH               | 0               | 16383           | Output Relay                  |
| M          | bit                                 | DDDDD              | 0               | 61439           | Internal Relay                |
| SM         | bit                                 | DDDD               | 0               | 2047            | Special relay                 |
| L          | bit                                 | DDDDD              | 0               | 32767           | Latch Relay                   |
| F          | bit                                 | DDDDD              | 0               | 32767           | Annunicator                   |
| V          | bit                                 | DDDDD              | 0               | 32767           | Edge Relay                    |
| B          | bit                                 | HHHH               | 0               | 61439           | Link Relay                    |
| TS         | bit                                 | DDDDD              | 0               | 25471           | Timer Contact                 |
| TC         | bit                                 | DDDDD              | 0               | 25471           | Timer Coil                    |
| SS         | bit                                 | DDDDD              | 0               | 25471           | Retentive Timer Contact       |
| SC         | bit                                 | DDDDD              | 0               | 25471           | Retentive Timer Coil          |
| CS         |  bit                                | DDDDD              | 0               | 25471           | Counter Contact               |
| CC         | bit                                 | DDDDD              | 0               | 25471           | Counter Coil                  |
| SB         | bit                                 | HHHH               | 0               | 32767           | Special Link Relay            |
| S          | bit                                 | DDDDD              | 0               | 16383           | Step Relay                    |
| DX         | bit                                 | DDDDD              | 0               | 16383           | Direct Input                  |
| DY         | bit                                 | HHHH               | 0               | 16383           | Direct Output                 |
| SD         | word, dword, int, dint, real, dreal | DDDD               | 0               | 2047            | Special Register              |
| SD\_string | string                              | DDDD               | 0               | 2047            | Special Register              |
| SD\_bit    | bit                                 | DDDDdd             | 0               | 204715          | Special Register              |
| CN         | word, dword, int, dint, real, dreal | DDDDD              | 0               | 25471           | Counter Current Value         |
| CN\_string | string                              | DDDDD              | 0               | 25471           | Counter Current Value         |
| D          | word, dword, int, dint, real, dreal | DDDDDDD            | 0               | 4184063         | Data Register                 |
| D\_string  | string                              | DDDDDDD            | 0               | 4184063         | Data Register                 |
| D\_bit     | bit                                 | DDDDDDDdd          | 0               | 418406315       | Data Register                 |
| W          | word, dword, int, dint, real, dreal | DDDDDDD            | 0               | 4184063         | Link Register                 |
| W\_string  | string                              | DDDDDDD            | 0               | 4184063         | Link Register                 |
| W\_bit     | bit                                 | DDDDDDDdd          | 0               | 418406315       | Link Register                 |
| TN         | word, dword, int, dint, string      | DDDDD              | 0               | 25471           | Timer Current Value           |
| SN         | word, dword, int, dint, string      | DDDDD              | 0               | 25471           | Retentive Timer Current Value |
| R          | word, dword, int, dint, real, dreal | DDDDD              | 0               | 32767           | File Register                 |
| R\_string  | string                              | DDDDD              | 0               | 32767           | File Register                 |
| R\_bit     | bit                                 | DDDDDdd            | 0               | 3276715         | File Register                 |
| ZR         | word, dword, int, dint, real, dreal | DDDDDDD            | 0               | 4184063         | Serial Num File Register      |
| ZR\_string | string                              | DDDDDDD            | 0               | 4184063         | Serial Num File Register      |
| ZR\_bit    | bit                                 | DDDDDDDdd          | 0               | 418406315       | Serial Num File Register      |
| Z          | word, dword, int, dint, real, dreal | DD                 | 0               | 20              | Index Register                |
| Z\_string  | string                              | DD                 | 0               | 20              | Index Register                |
| SW         | word, dword, int, dint, real, dreal | DDDD               | 0               | 2047            | Special Link Register         |
| SW\_string | string                              | DDDD               | 0               | 2047            | Special Link Register         |
| SW\_bit    | bit                                 | DDDDdd             | 0               | 204715          | Special Link Register         |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values.&#x20;
- **Length**: Available when you select the `string` value type. Enter the number of characters for tag values.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::

:::hint{type="info"}
**Note:&#x20;**&#x54;o define a tag with the Date datatype, set the *Value Type* as **Word&#x20;**&#x61;nd the *Count&#x20;*&#x70;arameter to **7**, which will give an array in the format: `[year, month, date, hour, minute, second, day of week]`. See the example of the array below:

**Array\[7]&#x20;**= `[2024, 5, 13, 14, 25, 51, 1]`
:::


[title] LS Industrial System
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                                                                                                                                                                                                                                                                                                                                                                                                    | **Compatible Serial DeviceHub Drivers**                              |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| LS Master-K Series:<br />* [LS Electric K80S](https://sol.ls-electric.com/product/document/2445)
* [LS Electric K120S](https://www.ls-electric.com/products/view/Smart_Automation_Solution/PLC/MASTER-K_Series/K120S)
* [LS Electric K200S](https://sol.ls-electric.com/product/document/2436)
* [LS Electric K300S](https://sol.ls-electric.com/product/document/2436)
* [LS Electric K1000S](https://sol.ls-electric.com/product/document/2436) | [LS Master-K CPU Direct Serial (Gen1)](docId:5BiNetmLcx4d34w4w9H6v)  |
| - LS Electric XBM
- LS Electric XBC
- LS Electric XGK                                                                                                                                                                                                                                                                                                                                                                                             | [LS XBM Serial (Gen1)](docId\:DRok3C7kfKzr-g8tcPK-4)                 |
| LS Electric XBM Series with communication module XGL-CH2A                                                                                                                                                                                                                                                                                                                                                                                         | [LS XBM Cnet Serial (Gen1)](docId\:LAyj7epmhB-eOeymjTV50)            |


[title] Mitsubishi FX5U-Ethernet-Binary (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi FX5U-Ethernet-Binary (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                        |
| ---------------------------- | --------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                |
| **Validated devices/series** | [MELSEC iQ-F](https://www.mitsubishielectric.com/fa/products/cnt/plcf/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC. See the steps below to view and edit the open ports on the PLC.
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed. ****
   **Device**: Mitsubishi FX5U Ethernet Binary FX5U-32M****
   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lTXYbKV5HwJLobE_-4nhQ_mitsubishi-fx5u-ethernet-binary-reference.png" size="80" width="955" height="588" caption="Reference image of device" position="center" showCaption="true"}
2. Launch GXWork3 V1.035M software, and then click **Online > Read from PLC**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Sw3n3iOUDE9NhWXoF5MjS_mitsubishi-fx5u-gx-online-read482x338.png" size="80" width="482" height="338" caption="Read from PLC option" position="center" showCaption="true"}
3. Select the series.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VCGUFwGmsLbIgU9TSSMr9_mitsubishi-fx5u-ethernet-binary-series-select.png" size="70" width="323" height="111" caption="Series Selection dialog box" position="center" showCaption="true"}
4. Select the connection destination.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6SBNb9RA0DbV-q7dU55w7_mitsubishi-fx5u-ethernet-binary-destination.png" size="80" width="820" height="429" caption="Select Connection Destination dialog box" position="center" showCaption="true"}
5. Double-click the **PLC module** icon, and click **Find** to browse the device on the network.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MrFx2s2JWTYdvd5BZOph-_mitsubishi-fx5u-ethernet-binary-browse.png" size="80" width="1121" height="550" caption="Network browse step" position="center" showCaption="true"}
6. From the Navigation panel, click **Ethernet Port&#xA0;**&#x74;o set up communication parameters. Use **Binary&#x20;**&#x66;or this device.&#x20;
7. Double-click **External Device Configuration**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/z_GMbNgF_qKC9kS9laMs2_mitsubishi-fx5u-ethernet-binary-communication.png" size="80" width="1048" height="510" caption="External Device Configuration option" position="center" showCaption="true"}
8. Set up the connections. In this case, port 4996 through 4999 are able to connect.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SzbfndO0OvOkjsWGUqMu2_mitsubishi-fx5u-ethernet-binary-ports.png" size="80" width="975" height="185" caption="Connection setup screen" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Mitsubishi                               |
| **Driver**          | Mitsubishi FX5U-Ethernet-Binary (Gen1)   |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 5002                                     |
| **Station ID**      | 255                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description**               |
| -------- | -------------- | ------------------ | --------------- | --------------- | ----------------------------- |
| SM       | bit            | DDDD               | 0               | 9999            | Special Relay                 |
| X        | bit            | HHHH               | 0               | 1023            | Input Relay                   |
| Y        | bit            | HHHH               | 0               | 1023            | Output Relay                  |
| M        | bit            | DDDDD              | 0               | 65535           | Internal Relay                |
| L        | bit            | DDDDD              | 0               | 32237           | Latch Relay                   |
| F        | bit            | DDDDD              | 0               | 32237           | Annunciator                   |
| B        | bit            | DDDDD              | 0               | 32237           | Link Relay                    |
| TS       | bit            | DDDD               | 0               | 1023            | Timer Contact                 |
| TC       | bit            | DDDD               | 0               | 1023            | Timer Coil                    |
| CS       | bit            | DDDD               | 0               | 1023            | Counter Contact               |
| CC       | bit            | DDDD               | 0               | 1023            | Counter Coil                  |
| SB       | bit            | DDDDD              | 0               | 32737           | Special Link Relay            |
| S        | bit            | DDDD               | 0               | 4095            | Step Relay                    |
| Z        | word           | DD                 | 0               | 19              | Index Register                |
| SW       | word           | DDDDD              | 0               | 32767           | Specail Link Register         |
| CN       | word           | DDDD               | 0               | 1023            | Counter Current Value         |
| SN       | word           | DDDD               | 0               | 1023            | Retentive Timer Current Value |
| TN       | word           | DDDD               | 0               | 1023            | Timer current Value           |
| W        | word           | DDDDD              | 0               | 32767           | Link Relgister                |
| R        | word           | DDDDD              | 0               | 32767           | File Register                 |
| D        | word           | DDDD               | 0               | 7999            | Data Register                 |
| SD       | word           | DDDDD              | 0               | 11999           | Special Register              |
| LZ       | word           | D                  | 0               | 1               | Long Index Register           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Koyo Click Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Koyo/

Review the following information for setting up and configuring the Koyo Click Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Validated devices/series** | [Koyo Click PLC series](https://www.automationdirect.com/adc/overview/catalog/programmable_controllers/click_plus_plcs_\(stackable_micro_modular\)?gclid=CjwKCAjwq-WgBhBMEiwAzKSH6NSnIBrVmEivDgn7PoLTc-owzEKANnQnVV_hAMgxeUd-MDsgDlWYIBoCsV0QAvD_BwE#bodycontentppc)&#xA;[Automation Direct Click PLC series](https://www.automationdirect.com/adc/overview/catalog/programmable_controllers/click_plus_plcs_\(stackable_micro_modular\)?gclid=CjwKCAjwq-WgBhBMEiwAzKSH6NSnIBrVmEivDgn7PoLTc-owzEKANnQnVV_hAMgxeUd-MDsgDlWYIBoCsV0QAvD_BwE#bodycontentppc) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: Koyo Click

   **Communication I/F**: RS232. Refer to the following figures.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AsXqjUutpTs7KFmrJhszS_koyoclickreference.png" size="80" width="621" height="565" caption="Koyo Click reference" position="center" showCaption="true"}
2. Launch CLICK Programming v2.10 Software and click **PLC > Connect**.
3. Set up communication parameters, and then click **Connect**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Koyo                              |
| **Driver**             | Koyo Click Serial (Gen1)          |
| **Communication Port** | Local Serial connection file path |
| **Baud Rate**          | 38400                             |
| **Data Bits**          | 8                                 |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station**            | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**              |
| -------- | --------------- | ------------------ | --------------- | --------------- | ---------------------------- |
| X        | bit             | Ddd                | 1               | 816             | Input Status (Read Only)     |
| Y        | bit             | Ddd                | 1               | 816             | Output Status                |
| C        | bit             | DDDDD              | 1               | 2000            | Control Bit                  |
| T        | bit             | DDDDD              | 1               | 500             | Timer Status                 |
| CT       | bit             | DDDD               | 1               | 250             | Counter Status               |
| SC       | bit             | DDD                | 1               | 1000            | System Control Bit           |
| DS       | word            | DDDD               | 1               | 4500            | Data Registers               |
| DD       | word            | DDDD               | 1               | 1000            | Data Registers (Double Word) |
| DH       | word            | DDD                | 1               | 500             | Data Registers               |
| DF       | word            | DDD                | 1               | 500             | Data Registers (Double Word) |
| XD       | word            | D                  | 0               | 8               | Input Status Registers       |
| YD       | word            | D                  | 0               | 8               | Output Status Registers      |
| TD       | word            | DDD                | 1               | 500             | Timer Current Values         |
| CTD      | word            | DDD                | 1               | 250             | Counter Current Values       |
| SD       | word            | DDDD               | 1               | 1000            | System Data Registers        |
| TXT      | word            | DDDD               | 1               | 1000            | Text Data Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Modbus
[path] QuickStart Guide/Industrial Systems Connection Guide/

:::hint{type="info"}
**Note**: By default, the Modbus drivers monitor holding address 0 for connection status. If the Modbus device does not have holding address 0, then it will not show the "connected" status. You will still be able to read data from the device.
:::

Here are the major differences for the Modbus drivers:

| **Driver**                                                                                                                                                                                                        | **Use**                                                                                                                                                   |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Enron Modbus](docId\:DbtnkppZEg0Hb2Lys0fPx)                                                                                                                                                                      | Serial connection or TCP connection to a Modbus device                                                                                                    |
| - [Modbus ASCII](docId\:oEOHqIBxp46l0dWTp-Xmz)
- [Modbus ASCII (Gen1)](docId\:XhV-tpwiACYqHAPZOFoIa)
- [Modbus ASCII Advanced](docId\:dGgP6KMsUj7B3cqj6lKp8)                                                      | Serial connection to a device using Modbus ASCII                                                                                                          |
| * [Modbus RTU](docId\:cLMEYaOkmeSZSJ9GmpLB-)
* [Modbus RTU (Gen1)](docId\:uFdsdCj0htV8fkv2YbeTm)
* [Modbus RTU Advanced](docId\:VO594N1omAyQaztcnFXR-)
* [Modbus RTU-Offset (Gen1)](docId\:LRuQ4f-sopIyuHzDmgUw3) | - Serial connection to a device using Modbus RTU.
- The Gen2 driver has an option for zero-based addressing and therefore replaces both Gen1 RTU drivers. |
| [Modbus RTU over TCP](docId\:i6fV1BEHSY-_qnwxC_flS)                                                                                                                                                               | TCP connection to a Modbus server which has one or more Modbus RTU connections                                                                            |
| * [Modbus TCP](docId\:NbER6LlRZwtlKO50-hv3V)
* [Modbus TCP (Gen1)](docId\:qiP9F4QgCya63Nm3OWaWM)
* [Modbus TCP-Offset (Gen1)](docId:_ec6me-3T4rL91uo8cz8T)                                                        | - TCP connection to a Modbus device.
- The Gen2 driver has an option for zero-based addressing and therefore replaces both Gen1 TCP drivers.              |
| * [Modbus UDP](docId:2tSQ-h8tueu-_mt9d-Zgs)
* [Modbus UDP (Gen1)](docId\:Jz6SLfJ9P6g2La9KStWMv)                                                                                                                   | UDP connection to a Modbus device                                                                                                                         |


[title] Mitsubishi Q00-01H Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi Q00-01H Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                     |
| ---------------------------- | ------------------------------------------------------------------------------------ |
| **Driver type**              | Serial                                                                               |
| **Validated devices/series** | [MELSEC-Q](https://www.mitsubishielectric.com/fa/products/cnt/plcq/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

Refer to the following parameters.&#x20;

**Online simulator**: YES

**Extend address mode**: NO

**Broadcast command**: NO

**To configure your device:&#x20;**

1. Note down the following information and refer to it when needed. ****
   **Device**: Mitsubishi Q03UDCPU and QJ7124N****
   **Communication I/F**: RS232. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zYTT-nh8UyvV0haFGquzl_mitsubishi-q00-01h-serial-reference.png" size="80" width="590" height="735" caption="Reference image of device" position="center" showCaption="true"}
2. Launch GX Works2 v1.560 software, and then click **Online > Read from PLC**.
3. From the PLC Series Selection dialog box, select **QCPU (Q Mode)** from the **PLC Series&#xA0;**&#x64;rop-down list, and then click **OK**.
4. Set up communication parameters, and then click **Connection Test**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RjFvb33CZafgUnNahw-ts_mitsubishi-q00-01h-serial-test.png" size="80" width="1001" height="608" caption="Connection Test option" position="center" showCaption="true"}
5. Right-click **Intelligent Function Module > New Module**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Lr691etkMvjOkCIrWXQo1_mitsubishi-q00-01h-serial-new-module.png" size="80" width="796" height="441" caption="New Module option" position="center" showCaption="true"}
6. Set up module parameters as shown below.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rbnPuT6U6VPzNk2n0bu9x_mitsubishi-q00-01h-serial-parameters.png" size="80" width="1120" height="579" caption="Module parameters" position="center" showCaption="true"}
7. Click **Switch Setting&#xA0;**&#x61;nd set up communication parameters as shown below.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OAD9hEvHnDkbUBDkTWHmt_mitsubishi-q00-01h-serial-switch.png" size="80" width="758" height="425" caption="Switch Setting option" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Mitsubishi                        |
| **Driver**             | Mitsubishi Q00-01H Serial (Gen1)  |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**               |
| -------- | --------------- | ------------------ | --------------- | --------------- | ----------------------------- |
| X        | bit             | HHHH               | 0               | 8191            | Input Relay                   |
| Y        | bit             | HHHH               | 0               | 8191            | Output Relay                  |
| M        | bit             | DDDDD              | 0               | 61439           | Internal Relay                |
| L        | bit             | DDDDD              | 0               | 32237           | Latch Relay                   |
| F        | bit             | DDDDD              | 0               | 32237           | Annunciator                   |
| V        | bit             | DDDDD              | 0               | 32237           | Edge Relay                    |
| B        | bit             | HHHH               | 0               | 61439           | Link Relay                    |
| TC       | bit             | DDDD               | 0               | 2047            | Timer Coil                    |
| SS       | bit             | DDDDD              | 0               | 25471           | Retentive Timer Contact       |
| SC       | bit             | DDDDD              | 0               | 25471           | Retentive Timer Coil          |
| CS       | bit             | DDDDD              | 0               | 25471           | Counter Contact               |
| CC       | bit             | DDDDD              | 0               | 25471           | Counter Coil                  |
| SB       | bit             | HHH                | 0               | 2047            | Special Link Relay            |
| S        | bit             | DDDD               | 0               | 8191            | Step Relay                    |
| DX       | bit             | HHHH               | 0               | 8191            | Direct Input                  |
| DY       | bit             | HHHH               | 0               | 8191            | Direct Output                 |
| TS       | bit             | DDDD               | 0               | 2047            | Timer Contact                 |
| SM       | bit             | DDDD               | 0               | 2047            |                               |
| W        | word            | HHHH               | 0               | 12187           | Link Register                 |
| TN       | word            | DDDD               | 0               | 2047            | Timer Current Value           |
| SN       | word            | DDDD               | 0               | 2047            | Retentive Timer Current Value |
| CN       | word            | DDDD               | 0               | 1023            | Counter Current Value         |
| R        | word            | FFDDDDD            | 0               | 32767           | File Register                 |
| SW       | word            | HHHH               | 0               | 2047            | Special Link Register         |
| Z        | word            | DD                 | 0               | 19              | Index Register                |
| ZR       | word            | HHHHH              | 0               | 1042341         | File Register                 |
| D        | word            | DDDDDDD            | 0               | 4212735         | Data Register                 |
| SD       | word            | DDDD               | 0               | 2047            |                               |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi Melsec-L-ASCII (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi Melsec-L-ASCII (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                     |
| ------------------------------ | ------------------------------------------------------------------------------------ |
| **Driver type**                | Ethernet                                                                             |
| **Validated devices/series**   | [MELSEC-L](https://www.mitsubishielectric.com/fa/products/cnt/plcl/items/index.html) |
| **Replaced with Gen 2 driver** | [Mitsubishi Q/L Ethernet](docId\:h1mVsD1jQaa1ON79jn_UQ)                              |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC. See the steps below to view and edit the open ports on the PLC.
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed. ****
   **Device**: Mitsubishi Melsec L26CPU-PBT
   When creating a new project file in the software or reading from the PLC, the device model is **L02CPU-P**.
   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gRz60BXfAJV2QWrAGE0vE_mitsubishi-melsec-l-binaryreference.png" size="80" width="818" height="873" caption="Reference image of device" position="center" showCaption="true"}
2. Connect the device to your PC using a USB.
3. Launch GXWorks2 Software, and click **Online > Read from PLC**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2ZhK2CZSv4E3ZsM4fFtaK_mitsubishi-melsec-l-binary-read.png" size="80" width="657" height="468" caption="Read from PLC option" position="center" showCaption="true"}
4. Select the PLC series.
5. Set up connection, and then click **Connection Test**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/47Klh3cO5AS_SOAe5ohtj_mitsubishi-melsec-l-binary-connection.png" size="80" width="666" height="481" caption="Connection test option" position="center" showCaption="true"}
6. From the Navigation panel, click **Parameter > PLC Parameter > Build in Ethernet Port Setting**, and set up the parameters.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CtnzGvEWogGGQSxaK_k_A_mitsubishi-melsec-l-binary-parameters.png" size="80" width="834" height="582" caption="Port setting parameters" position="center" showCaption="true"}
7. From the Navigation panel, click **Connection Destination > connection1**.
8. Click **Find CPU (Build-in Ethernet port) on Network**, then pick up the target device.
9. Click **Connection Test&#xA0;**&#x61;fter set up is complete.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BJ6YOw9Y4VGwap5pCpbBM_mitsubishi-melsec-l-binary-destination.png" size="80" width="1032" height="573" caption="Connection test option" position="center" showCaption="true"}
10. Power off and launch the device again to activate any setting changed in the device.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Mitsubishi                               |
| **Driver**          | Mitsubishi Melsec-L ASCII (Gen1)         |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 5002                                     |
| **Station ID**      | 255                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**               |
| -------- | --------------- | ------------------ | --------------- | --------------- | ----------------------------- |
| X        | bit             | HHHH               | 0               | 65536           | Input Relay                   |
| Y        | bit             | HHHH               | 0               | 65536           | Output Relay                  |
| M        | bit             | DDDDD              | 0               | 65535           | Internal Relay                |
| SM       | bit             | DDDD               | 0               | 2047            | Special Relay                 |
| L        | bit             | DDDDD              | 0               | 32237           | Latch Relay                   |
| F        | bit             | DDDDD              | 0               | 32237           | Annunciator                   |
| V        | bit             | DDDDD              | 0               | 32237           | Edge Relay                    |
| B        | bit             | DDDDD              | 0               | 32237           | Link Relay                    |
| TS       | bit             | DDDDD              | 0               | 25471           | Timer Contact                 |
| TC       | bit             | DDDDD              | 0               | 25471           | Timer Coil                    |
| SS       | bit             | DDDDD              | 0               | 25471           | Retentive Timer Contact       |
| SC       | bit             | DDDDD              | 0               | 25471           | Retentive Timer Coil          |
| CS       | bit             | DDDDD              | 0               | 25471           | Counter Contact               |
| CC       | bit             | DDDDD              | 0               | 25471           | Counter Coil                  |
| SB       | bit             | DDDDD              | 0               | 32237           | Special Link Relay            |
| S        | bit             | DDDD               | 0               | 8191            | Step relay                    |
| DX       | bit             | DDDD               | 0               | 8191            | Direct Input                  |
| DY       | bit             | DDDD               | 0               | 8191            | Direct Output                 |
| D        | word            | DDDD               | 0               | 9999            | Data Register                 |
| W        | word            | DDDD               | 0               | 8191            | Link Register                 |
| TN       | word            | DDDDD              | 0               | 25471           | Timer Current value           |
| SN       | word            | DDDD               | 0               | 25471           | Retentive Timer Current value |
| CN       | word            | DDDDD              | 0               | 25471           | Counter Current value         |
| SD       | word            | DDDD               | 0               | 2047            | Special register              |
| R        | word            | DDDD               | 0               | 9999            | File Register                 |
| ZR       | word            | DDDDDD             | 0               | 999999          | File Register                 |
| Z        | word            | DD                 | 0               | 20              | Index Register                |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Hitachi Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Hitachi Devices/

Review the following information for setting up and configuring the Hitachi Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                    |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                                                                                                                                                                                                                              |
| **Validated devices/series** | [Hitachi H series](https://automation.hitachi-industrial.eu/en/products/plc/modular-series/h-series)&#xA;[Hitachi EH-150](https://automation.hitachi-industrial.eu/en/products/plc/modular-series/eh-150)&#xA;[Hitachi Micro-EH ](https://automation.hitachi-industrial.eu/en/products/plc/compact-series/micro-eh) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

Refer to the following parameters.&#x20;

**Online Simulator**: YES

**Broadcast command**: NO

**Extend address mode**: NO

**To configure the device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: Hitachi EH-D20DT

   **Communication I/F**: RS232. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3dPbbaAimnqhvA039NkU0_hitachiserialreference.png" size="80" width="370" height="461" caption="Hitachi Serial reference" position="center" showCaption="true"}
2. Use PLC software on your computer to configure your device for Ethernet access.&#x20;

# &#x20;Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Hitachi Devices                   |
| **Driver**             | Hitachi Serial (Gen1)             |
| **Communication Port** | Local Serial connection file path |
| **Baud Rate**          | 19200                             |
| **Data Bits**          | 7                                 |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**             |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------------------- |
| X        | bit             | HHHHh              | 0               | 6553515         | External Input bit          |
| Y        | bit             | HHHHh              | 0               | 6553515         | External Output bit         |
| M        | bit             | HHHHh              | 0               | 6553515         | Data area bit               |
| T        | bit             | HHHHh              | 0               | 6553515         | Timer                       |
| R        | bit             | HHHHh              | 0               | 6553515         | Internal Output             |
| L        | bit             | HHHHh              | 8000            | 6553515         | Link area bit               |
| TC       | word            | HH                 | 0               | 255             | Timer/Counter current value |
| WM       | word            | HHHH               | 200             | 9999            | Data area word              |
| WX       | word            | HHHH               | 0               | 9999            | External input word         |
| WY       | word            | HHHH               | 0               | 9999            | External output word        |
| WR       | word            | HHHH               | 0               | 50175           | Internal Output word        |
| WL       | word            | HHHH               | 0               | 9999            | Link area word              |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Omron-Peripheral (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Omron/

Review the following information for setting up and configuring the Omron-Peripheral (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Serial                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Validated devices/series** | [CJ1](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cj1/index.html)&#xA;[CJ2](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cj2/index.html)&#xA;[CS](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/cs1/index.html)&#xA;[NJ](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/controller-nj-series/index.html)&#xA;[NX1P](https://www.ia.omron.com/products/category/automation-systems/programmable-controllers/controller-nx1p/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

&#x20;**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: Omron NJ301-1100
   **Communication I/F**: RS232. Refer to the following figure.
2. Connect the device with a USB cable.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/c2ZbyGeMDiWLkzNeB5gLB_omron-fins-ethernet.png" size="80" width="679" height="255" caption="Reference image of device" position="center" showCaption="true"}
3. Launch Sysmac Studio v1.20.1.0 Software, select **Controller > Communication Setup**, and then set up the IP address.
4. Use a direct connection through **USB > USB Communication Test**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Omron                             |
| **Driver**             | Omron-Peripheral (Gen1)           |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 7                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 2                                 |
| **Station**            | 0                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**      |
| -------- | --------------- | ------------------ | --------------- | --------------- | -------------------- |
| CIO\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Channel I/O (CIO)    |
| W\_Bit   | bit             | DDDDDdd            | 0               | 3276715         | Work Area (WR)       |
| H\_Bit   | bit             | DDDDDdd            | 0               | 3276715         | Holding Area (HR)    |
| A\_Bit   | bit             | DDDDDdd            | 0               | 3276715         | Auxiliary Relay (AR) |
| T\_Bit   | bit             | DDDDDdd            | 0               | 3276715         | Timer (TIM)          |
| C\_Bit   | bit             | DDDDDdd            | 0               | 3276715         | Counter (CNT)        |
| D\_Bit   | bit             | DDDDDdd            | 0               | 3276715         | Data emory (DM)      |
| LR\_Bit  | bit             | DDDdd              | 0               | 19915           |                      |
| EM0\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| EM1\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| EM2\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| EM3\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| EM4\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| EM5\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| EM6\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| EM7\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| EM8\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| EM9\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| EMA\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| EMB\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| EMC\_Bit | bit             | DDDDDdd            | 0               | 3276715         | Extended Memory bit  |
| CIO      | word            | DDDDD              | 0               | 32767           | Channel I/O          |
| W        | word            | DDDDD              | 0               | 32767           | Work Area            |
| H        | word            | DDDDD              | 0               | 32767           | Holding Area         |
| A        | word            | DDDDD              | 0               | 32767           | Auxiliary Relay      |
| T        | word            | DDDDD              | 0               | 32767           | Timer                |
| C        | word            | DDDDD              | 0               | 32767           | Counter              |
| D        | word            | DDDDD              | 0               | 32767           | Data Memory          |
| LR       | word            | DDD                | 0               | 199             |                      |
| EM0      | word            | DDDDD              | 0               | 32767           | Extend Memory        |
| EM1      | word            | DDDDD              | 0               | 32767           | Extend Memory        |
| EM2      | word            | DDDDD              | 0               | 32767           | Extend Memory        |
| EM3      | word            | DDDDD              | 0               | 32767           | Extend Memory        |
| EM4      | word            | DDDDD              | 0               | 32767           | Extend Memory        |
| EM5      | word            | DDDDD              | 0               | 32767           | Extend Memory        |
| EM6      | word            | DDDDD              | 0               | 32767           | Extend Memory        |
| EM7      | word            | DDDDD              | 0               | 32767           | Extend Memory        |
| EM8      | word            | DDDDD              | 0               | 32767           | Extend Memory        |
| EM9      | word            | DDDDD              | 0               | 32767           | Extend Memory        |
| EMA      | word            | DDDDD              | 0               | 32767           | Extend Memory        |
| EMB      | word            | DDDDD              | 0               | 32767           | Extend Memory        |
| EMC      | word            | DDDDD              | 0               | 32767           | Extend Memory        |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] OSI
[path] QuickStart Guide/Industrial Systems Connection Guide/

You can set up the following OSI drivers to collect data.&#x20;

- [OSI Agent](docId\:WLRJxqKl3wSQm_2CYKgft)
- [OSI Agent Advanced](docId\:B_Q5xHgHoTBxVv0Di5zuS)


[title] Modbus TCP
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 2 Drivers/

Review the following information for setting up and configuring the Modbus TCP driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                      |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                              |
| **When to use&#x20;**        | TCP connection to a Modbus device                                                                                                                                                                     |
| **Replaces Gen 1 driver(s)** | [Modbus TCP (Gen1)](docId\:qiP9F4QgCya63Nm3OWaWM) &#xA;[Modbus TCP-Offset (Gen1)](docId:_ec6me-3T4rL91uo8cz8T)<br />Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd)  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                 | Value                                    |
| ------------------------- | ---------------------------------------- |
| **Type**                  | Modbus                                   |
| **Driver**                | Modbus TCP                               |
| **Network Address**       | The device address you defined in Step 1 |
| **Network Port**          | 502                                      |
| **Station ID**            | 0                                        |
| **Zero-Based Addressing** | Select Enable or Disable                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

:::hint{type="info"}
**Note**: The address format in this Gen 2 driver is different from the Gen 1 driver ([Modbus TCP (Gen1)](docId\:qiP9F4QgCya63Nm3OWaWM)) for the same device. Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd).&#x20;
:::

| **Name** | **Value Types**                              | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| -------- | -------------------------------------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D        | bit                                          | DDDDD              | 0               | 65535           | Discrete Input Contacts         |
| C        | bit                                          | DDDDD              | 0               | 65535           | Discrete Output Coils           |
| H        | word, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Output Holding Registers |
| I        | word, int16, int32, uint32, float32, float64 | DDDDD              | 0               | 65535           | Analog Input Registers          |
| H\_bit   | bit                                          | DDDDDdd            | 0               | 65535           | Analog Output Holding Registers |
| I\_bit   | bit                                          | DDDDDdd            | 0               | 65535           | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Endianness&#x20;**(not available for all names): This option configures how the tag data will be formatted and whether bytes and/or words will be counted from the start (big-endian style) or end (little-endian style) of strings of data. Select one of the following options.&#x20;
  - **No Swap**: Data will be formatted in big-endian style (bytes and words counted from the start). For example: AB CD.&#x20;
  - **Swap Bytes**: Only bytes will be formatted in little-endian style (counted from the end). For example: BA DC.&#x20;
  - **Swap Words**: Only words will be formatted in little-endian style (counted from the end). For example: CD AB.&#x20;
  - **Swap Words & Bytes**: Both words and bytes will be formatted in little-endian style (counted from the end). For example: DC BA.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi Q06 Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi Q06 Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                     |
| ---------------------------- | ------------------------------------------------------------------------------------ |
| **Driver type**              | Serial                                                                               |
| **Validated devices/series** | [MELSEC-Q](https://www.mitsubishielectric.com/fa/products/cnt/plcq/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Mitsubishi                        |
| **Driver**             | Mitsubishi Q06 Serial (Gen1)      |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 115200                            |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**       |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------------- |
| X        | bit             | HHHH               | 0               | 8191            | Input Relay           |
| Y        | bit             | HHHH               | 0               | 8191            | Output Relay          |
| M        | bit             | DDDDD              | 0               | 61439           | Internal Relay        |
| L        | bit             | DDDDD              | 0               | 32767           | Latch Relay           |
| F        | bit             | DDDDD              | 0               | 32767           | Annunciator           |
| V        | bit             | DDDDD              | 0               | 32767           | Edge Relay            |
| B        | bit             | HHHH               | 0               | 32767           | Link Relay            |
| TC       | bit             | DDDDD              | 0               | 23087           | Timer Coil            |
| SS       | bit             | DDDDD              | 0               | 23087           | Retentive Timer       |
| SC       | bit             | DDDDD              | 0               | 23087           | Retentive Timer Coil  |
| CS       | bit             | DDDDD              | 0               | 23087           | Counter Contact       |
| CC       | bit             | DDDDD              | 0               | 23087           | Counter Coil          |
| SB       | bit             | HHH                | 0               | 2047            | Special Link Relay    |
| S        | bit             | DDDD               | 0               | 8191            | Step Relay            |
| DX       | bit             | HHHH               | 0               | 8191            | Direct Input          |
| DY       | bit             | HHHH               | 0               | 8191            | Direct Output         |
| TS       | bit             | DDDD               | 0               | 2047            | Timer Contact         |
| SM       | bit             | DDDD               | 0               | 2047            |                       |
| D        | word            | DDDDDDD            | 0               | 4212735         | Data Register         |
| ZR       | word            | DDDDDDD            | 0               | 1042431         | File Register         |
| Z        | word            | DD                 | 0               | 15              | Index Register        |
| SW       | word            | HHH                | 0               | 2047            | Special Link Register |
| R        | word            | FFddddd            | 0               | 313767          | File Register         |
| CN       | word            | DDDDD              | 0               | 23087           | Counter Current       |
| SN       | word            | DDDD               | 0               | 23087           | Retentive Timer       |
| TN       | word            | DDDDD              | 0               | 23087           | Timer Current Value   |
| W        | word            | HHHH               | 0               | 25983           | Link Register         |
| D\_Bit   | word            | DDDDDDDdd          | 0               | 421273515       | Data Register bit     |
| ZR\_Bit  | word            | DDDDDDDdd          | 0               | 104243115       | File Register bit     |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] LS XBM Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/LS Industrial System/

Review the following information for setting up and configuring the LS XBM Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                         |
| ---------------------------- | -------------------------------------------------------- |
| **Driver type**              | Serial                                                   |
| **Validated devices/series** | LS Electric XBM&#xA;LS Electric XBC&#xA;LS Electric XGK  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: LS XBM-DR165

   **Communication I/F**: RS232. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Z12vA1LDvmBuvrKLc5lcf_ls-xbm-serial-reference.png" size="80" width="398" height="861" caption="LS XBM Serial reference" position="center" showCaption="true"}
2. Launch XG5000 v.3.71 software and click **Online > Online Settings**.
3. Set up COM port, and then click **Auto Detect**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | LS Industrial System              |
| **Driver**             | LS XBM Serial (Gen1)              |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 115200                            |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**            |
| -------- | --------------- | ------------------ | --------------- | --------------- | -------------------------- |
| PW\_bit  | bit             | DDDDdd             | 0               | 204715          | I/O device bit             |
| MW\_Bit  | bit             | DDDDdd             | 0               | 204715          | Internal device bit        |
| LW\_Bit  | bit             | DDDDDdd            | 0               | 1126316         | Communication device bit   |
| KW\_Bit  | bit             | DDDDdd             | 0               | 255915          | Preservation device bit    |
| FW\_Bit  | bit             | DDDDdd             | 0               | 204715          | Special device bit         |
| DW\_Bit  | bit             | DDDDDdd            | 0               | 3276715         | Data register bit          |
| UW\_Bit  | bit             | DDDDdd             | 0               | 633115          |                            |
| RW\_Bit  | bit             | DDDDDdd            | 0               | 3276715         |                            |
| SX       | bit             | DDDDD              | 0               | 12799           | Relay for step control bit |
| TX       | bit             | DDDD               | 0               | 2047            | Timer device bit           |
| CX       | bit             | DDDD               | 0               | 2047            | Counter device bit         |
| PW       | word            | DDDD               | 0               | 2047            | I/O device                 |
| MW       | word            | DDDD               | 0               | 2047            | Internal device            |
| LW       | word            | DDDDD              | 0               | 11263           | Communication device       |
| KW       | word            | DDDD               | 0               | 2559            | Preservation device        |
| FW       | word            | DDDD               | 0               | 2047            | Special device             |
| SW       | word            | DDD                | 0               | 127             | Relay for step control     |
| DW       | word            | DDDDD              | 0               | 32767           | Data register              |
| UW       | word            | DDDD               | 0               | 6331            | Analog data register       |
| NW       | word            | DDDDD              | 0               | 21503           | Communiction data register |
| ZW       | word            | DDD                | 0               | 127             | Index register             |
| TW       | word            | DDDD               | 0               | 2047            | Timer current value        |
| CW       | word            | DDDD               | 0               | 2047            | Counter current value      |
| RW       | word            | DDDDD              | 0               | 32767           |                            |
| ZRW      | word            | DDDDD              | 0               | 32767           |                            |
| TSW      | word            | DDDD               | 0               | 2047            | Setup value                |
| CSW      | word            | DDDD               | 0               | 2047            | Setup value                |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] HPE
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your device.

| **Device**                    | **Compatible CAN DeviceHub Driver**                |
| ----------------------------- | -------------------------------------------------- |
| - CAN Bus 2.0A
- CAN Bus 2.0B | [HPE CAN Raw (Gen1)](docId\:UHme6uJ2LTkNVH-styv9M) |


[title] JTEKT Toyopuc
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                                               | **Compatible Ethernet DeviceHub Driver**                                | **Compatible Serial DeviceHub Driver**                       |
| -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------ |
| [JTEKT Toyopuc PC10](https://toyoda.jtekt.co.jp/e/products/toyopuc/toyopuc-pc10g/index.html) | [JTEKT Toyopuc CMP-Link Ethernet (Gen1)](docId\:CzuJdZU6F6tli9LhGnqgY)  |                                                              |
| [JTEKT Toyopuc PCk06](https://toyoda.jtekt.co.jp/e/products/toyopuc/toyopuc-pck/index.html)  |                                                                         | [JTEKT Toyopuc Serial (Gen1)](docId:1SVVbH3Bi2eL15knJjQRB)   |


[title] IEC
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for the IEC standard that your device supports.

| **Device Standard** | **Compatible Ethernet DeviceHub Driver**                       |
| ------------------- | -------------------------------------------------------------- |
| IEC 60870-5-102     | [IEC60870-5-102 Ethernet (Gen1)](docId\:YHfkt3awS2ZHicA_AUWCX) |
| IEC 60870-5-104     | [IEC60870-5-104 Ethernet (Gen1)](docId:5V0XNHO_lvDdMlDDszWJX)  |


[title] Mitsubishi A2USH Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi A2USH Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                                                                      |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**                | Serial                                                                                                                                |
| **Validated devices/series**   | [A Series](https://www.mitsubishielectric.com/fa/products/cnt/plca/pmerit/concept/index.html) models:<br />* A2A
* A2U
* A2AS
* A2USH |
| **Replaced with Gen 2 driver** | [Mitsubishi A Series Serial](docId:2vVoJ8ys8gVfV7O6T8zNg)                                                                             |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed. ****
   **Device**: Mitsubishi A2USH Serial****
   **Communication I/F**: RS232 with a serial cable. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/W1DX7fIfFf0BIrEW_R-rY_mitsubishi-a2ush-serial.png" size="80" width="720" height="263" caption="Mitsubishi A2USH Serial reference" position="center" showCaption="true"}
2. Launch GX developer v8.103H software and connect the device with a serial cable.
3. Click **Online > Read from PLC**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MLA3ZFZ2hfcagelDvbR-D_mitsubishi-a2n-serial-read.png" size="80" width="616" height="433" caption="Read from PLC option" position="center" showCaption="true"}
4. Select the PLC series.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eZnK_RaZ7LsAWZIm8BepA_mitsubishi-a2n-serial-series.png" size="60" width="302" height="106" caption="PLC series drop-down list " position="center" showCaption="true"}
5. Set up communications, and then click **Communication Test**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LQkmOe9yRKuJjTp0F2Ykc_mitsubishi-a2n-serial-communication.png" size="80" width="750" height="480" caption="Communication Test option " position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Mitsubishi                        |
| **Driver**             | Mitsubishi A2USH Serial (Gen1)    |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 9600                              |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------- |
| X        | bit             | HHHH               | 0               | 65535           | Input Relay     |
| Y        | bit             | HHHH               | 0               | 65535           | Output Relay    |
| M        | bit             | DDDDD              | 0               | 65535           |                 |
| B        | bit             | HHHH               | 0               | 65535           |                 |
| F        | bit             | DDDDD              | 0               | 65535           |                 |
| R        | word            | DDDDD              | 0               | 65535           |                 |
| W        | word            | HHHH               | 0               | 65535           |                 |
| D        | word            | DDDDD              | 0               | 65535           | Data Register   |
| CV       | word            | DDDDD              | 0               | 65535           | Counter Memory  |
| TV       | word            | DDDDD              | 0               | 65535           | Timer Memory    |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Modbus UDP (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 1 Drivers/

:::hint{type="info"}
**Note**: This driver will be deprecated in a future release. We recommend using the Gen 2 [Modbus UDP](docId:2tSQ-h8tueu-_mt9d-Zgs).
:::

Review the following information for setting up and configuring the Modbus UDP (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                          |
| ------------------------------ | ----------------------------------------- |
| **Driver type**                | Ethernet                                  |
| **When to use**                | UDP connection to a Modbus device         |
| **Replaced with Gen 2 driver** | [Modbus UDP](docId:2tSQ-h8tueu-_mt9d-Zgs) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Modbus                                   |
| **Driver**          | Modbus UDP (Gen1)                        |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 502                                      |
| **Station ID**      | 0                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| -------- | --------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D        | bit             | DDDD               | 0               | 9999            | Discrete Input Contacts         |
| C        | bit             | DDDD               | 0               | 9999            | Discrete Output Coils           |
| H        | word            | DDDD               | 0               | 9999            | Analog Output Holding Registers |
| I        | word            | DDDD               | 0               | 9999            | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::




[title] JTEKT Toyopuc CMP-Link Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/JTEKT Toyopuc/

Review the following information for setting up and configuring the JTEKT Toyopuc CMP-Link Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                             |
| ---------------------------- | -------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                     |
| **Validated devices/series** | [JTEKT Toyopuc PC10](https://toyoda.jtekt.co.jp/e/products/toyopuc/toyopuc-pc10g/index.html) |




To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | JTEKT Toyopuc                            |
| **Driver**          | JTEKT Toyopuc CMP-Link Ethernet (Gen1)   |
| **Network Address** | The device address you defined in Step 1 |
| **Network Port**    | 4096                                     |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** |
| -------- | --------------- | ------------------ | --------------- | --------------- |
| 1X       | bit             | HHh                | 0               | 2047            |
| 2X       | bit             | HHh                | 0               | 2047            |
| 3X       | bit             | HHh                | 0               | 2047            |
| 1Y       | bit             | HHh                | 0               | 2047            |
| 2Y       | bit             | HHh                | 0               | 2047            |
| 3Y       | bit             | HHh                | 0               | 2047            |
| 1M       | bit             | HHh                | 0               | 2047            |
| 2M       | bit             | HHh                | 0               | 2047            |
| 3M       | bit             | HHh                | 0               | 2047            |
| 1K       | bit             | HHh                | 0               | 2047            |
| 2K       | bit             | HHh                | 0               | 2047            |
| 3K       | bit             | HHh                | 0               | 2047            |
| 1L       | bit             | HHh                | 0               | 2047            |
| 2L       | bit             | HHh                | 0               | 2047            |
| 3L       | bit             | HHh                | 0               | 2047            |
| 1V       | bit             | Hh                 | 0               | 255             |
| 2V       | bit             | Hh                 | 0               | 255             |
| 3V       | bit             | Hh                 | 0               | 255             |
| 1T       | bit             | HHh                | 0               | 2047            |
| 2T       | bit             | HHh                | 0               | 2047            |
| 3T       | bit             | HHh                | 0               | 2047            |
| 1C       | bit             | HHh                | 0               | 2047            |
| 2C       | bit             | HHh                | 0               | 2047            |
| 3C       | bit             | HHh                | 0               | 2047            |
| 1S       | bit             | HHHh               | 0               | 16383           |
| 2S       | bit             | HHHh               | 0               | 16383           |
| 3S       | bit             | HHHh               | 0               | 16383           |
| 1N       | bit             | HHHh               | 0               | 8191            |
| 2N       | bit             | HHHh               | 0               | 8191            |
| 3N       | bit             | HHHh               | 0               | 8191            |
| 1D       | bit             | HHHHh              | 0               | 196607          |
| 2D       | bit             | HHHHh              | 0               | 196607          |
| 3D       | bit             | HHHHh              | 0               | 196607          |
| 1R       | bit             | HHHHh              | 0               | 32767           |
| 2R       | bit             | HHHHh              | 0               | 32767           |
| 3R       | bit             | HHHHh              | 0               | 32767           |
| B        | bit             | HHHHh              | 0               | 131071          |
| H        | bit             | HHHh               | 0               | 32767           |
| U        | bit             | HHHHHh             | 0               | 2097151         |
| EX       | bit             | HHh                | 0               | 2047            |
| EY       | bit             | HHh                | 0               | 2047            |
| EM       | bit             | HHHh               | 0               | 16383           |
| EK       | bit             | HHh                | 0               | 2047            |
| EL       | bit             | HHh                | 0               | 2047            |
| EV       | bit             | HHHh               | 0               | 16383           |
| ET       | bit             | HHh                | 0               | 2047            |
| EC       | bit             | HHh                | 0               | 2047            |
| ES       | bit             | HHHh               | 0               | 16383           |
| EN       | bit             | HHHh               | 0               | 16383           |
| GX       | bit             | HHHh               | 0               | 65535           |
| GY       | bit             | HHHh               | 0               | 65535           |
| GM       | bit             | HHHh               | 0               | 65535           |
| EB       | bit             | HHHHHh             | 0               | 4194303         |
| FR       | bit             | HHHHHh             | 0               | 2097151         |
| 1XW      | bit             | HH                 | 0               | 127             |
| 2XW      | bit             | HH                 | 0               | 127             |
| 3XW      | bit             | HH                 | 0               | 127             |
| 1YW      | bit             | HH                 | 0               | 127             |
| 2YW      | bit             | HH                 | 0               | 127             |
| 3YW      | bit             | HH                 | 0               | 127             |
| 1MW      | bit             | HH                 | 0               | 127             |
| 2MW      | bit             | HH                 | 0               | 127             |
| 3MW      | bit             | HH                 | 0               | 127             |
| 1KW      | bit             | HH                 | 0               | 127             |
| 2KW      | bit             | HH                 | 0               | 127             |
| 3KW      | bit             | HH                 | 0               | 127             |
| 1LW      | bit             | HH                 | 0               | 127             |
| 2LW      | bit             | HH                 | 0               | 127             |
| 3LW      | bit             | HH                 | 0               | 127             |
| 1VW      | bit             | H                  | 0               | 15              |
| 2VW      | bit             | H                  | 0               | 15              |
| 3VW      | bit             | H                  | 0               | 15              |
| 1TW      | bit             | HH                 | 0               | 127             |
| 2TW      | bit             | HH                 | 0               | 127             |
| 3TW      | bit             | HH                 | 0               | 127             |
| 1CW      | bit             | HH                 | 0               | 127             |
| 2CW      | bit             | HH                 | 0               | 127             |
| 3CW      | bit             | HH                 | 0               | 127             |
| 1SW      | bit             | HHH                | 0               | 16383           |
| 2SW      | bit             | HHH                | 0               | 1023            |
| 3SW      | bit             | HHH                | 0               | 1023            |
| 1NW      | bit             | HHH                | 0               | 511             |
| 2NW      | bit             | HHH                | 0               | 511             |
| 3NW      | bit             | HHH                | 0               | 511             |
| 1DW      | bit             | HHHH               | 0               | 12287           |
| 2DW      | bit             | HHHH               | 0               | 12287           |
| 3DW      | bit             | HHHH               | 0               | 12287           |
| 1RW      | bit             | HHHH               | 0               | 2047            |
| 2RW      | bit             | HHHH               | 0               | 2047            |
| 3RW      | bit             | HHHH               | 0               | 2047            |
| BW       | bit             | HHHH               | 0               | 8191            |
| HW       | bit             | HHH                | 0               | 2047            |
| UW       | bit             | HHHHH              | 0               | 131071          |
| EXW      | bit             | HH                 | 0               | 127             |
| EYW      | bit             | HH                 | 0               | 127             |
| EMW      | bit             | HHH                | 0               | 1023            |
| EKW      | bit             | HH                 | 0               | 127             |
| ELW      | bit             | HH                 | 0               | 127             |
| EVW      | bit             | HHH                | 0               | 1023            |
| ETW      | bit             | HH                 | 0               | 127             |
| ECW      | bit             | HH                 | 0               | 127             |
| ESW      | bit             | HHH                | 0               | 1023            |
| ENW      | bit             | HHH                | 0               | 1023            |
| GXW      | bit             | HHH                | 0               | 4095            |
| GYW      | bit             | HHH                | 0               | 4095            |
| GMW      | bit             | HHH                | 0               | 4095            |
| WT       | bit             | H                  | 0               | 6               |
| EBW      | bit             | HHHHH              | 0               | 262143          |
| FRW      | bit             | HHHHH              | 0               | 131071          |

:::hint{type="info"}
**Note**: The *Count&#x20;*&#x74;ag parameter is only available for Litmus Edge version 3.11.3 and later.&#x20;
:::

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Modbus TCP-Offset (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/Gen 1 Drivers/

:::hint{type="info"}
**Note**: This driver will be deprecated in a future release. We recommend using the Gen 2 [Modbus TCP](docId\:NbER6LlRZwtlKO50-hv3V).
:::

Review the following information for setting up and configuring the Modbus TCP-Offset (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                           |
| ------------------------------ | ------------------------------------------ |
| **Driver type**                | Ethernet                                   |
| **When to use**                | TCP connection to a Modbus device          |
| **Replaced with Gen 2 driver** | [Modbus TCP](docId\:NbER6LlRZwtlKO50-hv3V) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Modbus                                   |
| **Driver**          | Modbus TCP Offset (Gen1)                 |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 502                                      |
| **Station ID**      | 0                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**  | **Value Types**            | **Address Format** | **Min Address** | **Max Address** | **Description**                 |
| --------- | -------------------------- | ------------------ | --------------- | --------------- | ------------------------------- |
| D         | bit                        | DDDD               | 0               | 9999            | Discrete Input Contacts         |
| C         | bit                        | DDDD               | 0               | 9999            | Discrete Output Coils           |
| H\_Bit    | bit                        | D0DDDdd            | 0               | 999915          | Analog Output Holding Registers |
| I\_Bit    | bit                        | DDDDdd             | 00              | 9990915         | Analog Input Registers          |
| H         | int, uint                  | DDDD               | 0               | 9999            | Analog Output Holding Registers |
| I         | int, uint                  | DDDD               | 0               | 9999            | Analog Input Registers          |
| H\_Ulong  | ulong, ulong(big-endian)   | DDDD               | 0               | 9998            | Analog Output Holding Registers |
| I\_Ulong  | ulong, ulong(big-endian)   | DDDD               | 0               | 9998            | Analog Input Registers          |
| H\_Float  | float, float(big-endian)   | DDDD               | 0               | 9998            | Analog Output Holding Registers |
| I\_Float  | float, float(big-endian)   | DDDD               | 0               | 9998            | Analog Input Registers          |
| H\_Double | double, double(big-endian) | DDDD               | 0               | 9996            | Analog Output Holding Registers |
| I\_Double | double, double(big-endian) | DDDD               | 0               | 9996            | Analog Input Registers          |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Parker
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                           | **Compatible Ethernet DeviceHub Drivers**                       |
| ------------------------------------------------------------------------ | --------------------------------------------------------------- |
| [Parker ACR9000](https://ph.parker.com/ca/en/acr9000-motion-controllers) | [Parker ACR9000 Ethernet (Gen1)](docId\:ge940FEKl1H7IOVrmIloZ)  |


[title] MTConnect Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/MTConnect/

Review the following information for setting up and configuring the MTConnect Ethernet (Gen1)&#x20;driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                          |
| ---------------------------- | ------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                  |
| **Validated devices/series** | Devices that support the [MTConnect](https://www.mtconnect.org/) standard |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure your device for Ethernet access.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | MTConnect Ethernet&#xD;&#xA;&#xD;            |
| **Driver**          | MTConnect Ethernet (Gen1)                    |
| **Network Address** | The device address you defined during Step 1 |
| **Port**            | 47808                                        |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, select the name **R** and value type **raw**, and then configure the remaining parameters.&#x20;

You can also browse for tags to add to this device. See [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd).

## Tag Parameters

- **Name**: Select **R**.
- **Value Type**: Select **raw**.&#x20;
- **Polling Interval**: Enter a value in seconds.&#x20;
- **Tag Name**: Enter a name.&#x20;
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] OPC UA Client Subscribe (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/OPC UA/

:::hint{type="warning"}
**Important**: This driver was deprecated in Litmus Edge version 3.5.2. We recommend using the Gen 2 [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR).
:::

Review the following information for setting up and configuring the OPC UA Client Subscribe (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                    |
| ------------------------------ | ----------------------------------------------------------------------------------- |
| **Driver type**                | Ethernet                                                                            |
| **Validated devices/series**   | Unified Automation &#xA;Prosys&#xA;[](https://opcfoundation.org/certified-products) |
| **Replaced with Gen 2 driver** | [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR)                              |

# Supported Servers

## OPC UA Client

- Used to subscribe data from OPC UA Servers.
- Subscribes to the data and waits for OPC Server to send the update.
- Most server vendors recommend to use subscription mode.

# Set up the PLC Device in DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                          |
| ------------------- | ------------------------------ |
| **Type**            | OPC UA                         |
| **Driver**          | OPC UA Client Subscribe (Gen1) |
| **Network Address** | The device IP address          |
| **Port**            | 4840                           |

# Configure the List of Registers

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

- Certain device drivers do *not* have a list of Register Names in the DeviceHub Add/Edit Tag form. These are *Free Tag* PLCs. For Free Tag requirements, see [Device Connectivity Issues](docId\:cEy2HVJQ2J6nOkUsBSqDs).
- For the Register Name, in the DeviceHub Add/Edit Tag form, map the OPC server tags to the client using this format: `ns=1;s=tagname`.&#x20;
  - Example: `ns=2;s=Demo.Static.Scalar.Boolean`
- **Server Name** currently is not used, however, an entry must be made in this field.
- The **Browse&#x20;**&#x69;con displayed on the device tile means that this PLC uses Browse Tags. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) for more information.&#x20;
:::

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, use the following tag/register mapping table.

| **Name** | **Value Type** |
| -------- | -------------- |
| R        | BOOL           |
| R        | BYTE           |
| R        | CHAR           |
| R        | SHORT          |
| R        | WORD           |
| R        | LONG           |
| R        | DWORD          |
| R        | FLOAT          |
| R        | DOUBLE         |
| R        | STRING         |
| R        | BoolArray      |
| R        | ByteArray      |
| R        | CharArray      |
| R        | ShortArray     |
| R        | WordArray      |
| R        | LongArray      |
| R        | DWordArray     |
| R        | FloatArray     |
| R        | DoubleArray    |


[title] Opto Devices
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                   | **Compatible Ethernet DeviceHub Driver**                              |
| ------------------------------------------------ | --------------------------------------------------------------------- |
| [OPTO22 SNAP PAC System](http://www.opto22.com/) | [Opto22 MMIO Protocol Ethernet (Gen1)](docId\:F07uL9hc8Sn-KYKRJ6n-m)  |


[title] IEC60870-5-104 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/IEC/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

Review the following information for setting up and configuring the IEC60870-5-104 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter | Compatible items |
| ----------------------- | ---------------- |
| **Driver type**         | Ethernet         |
| **Device standard**     | IEC 60870-5-104  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                                    |
| ---------------------- | ---------------------------------------- |
| **Type**               | IEC                                      |
| **Driver**             | IEC60870-5-104 Ethernet (Gen1)           |
| **Network Address**    | The device address you defined in Step 1 |
| **Network Port&#x20;** | 2404                                     |
| **Station ID**         | 1                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**     | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**                      |
| ------------ | --------------- | ------------------ | --------------- | --------------- | ------------------------------------ |
| M\_SP\_NA\_1 | bit             | DDDDDDDD           | 0               | 16777215        | Single point                         |
| M\_SP\_TB\_1 | bit             | DDDDDDDD           | 0               | 16777215        | Single point                         |
| M\_DP\_NA\_1 | byte            | DDDDDDDD           | 0               | 16777215        | Double point                         |
| M\_DP\_TB\_1 | byte            | DDDDDDDD           | 0               | 16777215        | Double point                         |
| M\_ST\_NA\_1 | byte            | DDDDDDDD           | 0               | 16777215        | Step position                        |
| M\_ST\_TB\_1 | byte            | DDDDDDDD           | 0               | 16777215        | Step position                        |
| M\_BO\_NA\_1 | dword           | DDDDDDDD           | 0               | 16777215        | Bit string of 32bits                 |
| M\_BO\_TB\_1 | dword           | DDDDDDDD           | 0               | 16777215        | Bit string of 32bits                 |
| M\_ME\_NA\_1 | float           | DDDDDDDD           | 0               | 16777215        | Measured Normalized                  |
| M\_ME\_TD\_1 | float           | DDDDDDDD           | 0               | 16777215        | Measured Normalized                  |
| M\_ME\_NB\_1 | word            | DDDDDDDD           | 0               | 16777215        | Measured Scaled                      |
| M\_ME\_TE\_1 | word            | DDDDDDDD           | 0               | 16777215        | Measured Scaled                      |
| M\_ME\_NC\_1 | float           | DDDddd             | 0               | 16777215        | Measured short float                 |
| M\_ME\_TF\_1 | float           | DDDDDDDD           | 1               | 16777215        | Measured short float                 |
| M\_IT\_NA\_1 | custom          | DDDDDDDD           | 1               | 16777215        | Integrated totals                    |
| M\_IT\_TB\_1 | custom          | DDDDDDDD           | 0               | 16777215        | Integrated totals                    |
| C\_SC\_NA\_1 | bit             | DDDDDDDD           | 0               | 16777215        | Single command information           |
| C\_SC\_TA\_1 | bit             | DDDDDDDD           | 0               | 16777215        | Single command information           |
| C\_DC\_NA\_1 | byte            | DDDDDDDD           | 0               | 16777215        | Double command information           |
| C\_DC\_TA\_1 | byte            | DDDDDDDD           | 0               | 16777215        | Double command information           |
| C\_RC\_NA\_1 | byte            | DDDDDDDD           | 0               | 16777215        | Regulating step command              |
| C\_RC\_TA\_1 | byte            | DDDDDDDD           | 0               | 16777215        | Regulating step command              |
| C\_BO\_NA\_1 | dword           | DDDDDDDD           | 0               | 16777215        | Bit string of 32bits command         |
| C\_BO\_TA\_1 | dword           | DDDDDDDD           | 0               | 16777215        | Bit string of 32bits command         |
| C\_SE\_NA\_1 | float           | DDDDDDDD           | 0               | 16777215        | Set point command - Normalized value |
| C\_SE\_TA\_1 | float           | DDDDDDDD           | 0               | 16777215        | Set point command - Normalized value |
| C\_SE\_NB\_1 | word            | DDDDDDDD           | 0               | 16777215        | Set point command - Scaled value     |
| C\_SE\_TB\_1 | word            | DDDDDDDD           | 0               | 16777215        | Set point command - Scaled value     |
| C\_SE\_NC\_1 | float           | DDDDDDDD           | 0               | 16777215        | Set point command - Float value      |
| C\_SE\_TC\_1 | float           | DDDDDDDD           | 0               | 16777215        | Set point command - Float value      |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] OSI Agent Advanced
[path] QuickStart Guide/Industrial Systems Connection Guide/OSI/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

Review the following information for setting up and configuring the OSI Agent driver.&#x20;

:::hint{type="warning"}
**Important**:&#x20;

- The DH Historian Agent can only have one OSI PI agent and one OSI PI server connection with one username/password configured for the OSI PI server.
- The username/password in the DeviceHub configuration is to access the DH Historian Agent, not the OSI PI server.
- If you would like to manage access to tags/data being sent through the OSI PI agent and server, you can set up multiple Litmus Edge connections through the NATS connector. See [Set Up Edge Cascading with the NATS Connector](docId\:p9zqIlAmmJcfPzzj5kJLO) to learn more. &#x20;
:::

# Set Up the OSI Agent

See [DH Historian Agent](docId\:YMPR6YQtY8t2-KoFYC35y) to review how to set up and configure the OSI Agent driver.&#x20;

# OSI Agent Advanced Driver Settings in Litmus Edge

If you review or edit the settings of the OSI Agent Advanced device, refer to the following parameters.&#x20;

| Parameter                      | Value                                                                                                                                                                                            |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Type**                       | OSI                                                                                                                                                                                              |
| **Driver**                     | OSI Agent Advanced                                                                                                                                                                               |
| **Network Port**               | The port configured in the DH Historian Agent. The default value is 4777.                                                                                                                        |
| **Interface**                  | You have the option of selecting the interface for accepting client connections. The default value is 0.0.0.0, which means using all network interfaces for accepting connections from clients.  |
| **User**                       | The username configured in the DH Historian Agent.                                                                                                                                               |
| **Password**                   | The password configured in the DH Historian Agent.                                                                                                                                               |
| **Enable TLS**                 | Disable or Enable                                                                                                                                                                                |
| **Nats Connection Name**       | The NATS connection name, which should be the same as the Windows-based OSI Agent setting.                                                                                                       |
| **Nats Request Timeout (ms)**  | 5000                                                                                                                                                                                             |
| **Browse Request Items Count** | 500                                                                                                                                                                                              |

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types**                                                                                                                                                                                                        |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| R        | float64, bool\[], sbyte\[], byte\[], int32\[], sbyte, int16, int64, uint64\[], float64\[], string, uint16\[], float32\[], bool, byte, float32, uint64, string\[], int16\[], uint32\[], int64\[], uint16, int32, uint32 |
| State    | byte, string                                                                                                                                                                                                           |
| Status   | JSON                                                                                                                                                                                                                   |

## Tag Parameters

- **Name**: Select **R**. &#x20;
- **Value Type**: Select a value type.&#x20;
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Publishing Interval**:
  - **Polling Mode**: Enter the publishing interval in seconds. Default is `1`.
  - **Event Mode**: Default is `0`.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Untitled
[path] QuickStart Guide/Industrial Systems Connection Guide/Modbus/


[title] Mitsubishi iQ-F Ethernet
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 2 Drivers/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

Review the following information for setting up and configuring the Mitsubishi iQ-F Ethernet driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                     |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                                                                                                                             |
| **Validated devices/series** | ﻿[MELSEC iQ-F&#xA;](https://www.mitsubishielectric.com/fa/products/cnt/plcf/items/index.html)[MELSEC iQ-R](https://www.mitsubishielectric.com/fa/products/cnt/plcr/items/index.html) |
| **Replaces Gen 1 driver(s)** | [Mitsubishi FX5U-Ethernet ASCII (Gen1)](docId:7rCY1iGmmtCdt_5hDrVdK)&#xA;[Mitsubishi FX5U-Ethernet-Binary (Gen1)](docId\:ROlBOIphFZ5cR9WDdlBzB)                                      |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC. See the steps below to view and edit the open ports on the PLC.
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.

1. Open the PLC project in GXWorks 3.
2. From the Navigation panel, click **Ethernet Port&#xA0;**&#x74;o view the communication parameters. Note down the **IP Address**, **Subnet Mask**, **Default Gateway**, and **Communication Data Code**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/z_GMbNgF_qKC9kS9laMs2_mitsubishi-fx5u-ethernet-binary-communication.png" size="80" width="1048" height="510" position="center" caption="Ethernet Port" showCaption="true"}
3. Some CPUs have an **Enable/Disable Online Change&#x20;**&#x73;etting. To allow the driver to write tag values to the PLC, this setting needs to be set to **Enable All (SLMP)**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/s2tgMv9KxlDyAahTP3jr5_image.png" size="80" width="1099" height="549" position="center" showCaption="false"}
4. Double-click **External Device Configuration**.
5. View the available connections. If necessary, add more TCP connections to the SLMP Connection Module.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PTKshBgq4vrjxR431qWrL_screenshot-2024-06-18-101802.png" size="80" width="950" height="559" position="center" showCaption="false"}

:::hint{type="info"}
**Note:** If you modify any CPU or module parameters, you must power cycle the PLC after downloading the changes.
:::

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter                                      | Value                                    |
| ---------------------------------------------- | ---------------------------------------- |
| **Type**                                       | Mitsubishi                               |
| **Driver**                                     | Mitsubishi iQ-F Ethernet                 |
| **Network Address**                            | The device address you defined in Step 1 |
| **Network Port**&#xA;PLC Port                  | 5002                                     |
| **Network ID**&#xA;Network No. of PLC          | 0                                        |
| **Station ID**&#xA;Station No. of PLC          | 255                                      |
| **Encoding**&#xA;Encoding Format               | Select Ascii or Binary&#xA;              |
| **Read Timeout**                               | 1000 (milliseconds)                      |
| **Retry Count**&#xA;The number of read retries | 0&#xA;                                   |
| **Keep Alive**&#xA;TCP Keep-Alive              | 60 (seconds)&#xA;                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**   | **Value Type**                      | **Address Format** | **Min Address** | **Max Address** | **Description**                    |
| ---------- | ----------------------------------- | ------------------ | --------------- | --------------- | ---------------------------------- |
| LTC        | bit                                 | DDDD               | 0               | 1023            | Long Timer Coil                    |
| LTS        | bit                                 | DDDD               | 0               | 1023            | Long Timer Contact                 |
| LTN        | dword, dint, string                 | DDDD               | 0               | 1023            | Long Timer Current Value           |
| LSC        | bit                                 | DDDD               | 0               | 1023            | Long Retentive Timer Coil          |
| LSS        | bit                                 | DDDD               | 0               | 1023            | Long Retentive Timer Contact       |
| LSN        | dword, dint, string                 | DDDD               | 0               | 1023            | Long Retentive Timer Current Value |
| LCC        | bit                                 | DDDD               | 0               | 1023            | Long Counter Coil                  |
| LCS        | bit                                 | DDDD               | 0               | 1023            | Long Counter Contact               |
| LCN        | dword, dint                         | DDDD               | 0               | 1023            | Long Counter Current Value         |
| LZ         | dword, dint&#xD;                    | D                  | 0               | 1               | Long Index Register                |
| SM         | bit                                 | DDDD               | 0               | 2047            | Special relay                      |
| X          | bit                                 | DDDDD              | 0               | 16383           | Input Relay                        |
| Y          | bit                                 | DDDDD              | 0               | 16383           | Output Relay                       |
| M          | bit                                 | DDDDD              | 0               | 61439           | Input Relay                        |
| L          | bit                                 | DDDDD              | 0               | 32767           | Latch Relay                        |
| F          | bit                                 | DDDDD              | 0               | 32767           | Annunciator                        |
| V          | bit                                 | DDDDD              | 0               | 32767           | Edge Relay                         |
| B          | bit                                 | DDDDD              | 0               | 61439           | Link Relay                         |
| TS         | bit                                 | DDDDD              | 0               | 25471           | Timer Contact                      |
| TC         | bit                                 | DDDDD              | 0               | 25471           | Timer Coil                         |
| SS         | bit                                 | DDDDD              | 0               | 25471           | Retentive Timer Contact            |
| SC         | bit                                 | DDDDD              | 0               | 25471           | Retentive Timer Coil               |
| CS         | bit                                 | DDDDD              | 0               | 25471           | Counter Contact                    |
| CC         | bit                                 | DDDDD              | 0               | 25471           | Counter Coil                       |
| SB         | bit                                 | DDDDD              | 0               | 32767           | Special Link Relay                 |
| S          | bit                                 | DDDDD              | 0               | 16383           | Step Relay                         |
| SD         | word, dword, int, dint, real, dreal | DDDD               | 0               | 2047            | Special Register                   |
| SD\_string | string                              | DDDD               | 0               | 2047            | Special Register                   |
| SD\_bit    | bit                                 | DDDDdd             | 0               | 204715          | Special Register                   |
| D          | word, dword, int, dint, real, dreal | DDDDDDD            | 0               | 4184063         | Data Register                      |
| D\_string  | string                              | DDDDDDD            | 0               | 4184063         | Data Register                      |
| D\_bit     | bit                                 | DDDDDDDdd          | 0               | 418406315       | Data Register                      |
| W          | word, dword, int, dint, real, dreal | DDDDDDD            | 0               | 4184063         | Link Register                      |
| W\_string  | string                              | DDDDDDD            | 0               | 4184063         | Link Register                      |
| W\_bit     | bit                                 | DDDDDDDdd          | 0               | 418406315       | Link Register                      |
| TN         | word, dword, int, dint, string      | DDDDD              | 0               | 25471           | Timer Current Value                |
| SN         | word, dword, int, dint, string      | DDDDD              | 0               | 25471           | Retentive Timer Current Value      |
| CN         | word, dword, int, dint, real, dreal | DDDDD              | 0               | 25471           | Counter Current Value              |
| CN\_string | string                              | DDDDD              | 0               | 25471           | Counter Current Value              |
| SW         | word, dword, int, dint, real, dreal | DDDD               | 0               | 2047            | Special Link Register              |
| SW\_string | string                              | DDDD               | 0               | 2047            | Special Link Register&#xA;         |
| SW\_bit    | bit                                 | DDDDdd             | 0               | 204715          | Special Link Register              |
| Z          | word, dword, int, dint, real, dreal | DD                 | 0               | 20              | Index Register                     |
| Z\_string  | string                              | DD                 | 0               | 20              | Index Register                     |
| R          | word, dword, int, dint, real, dreal | DDDDD              | 0               | 32767           | File Register                      |
| R\_string  | string                              | DDDDD              | 0               | 32767           | File Register                      |
| R\_bit     | bit                                 | DDDDDdd            | 0               | 3276715         | File Register                      |
| ZR         | word, dword, int, dint, real, dreal | DDDDDDD            | 0               | 4184063         | Serial Num File Register           |
| ZR\_string | string                              | DDDDDDD            | 0               | 4184063         | Serial Num File Register           |
| ZR\_bit    | bit                                 | DDDDDDDdd          | 0               | 418406315       | Serial Num File Register           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values.&#x20;
- **Length**: Available when you select the `string` value type. Enter the number of characters for tag values.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Mitsubishi FX3G Binary Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Mitsubishi/Gen 1 Drivers/

Review the following information for setting up and configuring the Mitsubishi FX3G Binary Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                       |
| ---------------------------- | -------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                               |
| **Validated devices/series** | [MELSEC-F](https://www.mitsubishielectric.com/fa/products/cnt/plc_fx/items/index.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

:::hint{type="info"}
**Note**: Only one connection is allowed per port defined in the PLC. See the steps below to view and edit the open ports on the PLC.
:::

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed. ****
   **Device**: Mitsubishi FX3GE-24M****
   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ooOmPpTCH64e_aaCJrF87_mitsubishi-fx3g-ascii.png" size="80" width="398" height="244" caption="Reference image of device" position="center" showCaption="true"}
2. Connect the device to your pc using USB and launch the GX Works 2 v1.560J software.
3. Click **Online > Read from PLC**.
4. Select PLC series.
5. Set up the connection.&#x20;
6. Click **Connection Test**.&#x20;
7. From the Navigation panel, click **Parameter > PLC Parameter > Ethernet Port**.
8. From the Navigation panel, click **Connection Destination > connection1**.
9. Double-click **PLC Module&#xA0;**, click **Search for FXCPU on network**, and then select the target device.
10. Click **Connection Test**.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Mitsubishi                               |
| **Driver**          | Mitsubishi FX3G Binary Ethernet (Gen1)   |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 5001                                     |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**       |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------------- |
| X        | bit             | DDD                | 0               | 255             | Input Relay           |
| Y        | bit             | DDD                | 0               | 255             | Output Relay          |
| M        | bit             | DDDD               | 0               | 7999            | Internal Relay        |
| T        | bit             | DDD                | 0               | 511             | Timer Contacts        |
| C        | bit             | DDD                | 0               | 255             | Counter Contacts      |
| SM       | bit             | DDDD               | 8000            | 8511            | Source Int. Relays    |
| S        | bit             | DDDD               | 0               | 4095            | Step Relays           |
| R        | word            | DDDDD              | 0               | 32767           | File Register         |
| SD       | word            | DDDD               | 8000            | 8511            | Service Data Register |
| CV2      | word            | DDD                | 200             | 255             | Counter Value         |
| D        | word            | DDDD               | 0               | 7999            | Data Registers        |
| CV       | word            | DDD                | 0               | 199             | Counter Value         |
| TV       | word            | DDD                | 0               | 511             | Timer Value           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] OPC UA Client (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/OPC UA/

:::hint{type="warning"}
**Important**: This driver was deprecated in Litmus Edge version 3.5.2. We recommend using the Gen 2 [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR).
:::

Review the following information for setting up and configuring the OPC UA Client (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                   |
| ------------------------------ | ---------------------------------------------------------------------------------- |
| **Driver type**                | Ethernet                                                                           |
| **Validated devices/series**   | Unified Automation&#xA;Prosys&#xA;[](https://opcfoundation.org/certified-products) |
| **Replaced with Gen 2 driver** | [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR)                             |

# Supported Servers

## OPC UA Client

- Used to poll data from OPC UA servers.
- Does not allow subscription mode.
- Mostly used for systems which have less number of tags or using a DA to UA wrapper. Example: SIKORA or older HMI Systems.

# Set up the PLC Device in DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                 |
| ------------------- | --------------------- |
| **Type**            | OPC UA                |
| **Driver**          | OPC UA Client (Gen1)  |
| **Network Address** | The device IP address |
| **Network Port**    | 4840                  |

# Configure the List of Registers

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

- Certain device drivers do *not* have a list of Register Names in the DeviceHub Add/Edit Tag form. These are *Free Tag* PLCs. For Free Tag requirements, see [Device Connectivity Issues](docId\:cEy2HVJQ2J6nOkUsBSqDs).
- For the Register Name, in the DeviceHub Add/Edit Tag form, map the OPC server tags to the client using this format: `ns=1;s=tagname`.&#x20;
  - Example: `ns=2;s=Demo.Static.Scalar.Boolean`
- **Server Name** currently is not used, however, an entry must be made in this field.
- The **Browse&#x20;**&#x69;con displayed on the device tile means that this PLC uses Browse Tags. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) for more information.&#x20;
:::

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, use the following tag/register mapping table.

| **Name** | **Value Type** |
| -------- | -------------- |
| R        | BOOL           |
| R        | BYTE           |
| R        | CHAR           |
| R        | SHORT          |
| R        | WORD           |
| R        | LONG           |
| R        | DWORD          |
| R        | FLOAT          |
| R        | DOUBLE         |
| R        | STRING         |
| R        | BoolArray      |
| R        | ByteArray      |
| R        | CharArray      |
| R        | ShortArray     |
| R        | WordArray      |
| R        | LongArray      |
| R        | DWordArray     |
| R        | FloatArray     |
| R        | DoubleArray    |


[title] LS Master-K CPU Direct Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/LS Industrial System/

Review the following information for setting up and configuring the LS Master-K CPU Direct Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Serial                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Validated devices/series** | LS Master-K Series:&#xA;[LS Electric K80S](https://sol.ls-electric.com/product/document/2445)&#xA;[LS Electric K120S](https://www.ls-electric.com/products/view/Smart_Automation_Solution/PLC/MASTER-K_Series/K120S)&#xA;[LS Electric K200S](https://sol.ls-electric.com/product/document/2436)&#xA;[LS Electric K300S](https://sol.ls-electric.com/product/document/2436)&#xA;[LS Electric K1000S](https://sol.ls-electric.com/product/document/2436) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;

   **Device**: LS Industrial Systems

   **Communication I/F**: RS232. Refer to the following figures.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/D2BMrU-96nvCTBps28UAh_ls-master-k-cpu-direct-serial-reference.png" size="80" width="650" height="511" caption="LS Master-K CPU Direct Serial reference" position="center" showCaption="true"}
2. Launch KGL\_WE v3.66 Software, and then click **Project > Option > Connection Option**.
3. Set up the COM port.&#x20;
4. Click **Connect**.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                                |
| ---------------------- | ------------------------------------ |
| **Type**               | LS Industrial System                 |
| **Driver**             | LS Master-K CPU Direct Serial (Gen1) |
| **Communication Port** | Local Serial connection file path    |
| **Data Bits**          | 8                                    |
| **Baud Rate**          | 38400                                |
| **Parity**             | Even, Odd, None                      |
| **Stop Bits**          | 1                                    |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**      |
| -------- | --------------- | ------------------ | --------------- | --------------- | -------------------- |
| PW\_Bit  | bit             | DDDdd              | 0               | 25515           | I/O Relay (P)        |
| KW\_Bit  | bit             | DDDdd              | 0               | 25515           | Keep Relay (K)       |
| MW\_Bit  | bit             | DDDdd              | 0               | 25515           | Auxiliary Relay (M)  |
| LW\_Bit  | bit             | DDDdd              | 0               | 25515           | Link Relay (L)       |
| FW\_Bit  | bit             | DDDdd              | 0               | 25515           | Special Relay (F)    |
| DW\_Bit  | bit             | DDDDdd             | 0               | 999915          | D\_bit               |
| TX       | bit             | DDD                | 0               | 255             |                      |
| CX       | bit             | DDD                | 0               | 255             |                      |
| SX       | bit             | DDDD               | 0               | 9999            |                      |
| DW       | word            | DDDD               | 0               | 9999            | Data Register (D)    |
| CW       | word            | DDD                | 0               | 255             | Counte Present Value |
| TW       | word            | DDD                | 0               | 255             | Timer Present Value  |
| KW       | word            | DD                 | 0               | 31              |                      |
| PW       | word            | DDD                | 0               | 63              |                      |
| FW       | word            | DDD                | 0               | 255             | Word type for F      |
| LW       | word            | DDD                | 0               | 255             | Word type for L      |
| MW       | word            | DDD                | 0               | 255             | Word type for M      |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Manage Tags
[path] Product Features/DeviceHub/Tags/

You can manage tags by navigating to **DeviceHub&#x20;**> **Tags**.&#x20;

# Manage Existing Tags

You can manage existing tags from the *Tags&#x20;*&#x70;ane.&#x20;

**To manage existing tags:**

1. Navigate to **DeviceHub&#x20;**> **Tags**.&#x20;
2. From the *Tags&#x20;*&#x70;ane, select to view tags from *All&#x20;*&#x64;evices or specific devices. The option to select *All&#x20;*&#x64;evices is available for Litmus Edge version 3.11.0 and later.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wMc1PGckXHjNmooIZOF6p_global-search.png" size="80" width="1541" height="553" caption="List of devices" position="center" showCaption="true"}
3. If needed, use the search bar to find the tag. You have the option of using search filters **contains&#x20;**&#x61;n&#x64;**&#x20;equal to**. Search filters are available for Litmus Edge version 3.5.2 and later.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XTiTHAmWZVjaf7lJJrHI4_search-fields.png" size="80" width="1541" height="552" caption="Search filters" position="center" showCaption="true"}
4. For the tag you want to manage, click the **Action menu**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/j938xDOnvcngSmtJAYl8y_tag-action-menu.png" size="80" width="1543" height="548" caption="Tag action menu" position="center" showCaption="true"}
5. Select from the following options.&#x20;
   - **Edit**: Update the parameters for the tag as required and click **Update Tag**. Refer to the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr) for parameters specific to your device driver and review the *Tag Parameters* section.&#x20;
   - **View Write Topic**: Write Topics can be used with Flows to write to the topic. From the *Write&#x20;*&#x64;ialog box, you can click the **Copy&#x20;**&#x69;con to copy it to your clipboard. See [Write Topic Use Case](docId\:nTfszYzTK5h-RG4HkUlqe) to learn more.&#x20;
   - **View Poll Topic**: Poll Topics can be used with Flows to poll a tag. From the *Poll Once* dialog box, you can click the **Copy&#x20;**&#x69;con to copy it to your clipboard. See [Poll-once Use Case](docId\:nTfszYzTK5h-RG4HkUlqe) to learn more.&#x20;
   - **Remove**: Delete the tag from the Tags list.&#x20;
   - **Clone & Edit**: Clone an existing tag and then edit the cloned tag. When done, click **Clone Tag**.&#x20;

:::hint{type="info"}
**Note**: The *Tag Name* for the cloned tag and existing tag must be different.
:::

# Sort List of Existing Tags

You can click column names to sort the current list of tags displayed in ascending and descending order.&#x20;

:::hint{type="info"}
**Note**: When you sort the list of tags, only the currently listed tags on the page are sorted. For example, if a device has 100 tags, and 15 tags are currently displayed, only the 15 tags listed on the page are sorted. Increase the number of tags displayed on the page to view and sort more tags.&#x20;
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/h7TMgNaORn2IwqsPanKe8_image.png)

# Download Tags as a CSV File

You can download the list of tags visible in the *Tag List&#x20;*&#x62;y clicking the **Download as CSV&#x20;**&#x69;con.&#x20;

You have two options:

- Download all tags from all connected devices
- Download tags only for the currently selected device

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2pRl5QA7-n5A-UVZbxKfw_image.png" size="80" width="1504" height="344" caption="Download as CSV icon" position="center" showCaption="true"}

# Remove Multiple Tags

You can remove multiple individual tags or all tags from the *Tags&#x20;*&#x70;ane.

**To remove multiple tags:**

1. Navigate to **DeviceHub&#x20;**> **Tags**.&#x20;
2. From the *Tags&#x20;*&#x70;ane, do one of the following.
   **Remove all tags**: Select the **Tag&#x20;**&#x63;olumn check box for all the tags.&#x20;
   **Select individual tags**: Select each individual tag's check box.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cRoLXIfKa2QRCzuVUZN4F_managetags03.png" size="80" width="1903" height="297" caption="Check boxes for tags" position="center" showCaption="true"}
3. Click the **Trash** icon.&#x20;
   The *Confirmation&#x20;*&#x64;ialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lkPhs2JNfwktVA1HmErr__managetags04.png" size="80" width="1903" height="297" caption="Remove tags icon" position="center" showCaption="true"}
4. Click **Yes**.
   All tags are removed from the Tags list.

# Copy a Raw or Alias Topic

You can copy a raw or alias topic from a device's tag detail pane. Topics are used when configuring a connector.

To copy a raw or alias topic, from the *Tags&#x20;*&#x70;ane, click the **Copy&#x20;**&#x69;con in the RAW Topic column for the tag.&#x20;

:::hint{type="info"}
**Note**: To view/copy an alias topic name, the *Enable Alias Topics* option must be selected for the device configuration. See the *Enable Alias Topics* section in [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) for more information.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JKpzaGwtKtCxGmfUmX-Pp_image.png" size="80" width="1905" height="285" caption="The copy icon for a Raw topic" position="center" showCaption="true"}

# Configure Tag Column View

You can modify which columns are displayed in the *Tags&#x20;*&#x70;ane.

**To modify columns displayed**:

1. Navigate to **DeviceHub&#x20;**> **Tags**.&#x20;
2. From the *Tags&#x20;*&#x70;ane, click the **Configure** icon.&#x20;
   The Display Columns List appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4LddDJt19HKN3u6O8ZwzE_managetags05.png" size="80" width="1899" height="459" caption="The Configure icon for the Tags pane" position="center" showCaption="true"}
3. Select or deselect the columns you would like to display for the Tags List on the *Tags&#x20;*&#x70;ane, and then click outside the Display Columns List.
   The columns are displayed according to you modifications.

:::hint{type="info"}
**Note**: If the *Status&#xA0;*&#x63;heck box is enabled, a color-coded status appears next to each tag in the tag list. Green means that the status is good. Red means that there is an error.&#x20;
:::




[title] Manage the Flow Canvas
[path] Product Features/Flows Manager/

Once you click the **Go To Flow Definition** icon for a Flows Manager, you can manage the flow canvas.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zV7CQ5mBS8ivB2ygnfXjP_image.png "Go To Flow Definition")

# Filter Nodes

You can search for individual nodes by using the search bar.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_nmqM2d3zcZYO7jwNTNiw_image.png" size="80" width="886" height="456" caption="Filter nodes search bar" position="center" showCaption="true"}

# Deploy Flows

There are several options available when deploying a flow. The options in the *Deploy&#x20;*&#x64;rop-down list indicate the type of save that is currently active for a deploy action.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wSrt1ki2gtseCzqlae62k_image.png "Deploy flow options")

- **Full**: This option allows you to save the flow logic for all tabbed flows in the workspace. Everything in the workspace is deployed.

:::hint{type="info"}
**Note**: If many flows containing complex logic have been created, a full save may not be your best deploy option.
:::



- **Modified Flows**: This option only saves and deploys flows that contain changed nodes.
- **Modified Nodes**: This is the fastest option for individual node changes, as it only saves and deploys the updated nodes.
- **Restart Flows**: This option restarts the currently deployed flows.

# Flow Canvas Menu

Open the menu in the top-right corner to view options for the flow canvas.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Vd3hqXC9oggjfTGGIEjEO_image.png "Flow Canvas menu")

- **Edit**: Edit options for nodes and the canvas.&#x20;
- **View**: View options for the canvas.&#x20;
- **Arrange**: Options to arrange nodes on the canvas.&#x20;
- **Import**: See the "Import Nodes" section below.&#x20;
- **Export**: See the "Export Nodes" section below.&#x20;
- **Search flows**
- **Configuration nodes**: See the "Configuration Nodes" section below.&#x20;
- **Flows**: Add, rename, or delete flows.&#x20;
- **Subflows**: See the "Subflows" section below.&#x20;
- **Groups**: Options to group, ungroup, and merge selections on the canvas.&#x20;
- **Settings**: See [Manage User Settings](docId\:ms-EOIJWt2mIUorUPRCyH).

## Import Nodes

Importing nodes allows you to easily deploy flow logic for a variety of devices and use cases.

The import operation relies on a previous export to the library, download, or clipboard copy. Using import from the menu offers three tabs:**&#xA0;Clipboard**, **Local**, and **Examples**.

The *Clipboard&#x20;*&#x74;ab provides a way to paste code saved to the clipboard or select a JSON file from your hard drive to import. To import a JSON file saved from a previous export, use the *Local&#x20;*&#x74;ab.

You can import the nodes from the following ways:&#x20;

- Copy and paste one or more nodes and their connecting wires to a flow
- Nodes that were downloaded to your hard drive
- Nodes were exported to the library
- Nodes that appear in the examples tab

### Before You Begin

- Make sure you have exported nodes to examples, creating a JSON file.
- Make sure you have selected a flow tab into which the nodes will be imported.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8eD84Jrn1i6DdpllpuWum_image.png" size="80" width="712" height="601" caption="Import nodes dialog box" position="center" showCaption="true"}

### Import Nodes Options

- **Clipboard import**: Copy and paste the flow or select a JSON file to import. You can paste one or more nodes and their connecting wires to a flow.
- **Local import**: Select a JSON file from the list.&#x20;
- **Examples import**: Select a JSON file from the list.&#x20;

After selecting the nodes to import, select if the import should go to the **current flow** or a **new flow**. When you import to a new flow, the system automatically creates a new flow tab and displays the nodes and wires freely so you can place them in the new flow.

## Export Nodes

Exporting nodes allows you to download a file of flows.&#x20;

Using **Export&#x20;**&#x66;rom the menu offers two tabs: **Clipboard** and **Local**.

The *Clipboard&#x20;*&#x74;ab temporarily saves node data to the clipboard. To save node data for a longer term, use the *Library&#x20;*&#x74;ab.

:::hint{type="info"}
**Note**: When exporting, passwords are not exposed.
:::

You can export one or more nodes and their connecting wires and then paste them to a flow.

### Before You Begin

Select the nodes and connecting wires within a flow tab.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lmKvcn2tCxiOV5xJZhfwa_image.png" size="80" width="713" height="605" caption="Export nodes dialog box" position="center" showCaption="true"}

\[1] Select if you want to export **selected nodes**, the **current flow**, or **all flows**.&#x20;

\[2] Select to view the nodes in list view or in JSON format. If you view in JSON format, you have the option of viewing the code in **compact&#x20;**&#x6F;r **formatted&#x20;**&#x73;tyle.&#x20;

### Export Nodes Options

- **Copy to the clipboard**: You can export the selected nodes and wires for just the selected nodes, the current flow, or all flows. Click **Copy to clipboard** to copy the code to your clipboard.&#x20;
- **Download the code**: To download the code, click **Download**. A JSON file is downloaded to your hard drive.&#x20;
- **Export to library**: To export to the local drive, click the **Local&#x20;**&#x74;ab, enter a file name for the JSON file in the *Export as* field, and then click **Export to library**. You can use the JSON file located in the library to import the nodes and connecting wires to another flow.

# Configuration Nodes

Selecting Configuration nodes opens the *Config&#x20;*&#x74;ab beneath the canvas to display used and unused nodes.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bhuOtAm2F_OaeXTE1ASG1_image.png "Configuration nodes tab")

When you delete a node from a flow, it may not be deleted from the back-end.

Server-based nodes that require network / connectivity settings, such as MQTT nodes, are found here if they have been deleted from a flow.

You may want to remove these types of unused nodes from the back-end because they may continue to try connecting to a port and degrade performance. To view unused nodes, click **unused&#x20;**&#x74;o filter the nodes displayed.&#x20;

Not all deleted nodes appear in the **Config** tab.

When you save a flow or the entire workspace, a pop-up message notifies you if there are unused nodes.

# Subflows

Subflows serve as sub-routines to place complex logic into code blocks, which then can be called from the main flow. As with any structured programming language, this modular approach simplifies troubleshooting, modifications, and basic understanding.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0YNh2_6gfK0e2Q-lU3OCu_image.png" size="80" width="888" height="327" caption="Subflow tab" position="center" showCaption="true"}

You have two options for creating a subflow.&#x20;

To create a subflow, select **Subflows&#x20;**>**&#x20;Create Subflow**.&#x20;

To create a subflow from an existing flow, drag and select the nodes to include, and then select **Subflows&#x20;**> **Selection to Subflow**.&#x20;

# Flow Tabs Menu

Use the flow tabs menu to add new tabs, manage existing tabs, and show/hide tabs.&#x20;

Click the **+** icon to add a new tab.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ca4hkZml3ldDcOE-XueH6_image.png "Flow Tabs menu")

# Additional Options

Review the following additional options for the flow canvas.&#x20;

:::hint{type="info"}
**Note**: To view messages, drag the vertical window bar up.&#x20;
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_Zea8tth32y3PFx66cxWW_image.png "Additional options for the flow canvas")

\[1] Toggle the navigator to navigate the entire canvas. Also zoom in and out of the canvas.&#x20;

\[2] **Info**: Review information for flows.&#x20;

\[3] **Help**: Search help for using the canvas and flows.&#x20;

\[4] **Debug messages**: Review debug messages for flows that are running.&#x20;

\[5] **Configuration nodes**: See the "Configuration Nodes" section above.&#x20;

\[6] **Context Data**

\[7] **Dashboard**: The Flows dashboard allows you to visualize data and information pertaining to your flows. You can organize the dashboard into tabs and groups, and then add widgets and links to display specific information. You can then make aesthetic choices for the look and feel of your dashboard.

The following tabs allow you to customize how you view the data.&#x20;

- **Layout**: Allows you to add tabs or links and to launch the Node-RED dashboard where you can review your dashboard.
- **Site**: Allows you to configure the Node-RED options.
- **Theme**: Allows you to select the style, font color, and font for the dashboard.
- **Angular**


[title] Yaskawa MP2300 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Yaskawa/

Review the following information for setting up and configuring the Yaskawa MP2300 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                      |
| ---------------------------- | ----------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                              |
| **Validated devices/series** | [Yaskawa MP2300 series](https://www.yaskawa.com/products/motion/machine-controllers/mp-series/mp2300) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use MotionWorks IEC 2 Express 4.5.0.78 software on your computer to configure your device for Ethernet access.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Yaskawa                                  |
| **Driver**          | Yaskawa MP2300 Ethernet (Gen1)           |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 44818                                    |
| **Input**           | 101                                      |
| **Output**          | 111                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**    | **Value Type** | **Address Format** | **Min Address** | **Max Address** |
| ----------- | -------------- | ------------------ | --------------- | --------------- |
| Input       | word           | DDD                | 0               | 512             |
| Output      | word           | DDD                | 0               | 512             |
| Input\_Bit  | bit            | DDDdd              | 0               | 51215           |
| Output\_Bit | bit            | DDDdd              | 0               | 51215           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Siemens S7-Advanced (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

Review the following information for setting up and configuring the Siemens S7-Advanced (Gen1) driver.

To review a use case for this driver, see [Use the Siemens S7 Browse Agent](docId\:dGrnb8Sr57iFEKdjafEmT).

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter        | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**                | Ethernet                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **Validated devices/series**   | [S7-300](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-300.html)&#xA;[S7-400&#xA;](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-400.html)[S7-1200&#xA;](https://www.siemens.com/global/en/products/automation/systems/industrial/plc/s7-1200.html)[S7-1500](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-1500.html) |
| **Replaced with Gen 2 driver** | [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4)                                                                                                                                                                                                                                                                                                                                                                                                           |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: Siemens S7 CPU1212C AC/DC/RLY
   **Communication I/F**: Profitnet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aFXzRwgeMGU4YsGiDd8XS_siemens-s7-advanced.png" size="80" width="600" height="642" caption="Reference image of device" position="center" showCaption="true"}
2. Launch the **Primary Setup Tool**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nji_vwk1BHrAp49BTcs5e_siemens-s7-advanced-setup482x338.png" size="80" width="482" height="338" caption="Primary Setup Tool icon" position="center" showCaption="true"}
3. Set up the PG/PC Interface using either software or the PC control panel.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ho07N8UzR6K97KTYz29bv_siemens-s7-advanced-interface.png" size="80" width="730" height="439" caption="Set PC/PC Interface option" position="center" showCaption="true"}
4. Select the network adapter, making sure the PC and the device are on the same subnet.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7xQQsTfYIhVWVkNQnYFKS_siemens-s7-advanced-adapter.png" size="50" width="266" height="285" caption="Select the network adapter" position="center" showCaption="true"}
5. Browse the Siemens devices on the network, select the device, and then set up the network parameters.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/a8e0O1GK5B7m-ZwH_ysOP_siemens-s7-advanced-parameters.png" size="80" width="480" height="343" caption="Network parameters section" position="center" showCaption="true"}
6. Launch the TIA Portal v14 software and create a project file with the correct device model and version.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8c2pGUw0S64-K4gRVDZLL_siemens-s7-advanced-project.png" size="80" width="1230" height="653" caption="TIA Portal software" position="center" showCaption="true"}
7. Click the **Accessible devices&#xA0;**&#x69;con and search for the devices in the same subnet segment.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MdPHhQXILbxwjgquaDzFk_siemens-s7-advanced-search.png" size="80" width="1234" height="653" caption="Accessible devices dialog box" position="center" showCaption="true"}
8. Right-click the device, and select **Properties**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7CMYvm85pOXt2SlbZTAHK_siemens-s7-advanced-property.png" size="50" width="372" height="603" caption="Properties option" position="center" showCaption="true"}
9. Set up the network parameters. The following settings are applicable for Siemens S7-1200 and Siemens S7-1500 only. The changes must be made when the TIA Portal is offline, and then downloaded to the PLC.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IXAjErx11fr3vVh9nxsfX_siemens-s7-advanced-network.png" size="80" width="612" height="408" caption="Ethernet addresses section" position="center" showCaption="true"}
10. Click **Protection & Security > Connection mechanisms**.
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5pJzRMQiuIfoOAT1GTeZv_siemens-s7-advanced-mechanism.png" size="80" width="609" height="406" caption="Connection mechanisms section" position="center" showCaption="true"}
11. In order to read the data block, uncheck the **Optimized block access&#xA0;**&#x6F;ption.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7UHrVQ1PfGfKnu8DMmprG_siemens-s7-advanced-optimized-block.png "Optimized block access option")
12. Select **Profinet Interface > Advanced Options > Port&#xA0;**&#x61;nd set the **Partner port&#xA0;**&#x74;o **Any Partner**.
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/00afZ7iwrTIQIPK8RSlTH_siemens-s7-advanced-partner-port.png" size="80" width="1325" height="666" caption="Any Partner option" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Siemens                                  |
| **Driver**          | Siemens S7-Advanced (Gen1)               |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 102                                      |
| **Slot**            | 1                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

Refer to the appropriate register table depending on your version of Litmus Edge.&#x20;

### Register Table for Litmus Edge 3.11.0 and Later

| **Name** | **Value Type**                                                                                  | **Address Format** | **Min Address** | **Max Address** |
| -------- | ----------------------------------------------------------------------------------------------- | ------------------ | --------------- | --------------- |
| I        | bit, byte, char, sint, word, int, counter, timer, dword, dint, real, lreal, lword, lint, string | DDDDd              | 0               | 40957           |
| Q        | bit, byte, char, sint, word, int, counter, timer, dword, dint, real, lreal, lword, lint, string | DDDDd              | 0               | 40957           |
| M        | bit, byte, char, sint, word, int, counter, timer, dword, dint, real, lreal, lword, lint, string | DDDDd              | 0               | 40957           |
| PE       | bit, byte, char, sint, word, int, counter, timer, dword, dint, real, lreal, lword, lint, string | DDDDd              | 0               | 40957           |
| PA       | bit, byte, char, sint, word, int, counter, timer, dword, dint, real, lreal, lword, lint, string | DDDDd              | 0               | 40957           |
| MK       | bit, byte, char, sint, word, int, counter, timer, dword, dint, real, lreal, lword, lint, string | DDDDd              | 0               | 40957           |
| DB       | bit, byte, char, sint, word, int, counter, timer, dword, dint, real, lreal, lword, lint, string | DDDDDd             | 0               | 327677          |

### Register Table for Litmus Edge 3.5.6 and Earlier

| **Name** | **Value Type**                              | **Address Format** | **Min Address** | **Max Address** |
| -------- | ------------------------------------------- | ------------------ | --------------- | --------------- |
| I        | bit                                         | DDDDd              | 0               | 40957           |
| I        | byte, char, sint, word, int, counter, timer | DDDD               | 0               | 4095            |
| Q        | bit                                         | DDDDd              | 0               | 40957           |
| Q        | byte, char, sint, word, int, counter, timer | DDDD               | 0               | 4095            |
| M        | bit                                         | DDDDd              | 0               | 40957           |
| M        | byte, char, sint, word, int, counter, timer | DDDD               | 0               | 4095            |
| PE       | bit                                         | DDDDd              | 0               | 40957           |
| PE       | byte, char, sint, word, int, counter, timer | DDDD               | 0               | 4095            |
| PA       | bit                                         | DDDDd              | 0               | 40957           |
| PA       | byte, char, sint, word, int, counter, timer | DDDD               | 0               | 4095            |
| MK       | bit                                         | DDDDd              | 0               | 40957           |
| MK       | byte, char, sint, word, int, counter, timer | DDDD               | 0               | 4095            |
| DB       | bit                                         | DDDDDd             | 0               | 327677          |
| DB       | byte, char, sint, word, int, counter, timer | DDDDD              | 0               | 32767           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **DB Number**: Enter the data block number of the tag.&#x20;
- **Polling Group**: Enter the polling group.&#x20;
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::

# Export Tags as PDF

You have the option of exporting tags as a PDF file.&#x20;

## Export Tags with Simatic Manager

**To export tags with Simatic Manager:**

1. Start **Simatic Manager&#xA0;**&#x61;nd open the project file.
2. Right-click the target **Data Block**, and then select **Print > Object Contents**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/msRncgVqobamieLDumJXf_siemens-s7-advanced-object-contents.png" size="80" width="916" height="395" caption="Print Object Contents option" position="center" showCaption="true"}
3. Save the contents of the data block as a PDF file.

## Export Tags with the TIA Portal

**To export tags with the TIA Portal:**

1. Launch the TIA Portal v14 software and open the project file.
2. Open the **Data Block&#x20;**&#x79;ou want to export.&#x20;
3. From the toolbar, select **Project > Print**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5AU2rdx2KeUqzN2_KOx3Z_siemens-s7-advanced-tia-portal.png" size="80" width="1241" height="373" caption="Print option" position="center" showCaption="true"}
4. Save the contents of the data block as a PDF file.&#x20;


[title] Toshiba Computer Link Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Toshiba/

Review the following information for setting up and configuring the Toshiba Computer Link Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                             |
| ---------------------------- | -------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                     |
| **Validated devices/series** | Any of the following Toshiba series models with an Ethernet module:<br />* S2
* S3
* T2
* T3 |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure your device for Ethernet access.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Toshiba                                  |
| **Driver**          | Toshiba Computer Link Ethernet (Gen1)    |
| **Network Address** | The device address you defined in Step 1 |
| **Network Port**    | 1024                                     |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types**             | **Address Format** | **Min Address** | **Max Address** | **Description**                            |
| -------- | --------------------------- | ------------------ | --------------- | --------------- | ------------------------------------------ |
| X        | bit                         | DDDDdd             | 0               | 511915          | Input Devices                              |
| I        | bit                         | DDDDdd             | 0               | 511915          | Direct Input Devices                       |
| Y        | bit                         | DDDDdd             | 0               | 511915          | Output Devices                             |
| O        | bit                         | DDDDdd             | 0               | 511915          | Direct Output Devices                      |
| R        | bit                         | DDDDdd             | 0               | 409515          | Auxiliary Devices                          |
| DBit     | bit                         | DDDDdd             | 0               | 409515          | Auxiliary Devices                          |
| S        | bit                         | DDDdd              | 0               | 51115           | Special Devices                            |
| XW       | word,short,dword,long,float | DDDD               | 0               | 5119            | Input Registers                            |
| IW       | word,short,dword,long,float | DDDD               | 0               | 5119            | Direct Input Registers                     |
| YW       | word,short,dword,long,float | DDDD               | 0               | 5119            | Output Registers                           |
| OW       | word,short,dword,long,float | DDDD               | 0               | 5119            | Direct Output Registers                    |
| RW       | word,short,dword,long,float | DDDD               | 0               | 4095            | Auxiliary Registers                        |
| DW       | word,short,dword,long,float | DDDD               | 0               | 5119            | Auxiliary Registers                        |
| SW       | word,short,dword,long,float | DDD                | 0               | 511             | Special Registers                          |
| D        | word,short,dword,long,float | DDDD               | 0               | 4095            | Data Memory                                |
| DH       | string                      | DDDD               | 0               | 4095            | Data Memory As String with HiLo Byte Order |
| DL       | string                      | DDDD               | 0               | 4095            | Data Memory As String with LoHi Byte Order |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Sick Flexi Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Sick Flexi/

Review the following information for setting up and configuring the Sick Flexi Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items    |
| ---------------------------- | ------------------- |
| **Driver type**              | Serial              |
| **Validated devices/series** | Sick Flexi FX3-CPU1 |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: Sick Flexi FX3-CPU1
   **Communication I/F**: RS232. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aL0EikBMT3iu7lXU2pY_4_sickflexiserialdevice.png" size="80" width="623" height="690" caption="Reference image of device" position="center" showCaption="true"}
2. Launch the Flexi Soft Designer v2.01.0 software and click **Com Settings**.&#x20;
3. Edit the connection profile.&#x20;
4. Check **COM auto-detection**.&#x20;
5. Test the connection.&#x20;
6. Click **Connect**. &#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Sick Flexi                        |
| **Driver**             | Sick Flexi Serial (Gen1)          |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 115200                            |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station**            | 1                                 |
| **Communication Port** | Local Serial connection file path |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**                     | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| ---------------------------- | -------------- | ------------------ | --------------- | --------------- | --------------- |
| I                            | bit            | DDo                | 0               | 127             | Input           |
| Q                            | bit            | DDo                | 0               | 127             | Output          |
| Logic result                 | bit            | DDo                | 0               | 197             | Logic Result    |
| RS232 to Flexi soft\_Bit     | bit            | Do                 | 0               | 37              |                 |
| Flexi soft to RS-232\_Bit    | bit            | DDo                | 0               | 997             |                 |
| Module Status Bit Array\_Bit | bit            | DDo                | 0               | 597             |                 |
| Operating Data Block\_bit    | word           | Do                 | 0               | 97              |                 |
| Configuration CRCs\_Bit      | bit            | DDo                | 0               | 197             |                 |
| CPU Module Type Key\_Bit     | bit            | DDo                | 0               | 177             |                 |
| Extension Modules Type\_Bit  | bit            | DDDo               | 0               | 3377            |                 |
| Extension Modules Type       | word           | DDD                | 0               | 336             |                 |
| CPU Module Type Key          | word           | DD                 | 0               | 16              |                 |
| Configuration CRCs           | word           | DD                 | 0               | 18              |                 |
| Operating Data Block         | word           | D                  | 0               | 8               |                 |
| Module Status Bit Array      | word           | DD                 | 0               | 58              |                 |
| Flexi soft to RS-232         | word           | DD                 | 0               | 98              |                 |
| RS-232 to Flexi soft         | word           | O                  | 0               | 2               |                 |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Siemens S5 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

Review the following information for setting up and configuring the Siemens S5 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items |
| ---------------------------- | ---------------- |
| **Driver type**              | Ethernet         |
| **Validated devices/series** | S5               |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: Simatic S5-95U
   **Communication I/F**: Ethernet Softing S5-PCLINK Ethernet gateway. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4kwr5AJ6CWdtTfZVsJ3rB_siemenss5ethernetdevice.png" size="80" width="589" height="778" caption="Reference image of device" position="center" showCaption="true"}
2. Launch S5-LAN Manager Step5/ST v7.23, click **Search&#xA0;**&#x69;n the local network to browse the gateway hardware, and then click **Settings&#xA0;**&#x74;o set up the network parameters.
3. Launch PLC-VCom and click **Configure&#xA0;**&#x74;o configure the S5-PCLINK to have a virtual port along with its IP. Make sure the status is connected.
4. Launch Step 5, and then click **File > Project > Set**.
5. From the PLC page, double-click **Offline**.
6. Connect to the device.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Siemens                                  |
| **Driver**          | Siemens S5 Ethernet (Gen1)               |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 102                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

Refer to the appropriate register table depending on your version of Litmus Edge.&#x20;

### Register Table for Litmus Edge 3.11.0 and Later

| **Name** | **Value Type**                                                                     | **Address Format** | **Min Address** | **Max Address** |
| -------- | ---------------------------------------------------------------------------------- | ------------------ | --------------- | --------------- |
| A        | bit, byte, sint, word, int, dword, dint                                            | DDDd               | 0               | 1277            |
| C        | word, int                                                                          | DDD                | 0               | 127             |
| E        | bit, byte, sint, word, int, dword, dint                                            | DDDd               | 0               | 1277            |
| F        | bit, byte, sint, word, int, dword, dint                                            | DDDd               | 0               | 2557            |
| I        | bit, byte, sint, word, int, dword, dint                                            | DDDd               | 0               | 1277            |
| M        | bit, byte, sint, word, int, dword, dint                                            | DDDd               | 0               | 2557            |
| Q        | bit, byte, sint, word, int, dword, dint                                            | DDDd               | 0               | 1277            |
| T        | word                                                                               | DDD                | 0               | 127             |
| Z        | word, int                                                                          | DDD                | 0               | 127             |
| DB       | bit, left\_byte, right\_byte, word, int, counter, timer, dword, dint, real, string | DDDDDdd            | 0               | 3276715         |

### Register Table for Litmus Edge 3.5.6 and Earlier

| **Name** | **Value Types**               | **Address Format** | **Min Address** | **Max Address** |
| -------- | ----------------------------- | ------------------ | --------------- | --------------- |
| A        | bit                           | DDDd               | 0               | 1270            |
| A        | byte, sint, word, int, dword  | DDD                | 0               | 127             |
| C        | word, int                     | DDD                | 0               | 127             |
| E        | bit                           | DDDd               | 0               | 1277            |
| E        | byte, sint, word, int, dword  | DDD                | 0               | 127             |
| F        | bit                           | DDDd               | 0               | 2557            |
| F        | byte, sint, word, int, dword  | DDD                | 0               | 255             |
| I        | bit                           | DDDd               | 0               | 1277            |
| I        | byte, sint, word, int, dword  | DDD                | 0               | 127             |
| M        | bit                           | DDDd               | 0               | 2557            |
| M        | byte, sint, word, int, dword  | DDDD               | 0               | 255             |
| Q        | bit                           | DDDd               | 0               | 1277            |
| Q        | byte, sint, word, int, dword  | DDD                | 0               | 127             |
| T        | word                          | DDD                | 0               | 127             |
| Z        | word, int                     | DDD                | 0               | 127             |
| DB       | bit                           | DDDDDdd            | 0               | 3276715         |
| DB       | left\_byte, right\_byte, word | DDDDD              | 0               | 32767           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **DB Number**: Enter the data block number of the tag.&#x20;
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Siemens TI505 Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

Review the following information for setting up and configuring the Siemens TI505 Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items |
| ---------------------------- | ---------------- |
| **Driver type**              | Serial           |
| **Validated devices/series** | TI505            |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Siemens                           |
| **Driver**             | Siemens TI505 Serial (Gen1)       |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 7                                 |
| **Stop Bits**          | 1                                 |
| **Parity**             | Even, None, Odd                   |
| **Baud Rate**          | 19200                             |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** |
| -------- | -------------- | ------------------ | --------------- | --------------- |
| CR       | bit            | DDDDD              | 1               | 65536           |
| X        | bit            | DDDDD              | 1               | 65536           |
| Y        | bit            | DDDDD              | 1               | 65536           |
| WX       | word           | DDDDD              | 1               | 65536           |
| WY       | word           | DDDDD              | 1               | 65536           |
| TCC      | word           | DDDDD              | 1               | 65536           |
| TCP      | word           | DDDDD              | 1               | 65536           |
| STW      | word           | DDDDD              | 1               | 65536           |
| VD       | word           | DDDDD              | 1               | 65536           |
| V        | word           | DDD                | 0               | 255             |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Add Database Users
[path] Product Features/DataHub/DB Users/

:::hint{type="info"}
**Note**: For Litmus Edge version 3.5.2, 3.5.3, 3.5.5, and 3.5.6, DB Users options are related to internal databases configured in **DataHub (Legacy)**.&#x20;
:::

You can add a database user by navigating to **DataHub&#x20;**> **DB Users**.

:::hint{type="warning"}
**Important**: Influx uses admin, user, and observer as default users. You cannot use these usernames when creating a new user. Therefore, you can add users using their username when creating a db user.
:::

**To add a database user:**

1. Navigate to **DataHub&#x20;***>&#x20;***DB Users**.&#x20;
2. Click the **Add** (**+**) icon.
   The *Add User* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/R3krIZwEnu8KJlBUls0v7_cejnriuwdtmf08hshqjcimage.png "The Add User icon")
3. Enter the details for the user.&#x20;
   - **Username**
   - **Password**
   - **Database**: Select a database from the drop-down list.
   - **Privilege**: Select an access option (Read, Write, or All).
4. (Optional) Click the **Plus** (**+**) icon to select another database and privilege, and repeat if necessary. You can remove a privilege row by clicking the **Trash&#x20;**&#x69;con next to the row you want to remove.
5. &#x20;Click **Add User**.
   The user appears in the *DB Users&#x20;*&#x70;ane with the listed privileges.

:::hint{type="info"}
**Note**: Multiple rows of the same database with different privileges will not be combined. For the same database, the most bottom row's respective privilege added will be assigned for the user.
:::


[title] Siemens Logo Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

Review the following information for setting up and configuring the Siemens Logo Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                        |
| ---------------------------- | ------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                |
| **Validated devices/series** | [Siemens LOGO!](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/logo.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: LOGO BM 24CE
   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EsaqC7hQh5_I2caKzX_wO_siemens-logo-ethernet-gen1.png" size="80" width="371" height="390" caption="Reference image of device" position="center" showCaption="true"}
2. Set up the IP address under ADMIN mode. The default password to switch from Operator mode is LOGO.
3. Select **Network > IP address**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/owz8tFDqQ2U46uXCMjnw3_siemens-logo-ethernet-gen1-devices.png" size="80" width="308" height="649" caption="Reference image of device" position="center" showCaption="true"}
4. Enter the IP address for your device. For example: 192.168.447.110.&#x20;
5. Log in to the web server to configure the device. The default password is LOGO.
6. Launch the Logo Soft Comfort v1.08.02 software and select **Tools > Transfer > Logo > PC**.
7. Enter the IP address in the **Target IP Address&#xA0;**&#x66;ield, and then click **OK**.
8. Select **Tools > Ethernet connection**.
9. From the *Configure Ethernet Connection* dialog box, click **Ethernet Connectors**.
10. From the *Local Properties (Server)* section, select **Accept all connection results**.
11. From the *Remote Properties (Client)* section, enter the local TSAP in the **TSAP&#xA0;**&#x66;ield. The local TSAP default is 20.00. For this configuration, the Remote TSAP is set to 21.00.
12. Click **OK**.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | Siemens                                      |
| **Driver**          | Siemens Logo Ethernet (Gen1)                 |
| **Network Address** | The device address you defined during Step 1 |
| **Port**            | 102                                          |
| **Local TSAP**      | 4096                                         |
| **Remote TSAP**     | 512                                          |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------- |
| I        | bit             | DD                 | 1               | 64              | Input bit       |
| Q        | bit             | DD                 | 1               | 64              | Output bit      |
| M        | bit             | DDD                | 1               | 112             |                 |
| NI       | bit             | DDD                | 1               | 128             |                 |
| NQ       | bit             | DDD                | 1               | 128             |                 |
| V        | bit             | DDDDo              | 0               | 14697           |                 |
| AI       | word            | DD                 | 1               | 16              | Analog Input    |
| AQ       | word            | DD                 | 1               | 16              | Analog Output   |
| AM       | word            | DD                 | 1               | 64              |                 |
| NAI      | word            | DD                 | 1               | 64              |                 |
| NAQ      | word            | DD                 | 1               | 32              |                 |
| VB       | byte            | DDDD               | 0               | 1469            |                 |
| VW       | word            | DDDD               | 0               | 1468            |                 |
| VD       | dword           | DDDD               | 0               | 1466            |                 |
| RTC      | wprd            | D                  | 1               | 7               |                 |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Create and Import Models
[path] Product Features/Digital Twins/

:::hint{type="info"}
**Notes**:&#x20;

- The Digital Twins feature is available for Litmus Edge version 3.3.1 and later.&#x20;
- To access the Digital Twins feature, you need a Scale or Growth Litmus license.&#x20;
:::

You can create Digital Twins models by navigating to **Digital Twins** > **Models**.&#x20;

See [Use Digital Twins to Contextualize Data](docId\:QtojjkM-sj2wJ4jlQV_ku) to review how to leverage Digital Twins.&#x20;

# Step 1: Create Model

You have two options for creating the model. You can create a new model or import a model as a JSON file.&#x20;

## Create a  New Model

**To create a new model:**

1. Navigate to **Digital Twins**.&#x20;
   The *Models&#x20;*&#x70;ane appears.&#x20;
2. From the *Models&#x20;*&#x70;ane, click the **Create a model&#x20;**&#x74;ile.&#x20;
   The *Create a Model* dialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RgVgMbkVf98fnibVlKx5M_createmodel.png" size="80" width="1266" height="482" caption="The Create a Model tile" position="center" darkWidth="1266" darkHeight="482" showCaption="true" indent="2"}

3. Click the **Type** drop-down list and select a model type.
4. Enter the name of the model in the **Name** field.
5. (Optional) Enter a short description of the model in the **Description** field.
6. Click **Add**.****
   A new model tile appears in the *Models&#x20;*&#x70;ane.

## Import an Existing Model

You can import a model as a JSON file.

To import an existing model, click th&#x65;**&#x20;Import Model** icon, select the `<model name>.json` file, and click **Open**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LAj9ItVAwnDjSPV0mYRoF_image.png" size="80" width="1920" height="482" caption="Import Model icon" position="center" darkWidth="1920" darkHeight="482" showCaption="true"}

# Model Versions

:::hint{type="info"}
**Note**: This feature is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

When you create a model, the model version starts at v.0. When you make changes to the model, the version number is updated.

For Litmus Edge version 3.11.0 and later, the version number is displayed in the model tile.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jPBv5O4fpRB8jFV_f7V7l_image.png" size="50" width="335" height="210" position="center" caption="Model version number" darkWidth="335" darkHeight="210" showCaption="true"}

For Litmus Edge version 3.11.1 and later, the version number is also displayed in the model and instance configuration.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nmQikKc41s_wHfE2Fee4n_image.png)

## Implement Model Updates to Instances

If there are changes to the model that need to be implemented in associated instances, click **Upgrade Instances**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Rgs0kvMtFSrm_123zkbHa_image.png)

Then, select the instances to upgrade and click **Upgrade**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5Os84oYFEY-0PBcVVZtf1_image.png" size="70" width="557" height="388" position="center" caption="Model Changed dialog" darkWidth="557" darkHeight="388" showCaption="true"}

# Step 2: Configure Model

After creating the model, you can configure it appropriately for instances.&#x20;

:::hint{type="warning"}
**Important**:&#x20;

- For Litmus Edge version 3.5.6 and earlier, no changes are allowed to a model after creating an instance for the model.&#x20;
- For Litmus Edge version 3.11.0 and later, you have the option to update models with instances and select which instances to update as well.&#x20;
:::

Click the **Model tile** (grid view) or **Model name** (table view) to view the model details.&#x20;

## Model Image

Click th&#x65;**&#x20;Upload image** icon to select an image for the model. The image will display for the model tile on the *Models* pane. Supported file types include: .jpeg and .png&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XYH_aNPgthh_1gBbAvfWB_image.png)

## Static Attributes

Manage the metadata for the model from the *Static Attributes* tab.&#x20;

:::hint{type="info"}
**Notes**:&#x20;

- For Litmus Edge versions 3.3.1 to 3.5.6, there is a limit of 100 static attributes. For versions 3.11.0 and later, the limit is 2000.&#x20;
- The ability to export and import dynamic attributes is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

### Manually Add Static Attributes

**To add static attributes:**

1. Click the **Model tile** (grid view) or **Model name** (table view) to open the model details.
2. From the *Static Attributes* tab, click th&#x65;**&#x20;Add item** icon.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hmxwhOto77_RLH6G0ehTX_addstaticattribute.png" size="100" width="1122" height="537" position="center" showCaption="false" indent="2"}

3. In the **Attribute Name** field, either select an item from the drop-down list or enter a custom attribute name.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tQMBusfb2ujK3UBOENwm1_static-attribute-drop-down.png" size="100" width="1444" height="842" position="center" showCaption="false" indent="2"}

4. In the **Attribute Value** field, enter a value for the model.&#x20;
5. When done adding attributes, click **Save Model**.&#x20;
   For Litmus Edge versions 3.5.6 and earlier, save individual attributes by clicking the **Save&#x20;**&#x69;con in each attribute row.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZVDui9L4AqeosWBCYfX4q_image.png)

If you need to filter existing attributes, you can use the search field.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yaXD00mMBNAGDI71qzeXo_image.png)

### Import Static Attributes

To import static attributes (Litmus Edge version 3.11.0 and later), create a CSV file with the following headers.&#x20;

**Required Headers**

- ModelName
- Key
- Value

**Optional Headers**

- InstanceName

After creating the file, click the model tile, navigate to **Static Attributes**, and click the **Import Attributes** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/u5VBm49td95Lx1Ir7YBnV_image.png)

### Export Static Attributes

To export a CSV file of existing static attributes (Litmus Edge version 3.11.0 and later), click the **Export Attributes** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ev1Zj7-_wQW-jnE4BTwmq_image.png)

## Transformations

Use the *Transformation&#x20;*&#x74;ab to transform the data collected in instances by converting raw JSON data to a desired format by defining the JSON-based schema.&#x20;

You can define schema IDs, which can be used to manipulate the payload and define a structure for the payload as the model inherits data.&#x20;

See [Use Digital Twins to Contextualize Data](docId\:QtojjkM-sj2wJ4jlQV_ku) to review how to format transformations.&#x20;

:::hint{type="info"}
**Note**: If you update a transformation and remove all elements from the schema, the entire NATS message will be included in any dynamic attribute that has the transformation selected for the *Schema ID*.
:::

### Arrays

As of Litmus Edge version 3.11.3, you can configure arrays in transformations.&#x20;

For example:

```json
{
  "key": [
    "$timestamp",
    "$value",
    "$metadata",
    {
      "key2": "$timestamp",
      "key3": "$value",
      "key4": "$metadata"
    }
  ],
  "key5 new": "$timestamp"
}
```

### Configure Transformations

**To add a transformation schema:**

1. Click the **Model tile** (grid view) or **Model name** (table view) to open the model details.&#x20;
2. Click the **Transformation&#x20;**&#x74;ab.&#x20;
3. Click the **Add a Schema** icon.
   The *Add&#x20;*&#x64;ialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Duc_t-8xRuTXa1rtqt-vb_transformation1.png" size="100" width="1443" height="551" position="center" showCaption="false" indent="2"}

4. Enter a name for the schema.&#x20;
5. In the code window, copy and paste the JSON-based schema.&#x20;
6. Click **Add**.&#x20;
7. When done adding attributes, click **Save Model**.&#x20;
   For Litmus Edge versions 3.5.6 and earlier, transformations are automatically saved.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HS0Azvt0qrTpE9p_Pbgg5_image.png)

To edit or delete a schema, click the **Action menu** for the schema and select an option.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AZjj0404qT6twuQpILYOO_image.png)

## Dynamic Attributes

Manage variable data in the model from the *Dynamic Attributes* tab. You have the option of adding a schema ID, which can be used to map dynamic attributes one-to-one for data transformation.&#x20;

:::hint{type="info"}
**Notes**:&#x20;

- For Litmus Edge versions 3.3.1 to 3.5.6, there is a limit of 100 dynamic attributes. For versions 3.11.0 and later, the limit is 2000.&#x20;
- The ability to export and import dynamic attributes is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

### Manually Add Dynamic Attributes

**To add a dynamic attribute:**

1. Click the **Add item** icon.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dOe_yUAtUjALAOwFJ_zLz_dynamic-attribute-add.png" size="100" width="1368" height="497" position="center" showCaption="false" indent="2"}

2. In the **Name&#x20;**&#x66;ield, enter a name for the attribute.&#x20;
3. (Optional) Enter values for **Unit&#x20;**&#x61;nd **DataType**.&#x20;
   For Litmus Edge version 3.11.0 and later, you have the option of selecting the data type from the drop-down menu.&#x20;
4. (Optional) If you've created data transformation schemas, select one from the **SchemaID&#x20;**&#x66;ield.&#x20;
5. When done adding attributes, click **Save Model**.&#x20;
   For Litmus Edge versions 3.5.6 and earlier, save individual attributes by clicking the **Save&#x20;**&#x69;con in each attribute row.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xUKT12R7183L76GawmVZ1_image.png)

If you need to filter existing attributes, you can use the search field.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pF_P7GosQRrvuPoQpghUv_image.png)

### Import Dynamic Attributes

To import dynamic attributes (Litmus Edge version 3.11.0 and later), create a CSV file with the following headers.&#x20;

**Required Headers**

- ModelName
- SchemaID

**&#x20;Optional Headers**

- InstanceName
- Topic
- Name
- Unit
- DataType

After creating the file, click the model tile, navigate to **Dynamic Attributes**, and click the **Import Attributes** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wg0bX9HLb_U_u9cZ4EJVL_image.png)

### Export Dynamic Attributes

To export a CSV file of existing dynamic attributes (Litmus Edge version 3.11.0 and later), click the **Export Attributes** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cnZJfzt9R1E4n04FfnEWr_image.png)

## Hierarchy

Use the *Hierarchy&#x20;*&#x74;ab to create a custom data structure for the model.&#x20;

:::hint{type="info"}
**Notes**:&#x20;

- The **Save&#x20;**&#x62;utton is available for Litmus Edge version 3.5.2 and later.&#x20;
- The ability to rename nodes/items and import/export hierarchies is available for Litmus Edge version 3.11.0 and later.&#x20;
- Clicking the **Save Model** button will increment the version number, even if no changes are made.
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N1D1TJzfn2wYtmUmHMpRf_image.png)

To create a category for the hierarchy, click the **Action menu** icon for *root&#x20;*&#x61;nd select **Add Node**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iQBvtNvgJXZxX39mnxhQt_image.png)

To add attributes to the hierarchy, do one of the following:&#x20;

- Drag and drop attributes from the left-hand list to the canvas under the appropriate category.&#x20;
- Click the **Action menu** for a category and select **Add item to Node**. Then, select the attribute to add.

When done configuring the hierarchy, click **Save Model**. For Litmus Edge versions 3.5.6 and earlier, click the **Save&#x20;**&#x69;con. &#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HGQDfpia41OpwEJzcxXL7_image.png)

### Rename Nodes

To rename nodes and attributes added to nodes (for Litmus Edge version 3.11.0 and later), click the **Rename Node** and **Rename Item&#x20;**&#x69;cons.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tpgNljAuojmbN0pbhqgTg_image.png)

### Import Hierarchies

To import a CSV file of a hierarchy (Litmus Edge version 3.11.0 and later), create a CSV file with the following headers:

- ID
- ModelID
- Position: Enter the position of the attribute in the hierarchy.&#x20;
- ParentID: If the attribute is under a node/category, enter the ParentID of the node. To get the ParentID, create a new node, export the hierarchy, and then refer to the **ParentID&#x20;**&#x63;olumn.&#x20;
- Name: The name of the attribute.&#x20;
- IsFolder: If it is an attribute, the value is **FALSE**. If it is a node, the value is **TRUE**.&#x20;
- AttributeID
- AttributeType

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/a0nSOR2U2xjYMhcO482j-_image.png)

### Export Hierarchies

To export a CSV file of an existing hierarchy (Litmus Edge version 3.11.0 and later), click the **Export hierarchy&#x20;**&#x69;con.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BoSkzIsXE_G49v-2eWx2m_image.png)




[title] Siemens S7-300 Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

Review the following information for setting up and configuring the Siemens S7-300 Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                           |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                     |
| **Validated devices/series** | [S7-300](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-300.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, use PLC software on your machine to look up these parameters. You use these parameters for setting up the driver in the next step.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Siemens                           |
| **Driver**             | Siemens S7-300 Serial (Gen1)      |
| **Communication Port** | Local Serial connection file path |
| **Baud Rate**          | 19200                             |
| **Data Bits**          | 8                                 |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station**            | 2                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

Refer to the appropriate register table depending on your version of Litmus Edge.&#x20;

### Register Table for Litmus Edge 3.11.0 and Later

| **Name** | **Value Type**                                                                                | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------------------------------------------------------------------------------------- | ------------------ | --------------- | --------------- | --------------- |
| PE       | bit, word                                                                                     | DDDDd              | 0               | 40957           |                 |
| PA       | bit, word                                                                                     | DDDDd              | 0               | 40957           |                 |
| MK       | bit, byte, word, dword, real, counter, timer                                                  | DDDDd              | 0               | 40957           |                 |
| DB       | bit, byte, sint, word, int, stime, time, date, time\_of\_day, char, dword, dint, real, string | DDDDDd             | 0               | 327677          | Data Block      |

### Register Table for Litmus Edge 3.5.6 and Earlier

| **Name** | **Value Type**                                                                                | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------------------------------------------------------------------------------------- | ------------------ | --------------- | --------------- | --------------- |
| PE       | bit, word                                                                                     | DDDDd              | 0               | 40950           |                 |
| PA       | bit, word                                                                                     | DDDDd              | 0               | 40950           |                 |
| MK       | bit, byte, word, dword, real, counter, timer                                                  | DDDDd              | 0               | 40950           | Memory          |
| DB       | bit, byte, sint, word, int, stime, time, date, time\_of\_day, char, dword, dint, real, string | DDDDDd             | 0               | 327670          | Data Block      |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **DB**: Enter the data block number of the tag.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Siemens S7-1500 (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

:::hint{type="warning"}
**Important**: This driver was deprecated in Litmus Edge version 3.5.2. We recommend using the Gen 2 [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4) or [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d).
:::

Review the following information for setting up and configuring the Siemens S7-1500 (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                       |
| ---------------------------- | ---------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                               |
| **Validated devices/series** | [Siemens S7-1500 series Ethernet](http://www.siemens.com/entry/cc/en/) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure your device for Ethernet access.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Siemens                                  |
| **Driver**          | Siemens S7-1500 (Gen1)                   |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 102                                      |
| **Slot**            | 1                                        |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, use the following tag/register mapping table.

| **Name** | **Value Type**                 | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | ------------------------------ | ------------------ | --------------- | --------------- | --------------- |
| PE       | bit                            | DDDDd              | 0               | 40957           |                 |
| PE       | word                           | DDDD               | 0               | 4095            |                 |
| PA       | bit                            | DDDDd              | 0               | 40957           |                 |
| PA       | word                           | DDDD               | 0               | 4095            |                 |
| MK       | bit                            | DDDDd              | 0               | 40957           |                 |
| MK       | byte, word, dword, real, cou   | DDDD               | 0               | 4095            |                 |
| DB       | bit                            | DDDDDd             | 0               | 327677          |                 |
| DB       | byte, sint, word, int, counter | DDDDD              | 0               | 32767           |                 |

## Supported Data Types

| **S7-1500 Data Type** | **Data Format**                   | **Description** |
| --------------------- | --------------------------------- | --------------- |
| Byte                  | 8-bit BCD, Hex, Binary, Unsigned  | 8-bit           |
| SInt                  | 8-bit BCD, Hex, Binary, Signed    | 8-bit           |
| Bool                  | bit                               | bit             |
| USInt                 | 8-bit BCD, Hex, Binary, Unsigned  | 8-bit           |
| Word                  | 16-bit BCD, Hex, Binary, Unsigned | 16-bit          |
| Int                   | 16-bit BCD, Hex, Binary, Signed   | 16-bit          |
| UInt                  | 16-bit BCD, Hex, Binary, Unsigned | 16-bit          |
| DWord                 | 32-bit BCD, Hex, Binary, Unsigned | 32-bit          |
| DInt                  | 32-bit BCD, Hex, Binary, Signed   | 32-bit          |
| Real                  | 32-bit Float                      | 32-bit          |
| UDInt                 | 32-bit BCD, Hex, Binary, Unsigned | 32-bit          |
| Array                 |                                   |                 |


[title] Profinet
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your device.

| **Device Profile**                                                             | **Compatible Ethernet DeviceHub Drivers**               |
| ------------------------------------------------------------------------------ | ------------------------------------------------------- |
| [PROFIdrive](https://www.profibus.com/technology/profidrive)                   | [Profinet Acyclic](docId\:uK8H1OzkkBAIk9VzQrTWS)        |
| [Turck TBEN-L5-8IOL](https://www.turck.us/en/product/0000001600019e750008003a) | [Profinet Acyclic (Turck)](docId:1TmrW3i-KNo5YSvLnFf8N) |


[title] Parker ACR9000 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Parker/

Review the following information for setting up and configuring the Parker ACR9000 Ethernet (Gen1)&#x20;driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                         |
| ---------------------------- | ------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                 |
| **Validated devices/series** | [Parker ACR9000](https://ph.parker.com/ca/en/acr9000-motion-controllers) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: Parker ACR9000 Ethernet
   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/I4FQLheUqfAlk5NRWBtKH_parkeracr9000ethernet.png" size="80" width="963" height="410" caption="Reference image of device" position="center" showCaption="true"}
2. Launch the V6.4.2.1014 software and create a project according to device model.
3. Click the device in the Navigation pane, set up the device IP, and then click **Connect**.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | Parker                                       |
| **Driver**          | Parker ACR9000 Ethernet (Gen1)               |
| **Network Address** | The device address you defined during Step 1 |
| ******Port******    | 5006                                         |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**     | **Value Types** | **Address Format** | **Min Address** | **Max Address** |
| ------------ | --------------- | ------------------ | --------------- | --------------- |
| P\_Low16bit  | bit             | DDDDDdd            | 0               | 9999915         |
| P\_High16bit | bit             | DDDDDdd            | 0               | 9999915         |
| P\_Int32     | int32           | DDDDD              | 0               | 99999           |
| P\_Float     | float           | DDDDD              | 0               | 99999           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Tag Formula Variables
[path] Product Features/DeviceHub/Tags/

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX), you have the option of adding a formula to process the generated data.&#x20;

You can use the following variables:

- `value`: The current tag value.&#x20;
- `timestamp`: The time the tag value was generated represented in UNIX time in milliseconds.&#x20;

You can use the following functions.

:::hint{type="info"}
**Note**: For additional functions on tag values such as rounding and data conversions, you can use [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5) or the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89). See [Analytics Guides](docId\:O9EkCXH-d9DmHjOaru_2B) to learn more.&#x20;
:::

| **Function**            | **Description**                                                                                                                                                            | **Use**                                                                                                                              |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| sin<br />(sine)         | The ratio of the side opposite a given angle (in a right-angled triangle) to the hypotenuse.                                                                               | Analysis and control of periodic processes.                                                                                          |
| cos<br />(cosine)       | The ratio of the side adjacent to an acute angle (in a right-angled triangle) to the hypotenuse.                                                                           | Analysis and control of periodic processes.                                                                                          |
| sqrt<br />(square root) | The square root of a number is the factor that you can multiply by itself to get that number.                                                                              | Identify deviations from expected values or detect abnormal conditions.                                                              |
| tan<br />(tangent)      | The ratio of the sine of an angle to the cosine of that angle.                                                                                                             | Used in calibration formulas to correct or compensate for non-linearities.                                                           |
| power                   | A function with a single term that is the product of a real number, a coefficient, and a variable raised to a fixed real number. <br />power(`x`) is equivalent to `10^x`. | Perform exponentiation when converting values between different units or applying non-linear scaling.                                |
| log<br />(logarithm)    | The inverse function to exponentiation.<br />log(`x`) is equivalent to the natural logarithm of `x` (a logarithm with base `e`).                                           | Perform logarithmic scaling or conversion when there is a non-linear relationship between the register value and the desired output. |
| exp<br />(exponential)  | Calculates the exponential growth or decay of a given set of data.<br />exp(`x`) is equivalent to the exponential function `e^x`.                                          | Perform exponential scaling or conversion when there is a non-linear relationship between the register value and the desired output. |


[title] DB Management
[path] Product Features/DataHub/

You can manage the timeaseries database, called `tsdata` , from the *DB Management pane&#x20;*&#x6F;f the DataHub module. Your edge device communicates with this database through port `8086`.

:::hint{type="info"}
**Note**: For Litmus Edge version 3.5.2, 3.5.3, 3.5.5, and 3.5.6, DB Management options are related to internal databases configured in **DataHub (Legacy)**.
:::

# Access DataHub DB Management UI

**To access DB Management:**

1. Log in to Litmus Edge.
2. From the *Navigation&#x20;*&#x70;anel, navigate to **DataHub&#x20;**>**&#x20;DB Management**.
   The *DB Management* pane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nrSghmspimfxtoP_Bof8B_image.png" size="80" width="1040" height="445" caption="DataHub DB Management pane" position="center" showCaption="true"}

# Next Step

- [Manage the Timeseries DB](docId\:w3md1dBu8Jy-Mg-p8xAir)&#x20;


[title] Simulator (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Simulator/

Review the following information for setting up and configuring the Simulator (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                          |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Used to generate simulated data                                                                                                                           |
| **Validated devices/series** | This driver is used to generate simulated data. It supports all the standard python math functions such as **math.sin(X)&#x20;**&#x61;nd **math.cos(X)**. |

# Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following register table and tag parameters.&#x20;

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | --------------- | ------------------ | --------------- | --------------- | --------------- |
| bit      | bit             | DDD                | 0               | 255             | boolean         |
| int      | int             | DDD                | 0               | 255             | integer         |
| float    | float           | DDD                | 0               | 255             | float           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Min value**: Enter the minimum value the tag can generate.&#x20;
- **Max value**: Enter the maximum value the tag can generate.&#x20;
- **Formula**: Enter the formula for the tag.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Add Processors and Processor Connections
[path] Product Features/Analytics/Analytics Flows and Processors/

You can add an analytics processor to the Analytics canvas by navigating to **Analytics&#x20;**>**&#x20;Instances**. An analytics flow consists of at least one of the following: an input processor, a function, and an output processor.&#x20;

To create an entire flow with processors and connections, see [Create an Analytics Flow](docId\:XNeTldW_xYRNSnYTLP3h-).&#x20;

# Add a Processor&#x20;

**To add a processor:**

1. Navigate to **Analytics&#x20;***>&#x20;***Instances**.&#x20;
   The *Instances&#x20;*&#x70;ane appears.&#x20;
2. Use the *Analytics Groups* drop-down list to select the group you want to add the processor to.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9OHzVMs7ocuASYixUaeVY_groupsdropdownlist.png" size="80" width="687" height="415" caption="Analytics Groups drop-down list" position="center" showCaption="true"}
3. Open the **Action menu** and select **Add a processor**.&#x20;
   The *Create a Processor&#x20;*&#x64;ialog box appears.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9IdXeksmKIjAjeeRAamO6_addprocessoricon.png "Add a processor icon")
4. Use the drop-down list to select a processor. Processors are categorized by *Inputs*, *Functions*, and *Outputs*.&#x20;
5. Based on your selection, configure the parameters for the processor.&#x20;
6. Click **Save**.&#x20;

# Add a Processor Connection

To connect two individual processors, click the orange circle in a processor and drag the connection to the green circle of the other processor. You will need to select the type of connection to add:&#x20;

- **Events** (individual data source): The receiving processor reacts to each individual data value immediately.&#x20;
- **Values** (combined data sources): The function processor waits for values from all of the combined data sources before reacting.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/T-4IX3MWfx-tJljsPw6IN_image.png" size="80" width="1054" height="237" caption="Add a connection between two processors" position="center" showCaption="true"}

If you receive a red error icon on one of the connected processors, hover over the connection error to view the error message.

:::hint{type="info"}
**Note**: Some function processors require multiple inputs. Each of these is represented by an input processor and the corresponding connection.
:::


[title] Siemens S7
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 2 Drivers/

Review the following information for setting up and configuring the Siemens S7 driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **Validated devices/series** | [S7-300](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-300.html)&#xA;[S7-400](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-400.html)&#xA;[S7-1200](https://www.siemens.com/global/en/products/automation/systems/industrial/plc/s7-1200.html)&#xA;[S7-1500](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-1500.html) |
| **Replaces Gen 1 driver(s)** | [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d) <br />Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd)                                                                                                                                                                                                                                                                                                   |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.

**S7-1200 and S7-1500 Devices&#x20;**

**To configure your device:**

1. Open your TIA Portal project.&#x20;
2. In the project tree, right-click your PLC and select **Properties… from the popup menu.&#x20;**&#xA;The *Properties&#x20;*&#x77;indow opens.
3. To obtain the device’s IP address (if you do not already have it):
   - From the left pane, select **PROFINET** **interface > Ethernet addresses**.
   - In the right pane, go t&#x6F;**&#x20;IP protocol**, find the IP address of the PLC, and copy it aside.
4. From the left pane, select **PROFINET interface** > **Advanced options** > **Port \[X1 P1]** > **Port interconnection.**
5. In the right pane, enter “Any partner” in the **Partner port** field.
6. From the left pane, select **Protection & Security > Access level**.
7. In the right pane, select the **Full access** radio button.
8. From the left pane, select **Protection & Security > Connection mechanisms**.
9. In the right pane, select the **Permit access with PUT/GET communication from remote partner&#x20;**&#x63;heck box.
10. Clic&#x6B;**&#x20;OK**.
11. In the project tree, right-click the data block you want to read and select **Properties**… from the popup menu
    The *Properties&#x20;*&#x77;indow opens.
12. From the left pane, select **Attributes**.
13. In the right pane, clear the **Optimized block access** checkbox.&#x20;
14. Click **OK.&#x20;**
15. Repeat steps 11-14 for all data blocks you want to read.&#x20;
16. Click th&#x65;**&#x20;Compile icon on the toolbar.&#x20;**
17. When the project finishes compiling, clic&#x6B;**&#x20;Download to Device**.

**S7-200, S7-300, and S7-400 Devices**

**To configure your device:&#x20;**

1. Open your SIMATIC Manager project.&#x20;
2. In the project tree, right-click your PLC and select **Object Properties...** from the popup menu.&#x20;
   The *Properties&#x20;*&#x77;indow opens.&#x20;
3. Select the **Interfaces&#x20;**&#x74;ab.&#x20;
4. Find and copy the IP address of the Ethernet interface.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | Siemens                                      |
| **Driver**          | Siemens S7                                   |
| **Network Address** | The device address you defined during Step 1 |
| **Port**            | 102                                          |
| **Slot**            | 1                                            |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

:::hint{type="info"}
**NOTE**: The address format in this Gen 2 driver is different from the ([Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d)) for the same device. Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd).&#x20;
:::

| **Name** | **Value Types**                                                                                                                                                           | **Address Format** | **Min Address** | **Max Address** | **Description**                     |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | --------------- | --------------- | ----------------------------------- |
| DB       | byte, word, dword, lword, usint, uint, udint, ulint, sint, int, dint, lint, real, lreal, date, s5time, dt, ldt, tod, ltod, time, ltime, dtl, char, wchar, string, wstring | DDDDD              | 0               | 65535           | Data block, absolute address        |
| DB(bit)  | bool                                                                                                                                                                      | DDDDDd             | 0               | 655357          | Data block (bits), absolute address |
| M        | byte, word, dword, lword, usint, uint, udint, ulint, sint, int, dint, lint, real, lreal, date, s5time, dt, ldt, tod, ltod, time, ltime, dtl, char, wchar, string, wstring | DDDDD              | 0               | 65535           | M memory                            |
| M(bit)   | bool                                                                                                                                                                      | DDDDDd             | 0               | 655357          | M memory (bits)                     |
| I        | byte, word, dword, lword, usint, uint, udint, ulint, sint, int, dint, lint, real, lreal, date, s5time, dt, ldt, tod, ltod, time, ltime, dtl, char, wchar, string, wstring | DDDDD              | 0               | 65535           | Input area                          |
| I(bit)   | bool                                                                                                                                                                      | DDDDDd             | 0               | 655357          | Input area (bits)                   |
| Q        | byte, word, dword, lword, usint, uint, udint, ulint, sint, int, dint, lint, real, lreal, date, s5time, dt, ldt, tod, ltod, time, ltime, dtl, char, wchar, string, wstring | DDDDD              | 0               | 65535           | Output area                         |
| Q(bit)   | bool                                                                                                                                                                      | DDDDDd             | 0               | 655357          | Output area (bits)                  |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **DB**: Enter the data block number of the tag.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::

# Additional Considerations/Configurations

You can:

- Export elements from a single PLC tag table
- Export all PLC tags and constants of a CPU from the **All tags** table

**To export device tags:**

1.   In TIA Portal, open the table from which you want to export the tags (a single PLC tag table or the **All tags table**).
2. In the PLC tag table, click the **Export** button
   The *Export&#x20;*&#x64;ialog box opens.
3. Click the **Path of export file** button.
   The *Save as* dialog opens.
4. Select the directory for the export file and enter the file name.
5. Select `.xlsx`, `.sdf`, or `.xml` as the file type. The only human-readable file type is `.xlsx`.
6. Click **Save**.
7. Select the export options
   - Export tags and/or constants
   - Export all elements of the table or just the elements that are being used in the program on the current CPU
8. Clic&#x6B;**&#x20;OK**.
   The export file is generated. Errors and warnings generated during export appear on th&#x65;**&#xA0;***Info&#xA0;*&#x74;ab of the *Inspector&#xA0;*&#x77;indow.


[title] Dashboard Site
[path] Product Features/Flows Manager/Flow Canvas Dashboard/

The *Site&#x20;*&#x74;ab allows you to make selections affecting your dashboard, format the date and configure the size, spacing and padding for widgets and groups.

The **Title** field allows you to set the title of the dashboard.

The following options are available for further configuration of the dashboard website:

| **Option** | **Available configurations**                                                                                      |
| ---------- | ----------------------------------------------------------------------------------------------------------------- |
| Title Bar  | - Show the title bar
- Hide the title bar                                                                         |
| Side Menu  | * Click to show side menu
* Always show side menu
* Always show icons only                                        |
| Tabs       | - No swipe between tabs
- Allow swipe between tabs
- Allow swipe (+mouse) between tabs
- Swipe to open/close menu |
| Theme      | * Node-RED theme everywhere
* Use Angular theme in ui\_template
* Angular theme everywhere                        |

The date format can be set up by entering what you would like to see on the Dashboard.

:::hint{type="info"}
**Example**: DD/MM/YYYY
:::

You can control the size and spacing of widgets as well as the padding and spacing of groups on the Dashboard.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NWquP4n0RVQRJ_bz2kPPb_flows-dashboard-widget-group-size.png" size="80" width="1175" height="199" position="center" caption="Widget and group configuration options." showCaption="true"}


[title] Utilities
[path] Product Features/DeviceHub/

The *Utilities&#x20;*&#x70;ane of the *DeviceHub&#x20;*&#x6D;odule allows you to test connectivity to a URL (host name or IP address) and accessibility of a port for a device you want to connect to your edge device for both TCP and UDP. This functionality helps you troubleshoot your network.

# Access Utilities UI

You can access *Utilities&#x20;*&#x66;rom the *DeviceHub*.&#x20;

**To access Utilities:**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **DeviceHub&#x20;**>**&#x20;Utilities**.
   The *Utilities&#xA0;*&#x70;ane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0AcM1Zbo9jSROiTg4BKnB_image.png" size="80" width="1920" height="969" caption="DeviceHub Utilities pane" position="center" showCaption="true"}

# Next Steps

- [Test an IP Address](docId\:COVuj9X1Wa8iE-Eyc1Fn1)&#x20;
- [Test a Port](docId\:iHpLaBpIcx2K2hFq0Pxzg)&#x20;


[title] Device Discovery Tool
[path] Product Features/DeviceHub/Devices/

When you [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq), you may have the option to use the *Device Discovery* tool.&#x20;

# Overview

When you us&#x65;*&#x20;Device Discovery&#x20;*&#x77;hen configuring a device, it searches for devices on the network that are specific to the device protocol and respective driver. After searching for and selecting the device that is discovered on the network, certain parameters are pre-configured that allow the device to be added to Litmus Edge.&#x20;

To search for any device on the network, use the [Device Discovery (Network)](docId\:GbtjgJSwuYIuPrFG4_hI-) feature. This feature is not specific to device protocols or devices.&#x20;

# Supported Protocols and Drivers

This feature is only available for the following device protocols:

- BACnet (available for the [BacnetIP](docId\:khkIjze09sfiCOc7vtkZu) driver)
- OPC UA (only available for the [OPC UA Client Advanced](docId\:ezRIJipeot9AN_kGPympR) driver)


[title] Server Search
[path] Product Features/DeviceHub/Tags/Search for Pre-defined Device Tags/

:::hint{type="info"}
**Note**: The Server Search option is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

The *Server Search* option allows you to do a search of available tags for your device and then add those tags to the DeviceHub device.

Devices that support searching for device tags display a tag icon in the top-right corner of the device card.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/R1a_I7-JJ7u8wECqagmeS_image.png" size="60" width="419" height="343" position="center" caption="Browse tag option shown for a device " showCaption="true"}

:::hint{type="info"}
**Notes**: To use *Server Search*, you must know the tag names you want to add to your DeviceHub device and search for them before adding them. To view all available tags for a device before adding them, you can use [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd) instead.&#x20;
:::

**To use the server search:**

1. From the *Tags&#x20;*&#x70;ane, click the **Add&#x20;**&#x69;con, and then select **Server Search**.
   The *Server Search* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xI1EWATjpJOZkwnfxB-AO_server-search-option.png" size="80" width="1492" height="546" caption="Server Search option" position="center" showCaption="true"}
2. From the **Select Device** drop-down list, select the device you want to search tags for.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/X-RZMxvBySO3zccFihjCv_serversearch01.png" size="80" width="776" height="352" position="center" showCaption="false"}
3. Click **Load**.&#x20;
   For Litmus Edge version 3.5.5 and earlier, you need to click the **Refresh&#x20;**&#x69;con to load tags.&#x20;
4. Once the search finishes, click **Next**.&#x20;
5. In the **TagName&#x20;**&#x73;earch field, enter a search term for a tag you want to add and click the **Search&#x20;**&#x69;con.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZUX8-LFfT_LtKFCJALwCW_tag-name-search.png" size="80" width="1339" height="707" caption="The search field" position="center" showCaption="true"}
6. If needed, move the **Similarity Value** selector to refine your search. Values range from 0 to 1. A value of 0 means all possible matches for the search term display. A value of 1 means only tags that match the search term exactly display.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vD7tSTltequV9G-CtqrSd_similarity-value.png" size="80" width="1346" height="712" caption="Similarity value selector" position="center" showCaption="true"}
7. Click check boxes for the tag(s) you want to create, and then click **Create tags**.&#x20;
   The tag is automatically added to the device and the *Result&#x20;*&#x73;ection appears.&#x20;
8. Do one of the following:
   - Click **Close&#x20;**&#x74;o close the dialog box.&#x20;
   - Click **Reset&#x20;**&#x74;o remove the added tag.&#x20;
   - Click **Back&#x20;**&#x74;o return to the *Search tags* section and add more tags.&#x20;


[title] Siemens Sinumerik Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

Review the following information for setting up and configuring the Siemens Sinumerik Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                 |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                         |
| **Validated devices/series** | [Sinumerik](https://www.siemens.com/global/en/products/automation/systems/cnc-sinumerik/automation-systems.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below for Toolbox v4.6.

**To configure your device:**&#x20;

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: Siemens 808D Advanced M
   **Communication I/F**: Ethernet.&#x20;
2. Press **Set password**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/scpCTBUZfZsnGhHKsJWoz_siemens-sinumerik-ethernet-password.png" size="80" width="732" height="460" caption="Set password option" position="center" showCaption="true"}
3. Enter **SUNRISE&#x20;**&#x66;or authorization to configure the device.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gd5TgwLQr9BPnOCTCK5zx_siemens-sinumerik-ethernet-authorize.png" size="80" width="712" height="424" caption="Enter passwor" position="center" showCaption="true"}
4. Press **Sys Data**.&#x20;
5. Press **Serv displ.&#x20;**
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ca1d5HwKYKdCsKpH3PWmO_siemens-sinumerik-ethernet-servdispl.png" size="80" width="695" height="665" caption="Serv. displ. option" position="center" showCaption="true"}
6. Press **Service Network**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GQq7bNeKjbnDd-jJAKfyR_siemens-sinumerik-ethernet-servicenetwork.png" size="80" width="697" height="447" caption="Service network option" position="center" showCaption="true"}
7. Enter the network parameters.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/q8xsMzBpJ4I_UCjVL9Abh_siemens-sinumerik-ethernet-parameters.png" size="80" width="649" height="508" caption="Network configuration screen" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Siemens                                  |
| **Driver**          | Siemens Sinumerik Ethernet (Gen1)        |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 102                                      |
| **Slot**            | 2                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types**                          | **Address Format** | **Min Address** | **Max Address** |
| -------- | ---------------------------------------- | ------------------ | --------------- | --------------- |
| I        | bit                                      | DDDDo              | 0               | 40957           |
| Q        | bit                                      | DDDDo              | 0               | 40957           |
| M\_Bit   | bit                                      | DDDDo              | 0               | 40957           |
| V\_Bit   | bit                                      | DDDDDDDDo          | 0               | 100000007       |
| S\_Bit   | bit                                      | DDDDo              | 0               | 40957           |
| SM\_Bit  | bit                                      | DDDDo              | 0               | 40957           |
| T\_Bit   | bit                                      | DDDo               | 0               | 2557            |
| C\_Bit   | bit                                      | DDDo               | 0               | 2557            |
| M        | byte, sint, word, int, dword, dint, real | DDDDD              | 0               | 10239           |
| S        | byte, sint, word, int, dword, dint, real | DDDDD              | 0               | 10239           |
| SM       | byte, sint, word, int, dword, dint, real | DDDDD              | 0               | 10239           |
| V        | byte, sint, word, int, dword, dint, real | DDDDDDDD           | 0               | 10000000        |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Siemens S7-400 (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

:::hint{type="warning"}
**Important**: This driver was deprecated in Litmus Edge version 3.11.0. We recommend using the Gen 2 [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4) or [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d).
:::

Review the following information for setting up and configuring the Siemens S7-400 (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                           |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                   |
| **Validated devices/series** | [S7-400](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-400.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure your device for Ethernet access.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Siemens                                  |
| **Driver**          | Siemens S7-400 (Gen1)                    |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 102                                      |
| **Slot**            | 1                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type**                 | **Address Format** | **Min Address** | **Max Address** |
| -------- | ------------------------------ | ------------------ | --------------- | --------------- |
| PE       | bit                            | DDDDd              | 0               | 40957           |
| PE       | word                           | DDDD               | 0               | 4095            |
| PA       | bit                            | DDDDd              | 0               | 40957           |
| PA       | word                           | DDDD               | 0               | 4095            |
| MK       | bit                            | DDDDd              | 0               | 40957           |
| MK       | byte, word, dword, real, cou   | DDDD               | 0               | 4095            |
| DB       | bit                            | DDDDDd             | 0               | 327677          |
| DB       | byte, sint, word, int, counter | DDDDD              | 0               | 32767           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **DB Number**: Enter the data block number of the tag.&#x20;
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Add an Instance
[path] Product Features/Digital Twins/

:::hint{type="info"}
**Notes**:&#x20;

- The Digital Twins feature is available for Litmus Edge version 3.3.1 and later.&#x20;
- To access the Digital Twins feature, you need a Scale or Growth Litmus license.&#x20;
:::

You can add a Digital Twins Instance by navigating to **Digital Twins&#x20;**>**&#x20;Instances**.&#x20;

Instances are inherited from a model. They are the actual data objects that contain static and dynamic data from different sources. You must create a model before creating an instance.

# Before You Begin

Before you add an Instance, you will need to create a Digital Twins model. See [Create and Import Models](docId:7bHtECK6btdKqfFmA1TqA) for details.&#x20;

# Step 1: Add Instance

**To add an instance:**

1. Navigate to **Digital Twins***&#x20;>&#x20;***Instances**.&#x20;
   The *Instances&#x20;*&#x70;ane appears.&#x20;
2. From the *Instances&#x20;*&#x70;ane, click the **Add an instance** tile.&#x20;
   The *Add an Instance&#x20;*&#x64;ialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FCtM5lf-5l6fkVm8-2PhF_addinstance.png" size="80" width="1148" height="490" caption="Add an instance icon" position="center" showCaption="true"}
3. Select a model to associate with the instance. Either search for a model or select one from the list.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/h0tpnhh0XilO6mSD7lQZg_addinstancedialogbox2.png" size="80" width="981" height="354" caption="Add an instance dialog box" position="center" showCaption="true"}
4. Enter the details for the Instance.&#x20;
   - **Name**: Enter a name for the instance. &#x20;
   - **Interval**: Enter the interval between retrieving data from the instance. The minimum interval allowed is one second.&#x20;
   - **Topic**: Review the default topic name for the instance. You have the option of entering a custom topic name.&#x20;
   - **Flatten hierarchy**: This option is available for Litmus Edge version 3.3.2 and later. Select the checkbox to send hierarchy data in a flat JSON structure. When selected, it will take a nested JSON object and convert it into a JSON object with one layer using dot notation. This is useful when sending JSON objects to InfluxDB, because InfluxDB does not accept nested JSON objects.
5. Click **Add**.&#x20;

# Step 2: Configure Instance

After creating the instance, you can customize the model parameters it is associated with.&#x20;

Click the Instance tile (grid view) to view the instance details.&#x20;

After making changes to an instance, you must save the changes and then restart the instance to implement the updates. See the "Restart Instance" section below.&#x20;

## Static Attributes

The *Static Attributes* tab displays the metadata values for the model the instance belongs to. You can customize the attribute values for the instance.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uVea-2brvLRP6AZ3j_IY6_image.png)

\[1] Search for static attributes configured in the model the instance is associated with

\[2] Refresh attribute values

\[3] Import Attributes. See [Create and Import Models](docId:7bHtECK6btdKqfFmA1TqA) to learn more about importing static attributes.&#x20;

\[4] Save changes to the instance. For Litmus Edge version 3.5.6 and earlier, save changes by clicking the **Save&#x20;**&#x69;con.&#x20;

\[5] Customize static attribute value

## Dynamic Attributes

The *Dynamic Attributes* tab displays the variable data attributes configured in the model the instance belongs to. You can map one-to-one relationships with data topics and attributes by updating the topic field for the instance.&#x20;

:::hint{type="warning"}
**Important**: To view data from a topic in the instance payload, you must map the topic to a dynamic attribute.&#x20;
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dTbIulFqz7kfCyAY38RO6_image.png)

\[1] Search for dynamic attributes in the model the instance is associated with.&#x20;

\[2] You have the option of adding topics from different data sources in Litmus Edge, such as from DeviceHub or from an integration. Click the **Edit** icon, and search for a DeviceHub tag or enter the topic name in the **Topic&#x20;**&#x66;ield. The search function is available for Litmus Edge version 3.5.2 and later.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/w3jTGnjDZi46jtEFSn-dN_image.png" size="80" width="820" height="280" position="center" showCaption="false"}

\[3] Refresh attribute values.&#x20;

\[4] Import Attributes. See [Create and Import Models](docId:7bHtECK6btdKqfFmA1TqA) to learn more about importing dynamic attributes.&#x20;

\[5] Save changes to the instance. For Litmus Edge version 3.5.6 and earlier, save changes by clicking the **Save&#x20;**&#x69;con.&#x20;

## Data Access

The *Data Access* tab allows you to view real-time data for the instance.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bGcnkXHGcgeW92mW8mWF4_image.png)

\[1] Review the topic name and interval configured for the instance. Click the **Copy&#x20;**&#x69;con to copy the topic name.&#x20;

\[2] Subscribe and unsubscribe for data access to view real-time data for the instance.&#x20;

## Restart Instance

After making changes to the instance, make sure to click **Save instance** and then **Restart instance** to implement the updates.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/c5snXObEliR-QDkweOMup_image.png)


[title] Product Features
[path] /


[title] Manage User Settings
[path] Product Features/Flows Manager/Manage the Flow Canvas/

You can select from multiple options when modifying user settings. This enables you to customize the flow views.

You can customize settings for:

- **View**: Options for the Grid, Nodes, and showing tips in the sidebar palette. You can select a language from here.
- **Keyboard**: Options to assign or modify keyboard shortcuts for actions performed in the Actions list. The scope for Actions can be assigned to "global" or "workspace".
- **Palette**: Options to enable or disable nodes and install additional node modules.

# Manage Flow Canvas User Settings

You can manage the Flows user settings from the Flow Definition window.&#x20;

**To manage Flows user settings:**

1. Navigate to **Flows Manager**.
   The *Overview&#x20;*&#x70;ane appears.
2. Click the **Go To Flow Definition** icon next to a selected flow.
   The flow canvas opens in a new browser tab.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DeJ3y4SUZncVlRm4KsmP7_gotoflowdefinitionicon.png "Go To Flow Definition icon")
3. Open the flow canvas menu and select **Settings**.

   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BOIqzPp3QoEJfGUF1d2K0_settingsmenuitem.png "Settings menu item")

The *User Settings* dialog box appears and the *View&#x20;*&#x73;ettings appear by default.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3Ey-hbbkZYMvj7Y2MGkCg_image.png" size="80" width="700" height="588" caption="Flow Manager User settings dialog box" position="center" showCaption="true"}

You can manage the following settings.&#x20;

## View Settings

You can manage the following View settings:

- **Language**: Update the language in the Flows view.&#x20;
- **View**: Select if the zoom level and scroll position should restore on load.&#x20;
- **Grid**: Select options to show grid and snap to grid. Also select the grid size.&#x20;
- **Nodes**: Select to show node status and label of new added nodes.&#x20;
- **Other**: Select to show tips and guided tours for new versions.&#x20;

## Palette Settings

You can customize settings for the Flows palette from a Flows View.

This allows you to enable or disable nodes and install additional node modules.

**To customize palette settings:**

1. From the *User Settings* dialog box, click the **Palette** tab.
2. In the *filter nodes* search bar, enter `node-` or `loop` in the **Search** bar.
   A list of uninstalled modules appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3jqCc3OqR7btVphGp7SFL_palettenodessettings.png" size="80" width="702" height="793" caption="Palette user settings section" position="center" showCaption="true"}
3. Click **Install** next to a selected module from the list.
   The *Confirmation&#x20;*&#x64;ialog box appears.
4. Clic&#x6B;**&#x20;Open node information** to make sure there are no dependencies that cannot be automatically resolved.
5. Click **Install**.
   The module installs in Flows.

## Keyboard Settings

You can customize the keyboard settings from a Flows View.

This includes options to assign or modify keyboard shortcuts for actions performed in the Actions list. The scope for Actions can be assigned to global or workspace.

**To update a keyboard shortcut:**

1. Click an unassigned action from the list.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Dwl71TIPzMWIhQUNXwoSa_keyboardusersetting.png" size="80" width="702" height="382" caption="Update keyboard setting section" position="center" showCaption="true"}
2. &#x20;Enter the command you want to use for the action in the **shortcut** field. For example, `ctrl-alt-f`.
3. Select **global** or **workspace** from the **scope** drop-down list.
4. Click the **Check** icon to accept the changes.


[title] Dashboard Layout
[path] Product Features/Flows Manager/Flow Canvas Dashboard/

The dashboard layout tab allows you to organize dashboard elements and launch the Node-RED dashboard for review.&#x20;

From the **Layout** tab, you can add tabs and links, as well as launch the Node-RED Dashboard where you can review your dashboard.

Use the Dashboard nodes on the Node Palette to add to your layout.

The Dashboard offers easy drag-and-drop dashboard construction. The following table shows the elements used to create a dashboard.

| **Dashboard Element** | **Description**                                                                                                                            |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| Tab                   | A dashboard can have multiple tabs, which enable navigation to different pages.                                                            |
| Group                 | Use a group as a building block to organize display nodes on a page. In a web UI context, this grouping is often referred to as a portlet. |
| Nodes                 | Drag Dashboard Nodes onto the Canvas and designate the tab and group to which the nodes belong.                                            |

An example of basic flow dashboard elements is shown below.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/e1yIF47FFoLxkc4_AevFD_dashboard-elements.png" size="80" width="619" height="363" position="center" caption="Examples of basic flow dashboard elements." showCaption="true"}

:::hint{type="warning"}
**Caution**: The **+ tab**, **+ link**, **+ group**, and **edit&#xA0;**&#x74;abs in the dashboard layout view are visible only when you mouse over the tab / group row.
:::

# Navigate to the Dashboard Layout Tab

Navigate to the Dashboard Layout tab in order to configure various layout settings related to the Node-RED dashboard layout.

**To navigate to the Dashboard Layout tab:**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Flows Manager**.
   The Overview pane appears.
3. Click the **Expand&#x20;**&#x69;con next to a selected Flow.
   The selected Flow view opens in a separate browser tab.
4. Click the **Menu&#x20;**&#x69;con, select **View > Dashboard,** and then drag the **Sidebar&#x20;**&#x75;p from the bottom of the canvas.
   The Layout tab appears by default.

# Add a Dashboard Tab

You can add a dashboard tab from the Dashboard Layout tab.

**To add a dashboard tab:**

1. Navigate to the Dashboard Layout tab.
2. Click **+ tab**.
   A new tab appears in the *Tabs & Links* box.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dvxnoIN3b5DkfcUJkjd1M_qcnszy4pgspnebjcnhsntflows-dashboard-layout-with-tab.png)
3. Click **Deploy**.
   The Layout is saved.


# Rename a Dashboard Tab

You can rename a dashboard tab from the Dashboard Layout tab.

**To rename a dashboard tab:**

1. Navigate to the Dashboard Layout tab.
2. Hover over a selected tab and click **Edit**.
   The *Edit dashboard tab node* pane appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TNfdx-GZ1cJyV1iT_cQ9T_2023-09-0611-16-51.png" size="80" width="508" height="480" position="center" caption="Edit dashboard tab node pane" showCaption="true"}
3. Enter a new name in the *Name* field, and then click **Update**.
4. Click **Deploy**.

# Modify a Tab Icon

You can modify a dashboard tab icon from the Dashboard Layout tab.

Tab icons can be modified by selecting alternate icons from these sources:

- Material Design Icons
- Font Awesome Icons
- Weather icon

**To modify a dashboard tab icon:**

1. Navigate to the Dashboard Layout tab.
2. Hover over a selected tab and click **Edit**.
   The *Edit dashboard tab node* pane appears.
3. Enter the name of the icon in the *Icon&#x20;*&#x66;ield, and then click **Update**. For example, `check_circle`, or `home`.&#x20;
4. Click **Deploy**.

:::hint{type="success"}
**Tip**: The Icon field can be a Material Design icon (e.g. 'check', 'close') or a Font Awesome icon (e.g. 'fa-fire'), or a Weather icon (e.g. 'wi-wu-sunny').

You can use the full set of google material icons if you add 'mi-' to the icon name. e.g. 'mi-videogame\_asset'.
:::

# Remove a Dashboard Tab

You can remove a dashboard tab from the Dashboard Layout tab.

**To remove a dashboard tab:**

1. Navigate to the Dashboard Layout tab.
2. Hover over a selected tab and click **Edit**.
   The *Edit dashboard tab node* pane appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/As2EOYvwtByck5VIxM_CG_emphasizing-delete-button-2023-09-0611-16-51.png" size="80" width="508" height="480" position="center" showCaption="false"}
3. Click **Delete**.
4. Click **Deploy**.

# Add a Group to a Dashboard Tab

You can add a group to a dashboard tab from the Dashboard Layout tab.

**To add a group to a dashboard tab:**

1. Navigate to the Dashboard Layout tab.
2. Hover over a selected tab and click **+ Group**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZOltsjyBlHGbRGc1325gC_2023-09-0613-10-46.png "Hover over the tab to view these options.")
3. Click **Deploy**.

# Modify a Dashboard Group

You can add a dashboard group from the Dashboard Layout tab.

**To modify a dashboard group:**

1. Navigate to the Dashboard Layout tab.
2. Hover over a selected group and click **Edit**.
3. Hover over a selected group and click **Edit**.
   The *Edit dashboard group node* pane appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5drQ2G00L01suq2HCFC3O_2023-09-0615-23-50.png" size="80" width="508" height="406" position="center" caption="Edit dashboard group node" showCaption="true"}
4. Modify the group name, tab, class or width and then click **Update**.
5. Click **Deploy**.

# Remove a Dashboard Group

You can remove a dashboard group from the Dashboard Layout tab.

**To remove a dashboard group:**

1. Navigate to the Dashboard Layout tab.
2. Hover over a selected group and click **Edit**.
   The *Edit dashboard group node* pane appears.
3. Click **Delete**.
4. Click **Deploy**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LLISXMiNz9Z0tQfZlJmAB_image.png" size="80" width="508" height="406" position="center" caption="Delete button" showCaption="true"}


[title] Manage Instances
[path] Product Features/Digital Twins/

:::hint{type="info"}
**Notes**:&#x20;

- The Digital Twins feature is available for Litmus Edge version 3.3.1 and later.&#x20;
- To access the Digital Twins feature, you need a Scale or Growth Litmus license.&#x20;
:::

After you create instances, you can navigate to **Digital Twins&#x20;**> **Instances&#x20;**&#x74;o manage them.&#x20;

# Change Instance View

Click the icons for **Show devices grid** or **Show devices table** to change how you view your instances.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WMUy048np95x6VGUh6syt_image.png" size="80" width="1919" height="401" caption="Change instance view icons" position="center" showCaption="true"}

# Filter and Search Instances

Use the search bar to search by instance name.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Pj3qgBxXRRMdlJoILgUJp_image.png" size="80" width="943" height="498" caption="The Instance search bar" position="center" showCaption="true"}

# Manage Individual Instances

From the *Show devices grid* view, you can use instance tiles to access management options. Refer to the image and callouts below.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/b8kEJ9_3YEBMcmpnHvY8t_image.png" size="80" width="925" height="433" caption="Management options for individual instance" position="center" showCaption="true"}

\[1]**&#x20;Action menu**: The action menu displays the following options.&#x20;

- Disable/Enable
- Edit
- Delete

\[2] **Copy Instance Topic**&#x20;

\[3]**&#x20;Disable/Enable Instance**

\[4]**&#x20;Edit**: Update the associated model, instance name, interval, and select/unselect the *Flatten Hierarchy* check box.&#x20;

:::hint{type="info"}
**Note**: The Flatten Hierarchy feature is available for Litmus Edge version 3.3.2 and later. When *Flatten Hierarchy&#x20;*&#x69;s selected, it will take a nested JSON object and convert it into a JSON object with one layer using dot notation. This is useful when sending JSON objects to InfluxDB, because InfluxDB does not accept nested JSON objects.
:::

\[5] **Delete**

# Manage Instance Parameters

You can click the Instance tile (grid view) or Instance name (table view) to view the instance details. See the *Step 2: Configure Instance&#x20;*&#x73;ection from [Add an Instance](docId\:heaqsUA7YTEWvF_6dE-Ks) for details on updating the parameters. After making changes make sure to save the updates and then [Restart the instance](docId\:heaqsUA7YTEWvF_6dE-Ks).&#x20;


[title] Create an Analytics Flow
[path] Product Features/Analytics/Analytics Flows and Processors/

You can create an analytics flow by navigating to **Analytics&#x20;**>**&#x20;Instances**.&#x20;

When creating an analytics flow, you're guided through selecting input, function, and output processors and the flow automatically adds connections to the processors.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/Dvk4WrGzQ2c?si=Qoa8XJMyvD45z7Xe&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Create Analytics Flow

**To create an Analytics Flow:**

1. Navigate to **Analytics&#x20;***>&#x20;***Instances**.&#x20;
   The *Instances&#x20;*&#x70;ane appears.&#x20;
2. Use the *Analytics Groups* drop-down list to select the group you want to add the processor to.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9OHzVMs7ocuASYixUaeVY_groupsdropdownlist.png" size="80" width="687" height="415" caption="Analytics Groups drop-down list" position="center" showCaption="true"}
3. Open the **Action menu** and select **Add flow**.&#x20;
   The *Create Flow&#x20;*&#x77;izard appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lZM_PB1BAeaaq6wRXSOGF_addanalyticsflow.png" size="80" width="1408" height="458" caption="Add Flow option" position="center" showCaption="true"}
4. Enter a name for the flow.
5. Select an input processor and define its parameters. See [Input Processors](docId\:Dn4L8eXT2AetioGW06aUK) to learn more.&#x20;
6. Click **Next**.&#x20;
7. Select an function processor and define its parameters. See [Statistical Functions](docId\:Jsq5lKsygy7rp3mGQkDIx) to learn more.
8. Click **Next**.&#x20;
9. Select an output processor and define its parameters. See [Output Processors](docId\:fhCwpw99glTs_ajdf7WXl) to learn more.
10. Click **Next**.&#x20;
11. Click **Create Flow**.
    The flow displays in the Analytics canvas with default connections.&#x20;


[title] Dashboard Review
[path] Product Features/Flows Manager/Flow Canvas Dashboard/

Once the dashboard elements have been configured, you can review the results in the dashboard.

The URL for the dashboard uses your Litmus Edge IP address.

:::hint{type="info"}
**Example**: https\://*\<ip address>*/flows/api/ui/#/0
:::

**To review dashboard results:**

1. From the Navigation panel, selec&#x74;**&#xA0;Flows Manager.**
2. Click the **Expand&#xA0;**&#x69;con next to a selected Flow.
3. Click the **Menu&#xA0;**&#x69;con, select **View&#x20;**> **Dashboard**, and then drag the **Sidebar&#xA0;**&#x75;p from the bottom of the canvas.
4. From the Dashboard tab, click the **Launch** icon at the upper right of the sidebar dashboard view.
   The dashboard appears in a new tab.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PpzMqxGZBLh1MvBTCoQXd_image.png "Dashboard launch icon")


[title] Manage the Timeseries DB
[path] Product Features/DataHub/DB Management/

You can manage the Timeseries DB by navigating to **DataHub&#x20;**>**&#x20;DB Management**.&#x20;

:::hint{type="info"}
**Note**: For Litmus Edge version 3.5.2, 3.5.3, 3.5.5, and 3.5.6, DB Management options are related to internal databases configured in **DataHub (Legacy)**.&#x20;
:::

DataHub's DB Management module offers the following functionalities:

- Drop Tables
- Delete a Database

# View Tables

You can view database tables from the *DB Management* pane by clicking the **tsdata&#x20;**&#x64;atabase name.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kKpxmh_1m9pcL4o89RjVr_image.png" size="80" width="1910" height="255" position="center" showCaption="false"}

The DataHub tables are the data from the devices you added in DeviceHub if you enabled data store.



After clicking *tsdata*, the tables drop down and are selectable.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hYAgQk7291IE-nyXJbkFZ_image.png" size="80" width="1910" height="426" caption="Individual database tables" position="center" showCaption="true"}



# Drop Tables

You can drop a table from the timeseries database in the *DB Management* pane.

:::hint{type="info"}
**Note**: By dropping a table, you delete the data stored for devices you had added in DeviceHub with data store enabled.
:::

**To drop a table from the database:**

1. From the *DB management* pane, click the database name: **tsdata**.
   The selected database's tables drop down.
2. Select a table's check box and click the **Remove Selected Data&#x20;**&#x69;con.
   The *Confirm Deletion* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3Lb1j4ySA55UblahyIy6Y_j6z6a-mgdbprmop2jc5fqimage.png" size="80" width="1911" height="425" caption="The Remove selected table icon" position="center" showCaption="true"}
3. Click **Yes**.
   The selected table's data is removed from the database.

# Delete a Database

You can delete the time series database from the *DB Management* pane.

**To delete the database:**

1. From the *DB management* pane, click the **Remove Database&#x20;**&#x69;con by the database name.
   The *Confirm Deletion* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/busOOGimx8Hp_y-yThaQ9_scj9cpc4nmdqh5vnupvp5image.png" size="80" width="1911" height="425" caption="The Remove Database icon" position="center" showCaption="true"}
2. Click **Yes**.&#x20;
   The database is removed from the *DB Management* pane.&#x20;


[title] Gen1 and Gen2 Driver Differences
[path] Product Features/DeviceHub/Devices/

The following table shows the differences between the capabilities of Gen1 and Gen2 drivers.

The Gen2 drivers are paired as closely as possible with comparative Gen1 drivers to help with the selection process.

:::hint{type="info"}
**Note**: The **Enable Logging** option when connecting an edge device is only available for Gen 2 drivers. See [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) for more details.
:::

| **Gen 1 Driver**                                                                                                                                                                                                                                      | **Gen 2 Driver**                                                                                                                                                                                                                                                            |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Modbus ASCII (Gen1)**<br />* Data types supported are: bit, word.                                                                                                                                                                                   | **Modbus ASCII**<br />* Has the same functionality as Modbus ASCII (Gen1).
* Better performance compared to Gen1 driver.
* Data types supported are: bit, word.                                                                                                             |
| **Modbus RTU (Gen1)**<br />* Data types supported are: bit, int, uint, ulong, ulong (big-endian), float, float (big-endian), double, double (big-endian).                     &#x20;                                                                  | **Modbus RTU**<br />* Data types supported are: bit, word.&#x20;
* Has an option for zero-based addressing and therefore replaces both Gen1 RTU drivers.&#x20;                                                                                                              |
| **Modbus TCP (Gen1)**<br />* Data types supported are: Data types supported are: bit, int, uint, ulong, ulong (big-endian), float, float (big-endian), double, double (big-endian).       &#x20;                                                      | **Modbus TCP**<br />* Has the same functionality as Modbus TCP (Gen1).
* Data types supported are: bit, word, float32, float64.
* Better performance compared to Gen1 driver.
* Has an option for zero-based addressing and therefore replaces both Gen1 TCP drivers.&#x20; |
| **Modbus UDP (Gen1)**<br />* Data types supported are: bit, word.                                                                                                                                                                                     | **Modbus UDP**<br />* Has the same functionality as Modbus UDP (Gen1).
* Better performance compared to Gen1 driver.
* Data types supported are: bit, word.                                                                                                                 |
| **Simulator (Gen1)**<br />* This driver is used to generate simulated data. It supports all the standard python math functions.
* Does not support char and string data types.
* Data types supported are: bit, int, float.                    &#x20; | **Generator**<br />* Has the same functionality as Simulator (Gen1).
* Data types supported are: float64, int64, unit64, bit, char, string.                                                                                                                                 |


[title] Instances Table
[path] Product Features/Analytics/

An Instance Table is a listed visualization of your current analytics flows, which allows you to quickly add processors to create and connect flows sequentially. Once connected, the processors can be viewed in context from the *Instances&#x20;*&#x70;ane.

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

- You must have at least one existing processor in the *Instances&#xA0;*&#x70;ane to use the processor tables.
- Properly connected processors and connection definitions display in blue. Processors and connection definitions display green if improperly connected.
:::

# Access Instances Table UI

**To access the Instances Table:**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **Analytics&#x20;**>**&#x20;Instances Table**.
   The *Instances Table* pane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lDnyAOdt1wck-uCgfGOdW_image.png" size="80" width="1096" height="406" caption="The Instances Table pane" position="center" showCaption="true"}

# Next Steps

- [Add a Processor from the Instances Table](docId\:IT4TBE4Mvr3RRH_Vee-rr)&#x20;
- [Manage Processors from the Instances Table](docId\:YwVEeGar6NF-f7UmMsfBm)&#x20;


[title] Device Discovery (Network)
[path] Product Features/DeviceHub/

The device discovery service scans the network and returns a list of devices it finds. This allows you to easily find Litmus Edge devices and copy their IP addresses.

- Discovery is disabled on all interfaces by default. You can enable it at any time.
- Once enabled, Discovery scans all network addresses at one-second intervals. It may take time to scan an entire network.
- Scanning doesn't stop until it is disabled. If a device is not recognized after ten minutes, it is removed from the list.

To search for devices that are specific to device protocols and drivers, use the [Device Discovery Tool](docId\:N9jtAdKuUXNU_YNhq87x4).&#x20;

:::hint{type="warning"}
**Important**: Litmus Edge enforces restrictions to prevent the following issues.

- **Security Alerts**: Because discovery regularly scans the network, security systems (such as Trojan detection systems) might flag this activity. To avoid security warnings, network scans are limited to one-second intervals, and devices are removed from the list after ten minutes of inactivity.
- **Missing Devices**: Discovery only supports subnet / 24 networks to limit the number of nodes to discover. This restriction prevents discovery from taking longer than ten minutes for each device.
:::

# Access Device Discovery UI

You can access *Device Discovery&#x20;*&#x66;rom the *DeviceHub*.&#x20;

**To access Device Discovery:**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **DeviceHub&#x20;**>**&#x20;Device Discovery**.
   The *Device Discovery* pane appears listing all the Ethernet interfaces.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/O3EUc9TzstwpjLajTFKoG_2023-07-2011-18-46.png "Device Discovery pane")


[title] Siemens S7-300 (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

:::hint{type="warning"}
**Important**: This driver was deprecated in Litmus Edge version 3.5.2. We recommend using the Gen 2 [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4) or [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d).
:::

Review the following information for setting up and configuring the Siemens S7-300 (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                             |
| ---------------------------- | ------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                     |
| **Validated devices/series** | [Siemens S7-300 series](http://www.siemens.com/entry/cc/en/) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure your device for Ethernet access.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Siemens                                  |
| **Driver**          | Siemens S7-300 (Gen1)                    |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 102                                      |
| **Slot**            | 1                                        |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, use the following tag/register mapping table.

| **Name** | **Value Type**                 | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | ------------------------------ | ------------------ | --------------- | --------------- | --------------- |
| PE       | bit                            | DDDDd              | 0               | 40957           |                 |
| PE       | word                           | DDDD               | 0               | 4095            |                 |
| PA       | bit                            | DDDDd              | 0               | 40957           |                 |
| PA       | word                           | DDDD               | 0               | 4095            |                 |
| MK       | bit                            | DDDDd              | 0               | 40957           |                 |
| MK       | byte, word, dword, real, cou   | DDDD               | 0               | 4095            |                 |
| DB       | bit                            | DDDDDd             | 0               | 327677          |                 |
| DB       | byte, sint, word, int, counter | DDDDD              | 0               | 32767           |                 |


[title] Add a Processor from the Instances Table
[path] Product Features/Analytics/Instances Table/

You can add a processor to an existing Analytics flow by navigating to **Analytics&#x20;**>**&#x20;Instances Table**.&#x20;

# Add an Input or Output Processor from the Instances Table

**To add a processor from the Instances Table:&#x20;**

1. Navigate to **Analytics&#x20;***>&#x20;***Instances Table**.&#x20;
2. Click the **Add +** icon for an existing respective input or output processor.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1QoUDAA8rTFx7gVta6NMo_addprocessorinstancestable.png" size="80" width="1547" height="405" caption="Add processor icon" position="center" showCaption="true"}
3. From the add processor menu, select one of the following.&#x20;
   - **New processor**: Select **Events&#x20;**&#x6F;r **Values**, and then select the appropriate input or output processor. See [Input Processors](docId\:Dn4L8eXT2AetioGW06aUK) and [Output Processors](docId\:fhCwpw99glTs_ajdf7WXl) to learn more.&#x20;
     - Events (individual data source): The receiving processor reacts to each individual data value immediately.&#x20;
     - Values (combined data sources): The function processor waits for values from all of the combined data sources before reacting.&#x20;
   - **Existing processor in group**: Select an existing input or output processor and then select **Events&#x20;**&#x6F;r **Values**.&#x20;
     - Events (individual data source): The receiving processor reacts to each individual data value immediately.&#x20;
     - Values (combined data sources): The function processor waits for values from all of the combined data sources before reacting.&#x20;

After saving the update, the new processor is connected to the selected input or output processor.&#x20;

# Add a Function Processor from the Instances Table

You can connect multiple functions from existing input and output processors by navigating to **Analytics > Instances Table**.&#x20;

Connecting from an input processor in an analytics flow places the selected flow's function processor in the *Outputs&#x20;*&#x63;olumn of the selected flow. Connecting from an output processor in a flow places the selected flow's function processor in the *Inputs&#x20;*&#x63;olumn of the selected flow.

When you view the flows in the *Instances&#x20;*&#x70;ane, the two functions are connected.

**To connect a function processor to a flow:**

1. Navigate to **Analytics&#x20;***>&#x20;***Instances Table**.&#x20;
2. Click the **Add +** icon for an existing respective input or output processor.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PUmwy_NBxhCxKNY0zlbf8_addprocessorinstancestable.png" size="80" width="1547" height="405" caption="Add processor icon" position="center" showCaption="true"}
3. From the add processor menu, select one of the following.&#x20;
   - **New processor**: Select **Events&#x20;**&#x6F;r **Values**, and then select the appropriate function processor. See [Input Processors](docId\:Dn4L8eXT2AetioGW06aUK) and [Output Processors](docId\:fhCwpw99glTs_ajdf7WXl) to learn more.&#x20;
     - Events (individual data source): The receiving processor reacts to each individual data value immediately.&#x20;
     - Values (combined data sources): The function processor waits for values from all of the combined data sources before reacting.&#x20;
   - **Existing processor in group**: Select an existing function processor and then select **Events&#x20;**&#x6F;r **Values**.&#x20;
     - Events (individual data source): The receiving processor reacts to each individual data value immediately.&#x20;
     - Values (combined data sources): The function processor waits for values from all of the combined data sources before reacting.&#x20;

After saving the update, the function is added to either the inputs or outputs column to the flow.&#x20;

Refer to the following example where the function for the selected flow appears in the *Inputs&#xA0;*&#x63;olumn for the second function, and the second function appears in the *Outputs&#xA0;*&#x63;olumn for the selected flow.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GLhjsM27obIseuCGibYkw_image.png" size="80" width="1353" height="633" caption="Additional function is added to existing flow" position="center" showCaption="true"}

From the *Instances&#xA0;*&#x70;ane, the function output in the flow is connected to the input for the second function processor.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eQTx5OTPmVxismphRme-0_analytics-flow1.png" size="80" width="867" height="254" caption="Multiple function processors connected to flow" position="center" showCaption="true"}

Refer to the following example where the function for the selected flow appears in the *Outputs* column for the second function, and the second function appears in the *Inputs* column for the selected flow.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/khRfPMlPAye2A5WJwSnrp_analytics-instances-table2.png" size="80" width="1342" height="627" caption="Additional function is added to existing flow" position="center" showCaption="true"}

From the *Instances* pane, the function output in the flow is connected to the input for the second function node.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GNfzWylxCxztg9FlW7YN1_analytics-flow2.png" size="80" width="864" height="250" caption="Multiple function processors connected to flow" position="center" showCaption="true"}


[title] Siemens S7-200 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

Review the following information for setting up and configuring the Siemens S7-200 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                             |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                                                     |
| **Validated devices/series** | [S7-200](https://cache.industry.siemens.com/dl/files/582/1109582/att_22063/v1/s7200_system_manual_en-US.pdf) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure your device for Ethernet access.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Siemens                                  |
| **Driver**          | Siemens S7-200 Ethernet (Gen1)           |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 102                                      |
| **Slot**            | 512                                      |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

Refer to the appropriate register table depending on your version of Litmus Edge.&#x20;

### Register Table for Litmus Edge 3.11.0 and Later

| **Name** | **Value Type**                                   | **Address Format** | **Min Address** | **Max Address** |
| -------- | ------------------------------------------------ | ------------------ | --------------- | --------------- |
| I        | bit, byte, sint, word, int, dword, dint, real    | DDo                | 0               | 317             |
| Q        | bit, byte, sint, word, int, dword, dint, real    | DDo                | 0               | 317             |
| AI       | byte, sint, word, int, dword, dint, real         | DD                 | 0               | 31              |
| AQ       | byte, sint, word, int, dword, dint, real         | DD                 | 0               | 31              |
| M\_Bit   | bit                                              | DDo                | 0               | 317             |
| V\_Bit   | bit                                              | DDDDo              | 0               | 20477           |
| S\_Bit   | bit                                              | DDo                | 0               | 287             |
| SM\_Bit  | bit                                              | DDDo               | 0               | 5497            |
| T\_Bit   | bit                                              | DDD                | 0               | 255             |
| C\_Bit   | bit                                              | DDD                | 0               | 255             |
| M        | byte, sint, word, int, dword, dint, real         | DD                 | 0               | 31              |
| S        | byte, sint, word, int, dword, dint, real         | DD                 | 0               | 31              |
| SM       | byte, sint, word, int, dword, dint, real         | DDD                | 0               | 549             |
| T        | dword                                            | DDD                | 0               | 255             |
| C        | word                                             | DDD                | 0               | 255             |
| HC       | dword                                            | D                  | 0               | 5               |
| V        | byte, sint, word, int, dword, dint, real, string | DDDD               | 0               | 2047            |

### Register Table for Litmus Edge 3.5.6 and Earlier

| **Name** | **Value Type**                           | **Address Format** | **Min Address** | **Max Address** |
| -------- | ---------------------------------------- | ------------------ | --------------- | --------------- |
| I        | bit                                      | DDDDo              | 0               | 40957           |
| Q        | bit                                      | DDDDo              | 0               | 40957           |
| AI       | byte, sint, word, int, dword, dint, real | DD                 | 0               | 31              |
| AQ       | byte, sint, word, int, dword, dint, real | DD                 | 0               | 31              |
| M\_Bit   | bit                                      | DDDDo              | 0               | 40957           |
| V\_Bit   | bit                                      | DDDDDDDDo          | 0               | 100000007       |
| S\_Bit   | bit                                      | DDDDo              | 0               | 40957           |
| SM\_Bit  | bit                                      | DDDDo              | 0               | 40957           |
| T\_Bit   | bit                                      | DDDo               | 0               | 2557            |
| C\_Bit   | bit                                      | DDDo               | 0               | 2557            |
| M        | byte, sint, word, int, dword             | DDDDD              | 0               | 10239           |
| S        | byte, sint, word, int, dword             | DDDDD              | 0               | 10239           |
| SM       | byte, sint, word, int, dword             | DDDDD              | 0               | 10239           |
| T        | dword                                    | DDD                | 0               | 255             |
| C        | word                                     | DDD                | 0               | 255             |
| HC       | dword                                    | D                  | 0               | 5               |
| V        | byte, sint, word, int, dword             | DDDDDDDD           | 0               | 10000000        |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Siemens ISO-on-TCP
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 2 Drivers/

Review the following information for setting up and configuring the Siemens ISO-on-TCP driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                      |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                              |
| **Validated devices/series** | [S7-1200](https://www.siemens.com/global/en/products/automation/systems/industrial/plc/s7-1200.html)&#xA;[S7-1500](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-1500.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use TIA Portal V16 software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Siemens                                  |
| **Driver**          | Siemens ISO-on-TCP                       |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 102                                      |
| **Local TSAP**      | TCP-2                                    |
| **Remote TSAP**     | Keep this field empty                    |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types**   | **Address Format** | **Min Address** | **Max Address** | **Description**                |
| -------- | ----------------- | ------------------ | --------------- | --------------- | ------------------------------ |
| Basic    | byte, word, dword | DDDD               | 0               | 8191            | Raw Data, Address is an Offset |
| Buffer   | word              | D                  | 0               | 0               | Buffer                         |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] VIPA
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                                 | **Compatible Ethernet DeviceHub Drivers**                  |
| ------------------------------------------------------------------------------ | ---------------------------------------------------------- |
| [Vipa 300s PLC series](https://www.vipa.com/en/products/control-systems/300s/) | [VIPA 300s Ethernet (Gen1)](docId\:aN5wypeTiipiMCAiFWuLu)  |


[title] Function Nodes
[path] Product Features/Flows Manager/

Function nodes are powerful tools in flows.

Refer to the following sections for information on flow node capabilities:

- Contexts and Globals
- Reading JSON Objects
- Combining Inputs
- Binary Data
- Hex Values

# Contexts and Globals

Flow&#x73;**&#xA0;***Function&#xA0;*&#x6E;odes support different context levels for variables. The different contexts allow you to share data among unconnected nodes and among different flows entirely.

## The Three Levels

There are three levels for Function node variables that range from less visible to more visible. More visibility makes pieces of information available to more nodes and more flows.

### Level 1: Context

The context level makes a variable visible to different functions within a node. The example below shows what a context level variable can do that a regular variable cannot.

1\. Connect nodes together.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_AvYRaOUYvVtvTIy_3s4D_image.png" size="80" width="580" height="88" caption="Flows Manager : Level 1 Context Node Arrangement" position="center" showCaption="true"}

2\. Double-click th&#x65;**&#xA0;Inject** node and change the payload to **string**. Enter **The payload** as your string.

3\. Double-click the **Function&#xA0;**&#x6E;ode and enter the following lines:

```javascript
function f1 () { // Declares a function with name, f1.
context.set("cv", " and the context variable.");
 // Sets our context variable, named cv, to a string message.
}

function f2 (msg) { // Declares a function named f2 
                    // that takes msg as a parameter.
msg.payload = msg.payload + context.get("cv");
 // Adds the message in our context variable to the msg payload.
return msg;
}

f1(); // Calls f1 to set the context variable.
return f2(msg); // Returns the result of calling f2.               
```

4\. Clic&#x6B;**&#xA0;Done**. Click **Deploy**, and then click the button on left side of the Inject node.

5\. See the output below in the **debug** tab:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-mCvp2WmWDNfSo1yigCt5_image.png" size="80" width="327" height="156" caption="Flow Manager view debug message" position="center" showCaption="true"}

Meanwhile, if you try to do the same thing with a regular variable:

```javascript
function f1 () {
var contextVariable =  " and the context variable.";
}

function f2 (msg) {
msg.payload = msg.payload + contextVariable;
return msg;
}

f1();

return f2(msg);
```

You can see the below output in the debug window:

::Image[Level 1: Context]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BcdulqpEvMrjq_wmZg8cw_image.png" size="80" width="372" height="154" caption="Flow Manager view debug message" position="center" showCaption="true"}

### Level 2: Flow

The Flows level makes a variable visible to all nodes in the flow. The example below shows how to use this context level:

1\. Connect nodes together like the picture below:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sK1OYdbIndGF4WSyh5GJb_image.png" size="80" width="595" height="150" caption="Flows Manager : Level 2 Flow Node Arrangement" position="center" showCaption="true"}

2, Double-click the **Inject** node and change the payload to **string**. Enter **The payload** as your string.

3\. Double-click the upper Function node and enter the following lines:

```javascript
flow.set("fv", " here is our flow context variable.");
 // Set a flow context variable, named fv, to be a string message.

msg.payload = "A variable for this whole flow: ";
 // Sets the msg payload to be a short string message.

return msg;
```

4\. Click **Done**. Double-click the lower Function node and enter the following lines:

```javascript
msg.payload = flow.get("fv");
 // Sets our message to the string stored in fv.

return msg;
```

5\. Click **Done**, and then click **Deploy**.

6\. Click the button on left side of the upper Inject node, then click the lower Inject node button.
You can see the output below in the debug tab:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SSM_ECsqtidnF9RePQHpS_image.png" size="80" width="293" height="225" caption="Flow Manager view debug message" position="center" showCaption="true"}

:::hint{type="success"}
**Tip**: You can use the flow context variable in any node in the Flow, even if nodes are unconnected.
:::

### Level 3: Global

This global level example below makes a variable visible to all nodes in every flow that you create.

1\. Connect nodes together like the picture below:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RgUN6FDBfUEbk9CjEyW2p_image.png" size="80" width="649" height="72" caption="Flows Manager : Level 3 Global Node Arrangement" position="center" showCaption="true"}

2\. Double-click the **Inject** node and change the payload to **string**. Enter **A global message!** as your string.

3\. Double-click the **Function** node and enter the following lines:

```javascript
global.set("global_var", msg.payload);
 // Stores the message payload from the Inject node in a 
global variable named global_var.

return msg;
```

4\. Click **Done**. In a new flow, connect nodes together like in step 1.

5\. Double-click the **Function** node and enter the following lines:

```javascript
global.set("global_var", msg.payload);

return msg;
```

6\. Click **Done**, and then click **Deploy**.

7\. Return to the first flow that you made and click the **Inject** node button.

8\. On the second flow, click the **Inject** node button.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Y7kuSMyinMmNaAWA-oO7k_image.png" size="80" width="254" height="233" caption="Flow Manager view debug message" position="center" showCaption="true"}

:::hint{type="success"}
**Tip**: You can use the flow context variable in any node in the Flow, even if nodes are unconnected.
:::

You can also access global context variables throug&#x68;**&#x20;Inject** nodes by selecting **global** from the dropdown menu.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zlPmDBaFfLFr9sQNhqtKN_image.png" size="80" width="556" height="360" caption="Editing Inject node's msg.payload into global. " position="center" showCaption="true"}

# Reading JSON Objects

1\. From the Flow Definition view, connect a **DataHub Subscribe** node, a **Function** node, and a **Debug** node.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nJV3hQuEGerf58oKP-o9s_image.png" size="80" width="830" height="121" caption="DataHub Subscribe with a raw topic connected to a Function node. The Function node connects to a Debug node" position="center" showCaption="true"}

2\. Navigate to **DeviceHub** > **Tags**.

3\. Click th&#x65;**&#xA0;Copy** icon next to an existing tag to copy a **Raw Topic**. Add a tag if there are none.

4\. Double-click th&#x65;**&#xA0;DataHub Subscribe node** and paste the copied topic.

5\. Double-click the **Function&#xA0;**&#x6E;ode. Enter the following lines of code:

```javascript
var obj = JSON.parse(msg.payload);
 // Stores JSON text as an object.
var temp = JSON.stringify(obj.registerId);
 // Gets the registerId from our object and makes it a string.
msg.payload = temp; // Assigns the registerId string to our output message payload string.
return msg;
```

6\. Click **Done**.

7\. Click **Deploy**.

8\. Expand the message window beneath the flow and click the **Debug** icon.
A message appears in the *Messages&#x20;*&#x70;ane.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/W1eM_qbUG5CCKIHJ1i6iI_image.png" size="76" width="327" height="156" caption="Flow Manager view debug message" position="center" showCaption="true"}

# Combining Inputs

Th&#x65;**&#xA0;join** function node combines two different inputs into a single output. This node combines outputs from multiple flows into a single message.

**To make a flow that combines two different inputs**:

1\. From the Flow Definition view, connect two input sources, such as **Inject** nodes, to a **Join** node and a **Debug** node.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/f65B4X52bmJXVxjYASDEZ_image.png" size="80" width="568" height="139" caption="Two inject nodes connected to Join nodes. The Join node connects to Debug node." position="center" showCaption="true"}

2\. Double-click each **Inject** node and select **string** from the drop-down menu adjacent to `msg.payload`. For each node, enter any message (**Litmus** and **Automation** in this example) that you want to combine with the other. Click **Done**.

3\. Double-click the **Join** node and select **manual** mode from the drop-down menu.
**Field information**:

- **Mode:** 
  - **automatic&#xA0;**&#x6D;ode makes assumptions about your flow.
  - **manual&#xA0;**&#x6D;ode lets you configure settings specific to your flow.
- **Combine each** - Sets the msg property to combine. It is typically `msg.payload`.
- **to create** - Sets the data type for the output: a String, an Array, a key/value Object, or a merged Object.
  - **joined using** - Specific to String outputs. Sets the character to join the strings on. \n is a newline character that appears at the end of messages, this is ideal for most cases.
  - **using** - Specific to key/value Objects. Sets the part of the msg object to serve as the property key for the output object.
- **After a number of message parts** - Sets the amount of messages for the join node to receive before sending the combined output.
- **After a timeout following the first message** - Sets the amount of time (in seconds) to wait for messages after receiving the first one before sending the combined output.

:::hint{type="info"}
**Note**: Join nodes do not send a message unless the **msg.complete** property is set. If needed, you can always set this property to *true* with a **Function** node.
:::

4\. For this example, enter 2 for the **After a number of message parts** field. Click **Done**.

5\. Click **Deploy**.

6\. Expand the message window beneath the flow and click the **Debug&#x20;**&#x69;con.

7\. Click both buttons to the left of the **Inject** nodes to view the output in the **debug** tab at the bottom of the flow screen.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZWziH4bKpgb9s_d1TORYX_image.png" size="80" width="255" height="150" caption="Flow Manager view debug message" position="center" showCaption="true"}

# Binary Data

**Function** Nodes can convert data into binary for viewing and performing operations on individual bits of data.

**To create a flow that converts data into binary and can show individual bits of data:**

1\. From the Flow Definition view, connect an **Inject** node, &#x61;**&#xA0;Function&#xA0;**&#x6E;ode, and a **Debug** node.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tFu8mSycBnBeNGUhqiPXE_image.png" size="80" width="529" height="83" caption="Inject node connect to a Function node that connects to a Debug node" position="center" showCaption="true"}

2\. Double-click the **Function** node and enter the following lines of code:


```javascript
function decimalToBinary (decimal) { 
// Declares a function, named decimalToBinary, that converts decimal to binary.
return decimal.toString(2); 
// Converts decimal into binary by passing in 2 (for base 2) into toString.
}
 
function getBit (number, bit) { 
// Declares a function to get a single bit from a number.
/*  ANDs the number with 00000001 shifted by the bit you want to 
get. In this example,
*  we get the second bit from 3 (0000011 in binary), by ANDing 
with 00000010 to get the 2nd bit. */
var bit = number & (1 << bit);
 
/* If we output bit as is, it shows up as "10". The following 
if statement
* ensures that our output is "1" or "0". */
if (bit == 0) {
return 0;
}
return 1;
}
 
var decimal = msg.payload; 
// Assigns the number from the msg payload to a variable, called decimal.
var binary = decimalToBinary(decimal); 
// Stores the result from the decimalToBinary function in a 
variable, called binary.
var secondBit = getBit(binary, 1); 
// Gets the bit in the 1 position (the 2nd bit). The rightmost bit is the 0 position.
 
/* Construct a string message with our results and output the 
message. */
msg.payload = "decimal: " + decimal + ", binary: " +
binary + ", secondBit: " + secondBit;
 
return msg;
```

3\. Click **Done**.

4\. Double-click the **Inject** node and select **number** from the drop-down menu adjacent to `msg.payload`. This example uses **3**, but you can enter any number that you wish.

5\. Click **Done**.

6\. Click **Deploy**.

7\. Expand the message window beneath the flow and click the **Debug&#x20;**&#x69;con.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4-uMofYANI5sEiUwzqq-O_image.png" size="80" width="334" height="170" caption="Flow Manager view debug message" position="center" showCaption="true"}

# Hex Values

**Function** nodes can convert hexadecimal (hex) values into normal decimal integers. This is useful when performing operations on hex values.

**To create a flow to convert hex values to integers:**

1\. From the Flow Definition view, connect an **Inject** node, a **Function** node, and a **Debug** node.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9RYqTA8GWLvssGn3q7BGw_image.png" size="80" width="680" height="89" caption="Inject node connect to a Function node that connects to a Debug node" position="center" showCaption="true"}

2\. Double-click the **Function** node and enter the following lines of code:

```javascript
function hexToInt(hex) { // Declares a function, named hexToInt, for converting hex to integers.
return parseInt(hex, 16); 
// Converts the hex into an integer by passing in 16 (for base 16) to parseInt.
}
 
var hex = msg.payload; // Saves the msg payload to pass into our function.
var decimal = hexToInt(hex); // Calls the function to convert the hex into a decimal integer.
 
msg.payload = "Hex: " + hex + ", Decimal: " + decimal; 
// Formats the text for output.
 
return msg;
```

3\. Click **Done**.

4\. Double-click the **inject** node and select **string** from the drop-down menu adjacent to `msg.payload`. Enter in any hex value to convert to an integer. This example uses **0x00A8**, which is 168 as a decimal integer.

5\. Click **Done**.

6\. Click **Deploy**.

7\. Expand the message window beneath the flow and click the **Debug&#x20;**&#x69;con.

8\. Click the button to the left of the **inject** node.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2K0gVs62LE_rt5pBb3XWm_image.png" size="60" width="276" height="147" caption="Flow Manager view debug message" position="center" showCaption="true"}


[title] Untitled
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/


[title] Profinet Acyclic (Turck)
[path] QuickStart Guide/Industrial Systems Connection Guide/Profinet/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

Review the following information for setting up and configuring the Profinet Acyclic (Turck) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                               |
| ---------------------------- | ------------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                       |
| **Validated devices/series** | [Turck TBEN-L5-8IOL](https://www.turck.us/en/product/0000001600019e750008003a) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                                    |
| ---------------------- | ---------------------------------------- |
| **Type**               | Profinet                                 |
| **Driver**             | Profinet Acyclic (Turck)                 |
| **Network Address**    | The device address you defined in Step 1 |
| **Network Port&#x20;** | 34964                                    |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**    | **Value Types**                                                                                                                                   | **Address Format** | **Min Address** | **Max Address** | **Description**                         |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | --------------- | --------------- | --------------------------------------- |
| Record      | auto, json, hex, int8, int16, int32, uint8, uint16, uint32, float32, string                                                                       | DDDD               | 0               | 65535           | Data Records                            |
| I\&M        | auto, json, hex                                                                                                                                   | DDDD               | 0               | 65535           | Identification & Maintenance<br />&#xA; |
| PROFIdrive  | auto, hex, bool, int8, int16, int32, int64, uint8, uint16, uint32, float32, string, bool\[], int16\[], int32\[], uint16\[], uint32\[], float32\[] | DDDD               | 0               | 65535           | Acyclic access to parameters (PNU)      |
| PROFIenergy | auto, float32                                                                                                                                     | DDDD               | 0               | 65535           | PROFIenergy                             |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values.&#x20;
- **Slot**: Enter the slot number (0-32767).&#x20;
- **Subslot**: Enter the subslot number (0-41215).&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Test a Port
[path] Product Features/DeviceHub/Utilities/

You can test TCP and UDP accessibility of a port that belongs to the network where your edge device resides by navigating t&#x6F;**&#x20;DeviceHub&#x20;**>**&#x20;Utilities** and referring to the *Test Port* section.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tbxzGwgg7Mr-dMklXKIgB_image.png "Test Port section")

**To test a port's accessibility**:

1. Navigate to **DeviceHub&#x20;**> **Utilities**.&#x20;
2. *Test Port* section of the *Utilities&#x20;*&#x70;ane, enter a host name or an IP address to test in the **Hostname or IP** field.
3. **Port** field.
4. **Timeout&#x20;**&#x66;ield, enter the response timeout in seconds (the default is 60).
5. **UDP** check box. If you leave this check box clear, only TCP accessibility is tested.
6. **Test Port**.

The testing result shows at the bottom of the *Test Port* section. It can be positive:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mwbldwf0iXaxHQN15skCh_utility-port-success.png" size="80" width="651" height="204" caption="Test Port interface" position="center" showCaption="true"}

The result can also be negative:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8MYIPQJJVDtQPBnRNYCyq_utility-port-failure.png" size="80" width="650" height="202" caption="Test Port interface : results" position="center" showCaption="true"}

To stop the process before all of the transmitted packets are either received or timed out, clic&#x6B;**&#x20;Cancel**.


[title] Siemens S7CommPlus
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 2 Drivers/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

Review the following information for setting up and configuring the Siemens S7CommPlus driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Validated devices/series** | [S7-1200 v2.2](https://support.industry.siemens.com/cs/document/57027057/delivery-release-simatic-s7-1200-firmware-version-2-2)[&#xA;&#xA;](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-1500.html)When configuring tags for this driver, you must enter the case-sensitive register name exactly as it is defined in the PLC. See the *Free Tags* section below to learn more.  |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure your device for Ethernet access.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

:::hint{type="warning"}
**Important**: The following settings are currently supported.

- **PLC Type***:* Only **S7-1200** is currently supported.&#x20;
- **Firmware Version**: **v2.x** and **v3.x** are currently supported.&#x20;
:::

| Parameter                             | Value                                        |
| ------------------------------------- | -------------------------------------------- |
| **Type**                              | Siemens                                      |
| **Driver**                            | Siemens S7CommPlus                           |
| **Network Address**                   | The device address you defined during Step 1 |
| **Network Port**                      | 102                                          |
| **PLC Type**                          | Select **S7-1200**                           |
| **Firmware Version**                  | Select **v2.x** or **v3.x**                  |
| **Read Timeout (ms)**                 | 1000                                         |
| **Retry Count**&#xA;**Read Retries**  | 0                                            |
| **Keep Alive**&#xA;**TCP Keep-Alive** | 60                                           |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following tag parameters and available value types.

You can also [Search for Pre-defined Device Tags](docId\:W1Est_A3MIDOUIZrkSgvi) for this device.&#x20;

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Free Tags

This driver doesn't have a list of available register names in the DeviceHub *Add Tag* form.

To add tags, you must enter the register name exactly as it is defined in the PLC.



## Available Value Types

:::hint{type="info"}
**Note**: The following data types are available for Litmus Edge version 3.11.4 and later.&#x20;

- dt
- dtl
- wchar
:::

- `bool`&#x20;
- `byte`&#x20;
- `word`&#x20;
- `dword`&#x20;
- `lword`&#x20;
- `usint`&#x20;
- `uint`&#x20;
- `udint`&#x20;
- `ulint`&#x20;
- `sint`&#x20;
- `int`&#x20;
- `dint`
- `lint`
- `real`
- `lreal`
- `s5time`
- `dt`
- `dtl`
- `time`
- &#x20;`ltime`
- `tod`
- `ltod`
- `ldt`
- `date`
- `char`
- `wchar`
- `string`
- `wstring`
- `bool[]`
- `byte[]`
- `word[]`
- `dword[]`
- `lword[]`
- `usint[]`
- `uint[]`
- `udint[]`
- `ulint[]`
- `sint[]`
- `int[]`
- `dint[]`
- `lint[]`
- `real[]`
- `lreal[]`
- `s5time[]`
- `time[]`
- `ltime[]`
- `tod[]`
- `ltod[]`
- `ldt[]`
- `date[]`

## Tag Parameters

- **Name**: Enter the case-sensitive register name exactly as it is defined in the PLC.&#x20;
- **Value Type**: Select a data type from the drop-down list.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Search for Pre-defined Device Tags
[path] Product Features/DeviceHub/Tags/

:::hint{type="info"}
**Note**: The Server Search option is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Some DeviceHub devices give you the option of searching, selecting, and downloading pre-defined device tags.&#x20;

Devices that support searching for device tags display a tag icon in the top-right corner of the device card.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/R1a_I7-JJ7u8wECqagmeS_image.png" size="60" width="419" height="343" position="center" caption="Browse tag option shown for a device " showCaption="true"}

There are two ways to search for pre-defined device tags:

- Use [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd) to view all available tags for a device. You can then search, select, and download tags applicable for your DeviceHub device.&#x20;
- Use [Server Search](docId\:Ir3ohfMtBV2zMFK7jyCAk) to search for pre-defined device tags. You will need to know the name of the tags you want to search for and add to your DeviceHub device.&#x20;


[title] Manage Processors and Analytics Flows
[path] Product Features/Analytics/Analytics Flows and Processors/

You can manage Analytics processors and flows on the Analytics canvas by navigating to **Analytics&#x20;**>**&#x20;Instances**.&#x20;

# Analytics Canvas Management Options

Refer to the management options below on the Analytics canvas.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9OCwnYcPCgLWTraPabAji_image.png" size="80" width="1245" height="467" caption="Analytics canvas management options" position="center" showCaption="true"}

\[1] **Search for processor instance**: Use the drop-down list to highlight selected processors on the canvas. Click **X&#x20;**&#x69;n the *Search for processor instance* field to clear the search.&#x20;

\[2] **Canvas menu**: Opens canvas menu options.&#x20;

- [Add Processors and Processor Connections](docId\:s6dMQkyHmZvJF7sj8-UYw)&#x20;
- **Add flow**: See [Create Flow Groups](docId:8FKqmA49TwWoMRvEit1Yh).&#x20;
- **Paste flow**: After you copy a flow, this option becomes available.&#x20;
- **Clear group**: Deletes all flows, processors, and the flow group.&#x20;
- **Remove all processors**: Deletes all flows and processors in the flow group.&#x20;

\[3] **Show debug window**: Displays the debug panel. Click the **View processor output** icon for an input or function processor to view its output. The debug panel cannot display output from output processors. These processors are used to publish data to a tag, database, or StdOut immediately upon receipt. Once published, the data is no longer available for display in the UI.

\[4] **Import/Export menu**: You can import analytics flows as JSON files and export flows. When exporting flows, you have the option of selecting individual flow groups or all groups.&#x20;

\[5] **Save**: Saves the flow group.&#x20;

\[6] **Refresh**: Refreshes all analytics flows in the selected group. It provides a quicker version of your browser refresh function.&#x20;

\[7] **Re-arrange processors**

\[8] **Canvas zoom in and out**

\[9] **Canvas view**: You have two canvas view options.&#x20;

- **Standard**: Allows you to view each processor in the flow at full size.
- **Compact**: Collapses the processors in the view. Icons for each processor appear in green, yellow, or red to indicate the status. You can hover over processor to access functionality.

# Processor and Flow Management Options

Refer to the management options below for processors and flows.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CCF5_hy5h1Fg4aMXJ7Vbg_image.png" size="80" width="1040" height="217" caption="Management options for processors and flows" position="center" showCaption="true"}

\[1] Hover over to view status and ID of processor.&#x20;

\[2] **Enable/disable processor**

\[3] **View processor output**: To view output, you must first display the debug window. The debug panel cannot display output from output processors. These processors are used to publish data to a tag, database, or StdOut immediately upon receipt. Once published, the data is no longer available for display in the UI.

\[4] **Processor menu**: The options available depend on the specific processor.&#x20;

- **Toggle passthrough**: Normally, a function processor passes to the output processor only the result of the function while dropping the data it had received from the input processor (such as Device ID and Timestamp). When you enable *Toggle passthrough*, this passes through the input data, along with the function result.&#x20;
- **Copy topic**: You can copy the output topic from an output processor. Use the copied topic to view messages in the Flows Manager module by adding it to the DataHub Subscribe or Access Subscribe node.
- **Edit**: Update the details for the processor.&#x20;
- **Copy Flow**: After you copy a flow, you can paste it from the canvas menu.&#x20;
- **Remove processor**
- **Remove flow**
- **Invoke processor**: Allows you to schedule a Database Batch processor to start and stop providing input at a specified date and time.&#x20;
- **Reset processor**
- **Instance Identifier**: Allows you to copy the *Instance ID* and *Flow IDs*.&#x20;

\[5] Click a connection between two processers to edit the connection name or click **Break Link** to remove the linkage.&#x20;

# View the Canvas Legend&#x20;

You can open the canvas legend to display color-coded information about processor and connection types that can be included in an analytics flow. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/A2ajakTOKUbCnFFpQuh7u_image.png" size="80" width="1932" height="876" caption="Open canvas legend drawer" position="center" showCaption="true"}


[title] Manage Devices
[path] Product Features/DeviceHub/Devices/

After you connect devices to Litmus Edge, you can navigate to **DeviceHub&#x20;**> **Devices&#x20;**&#x74;o manage them.&#x20;

# Change Device View

Click the icons for **Show devices grid** or **Show devices table** to change how you view your devices.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pXTKUqMQVtzg_hXC3hkAt_image.png "The icons that change the device view")

# Filter and Search Devices

Click the **Toggle Device Filter** icon to search by device name.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5vX-V3m8c253Mg578UapU_image.png "DeviceHub > Toggle Device Filter Icon")

# Manage Individual Devices

From the *Show devices grid* view, you can use device tiles to access management options. Refer to the image and callouts below.

:::hint{type="info"}
**Notes**:&#x20;

- The refresh icon is not available for Litmus Edge version 3.5.2 and later.&#x20;
- As of Litmus Edge version 3.11.0, if Litmus Edge is rebooted, the status of devices is maintained. For example, if a device is stopped and Litmus Edge reboots, when Litmus Edge restarts the device will remain in a stopped state. For earlier versions, stopped devices will automatically try to re-connect when Litmus Edge restarts.&#x20;
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IWz6gV0crVrH26VSUt3gr_image.png" size="70" width="426" height="341" caption="Device Tile icons" position="center" showCaption="true"}

\[1] **Copy Driver Name**

\[2] **Copy Device ID**

\[3] **Copy Default Topics:** Copy one of the following default topics.&#x20;

- `devicehub.plcstatus.<topicID>`
- `devicehub.manage.<topicID>`
  - See [Use the Manage Topic to Stop a Device](docId\:LL1X_AvCrXSRF8DUgVJWU) to learn more.&#x20;
- `devicehub.raw.<topicID>`

\[4] **Edit Device:&#x20;**&#x55;pdate the device configuration.

You can also edit the device by clicking the tile and making changes from the *Configuration&#x20;*&#x74;ab.&#x20;

\[5] **Stop/Start Device**

\[6] **Remove Device**

# Access Device Information

You can access device information and edit options by doing one of the following:

- In the *Show devices grid* view, click the device tile.&#x20;
- In the *Show device table* view, click the device name.&#x20;

## View Device Data

Click the **Data&#x20;**&#x74;ab to view dynamic information (data for the device).&#x20;

:::hint{type="info"}
**Note:** To access the *Data&#x20;*&#x74;ab, you must select the *Enable Data Store* option for the device.&#x20;
:::

The *Data&#x20;*&#x74;ab displays the following values:

- Last value
- Last Updated time of the tag

You can also download a CSV file with tag data for the last 24 hours.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dYNbtIv8BnJBBZk-1IC_l_image.png" size="80" width="1911" height="351" caption="Data tab on DeviceHub device" position="center" showCaption="true"}

## View Device Configuration

Click the **Configuration&#x20;**&#x74;ab to view and edit parameters for the device.&#x20;

## View Device Tags

Click the **Tags&#x20;**&#x74;ab to view tag information and manage tags.&#x20;

For each tag, you can click the **Action menu** icon and do the following:

- Edit the tag
- View and copy a Write Topic
- View and copy a Poll Topic
- Remove the tag
- Clone & Edit the tag

You can also click the **Copy&#x20;**&#x69;con to copy the raw topic.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/L03LIerBUASZ-Y2cZ0ZaP_image.png" size="80" width="1908" height="457" caption="The Action menu for Device tags" position="center" showCaption="true"}

## View and Download Logs

:::hint{type="info"}
**Notes**:&#x20;

- The Logs feature is available for Litmus Edge version 3.5.2 and later.&#x20;
- If you view or download a log file, it will only display a maximum of the 50 most recent log entries.&#x20;
:::

Click the Logs tab (only available for Gen 2 drivers) to view log information for the device. You can also download a file of logs. You need to select the **Enable Logging** check box in the device configuration to view this tab.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_PdqbRjEkBuWbm9-ZjIgF_image.png "The Logs tab")


[title] Toshiba
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                                               | **Compatible Ethernet DeviceHub Drivers**                             |
| -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| Any of the following Toshiba series models with an Ethernet module:<br />* S2
* S3
* T2
* T3 | [Toshiba Computer Link Ethernet (Gen1)](docId:8o7IgSgsSmAsVVD9Mf0VY)  |


[title] Dashboard
[path] Product Features/

The dashboard contains statistics about the whole system. This information is on the operational network and is completely offline.

# Dashboard Data

Once you connect devices to Litmus Edge, you can use the dashboard for monitoring. Refer to the sections below.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ve7Y2RP2Ri8NyeuALaVJY_image.png" size="80" width="1908" height="848" position="center" caption="The Litmus Edge dashboard" darkWidth="1908" darkHeight="848" showCaption="true"}

\[1] **Device Time** and **Up Time**: *Device Time* displays the time zone configured for the Litmus Edge instance. See [Set Timezone](docId\:R1Lz44wFFv3H9Jg33NWlP). *Up Time* displays how long the instance has been running without a disconnection.&#x20;

\[2] **Devices & Tags**: The number of connected devices and tags on your system.&#x20;

\[3] **Message Broker & Routing**: Collected data is normalized or standardized and then published to the local message broker. This section displays the message rate of this process.

\[4] **Data Processing & Analytics**: The number of flows, analytics flows, and groups that are running.

\[5] **Edge Applications**: The number of installed applications. These applications are localized applications and containers.

\[6] **Integrations**: The total number of integrations and remotely connected networks.&#x20;

# Dashboard Charts

You can view preset charts that contain data about your system:

## CPU Utilization

Displays the usage of processing resources over time for the IUD Gateway, industrial PCs, all virtual machines, and the user.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FOVSTWAfQlgxjOgZSSqKu_image.png" size="80" width="796" height="482" caption="CPU Utilization over last 5 minutes" position="center" showCaption="true"}

## Memory Load

Displays the memory usage for the system over time&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5QqGATtMHdhMUP9W7AcCf_image.png" size="80" width="773" height="475" caption="Memory Load over last 5 minutes" position="center" showCaption="true"}

## Network Utilization

Displays the received and transmitted network speed in Mbps (megabits per second) over time.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gapI9EwdKCVI5Z4sRmViV_image.png" size="80" width="775" height="469" caption="Network Utilization over last 5 minutes" position="center" showCaption="true"}

At the bottom of the Dashboard, you can find status indicators for the modules included in your plan. When you hover over each status indicator, the version of the selected module appears. Each indicator displays a colored circle reflecting the online status of the selected module:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3UI0IV9u42L7ERFWoN-pL_image.png" size="80" width="1747" height="218" caption="Hovering Flows Manager displays Version : 1.5.1" position="center" showCaption="true"}

| **Color** | **Health**        |
| --------- | ----------------- |
| Green     | Services are up   |
| Red       | Services are down |

Next to the indicators you can view your Storage utilization.

:::hint{type="success"}
**Tip:** You can move you cursor horizontally over the charts to view data for additional dates.
:::


[title] SAIA Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/SAIA/

Review the following information for setting up and configuring the SAIA Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                            |
| ---------------------------- | ----------------------------------------------------------- |
| **Driver type**              | Ethernet                                                    |
| **Validated devices/series** | [SAIA PLC series](https://www.saia-pcd.com/en-gb/products/) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PG5 v2.3.165 software on your computer to configure your device for Ethernet access.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                        |
| ------------------- | -------------------------------------------- |
| **Type**            | SAIA                                         |
| **Driver**          | SAIA Ethernet (Gen1)                         |
| **Network Address** | The device address you defined during Step 1 |
| **Station ID**      | 0                                            |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**   | **Value Types** | **Address Format** | **Min Address** | **Max Address** |
| ---------- | --------------- | ------------------ | --------------- | --------------- |
| Register   | word            | DDDDD              | 0               | 16383           |
| Counter    | word            | DDDD               | 0               | 1599            |
| Timer      | word            | DDDD               | 0               | 1599            |
| Reg\_Float | float           | DDDDD              | 0               | 16383           |
| DB         | word            | DDDDDDDD           | 0               | 536016383       |
| DB\_String | string          | DDDDDDDD           | 0               | 536016383       |
| R\_String  | word            | DDDDD              | 0               | 16383           |
| DB\_Float  | float           | DDDDDDDD           | 0               | 536016383       |
| Flag       | bit             | DDDD               | 0               | 8191            |
| Output     | bit             | DDDD               | 0               | 1023            |
| Input      | bit             | DDDD               | 0               | 1023            |
| Reg\_Bit   | bit             | DDDDDdd            | 0               | 1638331         |
| DB\_Bit    | bit             | DDDDDDDDdd         | 0               | 53601638331     |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Ping (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Ping/

Review the following information for setting up and configuring the Ping (Gen1)&#x20;driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter | Compatible items           |
| ----------------------- | -------------------------- |
| **Driver type**         | Used to ping an IP address |

# Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following register table and tag parameters.&#x20;

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | -------------- | ------------------ | --------------- | --------------- | --------------- |
| Ping     | ping           | DDD                | 0               | 255             | boolean         |
| Port     | port           | DDD                | 0               | 255             | Integer         |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **IP Address**: Enter the IP address for the tag.&#x20;
- **Port**: Enter the port number for the tag.&#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Oemax Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/RS Automation/

Review the following information for setting up and configuring the Oemax Serial (Gen1)&#x20;driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items           |
| ---------------------------- | -------------------------- |
| **Driver type**              | Serial                     |
| **Validated devices/series** | RS Automation Oemax Series |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: RS Automation Oemax NX7
   **Communication I/F**: RS232. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wl44wc2ZUPzMeW0v_pLBZ_rs-automation-device.png" size="80" width="383" height="867" caption="Reference image of device" position="center" showCaption="true"}
2. Launch the WinGPC software and find the network parameters. If needed, refer to the following wiring and switch settings.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eHH9nKWNNYxCMSazufbYQ_rs-automation-oemax-serial-pinout.png" size="80" width="676" height="312" caption="Wiring and Switch Settings" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | RS Automation                     |
| **Driver**             | Oemax Serial (Gen1)               |
| **Communication Port** | Local Serial connection file path |
| **Baud Rate**          | 9600                              |
| **Data Bits**          | 8                                 |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station ID**         | 255                               |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types** | **Address Format** | **Min Address** | **Max Address** | **Description**            |
| -------- | --------------- | ------------------ | --------------- | --------------- | -------------------------- |
| R        | bit             | DDDdd              | 0               | 25515           |                            |
| L        | bit             | DDDdd              | 0               | 2047            |                            |
| M        | bit             | DDDDdd             | 0               | 199915          |                            |
| K        | bit             | DDDdd              | 0               | 25515           | Keep Contact               |
| F        | bit             | DDDdd              | 0               | 99115           | Special Contact            |
| TC       | bit             | DDD                | 0               | 255             | Timer/Counter              |
| W        | word            | DDDD               | 0               | 7999            | Special Auxiliary Relay    |
| SV       | word            | DDD                | 0               | 255             | Timer/Counter Set Value    |
| PV       | word            | DDD                | 0               | 255             | Timer/Counter Preset Value |
| SR       | word            | DDD                | 0               | 255             | Special Register           |
| WR       | word            | DDD                | 0               | 255             |                            |
| WL       | word            | DDD                | 0               | 255             |                            |
| WM       | word            | DDDD               | 0               | 1999            |                            |
| WK       | word            | DDD                | 0               | 255             |                            |
| WF       | word            | DDD                | 0               | 991             | Timer Memory               |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Tags
[path] Product Features/DeviceHub/

Tags are the single units of data collection from a device. Once you connect a device to Litmus Edge, you add tags to that device. Tags map to the device's registers from which you want DeviceHub to collect data. Every device has memory registers that store sensor and system values. These registers can be analog and digital, input and output. Register information is accessed as tags and these tags are published as *Topics&#x20;*&#x74;o the internal *Message Broker*.&#x20;

# Raw Topics and Alias Topics

When you [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq), you have the option of generating raw topics or alias topics. For Litmus Edge version 3.5.2 and later, the **Enable alias topics** check box is selected by default. Alias topics consist of *devicename* and *tagname&#x20;*&#x69;nstead of DeviceID and TagID. Topics can be used for publishing and subscribing with an internal message broker. Raw or processed data can be analyzed at the edge using [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5) or flows in [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89). You can publish data to Litmus Edge Manager through raw topics.

You can add tags as follows:

- **Add a tag**: Adds a single tag for the selected device.
- **Upload CSV**: Uploads a list of tags from a CSV file.
- **Browse Tags**: Search for pre-defined device tags and select the ones to add. See [Search for Pre-defined Device Tags](docId\:W1Est_A3MIDOUIZrkSgvi) to learn more.&#x20;

See [Default Topics and Descriptions](docId:8U4c20-xGyzkJRP24GEvM) for information about topic formats.

# Important

If you select *Enable alias topics* while adding or modifying a device:

- The Topic ID is replaced with a name (for example, `devicehub.alias.PLC1.floatTag`)
- DeviceHub stops publishing to raw topics and publishes only to alias topics.&#x20;
- Litmus Edge substitutes all special characters in aliases with "\_" (underscore).&#x20;
- Message broker allows subscribe and publish of Raw/Alias topics.&#x20;
- When alias topics are enabled for a device, you can't use batch write topics. To use batch write topics, you must not select the **Enable alias topics** check box in the device configuration. See [Default Topics and Descriptions](docId:8U4c20-xGyzkJRP24GEvM) for more information.&#x20;

# Access Tags UI

You can access *Tags&#x20;*&#x66;rom the *DeviceHub*.&#x20;

**To access Tags:**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **DeviceHub&#x20;**> **Tags**.
   Th&#x65;*&#x20;Tags* pane appears.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/htqQgap31uA7ewHiATsml_image.png)

# Next Steps

- [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX)&#x20;
- [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd)&#x20;
- [Manage Tags](docId\:G9ROOmPC3XZ4Zq6CbNONc)&#x20;
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)
- [Default Topics and Descriptions](docId:8U4c20-xGyzkJRP24GEvM)&#x20;
- [DeviceHub Guides](docId\:n1PHFmqvS8LL8DAngvS3W)
- [DeviceHub Troubleshooting](docId\:M8jYFRaXMkKTiJXpc8OTK)


[title] Dashboard Nodes
[path] Product Features/Flows Manager/Flow Canvas Dashboard/

The Flows dashboard palette includes nodes, which when dragged onto a canvas, become widgets in a dashboard. These nodes enable you to build a dashboard with common elements, such as buttons, drop-down lists, and charts. When you combine these nodes with data collection flows, you can monitor sensor data in a single view.

# Add Dashboard Nodes to the Canvas

You can add dashboard nodes to the canvas in an existing Flow. The process of adding dashboard nodes will be demonstrated by way of an example.

## Example: Add Dashboard Nodes to the Canvas

For this example, a button, text, gauge, and chart are added to the first group. A dropdown is added to the second group.

:::hint{type="info"}
**Note:** When you add dashboard nodes to another existing Flow, the nodes are added to the Layout under the first group. You can select which group the node belongs to from the **Edit&#x20;*****\<groupname>*****&#x20;node** dialog box.
:::

:::hint{type="warning"}
**Caution:** Adding the same node to another Flow in the same Flow View adopts the same configuration.
:::

**To add dashboard nodes to the canvas:**

1. From the navigation panel, select Flows Manager.
2. Click the **Expand** icon next to a selected Flow.
   The Flow opens in a new tab.
3. Click the **Menu&#x20;**&#x69;con, select **View > Dashboard**, and then drag the **Sidebar&#xA0;**&#x75;p from the bottom of the canvas.
4. From an existing Flow tab in the Flow View, drag the following nodes to the canvas:
   - button
   - text
   - gauge
   - chart
   - dropdown
     The nodes appear on the canvas.
5. Double-click one of the added dashboard nodes.
6. Enter a name for the node in the **Name&#xA0;**&#x66;ield, and then click **Done**.
7. Repeat steps 5-6 as needed, entering names for all the dashboard nodes on the canvas.
8. Double-click the **Dropdown&#xA0;**&#x6E;ode.
9. Select the second group from the **Group&#xA0;**&#x64;rop-down list, and then click **Done**.
   - If necessary, choose the **Add new dashboard group...** option and create a second dashboard group and then add the **Dropdown** node to this newly created group.&#x20;
10. Click **Deploy**.

# Configure a Dashboard Node

You can configure a node you have added to the canvas. Each node allows for the configuration of various options.

When you add a dashboard node to the canvas, you must double-click it to configure its settings. Most of the dashboard nodes must be assigned to a dashboard group.

:::hint{type="warning"}
**Caution:** Adding the same node to another Flow in the same Flow View adopts the same configuration.
:::

## Example: Dashboard Node Configuration

For this example, a dashboard switch node is configured.

**To configure a switch node:**

1. From the Navigation panel, selec&#x74;**&#xA0;Flows Manager.**
2. Click the **Expand&#x20;**&#x69;con next to a selected Flow.
3. Click the **Menu&#x20;**&#x69;con, select **View > Dashboard**, and then drag the **Sidebar&#xA0;**&#x75;p from the bottom of the canvas.
4. From an existing Flow tab in the Flow View, drag a switch node from the *dashboard&#x20;*&#x63;ategory to the canvas.
5. Double-click the **switch&#xA0;**&#x6E;ode.
   The *Edit switch node* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uC5OqFKqdShe_tdPkXAPb_2023-09-0812-29-01.png" size="80" width="752" height="1056" position="center" caption="Edit switch node dialog box" showCaption="true"}
6. Configure all fields as desired.
7. Click **Done** on the top right corner of the *Edit switch node* dialog box.
8. Click **Deploy**.

# Customize Message Text Colors

You can customize the message text colors.

There may be times when you want to assign colors to displayed messages, particularly when monitoring device status.

The following example illustrates how to configure a flow and dashboard to change the message color based on the device status: Ready, Rebooting, Warning, or Error.

For your convenience, the following code can be copied and imported into Flows so that you can explore the configuration.

```json
[{"id":"7b889445.29cbfc","type":"ui_text","z":"21b9c2dc.7bf46e","group":
"f7e07b80.a8b2c8","order":0,"width":"0","height":"0","name":"","label":
"","format":"<font color= {{msg.color}} > {{msg.payload}} </font>",
"layout":"col-center","x":640,"y":220,"wires":[]},
{"id":"4b8181b0.ec8ab","type":"inject","z":"21b9c2dc.7bf46e","name"
:"","topic":"","payload":"Ready","payloadType":"str","repeat"
:"","crontab":"","once":false,"x":340,"y":140,"wires"
:[["435cd506.e398bc"]]},{"id":"435cd506.e398bc","type":"function","z"
:"21b9c2dc.7bf46e","name":"Color Assignments","func"
:"switch (msg.payload) {\n\ncase \"Ready\" 
: \n msg.color = \"lime\";\n break;\n \ncase \"Warning\" 
: \n msg.color = \"orange\";\n break;\n \ncase \"Rebooting...\" 
: \n msg.color = \"blue\";\n break;\n \ndefault 
: \n msg.color = \"red\";\n break;\n}\n\nreturn msg;","outputs"
:1,"noerr":0,"x":465,"y":220,"wires":[["7b889445.29cbfc"]]},
{"id":"f3fc7605.077428","type":"inject","z":"21b9c2dc.7bf46e",
"name":"","topic":"","payload":"Warning","payloadType"
:"str","repeat":"","crontab":"","once":false,"x":220,"y":280,"wires"
:[["435cd506.e398bc"]]},{"id":"37d6f0de.eb7e9","type":"inject","z"
:"21b9c2dc.7bf46e","name":"","topic":"","payload":"Rebooting...",
"payloadType":"str","repeat":"","crontab":"","once":false,"x":220,
"y":180,"wires":[["435cd506.e398bc"]]},{"id":"29b7a81c.d345c8",
"type":"inject","z":"21b9c2dc.7bf46e","name":"","topic":"","payload"
:"Error","payloadType":"str","repeat":"","crontab":"","once"
:false,"x":340,"y":340,"wires":[["435cd506.e398bc"]]},
{"id":"f7e07b80.a8b2c8","type":"ui_group","z":"","name"
:"Show Colored Status","tab":"55213901.3e2a88","disp"
:false,"width":"6","collapse":false},{"id":"55213901.3e2a88","type"
:"ui_tab","z":"","name":"Alert Colors","icon":"dashboard"}]
```

**To import the Example flow:**

1. From the Navigation panel, select **Flows Manager**.
2. Click the **Expand&#x20;**&#x69;con next to a selected Flow.
3. Copy the code sample above.
4. Click the **Menu&#x20;**&#x69;con and select **Import**.
5. Paste the code sample in the **Clipboard&#xA0;**&#x62;ox.
6. Select **new flow** from the *Import to* section, and then click **Import**.

You can configure the Inject, Function and Text nodes as follows:

| Node     | Steps to configure the nodes and dashboard                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Inject   | This node can be found in the **Input&#xA0;**&#x6C;ist. This node is used primarily to demonstrate this functionality. In a production environment, device messages would need to be parsed to extract status values.<br />1) Drag an **Inject&#x20;**&#x6E;ode onto the canvas for every status message to be displayed.
2) Set the Payload to text and enter the status, such as `Warning`.
3) Click                                                                                                                                                                                                                                        |
| Function | This node can be found in the **Function&#xA0;**&#x6C;ist. Use this example function node to assign a color to each status message.<br />1) Drag a **Function&#x20;**&#x6E;ode onto the canvas and wire it to the **Inject&#x20;**&#x6E;ode.
2) Enter code for the function. For this status message use case, the following code was used.<br />:::BlockQuote
switch (msg.payload) \{&#xA;case "Ready" :&#xA;msg.color = "lime";&#xA;break;&#xA;case "Warning" :&#xA;msg.color = "orange";&#xA;break;&#xA;case "Rebooting..." :&#xA;msg.color = "blue";&#xA;break;&#xA;default :&#xA;msg.color = "red";&#xA;break;&#xA;}&#xA;return msg;
::: |
| Text     | This ui\_text node can be found in the **Dashboard&#xA0;**&#x6C;ist. Note that there are two text nodes in the Dashboard list. This is not the text input field.V Value Format, enter:<br />1) Drag the **ui\_text&#x20;**&#x6E;ode onto the canvas and wire it to the **Function&#x20;**&#x6E;ode.
2) In the *Value Format* field, enter:<br />:::BlockQuote
\<font color= \{\{msg.color}} > \{\{msg.payload}} \</font>
:::                                                                                                                                                                                                                  |

An example of how these nodes appear in the Flows canvas is shown below.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zSTxIcr94h34JQbBIEqXD_image.png "Flows diagram of example configuration")

The resulting node can be viewed in the dashboard tab.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Tr4imjErRxhctJjbwkUOh_image.png "The dashboard tab after implementing the example")

# Remove a Dashboard Node

You can remove a dashboard node from the Dashboard Layout tab by removing it from the Flow canvas.

**To remove a dashboard node:**

1. From the Navigation panel, selec&#x74;**&#xA0;Flows Manager.**
2. Click the Expand icon next to a selected Flow.
3. Click the **Menu&#xA0;**&#x69;con, select **View&#x20;**> **Dashboard**, and then drag the **Sidebar&#xA0;**&#x75;p from the bottom of the canvas.
4. Select the Flow containing the dashboard node to be removed.
5. Select the dashboard node on the Flow and press the **Delete&#x20;**&#x6B;ey.
   Alternatively, you can hover over dashboard node in the Layout, click **Edit**, and then click **Delete**.
   The selected node is removed on both the canvas and the Layout.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mKEuxHpD9qXhCbozWL6Pf_2023-09-0810-38-00.png" size="70" width="750" height="684" position="center" caption="Deleting a node" showCaption="true"}
6. Click **Deploy**.


[title] DataHub
[path] Product Features/

The DataHub module allows you to store data polled from connected DeviceHub devices with data storage enabled.&#x20;

To store data, you must select the **Enable Data Store** option for the device you want to store data for. You have the option of storing data for a specific period of time to support analytics on the historic data in the **Retention Hours** field. See [Enable Data Store](docId:3eyAfPpweuVmBLCEy17sq) to learn more.&#x20;

Litmus Edge stores the polled data in a NoSQL timeseries database.

:::hint{type="info"}
**Limitation**: When using DataHub for storing data polled from connected devices, it's important to note the following limitations:

- InfluxDB initialization for large databases takes a long time with high CPU utilization. Ensure the Litmus Edge device has sufficient computing resources.
- DataHub does not store custom-formatted driver output like JSON or arrays to ensure efficient NoSQL timeseries database handling.
- DataHub handles string values differently than integers. As a result, when querying stored data, the way string and integer values are handled can impact the structure and results of your query.
  Sample Influx Query:
  - **For String Values:&#x20;**`SELECT "value_str" FROM "temperature_readings" WHERE ("value_str"::field = 'pressure') AND $timeFilter`
  - **For Integer Values:** `SELECT "value" FROM "temperature_readings" WHERE ("value"::field = 555) AND $timeFilter`
:::

Depending on the version of Litmus Edge you are using, you will see one of the following UI configurations.&#x20;

# Litmus Edge Version 3.3.2 (and Earlier) and 3.11.0 (and Later)

You have the option of configuring an internal or external InfluxDB timeseries database.&#x20;

The DataHub UI is divided into three panes:

- **Configuration***:&#x20;*&#x54;oggle the timeseries database, change source type, and perform additional customizations.&#x20;
- **DB Management**: Expand a database view to display your connected devices, remove specific data storage for a connected device, and delete the timeseries database.
- **DB Users**: Add and delete database users, reset a user's password, add privileges to a user, as well as view the user list.

# Litmus Edge Version 3.5.2, 3.5.3, 3.5.5, and 3.5.6

You can only configure an external InfluxDB timeseries database from the **DataHub&#x20;**> **DataHub&#x20;**&#x70;ane. You can't configure an internal InfluxDB timeseries database.&#x20;

The *DB Management* and *DB Users&#x20;*&#x70;anes don't apply to the database configured from the **DataHub&#x20;**> **DataHub&#x20;**&#x70;ane.

:::hint{type="warning"}
**Important**: The DataHub (Legacy) configuration page will be removed in a future release. You will need to create new configurations and migrate existing DataHub (Legacy) configurations to the DataHub page.&#x20;
:::

# Next Steps

- [Configure the Timeseries DB](docId\:V0B5qmjOQnp8qvVIaI7iT)
- [DB Management](docId\:C_t7MlcO8-NY6OUvR2CV7)&#x20;
- [DB Users](docId\:Up8d2DklbKDMlK5nWAJBB)&#x20;


[title] Dashboard Theme
[path] Product Features/Flows Manager/Flow Canvas Dashboard/

The *Theme&#x20;*&#x74;ab allows you to control the style, background color and font settings for your Dashboard.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/83egNjPab9qpXxCMjElxy_image.png "Dashboard Theme tab")

You can select the following options for Style:

- Light (default)
- Dark
- Custom

The Light style includes preconfigured base settings which you can change according to your taste.

- **Background color**: Click the color field and select a different color.
- **Font**: Select a specific font from the Font drop-down list.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9Gbx2F7_m2_5Ygt-jRl76_image.png "Light theme options")

The Dark style includes preconfigured base settings which you can change according to your taste.

- **Background color**: Click the color field and select a different color.
- **Font**: Select a specific font from the Font drop-down list.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8jMYuGFHnreMtzRHwRPlX_image.png)

When you select the Custom style, several settings drop down. You can save the custom theme to the library or select a saved theme from the library.

The **Custom&#xA0;**&#x73;tyle allows you to make the following configurations:

- **Base Settings:&#x20;**&#x59;ou can edit the base color and font from here.
- **Page Settings**: You can select the background colors for the Title Bar, Page and Side Bar from here.
- **Group Settings**: You can select the colors for Group text, border and background from here.
- **Widget Settings**: You can select the colors for Widget text, color and background from here.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1LnEVMOWRstk7Vm23tqXA_image.png)


[title] Configure the Timeseries DB
[path] Product Features/DataHub/

Depending on the version of Litmus Edge you have, refer to the appropriate section to configure the timeseries DB.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/SiZRHbFMpkU?si=O-aUovvyNQIu0VkJ&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

:::hint{type="info"}
**Limitation**: When using DataHub for storing data polled from connected devices, it's important to note the following limitations:

- InfluxDB initialization for large databases takes a long time with high CPU utilization. Ensure the Litmus Edge device has sufficient computing resources.
- DataHub does not store custom-formatted driver output like JSON or arrays to ensure efficient NoSQL timeseries database handling.
- DataHub handles string values differently than integers. As a result, when querying stored data, the way string and integer values are handled can impact the structure and results of your query.
  Sample Influx Query:
  - **For String Values:&#x20;**`SELECT "value_str" FROM "temperature_readings" WHERE ("value_str"::field = 'pressure') AND $timeFilter`
  - **For Integer Values:** `SELECT "value" FROM "temperature_readings" WHERE ("value"::field = 555) AND $timeFilter`
:::

# Litmus Edge Version 3.3.2 (and Earlier) and 3.11.0 (and Later)

You can configure the Timeseries DB by navigating to **DataHub&#x20;**>**&#x20;Configuration**.&#x20;

You have the option of configuring an internal or external InfluxDB timeseries database.&#x20;

DataHub's Configuration module offers the following functionalities:

- Toggle the Timeseries DB
- Select and Customize Timeseries DB Source type
- Test Timeseries DB

## Toggle the Timeseries DB

You can enable or disable the Timeseries DB by using the **Timeseries DB disabled** or **Timeseries DB enabled** toggle.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xc3BjqUGm6gHJZj5g-AaG_image.png "Timeseries DB toggle")

## Select and Customize Timeseries DB Source Type

You can change the Timeseries DB source type by using the Source type drop-down list and selecting internal or external.&#x20;

:::hint{type="info"}
**Note**: If you select internal, make sure to select the Enable Data Store option for the device you want to store data for. See [Enable Data Store](docId:3eyAfPpweuVmBLCEy17sq) to learn more.&#x20;
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3CNZ9KY98h1kjp0GdDm6r_image.png "Source type drop-down list")

If you select *external&#x20;*&#x65;nter the following details:

- **DB uri**: The IP address and port of the externally deployed InfluxDB database. If the InfluxDB database is deployed on the same device as Litmus Edge, enter http\://localhost:8086.&#x20;
- **DB username**: Enter the Influx DB v1.x username.&#x20;
- **DB password**: Enter the Influx DB v1.x password.&#x20;
- **Auth token**: Copy the token for the InfluxDB 2.x database. You can access the  database from a browser window and navigate to **Data&#x20;**> **Tokens**.&#x20;
- **Organization name**: Enter the InfluxDB 2.x organization name configured for the database.&#x20;
- **DB vendor**: The available vendors are
  - InfluxDB v1.x
  - InfluxDB v2.x
- **Description&#x20;**(Optional): Enter a description for the externally deployed InfluxDB.&#x20;
- **Name**: Enter a name for the externally deployed InfluxDB.&#x20;

If you select *internal*, no further configurations are required.&#x20;

## Test the Timeseries DB

You can test the connectivity of the Timeseries DB by clicking **Test**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/A4VU-0lQCBgXy9TxW4bgQ_image.png "The test Timeseries DB button")

The connected status and response message displays.

# Litmus Edge Version 3.5.2, 3.5.3, 3.5.5, and 3.5.6

:::hint{type="warning"}
**Important**: The DataHub (Legacy) configuration page will be removed in a future release. You will need to create new configurations and migrate existing DataHub (Legacy) configurations to the new DataHub page.&#x20;
:::

You can configure the Timeseries DB by navigating to **DataHub&#x20;**>**&#x20;DataHub**.&#x20;

You can only configure an external InfluxDB timeseries database.&#x20;

DataHub's Configuration module offers the following functionalities:

- Toggle the Timeseries DB
- Select and Customize Timeseries DB Source type
- Test Timeseries DB

## Toggle the Timeseries DB

You can enable or disable the external  Timeseries DB by using the **Timeseries DB disabled** or **Timeseries DB enabled** toggle.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/b2wV-Qkme1yyD5oFMCxeM_image.png" size="80" width="1095" height="417" caption="Timeseries DB toggle" position="center" showCaption="true"}

## Configure the Timeseries DB

After enabling the Timeseries DB toggle, configure the parameters for the database.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jyUBPWHeuu2oB1jrl6vX2_image.png" size="80" width="1095" height="417" caption="Timeseries DB fields" position="center" showCaption="true"}

- **DB uri**: The IP address and port of the externally deployed InfluxDB database.
- **DB vendor**: Selec&#x74;**&#x20;InfluxDB v2.x&#x20;**&#x6F;&#x72;**&#x20;InfluxDB v1.x**.
- **Description&#x20;**(Optional): A description for the externally deployed InfluxDB.
- **Name**: The configuration name of the externally deployed InfluxDB.&#x20;

Click **Test&#x20;**&#x74;o test the connectivity of the database. When done, click **Save**.&#x20;


[title] Discover Devices on the Network
[path] Product Features/DeviceHub/Device Discovery/

You can discover devices on the network by navigating t&#x6F;**&#x20;DeviceHub&#x20;**> **Device Discovery**.&#x20;

# Enable/Disable Device Discovery

You can enable and disable discovery of devices that are connected to your network. Use Device Discovery to discover which nodes are for edge devices.

To enable device discovery, navigate to the *Device Discovery* pane and toggle the switch to **ON&#x20;**&#x66;rom a selected Ethernet interface. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Xqnj5BhMkmqST5UQ88Y5T_image.png" size="80" width="1831" height="501" caption="The toggle to enable device discovery" position="center" showCaption="true"}

- When enabled, The *Discovery mode* table drops down for the selected Ethernet Interface.
- When disabled, The *Discovery mode* table collapses for the selected Ethernet Interface and the connection is dropped.

:::hint{type="info"}
**Note**: The populated list includes a number of devices found and the last scanned indicator in the Ethernet interface header, indicating the last time the network was scanned.
:::

# Discover Devices on the Network

Depending on the enterprise, Litmus Edge may become lost among the thousands of devices in the private network. You can use Litmus Edge with VGA/HDMI to discover devices. 

## Litmus Edge with VGA/HDMI

If the system is running normal Litmus Edge, it can be discovered using TUI (Terminal User Interface) access. Connect a monitor to the Litmus Edge IPC and the terminal shows the IP address of the device. See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP). &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FO9_UsSv2RmDWCyBQvmhr_le-tui-bootup-v3150.png" size="80" width="872" height="290" caption="The Terminal User Interface" position="center" showCaption="true"}


[title] Generator
[path] QuickStart Guide/Industrial Systems Connection Guide/Simulator/

Review the following information for setting up and configuring the Generator driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                         |
| ---------------------------- | ---------------------------------------------------------------------------------------- |
| **Driver type**              | Used to generate simulated data                                                          |
| **Replaces Gen 1 driver(s)** | <br />Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd).  |

# Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, refer to the following register table and tag parameters.&#x20;

:::hint{type="info"}
**Note**: The address format in this Gen 2 driver is different from the Gen 1 driver ([Simulator (Gen1)](docId:-pmZOhotguiSOZmBAEql4)) for the same device. Learn more about [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd).&#x20;
:::

## Register Table

| **Name** | **Data Type**                             | **Address Format** | **Min Address** | **Max Address** | **Description**        |
| -------- | ----------------------------------------- | ------------------ | --------------- | --------------- | ---------------------- |
| S        | float64, int64, unit64, bit, char, string | DDDDD              | 1               | 32768           | Random value generator |
| H        | int64                                     | DDDDD              | 1               | 32768           | Holding Register       |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Formula**: Enter the formula for the tag. The input for the formula (t) represents the timestamp value.&#x20;
- **Min value**: Enter the minimum value the tag can generate.&#x20;
- **Max value**: Enter the maximum value the tag can generate.&#x20;
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::

:::hint{type="success"}
**Tip**:

- If the **Min\_value** and **Max\_value** tag parameters are set, any generated tag values are overridden.
- The supported functions for the Formula tag parameter are&#x20;
  - `sin`
  - `cos`
  - `tan`
  - `power`
  - `log`
  - `exp`
  - `rand`
  - `sqrt`
- We recommend that you use a cyclic function in the formula. The parameter t represents Unix time in milliseconds. When using trigonometric functions such as sine, adjust the period of the function by dividing `t` by 10,000, for example, `sin(t/10000)`.
:::






[title] Siemens S7-200 Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

Review the following information for setting up and configuring the Siemens S7-200 Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                             |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------ |
| **Driver type**              | Serial                                                                                                       |
| **Validated devices/series** | [S7-200](https://cache.industry.siemens.com/dl/files/582/1109582/att_22063/v1/s7200_system_manual_en-US.pdf) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

Record the serial communication parameters for the device. Otherwise, follow the steps below.&#x20;

**To configure your device:**&#x20;

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: Siemens CPU 222
   **Communication I/F**: RS485. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/d964M7ieFCw7hCxKiKHQT_siemens-s7-200-serialdevice.png" size="80" width="725" height="878" caption="Reference image of device" position="center" showCaption="true"}
2. Launch Step7-Micro/WIN software and click **Set PG/PC Interface**.&#x20;
3. Select **PC/PPI Cable**, and then click **Property**.
4. From th&#x65;*&#x20;Local Communication* dialog box, select **USB**.
5. Click **Communication**, and then click **Double-Click to Refresh**.
   The device is detected.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Siemens                           |
| **Driver**             | Siemens S7-200 Serial (Gen1)      |
| **Communication Port** | Local Serial connection file path |
| **Baud Rate**          | 38400                             |
| **Data Bits**          | 8                                 |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station**            | 1                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

Refer to the appropriate register table depending on your version of Litmus Edge.&#x20;

### Register Table for Litmus Edge 3.11.0 and Later

| **Name** | **Value Type**                                   | **Address Format** | **Min Address** | **Max Address** |
| -------- | ------------------------------------------------ | ------------------ | --------------- | --------------- |
| I        | bit, byte, sint, word, int, dword, dint, real    | DDo                | 0               | 317             |
| Q        | bit, byte, sint, word, int, dword, dint, real    | DDo                | 0               | 317             |
| M\_Bit   | bit                                              | DDo                | 0               | 317             |
| V\_Bit   | bit                                              | DDDDo              | 0               | 20477           |
| S\_Bit   | bit                                              | DDo                | 0               | 287             |
| SM\_Bit  | bit                                              | DDDo               | 0               | 5497            |
| T\_Bit   | bit                                              | DDD                | 0               | 255             |
| C\_Bit   | bit                                              | DDD                | 0               | 255             |
| AI       | byte, sint, word, int, dword, dint, real         | DD                 | 0               | 31              |
| AQ       | byte, sint, word, int, dword, dint, real         | DD                 | 0               | 31              |
| M        | byte, sint, word, int, dword, dint, real         | DD                 | 0               | 31              |
| S        | byte, sint, word, int, dword, dint, real         | DD                 | 0               | 31              |
| SM       | byte, sint, word, int, dword, dint, real         | DDD                | 0               | 549             |
| T        | dword                                            | DDD                | 0               | 255             |
| C        | word                                             | DDD                | 0               | 255             |
| V        | byte, sint, word, int, dword, dint, real, string | DDDD               | 0               | 2047            |

### Register Table for Litmus Edge 3.5.6 and Earlier

| **Name** | **Value Type**                                   | **Address Format** | **Min Address** | **Max Address** |
| -------- | ------------------------------------------------ | ------------------ | --------------- | --------------- |
| I        | bit, byte, sint, word, int, dword, dint, real    | DDo                | 0               | 157             |
| Q        | bit, byte, sint, word, int, dword, dint, real    | DDo                | 0               | 157             |
| M\_Bit   | bit                                              | DDo                | 0               | 317             |
| V\_Bit   | bit                                              | DDDDo              | 0               | 20477           |
| S\_Bit   | bit                                              | DDo                | 0               | 287             |
| SM\_Bit  | bit                                              | DDDo               | 0               | 5497            |
| T\_Bit   | bit                                              | DDD                | 0               | 255             |
| C\_Bit   | bit                                              | DDD                | 0               | 255             |
| AI       | byte, sint, word, int, dword, dint, real         | DD                 | 0               | 31              |
| AQ       | byte, sint, word, int, dword, dint, real         | DD                 | 0               | 31              |
| M        | byte, sint, word, int, dword                     | DD                 | 0               | 31              |
| S        | byte, sint, word, int, dword                     | DD                 | 0               | 31              |
| SM       | byte, sint, word, int, dword                     | DDD                | 0               | 549             |
| T        | dword                                            | DDD                | 0               | 255             |
| C        | word                                             | DDD                | 0               | 255             |
| V        | byte, sint, word, int, dword, dint, real, string | DDDD               | 0               | 2047            |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Sick Flexi
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC.

| **PLC&#x20;**       | **Compatible Serial DeviceHub Drivers**                   |
| ------------------- | --------------------------------------------------------- |
| Sick Flexi FX3-CPU1 | [Sick Flexi Serial (Gen1)](docId\:ux1wJO_AhRQVkpGgHyWbF)  |


[title] Simulator
[path] QuickStart Guide/Industrial Systems Connection Guide/

You can use the following DeviceHub drivers to simulate data:&#x20;

- [Generator](docId\:PEW-ALmLpBRVozq1raF8r)&#x20;
- [Simulator (Gen1)](docId:-pmZOhotguiSOZmBAEql4)&#x20;


[title] Yaskawa
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                                                                        | **Compatible Ethernet DeviceHub Driver**                       |
| ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| [Yaskawa MP2300 series](https://www.yaskawa.com/products/motion/machine-controllers/mp-series/mp2300) | [Yaskawa MP2300 Ethernet (Gen1)](docId:3EVU7I2BUK0d3uWvbKfcO)  |


[title] RS Automation
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**             | **Compatible Serial DeviceHub Drivers**             |
| -------------------------- | --------------------------------------------------- |
| RS Automation Oemax Series | [Oemax Serial (Gen1)](docId:9-zGfQX1T9jjag3NDhRiI)  |


[title] VIPA 300s Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/VIPA/

Review the following information for setting up and configuring the VIPA 300s Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                               |
| ---------------------------- | ------------------------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                                       |
| **Validated devices/series** | [Vipa 300s PLC series](https://www.vipa.com/en/products/control-systems/300s/) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.&#x20;

**To configure your device:**

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: VIPA CPU 315-4NE12
   **Communication I/F**: Ethernet. Refer to the following figure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lnML14DwOAVMK_3t23QL3_vipa-300s-ethernet.png" size="80" width="386" height="352" caption="Reference image of device" position="center" showCaption="true"}
2. Launch Primary Setting Tool and set up Set PG/PC interface to use the network adapter.&#x20;
3. Browse the devices in the subnet and set up the network parameters for the device, and then download into the device.
4. Launch SIMATIC Manager and configure *HW Config*.
5. From the project, select **CPU318-2 DP** as the CPU module with two CP 343-1 modules.
6. In NetPro, set up *Set PG/PC Interface* and use the adapter in the same subnet with the device.
7. Double-click the module icon and set up the network parameters.
8. Download the setting into the device.
9. Open the OB1 block and make connection with the device.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Vipa                                     |
| **Driver**          | Vipa 300s Ethernet (Gen1)                |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 102                                      |
| **Slot Number**     | 1                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

Refer to the appropriate register table depending on your version of Litmus Edge.&#x20;

### Register Table for Litmus Edge 3.11.0 and Later

| **Name** | **Value Type**                                        | **Address Format** | **Min Address** | **Max Address** |
| -------- | ----------------------------------------------------- | ------------------ | --------------- | --------------- |
| I        | bit, byte, char, word, int, dword, dint, real, string | DDDDd              | 0               | 40957           |
| Q        | bit, byte, char, word, int, dword, dint, real, string | DDDDd              | 0               | 40957           |
| M        | bit, byte, char, word, int, dword, dint, real, string | DDDDd              | 0               | 40957           |
| DB       | bit, byte, char, word, int, dword, dint, real, string | DDDDDd             | 0               | 327677          |

### Register Table for Litmus Edge 3.5.6 and Earlier

| **Name** | **Value Type**                  | **Address Format** | **Min Address** | **Max Address** |
| -------- | ------------------------------- | ------------------ | --------------- | --------------- |
| I        | bit                             | DDDDd              | 0               | 40957           |
| I        | byte, char, sint, word, int, co | DDDD               | 0               | 4095            |
| Q        | bit                             | DDDDd              | 0               | 40957           |
| Q        | byte, char, sint, word, int, co | DDDD               | 0               | 4095            |
| M        | bit                             | DDDDd              | 0               | 40957           |
| M        | byte, char, sint, word, int, co | DDDD               | 0               | 4095            |
| DB       | bit                             | DDDDDd             | 0               | 327677          |
| DB       | byte, char, sint, word, int, co | DDDDD              | 0               | 32767           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **DB Number**: Enter the data block number of the tag.&#x20;
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Profinet Acyclic
[path] QuickStart Guide/Industrial Systems Connection Guide/Profinet/

:::hint{type="info"}
**Note**: This driver is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

Review the following information for setting up and configuring the Profinet Acyclic driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                             |
| ---------------------------- | ------------------------------------------------------------ |
| **Driver type**              | Ethernet                                                     |
| **Validated devices/series** | [PROFIdrive](https://www.profibus.com/technology/profidrive) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use software on your computer to configure the device for Ethernet access.&#x20;

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                                    |
| ---------------------- | ---------------------------------------- |
| **Type**               | Profinet                                 |
| **Driver**             | Profinet Acyclic                         |
| **Network Address**    | The device address you defined in Step 1 |
| **Network Port&#x20;** | 34964                                    |
| **Slot Number**        | 0                                        |
| **Subslot**            | 1                                        |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name**    | **Value Types**                                                                                                                                   | **Address Format** | **Min Address** | **Max Address** | **Description**                         |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | --------------- | --------------- | --------------------------------------- |
| Record      | auto, json, hex, int8, int16, int32, uint8, uint16, uint32, float32, string                                                                       | DDDD               | 0               | 65535           | Data Records                            |
| I\&M        | auto, json, hex                                                                                                                                   | DDDD               | 0               | 65535           | Identification & Maintenance<br />&#xA; |
| PROFIdrive  | auto, hex, bool, int8, int16, int32, int64, uint8, uint16, uint32, float32, string, bool\[], int16\[], int32\[], uint16\[], uint32\[], float32\[] | DDDD               | 0               | 65535           | Acyclic access to parameters (PNU)      |
| PROFIenergy | auto, float32                                                                                                                                     | DDDD               | 0               | 65535           | PROFIenergy                             |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Yokogawa FA-M3 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Yokogawa/

Review the following information for setting up and configuring the Yokogawa FA-M3 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                                                           |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                                                                   |
| **Validated devices/series** | [Yokogawa FA-M3 Series](https://www.yokogawa.com/us/solutions/products-and-services/control/control-devices/programmable-logic-controllers-plc-pac/fa-m3/) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.

**To configure your device:**&#x20;

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: Yokogawa FA M3 F3SP25-SN
   **Communication I/F**: Ethernet. Refer to the following figure.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pGOpRiViey1zBraKAPnx__yokogawafam3ethernetdevice.png" size="80" width="675" height="744" position="center" showCaption="false"}
2. Launch WideField3 v3.02 software and create a project with the device model.&#x20;
3. Click **Tools > Set up Environment**.
4. Configure the network parameters.&#x20;
5. Click **Online > Connect&#x20;**&#x61;nd verify the connection is successful.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Yokogawa                                 |
| **Driver**          | Yokogawa FA-M3 Ethernet (Gen1)           |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 12289                                    |
| **Station ID**      | 1                                        |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, use the following tag/register mapping table.

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | -------------- | ------------------ | --------------- | --------------- | --------------- |
| X        | bit            | DDDDD              | 0               | 71644           | Input bit       |
| Y        | bit            | DDDDD              | 0               | 71644           | Output bit      |
| I        | bit            | DDDDD              | 1               | 65535           |                 |
| M        | bit            | DDDD               | 1               | 9984            |                 |
| L        | bit            | DDDDD              | 0               | 78192           |                 |
| F        | word           | DDDDDD             | 1               | 524288          |                 |
| Z        | word           | DDDD               | 1               | 1024            |                 |
| W        | word           | DDDDD              | 1               | 78192           |                 |
| V        | word           | DDD                | 1               | 256             |                 |
| B        | word           | DDDDDD             | 1               | 262144          |                 |
| D        | word           | DDDDD              | 1               | 65535           |                 |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Siemens S7-1200 (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

:::hint{type="warning"}
**Important**: This driver was deprecated in Litmus Edge version 3.5.2. We recommend using the Gen 2 [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4) or [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d).
:::

Review the following information for setting up and configuring the Siemens S7-1200 (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                       |
| ---------------------------- | ---------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                               |
| **Validated devices/series** | [Siemens S7-1200 series Ethernet](http://www.siemens.com/entry/cc/en/) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure your device for Ethernet access.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Siemens                                  |
| **Driver**          | Siemens S7-1200 (Gen1)                   |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 102                                      |
| **Slot**            | 1                                        |

# Step 3: Configure the List of Registers

When you [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the connected device, use the following tag/register mapping table.

| **Name** | **Value Type**                 | **Address Format** | **Min Address** | **Max Address** | **Description** |
| -------- | ------------------------------ | ------------------ | --------------- | --------------- | --------------- |
| PE       | bit                            | DDDDd              | 0               | 40957           |                 |
| PE       | word                           | DDDD               | 0               | 4095            |                 |
| PA       | bit                            | DDDDd              | 0               | 40957           |                 |
| PA       | word                           | DDDD               | 0               | 4095            |                 |
| MK       | bit                            | DDDDd              | 0               | 40957           |                 |
| MK       | byte, word, dword, real, cou   | DDDD               | 0               | 4095            |                 |
| DB       | bit                            | DDDDDd             | 0               | 327677          |                 |
| DB       | byte, sint, word, int, counter | DDDDD              | 0               | 32767           |                 |


[title] Ping
[path] QuickStart Guide/Industrial Systems Connection Guide/

You can use the [Ping (Gen1)](docId\:Tj9jtpN54ncnfWrjldC6v) DeviceHub driver to ping an IP address.&#x20;

[title] Devices
[path] Product Features/DeviceHub/

This section describes the procedures you can use to add/connect devices to Litmus Edge, as well as to modify and manage the connected devices.&#x20;

# Access Devices UI

You can access *Devices&#x20;*&#x66;rom *DeviceHub*.&#x20;

**To access Devices:**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **DeviceHub**.
   The *Devices* pane appears. Devices appear as tiles.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/o7yYAJOeIlJC5SvIOoNYR_image.png" size="80" width="1914" height="594" caption="Devices in DeviceHub card view" position="center" darkWidth="1914" darkHeight="594" showCaption="true"}

# &#x20; Next Steps

- [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq)&#x20;
- [Device Discovery Tool](docId\:N9jtAdKuUXNU_YNhq87x4)&#x20;
- [Manage Devices](docId\:p4VpVE-BxtLSJqn37yROr)&#x20;
- [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd)&#x20;
- [DeviceHub Use Cases](docId\:n1PHFmqvS8LL8DAngvS3W)
- [DeviceHub Troubleshooting](docId\:M8jYFRaXMkKTiJXpc8OTK)


[title] Add Tags
[path] Product Features/DeviceHub/Tags/

You can add tags to connected devices by navigating to **DeviceHub&#x20;**> **Tags**.&#x20;

To learn more about the list of registers for specific devices, visit the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr).&#x20;

You can add tags as follows:

- **Add a tag**: Adds a single tag for the selected device.
- **Upload CSV**: Uploads a list of tags from a CSV file.
- **Browse tags**: Search for pre-defined device tags and select the ones to add. See [Search for Pre-defined Device Tags](docId\:W1Est_A3MIDOUIZrkSgvi) to learn more.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/_RcLeg_wQfo?si=VQkrsS_H0YYi-NZy&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Before You Begin

Before creating tags, make sure you have connected a device. Refer to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq).&#x20;

# Important

Refer to the following information on Free Tags and OPC UA Drivers:

- Certain device drivers do not have a list of register names in the *Add Tag* form. These are referred to as Free Tags.
- You must enter case-sensitive register names exactly how they are defined in the device.
- Devices do not display a *Connected&#x20;*&#x73;tatus until a tag with a correct register name is created. See [Device Connectivity Issues](docId\:cEy2HVJQ2J6nOkUsBSqDs) for more information.&#x20;
- For OPC UA, map the OPC server tags to the client. Enter the Register Name using this format where the semicolon is required: `ns=1;s=tagname`  . For example: `ns=2;s=Channel1.Device1.Tag1`.

# Add an Individual Tag

You can manually add individual tags to a device.&#x20;

**To add a tag for a single register:**

1. Navigate to **DeviceHub&#x20;**> **Tags**.&#x20;
2. From the *Tags&#x20;*&#x70;ane, click **Add Tag**, and then select **Add Tag**.
   The *Add Tag* dialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/K8BJ5H37N8-8m7XmqYhXu_dg9kgjddwrtpye0zqwhpcadd-tags.png" size="100" width="1585" height="413" position="center" caption="The Add Tag option" showCaption="true" indent="2"}

3. Click the **Select a Device** field, and then select an option from the drop-down list. Only devices that had been added to Litmus Edge appear in the drop-down list. The fields displayed in the *Add Tag* dialog box depend on the device driver type.
4. From the *Add Tag* dialog box, complete the parameters for the tag. Refer to the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr) for parameters specific to your device driver and review the *Tag Parameters* section.&#x20;
5. The following optional parameters apply to all device drivers. Configure them as needed.&#x20;
   - **Tag Formula**: Enter a formula for the tag to process the generated data. See [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR) to learn more.&#x20;
     Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
     - sin
     - cos
     - tan
     - sqrt
     - power: power(`x`) performs the operation `10^x`.
     - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
     - exp: exp(`x`) performs the operation `e^x`.
     - For additional functions on tag values such as rounding and data conversions, you can use [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5) or the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89). See [Analytics Guides](docId\:O9EkCXH-d9DmHjOaru_2B) to learn more.&#x20;
   - **Only Publish on Change of Value**: Select the checkbox to customize NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
   - **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data. See [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ) to learn more.&#x20;
6. When done configuring the tag, click **Add Tag**.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::

The tag appears in the *Tags&#x20;*&#x70;ane.&#x20;

# Add Multiple Tags

You can add multiple tags at once by downloading a CSV template file, filling out the file with tag details, and uploading the CSV file.&#x20;

:::hint{type="warning"}
**Important**: When saving the CSV file, you must ensure that commas are used as column delimiters and not semicolons. If semicolons are used as column delimiters, you won't be able to upload the CSV file successfully. See [Tag Upload through CSV Issues](docId\:d6m0dXeKTlvtrGAEfjf_k) to learn more.&#x20;
:::

## Step 1: Download a Sample CSV Template

You will need to download a template CSV file that has the required fields for the tags you will add.&#x20;

**To download a sample CSV template:**

1. From the *Tags&#x20;*&#x70;ane, click the **Help&#x20;**&#x69;con.&#x20;
2. Select **Sample CSV Template**.
   The sample Tags CSV is downloaded to your local drive.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/E1dt3XFGYio-f1aijxtde_samplecsvtemplateicon.png" size="100" width="1903" height="317" caption="The Sample CSV Template option" position="center" showCaption="true" indent="2"}

## Step 2: Populate the CSV Template File

You can now populate the CSV template with the tags that will be added. A row/record for each tag must be populated with attribute values, as described below.&#x20;

- Refer to the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr) and review the *Tag Parameters* section for your device. If tags for the device have additional fields that are not included in the template file, add them as required.&#x20;
- The order of the attribute columns in the template file may be in any order.&#x20;

Refer to the following sections for information on populating the CSV template file.&#x20;

### Example of a Tag CSV File

::File[]{src="https://archbee-doc-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bbQE7nMv5vi7jvxjoDPFo_tag-sample.csv" label="Tag_sample.csv"}

| **deviceId**                         | **deviceName** | **driverName**                   | **name**         | **tagName** | **description**   | **valueType** | **registerID** | **publishCov** | **tagFormula**      | **metaData**                       | **pollingInterval** |
| ------------------------------------ | -------------- | -------------------------------- | ---------------- | ----------- | ----------------- | ------------- | -------------- | -------------- | ------------------- | ---------------------------------- | ------------------- |
| A581B3E2-12CC-4A69-92C0-2C09DAFC5148 | Test\_Device   | AB CompactLogix Ethernet FreeTag | TestRegisterName | TestTagName | SampleDescription | bool          |                | TRUE           | value+timestamp+100 | \{"MetaDataKey1":"MetaDataValue1"} | 1                   |

### Tag Attribute Rules

- The `deviceName` is required to find the corresponding device. The `deviceId` can be omitted. If the `deviceId` is not included, a `device name not found error` displays, but the tags will still be successfully added.&#x20;
- Attribute values are required unless noted as optional.
  - If an optional value is null, it is ignored. This allows for the loading of register definitions for multiple device types from a single file.
  - If the value is null and the device driver defines it as mandatory, the tag is not imported.
  - If an optional value is present in the CSV file, but it is not supported by the device driver, it is treated as an error and the tag is not imported.
- Attribute columns in the CSV can be in any order.

| **Attribute Name** | **Data Type** | **Description**                                                                                                                                        | **Required** | **Notes**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------------ | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| deviceId           | string        | ID of the device. You can get this value from the device tile in **DeviceHub&#x20;**> **Devices**.                                                     | No           | Get this value from the **Copy&#xA0;**&#x69;con next to the device ID in the device tile in **DeviceHub&#x20;**> **Devices**.&#xA;&#xA;If a device identified by the `deviceId` is not found, `deviceName` is used.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| deviceName         | string        | The name you configure for the device.                                                                                                                 | Yes          |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| driverName         | string        | Driver name is for validating optional attributes against `registration.json`. This type should directly correspond to the name of the driver package. | No           | Get this value from the **Copy&#xA0;**&#x69;con next to the driver name in the device tile in **DeviceHub&#x20;**> **Devices**.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| name               | string        | PLC register name or full PLC register address.                                                                                                        | Yes          | Depends on `valueType`<br />This name is case sensitive.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| tagName            | string        | The name you configure for the tag.                                                                                                                    | Yes          |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| description        | string        | The description you configure for the tag.                                                                                                             | No           |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| valueType          | string        | Type of the register value.                                                                                                                            | Yes          | The list of available selection depends on the **Register Table&#x20;**&#x6F;f the device.<br />Examples: bit, word                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| registerID         | string        | A unique register Id generated for this tag                                                                                                            | No           | This should be left blank as this value is generated when the tag is created.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| publishCoV         | boolean       | A flag that indicates whether the **Only Publish on Change of Value** setting is enabled.                                                              | No           | If left bank, the value `FALSE` is set by default.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| tagFormula         | string        | A formula that will transform the tag payload value to a new final value.                                                                              | No           | This column will be empty if there is no formula entered.<br />Available parameters for the formula are as follows:<br />- `value` - current tag value
- `timestamp` - current tag unit time in milliseconds&#xD;<br />Available math functions&#xD;<br />- `sin`&#xD;
- `cos`&#xD;
- `sqrt`&#xD;
- `tan`&#xD;
- `power`&#xD;
- `log`&#xD;
- `exp`&#xD;<br />Example formula:&#xD;&#xA;	`sin(value) + 1`<br />For additional functions on tag values such as rounding and data conversions, you can use [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5) or the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89). See [Analytics Guides](docId\:O9EkCXH-d9DmHjOaru_2B) and [Flows Guides](docId\:Gio8gobgZIW3WZxt9QAWR) to learn more.  |
| metaData           | string        | A JSON-formatted string containing one or more Metadata key-value pairs                                                                                | No           |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| pollingInterval    | float         | Polling interval in seconds                                                                                                                            | No           | How often the tag will poll the driver for a value. 0 means auto polling disabled. 1 means poll every 1 second. If left blank, a value of 1 is set.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |

### CSV Formatting and Escaping Rules

Because CSV format is not standardized, several different methods could be used for escaping special characters. And, depending on locality, a different value separator may be used. For example, in European countries, a semi-colon is widely used as a separator. The Litmus Edge CSV specification adheres to the rules used by Microsoft Excel, as listed below:

- Field separators can be comma (`,`), semicolon (`;`), or tab (`\t`).
- Fields can have white spaces around them. This space is removed during processing.
- Fields can be escaped with double quotes (`"`) or single quotes (`'`). Leading or trailing white spaces inside the quotes are preserved.
- Any separator characters within a quoted field is treated as part of the field value.
- Any quotation character in a field value must be escaped with a backslash (`\`) character.
- Fields are parsed based on their data type: **string** values are read "as is" and **numeric&#xA0;**&#x76;alues are parsed with a numeric parser.
- Empty fields are treated as null values.

## Step 3: Upload Populated CSV File of Tags

Once the CSV template file is populated, you can upload it to add all tags that were added to the file.&#x20;

**To upload a populated CSV file:**

1. From the *Tags&#x20;*&#x70;ane, click **Add Tag**, and then selec&#x74;**&#x20;Upload CSV**.
   The *Upload Tags* dialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ACgIeDaqE3Tay5uu1pgVe_r8p-dmba2tno3kfje76hupload-csv.png" size="100" width="1585" height="413" position="center" caption="Upload CSV icon" showCaption="true" indent="2"}

2. Click **Select CSV**.
3. Select the file to upload and click **Open**.&#x20;
4. From th&#x65;*&#x20;Upload Tags* dialog box, click **Upload**. Upon a successful upload, the tags appear in the *Tags&#x20;*&#x70;ane.
   If the details in the CSV file do not match the expected configuration, error messages indicate the issues.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-qIuXV2E4sl-tgxV6m6eQ_upload-error.png" size="80" width="867" height="196" caption="Bulk Upload Error Message" position="center" showCaption="true"}

# Search for Pre-defined Device Tags

Some DeviceHub devices give you the option of searching, selecting, and downloading pre-defined device tags.&#x20;

Devices that support searching for device tags display a tag icon in the top-right corner of the device card.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/R1a_I7-JJ7u8wECqagmeS_image.png" size="60" width="419" height="343" position="center" caption="Browse tag option shown for a device " showCaption="true"}

There are two ways to search for device tags:

:::hint{type="info"}
**Note**: The Server Search option is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

- Use [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd) to view all available tags for a device. You can then select and download tags applicable for your DeviceHub device.&#x20;
- Use [Server Search](docId\:Ir3ohfMtBV2zMFK7jyCAk) to search for device tags. You will need to know the name of the tags you want to search for and add to your DeviceHub device.&#x20;


[title] Flow Canvas Dashboard
[path] Product Features/Flows Manager/

The flow canvas dashboard allows you to visualize data and information for your flows. You can organize the dashboard into tabs and groups, and then add widgets and links to display specific information. You can then make aesthetic choices for the look and feel of your dashboard.

To view the dashboard from the flow canvas, click the **Dashboard&#x20;**&#x69;con.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XCU8haFhKjda2u8MBZ-LR_image.png" size="80" width="1057" height="706" caption="Dashboard icon" position="center" showCaption="true"}

The dashboard tabs allow you to do the following. &#x20;

- **Layout**: Add tabs or links and to launch the [Node-RED](https://nodered.org/) dashboard.&#x20;
- **Site**: Configure [Node-RED](https://nodered.org/) options.
- **Theme**: Configure the style, base color, and font.&#x20;
- **Angular**: Configure colors.&#x20;


[title] Default Topics and Descriptions
[path] Product Features/DeviceHub/Tags/

Review the following information on default topics and descriptions.&#x20;

To review how-to guides for topics, see [DeviceHub Guides](docId\:n1PHFmqvS8LL8DAngvS3W).&#x20;

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

- You need to follow the following guidelines for topic names: [Subject-Based Messaging](https://docs.nats.io/nats-concepts/subjects).&#x20;
- When publishing structured data such as JSON, you must convert to a byte array (string) first. To do this in a flow, you can use the **json&#x20;**&#x6E;ode.&#x20;
:::

# Data Publishing Formats

DeviceHub collects data from PLCs and sends data to a message broker for further distribution. Data flows trigger using an API call or execute according to a schedule. Litmus Edge supports multiple data formats.

Refer to the following formats used for data in devices.&#x20;

## Raw Topics

DeviceHub [Tags](docId\:A22RMVCu87M0HSXG950hl) generate a Raw Topic, which is a local topic for publishing and subscribing data through the message broker.&#x20;

Litmus Edge publishes each value to a tag-specific topic in the following topic format: **devicehub.raw.\{deviceID}.\{tagID}**.&#x20;

### Device Raw Topics

When you copy a raw topic for a device in Litmus Edge, the topic is copied in the following format: `devicehub.raw.{DeviceID}.>`. The ">" character represents a wildcard. This means that the topic will be used for any tag associated with the device.&#x20;

### Example of a Raw Topic

`devicehub.raw.F7F72687-2F29-46E7-95E2-B5532471EBAA.2d7473c0-83a0-4174-83cc-b48a63c1b1cf`

### Example of a Raw Device Topic

`devicehub.raw.16AC16F7-5E36-4EA0-8D00-17386C051281.>`

## Alias Topics

When you [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq), you have the option of using the **Enable alias topics** option. If you select to use alias topics for a device, then you won't be able to use raw topics as well. Each connected device can either use alias topics or raw topics, not both.&#x20;

:::hint{type="warning"}
**Important**: When alias topics are enabled for a device, you can't use batch write topics. To use batch write topics, you must not select the **Enable alias topics** check box in the device configuration. See [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and [Manage Devices](docId\:p4VpVE-BxtLSJqn37yROr) for more information.&#x20;
:::

When th&#x65;*&#x20;Enable alias topics&#x20;*&#x63;heck box is selected:

- deviceId in the raw topic format is replaced with deviceName
- tagId in the raw topic format is replaced with tagName

Alias topics use the following format: **devicehub.alias.\{devicename}.\{tagname}**.

### Example of an Alias Topic

`devicehub.alias.plc2.tag1`

## Write Topics

Write topics write data to a tag-specific topic in the following topic format: **devicehub.write.\{deviceID}.\{tagID**}. Each device instance on the **devicehub.write.\{deviceID}.\*** topic receives all messages for the corresponding device. The device instance executes a write to the specified tag on the connected device.&#x20;

### Example of a Write Topic

`devicehub.write.F7F72687-2F29-46E7-95E2-B5532471EBAA.2d7473c0-83a0-4174-83cc-b48a63c1b1cf`

## Batch Write Topics

Batch write topics can send multiple write requests simultaneously in the following format: **devicehub.batch\_write.\{deviceID}**.&#x20;

:::hint{type="warning"}
**Important**:

- Only Gen 2 drivers can use batch write topics. See the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr) to review available Gen 2 drivers.&#x20;
- This is only available for devices that don't select th&#x65;**&#x20;Enable Alias Topics** check box in the device configuration. You must use tags in the raw topic format. See [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and [Manage Devices](docId\:p4VpVE-BxtLSJqn37yROr) for more information.&#x20;
:::

### Example of a Batch Write Topic

`devicehub.batch_write.710B913B-B915-4450-9122-8D57E803499B`

## Poll-Once Topics&#x20;

Poll-once topics can be used to trigger a poll to a tag for data in the following topic formats:

- If raw topics are enabled: **devicehub.pollonce.\{deviceID}.\{tagID}**
- If alias topics are enabled: **devicehub.pollonce.\{deviceName}.\{tagName}**

When a poll-once topic is triggered by a message, Litmus Edge will get data for that tag and publish a message to the raw or alias topic for that tag.

### Example of a Poll-Once Topic

`devicehub.pollonce.F7F72687-2F29-46E7-95E2-B5532471EBAA.2d7473c0-83a0-4174-83cc-b48a63c1b1cf`

## Topic Formats

The following table summarizes the types of device-level and tag-level topics, either with or without aliases. You have the option of using raw topics or alias topics.&#x20;



| **Category** | **Topics**                                    | **Notes**                                                                                                                            |
| ------------ | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| Device       | devicehub.plcstatus.\{DeviceID}               | Subscription to a device status                                                                                                      |
| Device       | devicehub.manage.\{DeviceID}                  | To START/STOP the device's CONNECTION                                                                                                |
| Device       | devicehub.raw.\{DeviceID}.>                   | Publish/Subscribe to all data from a specific Device. The ">" character represents a wildcard.                                       |
| Device       | devicehub.plcstatus.\{DeviceName}             | To monitor the device's CONNECTION/DISCONNECTION status with Alias topics enabled                                                    |
| Device       | devicehub.manage.\{DeviceName}                | To START/STOP the device CONNECTION with Alias topics enabled                                                                        |
| Device       | devicehub.alias.\{DeviceName}.>               | A wildcard to receive messages from all tags added to the device with Alias topics enabled. The ">" character represents a wildcard. |
| Device       | devicehub.batch\_write.\{DeviceID}            | Send multiple write requests simultaneously                                                                                          |
| Tag          | devicehub.pollonce.\{DeviceID}.\{TagID}       | Trigger this topic to get data from a tag one time                                                                                   |
| Tag          | devicehub.pollonce.\{DeviceName}.\{TagName}   | To receive data from a poll-once raw topic with Alias topics enabled                                                                 |
| Tag          | devicehub.raw.\{DeviceID}.\{TagID}            | To receive data in raw format                                                                                                        |
| Tag          | devicehub.write.\{DeviceID}.\{TagID}          | To write data                                                                                                                        |
| Tag          | devicehub.alias.\{DeviceName}.\{TagName}      | To receive data in raw format with Alias topics enabled&#xD;&#xA;&#xD;                                                               |
| Tag          | devicehub.write.\{DeviceName}.\{TagName}&#xD; | To write data with Alias topics enabled&#xD;&#xA;&#xD;                                                                               |
| Events       | system.events                                 | Subscription to all system events                                                                                                    |


[title] Browse Tags
[path] Product Features/DeviceHub/Tags/Search for Pre-defined Device Tags/

The *Browse Tags* functionality allows you to search, select, and download selected tags available for a device.&#x20;

Devices that support searching for device tags display a tag icon in the top-right corner of the device card.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/R1a_I7-JJ7u8wECqagmeS_image.png" size="60" width="419" height="343" position="center" caption="Browse tag option shown for a device " showCaption="true"}

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

- Make sure the device you are searching has a status of CONNECTED in DeviceHub. The pre-defined device tags in the [Roc800 Ethernet](docId\:d-NMpfVCcXTbxZF5p-H8Y) driver are hard-coded in the device, so it doesn't need to be connected to browse tags.&#x20;
- When browsing for tags with the BacnetIP driver, only tags with the property of **Present\_Value** will be identified.&#x20;
:::

# Interactive Demo

:::Iframe{iframeHeight="0" code="<iframe src=&#x22;https://litmusio.navattic.com/071072l&#x22; style=&#x22;border:none;width:820px;height:500px;padding-right: 1em;&#x22; allow=&#x22;fullscreen&#x22;></iframe>"}

:::

# Browse for Tags

1. From the *Tags&#x20;*&#x70;ane, click the **Add&#x20;**&#x69;con, and then select **Browse Tags**.
   The *Browse Tags* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x7XuDdXBHQOM_HB0-zRGj_h6cjjwrel85lnvjefhxfbrowse-tags.png)
2. Select a device from the **Select Device** drop-down list.&#x20;
   The Tags List drops down in the *Browse Tags* dialog box.
3. Select tags to add to the DeviceHub device and click **Add**.&#x20;



Refer to the following tasks you can complete from the *Browse Tags* dialog box.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zItW0cpsZnSp_dhLnykUk_image.png "Browse Tags dialog box")

\[1] **Search tags**

\[2] **Expand all**

\[3] **Collapse all**

\[4] **Select all**

\[5] **Clear selection**

\[6] **Reload device tags**

\[7] **Download tags as CSV**


[title] Create a Flow
[path] Product Features/Flows Manager/

You can create flows by navigating to the **Flows Manager**.&#x20;

See [Flows Guides](docId\:Gio8gobgZIW3WZxt9QAWR) to learn more about leveraging Flows functionality.&#x20;

# Step 1: Select a Flows Manager

:::hint{type="info"}
**Note**: For Litmus Edge version 3.11.0 and later, you can create a total of 16 Flows Managers. For earlier versions, you can create a total of four.&#x20;
:::

By default, the *flow-1* Flows Manager is created with the status of `RUNNING`. You can control the status of the flow by clicking **Start Flow** and **Stop Flow**. See [Manage a Flows Manager](docId\:OPLiUxbWehjB1orbsnQe5) to learn more.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HBxCojGrjRY5PWDMleOHO_image.png "Status management icon for a Flows Manager")

If you'd like to organize your flows and store them in multiple Flows Managers, you can follow the steps below and create additional Flows Managers. If you are selecting an existing Flows Manager, proceed to Step 2. &#x20;

**To create a Flows Manager:**

1. Navigate to **Flows Manager**.
   The *Overview&#x20;*&#x70;ane appears.&#x20;
2. From the *Overview&#x20;*&#x70;ane, click **Add Flow**.&#x20;
   The *Create Flow* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Fa34mv1FnBu-NEPdpe5hc_addflowbutton.png" size="80" width="1910" height="278" position="center" caption="Add Flow button" showCaption="true"}
3. Enter a name.&#x20;
4. Select the memory limit for the flow manager. You have the following options:
   - 256 MB
   - 512 MB
   - 1024 MB
   - 2048 MB
   - 4096 MB
5. Click **Create Flow**.&#x20;
   The Flows Manager is created.&#x20;

# Step 2: Create Individual Flow

After creating the Flows Manager, you can open the flow canvas to create individual flows.&#x20;

**To create an individual flow:**

1. For the flow manager you want to use, click the **Go To Flow Definition** icon.&#x20;
   The flow canvas opens in a new browser tab.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kXh4sc3s7gKYzewaP09UU_gotoflowdefinitionicon.png "Go To Flow Definition icon")
2. Drag and drop nodes onto the canvas.
3. To connect nodes, hover over a node's gray dot until it changes color, and then drag the connector to another node's gray dot until it changes color.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-rUTXiKiCqxiWNjozIRDE_connectnodes.png" size="80" width="886" height="456" caption=" A node connection" position="center" showCaption="true"}

# Step 3: Configure Connector Nodes

If you are creating a flow for the first time in a Flows Manager, you will need to configure a connection to the connector nodes.&#x20;

**To configure the Connector Nodes:**

1. If you have a connector node on the flow canvas (such as Datahub Subscribe, Datahub Publish, MySQL, and MongoDB), double-click the node.&#x20;
   The edit node dialog box appears.&#x20;
2. In the first field in the *Properties&#x20;*&#x74;ab, click the **Edit&#x20;**&#x69;con. &#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tkERuarFt3Eg-YJUMTW9l_editconnection.png" size="60" width="512" height="292" caption="Edit icon for configuring connection" position="center" showCaption="true"}
3. Review the fields for configuring the connection and make any necessary updates.&#x20;
4. Click **Add**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yYQN_aDIiTtlXSyHRs_-E_addbutton.png" size="60" width="508" height="242" caption="Add button" position="center" showCaption="true"}
5. In the edit node dialog box, click **Done**.&#x20;
6. Click **Deploy**.&#x20;


[title] Manage Models
[path] Product Features/Digital Twins/

:::hint{type="info"}
**Notes**:&#x20;

- The Digital Twins feature is available for Litmus Edge version 3.3.1 and later.&#x20;
- To access the Digital Twins feature, you need a Scale or Growth Litmus license.&#x20;
:::

After you create models, you can navigate to **Digital Twins&#x20;**> **Models&#x20;**&#x74;o manage them.&#x20;

# Change Model View

Click the icons for **Show devices grid** or **Show devices table** to change how you view your models.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/v7921AaBj4o4XbqcJzAL6_image.png "Change model view icons")

# Filter and Search Models

Use the search bar to search by model name.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/S8kyvZIqFXImm4x_gU9M6_image.png "Model search bar")

# Manage Individual Models

From the *Show devices grid* view, you can use model tiles to access management options. Refer to the image and callouts below.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/74SjVVg_uCUa04MBZSAzA_image.png "Manage individual model icons")

\[1]**&#x20;Export**: A `<model name>.json` file downloads to your hard drive.&#x20;

\[2] **Clone**: Update the cloned model name and description as required and click **Update**.&#x20;

\[3]**&#x20;Edit**: Update the model parameters as required and click **Update**.&#x20;

:::hint{type="warning"}
**Important**: For Litmus Edge version 3.5.6 and earlier, no changes are allowed to a model after creating an instance for the model. For Litmus Edge version 3.11.0 and later, you have the option to update models with instances and select which instances to update as well. If an instance is updated based on changes made to the model, then it will be automatically disabled. You will need to manually enable the instance after updating it.&#x20;
:::

\[4]**&#x20;Delete**: Remove the model.&#x20;

# Manage Model Parameters

You can click the Model tile (grid view) or Model name (table view) to view the model details. See the *Step 2: Configure Model* section from [Create and Import Models](docId:7bHtECK6btdKqfFmA1TqA) for details on updating the parameters. &#x20;


[title] Manage Database Users
[path] Product Features/DataHub/DB Users/

:::hint{type="info"}
**Note**: For Litmus Edge version 3.5.2, 3.5.3, 3.5.5, and 3.5.6, DB Users options are related to internal databases configured in **DataHub (Legacy)**.&#x20;
:::

You can manage database users by navigating to **DataHub&#x20;**>**&#x20;DB Users**.&#x20;

# Search for a Database User

You can search for a database user in the DB Users pane.

**To search for a database user:**

1. Navigate to **DataHub***&#x20;>&#x20;***DB Users**.&#x20;
2. Click the **Show filter** icon.
   The search bar appears.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PLkidQoKFeVbJed3fmbet_sfu0egevkx1qwhmmvikcgimage.png "Show filter icon")
3. Enter the search terms in the search bar.&#x20;
   The selections narrow as you type.

# Manage Database Users

You can manage individual database users.

**To manage database users:**

1. Navigate to **DataHub***&#x20;>&#x20;***DB Users**.
2. Click the **Action menu&#x20;**&#x66;or the user.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x_s56VqzCKJlymqysuhsd_o5ndiznqybnwt0tigfurimage.png "Action menu for DataHub users")
3. Select an option for the user.
   - **Reset password**
   - **Delete User**: The user and all their privileges will be removed.&#x20;
   - **Add Privilege**: If the user is already assigned with a privilege, adding a new privilege will not combine privileges. The new added privilege will replace the previous one.&#x20;

# Remove a Database User Privilege

You can remove an existing database privilege by clicking **X&#x20;**&#x6E;ext to the privilege you want to remove.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WPZNFosjwdD6EUrpIMqH9_image.png" size="80" width="1907" height="436" caption="The remove privilege icon" position="center" showCaption="true"}


[title] Analytics Flows and Processors
[path] Product Features/Analytics/

Analytics flows are used to collect data, process that data, and then export that data to your individual configurations.&#x20;

Flows are made up of processors and require at least one input processor, one function processor, and one output processor. See [Input Processors](docId\:Dn4L8eXT2AetioGW06aUK) and [Output Processors](docId\:fhCwpw99glTs_ajdf7WXl) for details.&#x20;

To create an entire flow at once, see [Create an Analytics Flow](docId\:XNeTldW_xYRNSnYTLP3h-). To add an individual processor to the Analytics canvas, see [Add Processors and Processor Connections](docId\:s6dMQkyHmZvJF7sj8-UYw).&#x20;

# Next Steps

- [Create an Analytics Flow](docId\:XNeTldW_xYRNSnYTLP3h-)&#x20;
- [Add Processors and Processor Connections](docId\:s6dMQkyHmZvJF7sj8-UYw)&#x20;
- [Manage Processors and Analytics Flows](docId\:exEMunifUlmNIucviFRsL)&#x20;


[title] Connect a Device
[path] Product Features/DeviceHub/Devices/

You can connect devices by navigating to **DeviceHub&#x20;**> **Devices**.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/zUMQYuGHHZs?si=Lqx-f9mrRVf0BU2i&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Before You Begin

Make sure you configure the physical device and collect the appropriate connection parameters. Refer to the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr) and locate your device for specific instructions.&#x20;

# Step 1: Select Device to Connect

You will first need to select the device type you want to connect and enter a name and description.&#x20;

**To connect a device:**

1. From the *DeviceHub&#x20;*&#x70;ane, click the **Connect a Device** box.&#x20;
   The *Connect Device&#x20;*&#x64;ialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/oSZM3kzzeLi-lItO0BMLO_connectdevice.png" size="80" width="1046" height="528" caption="Connect a Device box" position="center" darkWidth="1046" darkHeight="528" showCaption="true" indent="2"}

2. Click the **Device Type** drop-down list and select a Device Type from the list.
3. Click the **Driver Name** drop-down list, and select a Driver Name from the list.
4. Enter a name and description for the device. The name can have numbers, uppercase and lowercase characters, and special characters. It can't start or end with whitespaces.&#x20;

# Step 2: Define Device-Specific Parameters

Depending on the type of device you are connecting, you will need to define specific parameters.&#x20;

Refer to the following resources for information on specific drivers and how-to guides:

- [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr)
- [DeviceHub Use Cases](docId\:n1PHFmqvS8LL8DAngvS3W)&#x20;
- [Gen1 and Gen2 Driver Differences](docId:-9115fVEfZe7BsO1p2lTd)

:::hint{type="warning"}
**Important**: If you are connecting a device with a serial connection and using an RS232 to USB adapter, only those with FTDI chips are recommended. Other adapters are not validated or recommended. If Litmus Edge doesn't have the driver for the adapter you are using, you will not be able to install it separately.
:::

### Device Discovery Tool

Depending on the device and driver you select, you may have the option of using the [Device Discovery Tool](docId\:N9jtAdKuUXNU_YNhq87x4), which searches for devices and pre-fills network parameters to connect the device to Litmus Edge.&#x20;

Refer to the table below for the required and optional parameters for device types.&#x20;

| **Device Type**           | **Required and Optional Parameters**                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Ethernet device&#xA;&#xA; | - **Network Address:** Enter a network address. This is the IP address for the device.&#x20;
- **Network Port:** Enter a network port.&#x20;
- **Slot Number&#x20;**(Optional): Enter a value that indicates the position of the CPU located in a slot.&#x20;                                                                                                                                                            |
| Serial device&#xA;&#xA;   | * **Communication Port:&#x20;**&#x45;nter up to three characters, and then select an available port.
* **Baud Rate** (Optional): Enter a value.&#x20;
* **Data Bits**: Enter a value.
* **Parity&#x20;**(Optional): Select a value from the drop-down list.&#x20;
* **Slot Number** (Optional): Enter a value that indicates the position of the CPU located in a slot.
* **Stop Bits** (Optional): Enter a value.&#x20; |
| CAN device&#xA;&#xA;      | - **Channel:** Make sure that there is a can bus module already available as a part of the hardware by checking that there is a value in the field.
- **Bit Rate:** Enter a value.&#x20;                                                                                                                                                                                                                                 |
| File-based device&#xA;    | * **Path:** Enter the shared path.
* **Min Req Number** (Optional): Enter a value.&#x20;
* **Max Req Number** (Optional): Enter a value.&#x20;                                                                                                                                                                                                                                                                           |

# Step 3: Define Optional Parameters

You can select optional parameters for your device connection.&#x20;

## Meta Data

The *Meta Data&#x20;*&#x6F;ption summarizes basic information about data. It enables you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::

See [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ) to learn more.&#x20;

If you select the **Meta Data&#x20;**&#x63;heckbox, the section expands with parameters to complete. By default, the list of Meta Data key-value pairs displays *No records defined*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6FaLUzMqRl6yuFKKNHm4U_image.png" size="80" width="1136" height="732" caption="The Meta Data section" position="center" showCaption="true"}

**To define meta tags:**

1. In the *Key&#x20;*&#x66;ield, enter the meta tag key.&#x20;
2. In the *Value&#x20;*&#x66;ield, enter the meta tag value.&#x20;
3. Click **+ Add**.&#x20;
4. Continue adding key-value pairs you want to add.&#x20;

## Status Register

The *Status Register* option allows you to define a register for keeping track of the device status (either connected or disconnected).&#x20;

See [Use the Status Register to Connect a PLC](docId\:hVN0HI-9IFGljk0qi5GEm) to learn more.

If you select the **Status Register** check box, the section expands. The parameters to configure depend on the specific device and tag parameters. See the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr) and refer to the *Tag Parameters* section for the device you are configuring.&#x20;

As long as the above register responds to polling by DeviceHub, the device appears in the UI as&#x20;*Connected*, regardless of the status of any other tags added to that device.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Y8JXAnbIy88ABzLTieTZn_image.png" size="80" width="1164" height="772" caption="The Status Register section" position="center" showCaption="true"}

## Publish on Polling Interval

:::hint{type="info"}
**Notes**:&#x20;

- This option is available for Litmus Edge version 3.11.0 and later.&#x20;
- This option is only available for Gen 2 drivers.&#x20;
:::

- If this option is selected, the driver will always publish messages according to the polling interval configuration. If the driver has not completed the request to read the data at a polling interval, the payload will have a `success=false` message.&#x20;
- If this option is not selected, the driver will not publish a message at the polling interval if the request to read data has not completed.&#x20;

## Watchdog

:::hint{type="info"}
**Notes**:&#x20;

- This option is available for Litmus Edge version 3.11.0 and later.&#x20;
- This option is not available for all drivers. For example, drivers that act as servers don't have this option, such as Industrial OT Server and OSI Agent.&#x20;
:::

If this option is selected, the driver will be monitored based on the Watchdog period (in seconds) you configure. If an issue is detected, then the driver will restart. &#x20;

## Enable Alias Topics

The *Enable alias topics* option allows you to substitute long, unreadable device and tag IDs with human-readable device and tag names in topic names. See [Default Topics and Descriptions](docId:8U4c20-xGyzkJRP24GEvM) for more information.&#x20;

For Litmus Edge version 3.5.2 and later, the **Enable alias topics** check box is selected by default.  &#x20;

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

- When you enable alias topics, DeviceHub stops publishing to raw topics and publishes only to alias topics.
- Litmus Edge substitutes all special characters in aliases with "\_" (underscore).
- When alias topics are enabled for a device, you can't use batch write topics. To use batch write topics, you must not select the **Enable alias topics** check box in the device configuration. See [Default Topics and Descriptions](docId:8U4c20-xGyzkJRP24GEvM) for more information.&#x20;
:::

## Enable Data Store

The Enable Data Store option allows you to define how long you want to store data locally.&#x20;

To enable this option, select the **Enable Data Store** check box, and then define the number of hours in the **Retention Hours** field. &#x20;

After creating the device, a data store icon appears in the top-right corner of the device tile.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N7_pDCKBhSYHHCzIRc_s9_image.png" size="60" width="428" height="328" caption="The Enable Data Store icon" position="center" showCaption="true"}

## Enable Logging

:::hint{type="info"}
**Note**:&#x20;

- The Logs feature is available for Litmus Edge version 3.5.2 and later.&#x20;
- If you download a file a logs, the file will have a maximum of 50 entries.&#x20;
:::

The Enable Logging option is available only for Gen 2 drivers. Once you connect the device, click the device tile and select the **Logs&#x20;**&#x74;ab to view the log.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_SicUYZ2w2QIIAmXkVPNV_image.png" size="80" width="1294" height="569" caption="Logs tab" position="center" showCaption="true"}

# Step 4: Create Device

When done defining the new device, click **Add Device**. A tile for the new device appears in the *Devices&#x20;*&#x70;ane. A green **CONNECTED** indicator means that a connection to the device has been established. You can stop a device to disconnect it.&#x20;

If you have connectivity issues, see [Device Connectivity Issues](docId\:cEy2HVJQ2J6nOkUsBSqDs) for troubleshooting information.&#x20;

[title] DB Users
[path] Product Features/DataHub/

:::hint{type="info"}
**Note**: For Litmus Edge version 3.5.2, 3.5.3, 3.5.5, and 3.5.6, DB Users options are related to internal databases configured in **DataHub (Legacy)**.&#x20;
:::

The *DB Users* pane is used:

- For role-based access control to the `tsdata` database
- To create new users
- To define `READ`, `WRITE`, and `ALL` access to the database

:::hint{type="warning"}
**Important**: InfluxDB uses **admin**, **user**, and **observer&#x20;**&#x61;s default users. Therefore, you cannot use these user names when creating a new user.
:::

# Access DataHub DB Users UI

You can access the *DB Users&#x20;*&#x55;I from the *DataHub*.&#x20;

**To access DB Users:**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **DataHub&#x20;**>**&#x20;DB Users**.
   The *DB Users* pane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fWOlsJK-YxrIkTk3AS59o_image.png" size="80" width="1040" height="444" position="center" showCaption="false"}

# Next Steps

- [Add Database Users](docId\:Mcfas9grEuoCloQQnThpg)&#x20;
- [Manage Database Users](docId:67QyZA2y5iKQlBbzG33zD)&#x20;


[title] Dashboard Links
[path] Product Features/Flows Manager/Flow Canvas Dashboard/

Links are used for navigation purposes in the dashboard. You can use links to navigate between tabs in your dashboard or to navigate to a specific website.

For example, you can add a link to an outside website that displays more information about node flows such as [Node-RED](https://flows.nodered.org/).

# Navigate to the Dashboard Layout tab

You can add, modify and remove dashboard links from the Dashboard Layout tab.

**To navigate to the Dashboard Layout tab:**

1. From the Navigation panel, selec&#x74;**&#xA0;Flows Manager.**
2. Click the Expand icon next to a selected Flow.
3. Click the Menu icon, select **View&#x20;**> **Dashboard**, and then drag the **Sidebar&#xA0;**&#x75;p from the bottom of the canvas.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/D_hIaJnsuxHnBXRyMBpAC_image.png "The Dashboard Layout tab")

# Add a Dashboard Link

You can add a dashboard tab from the Dashboard Layout tab.

**To add a dashboard tab:**

1. Navigate to the Dashboard Layout tab for the Flow you wish to work in. From the *Tabs & Links* box, click **+ Link**.
   The link appears in the Tabs & Links box.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/F23MQQmYLjtsYlFM-5uev_bgdzxtutnpzmjx0m0rz2023-09-0810-44-15.png)
2. Click **Deploy**.

# Modify a Dashboard Link

You can add the link URL in the dashboard, select the navigation, and select a specific Flow or all Flows for which to apply the changes from the Dashboard Layout tab.

**To modify a dashboard link:**

1. Navigate to the Dashboard Layout tab for the Flow you wish to work in.
2. Hover over a link in the Tabs & Links box and click **Edit**.
   The *Edit link node* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/L3XqaYL-068Kk9LLQazIL_2023-09-0811-30-44.png "Edit button (hover to view)")
3. From the *Edit link node* dialog box, do the following:
   - Enter a URL for the link in the **Link&#xA0;**&#x66;ield.
   - Select an option from the **Open in&#xA0;**&#x73;ection.
   - Select an option from the Flows drop-down list.
   - Click **Update**.
4. Click **Deploy**.

# Remove a Dashboard Link

You can remove a link in the dashboard from the Dashboard Layout tab.

**To remove a dashboard link:**

1. Navigate to the Dashboard Layout tab for the Flow you wish to work in.
2. Hover over a link and click **Edit**.
   Th&#x65;*&#x20;Edit link node* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aDxCg78Ck3_ozGu-3qeIt_2023-09-0811-38-45.png" size="80" width="764" height="614" position="center" showCaption="false"}
3. Click **Delete**.
4. Click **Deploy**.


[title] Manage a Flows Manager
[path] Product Features/Flows Manager/

You can manage flows managers by navigating to **Flows Manager** >**&#x20;Overview**.&#x20;

# Manage Individual Flows Managers

Refer to the image and callouts below for management options.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JrakYdkN59lwxsjht1AdD_image.png "Management options for flows managers")

\[1] **Flows Manager status**: The Flows Manager can have the following statuses.&#x20;

- **Running**: The flow has been deployed and is currently running as defined.&#x20;
- **Stopped**: The flow has been stopped by the user.&#x20;
- **Warning**: The flow encountered a problem. It has either timed out or is not running as defined.&#x20;

\[2] **Go To Flow Definition**: Opens the flow canvas. See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;

\[3] **Update Memory Limit**: Change the current memory limit. The options are: 256 MB, 512 MB, 1024 MB, 2048 MB, and 4096 MB.&#x20;

\[4] **Start Flow**: Starting a Flows Manager affects all associated individual flows and tabs in the flow canvas.&#x20;

\[5] **Stop Flow**: Stopping a Flows Manager affects all associated individual flows and tabs in the flow canvas.&#x20;

\[6] **Upload Modules**: Refer to the "Upload Modules" section below to learn how to upload a preexisting module or custom modules from an individual flow.&#x20;

\[7] **Download Flow File**: Download all associated flows and tabs for the Flows Manager.&#x20;

\[8] **Download Logs**: Download a log to review the activity of the Flows Manager and troubleshoot issues.&#x20;

\[9] **Remove Flow**: Removing a Flows Manager affects all of the associated tabs and cannot be undone.

# Upload Modules

You can upload a pre-existing module or custom modules from an individual flow.&#x20;

Module files contain a collection of nodes that can be uploaded simultaneously to the Flow canvas.&#x20;

:::hint{type="warning"}
**Important**:&#x20;

- Make sure the module file you upload contains all dependencies.&#x20;
- If your custom node modules are version specific, make sure they work with `nodejs 10.16.3.`
- If custom node modules have any binding or require C/C++ compilation, the upload may not work.
:::

**To upload modules:&#x20;**

1. In your project directory, create a folder named `node_modules`.&#x20;
2. Add the nodes files you want included in the `node_modules` folder.&#x20;
3. Compress the `node_modules` folder into a ZIP file.
   To create the ZIP file, you can right-click the folder in *Windows File Explorer*, and then select **Send to&#x20;**> **Compressed (zipped) folder**. &#x20;
4. In Litmus Edge, navigate to **Flows Manager**.&#x20;
5. Click the **Upload Modules** icon for the flows manager you want to update.&#x20;
6. Select the ZIP file of the folder you compressed and select **Open**.&#x20;
7. After the upload, stop and start the flows manager to implement the changes.&#x20;

If you don't see the expected new nodes after uploading and then stopping/starting, check the flow log to troubleshoot the issue.&#x20;


[title] Configuration Nodes
[path] Product Features/Flows Manager/

- When you select **Configuration Nodes** from the menu, the *Config&#x20;*&#x74;ab opens beneath the canvas to display used and unused nodes.
- When you delete a node from a flow, it may not be deleted from the back end.
- Server-based nodes that require network / connectivity settings, such as MQTT nodes, are found here if they have been deleted from a flow.
- You may want to remove these types of unused nodes from the back-end because they may continue to try connecting to a port and degrade performance.
- Not all deleted nodes appear in the **Config** tab.
- When you save a flow or the entire workspace, a pop-up message notifies you if there are unused nodes.

# Remove Unused Nodes

You can remove unused nodes from a Flows View.

Server-based nodes that require network / connectivity settings, such as MQTT nodes, are found here if they have been deleted from a flow.

**To identify and remove unused nodes:**

1. From the Navigation panel, select **Flows Manager**.
   The *Overview&#x20;*&#x70;ane appears.
2. Click the **Go To Flow Definition** icon next to a selected flow.
   The selected flow view opens in a separate browser tab.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ys0dngOkWx-8g7tDna7Nc_015f6cewiyzca3ktr6jxi1aimage.png "Go To Flow Definition icon")
3. From the Flow view, click the **Menu** icon and select **Configuration nodes**.
   The *config&#x20;*&#x74;ab appears in the sidebar.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fduEchIZANz5UAssQXXsb_02znkxu1yizonwxe9d7nkmvimage.png" size="80" width="1664" height="718" caption="Configuration nodes menu option" position="center" showCaption="true"}
4. Expand the message window beneath the flow.&#x20;
5. Click the **Config** icon.
   The *Config&#x20;*&#x74;ab appears in the sidebar palette.
6. Click **unused**.
   The unused nodes appear for the selected flow. You can also view the unused nodes for all flows.
   Identify unused nodes by the dotted-line border and a 0 for the number of instances.
7. Double-click nodes and click **Delete&#x20;**&#x74;o remove them.&#x20;


[title] Digital Twins
[path] Product Features/

:::hint{type="info"}
**Notes**:&#x20;

- The Digital Twins feature is available for Litmus Edge version 3.3.1 and later.&#x20;
- To access the Digital Twins feature, you need a Scale or Growth Litmus license.&#x20;
:::

The Digital Twins feature allows you to create virtual representations of industrial assets, so that you can monitor, analyze, and optimize the performance of physical objects. Digital Twins are used throughout the product lifecycle to simulate, predict, and optimize the product and production system before investing in physical prototypes and assets.
They are also used to monitor the performance of physical assets in real-time and to optimize operations, so that you can use it for monitoring and maintenance activities such as insights, alerts, and feedback loop.

# Digital Twins User Journeys

When setting up Digital Twins models, you will do the following:

- Configure static attributes that represent the meta information of the Digital Twin.&#x20;
- Configure transformation rules of input data in JSON to the desired JSON format. This format can contain XPath, or it can use $key.&#x20;
- Define the hierarchy of the resulting object.&#x20;
- Optionally, you can import and export the model from a JSON file. You can also clone the model as needed.&#x20;
- While updating the model, keep in mind that the version of the model updates accordingly.&#x20;

When setting up Digital Twins instances, you will do the following:

- Select the time interval to publish data to the message broker. During the interval, values are collected and transformed according the rules configured in the model before publishing.&#x20;
- Update static attribute values as needed.&#x20;
- Set up input topics for dynamic attributes.&#x20;

Once the instance is set up, you can start and stop it as needed. If the model associated with the instance is udpated, you will have to manually upgrade the instance as needed with the updated configuration of the model.&#x20;

# Digital Twins Models

Models are the data structures for Digital Twin instances. You can configure the following parameters in a model.

- **Attributes**: Models store the dynamic and static attributes that will be used by instances for identification and data collection.
  - **Dynamic attributes**: Variable data for the model. For example, Temperature, Vibration, and Downtime.&#x20;
  - **Static attributes**: Metadata of the model. For example, Device ID, Serial, and Model.&#x20;
- **Transformations**: You can transform the data collected in instances by converting raw JSON data to a desired format by defining the JSON-based schema.&#x20;
- **Hierarchy**: Provides a logical representation of dynamic and static attributes. You can drag and drop attributes into the hierarchy as needed and add folders to create a custom data structure.&#x20;

# Digital Twins Instances

Instances are the physical objects that contain static and dynamic data from different sources. Every instance has to be associated with a model. The attributes configured in the model determine the data that will be collected by the instance.&#x20;

Every instance generates a new data topic that is published to the internal message broker. This data topic can be leveraged within Litmus Edge.&#x20;

You can configure instances by doing the following:

- Modify the configurations of static attributes in the instance.&#x20;
- Map one-to-one relationships with data topics and dynamic attributes by configuring topic names for dynamic attributes in the instance.&#x20;
- Use the *Data Access* tab to view real-time data.&#x20;
- Send instance data to northbound integrations by referring to the Data Access topic name.&#x20;

# Digital Twins How-To Guide

See [Use Digital Twins to Contextualize Data](docId\:QtojjkM-sj2wJ4jlQV_ku) to review how to leverage Digital Twins.&#x20;

# Access Digital Twins UI

**To access Digital Twins:**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Digital Twins**.
   The *Models&#x20;*&#x70;ane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/E-epMowGO9BvS7Rxt8Y97_image.png" size="80" width="1266" height="482" caption="The Models pane" position="center" darkWidth="1266" darkHeight="482" showCaption="true"}

# Next Steps

- [Create and Import Models](docId:7bHtECK6btdKqfFmA1TqA)&#x20;
- [Manage Models](docId\:iyo7vh_IQ1LA5Q--MnRvO)&#x20;
- [Add an Instance](docId\:heaqsUA7YTEWvF_6dE-Ks)&#x20;
- [Manage Instances](docId:4Wlnq56nAAmkzMkcaAW7D)&#x20;
- [Use Digital Twins to Contextualize Data](docId\:QtojjkM-sj2wJ4jlQV_ku)


[title] Create Flow Groups
[path] Product Features/Analytics/Analytics Flow Groups/

You can create Flow Groups by navigating to **Analytics&#x20;**>**&#x20;Instances**. Groups serve as containers for analytics flows. A group can contain a single flow or multiple flows, typically related to each other in some way.

:::hint{type="info"}
**Note**: An empty group cannot be deleted from the list of available groups. The only way to delete empty groups is to do a system reboot.
:::

**To create a flow group:**

1. Navigate to **Analytics&#x20;***>&#x20;***Instances**.&#x20;
   The *Instances&#x20;*&#x70;ane appears.&#x20;
2. Click the **Create group** icon.&#x20;
   The *Create Group&#x20;*&#x64;ialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/v11fNBV-76QUHCq_2FUqC_creategroupicon.png" size="80" width="867" height="458" caption="Create group icon" position="center" showCaption="true"}
3. Enter a group name and click **Create**.&#x20;

You can then select the appropriate flow group from the drop-down list.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ghUpYODBP3aXuRhwf__9r_image.png" size="80" width="867" height="458" caption="Flow group drop-down list" position="center" showCaption="true"}


[title] Analytics
[path] Product Features/

You can use the *Analytics&#x20;*&#x6D;odule to create and manage analytics flows. Analytics flows enable you to process and analyze data at the edge.&#x20;

A flow includes a series of connected processors, using at least one of the following types:&#x20;

- **Input**: Retrieves data from a tag/topic, database, or generator. See [Input Processors](docId\:Dn4L8eXT2AetioGW06aUK) for details.&#x20;
- **Function**: Processes the input data using built-in:
  - KPIs (Key Performance Indicators). See [Key Performance Indicators](docId\:WvpJmqBuN9WRvRwYTOSyT) for details.
  - Statistical functions. See [Statistical Functions](docId\:Jsq5lKsygy7rp3mGQkDIx) for details.
- **Output**: Writes the function results to a tag/topic or database. See [Output Processors](docId\:fhCwpw99glTs_ajdf7WXl) for details.&#x20;

See [Create an Analytics Flow](docId\:XNeTldW_xYRNSnYTLP3h-) and [Add Processors and Processor Connections](docId\:s6dMQkyHmZvJF7sj8-UYw) to learn more.&#x20;

:::hint{type="warning"}
**Important**: You may see the following error message when working with Analytics: `"Http failure response for /analytics/v2/version: 0 Unknown Error"`. If you see this message, disable any ad-blockers your browser may have.
:::

You can build a flow manually by adding processors and then connecting them with one of the following connection types.

- **Events** (individual data source): Used for both input/function and function/output connections. Makes the receiving processor react to each individual data value immediately.
- **Values** (combined data sources): Used only for input/function connections. Makes the function processor wait for values from all of the combined data sources before reacting. For example, if the function processor compares values from input processors A and B, it will wait for a value from both A and B before performing the comparison.&#x20;

You can also add a flow in a more automated way. See [Create an Analytics Flow](docId\:XNeTldW_xYRNSnYTLP3h-)&#x20;for details.&#x20;



The Analytics module also enables you to use Machine Learning models for prediction, classification, and anomaly detection. You can create and save a model from [TensorFlow](https://www.tensorflow.org/guide/saved_model). A saved model contains a complete TensorFlow program, including weights and computation.

The Analytics UI includes the following panes:

- **Instances**, where you can:
  - Create and manage processors and flows
  - View th&#x65;**&#x20;Debug&#x20;**&#x70;anel
  - Organize your flows into groups
- **Instances Table**, where you get tabular view of Instance flows created
- **Models**, where you upload and remove models.

# Analytics Guides

Review [Analytics Guides](docId\:O9EkCXH-d9DmHjOaru_2B) to see how to leverage different analytics capabilities and functions.&#x20;

# Access Analytics UI

**To access Analytics:**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Analytics**.
   The *Analytics&#x20;*&#x63;anvas appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HZz2JRKNBS0FCLHAc-7Mz_image.png" size="80" width="910" height="416" caption="Analytics canvas" position="center" showCaption="true"}

# Next Steps

- [Analytics Guides](docId\:O9EkCXH-d9DmHjOaru_2B)
- [Analytics Flows and Processors](docId\:biFPRuL6fGG7vC9VNeZv8)&#x20;
- [Analytics Flow Groups](docId:_RtUEywCdLSEUVoA6oSJm)&#x20;
- [Instances Table](docId:83YMHOFFlWBhqifSo7rjb)&#x20;
- [Machine Learning Models](docId:_4NC2jGJUk5HRWy6zTlrt)&#x20;
- [Input Processors](docId\:Dn4L8eXT2AetioGW06aUK)&#x20;
- [Output Processors](docId\:fhCwpw99glTs_ajdf7WXl)&#x20;
- [Statistical Functions](docId\:Jsq5lKsygy7rp3mGQkDIx)&#x20;
- [Key Performance Indicators](docId\:WvpJmqBuN9WRvRwYTOSyT)&#x20;


[title] Flows Manager
[path] Product Features/

The Flows Manager module allows you to connect to your devices and configure the output so you can better visualize how the device is operating. The connection to your device can be both incoming and outgoing, allowing you to affect the device. For example, you can start and stop a device from a flow, write to a topic, or trigger events.

:::hint{type="info"}
**Note**: The Flows are based on [Node-RED](https://nodered.org/), which is a visual programming tool. It displays relations and functions visually, and allows you to program without having to type in code. Node-RED allows you to create JavaScript functions.
:::

Flows and subflows consist of separate canvases located in tabs within the *Flow&#x20;*&#x76;iew, which you can use to perform operations that are useful when processing collected data.

Flows allow you to:

- Collect data from devices in DeviceHub, databases, enterprises systems, and various file types.
- Process, filter, and analyze data while implementing JavaScript logic, adding functions, and including rules and alerts for event processing.
- Create flow templates and deploy them to multiple edge devices using Litmus Edge Manager.
- Start, stop, and delete multiple flows (up to four).
- Update the memory limit, upload custom node modules, download a `flow.json` file, and download the logs for a flow.
- Add new flows up to the maximum allowed memory.
- Include flows in backup/restore and template.
- Set up a dashboard to organize and better visualize your flows.

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/xTXsg64aQ-M?si=x8f2UDTAlut2uQfK&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Flow Logs

- For Litmus Edge version 3.5.6 and earlier, flow logs have no maximum size. You will need to manually manage/delete these files as needed.&#x20;
- For Litmus Edge version 3.11.0 and later, flow logs have a maximum size of 80 MB, rotated between two log files of 40 MB each. &#x20;

# Access Flows Manager UI

**To access the Flows Manager:**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Flows Manager**.&#x20;
   The *Overview&#x20;*&#x70;ane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CI_xPEPN0s3auwoqaXF7G_flowsoverview.png" size="80" width="939" height="520" caption="Flows Manager pane" position="center" showCaption="true" indent="2"}

# Next Steps

- [Create a Flow](docId:7x0n7C4DxswTD61vpIBza)&#x20;
- [Manage a Flows Manager](docId\:OPLiUxbWehjB1orbsnQe5)&#x20;
- [Manage the Flow Canvas](docId\:qQnwjDagEcrDG0JtIVulu)&#x20;
- [Flow Canvas Dashboard](docId\:nswvolt9L1tMBypLDAHB3)
- [Function Nodes](docId\:um1r2CsZniKVz39bZFtBz)&#x20;
- [Configuration Nodes](docId\:Zflfrkclk5hJg1isNsmEt)
- [Flows Guides](docId\:Gio8gobgZIW3WZxt9QAWR)


[title] Analytics Flow Groups
[path] Product Features/Analytics/

Analytics Flow Groups serve as containers for analytics flows. A group can contain a single flow or multiple flows, typically related to each other in some way.

## Next Steps

- [Create Flow Groups](docId:8FKqmA49TwWoMRvEit1Yh)&#x20;
- [Manage Flow Groups](docId:6MS4OIDpivHq0Ro1638OK)&#x20;


[title] DeviceHub
[path] Product Features/

# Overview

The DeviceHub module allows you to connect devices to Litmus Edge, as well as add register values as tags for data polling. DeviceHub can work with devices by most major manufacturers, such as Siemens, Allen Bradley, Hitachi, and so on. It includes device-specific drivers (serial, Ethernet, Socketcan, and file-based). For complete information about the supported devices/drivers, see the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr).

# DeviceHub High-Level Architecture&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/Q116WJTAr1sefeVNvMCF9-c5MbA3Ij9nE_exwiI541h-20240807-163522.png)

The above diagram represents an example of the DeviceHub feature in Litmus Edge by offering Drivers that form a two-way connection with PLC hardware devices. Drivers collect register information from PLC devices (and other industrial assets). The specific register of each unique PLC is recognized as Litmus Edge tags. Register information is stored in tags, and these tags are published as topics to the internal Message Broker. You have the option of saving data in the internal Datastore by selecting the *Enable Data Store* option with a specific retention time.&#x20;

Once you have added a tag to a connected device, Litmus Edge polls that tag for data with the frequency you selected. The system normalizes the polled data and posts it to the internal Message Broker. You can then subscribe to the data available from the Message Broker for processing, visualization, and analysis.

You can access the DeviceHub module by selecting DeviceHub from the navigation panel. Refer to the following resources.&#x20;

- ****[Devices](docId\:EV3UOz6GXwqVb7ydRX7BL)**:&#x20;**&#x41;dd/connect devices to Litmus Edge. Manage the connected devices with actions such as edit, refresh, and stop/start. Optionally, add custom metadata to devices in the form of key/value pairs.
- ****[Tags](docId\:A22RMVCu87M0HSXG950hl)**:&#xA0;**&#x41;dd tags individually, in bulk, or by browsing a connected device. Manage tags with actions such as modify, view, and copy.
- [Device Discovery (Network)](docId\:GbtjgJSwuYIuPrFG4_hI-): Enable/disable the discovery mode. When discovery mode is enabled, Litmus Edge allows you to view devices on the network it is connected to.
- ****[Utilities](docId\:LP10mjSsvM3JITkSt1v3f)**:** Test connectivity of IP addresses and accessibility of specific ports.
- [DeviceHub Guides](docId\:n1PHFmqvS8LL8DAngvS3W): Review how-to-guides to leverage different functionalities within DeviceHub.&#x20;
- [DeviceHub Troubleshooting](docId\:M8jYFRaXMkKTiJXpc8OTK)


[title] Untitled
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/


[title] SAIA
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC series.

| **PLC Series**                                              | **Compatible Ethernet DeviceHub Drivers**             |
| ----------------------------------------------------------- | ----------------------------------------------------- |
| [SAIA PLC series](https://www.saia-pcd.com/en-gb/products/) | [SAIA Ethernet (Gen1)](docId\:dXPA-9ey8dBLvP0L7zH3G)  |


[title] Sinumerik 808D Serial (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

Review the following information for setting up and configuring the Sinumerik 808D Serial (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items                                                                                                 |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Serial                                                                                                           |
| **Validated devices/series** | [Sinumerik](https://www.siemens.com/global/en/products/automation/systems/cnc-sinumerik/automation-systems.html) |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for serial access, find its parameters. Otherwise, follow the steps below for Toolbox v4.6.

**To configure your device:**&#x20;

1. Note down the following information and refer to it when needed.&#x20;
   **Device**: Siemens 808D Advanced M
   **Communication I/F**: RS232
2. Use D89 pin Female/Female cable and D89 pin Male/USB cable to connect device and PC.
3. Press the **PLC&#x20;**&#x73;oft key.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Knd4B4gOM5_ffP2cLrFwq_sinumerik-808d-serial-plc.png" size="80" width="554" height="436" caption="PLC option" position="center" showCaption="true"}
4. Press the **Step 7 connect&#x20;**&#x73;oft key, select *Baud rate* as **115200**, and then press the **Connect On** soft key.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aJYcBjKmuKz7JP5ifai6m_sinumerik-808d-serial-connect.png" size="80" width="541" height="425" caption="Communication settings screen" position="center" showCaption="true"}

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter              | Value                             |
| ---------------------- | --------------------------------- |
| **Type**               | Siemens                           |
| **Driver**             | Sinumerik 808D Serial (Gen1)      |
| **Communication Port** | Local Serial connection file path |
| **Data Bits**          | 8                                 |
| **Baud Rate**          | 115200                            |
| **Parity**             | Even, Odd, None                   |
| **Stop Bits**          | 1                                 |
| **Station ID**         | 2                                 |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Types**                                  | **Address Format** | **Min Address** | **Max Address** |
| -------- | ------------------------------------------------ | ------------------ | --------------- | --------------- |
| I        | byte, sint, word, int, dword, dint               | DDDDo              | 0               | 40957           |
| Q        | byte, sint, word, int, dword, dint               | DDDDo              | 0               | 40957           |
| I\_bit   | bit                                              | DDDDo              | 0               | 40957           |
| Q\_bit   | bit                                              | DDDDo              | 0               | 40957           |
| M\_Bit   | bit                                              | DDDDo              | 0               | 40957           |
| V\_Bit   | bit                                              | DDDDDDDDo          | 0               | 100000007       |
| S\_Bit   | bit                                              | DDDDo              | 0               | 40957           |
| SM\_Bit  | bit                                              | DDDDo              | 0               | 40957           |
| T\_Bit   | bit                                              | DDDo               | 0               | 2557            |
| C\_Bit   | bit                                              | DDDo               | 0               | 2557            |
| M        | byte, sint, word, int, dword, dint, real         | DDDDD              | 0               | 10239           |
| S        | byte, sint, word, int, dword, dint, real         | DDDDD              | 0               | 10239           |
| SM       | byte, sint, word, int, dword, dint, real         | DDDDD              | 0               | 10239           |
| T        | word                                             | DDD                | 0               | 255             |
| C        | word                                             | DDD                | 0               | 255             |
| V        | byte, sint, word, int, dword, dint, real, string | DDDDD              | 0               | 10000000        |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. Available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. Available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Count**: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values. &#x20;
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value&#x20;*&#x70;arameter changes to a new one value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Siemens TI505 Ethernet (Gen1)
[path] QuickStart Guide/Industrial Systems Connection Guide/Siemens/Gen 1 Drivers/

Review the following information for setting up and configuring the Siemens TI505 Ethernet (Gen1) driver.&#x20;

# Litmus Edge Compatible Series&#x20;

| Compatibility parameter      | Compatible items |
| ---------------------------- | ---------------- |
| **Driver type**              | Ethernet         |
| **Validated devices/series** | TI505            |

To set up and configure this device in Litmus Edge, you will need to do the following:

- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Litmus Edge DeviceHub
- Step 3: Configure the List of Registers

# Step 1: Set up and Configure the PLC Device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use Toolbox v4.6 software to configure your device for Ethernet access.

# Step 2: Set up the PLC Device in Litmus Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:pal6ABPZbrimdU9LvGJ30) with this driver. Update default values to the specific setup of your device.&#x20;

| Parameter           | Value                                    |
| ------------------- | ---------------------------------------- |
| **Type**            | Siemens                                  |
| **Driver**          | Siemens TI505 Ethernet (Gen1)            |
| **Network Address** | The device address you defined in Step 1 |
| **Port**            | 1505                                     |

# Step 3: Configure the List of Registers

When you [Add a Tag](docId\:Tuy-hh0Gi8DjVOT70wRoh) to the connected device, refer to the following register table and tag parameters.

Refer to the following additional resources:

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Tag Formula Variables](docId\:iFBwcou90qTFODK_hRYSR)

## Register Table

| **Name** | **Value Type** | **Address Format** | **Min Address** | **Max Address** |
| -------- | -------------- | ------------------ | --------------- | --------------- |
| CR       | bit            | DDDDD              | 1               | 65536           |
| X        | bit            | DDDDD              | 1               | 65536           |
| Y        | bit            | DDDDD              | 1               | 65536           |
| WX       | word           | DDDDD              | 1               | 65536           |
| WY       | word           | DDDDD              | 1               | 65536           |
| TCC      | word           | DDDDD              | 1               | 65536           |
| TCP      | word           | DDDDD              | 1               | 65536           |
| STW      | word           | DDDDD              | 1               | 65536           |
| V        | word           | DDDDD              | 1               | 65536           |

## Tag Parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.&#x20;
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.&#x20;
- **Polling Interval**: Enter a value in seconds. This determines how often the tag should poll the register for data.
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag. &#x20;
- **Address**: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- **Tag Formula**: Enter a formula for the tag to process the generated data. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).&#x20;
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to only publish NATS messages when the *value&#x20;*&#x70;arameter changes to a new value. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by *Change of Value* settings. These topics will still only see a single message.&#x20;
- **Meta Data**: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.&#x20;

:::hint{type="info"}
**Note**: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b will cause only one key name to be created (a\_\_b).&#x20;
:::


[title] Yokogawa
[path] QuickStart Guide/Industrial Systems Connection Guide/

Refer to the following table of compatible DeviceHub drivers for your PLC.

| **PLC&#x20;**                                                                                                                                              | **Compatible Ethernet DeviceHub Drivers**                       |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| [Yokogawa FA-M3 Series](https://www.yokogawa.com/us/solutions/products-and-services/control/control-devices/programmable-logic-controllers-plc-pac/fa-m3/) | [Yokogawa FA-M3 Ethernet (Gen1)](docId\:cdhywamZK-tTaItKVghrO)  |


[title] Siemens
[path] QuickStart Guide/Industrial Systems Connection Guide/

:::hint{type="info"}
**Note**: You should always start with the Siemens S7-Advanced driver in lieu of the model-specific drivers, such as S7-200 Serial or S7-300 Serial. The Siemens S7-Advanced driver is faster and supports more data types.
:::

Refer to the following table of compatible DeviceHub drivers for your PLC series.

:::hint{type="warning"}
**Important**: [Siemens S7-400 (Gen1)](docId\:eZsGbT1lnd84FDx_VQD4h) is no longer available as of Litmus Edge version 3.11.0. We recommend using [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4) or [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d).&#x20;
:::

| **PLC Series**                                                                                                   | **Compatible Ethernet DeviceHub Drivers**                                                                                                                     | **Compatible Serial DeviceHub Drivers**                       |
| ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| S5                                                                                                               | [Siemens S5 Ethernet (Gen1)](docId\:siDqLRpYzKmLZY5kFoySI)                                                                                                    |                                                               |
| TI505                                                                                                            | [Siemens TI505 Ethernet (Gen1)](docId\:fZ0Mc8ec82xg-yi0u3-dC)                                                                                                 | [Siemens TI505 Serial (Gen1)](docId\:xFDgUI-qBIkmP7UXxfK-A)   |
| [S7-200](https://cache.industry.siemens.com/dl/files/582/1109582/att_22063/v1/s7200_system_manual_en-US.pdf)     | [Siemens S7-200 Ethernet (Gen1)](docId\:kdrMfqYm97o1KwmF_wwI2)                                                                                                | [Siemens S7-200 Serial (Gen1)](docId\:kz1iuJBMd7tJHVvL9GecQ)  |
| [S7-300](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-300.html)       | - [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4)
- [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d)                                                      | [Siemens S7-300 Serial (Gen1)](docId\:HrF0EeQ2sg4qmnBYxWgXF)  |
| [S7-400](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-400.html)       | * [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4)
* [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d)                                                      |                                                               |
| [S7-1200](https://www.siemens.com/global/en/products/automation/systems/industrial/plc/s7-1200.html)             | - [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4)
- [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d)
- [Siemens ISO-on-TCP](docId\:NZei67yGrk13vYXvsRzwU) |                                                               |
| [S7-1500](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/simatic-s7-1500.html)     | * [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4)
* [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d)
* [Siemens ISO-on-TCP](docId\:NZei67yGrk13vYXvsRzwU) |                                                               |
| [Sinumerik](https://www.siemens.com/global/en/products/automation/systems/cnc-sinumerik/automation-systems.html) | [Siemens Sinumerik Ethernet (Gen1)](docId:-TM0ocwBoyrukINDDeIXB)                                                                                              | [Sinumerik 808D Serial (Gen1)](docId\:MUwJzdF2VYy0TtaWBW2j6)  |
| [Siemens LOGO!](https://new.siemens.com/global/en/products/automation/systems/industrial/plc/logo.html)          | [Siemens Logo Ethernet (Gen1)](docId\:ZZHIUa7DHbVIIVo5lZgup)                                                                                                  |                                                               |


[title] Manage Flow Groups
[path] Product Features/Analytics/Analytics Flow Groups/

You can manage flow groups in the Analytics canvas by navigating to **Analytics&#x20;**>**&#x20;Instances**.&#x20;

Refer to the following management options below in the Analytics canvas.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vjPB89FiaXzVr9hTzvNn-_image.png" size="80" width="756" height="458" caption="Management options for flow groups" position="center" showCaption="true"}

\[1] **Lock/Unlock flow group**: You can lock groups so that other users can't make changes to it. Groups default to a locked state when you save the map.

\[2] **Pin group as default**: You can pin a group so that it becomes the default group on the Analytics canvas.

\[3] **Create group**: See [Create Flow Groups](docId:8FKqmA49TwWoMRvEit1Yh).&#x20;

\[4] **Edit group name**


[title] Test an IP Address
[path] Product Features/DeviceHub/Utilities/

You can test connectivity to a host name or an IP address that belongs to the network where your edge device resides by navigating to **DeviceHub&#x20;**>**&#x20;Utilities&#x20;**&#x61;nd referring to the *Test IP Address* section.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Rzr2T96PKhuQksAq0wK3-_image.png "Test IP Address section")

**To test connectivity**:

1. Navigate to **DeviceHub&#x20;**> **Utilities**.&#x20;
2. From the *Test IP Address* section of the *Utilities&#x20;*&#x70;ane, enter a host name or an IP address to test in the **Hostname or IP** field.
3. In the **Count&#x20;**&#x66;ield, enter the number to packets to send (the default is 4).
4. In the **Timeout&#x20;**&#x66;ield, enter the response timeout in seconds (the default is 60).
5. Click **Test Address**.
   If the selected IP address is accessible, the testing stats per packet show at the bottom of the Test IP Address section.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0qEENxWJ87I3goU-b7Ii__utility-ip-success-1.png" size="80" width="651" height="269" caption="Test IP Address interface" position="center" showCaption="true"}

If the selected IP address is not accessible, only the initial ping shows:


::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/e3QomRJnZvvG55NovTzSA_utility-ip-failure.png" size="80" width="651" height="212" caption="Test IP Address interface : only initial ping" position="center" showCaption="true"}

To stop the process before all of the transmitted packets are either received or timed out, click **Cancel**.


[title] Base Conversion
[path] Product Features/Analytics/Statistical Functions/

The **Base Conversion** processor allows you to convert a number from one numeral system to another.&#x20;

You have the following base conversion options:

- decimal -> binary&#x20;
- decimal -> hexaDecimal&#x20;
- decimal -> octaDecimal&#x20;
- binary -> decimal
- octaDecimal -> decimal&#x20;
- hexaDecimal -> decimal

## Base Conversion Overview

- With this function, you can convert the base from decimal to binary, decimal to HexaDecimal, decimal to OctaDecimal, and the other way around as well.
- For conversion of various units to decimal, it is expected that the input is a string:
  - Your input needs to have a field named **value** if you are converting from binary/ octadecimal/ hexadecimal to decimal.
- If 12 is the input in decimal place, the output of decimal -> hexadecimal would be "c"
- If 12 is the input in decimal place, the output of decimal -> binary would be "1100"

## Base Conversion Parameters

| **Parameters**     | **Details**                                                                                                                                                                                               |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Conversion         | This parameter specifies the type of conversion you want to perform, such as decimal to binary, decimal to hexadecimal, decimal to octal, binary to decimal, octal to decimal, or hexadecimal to decimal. |
| Pass Through Value | This parameter allows you to specify how to handle anomalous data. You can choose to replace the current value with an anomaly field if any anomalous data is detected during the conversion process.     |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ya-zCQWvSuWtWjc4r20Wg_image.png" size="80" width="960" height="588" caption="Base Conversion parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Base Conversion&#x20;*&#x70;rocessor, refer the [Use the Base Conversion Function](docId:0Inbp8WiJltwYp6JSam6A) guide for more details.
:::


[title] Normalization
[path] Product Features/Analytics/Statistical Functions/

The **Normalization** processor eliminates redundant data (storing the same data in more than one table) and ensures data dependencies make sense (only storing related data in a table). This processor is also used to eliminate the undesirable characteristics like Insertion, Update and Deletion Anomalies.

# Normalization Overview

- Initially, a window of value is observed, and the next value is converted between 0 and 1, based on the method of normalization used
- Afterwards, the values follow moving window algorithm and the next value is again placed between 0 and 1 based on the previous window

# Normalization Parameters

| **Parameters** | **Details**                                                                                                                                                                                                            |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Mode           | This parameter determines the form of standardization/normalization to be applied to the data. It allows you to specify the method of normalization to be used, such as Min-Max scaling or Average Standard Deviation. |
| Window Size    | This parameter specifies the number of values to observe when applying the normalization algorithm. It defines the size of the window used in the moving window algorithm for normalizing the data.                    |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MGmgdADsDzdlgkKIql8Le_image.png" size="80" width="960" height="570" caption="Normalization parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Normalization&#x20;*&#x70;rocessor, refer the [Use the Normalization Processor Function](docId\:VrIOtn4jWIKKQhtatmX4K) guide for more details.
:::


[title] Statistical Functions
[path] Product Features/Analytics/

The Analytics module makes use of built-in statistical functions to process the input data. This section describes the currently available statistical functions.

- [Anomaly Detection](docId\:HunvVoY4lAi25EMqL3ITE)
- [Base Conversion](docId\:uHsGfPKJkvq4JhRzrkjTT)
- [Combination Processor](docId:5yLIsH9fRxpwIpiz5zmNd)
- [Conversion](docId:_-NGlLTRXZc5hMGZced2p)
- [Expression](docId\:sTAjLpAQRENr_rcWYv0_f)
- [Feature Extractor](docId\:mOKtn2ltIJUmGsZPDU5SE)
- [Gaussian Filter](docId:0XAboOThMH7sv9QSgNcTk)
- [Inputs](docId\:aUgrpvrmjZiTtC4lQDT47)
- [Join Processor](docId:8fOJIrj1tzhPPUrbWzHYs)
- [Linear Prediction](docId\:wT1jDAY7AlEuk23eZd3Cc)
- [Moving Window](docId\:P0yX55a5BtJ4zqJG9URrE)
- [Normalization](docId:0SaqrdR68d9XKvkT8wmyh)
- [Rise and Fall](docId\:yrbjHOF8EYKmbfnDieDaM)
- [Rounding](docId:0v2s3AJp1zLCGD-SZY8Ih)
- [Signal Decomposition](docId\:BrMFBTvhouF2TCwc3WCi2)
- [Simple Window](docId\:ilCQt80Cu3YjmXsAouyjX)
- [Statistical Functions](docId\:SSnVCLJrXpb2eIrlnSIqB)
- [Statistical Prediction](docId:1gVaH_dWEuTlOuaP0ccuC)
- [Tengo Script](docId\:vpYv26QZbje6ovJwRPKog)
- [TensorFlow Images Processor](docId\:fGsjkQ7VGTr3NbHgc3JzX)
- [TensorFlow Processor](docId\:cLBzoxXYqhBaC2A4-6jsk)
- [XMR Chart](docId\:IokporpNkCeSuc_QGHJgY)


[title] Conversion
[path] Product Features/Analytics/Statistical Functions/

The **Conversion** processor helps you convert commonly used units in a factory setting.

# Conversion Overview

- Ready conversions of commonly used Units.
- You have the following base conversion options:
  - timestamp -> local time&#x20;
  - timestamp -> UTC&#x20;
  - Celsius -> Fahrenheit&#x20;
  - Fahrenheit -> Celsius&#x20;
  - degree -> radian&#x20;
  - radian -> degree&#x20;
  - degree -> gon&#x20;
  - gon -> degree&#x20;
  - radian -> gon&#x20;
  - gon -> radian

# Conversion Parameters

| **Parameters**     | **Details**                                                                                                                                        |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Conversion         | This parameter specifies the type of conversion you want to perform.                                                                               |
| Pass Through Value | This parameter enables you to specify how anomalous data should be handled, such as replacing the current value with an anomaly field if detected. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x375I67ZRYr8yL0YezdMr_image.png" size="80" width="960" height="470" caption="Conversion parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Conversion&#x20;*&#x70;rocessor, refer the [Use the Conversion Function](docId\:gFmp-yf8mosOG__Wtsgkq) guide for more details.
:::


[title] AMQP SSL
[path] Product Features/Integration/Integration Connectors/Message Brokers/

Review the [AMQP SSL Integration Guide](docId\:MGp4_jY6J-Kip5ZJ20wmH).&#x20;

## Overview

AMQP SSL integration enables an Edge System to connect with an AMQP broker using SSL authentication.

## Supported Versions

Supports RabbitMQ versions starting with 2.0 but primarily tested against recent 3. x releases. Some features and behaviors may be server-version specific.

## Supported Communication

- Outbound (Publish data from Edge to AMQP broker) - Yes
- Inbound (Subscribe data from AMQP broker to Edge) - No

## Configurations

| **Variable**         | **Detail**                                                                                                                                                                                            | **Required** |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                 | Enter a name for the connector                                                                                                                                                                        | Yes          |
| Hostname             | IP Address or hostname of AMQP broker (Must be reachable from the Edge system)                                                                                                                        | Yes          |
| Port                 | AMQP broker port                                                                                                                                                                                      | Yes          |
| Virtual host         | Specifies the namespace of permissions, exchanges, queues, and bindings on the server.                                                                                                                | No           |
| Username             | Enter the username                                                                                                                                                                                    | No           |
| Password             | Enter the password                                                                                                                                                                                    | No           |
| Exchange             | Enter the AMQP exchange                                                                                                                                                                               | No           |
| Exchange type        | Select one of the following: direct, fanout, topic, x-custom                                                                                                                                          | No           |
| Exchange durable     | See the *Exchange Options* section below                                                                                                                                                              | No           |
| Exchange auto delete | See the *Exchange Options* section below                                                                                                                                                              | No           |
| Exchange internal    | See the *Exchange Options* section below                                                                                                                                                              | No           |
| Exchange no wait     | See the *Exchange Options* section below                                                                                                                                                              | No           |
| Routing key          | Enter the AMQP routing key                                                                                                                                                                            | Yes          |
| ISO8601 timestamp    | Convert a message timestamp into ISO8601 format before sending                                                                                                                                        | No           |
| CA Certificate       | SSL CA Certificate                                                                                                                                                                                    | Yes          |
| Certificate          | Self-signed SSL certificate                                                                                                                                                                           | No           |
| Private key          | SSL private key                                                                                                                                                                                       | No           |
| Throttling limit     | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                | No           |
| Persistent storage   | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |
| Queue mode           | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  | No           |

## Exchange Options

Exchange names starting with "amq." are reserved for pre-declared and standardized exchanges. The client MAY declare an exchange starting with "amq." if the passive option is set, or the exchange already exists. Names can consist of a non-empty sequence of letters, digits, hyphen, underscore, period, or colon.

Each exchange belongs to one of a set of exchange kinds/types implemented by the server. The exchange types define the functionality of the exchange - i.e. how messages are routed through it. Once an exchange is declared, its type cannot be changed. The common types are "direct", "fanout", "topic" and "headers".

Durable and Non-Auto-Deleted exchanges survive server restarts and remain declared when there are no remaining bindings. These selections are best for long-lived exchange configurations like stable routes and default exchanges.

Non-Durable and Auto-Deleted exchanges are deleted when there are no remaining bindings and not restored on server restart. These selections are useful for temporary topologies that should not pollute the virtual host on failure or after the consumers have completed.

Non-Durable and Non-Auto-deleted exchanges remain while the server is running, including when there are no remaining bindings. These selections are useful for temporary topologies that may have long delays between bindings.

Durable and Auto-Deleted exchanges survive server restarts and are removed before and after server restarts when there are no remaining bindings. These selections are useful for robust temporary topologies or when you require binding durable queues to auto-deleted exchanges.

:::hint{type="info"}
**Note**: RabbitMQ declares the default exchange types like 'amq.fanout' as durable, so queues that bind to these pre-declared exchanges must also be durable.
:::

Exchanges declared as internal do not accept publishing. Internal exchanges are useful when you wish to implement inter-exchange topologies that should not be exposed to users of the broker.

When No Wait is selected, you can continue without waiting for a confirmation from the server. The channel may be closed because of an error. Add a `NotifyClose` listener to respond to any exceptions.

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product** | **Version** | **Date**     |
| ----------- | ----------- | ------------ |
| RabbitMQ    | 3.6.6       | Nov 21, 2016 |


[title] DB - MongoDB
[path] Product Features/Integration/Integration Connectors/Databases/

Review the [MongoDB Integration Guide](docId:0cZXAiRD8-dshxcD5hmjF).



## Overview

MongoDB integration enables an Edge System to connect with a MongoDB database.&#x20;

## Supported Versions

- MongoDB 2.x - MongoDB 3.2

## Supported Communication

- Outbound (Edge to Database) - Yes
- Inbound (Database to Edge) - No

## Configurations

| **Variable**         | **Detail**                                                                                                                                                                                            | **Required** |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                 | Enter a name for the connector                                                                                                                                                                        | Yes          |
| Hostname             | IP Address or Hostname of MongoDB Server (Must be reachable from the Edge system)                                                                                                                     | Yes          |
| Port                 | MongoDB Server port                                                                                                                                                                                   | Yes          |
| Username             | User name                                                                                                                                                                                             | No           |
| Password             | User password                                                                                                                                                                                         | No           |
| Auth database        | Authentication database name                                                                                                                                                                          | No           |
| Auth mechanism       | Authentication mechanism (can be one of "SCRAM-SHA-1", "MONGODB-CR", "MONGO-CR", "PLAIN", "MONGODB-X509")                                                                                             | No           |
| Database             | Database name. If database does not exist it is created.                                                                                                                                              | Yes          |
| Collection           | Collection name. If collection does not exist it is created.                                                                                                                                          | Yes          |
| Commit timeout       | Transaction commit timeout (ms)                                                                                                                                                                       | No           |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout                                                                                                                    | No           |
| Throttling limit     | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                | No           |
| Queue mode           | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  | No           |
| Persistent storage   | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |


[title] Images
[path] Product Features/Applications/

The *Images&#x20;*&#x70;ane of the Applications module lists Docker images that you’ve currently pulled from a Docker registry. These Docker images contain applications that can be installed and executed.

When you pull a Docker image and it’s contained application from a marketplace catalog, the Docker image is automatically pulled from the Docker registry associated with the marketplace catalog. A Docker image can be pulled in one the following methods:

1. Automatically pulled from a registry when deploying an application from a marketplace catalog ([Marketplace](docId:-vxhwowPd4S7O4a3cXffr)).&#x20;
2. Pulled from a registry when using a custom Docker run command in [Containers](docId\:uASMDJ5ugFN_P79HOba3Y).
3. Uploaded from local drive or imported using FTP ([Upload an Image](docId\:Ll_C8iAnGQ6jV3eX65nTv)).

You can also directly pull Docker images from these default registries (skipping the need for a marketplace catalog):

- Public Docker Hub
- Microsoft Docker Container registry
- Elastic public docker registry

Furthermore, you can also add own registries and then pull Docker images within them. See [Add a Registry](docId\:wgl_1tPOfzVNAvHad3LHY) for details.

You can upload Docker images from your hard drive, or import using FTP. You can also view the total Docker image size, view details for a Docker image, copy a Docker image name, and remove any Docker images stored on the Images pane.

:::hint{type="info"}
**Note**: Docker images should be regularly removed to preserve disk space.
:::

# Access Applications Images UI

**To access the Applications Images pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Applications**.
   The *Dashboard&#x20;*&#x70;ane appears.
3. Click **Images**.&#x20;
   The *Images&#x20;*&#x70;ane appears.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7PfWGnW2HD0XwTTgvk6Sj_image.png "Applications Images pane")

# Next Steps

- [Upload an Image](docId\:Ll_C8iAnGQ6jV3eX65nTv)
- [Download an Image](docId:98r6v_sgU5lp435zm6omo)
- [Manage Images](docId\:HkWdmj1Xcl6ETf1_A4Xkd)


[title] DB - Snowflake
[path] Product Features/Integration/Integration Connectors/Databases/

Review the [Snowflake Integration Guide](docId:9EwtDSPb4VUsABX2CTfjT).&#x20;

:::hint{type="info"}
**Note**: Available for Litmus Edge version 3.11.0 and later.&#x20;
:::



## Overview

Snowflake Integration enables an Edge System to connect with Snowflake’s data warehouse.

## Supported Communication

- Outbound (Write from Edge to Snowflake) - Yes
- Inbound (Read from Snowflake to Edge) - No

## Account Privilege Requirements

Review the Snowflake account privilege requirements for successfully connecting.&#x20;

- **SysAdmin**: Allows you to connect and create a new database table.&#x20;
- **AccountAdmin**: Allows you to connect, but you can't create a new database table.&#x20;

The following account privileges won't allow you to successfully connect: Public, UserAdmin, and SecurityAdmin.&#x20;

## Configurations

| **Variable**       | **Detail**                                                                                                                                                                                            | **Required** |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name               | Enter a name for the connector                                                                                                                                                                        | Yes          |
| Account            | Snowflake account ID with Region ( `<accountid>.<region>` )                                                                                                                                           | Yes          |
| Username           | Username                                                                                                                                                                                              | Yes          |
| Password           | Password                                                                                                                                                                                              | Yes          |
| Database           | Database name                                                                                                                                                                                         | Yes          |
| Schema             | Schema name                                                                                                                                                                                           | Yes          |
| Warehouse          | Warehouse name                                                                                                                                                                                        | Yes          |
| Table              | Table name                                                                                                                                                                                            | Yes          |
| Create table       | Create the table if it doesn’t exist. You must have the appropriate permissions.                                                                                                                      | No           |
| Throttling limit   | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                | No           |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |
| Queue mode         | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  | No           |


[title] DB - InfluxDB v2.x TCP
[path] Product Features/Integration/Integration Connectors/Databases/

Review the [InfluxDB v2.x TCP Integration Guide](docId\:FzZTCLIwKshVDdPkwy4zG).&#x20;

## Overview

InfluxDB v2.x TCP integration enables an Edge System to connect with an InfluxDB database.

:::hint{type="info"}
**Note**: The following data types and formats are not viewable in InfluxDB:

- string
- char
- JSON payloads
:::

## Supported Versions

- InfluxDB 2.x

## Supported Communication Directions

- Outbound (Write from Edge to Database) - Yes
- Inbound (Read from Database to Edge) - No

## Variable Definitions

| **Variable**       | **Details**                                                                                                                                                                                           |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name               | Enter a name for the connector                                                                                                                                                                        |
| Address            | InfluxDB database URL (for example, http\://localhost:8086)                                                                                                                                           |
| Bucket             | Bucket name                                                                                                                                                                                           |
| Organization       | Organization name                                                                                                                                                                                     |
| Auth Token         | Authentication token                                                                                                                                                                                  |
| Username           | User name (optional)                                                                                                                                                                                  |
| Password           | User password (optional)                                                                                                                                                                              |
| Batch size         | Enter the batch size                                                                                                                                                                                  |
| Batch commit time  | Enter the batch-commit time in seconds                                                                                                                                                                |
| Throttling limit   | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. |
| Queue mode         | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  |
| Remote Data Topic  | InfluxDB measurement that you want to publish data to.                                                                                                                                                |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product          | Version |
| ---------------- | ------- |
| docker: influxdb | 2.x     |


[title] Integration Connectors
[path] Product Features/Integration/

Refer to the available integration connectors and their corresponding parameters.

You can also review [Integration Guides](docId\:ZJCZ7NP6pGLZGihEVl8Ed) on specific connectors.&#x20;

# Cloud Service Providers

- [Aveva Data Hub](docId\:tN7vCsDyJq6dnA873R0GJ)
- [AWS SiteWise](docId\:Y21jEaYPFqJXdvHgU8jTA)
- [Azure Event Hubs](docId\:ZqyDH86pXaIJKDjZws1wX)
- [Cognite Connector](docId\:PC5Mw4SXsmKOUhtSupZIQ)
- [Google Cloud Pub/Sub Connector](docId\:kTXolVMN7KiMu4KwanaKG)
- [MindSphere PSK](docId\:ni7ULTxK1JlNZkywoIB5t)
- [Splunk](docId\:mYW2sV_6IyDxv943bXwsH)

# Databases

- [DB - InfluxDB v1.7.x SSL](docId\:YKddkqU0VBtLs_eiSe-3D)
- [DB - InfluxDB v1.7.x TCP](docId\:V6p2JEEyUk_Ht9jpPgI1s)
- [DB - InfluxDB v2.x+ SSL](docId\:EHrtdvqO4aRVEBWxKoY8Z)
- [DB - InfluxDB v2.x TCP](docId\:jyfbJA_4gNqptyeENSiPb)
- [DB - Microsoft SQL Server](docId\:kBbNqdaiDijPTi_NbfDtL)
- [DB - Microsoft SQL Server SSL](docId\:fL8xjCey1ZIgF8QuE_MfM)
- [DB - MongoDB](docId:1DE5hiNtqFHuG7tpo99_G)
- [DB - Mongo v4+](docId:4Nz8S0-PPrZsS7Ew536Xe)
- [DB - MySQL](docId\:kBpCY_zyjeM5fjBdW4_Be)
- [DB - MySQL SSL](docId\:ktrqTE8JyPfVh2iVWg5Ko)
- [DB - Oracle](docId\:lvNiBeHE_NFCtpzp1FBHD)
- [DB - PostgreSQL](docId\:cdtDKh0tfNZUm7tOda8pN)
- [DB - PostgreSQL SSL](docId\:XN3pOaQdTpOeTUOAy5pOZ)
- [DB - Snowflake](docId\:hpqEA3e94CBmHDP3HXj6v)

# Message Brokers

- [AMQP SSL](docId\:rg_43hJ4AMeMH6RB-cP4C)
- [AMQP TCP](docId\:tbqI9gJtHl4O5KDc8VT8O)
- [Kafka SSL](docId\:nsIX9vGYpA7ZHqiz6TfEQ)
- [Kafka TCP](docId\:cfBOxt1G2n6GoWgXwAoN4)
- [MQTT - Amazon AWS IoT Core over SSL](docId\:HJHjBHJ-E-R4MLbTm9md6)
- [MQTT - Azure IoT Hub using Device Certificates](docId:-xKTL9sD6eExl4vNgiiNO)
- [MQTT - Azure IoT Hub using SAS Key](docId:7GqpkTXNGRxtV_PNdNHPn)
- [MQTT Generic](docId:69BwxjXFn6jIKevZhiANy)
- [MQTT - Generic over SSL](docId\:EUrNu7og3B3p3vVSohBBV)
- [MQTT - IBM Watson over SSL](docId\:E-jiJDn1qqEM4fr2oY4CM)
- [MQTT - System Protobuf SSL](docId\:wIDJB3Q6RhNULF3fk0frg)
- [MQTT - System Protobuf TCP](docId\:uFENgIW43GaC9sq8w6SEh)

# Other Providers

- [Loopback Connector](docId\:usroE-43NGQJSsgDvFFFV)
- [NATS](docId\:KUwXe8eqxX95i7cZnf-M6)
- [REST API](docId\:k7GjlLG72lRDFhXao17at)


[title] Join Processor
[path] Product Features/Analytics/Statistical Functions/

The **Join processor** allows you to combine the output for multiple inputs. When multiple input processors are connected to a Join Processor, you must define the connector.

# Join Processor Overview

- Output mode
  - Two options available here are *map* and *array* form
  - **Map** option is better if standard JSON format is needed (eg. for Database output)
  - **Array** option is better if all values are needed in an array format
- Map Field Prefix
  - This field can remain empty, but you can add a prefix if you want, in front of the output fields when they are combined
- Array Sort Order
  - In array mode, you can chose to arrange field values in either Ascending and Descending order
- Input Source
  - What to show as the input source? Device Name, or the connecting wire definition name?
  - If Device Name is chosen, it is *required* to have "deviceName" and "tagName" field in the input

# Join Processor Parameters

| **Parameters**   | **Details**                                                                                                                                                                                                                                |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Array Sort By    | Specifies the data type of the value being processed.                                                                                                                                                                                      |
| Array Sort Order | Indicates whether to sort the array in ascending or descending order.                                                                                                                                                                      |
| Field            | Specifies which output field to join.                                                                                                                                                                                                      |
| Input Source     | Defines what to show as the input source.                                                                                                                                                                                                  |
| Map Field Prefix | Allows adding a prefix in front of the output fields when they are combined. This field is optional and can remain empty.                                                                                                                  |
| Output Mode      | Specifies the output format. Two options are available: map and array form. The map option is suitable for standard JSON format (e.g., for Database output), while the array option is better if all values are needed in an array format. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QJ4ZRRHXv8TCAvMqtunbH_image.png" size="80" width="943" height="518" caption="Join Processor parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Join Processor&#x20;*&#x70;rocessor, refer the [Use the Join Processor Function](docId\:EFCB4gXGUgmBIh2Jp6IyK) guide for more details.
:::


[title] Networks
[path] Product Features/Applications/

Th&#x65;**&#xA0;***Networks&#xA0;*&#x70;ane of the *Applications&#x20;*&#x6D;odule shows three default Docker network components for the current applications:

- **bridge**: The default network driver, typically used when your applications run in standalone containers that need to communicate.
- **host**: For standalone containers, this removes network isolation between the container and the Docker host, and enables using the host’s networking directly.
- **none**: Disables all networking for a container. This is typically used in conjunction with a custom network driver.

For more details, see [Docker documentation](https://docs.docker.com/network/#network-drivers).

You can add your own networks. You can also view network information, connect containers to networks and disconnect them from networks, as well as remove non-default networks.

# Access Applications Networks UI

**To access the Applications Networks pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Applications**.
   The *Dashboard&#x20;*&#x70;ane appears.
3. Select **Networks**.&#x20;
   The *Networks&#x20;*&#x70;ane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZkNjQtVDv_Ma7l6DgB50G_image.png" size="80" width="1900" height="441" caption="The Applications Networks pane" position="center" showCaption="true"}

# Next Steps

- [Create a Network](docId\:dkogEublV3IExVTkkE44R)&#x20;
- [Manage Networks](docId:8ALd2Im_OB9R5jOPYpUyc)&#x20;


[title] Azure Event Hubs
[path] Product Features/Integration/Integration Connectors/Cloud Service Providers/

Review the [Azure Event Hub Integration Guide](docId\:d4uqWUga6paYEzjD6SSOW).&#x20;

## Overview

Azure Event Hubs integration enables an Edge System to connect to Azure Event Hubs.

## Supported Communication

- Outbound (Publish data from Edge to Azure Event Hub) - Yes
- Inbound (Subscribe data from Azure Event Hub to Edge) - No

## Configurations

| **Variable**              | **Detail**                                                                                                                                                                                            | **Required** |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                      | Connector name                                                                                                                                                                                        | Yes          |
| Connection string         | Configuration string                                                                                                                                                                                  | Yes          |
| Maximum message size      | The maximum message size for an individual event (message) in Azure Event Hubs is 256 KB.                                                                                                             | Yes          |
| Parallel connections unit | Impose a strict limit on the maximum number of simultaneous connections or clients that can be established with an Event Hub.                                                                         | Yes          |
| Combine messages          | Message or event combination refers to the procedure of consolidating several separate messages or events into one unified message or event.                                                          | No           |
| Throttling limit          | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                | No           |
| Persistent storage        | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |
| Queue mode                | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  | No           |


[title] Upload a Model
[path] Product Features/Analytics/Machine Learning Models/

You can upload Machine Learning models by navigating to **Analytics&#x20;**>**&#x20;Models**.&#x20;

:::hint{type="info"}
**Note**: The maximum model file size is [52.43MB or 50 MiB](https://en.wikipedia.org/wiki/Byte#Multiple-byte_units).
:::

# Before You Begin

Make sure you create an appropriate machine learning model. See [Machine Learning Models](docId:_4NC2jGJUk5HRWy6zTlrt) for details.&#x20;

# Upload a Model

**To upload a model:**

1. Navigate to **Analytics&#x20;***>&#x20;***Models**.&#x20;
2. Click **Upload Model**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/t5dgo8ZdXIOuzlqndjWxw_uploadmodel.png "Upload Model icon")
3. Navigate to the zip file of the model and click **Open**.&#x20;
   The selected model appears in the *Models&#x20;*&#x70;ane.&#x20;

To remove the model, open the **Action menu** for the model and select **Remove**.&#x20;


[title] Machine Learning Anomaly Detection
[path] Product Features/Analytics/Machine Learning Models/Model Types/

This use case is a customized timeseries version of making a CNN anomaly detection model from the TensorFlow website.

:::BlockQuote
import numpy as np
import tensorflow as tf
from tensorflow import keras
import pandas as pd
import seaborn as sns
from pylab import rcParams
import matplotlib.pyplot as plt
from matplotlib import rc
from pandas.plotting import register\_matplotlib\_converters
​
register\_matplotlib\_converters()
sns.set(style='whitegrid', palette='muted')

\# rcParams\['figure.figsize'] = 22, 10

csv\_path = '20161003\_085624.csv'
df = pd.read\_csv(csv\_path)
​
print ("\ncolumns: ", df.columns, "Data Frame Length: ", len(df), " rows\n")
​
features\_considered = \['Temperature (C)']
​
features = df\[features\_considered]
features.index = np.arange(start=0, stop=len(df), step = 1)
\# print(features.index)
print(features.head())​
x = features.values
df = features
print(x)

\# plt.plot(df)
\# plt.show()

train\_size = int(len(df) \* 0.90)
test\_size = len(df) - train\_size
train, test = df\[0\:train\_size], df\[train\_size\:len(df)]
print(train, test)
print(train.shape, test.shape)
​
from sklearn.preprocessing import StandardScaler
​
scaler = StandardScaler()
scaler = scaler.fit(train\[\['Temperature (C)']])
​
train\['close'] = scaler.transform(train\[\['Temperature (C)']])
test\['close'] = scaler.transform(test\[\['Temperature (C)']])

\# print(train, test)

def create\_dataset(X, y, time\_steps=1):
Xs, ys = \[], \[]
for i in range(len(X) - time\_steps):
v = X.iloc\[i:(i + time\_steps)].values
Xs.append(v)ys.append(y.iloc\[i + time\_steps])
return np.array(Xs), np.array(ys)
​
TIME\_STEPS = 30

\# reshape to \[samples, time\_steps, n\_features]
X\_train, y\_train = create\_dataset(train\[\['Temperature (C)']], train.close, TIME\_STEPS)
​
X\_test, y\_test = create\_dataset(test\[\['Temperature (C)']], test.close, TIME\_STEPS)
print(X\_train.shape)
print(y\_test.shape)
print(X\_train.shape\[1], X\_train.shape\[2], y\_train\[1])

\# model = keras.Sequential()
\# model.add(keras.layers.LSTM(
\# units=64,
\# input\_shape=(X\_train.shape\[1], X\_train.shape\[2])
\# ))
\# model.add(keras.layers.Dropout(rate=0.2))
\# model.add(keras.layers.RepeatVector(n=X\_train.shape\[1]))
\# model.add(keras.layers.LSTM(units=64, return\_sequences=True))
\# model.add(keras.layers.Dropout(rate=0.2))
\# model.add(keras.layers.TimeDistributed(keras.layers.Dense(units=X\_train.shape\[2])))
\# model.compile(loss='mae', optimizer='adam')

verbose, epochs, batch\_size = 0, 2, 128
n\_timesteps, n\_features, n\_outputs = X\_train.shape\[1], X\_train.shape\[2], y\_train\[1]
​
model = keras.Sequential()
model.add(tf.keras.layers.Conv1D(filters=64, kernel\_size=3, activation='relu', input\_shape=(n\_timesteps,n\_features)))
model.add(tf.keras.layers.Conv1D(filters=64, kernel\_size=3, activation='relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.MaxPooling1D(pool\_size=2))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(100, activation='relu'))
model.add(tf.keras.layers.Dense(n\_outputs, activation='softmax'))
model.compile(loss='mae', optimizer='adam', metrics=\['accuracy'])
\# fit network

history = model.fit(
X\_train, y\_train,
epochs=2,
batch\_size=256,
validation\_split=0.1,
shuffle=False
)
​
model.summary()
X\_train\_pred = model.predict(X\_train)​

\# model.save("/anomalyModel/")
​
train\_mae\_loss = np.mean(np.abs(X\_train\_pred - X\_train), axis=1)
plt.figure()
sns.distplot(train\_mae\_loss, bins=50, kde=True);
​
​
X\_test\_pred = model.predict(X\_test)
​
test\_mae\_loss = np.mean(np.abs(X\_test\_pred - X\_test), axis=1)
print(test\_mae\_loss)
plt.figure()
sns.distplot(train\_mae\_loss, bins=50, kde=True)
plt.figure()
​
THRESHOLD = 0.65
​
test\_score\_df = pd.DataFrame(index=test\[TIME\_STEPS:].index)
test\_score\_df\['loss'] = test\_mae\_loss
test\_score\_df\['threshold'] = THRESHOLD
test\_score\_df\['anomaly'] = test\_score\_df.loss > test\_score\_df.threshold
test\_score\_df\['close'] = test\[TIME\_STEPS:].close
​
plt.plot(test\_score\_df.index, test\_score\_df.loss, label='loss')
plt.plot(test\_score\_df.index, test\_score\_df.threshold, label='threshold')
plt.xticks(rotation=25)
​
anomalies = test\_score\_df\[test\_score\_df.anomaly == True]
print(anomalies.head())
​
plt.plot(
test\[TIME\_STEPS:].index,
scaler.inverse\_transform(test\[TIME\_STEPS:].close),
label='temp'
);
​
sns.scatterplot(
anomalies.index,
scaler.inverse\_transform(anomalies.close),
color=sns.color\_palette()\[3],
s=52,
label='anomaly'
)
plt.xticks(rotation=25)
​
plt.show()
:::


[title] TensorFlow Processor
[path] Product Features/Analytics/Statistical Functions/

# TensorFlow Overview

- Processor for feeding time-series data to an already created TensorFlow model.

# TensorFlow Parameters

| **Parameters**    | **Details**                                                                                                                                         |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| Number of Inputs  | This parameter specifies the file path for the pre-trained TensorFlow model that will be used for processing the images.                            |
| Number of Inputs  | This parameter specifies the number of inputs given to the Tensorflow model.                                                                        |
| Tags              | This parameter allows you to specify tags for loading the model. If there are multiple tags, you can separate them using commas.                    |
| Input Operation   | This parameter refers to the input tensor that was used when creating the TensorFlow model. Usually the dictionary of values you feed to the model. |
| Output Operation  | This parameter refers to the output tensor used during the creation of the TensorFlow model. It usually represents the output of the model.         |
| Time Shift Ms     | This parameter indicates by how many milliseconds the current timestamp should be shifted.                                                          |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bSYVJaOCf4Lc4oqjFnBzS_image.png" size="80" width="944" height="630" caption="Tensor Flow Processor parameters" position="center" showCaption="true"}


[title] Add a Registry
[path] Product Features/Applications/Registry/

You can add a Registry so that you can pull images to add to your own set of running Docker containers.

A registry is a public or private repository of Docker images used for storing and delivering applications.

Litmus Edge supports Docker Registry v2.

The following registries are available:

- AWS ECR
- Azure Container
- Docker
- GCR Docker

Each registry uses different configuration information.

To enable retrieval of applications from containers, you first must give Litmus Edge access to the repository.

:::hint{type="info"}
**Note**: If you add a registry for Azure in Docker configuration with a username/password, the format is `https://<your-registry-name>.azurecr.io/v2/`.&#x20;
:::

# Add a Registry

**To add a registry:**

1. Navigate to **Applications&#x20;**> **Registry**.
   The *Container Registry* pane appears.&#x20;
2. Click the **Add&#xA0;**&#x69;con. Th&#x65;*&#x20;Create Registry* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6TmkLIIAns6ZhuV2MKMTo_registryaddicon.png "The Add Registry icon")
3. Select an option from the **Type&#xA0;**&#x64;rop-down list. The following options are available:
   - AWS\_ECR
   - AZURE\_CONTAINER\_REGISTRY
   - DOCKER\_REGISTRY
   - GOOGLE\_CONTAINER\_REGISTRY
4. From the **Create Registry&#xA0;**&#x64;ialog box, refer to the respective type depending on your selection and enter the details for the registry.&#x20;

## AWS ECR

- **Name**&#x20;
- **Registry Description** (Optional)&#x20;
- **AWS Region** (Optional)&#x20;
- **AWS Key ID**&#x20;
- **AWS Secret Key**

## Azure Container Registry

- **Name**
- **Registry Description** (Optional)&#x20;
- **Service principal name**
- **Service subscription identifier**
- **Client ID&#x20;**
- **Client Secret&#x20;**
- **Resource Group**
- **Registry Name**
- **Address**: Enter the location of the registry.

## Docker Registry

- **Name**
- **Registry Description** (Optional)&#x20;
- **Docker Login Server**: Enter `https://index.docker.io/v1` .
- **Docker Login User&#x20;**(Optional)&#x20;
- **Docker Login Password** (Optional)&#x20;
- **Docker CA Certificate** (Optional): Paste a CA Certificate in the **Docker CA Certificate&#xA0;**&#x66;ield. If Litmus Edge is already connected to Litmus Edge Manager, the CA Certificate used for that connection is applied.
- **Docker Skip TLS Verification** (Optional) Select the check box to bypass the TLS security.

## Google Container Registry

- **Name**
- **Google container registry address**
- **Repository Description** (Optional)
- **JSON key fie**: Browse to add a key file.&#x20;

When done entering the details for the registry, click **Save**.&#x20;


[title] Anomaly Detection
[path] Product Features/Analytics/Statistical Functions/

The **Anomaly Detection** processor uses the three-sigma rule and allows you to define the number of standard deviations considered normal for a data-set. If the data is within the designated standard deviations of the mean, it is not considered to be anomalous.

## Anomaly Detection Overview

- Anomaly detection by 3-Sigma Rule is a conventional heuristic used for an approximately normalized data-set.
- A rolling window of values are "observed", and their average and standard deviations are calculated.
- You can define the number of standard deviations that would be considered "normal", hence everything beyond that would be anomalous data.
- In case of an anomaly, the standard deviation window is expanded ever so slightly, so that it can adjust if this anomalous data becomes seasonal.
  - This calculation is done because in live data, it is sometimes not preferable for one large anomaly to drastically change the moving average and moving standard deviations.
  - With the **control chart mode**, this calculation can be completely bypassed, if all you need to check is whether the value is within upper/lower limit or not.
  - If **control chart mode** is enabled, there will be no modifications done to the moving window before calculation.
- Currently if you have very small deviations (close to 0), it is difficult to distinguish between anomalous data, so it would be better to have a larger window size for those kinds of data.
- **Expected Output Fields:** timestamp, current value, moving average, moving standard deviation, upper limit, lower limit, total anomalies, and anomaly field replaces current value, if detected.

## Anomaly Detection Parameters

| **Parameters**      | **Details**                                                                                                                                                                                                   |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Control Chart Mode? | This parameter enables or disables the control chart mode, which bypasses the calculation for adjusting the standard deviation window and allows for simple upper/lower limit checks.                         |
| Deviations          | This parameter allows you to define the number of standard deviations considered normal for a data-set.                                                                                                       |
| Window Size         | This represents the window in which the calculations are performed, measured in seconds. It determines the number of data points included in the rolling window for observing average and standard deviation. |
| Pass Through Value  | This parameter allows you to specify how to handle anomalous data, such as replacing the current value with an anomaly field if detected.                                                                     |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ue98GX57u_7qOv4gChehm_image.png" size="80" width="940" height="394" caption="Anomaly Detection parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Anomaly Detection&#x20;*&#x70;rocessor, refer the [Use the Anomaly Detection Function](docId\:I1n2b2AioiyCtPPXMmZ6O) guide for more details.
:::


[title] DB - InfluxDB v1.7.x TCP
[path] Product Features/Integration/Integration Connectors/Databases/

Review the [InfluxDB v1.7.x TCP Integration Guide](docId\:xWdn88NdbtdW0J0rE-Owv)

## Overview

InfluxDB v1.7x TCP integration enables an Edge System to connect with an InfluxDB database.&#x20;

:::hint{type="info"}
**Note**: The following data types and formats are not viewable in InfluxDB:

- string
- char
- JSON payloads
:::

## Supported Versions

- InfluxDB 1.7.x
- InfluxDB 1.8.x

## Supported Communication Directions

- Outbound (Write from Edge to Database) - Yes
- Inbound (Read from Database to Edge) - No

## Variable Definitions

| **Variable**       | **Details**                                                                                                                                                                                           |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name               | Enter a name for the connector                                                                                                                                                                        |
| Address            | Enter the InfluxDB database URL (for example, http\://localhost:8086)                                                                                                                                 |
| Database           | Database name                                                                                                                                                                                         |
| Username           | User name (optional)                                                                                                                                                                                  |
| Password           | User password (optional)                                                                                                                                                                              |
| Batch size         | Enter the batch size                                                                                                                                                                                  |
| Batch commit time  | Enter the batch-commit time in seconds                                                                                                                                                                |
| Throttling limit   | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. |
| Queue mode         | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  |
| Remote Data Topic  | InfluxDB measurement that you want to publish data to.                                                                                                                                                |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product          | Version |
| ---------------- | ------- |
| docker: influxdb | 1.7     |
| docker: influxdb | 1.8     |


[title] Statistical Functions
[path] Product Features/Analytics/Statistical Functions/

The **Statistical Functions** processor can help you determine how well a set of data matches a certain distribution, especially normal distribution. You can do this by analyzing the data's characteristics and calculating corresponding p-values.

# Statistical Functions Overview

**Jarque-Bera test** :

- This is simple goodness-of-fit test to check if the sample data has similar skewness and kurtosis to a normal distribution.
- The further the JB test value is from zero, the stronger the fact that the data does not belong to the normal distribution.
- Skewness and kurtosis are calculated from the window of data and then JB value is calculated.
- JB = (n/6) (skewness^2 + (1/4)(kurtosis-3)^2)
- P-value is calculated by subtracting cumulative distribution function at the JB value for the ChiSquared distribution with 1

**Cramer-Von-Mises test** :

- This is goodness-of-fit test which uses the summed squared differences between the sample of data, and the expected cumulative distribution function.
- First, a window of data is collected, then mean and standard deviation is calculated.
- Data is then sorted, and Z-scores are calculated by standardizing the data.
- cramerVonMises = (1/12n) + SIGMA \{ ((2i-1)/(2n) - phiZ)^2 }
- P-value is calculated, based on the value of cramerVonMises

**Anderson-Darling test** :

- This is a statistical test to check whether a given sample of data is from an empirical distribution function or not.
- In this case, we are using a normal distribution - meaning, we use this test to see how far the data departs from an ideal normal distribution.
- Compared to other tests, Anderson-Darling test gives more weight to the tails of the distribution.
- First, a window of data is collected, then mean and standard deviation is calculated.
- Data is then sorted, and Z-scores are calculated by standardizing the data.
- A^2 = -n - (1/n)\* SIGMA\{ (2i-1)ln(phiZ\[i]) + (2(n-i)+1)ln(phZ\[i]) } formula is applied, where phiZ is the cumulative distribution function for the Z-scores
- P-value is calculated, based on the value of A^2

**D'Agostino Pearson test** :

- With a combination of skewness and kurtosis test, D'Agostino Pearson test checks whether the shape of the window of values matches a normal distributions.

**Kolmogorov-Smirnov test** :

- Lilliefors test is use to check the hypothesis of normality for the Kolmogorov-Smirnov test.
- First, a window of data is collected, then mean and standard deviation is calculated.
- D+ and D- are calculated by taking maximum discrepancy between the empirical distribution function and the cumulative distribution function.
- K statistic is just max(D+,D-)\*Sqrt(n)

# Statistical Functions Parameters

| **Parameters**                                                                                      | **Details**                                                                                           |
| --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| Window Size                                                                                         | This parameter represents the window in which the calculations will be performed.&#xD;&#xA;&#xD;&#xD; |
| Jarque Bera&#xA;Anderson Darling&#xA;Cramer Von Mises&#xA;D Agostino Pearson&#xA;Kolmogorov Smirnov | Select the test you want the processor to calculate.                                                  |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VzZ43EHvf8Vv-8ebKr0wi_image.png" size="80" width="944" height="318" caption="Statistical Functions parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Statistical Functions&#x20;*&#x70;rocessor, refer the [Use the Statistical Tests Function](docId:4JolnzQltN5Kxhd1OdoEV) guide for more details.
:::


[title] Feature Extractor
[path] Product Features/Analytics/Statistical Functions/

The **Feature Extractor&#x20;**&#x70;rocessor extracts meaningful patterns and characteristics from raw PLC data, transforming complex data into features that advanced analytic models can easily understand and utilize.&#x20;

# Feature Extractor Overview

- Let's say you picked a window of *N* values:
- **Minimum**: Gives you minimum of N values
- **Maximum**: Gives you maximum of N values
- **Average**: Gives you the average(mean) of N values
- **Standard Deviation** : squareRoot( (x - average)^2/(N-1) )
- **Variance** : (x - average)^2/(N-1)
- **Median** : N/2 for odd number of window elements, \{\[N-1] + \[N]}/2 for even window elements
- **Kurtosis** : \[ (N)(N+1) / (N-1)(N-2)(N-3) ] \* SIGMA \[(x\_i - x\_avg)/(stdDeviation) ^4]
- **Skewness** : \[ (N) / (N-1)(N-2)] \* SIGMA \[(x\_i - x\_avg)/(stdDeviation) ^3]
- **Zero crossing rate**: Gives you how many times the signal has crossed zero i.e positive value to negative, OR negative value to positive
- **Root Mean Square** : squareRoot\[ SIGMA x^2 / N]
- **Quartiles**: Divides the signal into 4 equal quartiles, based on medians
- **Inter-quartile Range**: Difference between the third quartile and first quartile
- **Mean Absolute Deviation** : abs(x - average)/(N)
- **Average absolute variation** : abs(x - average)/(N)
- The **timer interval** parameter is useful if the connected input tag is currently not polling, but you still want this KPI to publish a value every few seconds, defined by the aforementioned timer.
- If you know your input is going to publish at the expected interval, it is better to disable this timer by entering **0** in the field.

# &#x20;Feature Extractor Parameters

| **Parameters**                                                                                                                                                                                                                                         | **Details**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Window Size                                                                                                                                                                                                                                            | This parameter specifies the window in which to calculate the features, represented in seconds.&#xD;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Minimum&#xA;Maximum&#xA;Average&#xA;Standard Deviation&#xA;Variance&#xA;Median&#xA;Kurtosis&#xA;Skewness&#xA;Zero Crossing Rate&#xA;Root Mean Square&#xA;Quartiles&#xA;Inter Quartile Range&#xA;Mean Absolute Deviation&#xA;Average Absolute Variation | Minimum: It gives the minimum value within the specified window size.&#xA;Maximum: This parameter gives you the maximum value within the specified window size.&#xA;Average: It calculates the average (mean) of the values within the window size.&#xA;Standard Deviation: This parameter computes the standard deviation of the values within the window.&#xA;Variance: It calculates the variance of the values within the window.&#xA;Median: This parameter gives you the median of the values within the window.&#xA;Kurtosis: Kurtosis measures the "heaviness" of the tails of the distribution of values within the window.&#xA;Skewness: Skewness measures the asymmetry of the distribution of values within the window.&#xA;Zero Crossing Rate: It determines the number of times the signal crosses zero within the window.&#xA;Root Mean Square: This parameter calculates the root mean square of the values within the window.&#xA;Quartiles: It divides the signal into four equal quartiles based on the medians within the window.&#xA;Inter-Quartile Range: This parameter determines the difference between the third quartile and the first quartile within the window.&#xA;Mean Absolute Deviation: It calculates the mean absolute deviation of the values within the window.&#xA;Average Absolute Variation: This parameter calculates the average absolute variation of the values within the window. |
| Timer Interval                                                                                                                                                                                                                                         | This parameter allows you to set the timer in milliseconds. It's useful for continuous output display when no event is triggering the expression.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Pass Through Value                                                                                                                                                                                                                                     | The Pass Through Value parameter enables you to specify how anomalous data should be handled.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QMvZ6c4btg6YkaCAnfhOP_image.png" size="80" width="942" height="635" caption="Feature Extractor parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Feature Extractor&#x20;*&#x70;rocessor, refer the [Use the Feature Extractor Function](docId:_Km9OY9g1SAFbsElm9zIV) guide for more details.
:::


[title] Output Processors
[path] Product Features/Analytics/

The Analytics module makes use of built-in Output processors to write the results of Statistical Functions and KPIs to a topic or database.&#x20;

The following describes the output processors that are currently available.

# Database Output Processors

## Database Output Overview

- Publish all inputs to a specified DB metric.

## Database Output Parameters

| **Parameters** | **Details**                                        |
| -------------- | -------------------------------------------------- |
| Database       |  If left empty, the default database will be used. |
| Measurement    | Name of the measurement to publish.                |
| Typed          | Publish typed name.                                |

:::hint{type="info"}
**Note**: The *Measurement&#x20;*&#x70;arameter is a required field.&#x20;
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JDCI9S3TMnie_cKt3ofxf_image.png" size="80" width="960" height="499" caption="Database Output parameters" position="center" showCaption="true"}

# DataHub Publish Processors

## DataHub Publish Overview

- Publish events from input to a specified DataHub topic.

## DataHub Publish Parameters

| **Parameters** | **Details**                     |
| -------------- | ------------------------------- |
| Single Topic   |                                 |
| Topic          | Topic name for DataHub publish. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ASXffEXBU02-9f1Z8zL8M_image.png" size="80" width="958" height="428" caption="DataHub Publish parameters" position="center" showCaption="true"}

# StdOut Processors

## StdOut Overview

- Just consumers that print to the console.****
  **Note:** The output is meant for support logs, not for display on the UI.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YzJwpGXb-4ivagyBPtho__image.png" size="80" width="955" height="321" caption="StdOut parameters" position="center" showCaption="true"}


[title] Gaussian Filter
[path] Product Features/Analytics/Statistical Functions/

The **Gaussian Filter&#x20;**&#x70;rocessor is a simple Gaussian digital filter.

# Gaussian Filter Overview

- First, the mean, standard deviation and variance of a window of values is calculated.
- Coefficient is calculated by the formula 1/ \{squareRoot(2 \* PI) \* deviations}
- Exponential Part is calculated by the formula exp\{ -(1/2) \* (current - mean)^2 / (dev)^2 }
- Multiplying those values gives the Gaussian Function, and then filtered value is obtained.
- The **timer interval** parameter is useful if the connected input tag is currently not polling, but you still want this KPI to publish a value every few seconds, defined by the aforementioned timer.
- If you know your input is going to publish at the expected interval, it is better to disable this timer by entering **0** in the field.

# Gaussian Filter Parameters

| **Parameters**     | **Details**                                                                                                                                                                                 |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Window Size        | This parameter specifies the window in which the Gaussian filter calculates its values. The window size represents the number of seconds over which the Gaussian filter operates.&#xA;&#xD; |
| Timer Interval     | Timer in milliseconds. If no event, use this timer to keep displaying the output continually. Enter zero to disable.                                                                        |
| Pass Through Value | The Pass Through Value parameter enables you to specify how anomalous data should be handled.                                                                                               |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cMFJyFjyJuQKF70iEj4wC_image.png" size="80" width="942" height="379" caption="Gaussian Filter parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Gaussian Filter&#x20;*&#x70;rocessor, refer the [Use the Gaussian Filter Function](docId\:mPsZHt79rd-PujWaT_73M) guide for more details.
:::


[title] TensorFlow Images Processor
[path] Product Features/Analytics/Statistical Functions/

# TensorFlow Images Overview

- Processor for feeding images to an already created TensorFlow model.

# TensorFlow Images Parameters

| **Parameters**    | **Details**                                                                                                                                         |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| Model Path        | This parameter specifies the file path for the pre-trained TensorFlow model that will be used for processing the images.                            |
| Tags              | This parameter allows you to specify tags for loading the model. If there are multiple tags, you can separate them using commas.                    |
| Input Operation   | This parameter refers to the input tensor that was used when creating the TensorFlow model. Usually the dictionary of values you feed to the model. |
| Output Operation  | This parameter refers to the output tensor used during the creation of the TensorFlow model. It usually represents the output of the model.         |
| Gray              | This parameter specifies whether the images should be processed in grayscale or color.                                                              |
| Image Format      | This parameter likely defines the format of the input images, such as JPEG, PNG, etc.                                                               |
| Time Shift Ms     | This parameter indicates by how many milliseconds the current timestamp should be shifted.                                                          |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Oy3l2mDOr48Ej9uLiaOMn_image.png" size="80" width="939" height="629" caption="TensorFlow Images Processor parameters" position="center" showCaption="true"}


[title] Rounding
[path] Product Features/Analytics/Statistical Functions/

The **Rounding** processor allows you to make a number simpler while keeping its value close to the absolute value.

# Rounding Overview

- Enter the number of digits you would like to round to e.g. entering 2, will give results like 10.22. 10.44 (but not 10.556).
  - Entering 0 will ignore all floating point values, and just give the integer value.
- RoundNearest returns the nearest decimal e.g. 10.6 gives 11, 10.1 gives 10.
- RoundUp returns the next smallest decimal e.g. 10.6 gives 11, 10.1 also gives 11.
- RoundDown returns the previous largest decimal e.g. 10.6 gives 10, 10.1 also gives 10.
- RoundEven returns the nearest integer, rounding ties to even (number of digits entered are irrelevant for this case).

# Rounding Parameters

| **Parameters** | **Details**                                                               |
| -------------- | ------------------------------------------------------------------------- |
| Digits         | This parameter determines the number of decimal places to round to. &#xD; |
| Method         | This parameter allows you to select the rounding method.                  |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/80oxL69h4HAoswGvn98jR_image.png" size="80" width="960" height="688" caption="Rounding parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Rounding&#x20;*&#x70;rocessor, refer the [Use the Rounding Function](docId\:CITM1lr6a_HGFc4mICTJa) guide for more details.
:::


[title] Machine Learning Prediction
[path] Product Features/Analytics/Machine Learning Models/Model Types/

This use case is a customized timeseries forecasting version of making a CNN prediction model from the TensorFlow website.

The complete tutorial is available on the [TensorFlow](https://www.tensorflow.org/tutorials/structured_data/time_series) website.

# Setup and Data

If you run the script below, you see an output of a DataFrame (table).

:::BlockQuote
\#### Initial Imports
import os
import datetime
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
import tensorflow as tf
\### Optional for setting up plot sizes
mpl.rcParams\['figure.figsize'] = (8, 6)
mpl.rcParams\['axes.grid'] = False
\###  Get Data
zip\_path = tf.keras.utils.get\_file(
origin='[https://storage.googleapis.com/tensorflow/tf-keras-datasets/jena\_climate\_2009\_2016.csv.zip](https://storage.googleapis.com/tensorflow/tf-keras-datasets/jena_climate_2009_2016.csv.zip)',
fname='jena\_climate\_2009\_2016.csv.zip',
extract=True)
csv\_path, \_ = os.path.splitext(zip\_path)
\##  Read Data into pandas data frame&#x20;
df = pd.read\_csv(csv\_path)
​# slice \[start\:stop\:step], starting from index 5 take every 6th record.
df = df\[5::6]
​
date\_time = pd.to\_datetime(df.pop('Date Time'), format='%d.%m.%Y %H:%M:%S')
​
print(df.head())
:::

:::BlockQuote
p (mbar)  T (degC)  Tpot (K)  Tdew (degC)  ...  rho (g/m\*\*3)  wv (m/s)  max. wv (m/s)  wd (deg)
5     996.50     -8.05    265.38        -8.78  ...       1307.86      0.21           0.63     192.7
11    996.62     -8.88    264.54        -9.77  ...       1312.25      0.25           0.63     190.3
17    996.84     -8.81    264.59        -9.66  ...       1312.18      0.18           0.63     167.2
23    996.99     -9.05    264.34       -10.02  ...       1313.61      0.10           0.38     240.0
29    997.46     -9.63    263.72       -10.65  ...       1317.19      0.40           0.88     157.0
​
\[5 rows x 14 columns]
:::

# Feature Engineering/Data Standardization

Now with the quick setup done, we can do some feature engineering/extraction and data manipulation which will help the model.

There are plenty of options when it comes to feature engineering and it is case-by-case basis, but for this example, it will be kept almost exactly the same as TensorFlow.&#x20;

:::BlockQuote
\###  Select as many or as little number of columns of variables
columns = \['p (mbar)','T (degC)','Tpot (K)','Tdew (degC)','rh (%)', 'VPmax (mbar)', 'VPact (mbar)', 'VPdef (mbar)', 'sh (g/kg)','H2OC (mmol/mol)','rho (g/m\*\*3)','wv (m/s)', 'max. wv (m/s)', 'wd (deg)']&#x20;
\### A DataFrame containing the selected columns is named as "features" features = df\[columns]
features.index = date\_time
​### Optional - If you want to see a plot of these features\_ = features.plot(subplots=True)

\### Optional - smoother version of the plot by using only the first month of datafeatures = df\[columns]\[:480]
features.index = date\_time\[:480]
\_ = features.plot(subplots=True)

plt.show()

​### To see the statistics of the selected data print(df.describe().transpose())
:::

:::BlockQuote

&#x20;                  count         mean        std      min      25%      50%       75%      max
p (mbar)         70091.0   989.212842   8.358886   913.60   984.20   989.57   994.720  1015.29
T (degC)         70091.0     9.450482   8.423384   -22.76     3.35     9.41    15.480    37.28
Tpot (K)         70091.0   283.493086   8.504424   250.85   277.44   283.46   289.530   311.21
Tdew (degC)      70091.0     4.956471   6.730081   -24.80     0.24     5.21    10.080    23.06
rh (%)           70091.0    76.009788  16.474920    13.88    65.21    79.30    89.400   100.00
VPmax (mbar)     70091.0    13.576576   7.739883     0.97     7.77    11.82    17.610    63.77
VPact (mbar)     70091.0     9.533968   4.183658     0.81     6.22     8.86    12.360    28.25
VPdef (mbar)     70091.0     4.042536   4.898549     0.00     0.87     2.19     5.300    46.01
sh (g/kg)        70091.0     6.022560   2.655812     0.51     3.92     5.59     7.800    18.07
H2OC (mmol/mol)  70091.0     9.640437   4.234862     0.81     6.29     8.96    12.490    28.74
rho (g/m\*\*3)     70091.0  1216.061232  39.974263  1059.45  1187.47  1213.80  1242.765  1393.54
wv (m/s)         70091.0     1.702567  65.447512 -9999.00     0.99     1.76     2.860    14.01
max. wv (m/s)    70091.0     2.963041  75.597657 -9999.00     1.76     2.98     4.740    23.50
wd (deg)         70091.0   174.789095  86.619431     0.00   125.30   198.10   234.000   360.00
:::

**Plot of entire data set**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7ohVkEWJ_L-s8vV-Ne5oP_image.png" size="80" width="1074" height="517" caption="Plot of entire data set" position="center" showCaption="true"}

**Plot of initial part of data set**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SkRWGmWlUYdgTAb7OJfcc_image.png" size="80" width="1078" height="529" caption="Plot of initial part of data set" position="center" showCaption="true"}

## Cleanup

Most of this section is highly dependent on the kind of data being used. This data is of the weather, and various parameters are used to predict the temperature. So most of this cleanup is specific to these kinds of datasets, and maybe completely irrelevant to other kinds of datasets.

## Wind Velocity

As the minimum value of wind velocity (wv m/s) and max. wv m/s is -9999, it seems incorrect, as we already have wind direction, let's correct this minimum.

:::BlockQuote
wv = df\['wv (m/s)']
bad\_wv = wv == -9999.0
wv\[bad\_wv] = 0.0

max\_wv = df\['max. wv (m/s)']
bad\_max\_wv = max\_wv == -9999.0
max\_wv\[bad\_max\_wv] = 0.0
​### check if original data frame is edited correctly print(df\['wv (m/s)'].min())
​### Expected value 0.0
:::

:::hint{type="info"}
**Note**: This may not apply to all kinds of datasets.&#x20;
:::

## Changing Wind Variables

To see why we need to change the wind variables, lets plot them first.

:::BlockQuote
plt.figure()
plt.hist2d(df\['wd (deg)'], df\['wv (m/s)'], bins=(50, 50), vmax=400)
plt.colorbar()
plt.xlabel('Wind Direction \[deg]')
plt.ylabel('Wind Velocity \[m/s]')
​
\### If you forgot to add this earlier
\### plt.show()
:::

**Original Wind Variables**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LOzLCD6IrVKjOb9g_2Aef_image.png" size="80" width="813" height="641" caption="Original wind variables" position="center" showCaption="true"}

Not to get into too many details, but ideally 0 degrees and 360 degrees should be next to each other, which they aren't - and it should not be a sharp change at 0 degree mark. Also, direction of the wind does not matter if its velocity is 0 (no wind).

So let's make some changes to the DataFrame and make wind velocity a vector, rather than scalar with degrees.

:::BlockQuote
\### Remove these columns from the data frame and replace them as vectors
wv = df.pop('wv (m/s)')
max\_wv = df.pop('max. wv (m/s)')

​### Convert to radians&#x20;
wd\_rad = df.pop('wd (deg)')\*np.pi / 180

​### Calculate the wind x and y components df\['Wx'] = wv*np.cos(wd\_rad)
df\['Wy'] = wv*np.sin(wd\_rad)

​### Calculate the max wind x and y components df\['max Wx'] = max\_wv*np.cos(wd\_rad)
df\['max Wy'] = max\_wv*np.sin(wd\_rad)

​### check the histogram again, with better representation of wind variables plt.figure()
plt.hist2d(df\['Wx'], df\['Wy'], bins=(50, 50), vmax=400)
plt.colorbar()
plt.xlabel('Wind X \[m/s]')
plt.ylabel('Wind Y \[m/s]')
ax = plt.gca()
ax.axis('tight')
​### plt.show()
:::

**Modified Wind Variables**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cS2KmVcyOaJTNM4KJTxLM_image.png" size="80" width="809" height="637" caption="Modified wind variables" position="center" showCaption="true"}

The model interprets this kind of wind variables better than it does with velocity and direction.

:::BlockQuote
\### Optional - Check your data frame again to see what modifications have been made so far&#x20;
print(df.head())
print(df.describe().transpose())
:::

:::BlockQuote
&#x20;   p (mbar)  T (degC)  Tpot (K)  Tdew (degC)  ...        Wx        Wy    max Wx    max Wy
5     996.50     -8.05    265.38        -8.78  ... -0.204862 -0.046168 -0.614587 -0.138503
11    996.62     -8.88    264.54        -9.77  ... -0.245971 -0.044701 -0.619848 -0.112645
17    996.84     -8.81    264.59        -9.66  ... -0.175527  0.039879 -0.614344  0.139576
23    996.99     -9.05    264.34       -10.02  ... -0.050000 -0.086603 -0.190000 -0.329090
29    997.46     -9.63    263.72       -10.65  ... -0.368202  0.156292 -0.810044  0.343843
​
\[5 rows x 15 columns]
​
&#x20;                  count         mean        std  ...          50%          75%          max
p (mbar)         70091.0   989.212842   8.358886  ...   989.570000   994.720000  1015.290000
T (degC)         70091.0     9.450482   8.423384  ...     9.410000    15.480000    37.280000
Tpot (K)         70091.0   283.493086   8.504424  ...   283.460000   289.530000   311.210000
Tdew (degC)      70091.0     4.956471   6.730081  ...     5.210000    10.080000    23.060000
rh (%)           70091.0    76.009788  16.474920  ...    79.300000    89.400000   100.000000
VPmax (mbar)     70091.0    13.576576   7.739883  ...    11.820000    17.610000    63.770000
VPact (mbar)     70091.0     9.533968   4.183658  ...     8.860000    12.360000    28.250000
VPdef (mbar)     70091.0     4.042536   4.898549  ...     2.190000     5.300000    46.010000
sh (g/kg)        70091.0     6.022560   2.655812  ...     5.590000     7.800000    18.070000
H2OC (mmol/mol)  70091.0     9.640437   4.234862  ...     8.960000    12.490000    28.740000
rho (g/m\*\*3)     70091.0  1216.061232  39.974263  ...  1213.800000  1242.765000  1393.540000
Wx               70091.0    -0.627813   1.987440  ...    -0.633142     0.299975     8.244699
Wy               70091.0    -0.407068   1.552621  ...    -0.293467     0.450077     7.733831
max Wx           70091.0    -1.018681   3.095279  ...    -1.117029     0.627619    11.913133
max Wy           70091.0    -0.733589   2.611890  ...    -0.527021     0.822895    14.302308
​
:::

**Quick Summary**

- We took our desired number of features/columns from the original data set
- Modified the data such that there is no -9999 as the minimum value in the wind velocity
- Changed wind variables from wind velocity + wind direction (degrees) into -> wind velocity vector in x & y components

## More Cleanup

Timestamp, date-time in string, and time in seconds is not really that useful for the model, so we can make features instead.

We can convert date-time to seconds, and then to sin & cos of years and days. This will help simplify input to the model and make it more useful to identify periodicity in the data.

:::BlockQuote
\### Convert timestamp in data to seconds
timestamp\_s = date\_time.map(datetime.datetime.timestamp)
​
day = 24*60*60
year = (365.2425)\*day
​### Make useful features out of this for the data frame&#x20;

df\['Day sin'] = np.sin(timestamp\_s \* (2 \* np.pi / day))
df\['Day cos'] = np.cos(timestamp\_s \* (2 \* np.pi / day))
df\['Year sin'] = np.sin(timestamp\_s \* (2 \* np.pi / year))
df\['Year cos'] = np.cos(timestamp\_s \* (2 \* np.pi / year))
​### To see how this is useful for the model, try visualizing it in terms of frequency
\### This part is only if you want to know how the above features will be helpful to the model
\### no other changes will be made with the following

​# fft = tf.signal.rfft(df\['T (degC)'])
\# f\_per\_dataset = np.arange(0, len(fft))
\# n\_samples\_h = len(df\['T (degC)'])
\# hours\_per\_year = 24\*365.2524
\# years\_per\_dataset = n\_samples\_h/(hours\_per\_year)
\# f\_per\_year = f\_per\_dataset/years\_per\_dataset
\# plt.figure()
\# plt.step(f\_per\_year, np.abs(fft))
\# plt.xscale('log')
\# plt.ylim(0, 400000)
\# plt.xlim(\[0.1, max(plt.xlim())])
\# plt.xticks(\[1, 365.2524], labels=\['1/Year', '1/day'])
\# \_ = plt.xlabel('Frequency (log scale)')
:::

# Preparing Data for the Model

All the necessary cleanups and some modifications to the data are done, now let's prepare the data for the model.

## Split the Data

Split the data into training, validation and testing with ratios training-70% , validation-20%, testing-10%.

:::BlockQuote
column\_indices = \{name: i for i, name in enumerate(df.columns)}

n = len(df)
train\_df = df\[0\:int(n\*0.7)]
val\_df = df\[int(n\*0.7)\:int(n\*0.9)]
test\_df = df\[int(n\*0.9):]
​
num\_features = df.shape\[1]
:::

## Normalize the Data

Use the simple mean to normalize the data.

:::BlockQuote
train\_mean = train\_df.mean()
train\_std = train\_df.std()
​
train\_df = (train\_df - train\_mean) / train\_std
val\_df = (val\_df - train\_mean) / train\_std
test\_df = (test\_df - train\_mean) / train\_std
​
df\_std = (df - train\_mean) / train\_std
df\_std = df\_std.melt(var\_name='Column', value\_name='Normalized')
:::

## Quick View of How the Data Looks

:::BlockQuote
plt.figure(figsize=(12, 6))
ax = sns.violinplot(x='Column', y='Normalized', data=df\_std)
\_ = ax.set\_xticklabels(df.keys(), rotation=90)
​### plt.show()
:::

**After Normalization**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9oCk-aiUzzE3OxkK4Ik6n_image.png" size="80" width="1075" height="609" caption="After normalization" position="center" showCaption="true"}

## Functions for Making a Moving Window Generator and Making Plots

This process is a methodology. You can also use other methods. See the [TensorFlow](https://www.tensorflow.org/tutorials/structured_data/time_series) website for more information.

:::BlockQuote
\### Indexes and Offsets
class WindowGenerator():
def **init**(self, input\_width, label\_width, shift,
train\_df=train\_df, val\_df=val\_df, test\_df=test\_df,
label\_columns=None):
\# Store the raw data.
self.train\_df = train\_df
self.val\_df = val\_df
self.test\_df = test\_df
​
\# Work out the label column indices.
self.label\_columns = label\_columns
if label\_columns is not None:
self.label\_columns\_indices = \{name: i for i, name in
enumerate(label\_columns)}
self.column\_indices = \{name: i for i, name in
enumerate(train\_df.columns)}
​
\# Work out the window parameters.
self.input\_width = input\_width
self.label\_width = label\_width
self.shift = shift
​
self.total\_window\_size = input\_width + shift
​
self.input\_slice = slice(0, input\_width)
self.input\_indices = np.arange(self.total\_window\_size)\[self.input\_slice]
​
self.label\_start = self.total\_window\_size - self.label\_width
self.labels\_slice = slice(self.label\_start, None)
self.label\_indices = np.arange(self.total\_window\_size)\[self.labels\_slice]
​
def **repr**(self):
return '\n'.join(\[
f'Total window size: \{self.total\_window\_size}',
f'Input indices: \{self.input\_indices}',
f'Label indices: \{self.label\_indices}',
f'Label column name(s): \{self.label\_columns}'])

\### Split Window
def split\_window(self, features):
inputs = features\[:, self.input\_slice, :]
labels = features\[:, self.labels\_slice, :]
if self.label\_columns is not None:
labels = tf.stack(
\[labels\[:, :, self.column\_indices\[name]] for name in self.label\_columns],
axis=-1)

\# Slicing doesn't preserve static shape information, so set the shapes
\# manually. This way the `tf.data.Datasets` are easier to inspect.

inputs.set\_shape(\[None, self.input\_width, None])
labels.set\_shape(\[None, self.label\_width, None])
​
return inputs, labels
​
WindowGenerator.split\_window = split\_window

\### Plotting

def plot(self, model=None, plot\_col='T (degC)', max\_subplots=3):
inputs, labels = self.example
plt.figure(figsize=(12, 8))
plot\_col\_index = self.column\_indices\[plot\_col]
max\_n = min(max\_subplots, len(inputs))
for n in range(max\_n):
plt.subplot(3, 1, n+1)
plt.ylabel(f'\{plot\_col} \[normed]')
plt.plot(self.input\_indices, inputs\[n, :, plot\_col\_index],
label='Inputs', marker='.', zorder=-10)
​
if self.label\_columns:
label\_col\_index = self.label\_columns\_indices.get(plot\_col, None)
else:
label\_col\_index = plot\_col\_index
​
if label\_col\_index is None:
continue
​
plt.scatter(self.label\_indices, labels\[n, :, label\_col\_index],
edgecolors='k', label='Labels', c='#2ca02c', s=64)
if model is not None:
predictions = model(inputs)
plt.scatter(self.label\_indices, predictions\[n, :, label\_col\_index],
marker='X', edgecolors='k', label='Predictions',
c='#ff7f0e', s=64)
​
if n == 0:
plt.legend()
​
plt.xlabel('Time \[h]')
​
WindowGenerator.plot = plot
​

\### Creating TF datasets

def make\_dataset(self, data):
data = np.array(data, dtype=np.float32)
ds = tf.keras.preprocessing.timeseries\_dataset\_from\_array(
data=data,
targets=None,
sequence\_length=self.total\_window\_size,
sequence\_stride=1,
shuffle=True,
batch\_size=32,)
​
ds = ds.map(self.split\_window)
​
return ds
​
WindowGenerator.make\_dataset = make\_dataset

\### Add properties for window generators such as train, validation, test

@property
def train(self):
return self.make\_dataset(self.train\_df)
​
@property
def val(self):
return self.make\_dataset(self.val\_df)
​
@property
def test(self):
return self.make\_dataset(self.test\_df)
​
@property
def example(self):
"""Get and cache an example batch of `inputs, labels` for plotting."""
result = getattr(self, '\_example', None)
if result is None:
\# No example batch was found, so get one from the `.train` dataset
result = next(iter(self.train))
\# And cache it for next time
self.\_example = result
return result
​
WindowGenerator.train = train
WindowGenerator.val = val
WindowGenerator.test = test
WindowGenerator.example = example
:::

# Extremely Simplistic Model

To truly understand what is going on, let's define a very simple model, which uses the variables that are currently in place, and makes a prediction for the next hour.

:::BlockQuote
\### OPTIONAL
\### very simple model - predicts 1 timestamp (1hr) in the future&#x20;

​### generate window for the simple model
single\_step\_window = WindowGenerator(
input\_width=1, label\_width=1, shift=1,
label\_columns=\['T (degC)'])

​### 1 timetamp is inputed, and prediction is made 1 hr in the future for the field "T (degC)"
print(single\_step\_window)&#x20;

\### shows you what the batch size is, how many timstamps consumed by input/ predicted by output and the number of features used/number of labels in the output (in out case only 1 label in output - T degC )

for example\_inputs, example\_labels in single\_step\_window\.train.take(1):
print(f'Inputs shape (batch, time, features): \{example\_inputs.shape}')
print(f'Labels shape (batch, time, features): \{example\_labels.shape}')

\### Create extremely basic model to be fed by the above window&#x20;

class Baseline(tf.keras.Model):
def **init**(self, label\_index=None):
super().**init**()
self.label\_index = label\_index
​
def call(self, inputs):
if self.label\_index is None:
return inputs
result = inputs\[:, :, self.label\_index]
return result\[:, :, tf.newaxis]&#x20;

baseline = Baseline(label\_index=column\_indices\['T (degC)'])
​
baseline.compile(loss=tf.losses.MeanSquaredError(),
metrics=\[tf.metrics.MeanAbsoluteError()])
​
val\_performance = \{}
performance = \{}
val\_performance\['Baseline'] = baseline.evaluate(single\_step\_window\.val)
:::

:::BlockQuote
Total window size: 2
Input indices: \[0]
Label indices: \[1]
Label column name(s): \['T (degC)']
​
Inputs shape (batch, time, features): (32, 1, 19)
Labels shape (batch, time, features): (32, 1, 1)
​
439/439 \[==============================] - 2s 5ms/step - loss: 0.0128 - mean\_absolute\_error: 0.0785
:::

To make the model more interesting, repeat this window for 24 hrs instead just 1 hr.

:::BlockQuote
\### OPTIONAL&#x20;
wide\_window = WindowGenerator(
input\_width=24, label\_width=24, shift=1,
label\_columns=\['T (degC)'])
​
print(wide\_window)
print('Input shape:', single\_step\_window\.example\[0].shape)
print('Output shape:', baseline(single\_step\_window\.example\[0]).shape)
wide\_window\.plot(baseline) ​

\### plt.show()
:::

:::BlockQuote
Total window size: 25
Input indices: \[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
Label indices: \[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]
Label column name(s): \['T (degC)']
​
Input shape: (32, 1, 19)
Output shape: (32, 1, 1)
:::

**Three Batches of the Basic Model**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CPGezv6gU48eUgOMHYp5i_image.png" size="80" width="879" height="588" caption="Three batches of the basic model" position="center" showCaption="true"}

## Actual CNN Model

:::BlockQuote
MAX\_EPOCHS = 20
​### make a function to be able to quickly compile and fit model

def compile\_and\_fit(model, window, patience=2):
early\_stopping = tf.keras.callbacks.EarlyStopping(monitor='val\_loss',
patience=patience,
mode='min')
​
model.compile(loss=tf.losses.MeanSquaredError(),
optimizer=tf.optimizers.Adam(),
metrics=\[tf.metrics.MeanAbsoluteError()])
​
history = model.fit(window\.train, epochs=MAX\_EPOCHS,
validation\_data=window\.val,
callbacks=\[early\_stopping])
return history&#x20;

\### Use this much data

CONV\_WIDTH = 48

\### how many values to predict

LABEL\_WIDTH = 1

\### for plotting purposes

INPUT\_WIDTH = LABEL\_WIDTH + (CONV\_WIDTH - 1)

\### how many timesteps in future is the predicted value

SHIFT = 12
​
conv\_window = WindowGenerator(
input\_width = INPUT\_WIDTH,
label\_width = LABEL\_WIDTH,
shift = SHIFT,
label\_columns = \['T (degC)'])
​
print(conv\_window)

\### CNN model

conv\_model = tf.keras.Sequential(\[
tf.keras.layers.Conv1D(filters=32,
kernel\_size=(CONV\_WIDTH,),
activation='relu'),
tf.keras.layers.Dense(units=32, activation='relu'),
tf.keras.layers.Dense(units=1, name='predict'),
])
​
print("Conv model on `conv_window`")
print('Input shape:', conv\_window\.example\[0].shape)
print('Output shape:', conv\_model(conv\_window\.example\[0]).shape)
​
history = compile\_and\_fit(conv\_model, conv\_window)
​
val\_performance\['Conv'] = conv\_model.evaluate(conv\_window\.val)
performance\['Conv'] = conv\_model.evaluate(conv\_window\.test, verbose=0)
​
conv\_model.summary()
​
conv\_window\.plot(conv\_model)
:::

:::BlockQuote
Total window size: 60
Input indices: \[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47]
Label indices: \[59]
Label column name(s): \['T (degC)']
​
Conv model on `conv_window`
Input shape: (32, 48, 19)
Output shape: (32, 1, 1)
​
Epoch 1/20
1532/1532 \[==============================] - 12s 8ms/step - loss: 0.1032 - mean\_absolute\_error: 0.2499 - val\_loss: 0.1030 - val\_mean\_absolute\_error: 0.2499
Epoch 2/20
1532/1532 \[==============================] - 11s 7ms/step - loss: 0.0859 - mean\_absolute\_error: 0.2289 - val\_loss: 0.0965 - val\_mean\_absolute\_error: 0.2427
Epoch 3/20
1532/1532 \[==============================] - 12s 8ms/step - loss: 0.0802 - mean\_absolute\_error: 0.2204 - val\_loss: 0.1005 - val\_mean\_absolute\_error: 0.2490
Epoch 4/20
1532/1532 \[==============================] - 11s 7ms/step - loss: 0.0764 - mean\_absolute\_error: 0.2152 - val\_loss: 0.1084 - val\_mean\_absolute\_error: 0.2593
437/437 \[==============================] - 2s 5ms/step - loss: 0.1084 - mean\_absolute\_error: 0.2593
Model: "sequential"&#x20;
Layer (type)                 Output Shape              Param #
conv1d (Conv1D)              (None, 1, 32)             29216
dense (Dense)                (None, 1, 32)             1056
predict (Dense)              (None, 1, 1)              33

Total params: 30,305
Trainable params: 30,305
Non-trainable params: 0
:::



**CNN Predictions**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/by4vYkgqDf10zqf8Ym-YQ_image.png" size="80" width="881" height="577" caption="CNN Predictions " position="center" showCaption="true"}

## Performance Comparison

:::BlockQuote
\### Compare performances

x = np.arange(len(performance))
width = 0.3
metric\_name = 'mean\_absolute\_error'
metric\_index = conv\_model.metrics\_names.index('mean\_absolute\_error')
val\_mae = \[v\[metric\_index] for v in val\_performance.values()]
test\_mae = \[v\[metric\_index] for v in performance.values()]
​
plt.figure()
plt.ylabel('mean\_absolute\_error \[T (degC), normalized]')
plt.bar(x - 0.17, val\_mae, width, label='Validation')
plt.bar(x + 0.17, test\_mae, width, label='Test')
plt.xticks(ticks=x, labels=performance.keys(),
rotation=45)
\_ = plt.legend()
plt.show()
:::

**Performance Comparison**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/s0q3PDKpMACTljFGwUuwB_image.png" size="80" width="1071" height="568" caption="Performance Comparison" position="center" showCaption="true"}

## Save the Model

Saving a model in Keras is simple.

:::BlockQuote
\### Replace enter the path (in string) where you want to save the model, and then the name of the model with a /
conv\_model.save("\{PATH\_TO\_SAVE\_MODEL}/\{NAME\_OF\_SAVED\_MODEL}")

\### How to load a model
\# model = tf.keras.models.load\_model("\{PATH\_TO\_SAVE\_MODEL}/\{NAME\_OF\_SAVED\_MODEL}")
\# print("loaded")

\# model.summary()
​### How to check all the input tensors and output tensor names

\# print(os.system("saved\_model\_cli show --dir \{PATH\_TO\_SAVE\_MODEL}/\{NAME\_OF\_SAVED\_MODEL} --all"))
:::

:::BlockQuote
MetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:
​
signature\_def\['\_\_saved\_model\_init\_op']:
The given SavedModel SignatureDef contains the following input(s):
The given SavedModel SignatureDef contains the following output(s):
outputs\['\_\_saved\_model\_init\_op'] tensor\_info:
dtype: DT\_INVALID
shape: unknown\_rank
name: NoOp
Method name is:
​
signature\_def\['serving\_default']:
The given SavedModel SignatureDef contains the following input(s):
inputs\['conv1d\_input'] tensor\_info:
dtype: DT\_FLOAT
shape: (-1, 48, 19)
name: serving\_default\_conv1d\_input:0
The given SavedModel SignatureDef contains the following output(s):
outputs\['predict'] tensor\_info:
dtype: DT\_FLOAT
shape: (-1, 1, 1)
name: StatefulPartitionedCall:0
Method name is: tensorflow/serving/predict
​
Defined Functions:
Function Name: '**call**'
Option #1
Callable with:
Argument #1
inputs: TensorSpec(shape=(None, 48, 19), dtype=tf.float32, name='inputs')
Argument #2
DType: bool
Value: False
Argument #3
DType: NoneType
Value: None
Option #2
Callable with:
Argument #1
conv1d\_input: TensorSpec(shape=(None, 48, 19), dtype=tf.float32, name='conv1d\_input')
Argument #2
DType: bool
Value: False
Argument #3
DType: NoneType
Value: None
Option #3
Callable with:
Argument #1
inputs: TensorSpec(shape=(None, 48, 19), dtype=tf.float32, name='inputs')
Argument #2
DType: bool
Value: True
Argument #3
DType: NoneType
Value: None
Option #4
Callable with:
Argument #1
conv1d\_input: TensorSpec(shape=(None, 48, 19), dtype=tf.float32, name='conv1d\_input')
Argument #2
DType: bool
Value: True
Argument #3
DType: NoneType
Value: None
​
Function Name: '\_default\_save\_signature'
Option #1
Callable with:
Argument #1
conv1d\_input: TensorSpec(shape=(None, 48, 19), dtype=tf.float32, name='conv1d\_input')
​
Function Name: 'call\_and\_return\_all\_conditional\_losses'
Option #1
Callable with:
Argument #1
conv1d\_input: TensorSpec(shape=(None, 48, 19), dtype=tf.float32, name='conv1d\_input')
Argument #2
DType: bool
Value: True
Argument #3
DType: NoneType
Value: None
Option #2
Callable with:
Argument #1
conv1d\_input: TensorSpec(shape=(None, 48, 19), dtype=tf.float32, name='conv1d\_input')
Argument #2
DType: bool
Value: False
Argument #3
DType: NoneType
Value: None
Option #3
Callable with:
Argument #1
inputs: TensorSpec(shape=(None, 48, 19), dtype=tf.float32, name='inputs')
Argument #2
DType: bool
Value: True
Argument #3
DType: NoneType
Value: None
Option #4
Callable with:
Argument #1
inputs: TensorSpec(shape=(None, 48, 19), dtype=tf.float32, name='inputs')
Argument #2
DType: bool
Value: False
Argument #3
DType: NoneType
Value: None
:::


[title] Google Cloud Pub/Sub Connector
[path] Product Features/Integration/Integration Connectors/Cloud Service Providers/

Review the [Google Cloud Pub/Sub Integration Guide](docId\:c6Zowc1akXEA0SxlPg2oa).&#x20;

## Overview

Google Cloud Pub/Sub integration enables an Edge System to connect with Google Cloud Pub/Sub.

## Supported Communication

- Outbound (Publish data from Edge to Google Cloud Pub/Sub) - Yes
- Inbound (Subscribe to data from Google Cloud Pub/Sub to Edge ) - Yes

## Configurations

| **Variable**                           | **Detail**                                                                                                                                                                                                                       | **Required** |
| -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                                   | Enter a name for the connector.                                                                                                                                                                                                  | Yes          |
| Service account key                    | Service account key is a JSON or P12 file containing authentication credentials for programmatic access to Google services.                                                                                                      | Yes          |
| Project id                             | Project id is a unique identifier for a specific project within the Google Cloud Platform ecosystem.                                                                                                                             | Yes          |
| Private key                            | Private Key ID is a unique identifier associated with a service account's private key, used for authentication and access control in Google services.                                                                            | No           |
| Client email                           | Client Email is an email address associated with a service account in a Google Cloud project, used for authentication and access to resources.                                                                                   | No           |
| Default topic                          | The default topic for publishing.                                                                                                                                                                                                | Yes          |
| Show custom attributes                 | If enabled, custom attributes are key-value pairs that allow you to attach additional metadata to messages in a Google Cloud Pub/Sub topic for custom processing and filtering.                                                  | No           |
| Parallel publish count                 | Parallel publish count refers to the number of concurrent message publishing operations that can be performed simultaneously using the Google Cloud Pub/Sub service, enhancing message throughput.                               | Yes          |
| Parallel byte threshold                | Parallel byte threshold is the configurable limit on the size of the data payload for a batch of messages that determines when parallel publishing of messages is triggered in Google Cloud Pub/Sub for optimized data transfer. | No           |
| Publish count threshold                | Publish count threshold is the set limit on the number of messages in a batch that triggers publishing to Google Cloud Pub/Sub, optimizing message delivery.                                                                     | No           |
| Publish delay threshold (Milliseconds) | Publish delay threshold (Milliseconds) is the specified time interval after which accumulated messages are automatically published to Google Cloud Pub/Sub to control message delivery latency.                                  | No           |
| Throttling limit                       | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                           | No           |
| Persistent storage                     | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                            | No           |
| Queue mode                             | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                             | No           |


[title] Manage Catalog Apps
[path] Product Features/Applications/Catalog Apps/

You can manage catalog apps by navigating to **Applications&#x20;**>**&#x20;Catalog Apps**.&#x20;

# Change Application View

From the *Applications > Catalog Apps* pane, click the icons for **Grid view** or **List view** to change how you view your devices.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/davSVIT3w1e_wS4BZIi1i_image.png" size="80" width="897" height="295" caption="Icons to change application view" position="center" showCaption="true"}

# Filter and Search Applications

From the *Applications > Catalog Apps* pane, use the search bar to filter the applications by name.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HOsmujrNny_2ydAxW36PZ_image.png" size="80" width="897" height="295" caption="Catalog apps search bar" position="center" showCaption="true"}

# Display Application Information

When you click an application tile (tile view) or application name (list view), information displays about the application. You can click the Container drop-down list to view the containers that are running for the application.

You can view the IP address, port number, memory usage, and the up state of the application container. The up state indicates how long the application container has been running.

You can view graphs of the CPU, Memory Load, Network, and Storage usage. Mousing over the chart provides further details at a particular time point.

The X axis of the graph is the time. The following units represent the Y axis depending on the type of graph:

- **CPU**: A number ranging from 0 to 2.00. 0 means that there is no CPU backup, 1.00 means that the CPU is at full capacity, and 2.00 means that the CPU is currently backed up with too many processes.
- **Memory Load**: Megabytes
- **Network**: mbps (Megabits per Second)
- **Storage**: A number ranging from -1.00 to 1.00 representing the percentage of time waiting on disk IO speed.

Below the graphs, you can view the logs for the application. You can download the log for diagnostic purposes, refresh it, and expand the log file view. You can select the amount of time the log shows.

# Manage Individual Applications

From the G*rid* view, you can use device tiles to access management options. Refer to the image and callouts below.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hw7V3-ZGMri7anIDDi6xu_image.png" size="80" width="897" height="295" caption="Management options for applications" position="center" showCaption="true"}

\[1] **Start or stop application**

\[2] **Refresh application**

\[3] **Remove application**: Before removing an application, you must stop a running container. Please note that removing an application removes all the application data and configuration files for the application.&#x20;


[title] Manage Networks
[path] Product Features/Applications/Networks/

You can manage your networks by navigating to **Applications&#x20;**>**&#x20;Networks**.

# View Networks

Refer to the image and callouts below for viewing options of your networks.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JLSGFPqkMuG62N7tpEVDG_image.png "Network viewing options")

\[1] **Name column**: Click the **Name&#x20;**&#x63;olumn to sort network names in ascending and descending order.&#x20;

\[2] **Show filter**: Open the search bar to search by network name.&#x20;

# Manage Individual Networks

You can use the **Action menu** for a network to view management options.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rar5rLJvQnFEOjfQOjOYL_image.png "Network action menu options")

- **Remove**: Remove the network from the *Networks&#x20;*&#x70;ane.&#x20;
- **Connect/Disconnect container**: After selecting to connect or disconnect the container from the network, select the appropriate container.&#x20;


[title] DB - MySQL
[path] Product Features/Integration/Integration Connectors/Databases/

Review the [MySQL Integration Guide](docId\:vA1LuXPm0Kh57qTIs56FT).&#x20;

## Overview

MySQL integration enables an Edge System to connect with a MySQL database.&#x20;

## Supported Versions

MySQL (4.1+), MariaDB, Percona Server, Google CloudSQL or Sphinx (2.2.3+)

## Supported Communication

- Outbound (Edge to Database) - Yes
- Inbound (Database to Edge) - No

## Configurations

| **Variable**         | **Detail**                                                                                                                                                                                                                                                                                                   | **Required** |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------ |
| Name                 | Enter a name for the connector                                                                                                                                                                                                                                                                               | Yes          |
| Hostname             | IP Address or Hostname of MSSQL Server (Must be reachable from the Edge system)                                                                                                                                                                                                                              | Yes          |
| Port                 | MSSQL Server port                                                                                                                                                                                                                                                                                            | Yes          |
| Username             | User name                                                                                                                                                                                                                                                                                                    | Yes          |
| Password             | User password                                                                                                                                                                                                                                                                                                | No           |
| Database             | Database name                                                                                                                                                                                                                                                                                                | Yes          |
| Table                | Table name                                                                                                                                                                                                                                                                                                   | Yes          |
| Mapping              | Data from a predefined table could be mapped into a custom one. Example: \{"from": "to"} where "from" is a column from predefined table, and "to" is a column from destination table. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.  | No           |
| Create table         | If selected and table doesn't exist, the table is created with the necessary format. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.                                                                                                   | No           |
| Commit timeout       | Transaction commit timeout (ms)                                                                                                                                                                                                                                                                              | No           |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout                                                                                                                                                                                                                           | No           |
| Bulk insert count    | To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags. Available for Litmus Edge version 3.11.1 and later.                                      | No           |
| Throttling limit     | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                       | No           |
| Persistent storage   | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                        | No           |
| Queue mode           | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                         | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** |
| ----------- | ----------- |
| MySQL       | 8           |


[title] DB - InfluxDB v2.x+ SSL
[path] Product Features/Integration/Integration Connectors/Databases/

Review the [InfluxDB v2.x SSL Integration Guide](docId:_L5n_qRhgHNjmjMcs-WZs).&#x20;

## Overview

InfluxDB v2.x SSL integration enables an Edge System to connect with an InfluxDB database using SSL authentication.&#x20;

:::hint{type="info"}
**Note**: The following data types and formats are not viewable in InfluxDB:

- string
- char
- JSON payloads
:::

## Supported Versions

- Compatible with InfluxDB 2.x

## Supported Communication Directions

- Outbound (Write from Edge to Database) - Yes
- Inbound (Read from Database to Edge) - No

## Variable Definitions

| **Variable**                  | **Details**                                                                                                                                                                               |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name                          | Name for the connector                                                                                                                                                                    |
| Address                       | InfluxDB database URL (for example, http\://localhost:8086)                                                                                                                               |
| Bucket                        | Bucket name                                                                                                                                                                               |
| Organization                  | Organization name                                                                                                                                                                         |
| Auth Token                    | Authentication token                                                                                                                                                                      |
| Username                      | User name (optional)                                                                                                                                                                      |
| Password                      | User password (optional)                                                                                                                                                                  |
| CA Certificate                | SSL CA Certificate                                                                                                                                                                        |
| Certificate                   | SSL Certificate                                                                                                                                                                           |
| Private key                   | SSL Private key                                                                                                                                                                           |
| Batch size                    | Batch size                                                                                                                                                                                |
| Batch commit time             | Batch-commit time in seconds                                                                                                                                                              |
| Parallel publish count        | Number of messages to publish simultaneously. Set a value above `1` to batch messages into a single publish request                                                                       |
| Throttling limit              | Limits the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.            |
| Persistent storage            | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages are retained and sent when the connection is restored.    |
| Persistent storage limit size | Maximum amount of data (in GB) to store in connector's persistent storage. Set a limit to prevent excessive disk space usage by failed connectors.                                        |
| Queue mode                    | Sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. |
| Remote Data Topic             | InfluxDB measurement that you want to publish data to.                                                                                                                                    |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product          | Version |
| ---------------- | ------- |
| docker: influxdb | 2.x     |


[title] DB - InfluxDB v1.7.x SSL
[path] Product Features/Integration/Integration Connectors/Databases/

Review the [InfluxDB v1.7.x SSL Integration Guide](docId\:FyYolKgsXLk4XHRbX47V9).&#x20;

## Overview

InfluxDB v1.7x SSL integration enables an Edge System to connect with an InfluxDB database using SSL authentication.

:::hint{type="info"}
**Note**: The following data types and formats are not viewable in InfluxDB:

- string
- char
- JSON payloads
:::

## Supported Versions

- Compatible with InfluxDB 1.x

## Supported Communication Directions

- Outbound (Write from Edge to Database) - Yes
- Inbound (Read Database to Edge) - No

## Variable Definitions

| **Variable**       | **Details**                                                                                                                                                                                           |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name               | Enter a name for the connector                                                                                                                                                                        |
| Address            | Enter the InfluxDB database URL (for example, http\://localhost:8086)                                                                                                                                 |
| Database           | Database name                                                                                                                                                                                         |
| Username           | User name (optional)                                                                                                                                                                                  |
| Password           | User password (optional)                                                                                                                                                                              |
| CA Certificate     | SSL CA Certificate                                                                                                                                                                                    |
| Certificate        | SSL Certificate                                                                                                                                                                                       |
| Private key        | SSL Private key                                                                                                                                                                                       |
| Throttling limit   | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. |
| Queue mode         | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  |
| Remote Data Topic  | InfluxDB measurement that you want to publish data to.                                                                                                                                                |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product          | Version |
| ---------------- | ------- |
| docker: influxdb | 1.7     |


[title] Production Cycle and Cycle Time Radio (CTR)
[path] Product Features/Analytics/Key Performance Indicators/

The **Production Time and Cycle Time Ratio&#x20;**&#x4B;PI mainly deals with production time and the ideal production cycle.&#x20;

# Production Cycle and Cycle Time Radio (CTR) Overview

- Use **Actual Production Time&#xA0;**&#x74;o keep track of how much time it takes to complete production by counting the time between when you received an order to when manufacturing is finished, or counting the time between the start of manufacturing to when inspection ends.
- Use Cycle Time Ratio if you need to monitor the production cycle time compared to an ideal production cycle time.
- The **timer interval&#xA0;**&#x70;arameter is useful if the connected input tag is offline but you still want this KPI to look for a value every few seconds, defined by the timer.
- You should have 2 inputs connected with this KPI, with the definitions of their connections as *manufactureStart* and *manufactureEnd* respectively.
  For example, if you define **Manufacture Start From**: `0 `and **Manufacture Start To**: `1`, this means that when the value from the input tag, with the definition on the connection as *manufactureStart*, will go from 0 to 1, it is an indication that manufacture was started and production cycle should start to be calculated.
  Manufacture End works the same way. **Manufacture End From**: `2 `and **Manufacture End To**: `4 `means whenever the input tag with connection definition as *manufactureEnd&#x20;*&#x67;oes from 2 to 4, it is an indication that manufacture just ended.
- After creating this KPI, you need to add definitions called *manufactureStart* and *manufactureEnd* to the connecting wire, which are event triggers, triggering whenever there is start of manufacturing event and then one more trigger for which represents the end of manufacturing cycle.

# Production Cycle and Cycle Time Radio (CTR) Parameter

| **Parameters**         | **Details**                                                                                                          |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------- |
| Manufacture Start From | The value from which the Manufacture Start event is triggered.&#xD;&#xA;&#xD;                                        |
| Manufacture Start To   | The value to which the Manufacture Start event is triggered.                                                         |
| Manufacture End From   | &#xD;The value from which the Manufacture End event is triggered.                                                    |
| Manufacture End To     | The value to which the Manufacture End event is triggered.                                                           |
| Ideal Cycle Time       | The desired or standard production cycle time, in seconds.                                                           |
| Timer Interval         | Timer in milliseconds. If no event, use this timer to keep displaying the output continually. Enter zero to disable. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2pAXynQ631Y8U-Vf0rBmh_image.png" size="80" width="942" height="588" caption="Production Time/CTR parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Production Cycle and Cycle Time Radio (CTR)&#x20;*&#x4B;PI, refer the [Use the Production Time and Cycle Time Ratio KPI](docId:9ci35eXD6jEEmJ3eqcrO-) guide for more details.
:::


[title] DB - PostgreSQL
[path] Product Features/Integration/Integration Connectors/Databases/

Review the [PostgreSQL Integration Guide](docId\:NKI28N3DMLmhDSaNBY_BB).

## Overview

PostgreSQL integration enables an Edge System to connect with a PostgreSQL database.&#x20;

## Supported Communication

- Outbound (Edge to Database) - Yes
- Inbound (Database to Edge) - No

## Configurations

| **Variable**         | **Detail**                                                                                                                                                                                                                                                                                                   | **Required** |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------ |
| Name                 | Enter a name for the connector                                                                                                                                                                                                                                                                               | Yes          |
| Hostname             | IP Address or Hostname of PostgreSQL Server (Must be reachable from the Edge system)                                                                                                                                                                                                                         | Yes          |
| Port                 | PostgreSQL Server port                                                                                                                                                                                                                                                                                       | Yes          |
| Username             | User name                                                                                                                                                                                                                                                                                                    | Yes          |
| Password             | User password                                                                                                                                                                                                                                                                                                | Yes          |
| Database             | Database name                                                                                                                                                                                                                                                                                                | Yes          |
| Table                | Table name                                                                                                                                                                                                                                                                                                   | Yes          |
| Mapping              | Data from a predefined table could be mapped into a custom one. Example: \{"from": "to"} where "from" is a column from predefined table, and "to" is a column from destination table. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.  | No           |
| Create table         | If selected and table doesn't exist, the table is created with the necessary format. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.                                                                                                   | No           |
| Commit timeout       | Transaction commit timeout (ms)                                                                                                                                                                                                                                                                              | No           |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout                                                                                                                                                                                                                           | No           |
| Bulk insert count    | To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags. Available for Litmus Edge version 3.11.1 and later.                                      | No           |
| Throttling limit     | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                       | No           |
| Queue mode           | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                         | No           |
| Persistent storage   | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                        | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** |
| ----------- | ----------- |
| PostgreSQL  | 12          |


[title] Manage Images
[path] Product Features/Applications/Images/

You can manage images by navigating to **Applications&#x20;**>**&#x20;Images**.&#x20;

Refer to the image and callouts below for management options.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Mby-I5yEx-BUeqNrP8Hq5_image.png" size="80" width="1913" height="420" caption="Image management options" position="center" showCaption="true"}

- **Copy image**: You can copy the image to your clipboard.
- **More info**: View details on the image. Details include the following:
  - ID
  - Size
  - Date and time created
  - Build
  - Tags
  - Dockerfile Details
  - Layers
- **Delete image**: Remove the image from the *Images&#x20;*&#x70;ane. You cannot remove a Docker image that is currently being used to run the respective Docker container.  Docker images not being used as Docker containers should be removed to reduce disk usage.&#x20;


[title] Catalog Apps
[path] Product Features/Applications/

The *Catalog Apps* pane of the *Applications&#x20;*&#x6D;odule shows all the applications deployed from from a marketplace catalog only. It excludes applications deployed directly from a docker run command or an uploaded Docker image. By default, when a Litmus Edge is first activated, the list of deployed applications is empty. &#x20;

Additional applications can be deployed from a Marketplace Catalog. See [Marketplace](docId:-vxhwowPd4S7O4a3cXffr) for details.&#x20;

Additional applications can also be deployed from Litmus Edge Manager, see [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw) for details. You must activate the Litmus Edge device before you can receive any new catalogs/application or changes to an existing Catalog (such as a new application release) from a Litmus Edge Manager.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3B5mtDUhglBTcK-tZ8rTK_catalog-apps897x296.png" size="80" width="897" height="296" caption="Application's Catalog Apps Interface" position="center" showCaption="true"}

Each application is represented by a tile, which provides application status, statistics, and shortcut commands. A colored bar represents the status of the application: green for a Running application and red for all other statuses such as: PullingImageStarted, PullingImage, PullingImageFinished, Starting, LaunchError, Stopping, Stopped, and Exited.

You can filter by name to display fewer application tiles on the *Catalog Apps* pane. You can also click list view above the filter bar and on the right to view all applications as a list.

Clicking an application tile provides the IP address, port number, memory usage, and the up state of the application. The up state indicates how long an application has been running.

You can also see graphs of the CPU, Memory, Network, and Storage usage. Hovering over the chart provides further details at a particular time point.

:::hint{type="info"}
**Limitation**: A catalog *Sync Marketplace***&#xA0;**&#x6F;peration is required if an issue is encountered when deploying &#x61;**&#xA0;***Catalog App*. The issue may arise due to the Catalog App's respective Container Registry being unavailable.
:::

# Access Applications Catalog Apps UI

**To access Catalog Apps:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Applications**.
   The *Dashboard&#x20;*&#x70;ane appears.
3. Click **Catalog Apps**.&#x20;
   The *Catalog Apps* pane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8vSoxWP7z2J2IMUrSsXQP_image.png" size="80" width="834" height="448" caption="The Catalog Apps pane" position="center" showCaption="true"}


[title] Key Performance Indicators
[path] Product Features/Analytics/

The Analytics module makes use of built-in KPIs (Key Performance Indicators) to process input data. This section describes the currently available KPIs.

- [Asset Online Percentage](docId\:lIwBVzHJWqfnoD_wfE21R)&#x20;
- [Change of Value](docId:9wmIEoZwG1Xf033csZS7q)&#x20;
- [Compliance and Loss](docId\:gOMbeAid1eM16mcXe3phi)&#x20;
- [Maintenance and Failure](docId\:Nhltu0n1C1s45DXk0zRm8)&#x20;
- [Manufacture Counter and Capacity Utilization](docId\:uvrlRocMsTwqN47komSw3)&#x20;
- [Online and Offline Percentage](docId\:YkRTbYTg5tx5konxgrfGT)&#x20;
- [Production Cycle and Cycle Time Radio (CTR)](docId:_aSB_nNksg1PXpSYYlYbQ)&#x20;
- [Uptime and Downtime by Value](docId\:SOXwAMw50Vmk2bYDU_8Jv)&#x20;


[title] Registry
[path] Product Features/Applications/

In the *Registry&#x20;*&#x70;ane of the *Applications&#x20;*&#x6D;odule, you can add, modify, or remove registries. A registry is a public or private repository of Docker images used for storing and delivering applications.

# Access Applications Registry UI

**To access the Applications Registry pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Applications**.
   The *Dashboard&#x20;*&#x70;ane appears.
3. Click **Registry**.&#x20;
   The *Registry&#x20;*&#x70;ane appears.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1GeqMz_OOS7ubs4kmgU2J_image.png "Applications Registry pane")

# Next Steps

- [Add a Registry](docId\:wgl_1tPOfzVNAvHad3LHY)&#x20;
- [Manage Registries](docId\:D2Y8aLCvzFBrLL4g6R00d)&#x20;


[title] Configure
[path] Product Features/Applications/

On the *Configure&#x20;*&#x70;ane of the *Applications&#x20;*&#x6D;odule, you manage marketplaces. Initially, the pane includes only the default marketplace catalog. You can add, modify, and remove multiple marketplaces.

You can deploy a Private Marketplace catalog so you can leverage existing custom Docker applications. You can include custom Docker applications that are under development and third-party Docker applications in the Private Marketplace.

You can add multiple Private Marketplaces and each Private Marketplace can install multiple Docker applications. The number of Docker applications that can be added is limited only by the Litmus Edge’s hardware size.

# Access Applications Configure UI

**To access the Applications Configure pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Applications**.
   The *Dashboard&#x20;*&#x70;ane appears.
3. Click **Configure**.&#x20;
   The *Configure* pane appears.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VuruqNbYdEXFjTgCOtEGw_image.png "The Configure pane")

# Next Steps

- [Add a Marketplace](docId\:SZlm4sAvCxLjgFnjUN8YV)&#x20;
- [Manage Marketplaces](docId\:bXjkldyyJmUFYE2d0Kg3O)&#x20;


[title] Tengo Script
[path] Product Features/Analytics/Statistical Functions/

The **Tengo Script** processor is used for creating scripts to manipulate data in various ways.

# Tengo Script Overview

- This processor uses Tengo scripting, with its rules similar to GoLang.
- **Simple Use case**: The output you receive from DeviceHub message or from Analytics, might not be helpful, and you want to change the name of a field within that message.
  - *e.g* Instead of "value" you want your data to show "furnace pressure".
  - *e.g* Instead of having all fields of the message, you only want to have "success", "deviceId" and "value" and skip everything else.
  - *e.g* You want to add a custom field to the message, based on the "value" field, such as: if value = 2, "error": "overheating".
  - *e.g* You only want to change the timestamp to human readable format instead of Unix timestamp, but keep otherwise keep the message as-it-is.
  - In general, if you want to add, remove or modify *ANY* field in the input, this scripting processor is very useful.
- **Single Input:** Every message from the input, is stored as an array called "values".
  - Using "for i, message in values\{}" statement, allows to access this input and manipulate it.
  - Here "i" represents what is the *definition* defined in the connection wire, more useful for multi-inputs, to identify and distinguish between each inputs, so for single input, "i" can be replaced with "\_".
  - "message" contains the entire message in the input, and you can perform your manipulations to this "message" parameter.
  - **Note:** "i" and "message" can be any custom variable name.
- **Multiple Input:** Suppose you have 3 different inputs attached to this scripting processor, with the connecting wires named A, B and C.
  - "for i, message in values\{}" will now have 3 inputs.
  - "i" represents from which connection wire is the input coming from.
  - with if-else statements, every input can be manipulated in isolation, or a common manipulation can be applied to all inputs
  - You can choose to output "result" only for one input, or all of the inputs.
- **Miscellaneous information:**
  - [Available Standard Library](https://github.com/d5/tengo/blob/master/docs/stdlib.md)
  - [Syntax details Github:](https://github.com/d5/tengo) or [Official site](https://tengolang.com/)

# Tengo Script Parameters

| **Parameters** | **Details**                                                                                                                                                                                   |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Timeout        | This parameter specifies the timeout in milliseconds for the script execution. You can set the timeout to control how long the script is allowed to run before it is considered as timed out. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/c2TGanLhPdei9cyHGLDoR_image.png" size="80" width="938" height="554" caption="Tengo Script parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Tengo Script&#x20;*&#x70;rocessor, refer the [Use the Tengo Script Function](docId\:GO6xp9Hia7376x4KEz46P) guide for more details.
:::


[title] Uptime and Downtime by Value
[path] Product Features/Analytics/Key Performance Indicators/

You can use the **UpTime and DownTime by Value** KPI processor to compare your current value with a desired value. The KPI sorts them as either uptime or downtime based on the specified condition ( greater(>), less(\<), equal(==) or notEqual(!=) ) and a delta to round off mistakes.

# Uptime and Downtime by Value Overview

- If you would like to compare your current value with a desired value, to count as UpTime or DownTime.
- By setting the **condition**, you can define: Downtime if current value is greater(>), less(\<), equal(==) or notEqual(!=) than **desired value.**
- You can enter a delta too, if you want to forgive some sort of round off error.
- The **timer interval** parameter is useful if the connected input tag is offline, but you still want this KPI to "look" for a value every few seconds, defined by the aforementioned timer.
  - If you know your tag is going to reliably publish at the expected interval, it is better to disable this timer by entering 0 in the field.

# Uptime and Downtime by Value Parameter

| **Parameters**          | **Details**                                                                                                                                                              |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Device Reset<br />&#xD; | This parameter resets the KPI when the connected device is reset.                                                                                                        |
| Unit                    | Display UpTime/DownTime in Seconds, Minutes, Hours, Days, or Weeks.                                                                                                      |
| Condition               | Specify the type of comparison to be made; it categorizes as downtime if the current value is greater (>), less (\<), equal (==), or notEqual (!=) to the desired value. |
| Desired Value           | Enter the desired value to compare with the current values.                                                                                                              |
| Delta of Tolerance      | Allows a margin of error by adding or subtracting this delta from the desired value.                                                                                     |
| Timer Interval          | Timer in milliseconds. If no event, use this timer to keep displaying the output continually. Enter zero to disable.                                                     |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pXS-gmfJnzu6CtxARoX-O_image.png" size="80" width="936" height="561" caption="Up/DownTime by Value parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Uptime and Downtime by Value&#x20;*&#x4B;PI, refer the [Use the Uptime and Downtime by Value KPI](docId\:bNiG00pysIROShZnWIheW) guide for more details.
:::


[title] Create a Docker Image to Deploy to Your Private Repository
[path] Product Features/Applications/Images/Download an Image/

You must configure Docker before you can configure a custom marketplace in Litmus Edge. The following example uses Python as the installed application.

# Before You Begin

Before you complete the steps below, make sure you do the following.&#x20;

- Verify the Docker image is on the same network as the Litmus Edge device.
- Install Python and Ubuntu.&#x20;

# Create a Docker Image

**To create a Docker image:**

1. Create a project directory named **python-webserver&#xA0;**&#x75;nder the **"\~/"** directory.
2. Create a **Dockerfile&#xA0;**&#x77;ith the following content:
   `FROM ubuntu`
   `RUN apt-get update`
   `RUN apt-get -y install python`
   `RUN apt-get clean`
   `EXPOSE 8000`
   `CMD [ "python", "-m", "SimpleHTTPServer" ]`
3. Build the Docker image:
   `$ ~/python-webserver> docker build -t python-webserver`
4. Create a Docker repository in Docker Hub ([https://hub.docker.com](https://hub.docker.com/)) with the name:
   `<your username>/python-webserver`
5. Push the **python-webserver&#xA0;**&#x69;mage to the Docker Hub:
   `$ ~/python-webserver> docker login —-username=yourhubusername`
   `$ ~/python-webserver> docker tag python-webserver <your username>/python-webserver`
   `$ ~/python-webserver> docker push <your username>/python-webserver`

You can now pull this image into a private repository.


[title] Manage Containers
[path] Product Features/Applications/Containers/

You can run and manage containers by navigating to **Applications&#x20;**>**&#x20;Containers**.&#x20;

# Run a Container

You can add and run a container locally using the *Run&#x20;*&#x63;ommand. The named container pulls the container from the Docker registry and it appears on the Container pane, running locally.

Litmus Edge supports Docker Registry v2.

## Before You Begin

- You must do one of the following:
  - [Create a Docker Image to Deploy to Your Private Repository](docId\:TL0igWm-y39EDvsOqPJbe)&#x20;
  - [Upload an Image](docId\:Ll_C8iAnGQ6jV3eX65nTv)  into Litmus Edge 
  - [Download an Image](docId:98r6v_sgU5lp435zm6omo)&#x20;
- You must also [Add a Registry](docId\:wgl_1tPOfzVNAvHad3LHY) entry.

**To run a container:**

1. Navigate to **Applications&#x20;**> **Containers**.&#x20;
2. From the *Containers* pane, click **Run**.&#x20;
   The *Enter command to run&#x20;*&#x66;ield appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_2aV6C8lTtAWBHvoaAjUM_runbutton.png" size="100" width="1913" height="366" caption="The Run button" position="center" showCaption="true" indent="2"}

3. Enter the docker run command for the selected application (Docker image), and then click **Run**.

:::hint{type="info"}
**Example**: `docker run -d --name hello hello-world`
:::

If the docker run command was successful, the chosen image will be pulled from a Registry to the Litmus Edge Instance and appear in [Images](docId\:dqZ6yCzkBV6r7basdscHI). The downloaded image will then be automatically executed, and the named container appears in the *Containers&#x20;*&#x70;ane, and its state is running. The container runs locally.

# Manage individual containers

Refer to the image and callouts below for management options for containers.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ElAiOSYbgq0ZXGE6JY1f0_image.png "Management options for containers")

\[1] **Copy port number:&#x20;**&#x46;or certain Docker container’s applications, they can be directly accessed by using the IP address of the Litmus Edge instance, followed by the port. Format would be `##.##.##.##:####`. For example, if the IP address was 1.2.3.4 and the port was 3000, then the container application may be accessible at 1.2.3.4:3000.

\[2] **Start and Stop container**: Once stopped, the container shows an *Exited&#x20;*&#x73;tatus.&#x20;

\[3] **Pause and Un-pause container**

\[4] **Remove container**: A container must be *Stopped* first before it can be removed. Once removed, the container is removed from the Containers pane.&#x20;

\[5] **Show container log**: This is similar to the logs available from the Overview pane but displays directly from the container environment. See the "View Container Logs" section below for more information.&#x20;

\[6] **Inspect**: Displays the configuration, attached volumes, and policies included in the container. From the specified container pane, you can reload the container.

\[7] **Terminal**: You can open a terminal console for a specified container. The terminal is normally used for diagnostic purposes. It allows you to modify the application's configuration, though this is not recommended.

\[8\[ **Container top**: You can view information about the container services that are running. This is normally used by developers.

# View Container Logs

When you click the **Show container log** icon, the *Log* pane displays.&#x20;

Refer to the image and callouts below for filter options for container logs.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FmF0x26V0XCtZP-9kdwum_image.png "View options for logs")

\[1] **Search**: Enter search terms to find text in all the log entries defined.&#x20;

\[2] **Fetch Log**: You can review a log for the specified time period you select (All logs, Last day, Last 4 hours, Last hour, or Last 10 minutes, Last minute).&#x20;

\[3] **Line Wrap**: If enabled, text is formatted to fit within the screen, so no horizontal scrolling in the log screen is needed.&#x20;

\[4] **Display Timestamp**: If enabled, the timestamp for each message is displayed.&#x20;

\[5] **Download Logs**: Select to download all logs or only logs you've filtered to display.&#x20;


[title] Statistical Prediction
[path] Product Features/Analytics/Statistical Functions/

The **Statistical Prediction** processor enables users to project future values based on historical data. This is achieved by applying Fast Fourier Transform (FFT) to the time series signal, allowing for accurate analysis and prediction.

# Statistical Prediction Overview

- To achieve a prediction of value in the future, Fast Fourier Transform (FFT) is done on the time series signal.
- This FFT is then used to de-trend the data, generate sine-cosine waveform out of the signal, and then the signal is restored to it's best capacity.
- The **frequency difference** represents the sampling rate of discretization.
  - For example, if the window has 10 elements, 1 second frequency difference will generate 10 frequency samples (maximum). 2 seconds will generate 5 samples, and so on.
  - Usually 1 is good, because it is a time series signal, so you're sampling at every second.
- **Harmonics** represent the number of waves to "add" to the fundamental wave, to reach the desired signal.
  - Some signals have a huge number of harmonics, for example square waves have theoretically infinite harmonics.
  - For the number of harmonics, it is better to start with a lower number and play around with it to see what best fits your needs, rather than just entering a high number.
- Due to limitations of working with live data, it is preferable to have a window of data to "observe" and then give a "prediction" for a future time.
- For now, the poling interval of the subscription tag is assumed to be 1 second.
- **Expected Output:** Until the window is filled up, no output is expected. Afterwards, the *prediction*, with the timestamp of prediction will be the output.

# Statistical Prediction Parameters

| **Parameters**                          | **Details**                                                                                                                                                                                                                                                       |
| --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Display Prediction On Current Timestamp | This parameter shows predictions at the current timestamp from the payload.                                                                                                                                                                                       |
| Window Size                             | This parameter determines how many values should be observed before making each prediction. It is assumed that the polling interval is 1 second.                                                                                                                  |
| Number of Predictions                   | This parameter specifies how many seconds into the future the prediction should be made. Again, it is assumed that the polling interval is 1 second.                                                                                                              |
| Frequency Difference                    | This parameter represents the frequency sampling distance in seconds. It is used to define the frequency resolution of the analysis and prediction.                                                                                                               |
| Number of Harmonics                     | This parameter determines the number of waves to "add" to the fundamental wave in order to reach the desired signal. It is recommended to start with a lower number and adjust it based on the fit to the actual data, rather than simply entering a high number. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VNBzHt5rlJ9sEfG5s1DKS_image.png" size="80" width="938" height="489" caption="Statistical Prediction parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Statistical Prediction&#x20;*&#x70;rocessor, refer the [Use the Statistical Prediction Function](docId\:LK3l3Lwvzj3FEebLtPfOH) guide for more details.
:::


[title] Maintenance and Failure
[path] Product Features/Analytics/Key Performance Indicators/

The **Maintenance and Failure** KPI mainly deals with the maintenance event and a fault/failure event in a production cycle.

# Maintenance and Failure Overview

- For **Maintenance events per cycle**, you can see the number of maintenance events (planned or unplanned) in a production cycle.
- For **Time since last maintenance**, If you know that a machine needs to be checked periodically, you can see the time elapsed between maintenance events.
- **Timestamp of last maintenance&#xA0;**&#x69;s used to keep track of the previous time maintenance occurred.
- For **Number of faults / failures detected in a period**, you can see the number of failures that have occurred in a period.
- For **Time since last failure**, if you know that the machine needs to be checked periodically, you can see the time elapsed between failure events.
- **Timestamp of last failure&#xA0;**&#x69;s used to keep track of the previous time when a failure occurred.
- The **timer interval&#xA0;**&#x70;arameter is useful if the connected input tag is offline but you still want this KPI to look for a value every few seconds, defined by the timer.
- Within the KPI you can define how you want to trigger the mechanism of a maintenance event, and a failure event.
  For example, if you define **Maintenance From**: `0 `and **Maintenance To**: `1`, this means that when the value from the input tag, with the definition on the connection as *maintenance*, goes from 0 to 1, it is an indication that there was a maintenance event.
  **Failure From**: `2 `and **Failure To**: `4 `means whenever the input tag the definition on the connection as \*failure \*goes from 2 to 4, it is an indication that there was a failure event.

# Maintenance and Failure Parameter

| **Parameters**   | **Details**                                                                                                                                                         |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Maintenance From | This parameter specifies the value at which a maintenance event is considered to be triggered.&#xD;                                                                 |
| Maintenance To   | This parameter specifies the value at which a maintenance event is considered to be completed.                                                                      |
| Failure From     | This parameter specifies the value at which a failure event is considered to be triggered.                                                                          |
| Failure To       | This parameter specifies the value at which a failure event is considered to be completed.                                                                          |
| Unit             | This parameter allows you to select the time unit in which the time since the last Maintenance/Failure will be displayed (Seconds, Minutes, Hours, Days, or Weeks). |
| Timer Interval   | Timer in milliseconds. If no event, use this timer to keep displaying the output continually. Enter zero to disable.                                                |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NrkLKM7PVL5eUKX__qEUg_image.png" size="80" width="945" height="589" caption="Maintenance/Failure parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Maintenance and Failure&#x20;*&#x4B;PI, refer the [Use the Maintenance and Failure KPI](docId\:ukT4bLHmmjECdZ0UCDDRc) guide for more details.
:::


[title] Machine Learning Models
[path] Product Features/Analytics/

The Analytics module allows you to upload Machine Learning (ML) models, feed live data into the model, and receive live output from the model.

:::hint{type="info"}
**Note**: To work with ML models in Analytics, your computer has to meet certain [TensorFlow requirements](https://www.tensorflow.org/install/gpu). If it does not, the ML-specific processors will not be available for flow building.
:::

# Create a Machine Learning Model for Upload

To upload a model to Analytics, you need a SavedModel format from [TensorFlow](https://www.tensorflow.org/guide/saved_model). Once you have created and saved a model, you must compress and zip it prior to uploading it to Analytics. SavedModel is a directory containing serialized signatures and the state needed to run them, including variable values and vocabularies. The SavedModel (`saved_model.pb`) file stores the TensorFlow model and a set of named signatures, each identifying a function that accepts tensor inputs and produces tensor outputs. SavedModels may contain multiple variants of the model.

Once your ML model is ready, proceed as follows:

1. Upload the model. See [Upload a Model](docId\:tna7FaQ3J7mT4jT0qe0Nw) for details.&#x20;
2. Create an analytics flow based based on your model.&#x20;
   - TensorFlow processor for time-series data. See [Create an Analytics Flow](docId\:XNeTldW_xYRNSnYTLP3h-) for details.&#x20;
   - TensorFlow Images processor for images. See [TensorFlow Images Processor](docId\:fGsjkQ7VGTr3NbHgc3JzX) for details.&#x20;
3. (Optional) Add the Tengo Script processor to modify the model output. See [Tengo Script](docId\:vpYv26QZbje6ovJwRPKog) for details.&#x20;
4. Visualize the ML-based output in the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89) or through [Applications](docId\:j4jhjBWbwQY1BS9A3G6Zk).&#x20;

# Access Analytics Models UI

**To access Analytics Models:**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **Analytics&#x20;**> **Models**.
   The *Models* pane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Emguio_RaNeFVY_6WTcOf_image.png" size="80" width="884" height="460" caption="The Analytics Models pane" position="center" showCaption="true"}

# Next Steps

- [Upload a Model](docId\:tna7FaQ3J7mT4jT0qe0Nw)&#x20;
- [Obtain Field Values from a Model](docId\:bFXdipPHuxO2J2uhNBHMy)&#x20;
- [Model Types](docId\:qQ8LOLus04K2pfjOuvDM9)&#x20;


[title] Download an Image
[path] Product Features/Applications/Images/

You can download an image from a registry.

# Before You Begin

Make sure you have created a registry for the image you are downloading. See [Add a Registry](docId\:wgl_1tPOfzVNAvHad3LHY) to learn more.&#x20;

# Download an Image from a Registry

**To download an image from a registry:**

1. Navigate to **Applications&#x20;**> **Images**.
2. Click the **Pull Image** icon.&#x20;
   The *Pull Image* dialog box appears.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XQ82po5XxK9skmseMscOi_pullimageicon.png "Pull Image icon")
3. From the *Pull Image***&#xA0;**&#x64;ialog box, select an option from the **Registry&#x20;**&#x64;rop-down list.&#x20;
4. Enter a name for the image.&#x20;
5. Click **Pull**.

# Related Links

- [Pull an Image from the Azure Container Registry](docId\:mgrow5kThpTEX5PLYI519)&#x20;
- [Create a Docker Image to Deploy to Your Private Repository](docId\:TL0igWm-y39EDvsOqPJbe)&#x20;


[title] Containers
[path] Product Features/Applications/

The *Containers&#x20;*&#x70;ane of the Applications module enables you to manage Docker containers for deployed applications in your marketplaces catalogs.

A container is a standardized unit of software. When you install an application from a marketplace, at least one container for the installed application appears on the *Containers&#xA0;*&#x70;ane. You may also deploy a containerized Docker application that is not in any marketplace catalog by running a custom Docker run command.

All applications in marketplaces catalogs run within [Docker containers](https://www.docker.com/resources/what-container). Each application runs its own dedicated container to ensure isolation. The Docker container themselves run on Docker Engine, which is located on the Litmus edge instance. Hence if the Litmus Edge instance becomes unavailable, so will all the running containers.

A Docker container is a portable image that is lightweight, standalone, and executable. It includes everything needed to run an application (code, runtime, system tools, system libraries, and settings). See [Overview of 'docker run'](docId\:GdOaQFjjwkDJjuwmjtbB9) to learn more about `docker run` commands.&#x20;

Each installed application runs at least one container, and can run multiple containers depending on the configuration.

:::hint{type="info"}
**Note:** The **Run&#x20;**&#x62;utton in the *Containers* pane can only be used for `docker run` commands. Other commands, including any other `docker` commands, cannot be used.&#x20;
:::

On the *Container&#xA0;*&#x70;ane, each container's state is color-coded. A running container displays green, a paused container displays orange, and an exited container displays black.

You need to have a Docker registry to add an application to a marketplace or to create a new marketplace. The Docker registry and credential information are available through Litmus (the edge device provider). These registries provide access so that you can control and manage applications you choose to deploy in the marketplace.

# Access Applications Containers UI

**To access the Applications Containers pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Applications**.
   The *Dashboard&#x20;*&#x70;ane appears.
3. Click **Containers**.&#x20;
   The *Containers&#x20;*&#x70;ane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5ovyf-vgWf-HQ9zbW_wCn_image.png" size="80" width="1207" height="438" caption="The Applications Containers pane" position="center" showCaption="true"}

# Next Steps

- [Manage Containers](docId:2Ff1mgt8eolOuKcTm2FC2)
- [Overview of 'docker run'](docId\:GdOaQFjjwkDJjuwmjtbB9)


[title] Marketplace
[path] Product Features/Applications/

You use the *Marketplace&#x20;*&#x70;ane of the *Applications&#x20;*&#x6D;odule to deploy applications from your public and private marketplace catalogs, as well as to list Docker applications found in the selected marketplace catalog and synchronize these Docker applications with the server where they reside.

The marketplace feature is only available for Virtual Machine or ISO version of Litmus Edge. It is not available for the Docker version of Litmus Edge.

Every Litmus Edge instance comes with a default public marketplace catalog. It offers the following ten launchable Docker applications:

- Elasticsearch
- Grafana
- KDB
- Minio
- MongoDB
- Microsoft SQL for Linux
- MySQL
- PipelineDB
- PostgreSQL & Adminer
- Python

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xVYaxPC2Ow9VT8wJ8kNph_image.png "Default Marketplace Catalog")

# Access Applications Marketplace UI

**To access the Applications Marketplace:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Applications**.
   The *Dashboard&#x20;*&#x70;ane appears.
3. Click **Marketplace**.&#x20;
   The *Marketplace* pane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rv6HStDIsSamh4OiY2emy_image.png" size="80" width="1812" height="435" caption="Applications Marketplace pane" position="center" showCaption="true"}

# Next Steps

- [Deploy a Marketplace Application](docId\:lbqQnNLNVFPZbk82ZlkSc)
- [Manage Marketplace Applications](docId\:xX8o6F6R-a0VfUNNkf7v8)&#x20;


[title] Applications
[path] Product Features/

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XUwn_6xjp-yACYVKsQzJz_le-applications.png "Litmus Edge Marketplace Application Architecture")

# Overview

The Applications module provides access to two types of application repositories:

- **Public marketplaces**: Publicly available, such as Docker Registry.
- **Private marketplace**: Repositories of your own Docker container-based applications with privately controlled access. They are often created and maintained on a private network with no internet access.


You can deploy and launch applications on demand from any of the available marketplace catalogs.

See [Applications Guides](docId:-DKHmS9kYfUcfLPohUyk2) to review how to leverage different applications in Litmus Edge.&#x20;

:::hint{type="info"}
**Important**: Internet connectivity is required to deploy the default marketplace and to install applications. Once an instance is created, internet access is no longer required to create additional instances of the same application.
:::

# Before You Begin

Ensure you have enough disk space (See *Data Partition Usage* section of [Info](docId\:YIwyPagdCmgYF_px_-wgA)) before pulling any new Docker images onto a Litmus Edge and its Catalog Apps. Certain Docker images may exceed the disk size of your Litmus Edge instance.

# Public Marketplaces

Litmus and partner vendors populate the Default Public Marketplace. This repository is available to every Litmus Edge system by default. You can add other public marketplaces to your edge device as required.

Here is a sampling of the available applications in the default public marketplace:

- **Elasticsearch**: A distributed RESTful search and analytics engine.
- **Kx**: A time-series database that processes (in memory) real-time, streaming, and historical data.
- **Minio**: An open-source cloud object-storage server that is compatible with the Amazon Simple Storage Service (S3).
- **MongoDB**: A free and open-source cross-platform document-oriented database.
- **SQL Server**: A Microsoft relational database management system that uses SQL.
- **MySQL**: An open-source relational database management system that uses SQL.
- **PipelineDB**: An open-source relational database that continuously streams SQL queries.
- **PostgreSQL**: An object relational database management system (ORDBMS) with an emphasis on extensibility and standard compliance.
- **Python**: The Python programming language.

# Private Marketplaces

You can add multiple private marketplaces to your edge device. An organization, such as an OEM or systems integrator, can provide clients with a marketplace by leveraging custom applications that may have already been developed or need to be developed in the future. In addition, third-party applications may also be run in this marketplace. All applications in a private marketplace run within Docker containers.

# Marketplace and Application Security

Applications can be integrated into Litmus Edge to enable further edge processing of collected data. The data can then be analyzed and incorporated into existing business systems.

- Applications run locally at the edge device
- Applications run completely isolated in containers (Docker) to enforce security and support multi-tenancy


::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZYy7mADI3j4uo5qyKRQLC_loopedgesecurityapplicationdeployment.png" size="80" width="1138" height="326" caption="Marketplace and Application Security Architecture" position="center" showCaption="true"}

# Data Normalization and Application Integration

Once data is collected and sent to the Litmus Edge platform from many different device driver structures, it is normalized into one standard format. The data is then made available to Litmus Edge applications or third-party enterprise applications. Litmus Edge applications cover a variety of functions, such as Database, Machine Learning, Analytics, Triggers and Alerts, and Dashboard Builder. Enterprise applications can include Databases, Analytics and ML (Machine Learning), Big Data Platforms, ERPs (Enterprise Resource Planning), CRMs (Customer Relationship Management), and BI (Business Intelligence) tools.

# Next Steps

- [Applications Guides](docId:-DKHmS9kYfUcfLPohUyk2)
- [Applications Dashboard](docId\:FM_slXlEryQEbx9k00JRM)&#x20;
- [Catalog Apps](docId:-aYOvrkPNlebGYL0R8uXe)&#x20;
- [Configure](docId\:H0HmKtIRGp8cihxp8f_Ws)&#x20;
- [Marketplace](docId:-vxhwowPd4S7O4a3cXffr)&#x20;
- [Containers](docId\:uASMDJ5ugFN_P79HOba3Y)&#x20;
- [Networks](docId\:PIi1YuoBZ6zpSMg34T3f2)&#x20;
- [Images](docId\:dqZ6yCzkBV6r7basdscHI)&#x20;
- [Registry](docId\:hetdvWfUqa_lPZMOp_BTS)&#x20;
- [Volumes](docId\:N7I86GMNbQOv-jKRQRgFr)&#x20;
- [System Info](docId\:OEi5rvnZDBMpHkweX7znG)&#x20;
- [Disk Usage](docId:_UtyGmJf-UuJEmcKPFrvr)&#x20;


[title] XMR Chart
[path] Product Features/Analytics/Statistical Functions/

The **XMR Chart** processor calculates and establishes a central line which remains constant.

# XMR Chart Overview

- Once the window is filled with values, a **central line** is calculated which remains constant moving forward.
- Other fields that are calculated once window is filled are:
  - **Moving ranges** : Difference of successive values.
  - **Average moving range** : Average of the moving ranges.
  - **Process Limit Multiplier** is used to calculate the upper and lower process limits.
  - **Upper and Lower Natural Process limit** : Calculated by taking the product of process limit multiplier and average moving range, and adding/subtracting it to the central line.
- In some cases, the central line is adjusted. Here are the cases:
  - If current value is outside the process limits, multiple times in a row.
  - If the multiple values in a row are closer to either limits, than they are to the central line.
- The **timer interval** parameter is useful if the connected input tag is currently not polling, but you still want this KPI to publish a value every few seconds, defined by the aforementioned timer.
  - If you know your input is going to publish at the expected interval, it is better to disable this timer by entering 0 in this field.

# XMR Chart Parameters

| **Parameters**           | **Details**                                                                                                                                                                                                                             |
| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Window Size              | This parameter represents the window in which the calculations are performed and is defined in terms of the number of seconds. It determines the duration over which the central line and other calculated fields are established.&#xD; |
| Process Limit Multiplier | The Process Limit Multiplier parameter specifies the factor used to calculate the upper and lower process limits. It influences the range within which the process is considered to be in control.                                      |
| Timer Interval           | The Timer Interval parameter denotes the interval, in milliseconds, at which values are pushed or published. Setting this parameter to zero disables the timer.                                                                         |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DEuMmI_frhedht0tIPb6h_image.png" size="80" width="941" height="379" caption="XMR Chart parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *XMR Chart&#x20;*&#x70;rocessor, refer the [Use the XMR Chart Function](docId\:D2uXsP6Zn5AwZejMzXgtS) guide for more details.
:::


[title] AWS SiteWise
[path] Product Features/Integration/Integration Connectors/Cloud Service Providers/

Review the [AWS SiteWise Integration Guide](docId\:bYsaJu0nIwJ2vIT6jJ0IG).&#x20;

:::hint{type="info"}
**Note**: Available for Litmus Edge version 3.11.0 and later.&#x20;
:::



## Overview

AWS SiteWise integration enables an Edge System to connect with Amazon AWS IoT SiteWise.

## Supported Communication Directions

- Outbound - Publish data from Edge to AWS IoT SiteWise
- Inbound - Subscribe data from AWS IoT SiteWise

## Variable Definitions

| **Variable**             | **Details**                                                                                                                                        |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name                     | Enter a name for the connector                                                                                                                     |
| Region                   | Enter the AWS Region. See [AWS IoT SiteWise endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html) to learn more.  |
| Access Key               | Enter the AWS Access Key                                                                                                                           |
| Secret Key Access        | Enter the AWS Secret Access Key                                                                                                                    |
| Subscribe interval       | The time between fetching inbound messages (in seconds)                                                                                            |
| Number of batch messages | Maximum amount of outbound messages sent in one batch                                                                                              |
| Throttling limit         | Maximum throughput counted in messages per second                                                                                                  |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product**    | **Version**                 | **Date**   |
| -------------- | --------------------------- | ---------- |
| aws.amazon.com | AWS SDK for Go v2 (v1.21.0) | 2023-07-31 |


[title] DB - Microsoft SQL Server SSL
[path] Product Features/Integration/Integration Connectors/Databases/

Review the [Microsoft SQL Server SSL Integration Guide](docId\:t0Icjy44gC5ZePqMOWQ_Z).&#x20;

## Overview

Microsoft SQL Server SSL integration enables an Edge System to connect with an MSSQL database using SSL authentication.&#x20;

## Supported Communication

- Outbound (Edge to SQL Server) - Yes
- Inbound (SQL Server to Edge) - No

## Configurations

| **Variable**         | **Detail**                                                                                                                                                                                                                                                                    | **Required** |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                 | Enter a name for the connector                                                                                                                                                                                                                                                | Y            |
| Hostname             | IP Address or Hostname of MSSQL Server (Must be reachable from the Edge system)                                                                                                                                                                                               | Y            |
| Port                 | MSSQL Server port                                                                                                                                                                                                                                                             | Y            |
| SSL mode             | If disable is selected, data sent between client and server is not encrypted. If true is selected, data sent between client and server is encrypted. If false is selected, data sent between client and server is not encrypted beyond the login packet. (default is disable) | Y            |
| CA certificate       | SSL CA Certificate (default certificate will be used if this field empty)                                                                                                                                                                                                     | N            |
| Username             | User name (optional)                                                                                                                                                                                                                                                          | Y            |
| Password             | User password (optional)                                                                                                                                                                                                                                                      | Y            |
| Database             | Database name                                                                                                                                                                                                                                                                 | Y            |
| Table                | Table name                                                                                                                                                                                                                                                                    | Y            |
| Create table         | If selected and table doesn't exist, the table is created with the necessary format. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.                                                                    | N            |
| Commit timeout       | Transaction commit timeout (ms)                                                                                                                                                                                                                                               | N            |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout                                                                                                                                                                                            | N            |
| Bulk insert count    | To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags. Available for Litmus Edge version 3.11.1 and later.       | N            |
| Throttling limit     | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                        | N            |
| Persistent storage   | Persistent storage: If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                     | N            |
| Queue mode           | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                          | N            |

:::hint{type="info"}
**Note**: When the *Create table* checkbox is not selected, the table format (columns) that you will create must still adhere to the following format.&#x20;
:::

```sql
IF NOT EXISTS(SELECT *
              FROM sysobjects
              WHERE NAME = '"TABLE_NAME"'
                AND xtype = 'U')
CREATE TABLE "TABLE_NAME"
(
    id          BIGINT IDENTITY(1,1) NOT NULL,
    record_uuid CHAR(36)       NOT NULL,
    arrived_at  DATETIME       NOT NULL,
    device_id   VARCHAR(64)    NULL,
    register_id VARCHAR(64)    NULL,
    tag_name    VARCHAR(64)    NULL,
    datatype    VARCHAR(32)    NULL,
    value       TEXT           NULL,
    success     BIT            NULL,
    PRIMARY KEY (id)
)
```


[title] Cloud Service Providers
[path] Product Features/Integration/Integration Connectors/


[title] Add a Marketplace Catalog
[path] Product Features/Applications/Configure/

You can add multiple marketplace catalogs by navigating to **Applications&#x20;**>**&#x20;Configure**.&#x20;

A marketplace catalog can also be added from the Litmus Edge Manager. Deploying an application from the Litmus Edge Manager to a Litmus Edge will automatically add and synchronize the catalog from the Litmus Edge Manager to the Litmus Edge. See:

1. *Add Catalog* section of [Marketplace: Catalogs and Applications](docId\:gqoGt_Szm8rz9UdPhl2NL)
2. *Add or Import an application* section of [Marketplace: Catalogs and Applications](docId\:gqoGt_Szm8rz9UdPhl2NL)
3. [Add a Draft Application Release](docId\:pujQCF4jL0dUe8XjHsjmZ)
4. Submit Release section of [Manage Application Releases](docId\:FoZMtmXkxEI6Y-gPZAEvg)
5. [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw)

# Before You Begin

Internet connectivity is required to deploy the marketplace and to install applications. Once an instance is created, internet access is no longer required to create additional instances of the same application.

- The catalog administrator must create a marketplace on the catalog server that includes registry, application images, and catalog.
- You must know the following:&#x20;
  - URL for the marketplace catalog.
  - The client ID and client secret.
  - The authentication server URL.

# Add a Marketplace Catalog

**To add a marketplace catalog:**

1. Navigate to **Applications&#x20;**> **Configure**.&#x20;
2. From the *Configure* pane, click the **Add (+)&#x20;**&#x69;con.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rNuV1Hf1h46dnzgUmlpLu_addmarketplace.png "Add Marketplace icon")
3. From the *Add Marketplace Catalog***&#xA0;**&#x64;ialog box, enter the details:
   - **Name**
   - **URL**: The URL for the Marketplace server where deployable applications of Docker image are located. You can request the API URL from your catalog administrator.
   - **Add Certificate Authority**: Select the check box. Then, click the **Select File&#xA0;**&#x62;ox, navigate to a **CA&#xA0;**&#x66;ile, and then click **Open**. Alternatively, you can copy the open CA file and paste it into the **Select File&#xA0;**&#x62;ox.
   - **Client ID**: The Client ID for the authorization server.
   - **Client Secret**: The Client Secret for the authorization server.
   - **Token URL**: The Token URL for the authorization server. You can request the Token URL from your catalog administrator.
   - **Select Catalog**: Use the drop-down list to select a catalog.
4. Click **Add**.
   The private catalog appears in the Marketplace list.
5. Navigate to **Marketplace&#xA0;**&#x61;nd click the catalog tile you just added.
   The applications associated with the marketplace display.


[title] Compliance and Loss
[path] Product Features/Analytics/Key Performance Indicators/

The **Compliance and Loss&#x20;**&#x4B;PI mainly deals with manufactured units and defective units.

# Compliance and Loss Overview

**Compliance:**

- If you do not need to keep a track of ALL the failures happening in a factory (like a machine failure/defective units/failing regulation, etc.), but if there is a topic(event trigger) that updates whenever there is such an event, you can just monitor how many units are compliant (pass quality assurance/non-defective units).

**Production Loss:**

- If you need to know how many of the manufactured units were unsuccessful, and hence realize the loss incurred on the desired period.
- The **timer interval** parameter is useful if the connected input tag is offline, but you still want this KPI to "look" for a value every few seconds, defined by the aforementioned timer.
  - If you know your tag is going to reliably publish at the expected interval, it is better to disable this timer by entering 0 in this field.

After creating this KPI, you need to add definitions called *manufactureEnd* and *defectiveUnit* to the connecting wire, which are event triggers, triggering when it is the end of manufacturing cycle, and one trigger which represents a defective unit was discovered.

# Compliance and Loss Parameter

| **Parameters**   | **Details**                                                                                                          |
| ---------------- | -------------------------------------------------------------------------------------------------------------------- |
| Manufacture From | The value at which the manufacturing cycle begins.                                                                   |
| Manufacture To   | The value at which the manufacturing cycle ends.                                                                     |
| Defective From   | The value at which the system detects a defective unit at the beginning.                                             |
| Defective To     | The value at which the system detects a defective unit at the end.                                                   |
| Timer Interval   | Timer in milliseconds. If no event, use this timer to keep displaying the output continually. Enter zero to disable. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NyIkbiaSv9-se6RRYRlNu_image.png" size="80" width="940" height="520" caption="Compliance and Loss parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Compliance and Loss&#x20;*&#x4B;PI, refer the [Use the Compliance and Loss KPI](docId\:ArRyZZHpqAZ_OAC_oy4D5) guide for more details.
:::


[title] Obtain Field Values from a Model
[path] Product Features/Analytics/Machine Learning Models/

When defining Analytics processors to interact with a Machine Learning model ([TensorFlow](docId\:tYa79T0nArdygPj0vXFdy)  or [TensorFlow Images](docId\:tYa79T0nArdygPj0vXFdy)), you need to fill out a number of fields using values from that model.

This procedure describes how you can obtain the relevant values from your model.

**To obtain the relevant field values:**

1. With TensorFlow installed on your local machine, enter this command in shell:
   `saved_model_cli show --dir {PATH_TO_SAVE_MODEL}/{NAME_OF_SAVED_MODEL} --all`
   This gives an output similar to the screenshot below.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ID-pxsqmxG5tUV2LB6i5r_form-fields-shell-command.png" size="80" width="782" height="275" caption="TensorFLow output" position="center" showCaption="true"}
2. Find the `The given savedModel SignatureDef contains the following input(s)` section.
3. Copy aside:
   - The input tensor name (input operation) from the `name` parameter (`serving_default_conv1d_input` in the screenshot above).
   - The window size and number of inputs expected from the `shape` parameter. `(-1,48,19)` in the screenshot above means that the window size is `48`, and the number of inputs is `19`.
4. Find the `The given savedModel SignatureDef contains the following output(s)` section.
5. Copy aside the output tensor name (output operation) from the `name `parameter (`StatefulPartitionedCall` in the screenshot above).


[title] Asset Online Percentage
[path] Product Features/Analytics/Key Performance Indicators/

The **Asset Online Percentage** KPI is a simple ratio of the time the tag has been online versus how long it has been running. This is also indicated by the *success* field in the incoming message from the tag.

# Asset Online Percentage Overview

- The input tag connected to this KPI will be online for some time, and offline for other:
  - This is indicated by the *success&#x20;*&#x66;ield in the incoming message from the tag.
- This KPI is a simple ratio of -> the time the tag has been online vs how long it has been running.
- If the machine is ON for 10 hours, how many hours is it successfully online (running)?
- The **timer interval** parameter is useful if the connected input tag is offline, but you still want this KPI to "look" for a value every few seconds, defined by the aforementioned timer:
  - If you know your tag is going to reliably publish at the expected interval, it is better to disable this timer by entering 0 in this field.
- **Expected Output Fields:** "asset\_online" in percentage, and the current timestamp.

# Asset Online Percentage Parameter

| **Parameters** | **Details**                                                                                                          |
| -------------- | -------------------------------------------------------------------------------------------------------------------- |
| Device Reset   | This parameter indicates whether the device will be reset or not.                                                    |
| Start Hour     | The start hour when the asset online percentage is calculated.                                                       |
| End Hour       | The end hour when the asset online percentage is calculated.                                                         |
| Timer Interval | Timer in milliseconds. If no event, use this timer to keep displaying the output continually. Enter zero to disable. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UbiUnHmaTYzUW7P8m68N4_image.png" size="80" width="939" height="419" caption="Asset Online Percentage parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Asset Online Percentage&#x20;*&#x4B;PI, refer the [Use the Asset Online Percentage KPI](docId:_BlUy1zQajRgdBTY-qCkg) guide for more details.
:::


[title] Change of Value
[path] Product Features/Analytics/Key Performance Indicators/

The **Change of Value** KPI displays the complete message payload when the current value differs from the previous value. If there is no substantial change, no output is displayed.

# Change of Value Overview

- Show the entire message payload when the current value is different than the previous value.
- A simple use-case of this KPI is: you want to see a message ONLY if there is a significant change from the previous value, otherwise if things are normal, no output is expected.
- By entering a **delta**, you can ignore some precision errors.
- If you enter delta as 0.0, even the smallest change will be detected by this KPI, or you can enter a delta of 0.1 (for example) if you want to allow ignore a change of +/- 0.1 from your previous value.
- **Map Field Name** asks you what is the field you want to observe for COV. This can be "value" or "asset\_online" etc. depending entirely on what is the input message you are sending to this KPI.
- The **timer interval** parameter is useful if the connected input tag is currently not polling, but you still want this KPI to publish a value every few seconds, defined by the aforementioned timer.
  - If you know your input is going to publish at the expected interval, it is better to disable this timer by entering 0 in this field.
- **Expected Output:** No output if the current value is the same as the previous value (+ or - *delta*), but outputs the entire input message if there is a change.

# Change of Value Parameter

| **Parameters**     | **Details**                                                                                                                                                      |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Map Field Name     | This parameter specifies the field to observe for Change of Value (COV), such as "value".                                                                        |
| Delta of Tolerance | This parameter allows you to specify the amount of difference between the current and previous values to ignore, thus helping to disregard some rounding errors. |
| Timer Interval     | Timer in milliseconds. If no event, use this timer to keep displaying the output continually. Enter zero to disable.                                             |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2-WUpFbI3y6fFMES4J-co_image.png" size="80" width="945" height="383" caption="Change of Value parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Change of Value&#x20;*&#x4B;PI, refer the [Use the Change of Value KPI](docId\:v5tzf0sRk4QfnV8KgkInV) guide for more details.
:::


[title] Add Topics to Connectors
[path] Product Features/Integration/

After adding a connector, you can now add topics to it.&#x20;

You have several options for adding topics to connectors.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/PmeNTqPWqpQ?si=qA768WLMgMjwrnZ-&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Add Individual Topics

You can add Outbound (Local to Remote) and Inbound (Remote to Local) topics to connectors.&#x20;

## Before You Begin

If you are adding individual outbound topics, you will need to connect the DeviceHub device and tags that will be used to create the topics. See [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

**To add a topic to a connector:**

1. From the *Integration&#x20;*&#x70;ane, click the connector tile you want to add the topic to.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.
3. Click the **Add&#x20;**&#x69;con and select **Add a new subscription**. For Litmus Edge version 3.5.5 and earlier, you only need to click the **Add a new subscription icon**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x6iO_2rGLqGRY-yhkbjFl_add-a-new-subscription.png" size="80" width="1173" height="522" position="center" caption="Add icon" showCaption="true"}
4. Select a data direction from the *Data Direction* drop-down list.&#x20;
   - **Local to Remote - Inbound**
   - **Remote to Local - Outbound**
5. In the **Local Data Topic** field, paste the *Raw Topic&#x20;*&#x66;or the tag or click the search icon and select the appropriate DeviceHub device and tag.&#x20;
6. The **Remote Data Topic** field may have a default value for the *Integration topic* parameter of the connector. If the field is blank,  enter the remote data topic name. &#x20;
7. Enter a short description in the **Description** field.
8. (If available) From the **Qos** dropdown menu, select a [Quality of Service](https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels/) value.
   Available values: `default`, `0`, `1`, `2`
9. Click the **Enable** toggle to enable the connection.
10. Click **OK**.
    If the connector is CONNECTED, the *Confirmation&#x20;*&#x64;ialog box appears.
11. Click **Yes**. Follow the prompt to restart the connector.
    The new topic appears on the Topics pane and is enabled.

# Import Tags from DeviceHub

You can automatically import tags from a device in DeviceHub and convert them to topics.&#x20;

**To import tags from DeviceHub:**

1. From the *Integration&#x20;*&#x70;ane, click the connector tile you want to add the topic to.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub tags** icon.&#x20;
   The *DeviceHub Import* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EwB6F7DQ44lPzYqgte5FQ_import-tags.png" size="80" width="1173" height="465" position="center" caption="Import from DeviceHub tags icon" showCaption="true"}
4. Select the checkbox for individual devices to import all the tags for that device. Alternatively, select the checkbox for **Raw / Alias** to select tags from all DeviceHub devices.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_3_V2qbrI-J7xfjc_4N6P_devicehub-import-dialog-box.png" size="80" width="614" height="348" position="center" caption="DeviceHub Import dialog box" showCaption="true"}
5. When done select tags to import, click **Yes, proceed with import**.&#x20;

# Use CSV File

You can upload a CSV file of topics and automatically add them to the connector.&#x20;

:::hint{type="info"}
**Note**: This option is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

## Step 1: Download Sample CSV File

You will first need to download the sample file that will be used to upload the topics to add to the connector.&#x20;

To download the sample file:

1. From the *Integration&#x20;*&#x70;ane, click the connector tile you want to add the topic to.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Download&#x20;**&#x69;con and select **Download a sample**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/B0bD-FMYBshLZB0R5faKW_image.png" size="80" width="1196" height="470" position="center" caption="Download a sample option" showCaption="true"}

## Step 2: Create CSV File

After downloading the file, use the template to enter all the topics that will be added to the connector.&#x20;

### Required Parameters

:::hint{type="warning"}
**Important**: Review the following for configuring the Instance ID and Instance Name for the CSV file:&#x20;

- If the Instance ID and Instance Name aren't configured correctly, the entire CSV file will be rejected and no topics will be uploaded.&#x20;
- If the Instance ID isn't configured correctly but the Instance Name is configured correctly, the appropriate Instance ID will be retrieved from the associated Instance Name and the CSV file will upload topics successfully to the retrieved Instance ID.&#x20;
:::

You must enter data for the following parameters:

- **Instance ID**: This field must be entered correctly. See the *Important&#x20;*&#x6E;ote above. Retrieve this parameter by copying the Instance Identifier field from the connector tile.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OfbT-1-EMlVMirUmbfr98_image.png" size="60" width="375" height="351" position="center" caption="Instance Identifier field" showCaption="true"}

- **Instance Name**: See the *Important&#x20;*&#x6E;ote above. Retrieve this parameter from the name configured for the connector.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/I7hQoNbJaaXAmw4zBY5ZX_image.png" size="60" width="375" height="351" position="center" caption="Instance Name parameter" showCaption="true"}

- **Direction**: Enter one of the following based on the direction of data for the topic: `Inbound` or `Outbound`.&#x20;
- **Local Remote Topic**: If the topic is `Outbound`, you will need to define the topic that will be sending the data our of Litmus Edge. Enter the local topic name or click the copy icon for the topic name from **DeviceHub&#x20;**> **Tags**. If the topic is `Inbound`, you can leave the field blank.&#x20;
- **Remote Data Topic**: If the topic is `Inbound`, you will need to define the topic that will be used to pull data into Litmus Edge. Enter the name of the remote data topic. If the topic is `Outbound`, you can leave the field blank.&#x20;
- **Enable**: You must enter one of the following statuses depending if you want the topic enabled: `True` or `False`.&#x20;
- **QoS**: Only required for the following connectors. Enter one of the following values: `default`, `0`, `1`, `2`.&#x20;
  - MQTT - Amazon AWS IoT Core over SSL
  - MQTT - Azure IoT Hub using Device Certificates
  - MQTT - Azure IoT Hub using SAS Key
  - MQTT Generic
  - MQTT - Generic over SSL
  - MQTT - IBM Watson over SSL
  - MQTT - System Protobuf SSL
  - MQTT - System Protobuf TCP

### Optional Parameters

The *Description&#x20;*&#x66;ield is optional and can be left empty.&#x20;

Once you update the template CSV file, you can upload it. &#x20;

## Step 3: Upload CSV File

**To upload the CSV file:&#x20;**

1. From the *Integration&#x20;*&#x70;ane, click the connector tile you want to add the topic to.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Add&#x20;**&#x69;con and selec&#x74;**&#x20;Upload CSV**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/p8lHlbuxkTlvxDeAnl37A_add-a-new-subscription.png "Add icon")
4. Select the file and click **Open**.&#x20;

## CSV File Example

Refer to the following CSV file example that includes one inbound topic and one outbound topic.&#x20;

::File[]{src="https://archbee-doc-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xAi8XNzUpmexqedYIA6DZ_csvfileexample.csv" label="CSV_File_Example.csv"}


[title] Signal Decomposition
[path] Product Features/Analytics/Statistical Functions/

The **Signal Decomposition** processor separates signal components from composite signals related to semantic units. Examples for this are distinct objects in images or video, video shots, melody sequences in music, spoken words or sentences in speech signals.

# Signal Decomposition Overview

- Native version of signal decomposition.
- **Additive model:&#x20;**&#x53;ignal = Trend + Seasonality + Residue
- **Multiplicative model:** Signal = Trend \* Seasonality \* Residue
- Trend is calculated by linear regression.
- Seasonality is calculated by naive differencing.

# Signal Decomposition Parameters

| **Parameters** | **Details**                                                                                                                                                                |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Window Size    | This parameter specifies how many values are included in the periodic interval for the signal decomposition process.&#xD;&#xA;&#xD;&#xD;                                   |
| Model Type     | This parameter defines the type of model to be used for the signal decomposition.                                                                                          |
| Periodicity    | This parameter determines the periodic interval for the signal decomposition, providing the frequency at which the seasonal components are expected to repeat in the data. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/707xbvJn6tDHFLVqY0Zmm_image.png" size="80" width="945" height="376" caption="Signal Decomposition parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Signal Decomposition&#x20;*&#x70;rocessor, refer the [Use the Signal Decomposition Function](docId\:Bb4zcE8165VEps8y8Wn3o) guide for more details.
:::


[title] DB - Mongo v4+
[path] Product Features/Integration/Integration Connectors/Databases/

:::hint{type="info"}
**Note**: Available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Review the [MongoDB Integration Guide](docId:0cZXAiRD8-dshxcD5hmjF).&#x20;

## Overview

MongoDB integration enables an Edge System to connect with a MongoDB database.&#x20;

## Supported Versions

- MongoDB 3.6 or higher

## Supported Communication

- Outbound (Edge to Database) - Yes
- Inbound (Database to Edge) - No

## Configurations

| **Variable**         | **Detail**                                                                                                                                                                                            | **Required** |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                 | Enter a name for the connector                                                                                                                                                                        | Yes          |
| Hostname             | IP Address or Hostname of MongoDB Server (Must be reachable from the Edge system)                                                                                                                     | Yes          |
| Port                 | MongoDB Server port                                                                                                                                                                                   | Yes          |
| Username             | User name                                                                                                                                                                                             | No           |
| Password             | User password                                                                                                                                                                                         | No           |
| Auth database        | Authentication database name                                                                                                                                                                          | No           |
| Auth mechanism       | Authentication mechanism (can be one of "SCRAM-SHA-1", "MONGODB-CR", "MONGO-CR", "PLAIN", "MONGODB-X509")                                                                                             | No           |
| Database             | Database name. If database does not exist it is created.                                                                                                                                              | Yes          |
| Collection           | Collection name. If collection does not exist it is created.                                                                                                                                          | Yes          |
| Commit timeout       | Transaction commit timeout (ms)                                                                                                                                                                       | No           |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout                                                                                                                    | No           |
| Throttling limit     | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                | No           |
| Queue mode           | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  | No           |
| Persistent storage   | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product** | **Version** |
| ----------- | ----------- |
| MongoDB     | 4.2         |


[title] Machine Learning Classification
[path] Product Features/Analytics/Machine Learning Models/Model Types/

Machine Learning Classification uses models created in TensorFlow. See [Upload a Model](docId\:tna7FaQ3J7mT4jT0qe0Nw). The TensorFlow Images Processor feeds images to an already created TensorFlow Model. The TensorFlow Processor feeds timeseries data to an already created TensorFlow Model.

This use case is a customized classification version of a CNN classification model from the TensorFlow website.

:::BlockQuote
\# cnn model
from numpy import mean
from numpy import std
from numpy import dstack
from pandas import read\_csv
import numpy as np
import tensorflow as tf
from tensorflow import keras
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

\# load a single file as a numpy array
def load\_file(filepath):
dataframe = read\_csv(filepath, header=None, delim\_whitespace=True)
return dataframe.values&#x20;

\# load a list of files and return as a 3d numpy array
def load\_group(filenames, prefix=''):
loaded = list()
for name in filenames:
data = load\_file(prefix + name)
loaded.append(data)&#x20;
\# stack group so that features are the 3rd dimension
loaded = dstack(loaded)
return loaded&#x20;

\# load a dataset group, such as train or test
def load\_dataset\_group(group, prefix=''):
filepath = prefix + group + '/Inertial Signals/'
\# load all 9 files as a single array
filenames = list()&#x20;
\# total acceleration&#x20;
filenames += \['total\_acc\_x\_'+group+'.txt', 'total\_acc\_y\_'+group+'.txt', 'total\_acc\_z\_'+group+'.txt']
body acceleration
filenames += \['body\_acc\_x\_'+group+'.txt', 'body\_acc\_y\_'+group+'.txt', 'body\_acc\_z\_'+group+'.txt']
\# body gyroscopefilenames += \['body\_gyro\_x\_'+group+'.txt', 'body\_gyro\_y\_'+group+'.txt', 'body\_gyro\_z\_'+group+'.txt']
\# load input data
X = load\_group(filenames, filepath)&#x20;
load class output&#x20;
y = load\_file(prefix + group + '/y\_'+group+'.txt')
return X, y&#x20;

\# load the dataset, returns train and test X and y elements
def load\_dataset(prefix=''):
\# load all train
trainX, trainy = load\_dataset\_group('train', prefix + 'HARDataset/')
print(trainX.shape, trainy.shape)
\# load all test
testX, testy = load\_dataset\_group('test', prefix + 'HARDataset/')
print(testX.shape, testy.shape)
zero-offset class values
trainy = trainy - 1
testy = testy - 1
one hot encode y
trainy = tf.keras.utils.to\_categorical(trainy)
testy = tf.keras.utils.to\_categorical(testy)
print(trainX.shape, trainy.shape, testX.shape, testy.shape)
return trainX, trainy, testX, testy

\# standardize data
def scale\_data(trainX, testX, standardize):
\# remove overlap
cut = int(trainX.shape\[1] / 2)
longX = trainX\[:, -cut:, :]
\# flatten windows
longX = longX.reshape((longX.shape\[0] \* longX.shape\[1], longX.shape\[2]))
\# flatten train and test
flatTrainX = trainX.reshape((trainX.shape\[0] \* trainX.shape\[1], trainX.shape\[2]))
flatTestX = testX.reshape((testX.shape\[0] \* testX.shape\[1], testX.shape\[2]))
\# standardize
if standardize:
s = StandardScaler()
\# fit on training data
s.fit(longX)
\# apply to training and test data
longX = s.transform(longX)
flatTrainX = s.transform(flatTrainX)
flatTestX = s.transform(flatTestX)
\# reshape
flatTrainX = flatTrainX.reshape((trainX.shape))
flatTestX = flatTestX.reshape((testX.shape))
return flatTrainX, flatTestX

\# fit and evaluate a model
def evaluate\_model(trainX, trainy, testX, testy, param, n\_filters, kernal\_size):
verbose, epochs, batch\_size = 0, 10, 32
n\_timesteps, n\_features, n\_outputs = trainX.shape\[1], trainX.shape\[2], trainy.shape\[1]

\# scale data
trainX, testX = scale\_data(trainX, testX, param)
model = keras.Sequential()
model.add(tf.keras.layers.Conv1D(filters=n\_filters, kernel\_size=kernal\_size, activation='relu', input\_shape=(n\_timesteps,n\_features)))
model.add(tf.keras.layers.Conv1D(filters=n\_filters, kernel\_size=kernal\_size, activation='relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.MaxPooling1D(pool\_size=2))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(100, activation='relu'))
model.add(tf.keras.layers.Dense(n\_outputs, activation='softmax'))
model.compile(loss='categorical\_crossentropy', optimizer='adam', metrics=\['accuracy'])
\# fit network
model.fit(trainX, trainy, epochs=epochs, batch\_size=batch\_size, verbose=verbose)
\# evaluate model
\_, accuracy = model.evaluate(testX, testy, batch\_size=batch\_size, verbose=0)
return accuracy, model

\# summarize scores
def summarize\_results(scores, params):
print(scores, params)
summarize mean and standard deviation
for i in range(len(scores)):
m, s = mean(scores\[i]), std(scores\[i])
print('Param=%s: %.3f%% (+/-%.3f)' % (params\[i], m, s))
\# boxplot of scores
\# plt.boxplot(scores, labels=params)
\# plt.savefig('exp\_cnn\_standardize.png')

\# run an experiment
def run\_experiment(params, repeats=1):
\# load data
trainX, trainy, testX, testy = load\_dataset()
\# test each parameter
all\_scores = list()
for p in params:
\# repeat experiment
scores = list()
model = keras.Sequential()
for r in range(repeats):
score, model = evaluate\_model(trainX, trainy, testX, testy, p, n\_filters=64, kernal\_size=3)
score = score \* 100.0
model.summary()
\# if p:
\#   model.save("/motionModel/")
yy = model.predict(trainX)
print(np.round(yy,3))
print(testy)
print('>p=%s #%d: %.3f' % (p, r+1, score))
scores.append(score)
all\_scores.append(scores)
\# summarize results
summarize\_results(all\_scores, params)

\### run the experiment
n\_params = \[False, True]
run\_experiment(n\_params)
\# plt.show()
:::


[title] DB - Oracle
[path] Product Features/Integration/Integration Connectors/Databases/

:::hint{type="info"}
**Note**: This connector was deprecated as of Litmus Edge version 3.5.2.&#x20;
:::

The connector has the following parameters:

- Name
- Hostname
- Port
- Username
- Password
- Database
- Table
- Show Mapping checkbox
- Create table checkbox
- Throttling limit: Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.
- Persistent storage checkbox: If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.
- Queue Mode: Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.


[title] Overview of 'docker run'
[path] Product Features/Applications/Containers/

You can run custom images in Docker containers within Litmus Edge.

The Docker command used for this purpose is `docker run` and several options can be passed to this command to change its behavior. In this section, you will view some examples of how the `docker run` command can be used to run a Docker container in Litmus Edge.

:::hint{type="info"}
**Notes:**&#x20;

- The Docker run command is a very versatile tool with numerous configuration options. This section is only intended as an introduction to some of the possible uses of `docker run`. It does not serve as a comprehensive reference.

  See the [Docker documentation](https://docs.docker.com/engine/reference/commandline/run/) for the official, maintained and complete description of `docker run` and its capabilities.
- The **Run&#x20;**&#x62;utton in the *Containers* pane can only be used for `docker run` commands. Other commands, including any other `docker` commands, cannot be used.&#x20;
:::

The most basic example of a `docker run` command is `docker run <image>`, where `<image>` is the path to the image to be run in Docker.

To use options to modify the behavior of `docker run`, insert the option between `docker run` and the path to the image. `docker run -d <image>` adds the `-d` option, for example. This is called 'passing' the option to the (`docker run`) command.

**To run a custom Docker image:**

1. Log in to Litmus Edge.
2. From the navigation panel, select **Applications.**
   The *Dashboard* pane appears.
3. Click **Containers** in the navigation sub-panel.
   The *Containers* pane appears.
4. Click **Run&#x20;**&#x61;t the upper-right corner of the pane.
   The *Enter command to run* text field appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Y6V8W4zSapR1wR4fY4bdq_2023-09-1411-30-41.png "Run button")
5. Enter the `docker run` command you wish to run into the field.
6. Click **Run.**
   The command runs and the custom image container is created.

This section covers the use of the following options:&#x20;

- `-d` or `--detach`
- `--restart <restart options>`
- `-it`
- `--expose` or `-p`
- `--volume`
- `-e`

## Detach

Pass the `-d` or `--detach` option to `docker run` to run the Docker container in the background.&#x20;

:::hint{type="warning"}
**Important:&#x20;**&#x55;sing the `-d` option is mandatory to run a Docker container in Litmus Edge.
:::

## Restart

There are several ways the `--restart` option can be passed to `docker run`.&#x20;

:::hint{type="info"}
**Note:&#x20;**&#x54;he typical approach is to pass `--restart always`. If this option is not set (or set differently), the container will have to be started again manually after the Litmus Edge instance is rebooted.
:::

## Interactive bash Shell and TTY&#x20;

The `-it` option, when passed to `docker run`, starts an interactive `bash` shell in the container and allows the user to interact with said shell through a pseudo-TTY. This is a combination of the `-t` and `-i` options (short for `--tty` and `--interactive` respectively).

## Expose and/or Publish Ports

The `--expose` option allows the user to expose one or several ports of the container. Similarly, `-p` (short for `--publish`) publishes a container's port or ports to the host device. These options are passed by following an option by `<IP address of host>:<port number>` or just `<port number>`. For example, port `X` could be exposed by passing the option `--expose X` to `docker run`.

See [System Requirements](docId\:boQw9Hv4KQBt6nUF7m9s9) to review the list of required and optional ports.&#x20;

## Bind Mount a Volume

You can mount and bind a volume into the container by using the `--volume` option ( `-v` for short).

The general syntax is `--volume <host path of the directory to be mounted>:<mount path in container>`.

## Set Environment Variables

You can set environment variables in the container by passing the `--env` option ( `-e` for short).

The syntax is `--env <variable name>=<variable value>`, where `<variable name>` is generally in all capital letters.


[title] Upload an Image
[path] Product Features/Applications/Images/

You can upload an image using FTP or from your hard drive.

# Before You Begin

- Make sure you have created a registry for the image you are uploading. See [Add a Registry](docId\:wgl_1tPOfzVNAvHad3LHY) to learn more.&#x20;
- Ensure you have enough disk space (See *Data Partition Usage* section of [Info](https://app.archbee.com/docs/JWQMp_kvm0WsA_Fpjt1v_/YIwyPagdCmgYF_px_-wgA)) before pulling any new Docker images onto a Litmus Edge and its Catalog Apps. Certain Docker images may exceed the disk size of your Litmus Edge instance.

# Upload an Image

**To upload an image from your hard drive:**

1. Navigate to **Applications&#x20;**> **Images**.
   The *Images&#x20;*&#x70;ane appears.
2. Click the **Upload Image (+)&#x20;**&#x69;con.&#x20;
   Th&#x65;*&#x20;Import Image* dialog box appears. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yiwSnitHqDyUA803nP8ld_uploadimageicon.png" size="100" width="1913" height="418" caption="Upload image icon" position="center" showCaption="true" indent="2"}

Select one of the options below: "Upload an Image from your Hard Drive" or "Upload an Image Using FTP".&#x20;

## Upload an Image from your Hard Drive

**From the*****&#xA0;Import Image*****&#xA0;dialog box:&#x20;**

1. Select **Upload**.&#x20;
2. Click **Select Docker Image**.&#x20;
3. Navigate to the .tar image file on your hard drive and click **Open**.&#x20;
4. Click **Import**.&#x20;

## Upload an Image Using FTP

**From the*****&#xA0;Import Image*****&#xA0;dialog box:&#x20;**

1. Select **FTP**.&#x20;
2. Click **Select Docker Image**.&#x20;
3. Enter the file path for the .tar image file in the **Image File Path&#xA0;**&#x66;ield.&#x20;
4. Click **Import**.&#x20;


[title] DB - PostgreSQL SSL
[path] Product Features/Integration/Integration Connectors/Databases/

Review the [PostgreSQL SSL Integration Guide](docId\:yWtjE4wN7ifyHSAAjFVQf).&#x20;

## Overview

PostgreSQL SSL integration enables an Edge System to connect with a PostgreSQL database using SSL authentication.&#x20;

## Supported Communication

- Outbound (Edge to Database) - Yes
- Inbound (Database to Edge) - No

## Configurations

| **Variable**         | **Detail**                                                                                                                                                                                                                                                              | **Required** |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                 | Enter a name for the connector                                                                                                                                                                                                                                          | Yes          |
| Hostname             | IP Address or Hostname of the PostgreSQL Server (Must be reachable from the Edge system)                                                                                                                                                                                | Yes          |
| Port                 | PostgreSQL Server port                                                                                                                                                                                                                                                  | Yes          |
| SSL Mode             | SSL Mode: One of "require", "verify-ca", "verify-full"                                                                                                                                                                                                                  | Yes          |
| CA Certificate       | SSL CA Certificate                                                                                                                                                                                                                                                      | No           |
| Certificate          | SSL Certificate                                                                                                                                                                                                                                                         | No           |
| Private key          | SSL Private key                                                                                                                                                                                                                                                         | No           |
| Username             | User name (can be empty)                                                                                                                                                                                                                                                | No           |
| Password             | User password (can be empty)                                                                                                                                                                                                                                            | No           |
| Database             | Database name                                                                                                                                                                                                                                                           | Yes          |
| Table                | Table name                                                                                                                                                                                                                                                              | Yes          |
| Create table         | If selected and table doesn't exist, the table is created with the necessary format. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.                                                              | No           |
| Commit timeout       | Transaction commit timeout (ms)                                                                                                                                                                                                                                         | No           |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout                                                                                                                                                                                      | No           |
| Bulk insert count    | To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags. Available for Litmus Edge version 3.11.1 and later. | No           |
| Throttling limit     | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                  | No           |
| Queue mode           | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                    | No           |
| Persistent storage   | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                   | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** |
| ----------- | ----------- |
| PostgreSQL  | 12          |

:::hint{type="info"}
**Note**: When the *Create table* checkbox is not selected, the table format (columns) that you will create must still adhere to the following format.&#x20;
:::

```pgsql
CREATE TABLE IF NOT EXISTS "TABLE_NAME"
(
    id BIGSERIAL NOT NULL,
    record_uuid UUID NOT NULL,
    arrived_at  TIMESTAMP WITH TIME ZONE NOT NULL,
    device_id   VARCHAR(64)    NULL,
    register_id VARCHAR(64)    NULL,
    tag_name    VARCHAR(64)    NULL,
    datatype    VARCHAR(32)    NULL,
    value       VARCHAR NULL,
    success     BOOLEAN        NULL,
    PRIMARY KEY (id)
);
```


[title] Databases
[path] Product Features/Integration/Integration Connectors/


[title] Manage Processors from the Instances Table
[path] Product Features/Analytics/Instances Table/

You have the option of managing processors by navigating to **Analytics&#x20;**>**&#x20;Instances Table**.&#x20;

Refer to the management options below.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iCQbO5bPVKZcNGa59_CWx_image.png "Management options on the Instances Table")

\[1] Remove the processor

\[2] Update processor connection name

\[3] **Processor menu**: You have the following options.&#x20;

- **Remove processor**
- **Invoke processor**: Allows you to schedule a Database Batch processor to start and stop providing input at a specified date and time.&#x20;
- **Reset processor**

\[4] Update the parameters for the processor


[title] Applications Dashboard
[path] Product Features/Applications/

The *Dashboard&#xA0;*&#x70;ane of the Applications module opens by default when you navigate to **Applications**. This pane summarizes up-to-date information about the module's components.&#x20;

| **Tile**   | **Shows**                                                                                                | **When clicked, opens**                                    |
| ---------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| Catalogs   | The number of the catalogs defined in your edge device.                                                  | The [Catalog Apps](docId:-aYOvrkPNlebGYL0R8uXe)  pane&#xA; |
| Containers | The number of the containers deployed, total, and differentiated by status: Running, Paused, or Stopped. | The [Containers](docId\:uASMDJ5ugFN_P79HOba3Y) pane        |
| Images     | The number of images uploaded to your edge device, along with the total disk space they occupy.          | The [Images](docId\:dqZ6yCzkBV6r7basdscHI) pane            |
| Volumes    | The number of volumes mounted to run the applications.                                                   | The [Volumes](docId\:N7I86GMNbQOv-jKRQRgFr) pane           |
| Networks   | The number of networks your edge device has access to.                                                   | The [Networks](docId\:PIi1YuoBZ6zpSMg34T3f2) pane          |

# Access Applications Dashboard UI

**To access the Applications Dashboard:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Applications**.
   The *Dashboard&#x20;*&#x70;ane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/z_8UKFMQvP-ExHGRyUTiU_image.png" size="80" width="1685" height="435" caption="The Applications dashboard" position="center" showCaption="true"}


[title] MindSphere PSK
[path] Product Features/Integration/Integration Connectors/Cloud Service Providers/

Review the [MindSphere Integration Guide](docId\:oQFt-fX8hh1jyWW8IcGQu).&#x20;

## Overview

MindSphere PSK integration enables an Edge System to connect with MindSphere PSK.

## Supported Communication

- Outbound (Publish data from Edge to Mindsphere) - Yes
- Inbound (Subscribe data from Mindsphere to Edge) - No

## Configurations

| **Variable**                 | **Detail**                                                                                                                                                                                            | **Required** |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                         | Enter a name for the connector                                                                                                                                                                        | Yes          |
| Agent boarding configuration | The MindSphere agent boarding configuration JSON.                                                                                                                                                     | Yes          |
| Aspect name                  | Name of Aspect to publish data.                                                                                                                                                                       | Yes          |
| Throttling limit             | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                | No           |
| Persistent storage           | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |
| Queue mode                   | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  | No           |


[title] Rise and Fall
[path] Product Features/Analytics/Statistical Functions/

The **Rise and Fall** processor calculates the difference in upper and lower thresholds between consecutive values.

# Rise and Fall Overview

- **Rise**: Once you enter a lower threshold and an upper threshold, this function will show you the timestamp at which the current value starts to rise from the lower threshold.
- **Fall**: Once you enter a lower threshold and an upper threshold, this function will show you the timestamp at which the current value starts to fall from the upper threshold.
- Also provides rise time and fall time in seconds.

# Rise and Fall Parameters

| **Parameters** | **Details**                                                                                                         |
| -------------- | ------------------------------------------------------------------------------------------------------------------- |
| Kpi            | This parameter allows you to specify whether you want to calculate the rise, fall, or both for the given data.&#xD; |
| Upper          | This is the value above which the data is considered to be rising or falling.                                       |
| Lower          | This is the value below which the data is considered to be rising or falling.                                       |
| Tolerance      | Any changes in the data that are under this tolerance will be ignored when calculating the rise and fall.           |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1nBTJ31CaSREZGrzlOGDd_image.png" size="80" width="944" height="448" caption="Rise and Fall parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Rise and Fall&#x20;*&#x70;rocessor, refer the [Use the Rise and Fall Function](docId\:mlNwX1P757tGIVK4UeTJU) guide for more details.
:::


[title] Expression
[path] Product Features/Analytics/Statistical Functions/

The **Expressions** processor is used to create a mathematical-like expression with your desired topic. You can enter a formula to convert temperature from Celsius to Fahrenheit, or a custom formula for furnace pressure.

# Expression Overview

- This function is useful if you want to do some sort of mathematical expression on the input(s).
- If multiple inputs are used, it is advisable to use **values-type&#xA0;**&#x63;onnections.
- To make this processor work, you must define the connection of the input tag(s) as a **variable-name&#xA0;**(lets say “A”), and then use that in the mathematical expression, such as sin(A\_value) or A\_value\*100.
- If multiple inputs are needed, you must define each connection with a variable and use that in the expression. For example, “A\_value + B\_value”.
  **Example**:
  (Celsius\_value \* 9/5) + 32
  x\_value +2
  x\_downtime \*5

# Expression Parameters

| **Parameters**     | **Details**                                                                                                                                                                                                                           |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Expression         | The Expression parameter allows you to enter a mathematical expression that can involve variables defined by the input tags and perform operations such as addition, subtraction, multiplication, and division.&#xD;                  |
| Output Field Name  | The Output Field Name parameter lets you specify the field name that should appear in the output after the expression is evaluated.                                                                                                   |
| Timer Interval     | The Timer Interval parameter allows you to set the timer in milliseconds. If there's no event triggering the expression, you can use this timer to continuously display the output. Setting the value to zero will disable the timer. |
| Pass Through Value | The Pass Through Value parameter enables you to specify how anomalous data should be handled.                                                                                                                                         |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/icU_zrsSIWTQQPxG3eVvp_image.png" size="80" width="943" height="380" caption="Expression parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Expression&#x20;*&#x70;rocessor, refer the [Use the Expression Processor Function](docId:-L9q5dUs-J6pJXn8g0oJ6) guide for more details.
:::


[title] Inputs
[path] Product Features/Analytics/Statistical Functions/

The multiple **Input&#x20;**&#x70;rocessors help you calculate the statistical properties of the data from the PLC machines.

# Inputs Overview

Use one of the following processors for your inputs:

- **Inputs Average&#xA0;**&#x67;ives you the average of the inputs values in the Flow.
- **Inputs Maximum&#xA0;**&#x67;ives you the maximum value between the inputs in the Flow.
- **Inputs Minimum&#xA0;**&#x67;ives you the minimum value between the inputs in the Flow.
- **Inputs Sum&#xA0;**&#x61;dds all the inputs values in the Flow.

The following information describes these processors:

- For **Field Name**, you can enter the field name for which you want to apply the function. The field name must be available in all the inputs. For example, **value&#xA0;**&#x6F;r **downtime**.
- For **Processing Type**, you can select from **float**, **signed&#xA0;**(signed integer) or **unsigned&#xA0;**(unsigned integer).
- Connect the inputs to the function using the **values&#xA0;**&#x63;onnection. The values connection acts as a time synchronizer.
- Connect the function to the output using the **events&#xA0;**&#x63;onnection.

# Inputs Parameters

| **Parameters**     | **Details**                                                                                        |
| ------------------ | -------------------------------------------------------------------------------------------------- |
| Processing Type    | Data type of the value being processed.&#xA;&#xD;                                                  |
| Field Name         | Usually left unchanged. Use it if incoming is message type, and/or non-default "value" field name. |
| Pass Through Value | The Pass Through Value parameter enables you to specify how anomalous data should be handled.      |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tDZwpF9hq1lu7yegQqHtw_image.png" size="80" width="960" height="540" caption="Inputs Average parameters" position="center" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/h3bGwCjMlIrF6MbNdmCl2_image.png" size="80" width="960" height="540" caption="Inputs Maximum parameters" position="center" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mKEPM_tobX0l6pqUxyytE_image.png" size="80" width="960" height="540" caption="Inputs Maximum parameters" position="center" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yUyRQ-FLVXxEtsCVUyVlx_image.png" size="80" width="960" height="540" caption="Inputs Sum parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Inputs&#x20;*&#x70;rocessor, refer the [Use the Inputs Processor Function](docId\:ErgcQ5bpreT1F_YWjmhxC) guide for more details.
:::


[title] Combination Processor
[path] Product Features/Analytics/Statistical Functions/

The **Combination&#x20;**&#x70;rocessor is used to combine fields from different input processors into a single JSON string.

# Combination Processor Overview

- This Processor can be used to combine fields from different input processors, into a single JSON string.
- A definition is needed to be added on the connecting wire after creating this processor.
- The fields to combined, will need to be defined as **wire definition**\_**fieldName.**

# Combination Processor Parameters

| **Parameters**          | **Details**                                                                                                                                        |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Combination Type        | This parameter allows you to choose between combining selected fields or combining all fields from the different input processors.                 |
| What Timestamp to Take? | Use this parameter to select the timestamp from a specific input processor to be included in the combined output.                                  |
| Fields to Combine       | In this parameter, you need to enter the fields that you want to combine into a single JSON string, separated by commas.                           |
| Pass Through Value      | This parameter enables you to specify how anomalous data should be handled, such as replacing the current value with an anomaly field if detected. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jZ3tTiwMGHSn_DF7KN8C1_image.png" size="80" width="960" height="670" caption="Combination Processor parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Combination Processor*, refer the [Use the Combination Processor Function](docId:0_WLPlyO7jI5qmFk4h27R) guide for more details.
:::


[title] Create a Network
[path] Product Features/Applications/Networks/

You can add networks from the *Networks&#xA0;*&#x70;ane of the *Applications&#x20;*&#x6D;odule. You can then use these networks to run specific application containers.

# Create a Network

**To add a network:**

1. Navigate to **Applications&#x20;**> **Networks**.
   The *Networks&#x20;*&#x70;ane appears.
2. Click the **Create a Network&#x20;**&#x69;con. The *Create Network* dialog box appears.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/r4U6N0ynR82JlVxhXs4f5_createnetworkicon.png "The Create a Network icon")
3. Enter a name for the network in the **Name** field.

## Step 1: Network Configuration

Enter the details in the *Network configuration* section.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_iS2mD5pJ5WJYMfOcf4w5_image.png "Network configuration section")

- **Driver**: Use the drop-down list to select a network type. The options are: bridge, ipvlan, or macvlan.&#x20;
- **Driver Options** (Optional): Click **Driver Options**, enter key-value values in the **Key&#x20;**&#x61;nd **Value&#x20;**&#x66;ields, and click **Add**. Repeat adding key-value pairs as needed.&#x20;

## Step 2: IPV4 Network Configuration

Enter the details in the *IPV4 Network configuration* section.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9aEDx64ibMa92wiTFnWIf_image.png "IPV4 Network configuration section")

- **Subnet**: Enter a subnet value.&#x20;
- **Gateway**: Enter the gateway address.&#x20;
- **IP Range**: Enter the network's IP range.&#x20;
- **Add Excluded IP** (Optional): Click **Add Excluded IP**, enter key-value values in the **Key&#x20;**&#x61;nd **Value&#x20;**&#x66;ields, and click **Add**. Repeat adding key-value pairs as needed.&#x20;

:::hint{type="info"}
**Note**: If you enter no information in this section, the Docker assigns the IPv4 range automatically.
:::

## Step 3: Define IPV6 Network Configuration

Enter the details in the *IPV6 Network configuration* section.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2pVTQrpqdpoyzPOWpwmUl_image.png "IPV6 Network configuration section")

- **Subnet**: Enter a subnet value.&#x20;
- **Gateway**: Enter the gateway address.&#x20;
- **IP Range**: Enter the network's IP range.&#x20;
- **Add Excluded IP** (Optional): Click **Add Excluded IP**, enter key-value values in the **Key&#x20;**&#x61;nd **Value&#x20;**&#x66;ields, and click **Add**. Repeat adding key-value pairs as needed.&#x20;

## Step 4: Advanced Configuration

Enter the details in the *Advanced configuration* section.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MIxbjClP5hCuzHjvD_EWr_image.png "Advanced configuration section")

- **Isolated network**: Select the check box to restrict containers created on this network to this network only, with no inbound or outbound connectivity.

- **Enable manual container attachment**: Select the check box to enable users to attach the network to running containers.

- **Labels&#x20;**(Optional): Click **Labels**, enter key-value values in the **Key&#x20;**&#x61;nd **Value&#x20;**&#x66;ields, and click **Add**. Repeat adding key-value pairs as needed.&#x20;

When done defining the network configuration, click **Create**.&#x20;


[title] Pull an Image from the Azure Container Registry
[path] Product Features/Applications/Images/Download an Image/

You can import an image from the Azure container registry on the *Images&#x20;*&#x70;ane.

# Before You Begin

Before you complete the steps below, make sure you do the following:

- [Add a Registry](docId\:wgl_1tPOfzVNAvHad3LHY) in Azure for the image you are importing.
- Verify you have permissions to import an image.

# Step 1: Copy Image from Azure

**To copy the image from Azure:**

1. Open the Azure application.&#x20;
2. Navigate to the **AzureContainerRegistry**.
3. Click the registry item from which you want to pull.
4. From the registry item pane, copy the name of the image.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hocdpgHpZKG-75p_UKvHo_azure-image-pull-copy.png "Azure image name")

:::hint{type="info"}
**Note**: If you copy the entire registry name, you will get a *bad request* when you import the application and the import will fail.

:::

# Step 2: Pull Image in Litmus Edge

**To pull the image in Litmus Edge:**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Applications**.
   The *Overview&#x20;*&#x70;ane appears.
3. From the Navigation panel, select **Images**.
   The *Images&#x20;*&#x70;ane appears.&#x20;
4. Click the **Pull Image** icon.&#x20;
   The *Pull Image&#x20;*&#x64;ialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JTsbUN0snd1_Xpy9ARyGg_xq82po5xxk9skmsemscoipullimageicon.png "Pull Image icon")
5. From the *Registry&#x20;*&#x64;rop-down list, select the **Azure&#x20;**&#x72;egistry. If needed, [Add a Registry](docId\:wgl_1tPOfzVNAvHad3LHY) for Azure.&#x20;
6. In th&#x65;*&#x20;Image Name* field, paste the image you previously copied from Azure.&#x20;
7. Click **Pull**.


[title] Manufacture Counter and Capacity Utilization
[path] Product Features/Analytics/Key Performance Indicators/

You can use the **Manufacture Counter** KPI processor to count the total number of manufactured units in a period.&#x20;

# Manufacture Counter and Capacity Utilization Overview

- Use **Total Units manufactured&#xA0;**&#x69;f you need a simple count of the total number of units manufactured in a period.
- Use **Capacity Utilization&#xA0;**&#x69;f you want to monitor how much output is being produced compared to an ideal scenario.
- The **timer interval&#xA0;**&#x70;arameter is useful if the connected input tag is offline but you still want this KPI to look for a value every few seconds, defined by the timer.
- You should have an input connected with this KPI with the definition on its connection as *manufactureEnd*.
  For example, if you define **Manufacture From Value**: `0 `and **Manufacture To Value**: `1`, this means that when the value from the input tag, with the definition on the connection as *manufactureEnd*, goes from 0 to 1, it is an indication that a unit was manufactured.
- After creating this KPI, you need to add a definition called *manufactureEnd* to the connecting wire, which is an event trigger, triggering whenever there is end of a manufacturing cycle.

# Manufacture Counter and Capacity Utilization Parameter

| **Parameters** | **Details**                                                                                                          |
| -------------- | -------------------------------------------------------------------------------------------------------------------- |
| Device Reset   | This parameter resets the KPI when the connected device is reset.&#xD;                                               |
| Unit           | Enter the unit of time (e.g., minute, hour, day, week) for which you are entering the ideal count.                   |
| Ideal Count    | Define the ideal count of manufactured units per chosen unit of time (e.g., per hour, day, week).                    |
| From Value     | Enter the value that indicates the end of a manufacturing cycle.                                                     |
| To Value       | Enter the value that indicates the end of a manufacturing cycle.                                                     |
| Timer Interval | Timer in milliseconds. If no event, use this timer to keep displaying the output continually. Enter zero to disable. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gTQpHcmb5gDurgwvBvfOE_image.png" size="80" width="942" height="562" caption="Manufacture Counter parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Manufacture Counter and Capacity Utilization&#x20;*&#x4B;PI, refer the [Use the Manufacture Counter KPI](docId\:l3Za-HMok751FWo9BgIv1) guide for more details.
:::


[title] Linear Prediction
[path] Product Features/Analytics/Statistical Functions/

The **Linear Prediction** processor forecast future data points by fitting a linear equation to collected data and using statistical techniques to identify the underlying trend.

# Linear Prediction Overview

- Once window values are full, the mean of values is subtracted from each element and squared (Y\_i - Mean\_Y)
- Same is done for the time series elements (X\_i - Mean\_X)
- The sum of squares is sum of (X\_i - Mean\_X)^2
- The sum of products is sum of (Y\_i - Mean\_Y) \* (X\_i - Mean\_X)
- The slope is obtained by the formula m = \{ Sum of products } / \{ Sum of Squares }
- The intercept is obtained by the formula b = Mean\_Y - m \* Mean\_X
- Finally, prediction is made by extrapolating the number of predictions in the simple formula y = m\*X + b
- Residual Error is obtained by modeling for current value, and subtracting the ACTUAL current value.
- The **timer interval** parameter is useful if the connected input tag is currently not polling, but you still want this KPI to publish a value every few seconds, defined by the aforementioned timer.
  - If you know your input is going to publish at the expected interval, it is better to disable this timer by entering **0** in the field.

# Linear Prediction Parameters

| **Parameters**        | **Details**                                                                                                                                                                                               |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Window Size           | This parameter determines how many values the processor should observe before making each prediction.                                                                                                     |
| Number of Predictions | This parameter specifies how many polling intervals into the future the processor should predict.                                                                                                         |
| Polling Interval      | This parameter defines the time interval, in seconds, between successive data polling or data collection.                                                                                                 |
| Timer Interval        | If no event is detected, this timer interval is used to keep displaying the output continually. Entering zero disables this timer, and the prediction model relies entirely on incoming data for updates. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-9GPQRiXC_ZzNs81neO80_image.png" size="80" width="943" height="451" caption="Linear Prediction parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Linear Prediction&#x20;*&#x70;rocessor, refer the [Use the Linear Prediction Function](docId\:zQSnDZTHYWRZYqd-ZXCjk) guide for more details.
:::


[title] Deploy a Marketplace Application
[path] Product Features/Applications/Marketplace/

A Marketplace catalog contains an inventory of available applications that can be installed with a script. The initial Litmus Edge environment includes a Default Public Marketplace catalog.

To review use cases for specific applications, see [Applications Guides](docId:-DKHmS9kYfUcfLPohUyk2).

# Before You Begin

- You can add a public catalog from Litmus Edge Manager. See *Push Marketplace catalogs to Edge devices* section of [Manage Applications](docId:1cjuL2kjJIQEBN2kVHjp6).
- You can add a private catalog from which you want to deploy the application. See [Add a Marketplace Catalog](docId\:SZlm4sAvCxLjgFnjUN8YV) for more information.
- For a Private Marketplace Catalog, make sure you create a Docker image and add a Docker registry. See [Create a Docker Image to Deploy to Your Private Repository](docId\:TL0igWm-y39EDvsOqPJbe) and [Add a Registry](docId\:wgl_1tPOfzVNAvHad3LHY) for more information.
- To access data from the application, it must be running on the same network as the Litmus Edge device.

**To deploy an application:**

1. Navigate to **Applications&#x20;**> **Marketplace**.
   The *Marketplace&#x20;*&#x70;ane appears.&#x20;
2. Click the **Marketplace List&#xA0;**&#x64;rop-down list and select a *Marketplace&#x20;*&#x63;atalog.
   The selected Marketplace appears, displaying its associated applications.
3. Click an application tile.
   The selected application *Launch&#x20;*&#x64;ialog box appears.
4. Click the **Installation script version&#xA0;**&#x66;ield, and then select a script versio&#x6E;**&#xA0;**&#x66;rom the drop-down list.
5. Enter a name and complete any applicable parameters for the application.&#x20;
   - A name for the incoming Docker container&#x20;
   - (If applicable) A number for the port. A number cannot be used if it’s already in use by another Docker container.
   - Complete any applicable parameters by entering a respective value. For others, select a value from its respective drop-down list. These parameters will be passed as runtime variables to the respective Docker container.
6. Click **Launch**.&#x20;


[title] Splunk
[path] Product Features/Integration/Integration Connectors/Cloud Service Providers/

Review the [Splunk Integration Guide](docId\:hSzP2SpepMfivrhpKHOfK).&#x20;

## Overview

Splunk integration enables an Edge System to connect with Splunk via HTTP

## Supported Communication

- Outbound (Publish data from Edge to Splunk) - Yes
- Inbound (Subscribe data from Splunk to Edge) - No

## Configurations

| **Variable**       | **Detail**                                                                                                                                                                                            | **Required** |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name               | Enter a name for the connector                                                                                                                                                                        | Yes          |
| Hostname           | Splunk server host name                                                                                                                                                                               | Yes          |
| Port               | Splunk server port                                                                                                                                                                                    | Yes          |
| Use SSL            | Use SSL HTTP connection                                                                                                                                                                               | No           |
| Endpoint           | The Splunk endpoint. The default is services/collector/event.                                                                                                                                         | Yes          |
| Token              | Token for access to Splunk server                                                                                                                                                                     | Yes          |
| Throttling limit   | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                | No           |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |
| Queue mode         | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  | No           |


[title] Simple Window
[path] Product Features/Analytics/Statistical Functions/

# Simple Window Overview

- Takes input as a single value, outputs a simple moving window following FIFO algorithm.

# Simple Window Parameters

| **Parameters** | **Details**                                                               |
| -------------- | ------------------------------------------------------------------------- |
| Value Type     | This parameter specifies the type of the incoming value.                  |
| Order          | This parameter specifies the desired order of output window.              |
| Window Size:   | This parameter specifies the window in which the values will be observed. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QWriFL2v3gexcgVt8uzLq_image.png" size="80" width="959" height="609" caption="Simple Window parameters" position="center" showCaption="true"}


[title] Online and Offline Percentage
[path] Product Features/Analytics/Key Performance Indicators/

The **Online and Offline Percentage** KPI is a raw number indicating how long a sensor was functional and how long it was offline.

# Online and Offline Percentage Overview

- If you do not care for how long the sensor has been ON for, but care for how long was it functional, Online/Offline is a raw number to have more detailed knowledge of the time.
- If you enable the "resetOnStatus" parameter, this KPI will only show how long the device has been ON, or how long it has been OFF, and will reset every time the status changes from ON or OFF.
- The **timer interval** parameter is useful if the connected input tag is offline, but you still want this KPI to "look" for a value every few seconds, defined by the aforementioned timer.
  - If you know your tag is going to reliably publish at the expected interval, it is better to disable this timer by entering 0 in the field.

# Online and Offline Percentage Parameter

| **Parameters**         | **Details**                                                                                                                                                 |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Device Reset           | This parameter resets the KPI when the connected device is reset.&#xD;                                                                                      |
| Unit                   | This parameter determines the unit in which the Online/Offline time is displayed (Seconds, Minutes, Hours, Days, or Weeks).                                 |
| Reset On Status Change | &#xD;If enabled, this parameter will show how long the device has been ON or OFF and will reset every time the status changes from ON to OFF or vice versa. |
| Timer Interval         | Timer in milliseconds. If no event, use this timer to keep displaying the output continually. Enter zero to disable.                                        |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/w9id3Rxz1tstqssvqPztA_image.png" size="80" width="939" height="389" caption="Online and Offline parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Online and Offline Percentage&#x20;*&#x4B;PI, refer the [Use the Online and Offline Percentage KPI](docId\:t9dY_Q9cB6STenPAGmqXD) guide for more details.
:::


[title] Volumes
[path] Product Features/Applications/

The **Applications** > **Volumes** pane lists all the volumes created and mounted by Docker containers. A volume is form of a persistent storage that is attached to by a Docker container’s application, as to store the application’s data.  A Docker container’s application that exists in multiple marketplace catalogs can share the same volume.  When a Docker container is stopped and removed, its volume is not removed automatically and must be removed manually.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/n3ZzjqNSBJiLFGJxc4cTp_image.png" size="80" width="1905" height="422" caption="The Volumes pane" position="center" showCaption="true"}

# Remove Volumes

To remove a volume, navigate to **Applications&#x20;***>&#x20;***Volumes**, select the check box for the volume, and click the **Remove Selected** icon.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gTTLEicWsOtPPPCh3RoAD_image.png" size="80" width="1907" height="423" caption="The Remove Volume icon" position="center" showCaption="true"}


[title] Moving Window
[path] Product Features/Analytics/Statistical Functions/

The **Moving Window&#x20;**&#x70;rocessors perform calculations over a sliding or moving window of data from your PLC device.

# Moving Window Overview

Single inputs are to be provided with the **events&#xA0;**&#x74;ype connection and then the respective functions are calculated as the names suggest.

Use one of the following processors for your inputs:

- **Moving Average&#xA0;**&#x67;ives you the average of the inputs values in the Flow.
- **Moving Maximum&#xA0;**&#x67;ives you the maximum value among the inputs in the Flow.
- **Moving Minimum&#xA0;**&#x67;ives you the minimum value among the inputs in the Flow.

The following information describes these processors:

- For **Field Name**, you can enter the field name for which you want to apply the function. The field name must be available in all the inputs. For example, **value&#xA0;**, **deviceID**, or **success**.
- For **Processing Type**, you can select from **float**, **signed&#xA0;**(signed integer) or **unsigned&#xA0;**(unsigned integer).
- For **Window Size**, enter the number of values you want the function to consider.
- Connect the input to the function using the **events&#xA0;**&#x63;onnection.
- Connect the function to the output using the **events&#xA0;**&#x63;onnection.

# Moving Window Parameters

| **Parameters**  | **Details**                                                                                                                                                                         |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Processing Type | This parameter refers to the data type of the value being processed. &#xD;                                                                                                          |
| Window Size     | This parameter determines the size of the window in which calculations are performed. The window size represents the number of seconds over which the calculations are carried out. |
| Field Name      | This parameter is usually left unchanged. It is used if the incoming data is of message type, and/or if a non-default "value" field name is being used.                             |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_AnSfYXTxVM1ND_X43dJl_image.png" size="80" width="960" height="570" caption="Moving Average parameters" position="center" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZJD7rsm7To9cvonMHYSY2_image.png" size="80" width="960" height="570" caption="Moving Maximum parameters" position="center" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/v5MO2jAOtEm6-oC3W2muc_image.png" size="80" width="960" height="570" caption="Moving Minimum parameters" position="center" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x57;hen creating an analytics flow with *Moving Window&#x20;*&#x70;rocessor, refer the [Use the Moving Window Processor Function](docId:3aLLS4NWakwZULLqW74bL) guide for more details.
:::


[title] Cognite Connector
[path] Product Features/Integration/Integration Connectors/Cloud Service Providers/

:::hint{type="info"}
**Note**: Available for Litmus Edge version 3.11.3 and later.&#x20;
:::

Review the [Cognite Integration Guide](docId\:ndv9rd7rDi0q_9huVnCSC)

## Overview

Cognite integration enables an Edge System to connect with the Cognite platform.

## Supported Communication

- Outbound (Publish data from Edge to Cognite platform ) - Yes
- Inbound (Subscribe data from Cognite platform to Edge) - Yes

## Configurations

| **Variable**        | **Detail**                                                                                                                                                                                            | **Required** |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                | Connector Name                                                                                                                                                                                        | Yes          |
| Project ID          | A unique identifier assigned to each project within the Cognite platform                                                                                                                              | Yes          |
| Tenant ID           | A unique identifier associated with a specific customer or organization within the Cognite platform, obtained from Microsoft Azure.                                                                   | Yes          |
| Client ID           | A unique identifier used to authenticate Cognite clients, obtained from Microsoft Azure.                                                                                                              | Yes          |
| Client Secret       | A confidential key used for authentication of Cognite clients, obtained from Microsoft Azure.                                                                                                         | Yes          |
| Cluster             | A grouping of resources within the Cognite platform for managing and processing data efficiently.                                                                                                     | Yes          |
| Scope               | Specifies the level of access or permissions granted to an application within the Cognite platform.                                                                                                   | Yes          |
| Subscribe interval  | The time interval at which a client application receives updates or notifications from the Cognite platform                                                                                           | No           |
| Throttling limit    | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                | No           |
| Persistent storage  | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |
| Queue mode          | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  | No           |


[title] DB - MySQL SSL
[path] Product Features/Integration/Integration Connectors/Databases/

Review the [MySQL SSL Integration Guide](docId\:UkvbOt9x0nbMfmNJMH_ID).&#x20;

## Overview

MySQL SSL integration enables an Edge System to connect with a MySQL Database using SSL authentication.&#x20;

## Supported Versions

MySQL (4.1+), MariaDB, Percona Server, Google CloudSQL or Sphinx (2.2.3+)

## Supported Communication

- Outbound (Edge to Database) - Yes
- Inbound (Database to Edge) - No

## Configurations

| **Variable**         | **Detail**                                                                                                                                                                                                                                                                | **Required** |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                 | Enter a name for the connector                                                                                                                                                                                                                                            | Yes          |
| Hostname             | IP Address or Hostname of MSSQL Server (Must be reachable from the Edge system)                                                                                                                                                                                           | Yes          |
| CA Certificate       | SSL CA Certificate                                                                                                                                                                                                                                                        | No           |
| Certificate          | SSL Certificate                                                                                                                                                                                                                                                           | No           |
| Private key          | SSL Private key                                                                                                                                                                                                                                                           | No           |
| Port                 | MSSQL Server port                                                                                                                                                                                                                                                         | Yes          |
| Username             | User name                                                                                                                                                                                                                                                                 | Yes          |
| Password             | User password                                                                                                                                                                                                                                                             | No           |
| Database             | Database name                                                                                                                                                                                                                                                             | Yes          |
| Table                | Table name                                                                                                                                                                                                                                                                | Yes          |
| Create table         | If selected and table doesn't exist, the table is created with the necessary format. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.                                                                | No           |
| Commit timeout       | Transaction commit timeout (ms)                                                                                                                                                                                                                                           | No           |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout                                                                                                                                                                                        | No           |
| Bulk insert count    | To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags. Available for Litmus Edge version 3.11.1 and later.   | No           |
| Throttling limit     | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                    | No           |
| Persistent storage   | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                     | No           |
| Queue mode           | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                      | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** |
| ----------- | ----------- |
| MySQL       | 8           |

:::hint{type="info"}
**Note**: When the *Create table* checkbox is not selected, the table format (columns) that you will create must still adhere to the following format.&#x20;
:::

```mysql
#CREATE TABLE IF NOT EXISTS `TABLE_NAME`
(
	id          BIGINT AUTO_INCREMENT NOT NULL,
	record_uuid CHAR(36)              NOT NULL,
	arrived_at  DATETIME              NOT NULL,
	device_id   VARCHAR(64)           NULL,
	register_id VARCHAR(64)           NULL,
	tag_name    VARCHAR(64)           NULL,
	datatype    VARCHAR(32)           NULL,
	value       TEXT                  NULL,
	success     TINYINT               NULL,
	PRIMARY KEY (id)
);
```


[title] Input Processors
[path] Product Features/Analytics/

The Analytics module makes use of built-in Input processors to retrieve data from a topic, database, or generator.&#x20;

The following describes the input processors that are currently available.



# Database Batch Input Processors

## Database Batch Input Overview

- Generate events by periodically polling specified DB measurements.
- **Filtering:**
  - You could add filtering for queries.
  - List of fields depends on database and measurement, but for device data, standard filters are: datatype, device\_id, is\_device\_status, register\_id, success, tag, topic, value.
- **Examples:**
  - Filter by tag: "tag" = 'tag1'
  - Filter by tag and success: "tag" = 'tag1' AND "success" = 1

## Database Batch Input Parameters

| **Parameters** | **Details**                                                                                  |
| -------------- | -------------------------------------------------------------------------------------------- |
| Database       | Select the name of the database from which data will be retrieved.                           |
| Filter         | Specify the SQL filter for the WHERE part of the query to filter the data from the database. |
| Metric Name    | Name of the metric for TimeSeriesDB polling.&#xD;                                            |
| Period Secs    | Set the polling interval in seconds for retrieving data from the database.                   |
| Typed          | Define the data typed policy for processing the retrieved data.                              |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4ZJjjetAgS2DwcXUEJXs4_image.png" size="80" width="939" height="342" caption="Database Batch Input parameters" position="center" showCaption="true"}

# DataHub Subscribe Processors

## DataHub Subscribe Overview

- Generate events from specified DataHub topic and attach to output.

## DataHub Subscribe Parameters

| **Parameters**                                            | **Details**                                                                      |
| --------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Format                                                    | Choose the format of the data, with possible values of json or fb (flat buffer). |
| Topic                                                     | Select the specific device and tag from which data will be collected.            |
| Ignore Failed Data (Litmus Edge version 3.11.0 and later) | Select to ignore data with the output `success=false`.                           |
| Ignore Null Value (Litmus Edge version 3.11.0 and later)  | Select to ignore data with the output `value=null`.                              |



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/28QEUcDCzQ40HcImkXnuc_image.png" size="90" width="755" height="372" position="center" caption="DataHub Subscribe parameters" showCaption="true"}

# Generator Processors

## Generator Overview

- Simple generator for testing, use **t** as the variable.

## Generator Parameters

| **Parameters**       | **Details**                                                                                                                                       |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Amplitude Multiplier | Specify the amplitude multiplier for the generated signal.                                                                                        |
| Formula              | Choose the supported math functions for generating the signal, such as sin, cos, tan, power, sqrt, log, exp, or abs.                              |
| Generator Type       | User defined signal generation or pre-defined generation.                                                                                         |
| Periodicity          | Define the periodicity of the signal in seconds.                                                                                                  |
| Strength             | Specify the strength of the simulated wave approximation, with the maximum value being 10.                                                        |
| Timer Interval       | Set the timer in milliseconds. If no event occurs, this timer is used to keep displaying the output continually. Enter zero to disable the timer. |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2mSWPmCSfLhsuVGQusDDB_image.png" size="80" width="960" height="534" caption="Generator parameters" position="center" showCaption="true"}


[title] Integration
[path] Product Features/

The Integration module enables you to configure data connections with third-party cloud service providers, databases, MQTT message brokers, and more.&#x20;

You can:

- Publish data (outbound topics) from Litmus Edge to third-party data connections
- Subscribe to data (inbound topics) from third-party data connections to Litmus Edge

# Integration Connectors

Refer to [Integration Connectors](docId\:RBeglGohbPDqeASzI7sUZ) to review available third-party data connections.&#x20;

You can enable database apps in the Applications Marketplace. Database connections allow table names in mixed case.

# Integration Guides

Review entire workflows for setting up integrations in [Integration Guides](docId\:ZJCZ7NP6pGLZGihEVl8Ed).&#x20;

# Access Integration UI

**To access the Integration pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **Integration**.
   The *Integration&#x20;*&#x70;ane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vUQNPicEtgsoBCC0l0F_a_image.png" size="80" width="1920" height="914" caption="Integration pane" position="center" showCaption="true"}

# Next Steps

- [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y)
- [Add Topics to Connectors](docId\:O394mIPBbicF4ci2O5zSr)
- [Manage Connectors](docId:5hctoRLhgaX3Ikh_lvi0A)&#x20;
- [Integration Connectors](docId\:RBeglGohbPDqeASzI7sUZ)
- [Integration Guides](docId\:ZJCZ7NP6pGLZGihEVl8Ed)


[title] Manage Connectors
[path] Product Features/Integration/

After you add connectors to Litmus Edge, you can navigate to the **Integration&#x20;**&#x70;ane to manage them.&#x20;

# Filter and Search Connectors

You can filter and search for connectors from the *Integration&#x20;*&#x70;ane by clicking the **Toggle Connector Filter** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VLV9badzNNanRLGywyk49_image.png "Toggle Connector Filter icon")

# Manage Individual Connectors

Refer to the image and callouts below for management options for connectors. These options are available for Litmus Edge version 3.11.0 and later.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ij6WmvoltKW4NnQeaEq4__image.png" size="60" width="390" height="351" position="center" caption="Management options for connectors" showCaption="true"}

\[1] **Logs Enabled**: Indicates that logging is enabled for the connector.&#x20;

\[2] **Enable/Disable connector**: Use the toggle to enable or disable the connector. The status will update to one of the following: `Connected`, `Failed`, or `Disabled`.&#x20;

\[3] Copy the Instance, Provider Identifier, and Instance Identifier.&#x20;

\[4] **Edit connector**: Update the fields for the connector.&#x20;

\[5] **Purge connector**: In the course of its operation, a connector persists inbound and outbound data. You might need to periodically purge the connector's data storage to avoid excessive use of disk space. Select this option to empty the connector's data storage.&#x20;

\[6] **Remove connector**: Remove the connector from the *Integration&#x20;*&#x70;ane.&#x20;

\[7] **Manage Topics**: Navigate to the Topics tab for the connector.&#x20;

# Enable Logging

When you enable logging for a connector, the log displays connection and publish-based error messages. This can increase CPU usage. Therefore, it is preferable to use logging only for debugging.

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

- The connector must be added and connected before logging can be enabled.
- With the exception of the default connector, all connectors have logging capability.
- Clicking the connector tile shows the details for the connector. You can view the logs section from there.
- You can download and refresh log files from the *Details&#x20;*&#x70;ane.
:::

**To enable logging:**

1. From a connector tile within an *Integration&#x20;*&#x70;ane, click the **Edit** icon.
   The *Edit Connector* dialog box appears.
2. Select the **Enable logging** check box, and then click **Update**.
   The *Logging&#x20;*&#x69;con appears on the connector tile indicating that logging is active. Earlier versions (3.5.6) of Litmus Edge display a warning icon.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/M_vCw3vXIoJOOhNjaOiEx_image.png" size="60" width="376" height="350" position="center" caption="The enable logging icon" showCaption="true"}

# Access Connector Information

You can access device information and edit options by clicking the connector tile.&#x20;

## Connector Dashboard

After clicking a connector tile, the dashboard for the connector displays.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Hm2VhFNCRZly5VT8VzYbp_image.png "The connector dashboard")

The dashboard displays the following information for the connector:

- Size on Disk
- Disk Usage
- Persistence Size

For *Disk Usage* and *Persistence Size*, you can use the icons to manipulate the charts and also download the charts in SVG, PNG, or CSV format.&#x20;

## Connector Configuration

The *Configuration&#x20;*&#x74;ab allows you to review and update the fields for the connector.&#x20;

Make updates as needed and click **Update**.&#x20;

## Connector Topics

The *Topics&#x20;*&#x74;ab allows you to add and manage topics for the connector.&#x20;

Refer to the image and callouts below for options in the *Topics&#x20;*&#x74;ab.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-R0Tqr4tAXEDF37MKVGcl_image.png" size="80" width="1173" height="465" position="center" caption="Connector Topic options" showCaption="true"}

\[1] **Show filter**: Search for topics.&#x20;

\[2] The **Add&#x20;**&#x69;con allows you to add topics individually or by CSV upload (as of Litmus Edge 3.11.0).&#x20;

- **Add a new subscription**: Add a topic to the connector. See the "Add a Topic to a Connector" section below to learn more.&#x20;
- **Upload CSV**: This option is available for Litmus Edge version 3.11.0 and later. You can upload a csv file of topics.&#x20;

\[3] (Available for Litmus Edge version 3.11.0 and later) The **Download&#x20;**&#x69;con allows you to download a CSV file of current topics in the connector or a sample of a CSV file you can use to upload.&#x20;

- **Download a sample**: Download a sample file that you can use to upload a number of topics for the connector.&#x20;
- **Download CSV**: Download a file of current topics in the connector.&#x20;

\[4] **Import from DeviceHub tags**: Import outbound topics to a connector from the DeviceHub tags. If you import DeviceHub tags for a `CONNECTED` connector, the connector will need to restart. All topics will be disabled upon initial import.&#x20;

\[5] **Enable all topics**: Enable all topics listed in the pane.&#x20;

\[6] **Disable all topics**: Disable all topics listed in the pane.&#x20;

\[7] **Delete all topics**: Delete all tags in the pane.&#x20;

## Connector Logs

To view the *Logs&#x20;*&#x74;ab, you must enable logging for the connector. To enable logging, edit the connector and select the **Enable logging** checkbox.&#x20;

From the *Logs&#x20;*&#x74;ab, you can download a file of the log, refresh the log, and clear the log (available for Litmus Edge version 3.11.0 and later).&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/H6zNd20Le5-s_YuCg7E9b_image.png" size="80" width="1082" height="515" position="center" caption="The connector Logs tab" showCaption="true"}

# Add a Topic to a Connector&#x20;

See [Add Topics to Connectors](docId\:O394mIPBbicF4ci2O5zSr) to learn about the different ways to add topics.&#x20;

# Manage Connector Topics

You can manage connector topics from the *Topics&#x20;*&#x74;ab.&#x20;

To manage a topic, click the **Action menu** for the topic.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qGNCwTyRuus9Zk-GiMBPx_image.png "The action menu for a connector topic")

- **Edit**: Update the parameters for the topic. You can also click the topic name to update parameters.&#x20;
- **Remove**: Remove the topic from the connector.&#x20;
- **Enable/Disable**: Enable or disable the topic for the connector.&#x20;


[title] System Info
[path] Product Features/Applications/

The **Applications&#x20;**>**&#x20;System Info** pane shows a JSON file that contains information about your Docker applications and Docker configurations.

From the *System Info* pane, you can click the **Show filter** icon to search for text in the JSON file. You can also click the **Refresh&#x20;**&#x69;con to refresh the system information.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IUTHG120qv7ZIgE1GgV4u_image.png "The Show filter and Refresh icons for system information")


[title] Manage Registries
[path] Product Features/Applications/Registry/

You can manage registries by navigating to **Applications&#x20;**>**&#x20;Registry**.

Click the **Action menu** for individual registries to manage them.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6N2nOppsRO7cORSLQPhHR_image.png "Management options for registries")

- **Edit**
- **Remove**

:::hint{type="warning"}
**Important**: If you edit an AWS\_ECR container registry, you must re-enter the AWS Region, AWS Key ID, and AWS Secret Key before saving the updates.
:::


[title] Model Types
[path] Product Features/Analytics/Machine Learning Models/

Refer to the following descriptions of model types:

- [Machine Learning Prediction](docId\:hQYG38Ta6qlIL80DOjwDa)&#x20;
- [Machine Learning Classification](docId\:hHvgec_PzGfBWVFsyTP23)&#x20;
- [Machine Learning Anomaly Detection](docId\:qZOIwuR2aJ_rA_PElXs0j)&#x20;


[title] Add a Connector
[path] Product Features/Integration/

You can add a connector to connect to cloud applications and databases for data visualization and device management.&#x20;

Review the following to learn more about available connectors and how-to guides:

- [Integration Connectors](docId\:RBeglGohbPDqeASzI7sUZ)
- [Integration Guides](docId\:ZJCZ7NP6pGLZGihEVl8Ed)

# Before You Begin

If you will be adding outbound topics to the connector, make sure to add relevant DeviceHub devices and tags that will be used to create the outbound topics. See [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

# Add a Connector

**To add a connector:**

1. Navigate to **Integration**.&#x20;
2. From the *Integration&#x20;*&#x70;ane, click the **Add a connector&#x20;**&#x62;ox.&#x20;
   The *Add a Connector* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-s3_FAAJ9vrfhD3FndDDp_addconnector.png" size="80" width="1204" height="481" caption="Add a connector box" position="center" showCaption="true"}
3. Select a provider from the **Provider&#x20;**&#x64;rop-down list.
4. Refer to [Integration Connectors](docId\:RBeglGohbPDqeASzI7sUZ) to review parameters for your connector.&#x20;
   - If you select SQL connectors, see [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more about database table options.&#x20;
5. (If Available/Optional) Select the **Persistent storage** check box. When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
6. Click **Add**.
   The selected connector appears on the *Integration&#x20;*&#x70;ane.
7. Toggle the Connector to the **On&#x20;**&#x70;osition to turn on the communication.

Once you add the connector, you can start [Adding Topics](docId\:O394mIPBbicF4ci2O5zSr).&#x20;

[title] Disk Usage
[path] Product Features/Applications/

The **Applications&#x20;**>**&#x20;Disk Usage** pane shows the current statistics for the applications: the total number, the number of active containers, the size of containers, images, and volumes, as well as the consumed disk space. This is useful for diagnostic purposes.&#x20;

From the *Disk Usage* pane, you can click the **Refresh&#x20;**&#x69;con to refresh the disk usage information.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OT-2Q5cCc7A5dAZez67l0_image.png "The Refresh icon for disk usage")




[title] Aveva Data Hub
[path] Product Features/Integration/Integration Connectors/Cloud Service Providers/

:::hint{type="info"}
**Note**: Available for Litmus Edge version 3.11.0 and later.&#x20;
:::

Review the [Aveva Data Hub Integration Guide](docId\:CVi-tMJ96YTvtDYNn2Dq5).&#x20;

## Overview

Aveva Data Hub integration enables an Edge System to connect with Aveva Data Hub.

## Supported Communication

- Outbound (Publish data from Edge to Aveva Data Hub ) - Yes
- Inbound (Subscribe data from Aveva Data Hub to Edge) - Yes

## Configurations

| **Variable**       | **Detail**                                                                                                                                                                                                                                                        | **Required** |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name               | Enter a name for the connector                                                                                                                                                                                                                                    | Yes          |
| Description        | Enter a description for the connection                                                                                                                                                                                                                            | No           |
| Endpoint           | Region Endpoints for West US (primary), Northern Australia, Eastern Europe. The endpoint is found i&#x6E;**&#x20;Aveva Data Hub** > **Security&#x20;**> **Clients&#x20;**> **Client&#x20;**> **Connection Information** > **Regional Endpoints**.                 | Yes          |
| Client id          | The Client ID is used to authenticate and access data. This Client ID is found in **Aveva Data Hub** > **Security&#x20;**> **Clients&#x20;**> **Client&#x20;**> **Details**> **Client ID**.                                                                       | Yes          |
| Client secret      | The Client secret is used to authenticate and access data. A user can create a new secret in **Aveva Data Hub** > **Security&#x20;**> **Clients&#x20;**> **Client&#x20;**>**Secrets&#x20;**&#x61;nd use the secret as this field.                                 | Yes          |
| Tenant id          | The ID required for a tenant to make connection. A tenant represents the set of services, applications, data, and configuration states available to a customer. The Tenant ID is found in **Aveva Data Hub** > **Security&#x20;**> **Client&#x20;**> **Details**. | Yes          |
| Stream id          | The default SDS stream. The Sequential Data Store stream name is found in **Aveva Data Hub** > **Data Management** . The Stream ID can be found in a stream’s details.                                                                                            | Yes          |
| Namespace          | The Namespace of the Default SDS stream name.                                                                                                                                                                                                                     | Yes          |
| Throttling limit   | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                            | No           |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                             | No           |
| Queue mode         | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                              | No           |


[title] Manage Marketplaces
[path] Product Features/Applications/Configure/

You can manage marketplaces by navigating to **Applications&#x20;**>**&#x20;Configure**.&#x20;

Click the **Action menu** for a marketplace to manage it.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DashYNEpaR5gcLnwqphmT_image.png "The action menu for a marketplace")

- **Edit**: Update the parameters for the marketplace.&#x20;
- **Remove**: Remove the marketplace.&#x20;


[title] DB - Microsoft SQL Server
[path] Product Features/Integration/Integration Connectors/Databases/

Review the [Microsoft SQL Server Integration Guide](docId\:uIPn_TgSKNJO4ut7eqnEI).&#x20;

## Overview

Microsoft SQL Server integration enables an Edge System to connect with an MSSQL database.&#x20;

## Supported Communication

- Outbound (Edge to SQL Server) - Yes
- Inbound (SQL Server to Edge) - No

## Configurations

| **Variable**         | **Detail**                                                                                                                                                                                                                                                                                                   | **Required** |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------ |
| Name                 | Enter a name for the connector                                                                                                                                                                                                                                                                               | Yes/No       |
| Hostname             | IP Address or Hostname of the MSSQL Server (Must be reachable from the Edge system)                                                                                                                                                                                                                          | Y            |
| Port                 | MSSQL Server port                                                                                                                                                                                                                                                                                            | Y            |
| Username             | User name (optional)                                                                                                                                                                                                                                                                                         | N            |
| Password             | User password (optional)                                                                                                                                                                                                                                                                                     | N            |
| Database             | Database name                                                                                                                                                                                                                                                                                                | Y            |
| Table                | Table name                                                                                                                                                                                                                                                                                                   | Y            |
| Show mapping         | Data from a predefined table could be mapped into a custom one. Example: \{"from": "to"} where "from" is a column from predefined table, and "to" is a column from destination table. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.  | N            |
| Create table         | If selected and table doesn't exist, the table is created with the necessary format. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.                                                                                                   | N            |
| Commit timeout       | Transaction commit timeout (ms)                                                                                                                                                                                                                                                                              | N            |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout                                                                                                                                                                                                                           | N            |
| Bulk insert count    | To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags. Available for Litmus Edge version 3.11.1 and later.                                      | N            |
| Throttling limit     | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                       | N            |
| Queue mode           | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                         | N            |
| Persistent storage   | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                        | N            |

## Compatibility Validation

This information is just for reference. More products and versions may be supported.

| **Product**          | **Version** |
| -------------------- | ----------- |
| Microsoft SQL Server | v15 (2019)  |
| Microsoft SQL Server | v14 (2017)  |

:::hint{type="info"}
**Note**: When the *Create table* checkbox is not selected, the table format (columns) that you will create must still adhere to the following format.&#x20;
:::

```sql
IF NOT EXISTS(SELECT *
              FROM sysobjects
              WHERE NAME = '"TABLE_NAME"'
                AND xtype = 'U')
CREATE TABLE "TABLE_NAME"
(
    id          BIGINT IDENTITY(1,1) NOT NULL,
    record_uuid CHAR(36)       NOT NULL,
    arrived_at  DATETIME       NOT NULL,
    device_id   VARCHAR(64)    NULL,
    register_id VARCHAR(64)    NULL,
    tag_name    VARCHAR(64)    NULL,
    datatype    VARCHAR(32)    NULL,
    value       TEXT           NULL,
    success     BIT            NULL,
    PRIMARY KEY (id)
)
```


[title] Manage Marketplace Applications
[path] Product Features/Applications/Marketplace/

Refer to the image and callouts below for management options for marketplace applications.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ve0ZfnjxikP1zT-den54Z_image.png" size="80" width="1907" height="571" caption="Management options for marketplace applications" position="center" showCaption="true"}

\[1] **Filter Apps**: Select a *Marketplace List*, and then use the search bar to filter applications by name.&#x20;

\[2] **Marketplace List**: use the drop-down list to view specific marketplace catalogs. A marketplace catalog must be added/deployed to the Litmus Edge instance for it be visible. See [Add a Marketplace Catalog](docId\:SZlm4sAvCxLjgFnjUN8YV) for details.

\[3] **Sync Marketplace**: Downloads the latest configurations for all the associated Docker applications listed in the selected marketplace catalog.

\[4] **Change Marketplace Application View**: Toggle between a *Tile View* and *List View*.&#x20;


[title] Untitled
[path] Product Features/Integration/Integration Connectors/


[title] Add a Role
[path] Product Features/System/Users/

:::hint{type="info"}
**Note**: Role-based access control (RBAC) is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

You can add a new role customized with user permissions by navigating to **System&#x20;**>**&#x20;Users&#x20;**&#x66;rom the **Roles&#x20;**&#x74;ab.

Learn more about [Role Permissions](docId\:uO7n5qVXgtE412BQNFzUT).&#x20;

**To add a role**:

1. Navigate to **System&#x20;***>&#x20;***Users**.&#x20;
2. From the *Roles&#x20;*&#x74;ab, click the **Add Permissions** (**+**) icon.
   The *Add Role Details&#x20;*&#x64;ialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Fhe_dt8IUQ2y-PgaUt1nz_addpermissionicon.png" size="80" width="730" height="668" caption="The Add Permissions icon" position="center" showCaption="true"}
3. Enter a name for the role.
4. Under *Permissions*, select the check boxes for each permission the role will receive. Based on your selection, additional permissions may be automatically added to ensure proper functionality. See [Role Permissions](docId\:uO7n5qVXgtE412BQNFzUT) for more information.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/O3YdW38kS6eJXHUqWL_uD_addroledetailsdialogbox.png" size="80" width="1171" height="772" caption="Add Role Details dialog box" position="center" showCaption="true"}
5. When done, click **Add Role Details**.
   The role is added to the *Roles&#x20;*&#x74;ab.


[title] Manage the OPC UA Server
[path] Product Features/OPC UA Server/Management/

You can manage the OPC UA Server by navigating to **OPC&#x20;**>**&#x20;Management**.&#x20;

If you are using the Docker version of Litmus Edge and having issues connecting to the OPC UA server, refer to [Issues Connecting to OPC UA Server](docId\:X_G5VuJbUpZPs26wYsuxM).&#x20;

Refer to the following OPC UA Server management options.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8CVaRkRRpP2PraZUrWB_l_image.png "OPC UA Server management options")

\[1] **Start and Stop OPC UA Server**: Before you start the OPC UA Server, make sure you do the following:

- Configure the OPC UA Server. Refer to the callout below for more information.&#x20;
- [Add a Node](docId:-_FS_awS0Vp6VRHvRmuiZ).&#x20;
- Enable at least one OPC UA policy.&#x20;
- Configure OPC UA authentication.&#x20;

After starting the OPC UA Server, you have the option of stopping it.&#x20;

\[2] **Restart OPC UA Server**: Restarting the server returns it to its original configuration.&#x20;

\[3] **Configure OPC UA Server**: To configure the OPC UA Server, enter the details for the server:

- **Host**: Enter the OPC UA host IP address.&#x20;
- **Port**: Enter the port number 4840.&#x20;
- **Allow Nodes Under Root**: If this option is selected, the OPC UA hierarchy will start under the root folder. If unselected, the OPC UA hierarchy will start under the *Objects&#x20;*&#x6E;ode.


[title] Certificates
[path] Product Features/System/

The *Certificates&#xA0;*&#x70;ane is used to store certificates locally in Litmus Edge.&#x20;

# Self-Signed Certificates

When your instance of Litmus Edge boots up for the first time, a self-signed certificate is automatically created. Because the certificate generated by Litmus Edge is self-signed, web browsers detect that the certificate is not formally approved by a certificate authority. That is why you will get browser warnings that the connection is not private/secure. See [Browser Access Restrictions](docId\:F_4FUf7kbozItSH_LMXp4) for more information.&#x20;

Despite these warnings, all communication through Litmus Edge and Litmus Edge Manager is done through **https**, which means it's encrypted end-to-end and the connection is always secure.&#x20;

Litmus Edge gives you the option to upload certificates and copy device public keys as required by your organization.&#x20;

# Device Certificates

A device certificate (or SSL certificate) is a digital certificate that provides proof of the device's identity (Litmus Edge instance). If required by your organization, you can replace the self-signed certificate generated by Litmus Edge with your own device certificate. When you upload a device certificate, the connection to the device is validated as a secure connection.&#x20;

For details on uploading a device certificate, see [Add a Device Certificate](docId\:A6g-bo9xf4CHv6GYlYHxG).&#x20;

## Device Certificate Use Cases

You are not required to upload a device certificate for your instance of Litmus Edge, but your organization may decide to upload one for the following use cases.&#x20;

- Your organization's IT policies require proper signed certificates for your Litmus Edge instance.&#x20;
- Your organization requires a domain name and any respective certificates to be attached to your Litmus Edge instance.&#x20;

## Device Certificate Requirements

The certificate you upload must be an Nginx certificate.&#x20;

When uploading a device certificate, you will need to provide the following parameters.

- **SSL certificate**: The public key certificate associated with the device certificate.&#x20;
- **CA Chain**: The certificate authority's chain of certificates that validates the device certificate's public and private keys. When validating this parameter, make sure it includes all intermediate certificate authorities.&#x20;
- **Private RSA key**: The private key certificate associated with the device certificate.&#x20;

## Reset Device Certificates

You have the option of using the **Reset to self-signed device certificate** function for device certificates. This replaces the existing certificate with the automatically generated self-signed one and creates a new expiry date for the certificate.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2QaKWwxu8vsgqdn1r1nxK_image.png" size="80" width="998" height="331" caption="Reset to self-signed device certificate icon" position="center" showCaption="true"}

Before you reset the certificate, verify that any system communicating with Litmus Edge will not be negatively affected, as this invalidates all active UI sessions and the receiving of data from external sources.

# Custom CA Certificates

A CA certificate is a digital certificate issued by a certificate authority (CA). The CA certificate allows valid and secure connections between Litmus Edge and other systems. Learn more about [certificate authorities](https://en.wikipedia.org/wiki/Certificate_authority) from Wikipedia.&#x20;

To create a valid and secure connection between Litmus Edge and Litmus Edge Manager, a custom CA certificate needs to be generated. To complete this specific task, see [Activate an Edge Device](docId\:G1kWiYDlSR5u8qEJk0djp) for details.&#x20;

To upload a custom CA certificate not related to validating communication between Litmus Edge and Litmus Edge Manager, see [Add a Custom CA Certificate](docId\:TTt4LhsdYPNd0siTfg2BY).&#x20;

:::hint{type="info"}
**Important**: When uploading a custom CA certificate, make sure the file is in CRT format and that X509 encoding is used.&#x20;
:::

## Custom CA Certificate Use Cases

You can upload custom CA certificates for the following use cases:

- Enable a valid connection between Litmus Edge and Litmus Edge Manger by providing the Litmus Edge Manager URL as the endpoint. For this specific use case, see [Activate an Edge Device](docId\:G1kWiYDlSR5u8qEJk0djp) for details.&#x20;
- Depending on the specific requirements of your organization, upload any required certificates provided by private CAs.&#x20;
- If you are using integrations to connect to cloud services, some of these services may use custom certificate authorities that are not available from the trusted CA store in the Litmus Edge instance. In this scenario, you would need to add these CA certificates to the list of trusted custom CA certificates.
- If you have a private Docker registry, the Applications Marketplace refuses to connect to the registry because it is unable to validate the certificate. You would then need to manually update the custom CA certificates.&#x20;

# Device Public Keys

The device public key is the Litmus Edge system's identity/device footprint. It is not related to certificates. If your organization requires public keys to be accepted, you can copy it from the *Identity&#x20;*&#x74;ab.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zSbaW0hCBnsSX6E3YlwAc_image.png" size="80" width="886" height="301" caption="Device Public Key copy icon" position="center" showCaption="true"}

# Identity Certificates

Identity certificates are required when a connection between a device (Litmus Edge instance) and another service needs to be authenticated. For example, when a connection is set up between Litmus Edge and Litmus Edge Manager, an identity certificate is created that can be viewed in Litmus Edge. Litmus Edge can have multiple identity certificates signed by different authorities.&#x20;

When you create a connection between Litmus Edge and Litmus Edge Manager, an identity certificate is automatically created that can't be deleted from Litmus Edge.&#x20;

## Certificate Signing Requests

A certificate signing request (CSR) is used to apply for an SSL/TLS certificate. The CSR contains information that the certificate authority will use to create the certificate, such as common name, organization, and country. It also contains the public key that will be included in your certificate and is signed with the corresponding private key.&#x20;

You can copy/download the certificate signing request in Litmus Edge and send it to a certificate authority for authorization. The certificate authority can then send back a signed identity certificate. You can then install this identity certificate in Litmus Edge. See [Install an Identity Certificate](docId:9QIznzx_IjfpeSf31bHsi) and [Manage Certificate Signing Requests](docId\:IK4-nJHtCh0KkMAqhhlYm) for more details.&#x20;

# Access System Certificates UI

**To access the System Certificates pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **System&#x20;**>**&#x20;Certificates**.
   The *Certificates&#x20;*&#x70;ane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dTRXLWSb_xJ7JZROWBbqa_image.png" size="80" width="848" height="603" caption="The Certificates pane" position="center" showCaption="true"}

# Next Steps

- [Add a Device Certificate](docId\:A6g-bo9xf4CHv6GYlYHxG)&#x20;
- [Add a Custom CA Certificate](docId\:TTt4LhsdYPNd0siTfg2BY)&#x20;
- [Manage Custom CA Certificates](docId\:tB3z8MRnOBBHyb69b93hT)&#x20;
- [Install an Identity Certificate](docId:9QIznzx_IjfpeSf31bHsi)&#x20;
- [Manage Certificate Signing Requests](docId\:IK4-nJHtCh0KkMAqhhlYm)&#x20;


[title] Set up a CIFS Mount Point on Windows 10
[path] Product Features/System/External Storage/Network Storage/

To set up a CIFS Mount Point on Windows 10, you will need to do the following:

1. [Create a Shared Folder in Windows 10](docId:_ANcVQH9-4RvQCigOJu7u)&#x20;
2. [Configure a Shared Folder Network Path in Windows 10](docId\:HVKms9GKgJf-arfe76PzH)&#x20;


[title] Untitled
[path] Product Features/Integration/Integration Connectors/


[title] Manage Static Routes
[path] Product Features/System/Network/

:::hint{type="info"}
**Note**: This feature is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

You can manage static routes by navigating to **System&#x20;**> **Network&#x20;**&#x61;nd clicking the **Routes&#x20;**&#x74;ab.&#x20;

This feature allows you to control the routing of messages in a complex network with multiple interfaces and gateways.

The **Routes&#x20;**&#x70;ane allows you to do the following:

- Review the list of current static routes.&#x20;
- Add new static routes.&#x20;
- Edit  and remove static routes.&#x20;

You can review any static route changes in **System&#x20;**> **Events**.&#x20;

You can also configure static routes in the Terminal User Interface (TUI) or through REST API. See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) to learn more.&#x20;

# Important

- After adding a static route, the change takes place immediately without the need to reboot Litmus Edge.&#x20;
- Only IPv4 and IPv6 routes are supported.&#x20;
- Only Admin users are able to add static routes. See [Users](docId\:Tls9-yYfMMtuyr9lRmpPD) to learn more.&#x20;

# Add Static Route

:::hint{type="warning"}
**Warning**: Incorrect static routes can disconnect your network access to this device. Please add or modify routes with caution. See the *Troubleshooting&#x20;*&#x73;ection below.&#x20;
:::

**To add a static route:&#x20;**

1. Navigate to **System&#x20;**> **Network** and click the **Routes&#x20;**&#x74;ab.&#x20;
2. Click **Add**.&#x20;
   The *Add Static Route&#x20;*&#x64;ialog box displays.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JJSCYqokOZTUrgU8j4U_C_add-static-route.png" size="100" width="1356" height="507" position="center" caption="Add static route button" darkWidth="1356" darkHeight="507" showCaption="true" indent="2"}

3. Configure the parameters for the static route.&#x20;
   - **Destination Address / Subnet**: Enter the destination address/subnet using CIDR notation for the IPv4 address and subnet mask. Use the following format: 0.0.0.0/0
   - **Gateway**: Enter the next hop for the route as an IPv4 address in the following format: 0.0.0.0&#x20;
   - **Metric**: Enter a number (unsigned 32-bit integer) between 1 and 4294967295. This value is the cost metric of this static route. When a destination address has multiple routes, the route with the lower metric will be prioritized.
   - **LAN Interface**: Select the appropriate network interface for routing the message.&#x20;
4. Click **Add**.&#x20;

# Manage Static Routes

To manage port rules, click the **Action menu&#x20;**&#x66;or a static route.&#x20;

- **Edit**: Update the route.&#x20;
- **Delete**: Remove the route. &#x20;

# Troubleshooting

If you configure an incorrect static route and lose network access to the Litmus Edge Web UI, you will need to access the Litmus Edge Terminal User Interface (TUI) locally to re-configure the static routes correctly. See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) to learn more.&#x20;

[title] Configure Network Interfaces
[path] Product Features/System/Network/

You can configure the network interfaces by navigating to **System&#x20;**>**&#x20;Network** and clicking the **Interfaces&#x20;**&#x74;ab.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ovDGzpMd64jA7kFKnL7vI_image.png "The Interfaces tab")

:::hint{type="warning"}
**Caution**: Changing the network address may cause the application to stop working properly.
:::

# Important

The Litmus Edge software package installation includes a default configuration for the selected device's interface. You must configure the default entries with your own network information.

For IPv4 address assignment type, you can choose from a few different options.

- **None**: Disables IPv4 addresses on the network interface.
- **DHCP**: Auto-assigns an IPv4 address to the network interface.
- **Static**: Manually enter Gateway information for your network interface. Valid Gateways depend on your router configuration.
- **CIDR**: CIDR notation determines which IP addresses are allowed on the network. Entering your Gateway address and **/24** usually suffices because it allows close to 256 different IPv4 addresses, starting from your Gateway address. For example, if 192.168.7.17 is your Gateway, 192.168.7.17/24 denotes a good CIDR because it allows 238 (256 - 18) different IP addresses. For full details about CIDR, see the [CIDR Conversion Table](docId\:htC9CKkPNWg6s3Mgl6rNQ).

For IPv6 address assignment type, you should use **Auto&#xA0;**&#x69;nstead of **DHCP&#xA0;**&#x74;o automatically assign an IPv6 address.

# Before You Begin

Make sure your configuration is using the same network on which your device is located.

# Update Network Interfaces

**To update the network interfaces:**

1. Navigate to **System&#x20;**> **Network**.&#x20;
2. Click the **Interfaces&#x20;**&#x74;ab.&#x20;
3. Review the list of interfaces. Please note the following:
   - Devices are automatically detected by the system and should be listed under Interfaces. The *eth0&#xA0;*&#x63;onfiguration contains the default settings for the WAN (outgoing traffic). Do not change the settings for the WAN.
   - A USB to an Ethernet dongle is not recognized as a device due to security measures.
4. Click **Update&#x20;**&#x66;or an interface.&#x20;
5. Update the details for the interface.&#x20;
   - **WAN**: If the selected interface is *eth0*, select the **WAN&#x20;**&#x63;heck box. Optionally, select the check box if the selected interface is *eth1*.&#x20;
   - **IPv4 Type**: Use the drop-down list to select *None*, *DHCP*, or *Static*.&#x20;
   - **IPv4 Gateway** (Optional): If you select *Static*, enter an IP address range.&#x20;
   - **IPv6 Type**: Use the drop-down list to select *None*, *Auto*, *DHCP*, or *Static*. It is recommended that you use *Auto&#xA0;*&#x69;nstead of *DHCP&#xA0;*&#x74;o automatically assign an IPv6 address.
   - **IPv6 Gateway** (Optional): If you select *Static*, enter an IP address range.&#x20;
6. Click **Update**.&#x20;
7. Reboot your device to apply any changes to network configuration.


[title] Manage Certificate Signing Requests
[path] Product Features/System/Certificates/

A certificate signing request (CSR) is a public certificate that contains specific information and is used to apply for an SSL/TLS certificate. You can copy/download the certificate signing request in Litmus Edge and submit it to a certificate authority for authorization. The certificate authority can then send back a signed identity certificate. You can then install this identity certificate in Litmus Edge. See [Install an Identity Certificate](docId:9QIznzx_IjfpeSf31bHsi) for details.&#x20;

You can manage certificate signing requests by navigating to **System&#x20;**>**&#x20;Certificates** and clicking the **Identity&#x20;**&#x74;ab.&#x20;

Click the **Create Request** icon to open the *Certificate Signing Request*.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yRiKyKJI8cL9x-_rBvmpr_image.png "Create Request icon")

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/O1eG-QzEh_QTkdx4WpYCf_image.png" size="80" width="970" height="435" caption="Certificate Signing Request dialog box" position="center" showCaption="true"}

- **Copy**
- **Download**

You can copy or download the certificate signing request and give it to a Certificate Authority when applying for an SSL Certificate. A private key is usually created at the same time that you create the Certificate Signing Request, making a key pair.


[title] NATS
[path] Product Features/Integration/Integration Connectors/Other Providers/

Review the following guide: [Set Up Edge Cascading with the NATS Connector](docId\:p9zqIlAmmJcfPzzj5kJLO).&#x20;

## Overview

NATS integration enables an Edge System to connect to a NATS server.

## Supported Communication

- Outbound (Publish data from Edge to NATS server) - Yes
- Inbound (Subscribe data from NATS Server to Edge) - Yes

## Configurations

| **Variable**                 | **Detail**                                                                                                                                                                                                       | **Required** |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                         | Enter a name for the connector                                                                                                                                                                                   | Yes          |
| Hostname                     | NATS server host name                                                                                                                                                                                            | Yes          |
| Port                         | NATS server port                                                                                                                                                                                                 | Yes          |
| NATS username                | NATS username, which is part of the client's authentication credentials.                                                                                                                                         | No           |
| NATS password                | NATS password, which is part of the client's authentication credentials.                                                                                                                                         | No           |
| Default topic name           | Default topic for publishing                                                                                                                                                                                     | Yes          |
| Enable TLS secure connection | If enabled, message are transmitted securely. This certificate ensures that data transmitted between the server and clients is encrypted and secure, safeguarding it from unauthorized access and eavesdropping. | No           |
| Insecure skip verify         | If enabled, the verification of the server's certificate and hostname is skipped.                                                                                                                                | No           |
| Throttling limit             | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                           | No           |
| Persistent storage           | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.            | No           |
| Queue mode                   | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.             | No           |


[title] Cloud Storage Sync
[path] Product Features/System/External Storage/

:::hint{type="info"}
**Note**: Cloud Storage Sync is available for Litmus Edge version 3.11.0 and later. Enable the feature from **System&#x20;**> **Support&#x20;**> **Features**.&#x20;
:::

You can transfer files from Litmus Edge to a cloud storage service. Currently, you can set up cloud storage with AWS S3 and Azure Blob Storage.&#x20;

# Set Up Cloud Storage Sync

Before you can start leveraging Cloud Storage Sync, you need to enable the feature in Litmus Edge and then set up the source directory.&#x20;

## Enable Cloud Storage Sync

To enable this feature, navigate to **System&#x20;**> **Support&#x20;**> **Features&#x20;**&#x61;nd click the toggle for Cloud Storage Sync.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2dvfHpY05E0gP8dK-c15Y_image.png "Cloud Storage Sync toggle")

After the feature is enabled, navigate to **System&#x20;**> **External Storage** and click the **Cloud Sync** tab.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/s3GERL3mAvkSGo_5lJGYc_image.png "Cloud Storage section")

## Set Up Source Directory

You will need to set up the source directory that will be used for configuring sync jobs.&#x20;

One option is to start the Litmus Edge FTP Server. See [Services](docId:9M4t8CndWiMtGdgSlpRUa) to learn more.&#x20;

If you start the Litmus Edge FTP Server, you can use an FTP tool such as [Filezilla](https://filezilla-project.org/) to connect to the server and create a dedicated folder that will be used to copy or move files. For example, you can create the following file path to configure a sync job with AWS S3: `/var/lib/customer/ftp-data/s3-sync`. This file path will be used for the *Source&#x20;*&#x70;arameter in the sync job configuration.&#x20;

# Next Steps

- [Create a Cloud Storage Sync Job](docId\:vVAOtNE7eqcykMBt1xten)
- [Manage Cloud Storage Sync Jobs](docId\:nyF4dtGIqWwQxlog_x81a)


[title] Set up a CIFS Mount Point on Linux
[path] Product Features/System/External Storage/Network Storage/

To expand the storage pool for your enterprise, you must make a shared folder.

# Before You Begin

Before you complete the following steps, you must do the following:

- Set up a remote storage location.
- Ensure you have admin/root permissions to create shared folders.

# Step 1: Install Samba

You will first need to install Samba.&#x20;

**To install Samba:**

1. Open Terminal and enter the following commands to install Samba:
   `sudo apt-get update`
   `sudo apt-get install samba`
2. Enter the following command to create a password for your Samba user:
   `sudo smbpasswd -a <user_name>`

# Step 2: Make Shared Folder on Linux

**To make a shared folder on Linux:**

1. From the Terminal, enter the following command to make the shared folder:
   `mkdir /home/<user_name>/<shared_folder_name>`
2. Enter the following commands to make a backup copy of the `smb.conf` file before editing it.
   `sudo cp /etc/samba/smb.conf ~`
   `sudo nano /etc/samba/smb.conf`
3. Add following lines to the end of `smb.conf` to allow reading and writing to the shared folder:
   `[<folder_name>]`
   `path = /home/<user_name>/<shared_folder_name>`
   `valid users = <user_name>`
   `read only = no`
4. Enter the following commands to apply the changes to `smb.conf` by restarting Samba and checking the file for syntax errors:
   `sudo service smbd restart`
   `testparm`

After you successfully set up a shared folder, you can [Mount External Storage](docId:0EHe48bvf0CeWNmDGVD_T) in Litmus Edge.&#x20;


[title] Info
[path] Product Features/System/

The **System&#x20;**>**&#x20;Info&#x20;**&#x70;ane allows you to view information about your system.&#x20;

# Access System Info UI

**To access the System Info pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **System**.
   The *Info&#x20;*&#x70;ane appears.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MplU8xfNSmVN0gYNp2qmC_image.png "System Info UI")

# Info Pane Sections

Refer to the following sections on the *Info&#x20;*&#x70;ane and the information they display.&#x20;

## Device Time and Up Time

*Device Time* displays the time zone configured for the Litmus Edge instance. See [Set Timezone](docId\:R1Lz44wFFv3H9Jg33NWlP). *Up Time* displays how long the instance has been running without a disconnection.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2SG14nypR5ECLl3Fcr0tr_image.png" size="80" width="1723" height="444" caption="Device Time and Up Time" position="center" showCaption="true"}

## General

- **Model Number**: The model number of the host system
- **Manufacturer**: The manufacturer of the host system&#x20;
- **Software Version**: The current Litmus Edge version
- **Hardware Version**: The hardware version of the host
- **Serial #**: The serial number of the host system

## CPU

- **Name**: CPU details
- **Cores**: The number of cores for the installed CPU
- **Logical Processors**: The number of logical processors for the installed CPU
- **Clock Speed**: The maximum clock speed for the installed CPU
- **Vendor  ID**: The manufacturer for the installed CPU

This section also shows details of all CPUs present in the system.


::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BVj7F8Nh8CM9qgJN9A88q_image.png" size="80" width="828" height="409" caption="CPU Section" position="center" showCaption="true"}

## Data Partition Usage &#x20;

- **Used**: The amount of space used on the hard drive partition in GB
- **Available**: The amount of space available to use on the hard drive partition in GB&#x20;
- **Total**:  The total amount of space on the hard drive partition in GB

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/b1_Gx7UpxVlb_G5IRB198_image.png" size="80" width="837" height="153" caption="Data Partition Usage Section" position="center" showCaption="true"}

## Memory&#x20;

- **Used**: The amount of memory used in MB
- **Available**: The amount of memory available to use in MB
- **Total**: The total amount of memory in MB

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xr1zVO_2UIc_1OaHwDwc1_image.png" size="80" width="831" height="153" caption="Memory Section" position="center" showCaption="true"}

## Network Interfaces

- **Interface**: Type of network interface: Ethernet (eth0 or eth1), a Wi-Fi (wlan0), or an LTE (wwan0) network interface.
- **MAC Address**: Physical address of the network interface.
- **IP Address**: Logical address assigned by software to the network interface.
- **Address Family**: inet means that IPv4 traffic is run through the interface, while inet6 means that IPv6 is run through it.
- **Type**: Type of the network's address space.
  - **Private**: The network interface can interact with any other network because the IP address has global scope.
  - **Link-local**: The IP address is only valid on local network segments. IPv6 requires a link-local address on every network interface.


::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kuZ79gE7wGZpTAysMZpDo_image.png" size="80" width="1670" height="258" caption="Network Interface Section" position="center" showCaption="true"}

## Serial Interfaces&#x20;

- **Name**: The name of the device
- **Alias**: The name you designate as an alias for the device
- **Model**: The model of the device
- **Path**: The path used to connect to the device


::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/y8sNyCan_hmKN_N8Bqe49_image.png" size="80" width="1681" height="208" caption="Serial Interface Section" position="center" showCaption="true"}

## CAN Interface

The CAN Interface settings appear in the *Info&#x20;*&#x70;ane of the *System&#x20;*&#x6D;odule if the CAN Bus module is present for the HPE EL300 device.&#x20;

# Next Steps

- [Add an Interface Alias](docId\:G1llT4m44RIBTn0IuK_Mx)&#x20;
- [Manage Interface Aliases](docId\:QZ-HiF0cY8uEsRk-OZek8)&#x20;
- [Configure the CAN Interface](docId:-wNmjbFK2_NL00Uc_62CY)&#x20;


[title] MQTT - System Protobuf SSL
[path] Product Features/Integration/Integration Connectors/Message Brokers/

## Overview

MQTT - System Protobuf SSL integration enables an Edge System to connect with a System Protobuf broker using SSL authentication.

## Supported Versions

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

## Supported Communication

- Outbound (Publish data from Edge to MQTT Broker) - Yes
- Inbound (Subscribe data from MQTT Broker to Edge) - Yes

## Configurations

| **Variable**           | **Detail**                                                                                                                                                                                                                                                                                                                                                                                                                           | **Required** |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------ |
| Name                   | Enter a name for the connector                                                                                                                                                                                                                                                                                                                                                                                                       | Yes          |
| Hostname               | IP Address or Server FQDN of MQTT broker (Must be reachable from the Edge system)                                                                                                                                                                                                                                                                                                                                                    | Yes          |
| Port                   | MQTT broker port                                                                                                                                                                                                                                                                                                                                                                                                                     | No           |
| CA certificate         | CA Certificate for SSL connection                                                                                                                                                                                                                                                                                                                                                                                                    | No           |
| Client id              | Unique client identity                                                                                                                                                                                                                                                                                                                                                                                                               | Yes          |
| Username               | User name                                                                                                                                                                                                                                                                                                                                                                                                                            | Yes          |
| Password               | User password                                                                                                                                                                                                                                                                                                                                                                                                                        | Yes          |
| QoS                    | The Quality of Service (QoS) level is an agreement between the sender of a message and the receiver of a message that defines the guarantee of delivery for a specific message.<br />You can publish several messages simultaneously. When you publish, a larger value allows more throughput but may lead to packages losing messages despite assigning QoS=1.<br />**Note**: the QoS option depends upon the server configuration. | No           |
| Parallel publish count | For example, Mosquitto has the following options:<br />* max\_queued\_messages (100 by default)
* max\_queued\_bytes (0 by default)<br />According to the Mosquitto documentation, once this limit has been reached, subsequent messages are silently dropped.&#xA;You can modify the server configuration or set this value in accordance with the server option.                                                                   | Yes          |
| Integration topic      | Default topic for publishing or subscribing                                                                                                                                                                                                                                                                                                                                                                                          | Yes          |
| Throttling limit       | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                                                                                                                                               | No           |
| Persistent storage     | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                                                                                                                                                | No           |
| Queue mode             | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                                                                                                                                                 | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product**              | **Version** | **Date**     |
| ------------------------ | ----------- | ------------ |
| Mosquitto Message Broker | 1.x         | Nov 14, 2019 |
| HiveMQ                   | 2.x         | Nov 14, 2019 |


[title] Log in with Authentication
[path] Product Features/System/LDAP/AD Auth/

After configuring LDAP, you must select a Provider ID when logging in to Litmus Edge.

The username is from the LDAP server. The password must match the Bind DN Password from the configuration. See [Add an LDAP/AD Provider](docId\:BbwHKkp2B4zILtGKg2hx-) for more information.

The Internal authentication Provider appears in the ID selection list. If you do not select another ID, Litmus Edge uses the non-configurable default provider ID.

Litmus Edge uses a self-signed Certificate. Follow the browser guidelines for how to bypass a self-signed security error message. See [Browser Issues](docId\:F_4FUf7kbozItSH_LMXp4) for more information.

**To log in with authentication:**

1. Enter the Litmus Edge IP address into a browser add/URL bar. For example: `https://172.20.20.109`.
2. From the log in window, enter the authentication details:
   - **Username**: Enter the LDAP Server user name.&#x20;
   - **Enter Password**: Enter the password from the Bind DN configuration.&#x20;
   - **Provider ID**: Select **openldap**.
3. Click **Log In**.


[title] Hierarchy
[path] Product Features/OPC UA Server/

OPC UA server hierarchies involve different types of nodes that map to OPC UA clients:

- **Folder** to represent an edge device, which might be responsible for an industrial plant
- **Device** to represent devices on the industrial plant floor (such as a boiler or lathe PLC)
- **Tag** to represent specific device registers (such as temperature or pressure sensors)

From the Hierarchy pane, you can add, import, modify and delete nodes. You can also reset, export a JSON, and import a JSON for the hierarchy.

# Access OPC UA Hierarchy UI

**To access the OPC UA Hierarchy pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **OPC**.
   The *Hierarchy&#x20;*&#x70;ane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x8QEH6LYrjdbTBlwlICwk_image.png" size="80" width="1163" height="439" caption="The Hierarchy pane" position="center" showCaption="true"}

# Next Steps

- [Add a Node](docId:-_FS_awS0Vp6VRHvRmuiZ)&#x20;
- [Import Nodes](docId:_a9eDbY61Uw7-e1UMp2fR)&#x20;
- [Manage Nodes](docId\:e7jjD9hUJ7EO2WjBNhwiu)&#x20;
- [Data Type Mapping](docId\:F-u01pBVBJTPggjBwbZn4)&#x20;


[title] Manage Firewall Rules
[path] Product Features/System/Network/

:::hint{type="info"}
**Note**: This feature is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

You can manage firewall rules to open specific ports or port ranges for inbound communication by navigating to **System&#x20;**> **Network&#x20;**&#x61;nd clicking the **Firewall&#x20;**&#x74;ab.&#x20;

:::hint{type="info"}
**Notes**:&#x20;

- These firewall rules apply only to IPv4 traffic.&#x20;
- Only Admin users are able to add and edit firewall rules. See [Users](docId\:Tls9-yYfMMtuyr9lRmpPD) to learn more.&#x20;
:::

The **Firewall&#x20;**&#x70;ane allows you to do the following:

- Review what ports are being used by Litmus Edge system components, applications, and containers.&#x20;
- Ensure that any DeviceHub drivers and Docker container applications are not running on conflicting ports.&#x20;
- Open ports and port ranges with appropriate protocol (TCP/UDP) for Docker applications, containers, and DeviceHub drivers.
- Manage and close ports as needed.&#x20;

You can review any firewall changes in **System&#x20;**> **Events**.&#x20;

The pane shows a summary of what ports are currently open.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iNbLBGbFDdoudcacdIjsl_image.png "The Firewall pane")

# List of Reserved Ports

There are some ports that cannot be used for firewall rules because they are reserved for system services.&#x20;

Review the list of reserved ports.&#x20;

| **Reserved Port or Port Range** | **System Service that Uses Port(s)** |
| ------------------------------- | ------------------------------------ |
| 21                              | FTP                                  |
| 22                              | SSH                                  |
| 80                              | HTTP                                 |
| 123                             | NTP                                  |
| 389                             | LDAP                                 |
| 443                             | Litmus Edge Manager API              |
| 636                             | LDAP with SSL                        |
| 1880                            | Litmus Edge UI REST endpoint         |
| 2121                            | FTP                                  |
| 4840                            | OPC UA                               |
| 5353                            | mDNS                                 |
| 5355                            | LLMNR                                |
| 8081-8199                       | REST API endpoints                   |
| 9081-9199                       | gRPC API endpoints                   |
| 8883                            | MQTT to Litmus Edge Manager          |
| 51280                           | Litmus Edge Manager Remote Access    |

# Add Port Rule

1. Navigate to **System&#x20;**> **Network&#x20;**&#x61;nd click the **Firewall&#x20;**&#x74;ab.&#x20;
2. Click **Add Rule**.&#x20;
   The *Add Inbound Rule* dialog displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Rviq-YB7qxmjkIwJwXZi-_add-rule-button.png" size="80" width="1213" height="355" position="center" caption="Add Rule button" showCaption="true"}
3. Configure the parameters for the firewall rule.
   - **Port or Port Range**: Enter a single port number or a range of port numbers separated by a hyphen (-).&#x20;
   - **Protocol**: Select **TCP&#x20;**(transmission control protocol) or **UDP&#x20;**(user datagram protocol).&#x20;
   - **Interface**: Select **eth0&#x20;**&#x6F;r **eth1**.&#x20;
   - (**Optional) Service Name or Description**: Enter a name for the rule.&#x20;
4. Click **Add**.&#x20;
   The new rule displays on the pane.&#x20;

# Manage Port Rules

To manage port rules, click the **Action menu&#x20;**&#x66;or a rule.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/z1AtmW3ZhV4HQ42nCpu21_image.png" size="80" width="1436" height="591" position="center" caption="Firewall rule action menu" showCaption="true"}

- **Edit**: Update the rule.&#x20;
- **Delete**: Remove the rule and close the port or port range.&#x20;


[title] AMQP TCP
[path] Product Features/Integration/Integration Connectors/Message Brokers/

Review the [AMQP TCP Integration Guide](docId\:b023sSmsxxZWVrCNMQD6W).&#x20;

## Overview

AMQP TCP integration enables an Edge System to connect with an AMQP broker.

## Supported Versions

Supports RabbitMQ versions starting with 2.0 but primarily tested against recent 3. x releases. Some features and behaviors may be server-version specific.

## Supported Communication

- Outbound (Publish data from Edge to AMQP broker) - Yes
- Inbound (Subscribe data from AMQP broker to Edge) - No

## Configurations

| **Variable**         | **Detail**                                                                                                                                                                                            | **Required** |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                 | Enter a name for the connector                                                                                                                                                                        | Yes          |
| Hostname             | IP Address or hostname of AMQP broker (Must be reachable from the Edge system)                                                                                                                        | Yes          |
| Port                 | Enter the AMQP broker port                                                                                                                                                                            | Yes          |
| Virtual host         | Specifies the namespace of permissions, exchanges, queues and bindings on the server                                                                                                                  | No           |
| Username             | Enter the username                                                                                                                                                                                    | No           |
| Password             | Enter the password                                                                                                                                                                                    | No           |
| Exchange             | Enter the AMQP exchange                                                                                                                                                                               | No           |
| Exchange type        | Select one of the following: direct, fanout, topic, x-custom                                                                                                                                          | No           |
| Exchange durable     | See the *Exchange Options* section below                                                                                                                                                              | No           |
| Exchange auto delete | See the *Exchange Options* section below                                                                                                                                                              | No           |
| Exchange internal    | See the *Exchange Options* section below                                                                                                                                                              | No           |
| Exchange no wait     | See the *Exchange Options* section below                                                                                                                                                              | No           |
| Routing key          | Enter the AMQP routing key                                                                                                                                                                            | Yes          |
| ISO8601 timestamp    | Convert a message timestamp into ISO8601 format before sending                                                                                                                                        | No           |
| Throttling limit     | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                | No           |
| Persistent storage   | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |
| Queue mode           | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  | No           |

## Exchange Options

Exchange names starting with "amq." are reserved for pre-declared and standardized exchanges. The client MAY declare an exchange starting with "amq." if the passive option is set, or the exchange already exists. Names can consist of a non-empty sequence of letters, digits, hyphen, underscore, period, or colon.

Each exchange belongs to one of a set of exchange kinds/types implemented by the server. The exchange types define the functionality of the exchange - i.e. how messages are routed through it. Once an exchange is declared, its type cannot be changed. The common types are "direct", "fanout", "topic" and "headers".

Durable and Non-Auto-Deleted exchanges survive server restarts and remain declared when there are no remaining bindings. These selections are best for long-lived exchange configurations like stable routes and default exchanges.

Non-Durable and Auto-Deleted exchanges are deleted when there are no remaining bindings and not restored on server restart. These selections are useful for temporary topologies that should not pollute the virtual host on failure or after the consumers have completed.

Non-Durable and Non-Auto-deleted exchanges remain while the server is running, including when there are no remaining bindings. These selections are useful for temporary topologies that may have long delays between bindings.

Durable and Auto-Deleted exchanges survive server restarts and are removed before and after server restarts when there are no remaining bindings. These selections are useful for robust temporary topologies or when you require binding durable queues to auto-deleted exchanges.

:::hint{type="info"}
**Note**: RabbitMQ declares the default exchange types like 'amq.fanout' as durable, so queues that bind to these pre-declared exchanges must also be durable.
:::

Exchanges declared as internal do not accept publishing. Internal exchanges are useful when you wish to implement inter-exchange topologies that should not be exposed to users of the broker.

When No Wait is selected, you can continue without waiting for a confirmation from the server. The channel may be closed because of an error. Add a NotifyClose listener to respond to any exceptions.

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product** | **Version** | **Date**     |
| ----------- | ----------- | ------------ |
| RabbitMQ    | 3.6.6       | Nov 21, 2016 |


[title] OPC UA Server
[path] Product Features/

The OPC UA (Open Platform Communications Unified Architecture) protocol provides a publish-subscribe client-server technology for reliable data transmission. Its architecture ensures more secure communication than its OPC predecessor, OPC DA. The OPC UA protocol offers a solution for industrial IoT because it interacts with dedicated controllers and sensors, as well as with large enterprise databases and data analysis systems.

When handling devices that implement OPC UA, Litmus Edge is deployed either as an OPC UA server or an OPC UA client.

The following diagram shows how OPC works with Litmus Edge.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pLrkKf8ibrXI57jF1GsWC_opc-ua-server.png "OPC UA Server-Client Model in Litmus Edge")

The OPC UA servers support a flexible [Hierarchy](docId:8CaGuxngSRjrTulKSR5O_) for mapping to the OPC UA clients.

# OPC UA Challenges

The OPC UA protocol works with a wide variety of security models and transport layers. IoT applications face the following challenges.

## OPC UA Server Configurations Vary

OPC UA servers can have hundreds of different configurations:

- Server configurations are specific to an enterprise. Litmus Edge cannot determine these enterprise-specific bindings.
- Each OPC UA server name includes details, using this URL format: `opc.tcp://ipaddress:port/{servername}`.
  Based on this name format, Litmus Edge can discover an OPC UA server. However, Litmus Edge cannot account for how a customer configured an OPC UA server.

## OPC UA Includes Windows-Specific Features&#x20;

OPC UA evolved from the OPC DA (Data Access) protocol, where the clients and servers worked only in Windows. Therefore, many of the OPC UA native features, such as Discovery, work well only in Windows.

For example, when the TCP connection is on a Windows server, Litmus Edge cannot connect to it, even if other Windows-based agents can connect. Windows imposes this restriction.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LJQcyF9po0VEZG76K-W13_opcuadesktopconnection850x645.png" size="80" width="850" height="645" position="center" caption="Setting Network Adapter for OPC UA Configuration Manager" showCaption="true"}

## OPC UA Security Policies are Unique

As an additional challenge, not all OPC UA security policies match standard software security policy practices.

**For example:**

*Sign vs Sign & Encrypt* represents complex technology and it requires some effort to generate these certificates.

Litmus Edge does not support *custom SSL certificates*, but it has its own certificate manager, which supports different encryption levels.


[title] Policy Management
[path] Product Features/System/

The *Policy Management* pane allows you to modify current policies. Default policies are part of the System module, and are added during installation or upgrade. You must be an administrator to view the Policy Management pane. The following policies can be managed from this section:

- Password Policy&#x20;
- Disk Space Policy

# Password Policy&#x20;

You can modify a password policy from the *Password Policy* section. Password requirements are applied when you reset your password or create user accounts in Litmus Edge. When creating a password, the password must meet the Password Policy Management requirements which are configured in the system.

By default, the minimum password requirements are:

-  Contains at least 1 upper-case letter.
- Contains at least 1 lower-case letter.
- Contains at least 1 numeric character.
- Contains at least 1 special character.
- Is at least 8 characters long.
- Cannot be longer than 256 characters long.
- Auto-generated password length is 12 characters long
- Special characters allowed:
  ``!"#$%&()*+,-/;<=>?@[]^_`{|}~``

The default password requirements can be changed through the Policy Management screen in the system.

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

- Some passwords are generated automatically, such as FTP and OPC UA. Automatically generated passwords are part of the Password Policy.
- Saving or resetting a password policy saves it to the system configuration file.
:::

# Disk Space Policy&#x20;

You can add or modify a disk space policy from the User Limit panel in the *Disk Space Policy* section. An action of *Warning&#xA0;*&#x6F;r *Stop data collection* must be selected before you can save the policy. This means that if you have added a policy for additional disk space, the system will warn you about the disk space limit or stop the data collection, depending on your settings, when the disk space you have designated has been reached. You can view any warnings fro&#x6D;**&#xA0;System&#x20;**>**&#x20;Events.**

Th&#x65;*&#xA0;System Limit* cannot be modified. This is the amount of disk space reserved for the system. You can add a policy for additional disk space for user data from the User Limit. You cannot assign less disk space than what is reserved for the System Limit.&#x20;

If the System Limit is exceeded, an immediate stop data collection action occurs. If the User Limit is low, a ten minute delay occurs before a warning or stop data collection action occurs. Service is restored once disk space becomes available.

When you view the Data Partition Usage section in **System** >**&#x20;Info**, you can view the used, available, and total disk space. This helps you determine how much disk space you should add to the User Limit policy.

:::hint{type="info"}
**Note:&#x20;**&#x46;rom the *Data Partition Usage* section, the *Total&#x20;*&#x64;isk space amount shown is the total disk space physically available, some of which is reserved for updating the system. The *Used&#x20;*&#x64;isk space amount shown is the amount of disk space used for both the user and the system at the current time. The *Available&#x20;*&#x64;isk space shown is the amount of disk space available for use at the current time.
:::

# Access Policy Management UI

**To access the Policy Management pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **System&#x20;**>**&#x20;Policy Management**.
   The *Policy Management&#x20;*&#x70;ane appears.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/P1M96-5Sz4jV08oD_BnLD_image.png "The Policy Management pane")

# Next Steps

- [Manage the Password Policy](docId\:MOMGZrnrwxlLBSgoDW9mX)&#x20;
- [Manage the Disk Space Policy](docId\:LTuSOt-4U05r4j68Jirf6)&#x20;


[title] Manage OPC UA Policies
[path] Product Features/OPC UA Server/Management/

You can enable and disable policies by navigating t&#x6F;**&#x20;OPC&#x20;**>**&#x20;Management&#x20;**&#x61;nd referring to the *Policies* section. &#x20;

:::hint{type="warning"}
**Important**: Selections in the *Authentication Management* section must match the selections in the *Policies&#x20;*&#x73;ection or the server will not start.
:::

# Security Policy Encryption Types

- **None**: No encryption type
- **Basic256Sha256**: 256-Bit encryption. It supports Sha256 or stronger hash algorithms for certificates.
- **Basic256**: 256-Bit encryption. It supports the Sha1 and Sha256 hash algorithms for certificates.
- **Basic128Rsa15**: 128-Bit encryption that uses RSA15 as a Key-Wrap. It supports Sha1 or stronger hash algorithms for certificates.
- **Aes256\_Sha256\_RsaPss&#x20;**(available for Litmus Edge version 3.11.0 and later)
- **Aes128\_Sha256\_RsaOaep&#x20;**(available for Litmus Edge version 3.11.0 and later)

Each security policy has two different types of *message security modes*:

- **Sign**: Litmus Edge signs messages from the server to assure recipients that the sender is authentic and not an imposter.
- **SignAndEncrypt**: Litmus Edge both signs and encrypts messages from the server to prevent any attackers from reading plain text messages from the server.

More information:

- **Encryption**: Makes messages impossible to read except by authorized users.
- **256 / 128 Bit**: 128-bit is bank-grade encryption. 256-bit encryption is even stronger and is 1038 times harder to crack. The drawback to 256-bit is that it takes servers about 40% longer to encrypt.
- **Hash algorithms**: These are for generating signatures. They assure message recipients that the sender is authentic.
- **Key-Wrap**: An extra layer of encryption for sending messages on insecure networks or for storing messages for extended periods.

# Enable and Disable Policies

To enable or disable policies, click the toggle next to the policy.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gIdUWcrjx4a4GKDhDienF_image.png "Toggle for OPC UA policies ")

# Restart OPC UA Server

After enabling or disabling a policy, you must restart the OPC UA Server. See [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe) to learn more.&#x20;


[title] Kafka TCP
[path] Product Features/Integration/Integration Connectors/Message Brokers/

Review the [Kafka TCP Integration Guide](docId\:ugayQPvt6AHq_E6Ms8mSP).

## Overview

Kafka TCP integration enables an Edge System to connect with a Kafka broker.

## Supported Versions

Compatible with Kafka versions from 0.10.1.0 to 2.1.0.

## Supported Communication

- Outbound (Publish data from Edge to Kafka broker) - Yes
- Inbound (Subscribe data from Kafka broker to Edge) - Yes

## Configurations

| **Variable**       | **Detail**                                                                                                                                                                                            | **Required** |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name               | Enter a name for the connector                                                                                                                                                                        | Yes          |
| Brokers            | List of Kafka brokers separated by comma (Must be reachable from the Edge system)                                                                                                                     | Yes          |
| SASL mechanism     | SASL mechanism values include: NONE, SASL\_PLAINTEXT. SCRAM-SHA-256, and SCRAM-SHA-512. This field can only be used if username is not empty.                                                         | Yes          |
| Username           | Enter the username                                                                                                                                                                                    | No           |
| Password           | Enter the user password                                                                                                                                                                               | No           |
| Topic              | Default topic for publishing                                                                                                                                                                          | Yes          |
| Throttling limit   | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                | No           |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |
| Queue mode         | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product      | Version  |
| ------------ | -------- |
| CloudKarafka | 0.11.0.0 |


[title] Tokens
[path] Product Features/System/

On the *Tokens&#xA0;*&#x70;ane you can create and manage NATS Proxy, REST API keys, and API access accounts.

# NATS Proxy

:::hint{type="info"}
**Note**: The NATS Proxy feature is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

NATS Proxy allows you to set up a data connection with multiple Litmus Edge instances. It also allows a data connection with a Litmus Edge instance and another developer application. &#x20;

## NATS Proxy Use Cases

&#x20;Consider the following use cases for using NATS Proxy:

- Set up a connection with two Litmus Edge instances. Data in one instance will be sent through a NATS connector, which allows the data to be received and visualized in the other instance.&#x20;
- Set up a connection with three or more Litmus Edge instances. Data in one instance will be sent through a NATS connector, which allows the data to be received and visualized in multiple other instances.&#x20;
- Set up a connection with one Litmus Edge instance and an external developer application. Data in the instance will be sent through a NATS connector, and the developer application is properly set up as a NATS client to subscribe to NATS data and receive it.

Review the how-to guide to [Set Up Edge Cascading with the NATS Connector](docId\:p9zqIlAmmJcfPzzj5kJLO).&#x20;

# REST API Keys

This section allows users to create, edit, remove and validate API keys. An API token is a unique identifier of an application requesting access to a service. It is utilized when you use REST API endpoints for sending requests and retrieving data.

You need an authorization token to make requests from API endpoints. See your administrator for access to full API. The REST API Keys section allows you to add, modify, validate and remove a key. You can copy the API token from the Value column for a key.&#x20;

To make requests and updates using a REST API endpoint, you need to use curl from the command line or a GUI-based software like Postman. See [Test REST API using Postman or Curl](docId\:ARRIj_bgLGFLvbJ8BnbCI).&#x20;

# Access Accounts

This section allows users to create new accounts, enable or disable accounts and modify topics, view the API key, reset the account and remove the account.

# Access Tokens UI

**To access the Tokens pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **System&#x20;**>**&#x20;Tokens**.   &#x20;
   The *NATS Proxy&#x20;*&#x70;ane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jSK-MSLhjTYxdy8pnXrhX_image.png" size="80" width="1051" height="652" caption="The NATS Proxy pane" position="center" showCaption="true"}

# Next Steps

- [Create an API Token](docId\:zVJ8PaIyajdPs1cOLGo5S)&#x20;
- [Manage API Tokens](docId\:ap6uTuQ26ShOVAfpqWE0B)&#x20;
- [Create an API Account](docId\:FjKwI7dLgj_21twngGwjV)&#x20;
- [Manage API Accounts](docId\:CEHW4kagrs6kF7sOyzOBK)&#x20;
- [Test REST API using Postman or Curl](docId\:ARRIj_bgLGFLvbJ8BnbCI)
- [Set Up Edge Cascading with the NATS Connector](docId\:p9zqIlAmmJcfPzzj5kJLO)


[title] MQTT - IBM Watson over SSL
[path] Product Features/Integration/Integration Connectors/Message Brokers/

## Overview

IBM Watson MQTT SSL integration enables an Edge System to connect with IBM Watson using SSL authentication.

## Supported Versions

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

## Supported Communication

- Outbound (Publish data from Edge to MQTT Broker) - Yes
- Inbound (Subscribe data from MQTT Broker to Edge ) - Yes

## Configurations

| **Variable**           | **Detail**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | **Required** |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                   | Enter a name for the connector                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | Yes          |
| Hostname               | IP Address or Server FQDN of MQTT broker (Must be reachable from the Edge system)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Yes          |
| Port                   | MQTT broker port                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Yes          |
| CA certificate         | It is a digital certificate issued by a trusted Certificate Authority and is used to authenticate the identity of servers or entities in an SSL/TLS connection.                                                                                                                                                                                                                                                                                                                                                                                                      | No           |
| Organization id        | The IBM unique six-character organization ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Yes          |
| Device type            | Device types are groups of devices that share common characteristics.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Yes          |
| Device id              | A user-defined string identifier for the device. This ID must be unique within the registry.                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Yes          |
| Token                  | Token that was generated when the device was registered with Watson IoT Platform                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Yes          |
| QoS                    | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration.                                                                                                                       | Yes          |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br />As an example, in Mosquitto, you have the following settings:<br />\* max\_queued\_messages (default 100)<br />\* max\_queued\_bytes (default 0)<br />As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes          |
| Integration topic      | Default topic for publishing or subscribing                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Yes          |
| LWT topic              | It refers to the specific topic where the last will message will be published.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | No           |
| LWT payload            | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message.                                                                                                                                                                                                                                                                                                                                                                                       | No           |
| LWT payload type       | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | No           |
| LWT QoS                | A QoS value for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | No           |
| LWT retained           | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message.                                                                                                                                                                                                                                                                                                                                                                                                                      | No           |
| Throttling limit       | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                                                                                                                                                                                                                                                                               | No           |
| Persistent storage     | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                                                                                                                                                                                                                                                                                | No           |
| Queue mode             | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                                                                                                                                                                                                                                                                                 | No           |


[title] Test REST API using Postman or Curl
[path] Product Features/System/Tokens/

This set of instructions explains how to access the Litmus Edge APIs using an external tool: curl command or Postman.

API tokens are unique authentication credentials assigned to individual users. You can create API tokens to use the Litmus Edge REST APIs.

The back-end APIs communicate with the front-end interface through HTTP REST.

If you want to use a custom interface or some other custom application to access the underlying APIs, the Litmus Edge API Keys Management allows you to create an API token.

When accessing an exposed API, you can use the same API token for any of the exposed APIs.

To access API documentation, contact your Litmus representative.&#x20;

For the example below, we will test the DeviceHub version of your Litmus Edge instance.&#x20;

# Before You Begin

- [Create an API Token](docId\:zVJ8PaIyajdPs1cOLGo5S).
- Validate the API token from the **Action menu&#x20;**&#x6F;f the API Token. See [Manage API Tokens](docId\:ap6uTuQ26ShOVAfpqWE0B) to learn more.&#x20;
- Copy the API token (click the **Copy&#x20;**&#x69;con next to the *API token value)*. See [Manage API Tokens](docId\:ap6uTuQ26ShOVAfpqWE0B) to learn more.&#x20;

# Option 1: Access REST APIs with Postman

You can manually test a REST API with the Postman application.&#x20;

You will need to install and open [Postman](https://www.postman.com/downloads/).&#x20;

**To use Postman to view the component version:**

1. Open Postman or access the web version of Postman.&#x20;
2. Make sure that **GET&#xA0;**&#x69;s selected from **Action&#xA0;**&#x64;rop-down list.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/V-pWr_FjbH522MwZovChH_get-command.png" size="80" width="1920" height="1020" caption="The GET command" position="center" showCaption="true"}
3. Enter the API endpoint to verify the component version: \[Litmus Edge IP address]/\[component name]/version. For example, **https\://192.168.0.148/devicehub/version**.&#x20;
4. Click the **Authorization&#x20;**&#x74;ab.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yLq6AoYXP9RSS3rlehSGR_authorization-tab.png" size="80" width="1920" height="1020" caption="Authorization tab" position="center" showCaption="true"}
5. From the **Type&#x20;**&#x64;rop-down list, select **Basic Auth**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LPwiApBU2tnERB3YCIqjA_basic-auth.png" size="80" width="1920" height="1020" caption="Basic Auth option" position="center" showCaption="true"}
6. Paste the Litmus Edge API token in the *Username&#x20;*&#x66;ield. Leave the *Password&#x20;*&#x66;ield blank.&#x20;
7. Click **Send**.&#x20;
8. Review the version number in the response. 
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ic9RSu26ifR9uyHLM7b9A_response.png" size="80" width="1920" height="1020" caption="API response" position="center" showCaption="true"}

See the *Verify Response* section below to cross-reference the component version in Litmus Edge.&#x20;

# Option 2: Access REST APIs with Curl Command

You can use a command prompt window to manually test a REST API.&#x20;

In a command prompt window, enter the following command.&#x20;

```curl
curl -k -u d7izh3c4w1nwow0yvz1ypjq6h2soaoxm: --request GET https://192.168.0,147/devicehub/version
```

In the command above:

- Replace d7izh3c4w1nwow0yvz1ypjq6h2soaoxm: with your own Litmus Edge API token. The format username\:password is used, but because we aren't entering a password, no characters are needed after the colon (:). &#x20;
- Replace 192.168.0.147 with your own Litmus Edge IP address.&#x20;
- The -k parameter allows you to use basic authorization to access the API.&#x20;
- The -u parameter defines the user for the command, which is the Litmus Edge API token.&#x20;

The response should display something like the following.&#x20;

`{"version":"2.18.4","git":"0d44345d94e9"}`

Complete the steps below to cross-reference the component version in Litmus Edge.&#x20;

# Verify the Response

**To verify the response:**

1. Copy the version number in the API response from the previous step.&#x20;
2. In Litmus Edge, navigate to **System&#x20;**> **Support&#x20;**&#x61;nd refer to the *Status&#x20;*&#x73;ection.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pUpE_i-Qe9oQkrngIRgNN_status-ui.png" size="80" width="1362" height="705" caption="Status section" position="center" showCaption="true"}
3. Cross-reference the version number from the API response and the version number for *DeviceHub API*.&#x20;
   The version numbers should match.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PPJJad0TlAhIDgxzxFE4P_version-number.png" size="80" width="1362" height="705" caption="Component version number" position="center" showCaption="true"}


[title] MQTT - Amazon AWS IoT Core over SSL
[path] Product Features/Integration/Integration Connectors/Message Brokers/

Review the [Amazon AWS IoT Core over SSL Integration Guide](docId\:CKMHM7oqjpVcAqmMsKhW-).&#x20;

## Overview

AWS IoT Core over SSL integration enables an Edge System to connect with Amazon AWS IoT Core using SSL authentication.

## Supported Versions

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

## Supported Communication

- Outbound (Publish data from Edge to MQTT Broker) - Yes
- Inbound (Subscribe data from MQTT Broker to Edge) - Yes

## Configurations

| **Variable**           | **Detail**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | **Required** |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                   | Enter a name for the connector                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Yes          |
| Hostname               | IP Address or Server FQDN of MQTT broker (Must be reachable from the Edge system)                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Yes          |
| Port                   | MQTT broker port                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | Yes          |
| Certificate            | SSL Certificate                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Yes          |
| Private key            | SSL certificate private key                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | Yes          |
| Client id              | Unique client identity. If left blank, a default value is auto-generated.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | No           |
| QoS                    | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration.                                                                                                                | Yes          |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br />As an example, in Mosquitto, you have the following settings:<br />* max\_queued\_messages (default 100)
* max\_queued\_bytes (default 0)<br />As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes          |
| Integration topic      | Default topic for publishing or subscribing                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | Yes          |
| LWT topic              | It refers to the specific topic where the last will message will be published.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | No           |
| LWT payload            | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message.                                                                                                                                                                                                                                                                                                                                                                                | No           |
| LWT payload type       | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                               | No           |
| LWT QoS                | A QoS value for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | No           |
| LWT retained           | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message.                                                                                                                                                                                                                                                                                                                                                                                                               | No           |
| Throttling limit       | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                                                                                                                                                                                                                                                                        | No           |
| Persistent storage     | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                                                                                                                                                                                                                                                                         | No           |
| Queue mode             | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                                                                                                                                                                                                                                                                          | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product    | Version |
| ---------- | ------- |
| Amazon AWS | N/A     |


[title] Configure the Network Settings
[path] Product Features/System/Network/

You can configure the network settings by navigating to **System&#x20;**>**&#x20;Network** and clicking the **Configure&#x20;**&#x74;ab.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/q1zh2u7m8qRByXiwc8gSi_image.png "The Configure tab")

# Host Information

In the *Friendly Name* field, update the host friendly name and click **Change**. You can verify the updated friendly name by clicking the **Overview&#x20;**&#x74;ab and reviewing the *Host Information* section.&#x20;

# Timezone

- In the *Country&#x20;*&#x66;ield, update the country and click **Change**. Refer to the list of [country codes for ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) when choosing the appropriate country.
- In the Timezone field, use the drop-down list to update the timezone and click **Change**. You must reboot the device for the timezone change to take effect.&#x20;

You can verify the updated timezone by clicking the **Overview&#x20;**&#x74;ab and reviewing the *Host Information* section.&#x20;

# Docker Interface

You can modify the Docker binding IP address range for your system. Changing the Docker binding IP restarts the Docker service. All deployments restart.

In the *Docker Binding IP* field, enter an IP address range and click **Change**. For example: `10.30.50.1/24`.&#x20;

You can verify the updated Docker binding IP address range by clicking the **Overview&#x20;**&#x74;ab and reviewing the *Docker Interface* section.&#x20;


[title] Configure a Local NTP Server
[path] Product Features/System/Network/Configure DNS/NTP Servers/

Devices rely on an internet time server and a clock source, such as a GPS satellite, to synchronize time across devices. However, in an offline scenario where devices are not connected to the internet, time synchronization must be achieved using a local Network Time Protocol (NTP) server.

If you require a local NTP server:

- Check with your IT team. An NTP server may already be provisioned.
- If an NTP server is not already available, create a Windows-based NTP server by following the steps below.

# Before You Begin

- A Windows server running Windows 7, 8, or 10 is required. Procedures listed on this page have been tested using Windows 10. Other Windows versions may have a slightly different workflow.
- You must have Administrator privileges to configure the Windows server.
- Requires a basic understanding of Windows registry. Caution should be used when updating the registry.

# Configure a Local NTP Server

To configure a local NTP Server, you will need to do the following:

- Step 1: Configure Windows Time Service
- Step 2: Update Windows Registry to Create Local NTP Service
- Step 3: Update Windows Registry to Configure Time Provider
- Step 4: Update Windows Registry to Configure Announce Flags
- Step 5: Start Local Windows NTP Time Service

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

## Step 1: Configure Windows Time Service

**To configure the Windows Time Service:**

1. In the File Explorer, navigate to: **Control Panel\System and Security\Administrative Tools**.
2. Double-click **Services**. Alternatively, enter **services.msc** in the Windows Run dialog (Windows Key + R).
3. In the *Services&#x20;*&#x6C;ist, right-click **Windows Time&#x20;**&#x61;nd click **Stop**. The Windows Time service may already be stopped. In this case, skip this step and proceed to the steps below.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cjJr7UgFPDTOamN6aT1Kl_ntpconfigwindowsservices.png" size="80" width="925" height="889" caption="The Windows Time service" position="center" showCaption="true"}

## Step 2: Update Windows Registry to Create Local NTP Service

**To create a local NTP service:**

1. Launch **Windows Run** (Windows Key + R).
2. Enter **regedit&#x20;**&#x61;nd click **OK**.
3. Navigate to the registry key: **Computer\HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters**. If you don't see *LocalNTP REG\_DWORD* in the list, continue with the following steps. If you do see it, keep the Registry Editor open and proceed to the next task.&#x20;
4. Right-click in the Registry Editor, select **New**, select **DWORD**, and enter **LocalNTP&#x20;**(note that this name is case sensitive).&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cmhgvasxB62biEFYcjzMn_ntpconfigwindowsregistrycreatenew.png" size="80" width="997" height="525" caption="Create New DWORD item" position="center" showCaption="true"}
5. Double-click **LocalNTP**, change the *Value data&#x20;*&#x74;o **1**, select a *Base&#x20;*&#x6F;&#x66;**&#x20;Hexadecimal**, and click **OK**.
6. Keep the Registry Editor open for the next task.&#x20;

## Step 3: Update Windows Registry to Configure Time Provider

**To configure the time provider:**

1. Navigate to the registry key: **Computer\HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders**
2. Select **NtpServer**, double-click **Enabled**, change the *Value Data* to **1**, select a *Base&#xA0;*&#x6F;f **Hexadecimal**, and click **OK**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7eVoLNT4X_CP6ixehEqW8_ntpconfigwindowsregistrytimeprovider.png" size="80" width="999" height="531" caption="Edit DWORD Value dialog box" position="center" showCaption="true"}
3. Keep the Registry Editor open for the next task.&#x20;

## Step 4: Update Windows Registry to Configure Announce Flags

**To configure the announce flags:**

1. Navigate to the registry key: **Computer\HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config**
2. Double-click **AnnounceFlags**, change the *Value data* to **5**, select a *Base&#xA0;*&#x6F;f **Hexadecimal**, and click **OK**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8CnwDhfbjT24Nak72vZE1_ntpconfigwindowsregistryannounceflags.png" size="80" width="1000" height="529" caption="Edit DWORD Value dialog box" position="center" showCaption="true"}
3. Close the Registry Editor.

## Step 5: Start Local Windows NTP Time Service

**To start the local Windows NTP Time Service:&#x20;**

1. In the File Explorer, navigate to: **Control Panel\System and Security\Administrative Tools**.
2. Double-click **Services**.
3. In the Services list, right-click **Windows Time&#x20;**&#x61;nd select **Properties**.
4. In the *Windows Time Properties (Local Computer)* dialog box, select a *Startup type&#x20;*&#x6F;f **Automatic**, click **Start&#x20;**&#x66;or *Service status*, and click **OK**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Cz2NNmyhLtuRqKM0NQDua_ntpconfigstartwindowstime.png "The Windows Time Properties dialog box")

The local NTP Time Server configuration is now complete. You can now synchronize the time of other computers and devices on your local network.

# Synchronize Time on Devices

In order for devices on your local network to communicate with this new local time server, you must know the IP address of the Windows NTP Time Server.

**To synchronize the time on devices:**

1. *On the Windows server* that you just configured as an NTP server, go to the **Windows Command Prompt**, enter: **ipconfig**.
2. Locate the **IP address of the NTP server**.
3. Go to either the Litmus Edge Web UI or the Terminal User Interface (TUI) and enter the address of the local NTP server.&#x20;
   - To use the Litmus Edge Web UI, update the *NTP Servers*. See [Configure DNS/NTP Servers](docId\:pz9D0WPBQbUGyh0MH6wyx) to learn more.&#x20;
   - To use the TUI, update the *Configure Time* setting. See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) to learn more.&#x20;
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/osabnYypK518ViRg9nPUg_loopedgetuitimentpconfiguration.png" size="80" width="745" height="514" caption="Configure NTP section in Terminal User Interface" position="center" showCaption="true"}


[title] Device Management
[path] Product Features/System/

From the *Device Management* pane, you can activate your edge device for the selected Litmus Edge Manager, which enables Litmus Edge Manager to manage that edge device. You can also deactivate from the previously connected Litmus Edge Manager.

The *Device Management***&#xA0;**&#x70;ane includes the following sections:

- **Cloud Activation**: Allows you to connect (activate) or disconnect (deactivate) your edge device using an endpoint IP address. You can view the company name, project name, device ID and status of the device. The endpoint is set or modified here.
- **Manage**: Allows you to reboot and factory-reset your edge device.&#x20;
- **Software Update**: Allows you to upgrade Litmus Edge. See [Software Updates](docId\:HfThqIf8nNwIujhBdyoJZ).&#x20;

Cloud activation accomplishes the following:

- Creates a connection to communicate with Litmus Edge Manager.&#x20;
- Create a default SSL connector in Integration.
- Adds a Custom CA certificate for Litmus Edge Manager.
- Configures a Litmus Edge so that users can have remote access from anywhere in the world.

# Access Device Management UI

**To access the Device Management pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **System&#x20;**>**&#x20;Device Management**.
   The *Device Management&#x20;*&#x70;ane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZqrphM7gR83g9914EpTWd_image.png" size="80" width="656" height="637" caption="The System Device Management pane" position="center" showCaption="true"}

# Next Steps

- [Activate an Edge Device](docId\:G1kWiYDlSR5u8qEJk0djp)&#x20;
- [Manage Edge Devices](docId:8ifRMK4OfMUc77135K-I6)&#x20;
- [Software Updates](docId\:HfThqIf8nNwIujhBdyoJZ)


[title] Manage OPC UA Certificates
[path] Product Features/OPC UA Server/Connections/

You can manage your OPC UA Client Certificates by navigating to **OPC&#x20;**>**&#x20;Certificates**.&#x20;

# Refresh Settings

You can click the **Show settings** icon to manage the refresh settings.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EatDAj_LZaurVe_Cx1-b8_image.png "Certificate refresh settings icon")

- **Auto-Refresh**: Enable or disable auto-refresh of client certificates. Auto-refresh is enabled by default.&#x20;
- **Refresh connections:** Refresh the OPC UA client connections.&#x20;

# Manage OPC UA Certificates

You can click the **Action menu** for client certificates you've added to manage them.&#x20;

- **Trust**: You can trust the client certificate
- **Remove**: The client certificate is removed from the list.&#x20;

You can click th&#x65;**&#x20;Action menu** for all client certificates to remove all certificates from the list.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vBjQA0L91cy1N1QtFJmVB_image.png)


[title] External Storage
[path] Product Features/System/

The *External Storage* pane allows you to manage external storage with Litmus Edge.&#x20;

# Network Storage

You can mount and manage network storage. This enables you to share the same storage location with all marketplace applications.&#x20;

# Cloud Sync Storage

:::hint{type="info"}
**Note**: Cloud Sync Storage is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

You can transfer files from Litmus Edge to a cloud storage service. Currently, you can set up cloud storage with AWS S3 and Azure Blob Storage.&#x20;

To enable this feature, navigate to **System&#x20;**> **Support&#x20;**> **Features&#x20;**&#x61;nd click the toggle for Cloud Storage Sync.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2dvfHpY05E0gP8dK-c15Y_image.png "Cloud Storage Sync toggle")

# Access External Storage UI

**To access the External Storage pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **System&#x20;**>**&#x20;External Storage**.
   The *Mount points&#x20;*&#x70;ane appears.&#x20;
3. Select the appropriate tab to manage network storage or cloud storage.
   Cloud storage must be enabled from **System&#x20;**> **Support&#x20;**>**&#x20;Features**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Cn3xGL3bU_VMZK1SZs-OR_image.png "External Storage tabs")

# Next Steps

- [Cloud Storage Sync](docId\:QRkh9E2HnyzNw-mDyEblO)
- [Network Storage](docId\:t3ZrEehWlE3a__8kyQeu9)
- [Mount External Storage](docId:0EHe48bvf0CeWNmDGVD_T)
- [Manage Mount Points](docId\:ezAYqeA2EwW-3dpPCg_uv)




[title] System
[path] Product Features/

You can use the *System&#x20;*&#x6D;odule to view and modify configurations throughout Litmus Edge.

From the navigation panel, clic&#x6B;**&#xA0;System** to access the list of system features.

:::hint{type="warning"}
**Important**: As of Litmus Edge version 3.11.0, remote access functionality is no longer available. Contact your account representative to learn more.&#x20;
:::

| **System Feature**                                      | **Find more information here**                                                                                                                                                                          |
| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Info](docId\:YIwyPagdCmgYF_px_-wgA)                    | - General
- CPU
- Data Partition Usage
- Memory
- Network Interfaces
- Modem Interfaces
- Serial Interfaces
- CAN Interfaces (if they exist)                                                            |
| [Certificates](docId\:s0dXZeU8mTAywyQsYEDyj)            | * Add a device certificate
* Add a custom certificate
* Copy device public key                                                                                                                          |
| [Network](docId\:T_wPwBYX3j0SsKy9yxIlA)                 | - Modify Host information
- View gateway and modify gateway if Ethernet settings are static
- Modify DNS/NTP
- Configure Ethernet settings
- Manage firewall rules and static routes
- Configure modems |
| [Wi-Fi](docId:2sixPCXY1wBRu8tkb4pmi)                    | * Select a network for your device to allow connection
* Disconnect any device that appears on the Wi-Fi pane                                                                                           |
| [Remote Access](docId\:SZ5C8O2LRSXz5eP41JpuN)           | - Add remote access (no longer available as of Litmus Edge version 3.11.0)                                                                                                                              |
| [Device Management](docId:_Z78GRL4jvPUc1B08Ojg0)        | * Add and modify activation for cloud
* View management status
* Manage Litmus Edge devices
* View object instances                                                                                     |
| [LDAP/AD Auth](docId\:BNd3rPslZ0_d_0dx9OFbz)            | - Add authentication provider                                                                                                                                                                           |
| [Users](docId\:Tls9-yYfMMtuyr9lRmpPD)                   | * Manage users                                                                                                                                                                                          |
| [Tokens](docId\:Cs7YxwAZ7wYLGNE0XpsRX)                  | - Create, edit, remove and validate REST API keys
- Manage access accounts                                                                                                                              |
| [Services](docId:9M4t8CndWiMtGdgSlpRUa)                 | * Start, stop, disable, and enable or disable FTP services
* Add and remove FTP users, enable or disable a user and reset an FTP user's password
* Start and stop Remote Access and SSH services        |
| [External Storage](docId\:rDY5CqTUUo4icqZwYkKSX) <br /> | - Add external storage
- Configure cloud storage                                                                                                                                                        |
| [Policy Management](docId\:RJcVMjGrq0jMwlTB2caHS) &#xA; | * Modify Password Policy
* Modify Disk Space Policy                                                                                                                                                     |
| [Licenses](docId\:xa4e89MI09GOTjpoJvIug)                | - Add or upgrade a license
- View current version
- Disable and enable modules
- View number of devices and Tags allowed in your plan                                                                   |
| [Events](docId\:N5yUywec9dzQ8V1gRUqHN)                  | * View a log of live and historical events that have occurred for specified components                                                                                                                  |
| [Zerotouch](docId\:BUMGn-8x81uXvGLmyKRDv)               | - View Zerotouch status and information                                                                                                                                                                 |
| [Support](docId\:b_UKFjBuLxq7q7liWxVkJ)                 | * View component status
* Generate and download a support bundle
* Download a file and view file information                                                                                            |
| [Backup/Restore](docId\:Q_mfOXtLO2fAHvHW1JcEf)          | - Back up and restore edge device configuration
- Save the current backup and restore configuration for cloud
- Upload and download backup templates                                                    |


[title] Add a Group
[path] Product Features/System/Users/

:::hint{type="info"}
**Note**: Role-based access control (RBAC) is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

You can add a new group and associate *Roles&#x20;*&#x74;o it by navigating to **System&#x20;**>**&#x20;Users&#x20;**&#x61;nd selecting th&#x65;**&#x20;Groups&#x20;**&#x74;ab.

:::hint{type="warning"}
**Important**: New users need to belong to at least one group to be able to log in to Litmus Edge.&#x20;
:::

**To add a group**:

1. Navigate to **System&#x20;***>&#x20;***Users&#x20;**&#x61;nd click the **Groups&#x20;**&#x74;ab.&#x20;
2. Click the **Add Group** icon.&#x20;
   The *Add Group* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/I_MZNtenuHvk-Fd81Afpe_addgroupicon.png" size="80" width="699" height="501" caption="Add Group icon" position="center" showCaption="true"}
3. Enter a name for the group.&#x20;
4. Click **Add Roles**. All existing *Roles&#x20;*&#x64;isplay. Select a role's check box to associate the role with the new group. Add as many roles as required.&#x20;
5. Click **Save**.
   The group is added to the *Group&#x20;*&#x74;ab.


[title] Install an Identity Certificate
[path] Product Features/System/Certificates/

If you need to authenticate a connection between Litmus Edge and another service, you may need to install an identity certificate.&#x20;

You can install an identity certificate by navigating t&#x6F;**&#x20;System&#x20;**>**&#x20;Certificates** and clicking the **Identity&#x20;**&#x74;ab.&#x20;

# Before You Begin

Submit the certificate signing request in Litmus Edge to a certificate authority so that you can receive the corresponding identity certificate. Make sure that the file uses X509 encoding. Follow up with your IT department for support. See [Manage Certificate Signing Requests](docId\:IK4-nJHtCh0KkMAqhhlYm) for details.&#x20;

# Install an Identity Certificate&#x20;

**To install an identity certificate:**

1. Navigate to **System&#x20;**> **Certificates**.
2. From the *Certificates&#x20;*&#x70;ane, select the **Identity** tab.
3. Click the **Install certificate** icon. The *Install Identity Certificates* dialog box appears.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qO1Q5WuPvvFiKbxwj4w43_installidentitycertificate.png "Install certificate icon")
4. (Optional) Paste the CA certificate from the Certificate Authority in the **CA Chain&#xA0;**&#x66;ield.
   To get this parameter, follow up with your IT department. Make sure that X509 encoding is used. This is an ordered list of certificates containing an end-user subscriber certificate and intermediate certificates (that represents the intermediate CA). This enables the receiver to verify that the sender and all intermediate certificates are trustworthy and confirms the ownership of the public key.
5. Paste the SSL certificate in the **Identity Certificate&#xA0;**&#x66;ield.
   An SSL certificate contains information of the owner/organization, such as its location, public key, and validity dates. The client makes sure that a valid certificate authority (CA) has validated the certificate.
6. Click **Install**.&#x20;

You can verify the identity certificate was successfully installed by the green checkmark under the valid column for the certificate.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2e1rT75l2YP6nj_eHVy5n_image.png" size="80" width="1455" height="211" caption="Valid identity certificate icon" position="center" showCaption="true"}


[title] REST API
[path] Product Features/Integration/Integration Connectors/Other Providers/

:::hint{type="info"}
**Note**: Available for Litmus Edge version 3.5.2 and later.&#x20;
:::

## Overview

REST API integration enables an Edge System to connect with RESTful API.

## Supported Communication

- Outbound (Publish data from Edge to REST Server ) - Yes
- Inbound (Subscribe data from REST Server to Edge) - No

## Configurations

| **Variable**           | **Detail**                                                                                                                                                                                            | **Required** |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                   | Enter a name for the connector                                                                                                                                                                        | Yes          |
| Method                 | HTTP methods in REST APIs: GET, POST, PUT, and DELETE                                                                                                                                                 | Yes          |
| Endpoint               | Endpoints are the entry points to interact with the API                                                                                                                                               | Yes          |
| Headers                | A request header is an HTTP header that can be used in an HTTP request to provide information about the request context                                                                               | Yes          |
| Params                 | URL parameters (query strings) additional information for a given URL                                                                                                                                 | No           |
| Mapping                | Data from a payload could be mapped into a custom one. Example: \{"from": "to"} where "from" is a key from predefined payload, and "to" is a key from destination payload.                            | No           |
| Parallel publish count | Parallel publish count indicates how many data streams or data items are being sent from the edge system to a central system or cloud simultaneously.                                                 | Yes          |
| Insecure skip verify   | InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name. Select to disable verification                                                                    | No           |
| Throttling limit       | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                | No           |
| Persistent storage     | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |
| Queue mode             | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  | No           |


[title] Add a Custom CA Certificate
[path] Product Features/System/Certificates/

A CA certificate is a digital certificate issued by a certificate authority (CA). The CA certificate allows valid and secure connections between Litmus Edge and other systems.

To create a valid and secure connection between Litmus Edge and Litmus Edge Manager, a custom CA certificate needs to be generated. To complete this specific task, see [Activate an Edge Device](docId\:G1kWiYDlSR5u8qEJk0djp) for details.&#x20;

To upload a custom CA certificate not related to validating communication between Litmus Edge and Litmus Edge Manager, follow the steps below.&#x20;

:::hint{type="info"}
**Important**: When uploading a custom CA certificate, make sure the file is in CRT format and that X509 encoding is used.&#x20;
:::

# Before You Begin

Contact your IT team to download any required CA certificates that you will need to upload to Litmus Edge.&#x20;

# Add a Custom CA Certificate

**To add a custom CA certificate:**

1. Navigate to **System&#x20;**> **Certificates**.
2. From the *Certificates&#x20;*&#x70;ane, select the **Custom Certificate&#xA0;**&#x74;ab.
3. Click the **Add&#x20;**&#x69;con.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EsZPktchB2DC9barnFnzH_addcustomcertificate.png "Add custom certificate icon")
4. Navigate to the certificate file (\*.crt) and click **Open**.&#x20;
   The new certificate appears in the *Custom Certificates* tab.


[title] MQTT - Azure IoT Hub using SAS Key
[path] Product Features/Integration/Integration Connectors/Message Brokers/

Review the following guides: [Send Data to Azure IoT Hub with an SAS Key](docId\:FxoUPxtcqiAALlD3UEuNC) and [Receive Data from Azure IoT Hub with an SAS Key](docId:7aTKHCCxDhwxxAV-JFVME).&#x20;

## Overview

Azure IoT Hub SAS Key integration enables an Edge System to connect to an MQTT broker.

## Supported Versions

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

## Supported Communication

- Outbound (Publish data from Edge to MQTT Broker) - Yes
- Inbound (Subscribe data from MQTT Broker to Edge) - Yes

## Configurations

| **Variable**           | **Detail**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | **Required** |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                   | Enter a name for the connector                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Yes          |
| Hostname               | IP Address or Server FQDN of MQTT broker (Must be reachable from the Edge system)                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Yes          |
| Port                   | MQTT broker port                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | Yes          |
| Device ID              | ID of the device as shown in your Azure IoT account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Yes          |
| SAS Key                | The primary or secondary shared access key.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | Yes          |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br />As an example, in Mosquitto, you have the following settings:<br />* max\_queued\_messages (default 100)
* max\_queued\_bytes (default 0)<br />As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes          |
| Integration topic      | Default topic for publishing or subscribing.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | No           |
| Token TTL (minutes)    | The token expiry time in minutes.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Yes          |
| LWT topic              | It refers to the specific topic where the last will message will be published.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | No           |
| LWT payload            | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message.                                                                                                                                                                                                                                                                                                                                                                                | No           |
| LWT payload type       | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                               | No           |
| LWT QoS                | A QoS value for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | No           |
| LWT retained           | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message.                                                                                                                                                                                                                                                                                                                                                                                                               | No           |
| Throttling limit       | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                                                                                                                                                                                                                                                                        | No           |
| Persistent storage     | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                                                                                                                                                                                                                                                                         | No           |
| Queue mode             | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                                                                                                                                                                                                                                                                          | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product        | Version |
| -------------- | ------- |
| Azure Services | N/A     |


[title] MQTT - System Protobuf TCP
[path] Product Features/Integration/Integration Connectors/Message Brokers/

## Overview

MQTT - System Protobuf TCP integration enables an Edge System to connect with a System Protobuf broker.&#x20;

## Supported Versions

- MQTT Protocol version 3.1.0
- MQTT Protocol version 3.1.1

## Supported Communication

- Outbound (Publish data from Edge to MQTT Broker) - Yes
- Inbound (Subscribe data from MQTT Broker to Edge) - Yes

## Configurations

| **Variable**           | **Detail**                                                                                                                                                                                                                                                                                                                                                                                                                           | **Required** |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------ |
| Name                   | Enter a name for the connector                                                                                                                                                                                                                                                                                                                                                                                                       | Yes          |
| Hostname               | IP Address or Server FQDN of MQTT broker (Must be reachable from the Edge system)                                                                                                                                                                                                                                                                                                                                                    | Yes          |
| Port                   | MQTT broker port                                                                                                                                                                                                                                                                                                                                                                                                                     | No           |
| ClientID               | Unique client identity                                                                                                                                                                                                                                                                                                                                                                                                               | Yes          |
| Username               | User name                                                                                                                                                                                                                                                                                                                                                                                                                            | Yes          |
| Password               | User password                                                                                                                                                                                                                                                                                                                                                                                                                        | Yes          |
| QoS                    | The Quality of Service (QoS) level is an agreement between the sender of a message and the receiver of a message that defines the guarantee of delivery for a specific message.<br />You can publish several messages simultaneously. When you publish, a larger value allows more throughput but may lead to packages losing messages despite assigning QoS=1.<br />**Note**: the QoS option depends upon the server configuration. | No           |
| Parallel publish count | For example, Mosquitto has the following options:<br />* max\_queued\_messages (100 by default)
* max\_queued\_bytes (0 by default)<br />According to the Mosquitto documentation, once this limit has been reached, subsequent messages are silently dropped.&#xA;You can modify the server configuration or set this value in accordance with the server option.                                                                   | Yes          |
| Topic                  | Default topic for publishing or subscribing                                                                                                                                                                                                                                                                                                                                                                                          | Yes          |
| Throttling limit       | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                                                                                                                                               | No           |
| Persistent storage     | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                                                                                                                                                | No           |
| Queue mode             | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                                                                                                                                                 | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product**              | **Version** | **Date**     |
| ------------------------ | ----------- | ------------ |
| Mosquitto Message Broker | 1.x         | Nov 14, 2019 |
| HiveMQ                   | 2.x         | Nov 14, 2019 |


[title] Configure DNS/NTP Servers
[path] Product Features/System/Network/

You can configure DNS/NTP Servers by navigating to **System&#x20;**>**&#x20;Network** and clicking the **DNS / NTP Servers** tab.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Vgb4YmndpsSkGO6pw6Rh1_image.png "The DNS / NTP Servers tab")

# Before You Begin

Before making changes to the DNS/NTP Servers, make sure your configuration is using the same network on which your device is located.

# Fallback DNS Resolvers

The Litmus Edge software package installation includes a default configuration for the Fallback DNS Resolvers that is only suitable for the open Internet. You must delete and replace the default entries with your own network information.

To remove a fallback DNS resolver, click the **Trash&#x20;**&#x69;con next to the one you want to remove.&#x20;

To add a DNS resolver, enter the IP address for a DNS Resolver in the *Add DNS Resolvers* field and click **Add**.&#x20;

# NTP Client Status

:::hint{type="info"}
**Note**: This section is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

The information provided in this section assists in assessing activation and license provisioning.&#x20;

The following information is available:

- **Status**: The current status of the NTP Client.&#x20;
- **Server**: The location of the server.
- **Stratum**: The hierarchy within the NTP network.&#x20;
- **System Time**: The difference between the device time and the NTP system time.&#x20;

# NTP Servers

The Litmus Edge software package installation includes a default configuration for the NTP server ports that is only suitable for the open Internet. You must delete and replace the default entries with your own network information.

To remove an NTP server, click the **Trash&#x20;**&#x69;con next to the one you want to remove.&#x20;

To add an NTP server, enter the server port for an NTP server in the *Add NTP Server* field and click **Add**. For example: **0.pool.ntp.org**.&#x20;

# Hosts File

You can add a new host binding. The host binding supplies configuration metadata, allowing you to set properties on an element or component for the host. You can then generate events on the host.

To add a host binding, click the **Add&#x20;**&#x69;con, enter the details, and then click **Create**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bZE9ovf5Xu6DMiL5joCl9_image.png" size="80" width="1357" height="742" caption="Add Hosts file icon" position="center" showCaption="true"}

- **IP address**: Enter the IP address for the host.&#x20;
- **Names**: Enter one or more names for the elements or components that generate events.&#x20;

To remove a host binding, click the **Action menu** for the host binding and select **Remove**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bwvODiKj6uoB4BZLx9EG4_image.png "The Remove option for a host file")


[title] Add a User
[path] Product Features/System/Users/

:::hint{type="info"}
**Note**: Role-based access control (RBAC) is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

You can add users to Litmus Edge by navigating to **System&#x20;**>**&#x20;Users&#x20;**&#x61;nd selecting th&#x65;**&#x20;Users&#x20;**&#x74;ab.

:::hint{type="warning"}
**Important**: 

- Administrators should email credentials to new users. These credentials are temporary, and users need to change their password when they first log in to Litmus Edge.&#x20;
- New users need to belong to at least one group to be able to log in to Litmus Edge.&#x20;
:::

**To add a user:**

1. Navigate to **System&#x20;***>&#x20;***Users&#x20;**&#x61;nd click the **Users&#x20;**&#x74;ab.&#x20;
2. Click the **Add User** icon.&#x20;
   The *Add User&#x20;*&#x64;ialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ACu5ig8NXHKFNso-prd9L_addusericon.png "Add user icon")
3. Enter the details for the user.&#x20;
   - First name
   - Last name
   - Username
   - Password
4. Use the drop-down list for **Select Groups&#x20;**&#x74;o add the users to groups. Add as many groups as required. If no groups are assigned, the user will not be able to log in to Litmus Edge.&#x20;
5. Clic&#x6B;**&#x20;Add User**.
   The user is added to the *Users&#x20;*&#x70;ane.&#x20;




[title] Management
[path] Product Features/OPC UA Server/

Litmus Edge OPC UA supports many different options for managing security policies and user authentication.

The OPC UA *Management&#xA0;*&#x70;ane includes the following sections:

- **OPC UA Management**: Allows you to start, reset, stop, and configure the server. The OPC UA server is color-coded. A started server displays a green OK. A stopped server displays a red Stopped. Configure allows you to set the host, port, and allow nodes under root.&#x20;
  - If you are using the Docker version of Litmus Edge and having issues connecting to the OPC UA server, refer to [Issues Connecting to OPC UA Server](docId\:X_G5VuJbUpZPs26wYsuxM).&#x20;
- **Policy Management**: Allows you to enable different encryption algorithms and security modes for the OPC UA server.&#x20;
- **Authentication Management**: Allows you to enable multiple identity types and choose security policies.&#x20;
- **User Management**: Allows you to view current  OPC UA users.&#x20;

# Access OPC UA Management UI

**To access the OPC UA Management pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **OPC&#x20;**>**&#x20;Management**.
   The *Management&#x20;*&#x70;ane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9lUjNr8BTDjXmNEGJhlDk_image.png" size="80" width="1888" height="608" caption="The OPC UA Management pane" position="center" showCaption="true"}

# Next Steps

- [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe)&#x20;
- [Manage OPC UA Policies](docId\:joZyfQV2gJ5-x4umSBHU8)&#x20;
- [Manage OPC UA Authentication](docId\:upzOxdws6i0ReR0amqfbM)&#x20;
- [Manage OPC UA Users](docId\:JSu80EJwkmbl2Vt2n8I2S)


[title] Online Node-Locked License Activations
[path] Product Features/System/Licenses/

If your Litmus Edge has an internet connection, you can do the following:

- [Activate a Node-Locked License Online](docId\:ew63TzR21xC_8mkhmT1mp)
- [Upgrade a Node-Locked License](docId\:HiP2yHhUBzHMEdcA8skBZ)




[title] Network
[path] Product Features/System/

On the *Network&#xA0;*&#x70;ane, you can view and configure network settings.

# Access System Network UI

**To access the System Network pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **System&#x20;**>**&#x20;Network**.
   The *Network&#x20;*&#x70;ane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_pw9GEnY6QBJddiGE4r8i_image.png" size="80" width="986" height="602" caption="The System Network pane" position="center" showCaption="true"}

The pane includes the following tabs.

- **Overview**: Includes the Host Information, Gateways, Interfaces List, Modem Interfaces, and Docker Interface sections where you can view information.
- **Configure**: Includes the Host Information, Timezone, and Docker Interface sections where you can perform changes to the Friendly Name, Country and Docker Binding IP address.
- **Interfaces**: Includes the Interfaces section, where you can update the eth0 network and eth1 private network interfaces.
- **DNS/NTP Servers**: Includes the Fallback DNS Resolvers, NTP Client Status (available for Litmus Edge version 3.11.0 and later), NTP Servers, and Host file sections. You can add, modify or delete DNS Resolvers, NTP Servers, and the Host File.
- **Firewall**: (available for Litmus Edge version 3.11.0 and later) Displays firewall rules that open ports for inbound communication. You can create and edit firewall rules.&#x20;
- **Routes**: (available for Litmus Edge version 3.11.0 and later) Allows you to control the routing of messages by adding static routes. Only IPv4 and IPv6 routes are supported.
- **WWAN**: Includes the Modem Configuration section, where you can modify the modem configuration, if available.
- **Wi-Fi**: This tab only appears if your edge device supports Wi-Fi. You can select a network for your edge device to connect to. You can also disconnect any device that appears on the Wi-Fi pane. Litmus Edge Wi-Fi uses WPA for authentication to ensure a secure wireless network. You must configure the wlan0 network interface in the *Interfaces&#xA0;*&#x74;ab before it appears here.

:::hint{type="info"}
**Note**: If you are on Litmus Edge version 3.5.6 or earlier, the Wi-Fi pane is a separate menu item Under **System&#x20;**&#x69;n the navigation panel.&#x20;
:::

Litmus Edge includes two Ethernet interfaces:

- **eth0&#x20;**&#x69;s always connected to the Internet. It is located in the DMZ (demilitarized zone), a separate network that has restricted access to a company's internal network.
- **eth1&#x20;**&#x69;s connected to a private network with a DHCP server.

There are two optional Wireless Network interfaces:

- **wlan0&#x20;**&#x72;epresents a Wi-Fi network connection. If your device supports Wi-Fi, the interface appears on the *Wi-Fi&#x20;*&#x70;ane in the System module, where you can establish a connection.
- **wwan0&#x20;**&#x72;epresents a connection to an LTE mobile network. You must set up an LTE modem for this type of connection. If your device supports LTE, after you configure the associated APN, you can view its information in the *Info&#x20;*&#x70;ane in the System module under the *Modem Interfaces* section.

:::hint{type="info"}
**Important for Cloud Deployment:**
Before activating the license, ensure all hardware / VM configuration steps that can modify the MAC address (add/replace a Network Interface Controller (NIC) card) are finalized.

The license Host ID depends on the Media Access Control (MAC) address for the device. The MAC address identifies the devices on a network. Changing the MAC address will invalidate the license.
:::

# Next Steps

- [Configure the Network Settings](docId\:jW2n7vOhntfAgknzoyLQc)&#x20;
- [Configure Network Interfaces](docId\:VZke6BcTDXbG0WsyrEZNf)&#x20;
- [Configure DNS/NTP Servers](docId\:pz9D0WPBQbUGyh0MH6wyx)&#x20;
- [Manage Firewall Rules](docId:7EPAu9hxQoVl546Scor1Q)
- [Manage Static Routes](docId\:Co_QNOa4j7R84FfBXEZqL)
- [Configure a Modem](docId:23mJdSWNvJrN6oKi5ybIX)&#x20;
- [Configure an LTE Modem](docId\:jWamcqYwzOTKHKZZAlVRF)&#x20;


[title] Test a Provider
[path] Product Features/System/LDAP/AD Auth/

You can test an LDAP provider from the *Authentication Providers* list or the *Configuration Update Provider* dialog box by navigating to **System&#x20;**>**&#x20;LDAP/AD Auth**.

Tests include:

- Connection status
- Groups status, count, and details
- Users status, count, and details

:::hint{type="warning"}
**Important**: To receive meaningful test results, the LDAP server must be connected to the network.
:::

# Test an LDAP Provider

**To test an LDAP provider:**

1. Navigate to **System&#x20;***>&#x20;***LDAP/AD Auth**.&#x20;
   The *Authentication Providers* pane appears.
2. Click the **Action menu** next to a provider and select **Test**. The *Provider Test Result&#x20;*&#x64;ialog box appears detailing the test results.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GNQJb2MKhb-wEmSm3XMAQ_testprovider.png "The test function for authentication providers")



# View Groups and Users details

You can view information on Groups and Users from the *Provider Test Result* dialog box. To view the information, click the **Info&#x20;**&#x69;con in the *Groups&#x20;*&#x6F;&#x72;*&#x20;Users&#x20;*&#x73;ection. The details for the users or groups configured on the LDAP server drop down.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EpmFzdRlpnE-UkpUjPfJS_image.png" size="80" width="809" height="560" caption="The Provider Test Result dialog box" position="center" showCaption="true"}

Details for Groups include (for each listed group):

- DN
- Group ID
- Group Name
- Users DN, Group ID and Group Name

Details for Users include (for each listed user):

- DN
- Group ID
- First Name
- Last Name

# Test an LDAP Provider Configuration

**To test an LDAP provider configuration:**

1. From the *Authentication Providers* pane, click the **Actions&#xA0;**&#x6E;ext to a provider and select **Configure**.
2. Click **Test**.&#x20;
   The *Update Provider&#x20;*&#x64;ialog box changes to include test results for the selected provider.&#x20;



[title] Manage API Accounts
[path] Product Features/System/Tokens/

You can manage API accounts by navigating t&#x6F;**&#x20;System&#x20;**>**&#x20;Tokens**.&#x20;

You can click the **Enabled&#x20;**&#x74;oggle to enable or disable the account.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3N1UxXr5p2D1v8uBdq2SW_image.png "The Enabled toggle for REST API accounts")

You can click the **Action menu** for an account to access management options.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mkuxINBEG-3niSbWSrqAn_image.png "Action menu options for REST API accounts")

- **Edit topics**: See the *Add Topics to Accounts&#x20;*&#x73;ection below.&#x20;
- **View API Key**: You can view and copy the API Key.&#x20;
- **Reset Account**: If you reset the account, all settings and modifications are deleted.
- **Delete Account**: If you delete the account, all settings and modifications are deleted.

# Add Topics to Accounts

You can add one or more *Read&#xA0;*&#x6F;r a *Write&#xA0;*&#x54;opics to a an API account.

**To add topics to accounts:**

1. From the *System > Tokens* pane, click the **Actions menu&#x20;**&#x6E;ext to a selected account and select **Edit topics**.
   The account form drops down.
2. Perform one or both of the following:
   - From the *Read Topics***&#xA0;**&#x73;ection, enter a name in the **Topic Name&#xA0;**&#x66;ield, and then click **Add Read Topic**.
   - From the *Write Topics***&#xA0;**&#x73;ection, enter a name in the **Topic Name&#xA0;**&#x66;ield, and then click **Add Write Topic**.
3. Repeat as needed.
4. When you are done adding topics, click **Update**.
5. Click **OK**.


[title] Add an OPC UA Client Connection
[path] Product Features/OPC UA Server/Connections/

You can connect a new client to the OPC UA server. The following procedure uses UAExpert on Windows 10 as the example client.

If you are using the Docker version of Litmus Edge and having issues connecting to the OPC UA server, refer to [Issues Connecting to OPC UA Server](docId\:X_G5VuJbUpZPs26wYsuxM).&#x20;

# Before You Begin

Before completing the steps below, make sure you do the following:&#x20;

- Add nodes to the OPC UA Hierarchy. See [Add a Node](docId:-_FS_awS0Vp6VRHvRmuiZ) or [Import Nodes](docId:_a9eDbY61Uw7-e1UMp2fR) for more information.
- Start the OPC UA Server. See [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe) for more information.
- Run your server on port 4840. See [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe) for more information.

# Connect a Client with UAExpert

**To connect a client with UAExpert:**

1. [Download UAExpert from Unified Automation](https://www.unified-automation.com/downloads/opc-ua-clients.html).
2. Open UAExpert. Click the **Add Server&#x20;**&#x62;utton at the top.&#x20;
   The *Add Server* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pItcTf7srEnTvfiWoND-x_addserverconnectionuaexpert1.png" size="80" width="450" height="200" caption="Add server icon" position="center" showCaption="true"}
3. From **Custom Discovery**, double click to add a server.
4. From the **Enter URL&#xA0;**&#x64;ialog box, enter the Litmus Edge IP address with the ocp\:tcp\:// protocol on port 4840. For example: `ocp.tcp://192.168.1.130:4840`.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/J74x9M4JlryZPq9SIaReS_addcustomserver.png" size="80" width="872" height="425" caption="Enter URL dialog box" position="center" showCaption="true"}
5. Click **OK**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JL6NcLBpEtWlWqzqGv4l2_finalclientconnection.png" size="80" width="966" height="723" caption="The OPC UA server listed in the Add Server dialog box" position="center" showCaption="true"}

The UA Expert client should automatically discover your OPC UA server.


[title] Manage OPC UA Authentication
[path] Product Features/OPC UA Server/Management/

You can configure authentication options for the OPC UA server by navigating to **OPC&#x20;**>**&#x20;Management**.

OPC UA server supports the following identity tokens for authentication:

- **Anonymous**: The server does not have user information and cannot identify them.
- **Certificate**: The server can identify users by security certificates generated by hash algorithms.
- **Password**: The server can identify users by their password.

You can enable multiple identity types and choose authentication options for them.

:::hint{type="warning"}
**Important**:&#x20;

- Choosing security policies for identity tokens ensures that the server encrypts authentication messages.
- Selections in the *Authentication Management&#x20;*&#x73;ection must match the selections in the *Policies&#x20;*&#x73;ection or the server will not start.
:::

# Select Security Policies

**To select security policies:**

1. Navigate to **OPC&#x20;**> **Management**.&#x20;
2. From the *Management panel*, refer to the *Authentication management* section and click the **Enable&#x20;**&#x74;oggle next to one or more identity tokens: **Anonymous**, **Certificate**, and **Password**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VHLEPtZRPNX6IUeSX4Jxs_authenticationmanagementoptions.png "The Authentication management section")
3. For each enabled token section, select check boxes for authentication options.
4. [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe) to learn more.&#x20;


[title] Create a Cloud Storage Sync Job
[path] Product Features/System/External Storage/Cloud Storage Sync/

:::hint{type="info"}
**Note**: Cloud Storage Sync is available for Litmus Edge version 3.11.0 and later. Enable the feature from **System&#x20;**> **Support&#x20;**> **Features**.&#x20;
:::

You can create Cloud Storage sync jobs by navigating to **System&#x20;**> **External Storage** > **Cloud Sync**.&#x20;

# Before You Begin

Before you can start leveraging Cloud Storage Sync, you will need to do the following:

- Enable Cloud Storage Sync feature
- Set up source directory.&#x20;

See [Cloud Storage Sync](docId\:QRkh9E2HnyzNw-mDyEblO) to learn more. &#x20;

# Create Cloud Storage Sync Job

:::hint{type="info"}
**Note**: You can schedule the sync job to run at periodic intervals. Any file in the local directory that is newly added or modified between the intervals will be transferred to the cloud at the next interval. Any file that was not transferred successfully at the last interval will be transferred again at the next interval.
:::

**To create a cloud storage sync job:**

1. Navigate to **System&#x20;**> **External Storage** and click the **Cloud Sync** tab.&#x20;
2. Click **Add sync job**.&#x20;
   The *Edit Cloud Sync Job* dialog box displays.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8OyW-mZ7rAcopCMM51Dtl_addsyncjob.png" size="100" width="995" height="437" position="center" caption="Add sync job link" showCaption="true" indent="2"}

3. Enter a name for the job.&#x20;
4. Select a provider for the job:**&#x20;AWS S3** or **Azure Blob Storage**.&#x20;

Configure the parameters for the provider.&#x20;

## AWS S3

- **Region**: Enter the region name. See [Amazon Simple Storage Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/s3.html) to learn more.&#x20;
- **Access key ID**: Enter the appropriate access key ID. See [AWS security credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html) to learn more.&#x20;
- **Secret access key**: Enter the appropriate secret access key. See [AWS security credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html) to learn more.&#x20;
- **Source**: Enter the file path to the local directory. For example: `/var/lib/customer/ftp-data/s3-sync`. Make sure you have started the Litmus Edge FTP server and created the necessary folders for the file path. See [Set Up Source Directory](docId\:QRkh9E2HnyzNw-mDyEblO) to learn more.&#x20;
- **Destination**: Enter the remote S3 bucket name.&#x20;
- **Transfer mode**: Select a transfer mode: **Copy&#x20;**&#x6F;r **Move**.&#x20;
- **Run every**: Configure the time interval for the sync job in minutes or hours.&#x20;

## Azure Blob Storage

- **Storage Account Key**: Enter the access key. See the following resources to learn more.&#x20;
  - [Security recommendations](https://learn.microsoft.com/en-us/azure/storage/blobs/security-recommendations)
  - [About Azure Key Vault ](https://learn.microsoft.com/en-us/azure/key-vault/general/overview)
- **Storage Account Name**: Enter the storage account name.&#x20;
- **Source**: Enter the file path to the local directory. For example: `/var/lib/customer/ftp-data/s3-sync`. Make sure you have started the Litmus Edge FTP server and created the necessary folders for the file path. See [Set Up Source Directory](docId\:QRkh9E2HnyzNw-mDyEblO) to learn more.&#x20;
- **Destination**: Enter the Azure Blob Storage container name.&#x20;
- **Transfer mode**: Select a transfer mode: **Copy&#x20;**&#x6F;r **Move**.&#x20;
- **Run every**: Configure the time interval for the sync job in minutes or hours.&#x20;

When done configuring the provider, click **Save**.&#x20;

Once the job is created, you can enable or disable it. To manage the job, you must disable the job first.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GlM6XEZ3VhhF5qpfaNcbu_image.png "Enable/Disable status for sync jobs")


[title] Manage Roles
[path] Product Features/System/Users/

:::hint{type="info"}
**Note**: Role-based access control (RBAC) is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

After you add roles, you can manage them by navigating to **System&#x20;**> **Users&#x20;**&#x66;rom the **Roles&#x20;**&#x74;ab.&#x20;

# Search for an Existing Role

You can use the search bar from the *Roles&#x20;*&#x74;ab to search for existing roles.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ux-lTOADHedq2-WFfrVNo_image.png" size="80" width="730" height="668" caption="The search bar for existing roles" position="center" showCaption="true"}

# Manage Existing Roles

You can use the **Action menu&#x20;**&#x66;or a role to manage it.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TZIM7daP9yz3hD2xcRqFk_image.png "The Action menu for a role")

- **Edit**: Update the name and user permissions for the role. See [Role Permissions](docId\:uO7n5qVXgtE412BQNFzUT) for more information.&#x20;
- **Delete**: Remove the role from the *Roles&#x20;*&#x74;ab.&#x20;


[title] Configure a Shared Folder Network Path in Windows 10
[path] Product Features/System/External Storage/Network Storage/Set up a CIFS Mount Point on Windows 10/

Configuring the network path manually makes it easy to have a shared folder be stored anywhere on Windows 10. If you want your shared folder on the Desktop, for example, it is best to set a custom network path so it is easier to remember.

:::hint{type="info"}
**Note**: When accessing the folder from Litmus Edge, or elsewhere on the network, make sure that you use the full network path of the shared folder. You can find this information in folder properties and configure a custom network path with *Advanced Sharing*.
:::

**To view and configure a shared folder network path in Windows 10:**

1. Create a folder that will be used for sharing on the network. In this example, the folder is *MyFolder*.&#x20;
2. Right-click the folder, then click **Properties**. Here you can see the full network path to use if you want to access the shared folder through the network. Make sure to share the folder with the **Share** button, if you have not already done so.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9sGhY8dOYoDKuj0sxxFCH_myfolderproperties1.png" size="50" width="386" height="475" caption="Folder properties dialog box" position="center" showCaption="true"}
3. Click **Advanced Sharing** to set a custom network path.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9UYIDFgViwYhzo7xp938g_advancedsharing.png" size="50" width="353" height="363" caption="Advanced Sharing dialog box" position="center" showCaption="true"}
4. **Share this folder** if it is not already checked.
5. Click **Apply**, then click **OK**.&#x20;
   You can see the updated network path in the folder properties. It should be much shorter and more usable.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Hg0V0NSZUAfjRZNwADB_b_image.png" size="50" width="386" height="475" caption="Updated Network Path" position="center" showCaption="true"}


[title] LDAP and AD User Interface Examples
[path] Product Features/System/LDAP/AD Auth/

The following examples can be used to set up the LDAP Active Directory and LDAP rfc2307bis.

# Form Example

The following form examples are Active Directory and LDAP rfc2307bis.&#x20;

## Active Directory

```Text

const PROVIDER_CONFIG = {
  name:              'openldap',
  type:              'ldap2307bis',
 
  host:              'ldap.example.com',
  port:              389,
  tls:               false,
  bindDN:            'cn=system,dc=example,dc=com',
  bindDNPassword:    'password',
 
  userSearchBaseDN:  'ou=People,dc=example,dc=com',
  userSearchScope:   'sub',
  userFilter:        '(objectClass=posixAccount)',
  userAttrID:        'uidNumber',
  userAttrUsername:  'uid',
  userAttrFirstName: 'givenName',
  userAttrLastName:  'sn',
 
  groupSearchBaseDN: 'ou=Groups,dc=example,dc=com',
  groupSearchScope:  'sub',
  groupFilter:       '(objectClass=posixGroup)',
  groupAttrName:     'cn',
  groupAttrUser:     'dn',
  groupAttrType:     'member'
};
```

## LDAP rfc2307bis



```Text

const PROVIDER_CONFIG = {
  name:              'openldap',
  type:              'ldap2307bis',
 
  host:              'ldap.example.com',
  port:              389,
  tls:               false,
  bindDN:            'cn=system,dc=example,dc=com',
  bindDNPassword:    'password',
 
  userSearchBaseDN:  'ou=People,dc=example,dc=com',
  userSearchScope:   'sub',
  userFilter:        '(objectClass=posixAccount)',
  userAttrID:        'uidNumber',
  userAttrUsername:  'uid',
  userAttrFirstName: 'givenName',
  userAttrLastName:  'sn',
 
  groupSearchBaseDN: 'ou=Groups,dc=example,dc=com',
  groupSearchScope:  'sub',
  groupFilter:       '(objectClass=posixGroup)',
  groupAttrName:     'cn',
  groupAttrUser:     'dn',
  groupAttrType:     'member'
};
```

More examples for Active Directory filter can be found at [Active Directory](http://adfilters.blogspot.com/2015/03/active-directory-ldap-filter-querys.html).&#x20;

# Field Definitions

| **Definition**               | **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name                         | Name of this connector.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Type                         | The connector type. Only the Generic type is currently supported.                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Connection                   | These fields are attributes of the server connection.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Host                         | Domain name or IP address of the LDAP host.&#xD;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Port                         | The LDAP port.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| Use TLS                      | Enable or disable LAPS protocol for a secure connection. TLS settings should match the port. LDAP servers use port 389 for LDAP protocol and port 636 for LDAPS protocol. The connection fails if port 389 is specified and the Use TLS option is enabled.&#xD;&#xA;&#xD;&#xD;&#xD;                                                                                                                                                                                                                                                           |
| Bind DN                      | Account used to connect to the LDAP server (only requires read and browse permissions). The distinguished name of the account used for accessing LDAP server. An anonymous connect is used of Bind DN is not specified.                                                                                                                                                                                                                                                                                                                       |
| CA Certificate Chain         | Trusted root certificate chain (only required if private CA is used by the server). <br />* The CA Certificate Chain file is only available if the **Use TLS&#xA0;**&#x6F;ption is selected.
* The CA Certificate Chain field can be left blank if the server certificate is issued by a public CA.
* Private root certificates can be added to the trusted store using **System** >**&#x20;Certificates**. In this case, the CA Certificate Chain field can be left blank.                                                                   |
| Bind DN Password             | Password for Bind DN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Users                        | These attributes are used to find user accounts in the LDAP server.                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| User Search Base DN          | Distinguished name of the entity where search for users starts&#xD;.                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Search Scope                 | The Search Scope is an option. sub, one or base indicate the search scope (sub is the default).<br />* **sub&#xA0;**&#x69;s used to indicate searching of all entries at all levels under and including the specified base DN.
* **one&#xA0;**&#x69;s used to indicate searching all entries on level under the base DN. This does not include the base DN and any entries under that one level under the base DN.
* **base&#xA0;**&#x69;s used to indicate searching only the entry being returned. It must meet the search filter criteria. |
| User Search Filter           | The LDAP filter used to identify user accounts.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Attribute for Unique User ID | LDAP attribute to uniquely identify a user. The typical value is uidNumber for rfc2307 and object GUID for AD&#xD;.                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Attribute for Username       | An LDAP attribute containing the username for logging in. It is usually uid for sAMAccountName for AD&#xD;.                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Attribute for First Name     | An LDAP attribute that contains the first name of the user. The default value is givenName.&#xD;                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Attribute for Last Name      | An LDAP attribute contains the last name of the user. The default value is sn&#xD;.                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Groups                       | These attributes are used to find groups in the LDAP server. User roles are derived from group names. For example, administrator is matched against Litmus Edge user roles.                                                                                                                                                                                                                                                                                                                                                                   |
| Group Search Base DN         | The distinguished name of the entity where search for group starts.                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Group Search Filter          | The LDAP filter used to identify user groups&#xD;.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Group Name Attribute         | The attribute name containing the group name (usually cn)&#xD;.                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Group Membership Attribute   | The attribute name that contains the list of group members (usually member)&#xD;. <br />* The most common group membership scheme is when the group object contains multiple member attributes that contain the DN name of the member account.&#xD;&#xA;&#xD;
* However, there is an old rfc2703 standard that uses the reverse mechanism when the user object contains a list of group names.&#xD;&#xA;&#xD;
* The old rfc2703 standard is not supported by the Generic connector.&#xD;&#xA;&#xD;                                            |
| Member value type            | The type of the member value (values are dnor uid). This attribute is case sensitive.                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Test                         | These values are used for testing connectivity.&#xD;&#xA;&#xD;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| UserID                       | The userid.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Password                     | The password.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

# Test Failure

If the test fails, you should receive a detailed message about the reason for failure. Here is a list of a few possible failure reasons:

- **Unable to connect to the server**: Wrong address/DNS name or port of the of the LDAP host.
- **Protocol mismatch**: Connecting with TLS to the port that doesn't support authentication.
- **Certificate validation failure**: Missing or invalid rootCA.
- **User not found**: Indicates broad range of possible problems like invalid search path, invalid filter, or invalid attributes for username or userid.
- **User attribute not found**: When one of the user attributes is either missing or empty.
- **Group not found**: If search path, scope, or filter are invalid.
- **Group attribute not found**: If any of the group attributes is empty or missing.
- **Authentication failure**: If authentication fails, this usually means invalid username or password.
- **Authorization failure**: Means that returned set of scopes does not match those of the requested role.

:::hint{type="info"}
**Note**: The **Save&#xA0;**&#x62;utton is only available if the test successfully completes.
:::


[title] LDAP/AD Auth
[path] Product Features/System/

The *LDAP/AD Auth* pane allows you to add and manage LDAP and AD authentication providers.

LDAP (Lightweight Directory Access Protocol) provides centralized services for login authentication and storage of / access to usernames and passwords within a network directory. LDAP uses group mechanisms to facilitate user authentication management.

The AD (Active Directory) service authenticates users and devices in a Windows or UNIX-based domain network, and verifies permissions to determine the user access level at login.

Each Litmus Edge instance contains a default user registry for authentication and authorization. LDAP and AD settings allow you to integrate the Litmus Edge login system with an external authentication registry. For example, this external registry might be the username and password combinations for your company network. You can add multiple LDAP Authentications.

Litmus Edge supports:

- Active Directory (AD)
- LDAP directories using the RFC2307/2307bis schema
- Other LDAP directories through direct attribute mapping

Review the [Set Up LDAP Using an OpenLDAP Container](docId\:qWV0s8nT5zVIaXw9E7SIr) how-to guide.&#x20;

# Access LDAP/AD UI

**To access the LDAP/AD pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **System&#x20;**>**&#x20;LDAP/AD Auth**.
   The *Authentication Providers&#x20;*&#x70;ane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uI17lXH2SzDSL07934ait_image.png" size="80" width="1265" height="603" caption="The LDAP/AD Auth pane" position="center" showCaption="true"}

# Next Steps

- [Add an LDAP/AD Provider](docId\:BbwHKkp2B4zILtGKg2hx-)&#x20;
- [Log in with Authentication](docId\:M5thw1E_85AzMnr97U_we)&#x20;
- [Test a Provider](docId\:LiTt3IykogD2v4T49hONE)&#x20;
- [Manage LDAP Providers](docId\:wgRdPfo4Si0EboUPRwv11)
- [Find LDAP Distinguished Names (DN)](docId\:tlK7Z9mFyA_FfUizugRVR)
- [LDAP and AD User Interface Examples](docId\:iU8DB9WuW_OKeLoN74fqV)&#x20;


[title] Create a Shared Folder in Windows 10
[path] Product Features/System/External Storage/Network Storage/Set up a CIFS Mount Point on Windows 10/

To expand the storage pool for your enterprise, you must make a shared folder. If you have issues completing these steps, refer to the "Troubleshooting" section below.&#x20;

# Before You Begin

Before completing the steps below, make sure you do the following:&#x20;

- Set up a remote storage location.
- Verify you have admin/root permissions to create shared folders.

# Create a Shared Folder in Windows 10

**To create a shared folder in Windows 10:**

1. Log in to Windows 10 as a user with admin permissions and create a new folder. This example uses `C:\SharedFolder`.
2. In the File Explorer, right click the folder and select: **Give access to > Specific people...**
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ye6pxaaPt9bVc8c-XTorP_windowsgiveaccess.png" size="80" width="700" height="300" caption="Give access to specific people option" position="center" showCaption="true"}
3. Use the drop-down menu to share the folder with **Everyone**. Click **Share**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/u8Mz-ESfz67O_Iqy4tZh0_giveeveryoneaccess.png" size="80" width="565" height="474" caption="Choose people to share with dialog box" position="center" showCaption="true"}
4. To check if the folder is shared properly, open **File Explorer** and type `\\localhost` into the top bar. The folder appears if it is set up correctly.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_3kiP8hwNvZOUGIK8JJRb_localhost2.png" size="80" width="406" height="150" caption="localhost path" position="center" showCaption="true"}

# Troubleshooting

If you encounter issues, make sure you have SMB 1.0/ CIFS File Sharing support enabled in the Windows Features settings. Refer to the steps below.&#x20;

## Activate SMB 1.0/CIFS in Windows 10

**To activate SMB 1.0/CIFS in Windows 10:**

1. Search *Windows Features* in the Windows 10 search bar.
2. Click **Turn Windows features on or off**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zg4ksuRZjSbKotI8HvCFy_windowsfeatures1.png" size="50" width="391" height="678" caption="Turn Windows features on or off option" position="center" showCaption="true"}
3. Click the **SMB 1.0/CIFS File Sharing Support** checkbox to activate all of the CIFS services on Windows 10, and then click **OK**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AF5v_0lVNEMM9bMYc5RdS_windowsfeatures2.png" size="60" width="443" height="358" caption="The SMB 1.0/CIFS Fire Sharing Support check box" position="center" showCaption="true"}


[title] Import Nodes
[path] Product Features/OPC UA Server/Hierarchy/

You can import nodes from your DeviceHub configuration by navigating to **OPC&#x20;**>**&#x20;Hierarchy**.

:::hint{type="info"}
**Note**: The imported nodes merge with the existing hierarchy rather than replace it.
:::

# Import Nodes

**To import nodes:**

1. Navigate to **OPC&#x20;**> **Hierarchy**.&#x20;
2. From the *Hierarchy* pane, click the **Import from DeviceHub** icon.&#x20;
   A *Confirmation&#x20;*&#x64;ialog box appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mNrfauDr8TT8X8jfQAq_v_importfromdevicehubicon.png" size="100" width="1405" height="354" caption="The Import from DeviceHub icon" position="center" showCaption="true" indent="2"}

3. Click **Yes**.&#x20;
4. Click the **Save&#x20;**&#x69;con to save your changes.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Hhs1uwLwbIULoJRnvNmdb_savenodeicon.png" size="100" width="1405" height="354" caption="The Save node icon" position="center" showCaption="true" indent="2"}

# Restart OPC UA server

After importing nodes, you must restart the OPC UA server. See [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe) to learn more.&#x20;


[title] Manage Network Devices
[path] Product Features/System/Network/

:::hint{type="info"}
**Note**: If you are on Litmus Edge version 3.5.6 or earlier, the Wi-Fi pane is a separate menu item Under **System&#x20;**&#x69;n the navigation panel. See [Wi-Fi](docId:2sixPCXY1wBRu8tkb4pmi) to learn more.&#x20;
:::

You can manage network devices by navigating to **System** >**&#x20;Network&#x20;**> **Wi-Fi**.&#x20;

Litmus Edge Wi-Fi uses WPA for authentication to ensure a secure wireless network.

:::hint{type="info"}
**Note**: The *Wi-Fi&#x20;*&#x74;ab only appears if the applicable device supports Wi-Fi.
:::

# Before You Begin

Make sure you have configured the wlan0 network interface. See [Configure Network Interfaces](docId\:VZke6BcTDXbG0WsyrEZNf) for more information.

# Connect a Device

**To connect a device:&#x20;**

1. Navigate to **System&#x20;**> **Network&#x20;**&#x61;nd click the **Wi-Fi&#x20;**&#x74;ab.&#x20;
2. Click **Networks&#x20;**&#x6F;n the the network device tile, select a network from the drop-down list, and then click **Join**. You can enter the name of the network (SSID) into the **Enter SSID&#xA0;**&#x66;ield to quickly find a network.
   The *Wireless Password* dialog box appears.&#x20;
3. Enter a password for the wireless network in the **Password&#xA0;**&#x66;ield, and then click **Connect**.

The state on the device tile displays CONNECTED.

# Disconnect a Device

To disconnect a device, navigate to th&#x65;*&#x20;Wi-Fi&#x20;*&#x20;tab and click **Disconnect**.&#x20;


[title] Wi-Fi
[path] Product Features/System/

:::hint{type="info"}
**Note**: If you are on Litmus Edge version 3.11.0 and later, the Wi-Fi pane is available by navigating to **System&#x20;**> **Network&#x20;**&#x61;nd clicking the **Wi-Fi&#x20;**&#x74;ab.&#x20;
:::

The Wi-Fi option in the navigation panel only appears if your edge device supports Wi-Fi.

From the *Wi-Fi&#xA0;*&#x70;ane, you can select a network for your edge device to allow a connection. You can also disconnect any device that appears on the Wi-Fi pane.

Litmus Edge Wi-Fi uses WPA for authentication to ensure a secure wireless network.

You must configure the wlan0 network interface in the *Interfaces&#xA0;*&#x74;ab on the Network pane before it appears in the Navigation panel.

# Manage Network Devices

You can manage network devices by navigating to **System** >**&#x20;Wi-Fi**.&#x20;

Litmus Edge Wi-Fi uses WPA for authentication to ensure a secure wireless network.

:::hint{type="info"}
**Note**: The *Wi-Fi&#x20;*&#x6F;ption only appears in the Navigation panel if the applicable device supports Wi-Fi.
:::

## Before You Begin

Make sure you have configured the wlan0 network interface. See [Configure Network Interfaces](docId\:VZke6BcTDXbG0WsyrEZNf) for more information.

## Connect a Device

**To connect a device:&#x20;**

1. Navigate to **System&#x20;**> **Wi-Fi**.&#x20;
2. From the *Wi-Fi* pane, click **Networks&#x20;**&#x6F;n the the network device tile, select a network from the drop-down list, and then click **Join**. You can enter the name of the network (SSID) into the **Enter SSID&#xA0;**&#x66;ield to quickly find a network.
   The *Wireless Password* dialog box appears.&#x20;
3. Enter a password for the wireless network in the **Password&#xA0;**&#x66;ield, and then click **Connect**.

The state on the device tile displays CONNECTED.

## Disconnect a Device

To disconnect a device, navigate to th&#x65;*&#x20;Wi-Fi&#x20;*&#x70;ane and click **Disconnect**.&#x20;


[title] Manage FTP Users
[path] Product Features/System/Services/

You can manage FTP Users by navigating to **System&#x20;**>**&#x20;Services**.&#x20;

You can click the **Enable&#x20;**&#x74;oggle for an FTP user in the *FTP Service* section to enable or disable the user.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EpZq2aMOUqRgkdZFAKHkP_image.png "The Enable toggle for FTP Users")

You can click the **Action menu** for an FTP user to access management options.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FStrxlqTRlo4vJixD5kcu_image.png "Action menu for FTP users")

- **Reset Password**: After resetting a password, click the **Copy&#x20;**&#x69;con next to the password and save it to a text file to send to the user. Save the password in a safe place. The user cannot use the user account without this password.
- **Remove User**: You can remove a user from the FTP user list.&#x20;


[title] Users
[path] Product Features/System/

The *Users* pane allows you to add and manage permissions for your edge device's users.&#x20;

# Relationship of Roles, Groups, and Users

:::hint{type="info"}
**Note**: Role-based access control (RBAC) is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

Litmus Edge incorporates a Role-based access control (RBAC) to customize user permission settings in the form of three distinct components.

- **Roles**: Each role has a collection of customizable permissions. Roles are added to groups and determine the permissions groups have. See [Role Permissions](docId\:uO7n5qVXgtE412BQNFzUT) for details.&#x20;
- **Groups**: A group is made up of one or more roles. The roles in a group determine the permissions for the group.&#x20;
- **Users**: Accounts that will be assigned to groups. The one or more groups a user is assigned to determines the roles and permissions the user has.

Working together, a *Role&#x20;*&#x64;etermines the permission settings a *Group&#x20;*&#x77;ill have. A *Group&#x20;*&#x77;ill contain one or more roles that determines its permissions. A *User&#x20;*&#x77;ill be assigned to a *Group&#x20;*&#x77;here it will have access to Litmus Edge based on the the Group's one or more *Roles*.

:::hint{type="warning"}
**Important**: The following properties should be kept in mind when adding/editing Roles/Groups/Users.

- A group can receive more than one role (and their respective permission settings) to a resource.
- A user can be assigned to multiple groups.
- If a user is not assigned to at least one group, they will not be able to log in to Litmus Edge.&#x20;
- In the case of conflicting permission settings: As long as there is at least one role or group with permissions to a resource, regardless of how many other roles/groups that don't have it, users will receive that resource.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5kJHdGV18bL1-3UvqROP6_image.png" size="80" width="804" height="322" caption="Visual representation of roles, groups, and users" position="center" showCaption="true"}

# Default Roles, Groups, and Users

By default, the following user management items are provisioned that can't be deleted.&#x20;

**Roles**

- Administrator
- Viewer

**Groups**

- Administrators
- Viewers

**User**

- admin

The system ensures that at least one user has the appropriate administrative permissions to manage roles, groups, and users.&#x20;

# Default User Permissions

By default, every user has the permission to accept the Litmus Edge end-user license (EULA) when logging in the first time. Users can also access their user profile to view their current user permissions and change their password. See [Manage Your User Profile](docId\:gTmD3l5p8vWEeCUwl21tx) for details.&#x20;

Every user also has the *View&#x20;*&#x70;ermission for the following components when navigating to the *System&#x20;*&#x6D;odule in Litmus Edge.&#x20;

- Info
- Certificates
- Network
- Remote Access
- Device Management
- Services
- External Storage
- Policy Management
- License
- Support&#x20;

Learn more about [Role Permissions](docId\:uO7n5qVXgtE412BQNFzUT).&#x20;

# Backup Files and Templates

All role, group, and user configurations are included in backup files. See [Backup/Restore](docId\:Q_mfOXtLO2fAHvHW1JcEf) and [Backup File Contents and File Management](docId\:q6Abk1gtv_I0EILNedOk_) for more information.&#x20;

In template files, only authentication providers are included in template configurations. If you apply a template to a new edge device, you will need to map LDAP groups manually. See [Manage LDAP Providers](docId\:wgRdPfo4Si0EboUPRwv11) for more information.&#x20;

# Legacy User Migration

For Litmus Edge instances on version 3.2 and earlier, there were three possible roles: Observer, Developer, and Administrator. When you upgrade to version 3.3 or later:

- Any Administrator role is automatically provisioned to the Administrators group with the group's respective permissions.&#x20;
- Observer and Developer roles are automatically provisioned to the Viewers group with the group's respective permissions.&#x20;

# Access Users UI

:::hint{type="info"}
**Note**: You must have the appropriate permissions to manage roles, groups, and users. By default, the first user (admin user) provisioned in Litmus Edge has these user permissions.&#x20;
:::

******To access the U****sers UI:**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **System&#x20;**> **Users**.
   The *Users&#x20;*&#x70;ane appears. The *Roles&#x20;*&#x74;ab displays by default. You can switch to the *Groups&#x20;*&#x61;nd *Users&#x20;*&#x74;abs.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5EKyNX1Nj-D3qsR-7rNMO_usersui.png "The Users pane")

# Next Steps

- [Add a Role](docId\:dazL05SzpwAIghSGgzGWm)&#x20;
- [Manage Roles](docId\:eF9lAFXybKEEz_TeXkouB)&#x20;
- [Add a Group](docId\:Mw1LRjWoqzQc9lMW-e4L6)&#x20;
- [Manage Groups](docId\:w7_PXV1hJT6PFuD69xZuG)&#x20;
- [Add a User](docId\:ZAQkctsyRM2oGPIiSvwY9)&#x20;
- [Manage Users](docId\:jrIuN6tXa-Awv1mJZPmqz)&#x20;
- [Manage Your User Profile](docId\:gTmD3l5p8vWEeCUwl21tx)&#x20;
- [Role Permissions](docId\:uO7n5qVXgtE412BQNFzUT)&#x20;


[title] MQTT - Generic over SSL
[path] Product Features/Integration/Integration Connectors/Message Brokers/

Review the [Generic MQTT Over SSL Integration Guide (Mosquitto)](docId\:sAFR6wpbZKfzUj6bxOP9S).&#x20;

## Overview

MQTT SSL integration enables an Edge System to connect with an MQTT broker using SSL authentication.

## Supported Versions

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

## Supported Communication

- Outbound (Publish data from Edge to MQTT Broker) - Yes
- Inbound (Subscribe data from MQTT Broker to Edge) - Yes

## Configurations

| **Variable**           | **Detail**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | **Required** |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                   | Enter a name for the connector                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Yes          |
| Hostname               | IP Address or Server FQDN of MQTT broker (Must be reachable from the Edge system)                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Yes          |
| Port                   | MQTT broker port                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | Yes          |
| CA certificate         | It is a digital certificate issued by a trusted Certificate Authority and is used to authenticate the identity of servers or entities in an SSL/TLS connection.                                                                                                                                                                                                                                                                                                                                                                                               | No           |
| Certificate            | SSL certificate                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | No           |
| Private key            | SSL certificate private key                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | No           |
| Client id              | Unique client identity                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | No           |
| Username               | Enter the username                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | No           |
| Password               | Enter the user password                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | No           |
| QoS                    | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration.                                                                                                                | Yes          |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br />As an example, in Mosquitto, you have the following settings:<br />* max\_queued\_messages (default 100)
* max\_queued\_bytes (default 0)<br />As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes          |
| Integration topic      | Default topic for publishing or subscribing                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | No           |
| LWT topic              | It refers to the specific topic where the last will message will be published.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | No           |
| LWT payload            | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message.                                                                                                                                                                                                                                                                                                                                                                                | No           |
| LWT payload type       | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                               | No           |
| LWT QoS                | A QoS value for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | No           |
| LWT retained           | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message.                                                                                                                                                                                                                                                                                                                                                                                                               | No           |
| Throttling limit       | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                                                                                                                                                                                                                                                                        | No           |
| Persistent storage     | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                                                                                                                                                                                                                                                                         | No           |
| Queue mode             | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                                                                                                                                                                                                                                                                          | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product                  | Version | Date         |
| ------------------------ | ------- | ------------ |
| Mosquitto Message Broker | 1.x     | Nov 14, 2019 |
| HiveMQ                   | 2.x     | Nov 14, 2019 |


[title] Manage Custom CA Certificates
[path] Product Features/System/Certificates/

You can manage custom CA certificates by navigating to **System&#x20;**> **Certificates** and clicking the **Custom CA Certificates** tab.&#x20;

Click the **Action menu&#x20;**&#x66;or a certificate to manage it.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NqqOVZ7qkjNn8VV8kr4iD_image.png "Action menu for a custom certificate")

- **Remove Certificate**
- **Show Details**: Review the following details.&#x20;
  - **Issuer**: The entity issuing the certificate
  - **Not After**: The end date for the certificate
  - **Not Before**: The begin date for the certificate
  - **Subject**: The entity for which the certificate is issued
  - **Signature Algorithm**: The algorithm type used
  - **Trust Chain**: Verification that the sender and all intermediate certificates are trustworthy


[title] Role Permissions
[path] Product Features/System/Users/

:::hint{type="info"}
**Notes**:&#x20;

- Role-based access control (RBAC) is available for Litmus Edge version 3.3.1 and later.
- If a role has a *Modify&#x20;*&#x70;ermission, any relevant *View&#x20;*&#x70;ermission will be automatically added to the role as well.&#x20;
- For Litmus Edge version 3.11.0 and later, click **Individual Permissions** for *DeviceHub&#x20;*&#x6F;r *Flows Manager* to view granular permissions for each component.&#x20;
:::

Review the available role permissions and the specific areas of Litmus Edge they can view/modify.&#x20;

There are several default permissions that apply to all users. See the "Default User Permissions" section in [Users](docId\:Tls9-yYfMMtuyr9lRmpPD) for details.&#x20;

| **Resource Name**                                                                                                    | **Permission**   | **Access to Litmus Edge Modules**                                                                                                                                                                                                                                                                                                          |
| -------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Access<br />(Provides access to data from external systems)                                                          | View             | Read-only access to:<br />* System > Tokens<br />Can view created tokens in System > Tokens                                                                                                                                                                                                                                                |
| Access<br />(Provides access to data from external systems)                                                          | Modify           | Can  view and make changes to:<br />* System > Tokens
  - Can add access accounts
  - Can enable/disable NATS Proxy                                                                                                                                                                                                                        |
| Analytics                                                                                                            | Modify           | Can view and make changes to:<br />* Analytics                                                                                                                                                                                                                                                                                             |
| Analytics                                                                                                            | View             | Read-only access to:<br />* Analytics                                                                                                                                                                                                                                                                                                      |
| Auth                                                                                                                 | Modify           | Can view and make changes to:<br />* System > Users
* System > Device Management
* System > LDAP/AD Auth
* System > Tokens                                                                                                                                                                                                                 |
| Cloud Storage Sync                                                                                                   | View             | Read-only access to:<br />* System > External Storage > Cloud Sync                                                                                                                                                                                                                                                                         |
| Cloud Storage Sync                                                                                                   | Modify           | Can view and make changes to:<br />* System > External Storage > Cloud Sync                                                                                                                                                                                                                                                                |
| Datahub                                                                                                              | Modify           | Can view and make changes to:<br />* DataHub<br />Note: This user permission can't enable Data Store                                                                                                                                                                                                                                       |
| Datahub                                                                                                              | View             | Read-only access to:<br />* DataHub                                                                                                                                                                                                                                                                                                        |
| DeviceHub                                                                                                            | Modify           | Can view and make changes to:<br />* DeviceHub > Device Discovery
* DeviceHub > Utilities&#x20;                                                                                                                                                                                                                                            |
| DeviceHub                                                                                                            | Modify Devices   | Can view and make changes to:<br />* DeviceHub > Devices
* DeviceHub > Device Discovery
* DeviceHub > Utilities&#x20;                                                                                                                                                                                                                      |
| DeviceHub                                                                                                            | Modify Tags      | Can view and make changes to:<br />* DeviceHub > Tags<br />Note: This user permission can't enable Data Store or other components for a device                                                                                                                                                                                             |
| DeviceHub                                                                                                            | View             | Read-only access to:<br />* DeviceHub                                                                                                                                                                                                                                                                                                      |
| DeviceHub                                                                                                            | View Devices     | Read-only access to:<br />* DeviceHub > Devices                                                                                                                                                                                                                                                                                            |
| DeviceHub                                                                                                            | View Drivers     | Read-only access to:<br />* DeviceHub > Devices                                                                                                                                                                                                                                                                                            |
| DeviceHub                                                                                                            | View Tags        | Read-only access to:<br />* DeviceHub > Tags                                                                                                                                                                                                                                                                                               |
| Device Management                                                                                                    | Modify           | Can view and make changes to:<br />* System > Device Management
* System > Info
* System > Certificates
* System > Network
* System > Remote Access
* System > Services
* System > External Storage
* System > Policy Management > Change disk space policy
* System > Backup/Restore                                                      |
| Digital Twin                                                                                                         | Modify           | Can view and make changes to:<br />* Digital Twins                                                                                                                                                                                                                                                                                         |
| Digital Twin                                                                                                         | View             | Read-only access to:<br />* Digital Twins                                                                                                                                                                                                                                                                                                  |
| Downloads                                                                                                            | View             | Can do the following:<br />* View status in System > Support > Status > Components
* Download files from System > Support > Support Bundle > Download                                                                                                                                                                                      |
| Events                                                                                                               | View             | Read-only access to:<br />* System > Events                                                                                                                                                                                                                                                                                                |
| FTP Server                                                                                                           | Modify           | Can view and make changes to:<br />* System > Services > FTP Service                                                                                                                                                                                                                                                                       |
| FTP Server                                                                                                           | View             | Read-only access to:<br />* System > Services                                                                                                                                                                                                                                                                                              |
| Flows Manager<br />As of Litmus Edge version 3.11.0, you can select Modify permissions to individual Flows Managers. | Modify           | Can view and make changes to:<br />* Flows Manager
* As of Litmus Edge version 3.11.0, individual Flows Managers.&#x20;                                                                                                                                                                                                                    |
| Flows Manager                                                                                                        | View             | Read-only access to:<br />* Flows Manager<br />Can do the following:<br />* Flows Manager > Go To Flow Definition
* Flows Manager > Download Flow File
* Flows Manager > Got To Flow Definition > Debug messages
* Flows Manager > Go To Flow Definition > Export
* Make changes but can't Deploy in Flows Manager > Go To Flow Definition |
| Integrations                                                                                                         | View             | Read-only access to:<br />* Integration > Click a Connector > Dashboard
* Integration > Click a Connector > Configuration
* Integration > Click a Connector > Topics                                                                                                                                                                       |
| Integrations                                                                                                         | ViewConnectors   | Read-only access to:<br />* Integration > Click a Connector > Configuration                                                                                                                                                                                                                                                                |
| Integrations                                                                                                         | ViewTopics       | Read-only access to:<br />* Integration > Click a Connector > Topics                                                                                                                                                                                                                                                                       |
| Integrations                                                                                                         | Modify           | Can view and make changes to:<br />* Integration                                                                                                                                                                                                                                                                                           |
| Integrations                                                                                                         | ModifyConnectors | Can do the following:<br />* Integration > Add a connector
* Integration > Edit                                                                                                                                                                                                                                                            |
| Integrations                                                                                                         | ModifyTopics     | Can view and make changes to the following:<br />* Integration > Click a Connector > Topics                                                                                                                                                                                                                                                |
| Licensing                                                                                                            | Modify           | Can view and make changes to:<br />* System > License                                                                                                                                                                                                                                                                                      |
| Marketplace                                                                                                          | Modify           | Can view and make changes to:<br />* Applications                                                                                                                                                                                                                                                                                          |
| Marketplace                                                                                                          | View             | Read-only access to:<br />* All Applications pages except for Configure                                                                                                                                                                                                                                                                    |
| Network Discovery                                                                                                    | Modify           | Can view and make changes to:<br />* DeviceHub > Device Discovery                                                                                                                                                                                                                                                                          |
| Network Discovery                                                                                                    | View             | Read-only access to: <br />* DeviceHub > Device Discovery                                                                                                                                                                                                                                                                                  |
| OPC UA Server                                                                                                        | Modify           | Can view and make changes to:<br />* OPC UA                                                                                                                                                                                                                                                                                                |
| OPC UA Server                                                                                                        | View             | Read-only access to:<br />* OPC UA                                                                                                                                                                                                                                                                                                         |


[title] Add a Node
[path] Product Features/OPC UA Server/Hierarchy/

You can manually add nodes to the OPC UA hierarchy by navigating to **OPC&#x20;**>**&#x20;Hierarchy**. &#x20;

# Add a Node

**To add a node:**

1. Navigate to **OPC&#x20;**> **Hierarchy**.&#x20;
2. From *Hierarchy* pane, click the **Add&#x20;**&#x69;con. If a parent node already exists, you can select it prior to clicking the *Add&#x20;*&#x69;con.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NoFMmXYDAOGQuiQRZCqdt_addnodeicon.png "The Add node icon")
3. From the Add node dialog box, select one of the following options:
   - Folder
   - Device
   - Tag
4. Refer to the respective type depending on your selection and enter the details for the node.&#x20;

## Folder

Enter a descriptive name and click **Add**.&#x20;

## Device

Enter a descriptive name and click **Add**.&#x20;

## Tag

:::hint{type="info"}
**Notes**:&#x20;

Topics you enter can come from sources other than DeviceHub devices.&#x20;

- The payload structure for tags must include at least the `value` and `success` strings of JSON objects. For example:
  - `{`
    `"value": 11.11,`
    `"success": true`
    `}`
:::

- **Node name**: Enter a descriptive name.&#x20;
- **Topic**: Enter a topic name.&#x20;
- **Data Type**: Select a data type. Refer to [Data Type Mapping](docId\:F-u01pBVBJTPggjBwbZn4) to learn more.&#x20;

When done configuring the node, click **Add**.&#x20;

After clicking *Add*, click the **Save&#x20;**&#x69;con.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TrvN5hVsKrOfhBB48SvGo_image.png "Save icon for nodes")

# Restart OPC UA server

After saving the new node, you must restart the OPC UA server. See [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe) to learn more.&#x20;


[title] Manage LDAP Providers
[path] Product Features/System/LDAP/AD Auth/

You can manage LDAP Providers by navigating to **System&#x20;**>**&#x20;LDAP/AD Auth**.&#x20;

To manage providers, click the **Action menu** for the provider and select a management option.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lSIzu8BbTGID19JplEjPQ_image.png "Management options for LDAP providers")

- **Configure**: Update the parameters for the provider.&#x20;
- **Map Groups**: You can map user roles to configured LDAP groups. Before you select this option, make sure the LDAP server is connected to the network and users and groups are defined on the LDAP server. The available roles to select are *Not selected*, *administrator*, *developer*, or *observer*.&#x20;
- **Remove**: You can remove the provider from the *Authentication Providers* list.&#x20;
- **Up**: Move the provider one space up the list of authentication providers. As of Litmus Edge version 3.11.0, this option is no longer available.&#x20;
- **Down**: Move the provider one space down the list of authentication providers. As of Litmus Edge version 3.11.0, this option is no longer available.&#x20;
- **Test**: See [Test a Provider](docId\:LiTt3IykogD2v4T49hONE) to learn more.&#x20;


[title] Manage Users
[path] Product Features/System/Users/

:::hint{type="info"}
**Note**: Role-based access control (RBAC) is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

After you add users, you can manage them by navigating to **System&#x20;**> **Users &#x20;**&#x61;nd selecting the **Users&#x20;**&#x74;ab.&#x20;

# Search for an Existing User

You can use the search bar from the *Users&#x20;*&#x74;ab to search for existing users.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gdWU4LcshoPS5053xUtu0_image.png "The search bar for existing users")

# Manage Existing Users

You can use the **Action menu&#x20;**&#x66;or a user to manage it.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yz6bk71BuW_gVJesTlENc_image.png "The action menu for a user")

- **Edit**: Update the following details for the user.&#x20;
  - First and Last name
  - Username
  - Password
  - Groups user belongs to
- **Remove**: Remove the user from the *Users&#x20;*&#x74;ab.&#x20;
- **Disable/Enable**: Disable or enable the user.&#x20;


[title] MQTT Generic
[path] Product Features/Integration/Integration Connectors/Message Brokers/

Review the following guides:&#x20;

- [Generic MQTT Integration Guide (HiveMQ)](docId\:fV3eiYJ9BspT09ezdrd38)
- [Generic MQTT Integration Guide (Mosquitto)](docId\:dmZHGjQjB9ydwDvDVxyxC)
- [Generic MQTT Integration Guide (Last Will and Testament)](docId:_n-WI6ENXufR2hYVRoGOk)

## Overview

MQTT Generic integration enables an Edge System to connect to an MQTT broker.

## Supported Versions

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

## Supported Communication

- Outbound (Publish data from Edge to MQTT Broker) - Yes
- Inbound (Subscribe data from MQTT Broker to Edge) - Yes

## Configurations

| **Variable**           | **Detail**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | **Required** |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                   | Enter a name for the connector                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Yes          |
| Hostname               | IP Address or Server FQDN of MQTT broker (Must be reachable from the Edge system)                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Yes          |
| Port                   | MQTT broker port                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | Yes          |
| Client id              | Unique client identity                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | No           |
| Username               | Enter the username                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | No           |
| Password               | Enter the user password                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | No           |
| QoS                    | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration.                                                                                                                | Yes          |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br />As an example, in Mosquitto, you have the following settings:<br />* max\_queued\_messages (default 100)
* max\_queued\_bytes (default 0)<br />As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes          |
| Integration topic      | Default topic for publishing                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | No           |
| LWT topic              | It refers to the specific topic where the last will message will be published.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | No           |
| LWT payload            | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message.                                                                                                                                                                                                                                                                                                                                                                                | No           |
| LWT payload type       | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                               | No           |
| LWT QoS                | A QoS value for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | No           |
| LWT retained           | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message.                                                                                                                                                                                                                                                                                                                                                                                                               | No           |
| Throttling limit       | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                                                                                                                                                                                                                                                                        | No           |
| Persistent storage     | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                                                                                                                                                                                                                                                                         | No           |
| Queue mode             | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                                                                                                                                                                                                                                                                          | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above. 

| Product                   | Version | Date         |
| ------------------------- | ------- | ------------ |
| Mosquitto Message Broker	 | 1.x     | Nov 14, 2019 |
| HiveMQ                    | 2.x     | Nov 14, 2019 |


[title] Certificates
[path] Product Features/OPC UA Server/

The *Certificates&#x20;*&#x70;ane allows you to manage clients that connect to the OPC UA server using certificate-based authentication. See [Manage OPC UA Authentication](docId\:ktgdlgjFayPxF5BnLc3ox) for more information.&#x20;

For a certificate-authenticated OPC UA client to work, the OPC UA server must accept (trust) that client's requests.

You can add and refresh an OPC UA client connection, view, refresh and remove client certificates, and manually download the OPC UA server certificate.

If you are using the Docker version of Litmus Edge and having issues connecting to the OPC UA server, refer to [Issues Connecting to OPC UA Server](docId:7sUKTAcNlx9NrDSxsOPyV).&#x20;

# Access OPC UA Certificates UI

**To access the OPC UA Certificates pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **OPC&#x20;**>**&#x20;Certificates**.
   The *Certificates&#x20;*&#x70;ane appears.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rpsX9VdbyYUInqsIkv4L2_image.png)

# Next Steps

- [Add an OPC UA Client Connection](docId\:uIWgye5IFgNrmRrakMo52)
- [Add an OPC UA Server Connection with UA Expert Client](docId\:mkYHN_PAS0wnJpNSFiTl2)
- [Download the OPC UA Server Certificate](docId\:AaBa52XfIyXTIsQOx9A3q)
- [Manage OPC UA Certificates](docId:055HPqbqU8JFKQlbpiFmW)


[title] Configure an LTE Modem
[path] Product Features/System/Network/

You can configure an LTE Modem either in Litmus Edge or in the Terminal User Interface (TUI).&#x20;

# Configure an LTE Modem in Litmus Edge

**To configure an LTE modem in Litmus Edge:**

1. After completing the basic set up for your LTE modem, go to **System&#x20;**>**&#x20;Network** on Litmus Edge.
2. At the top of the page, you can see **Host** and **Gateway** information. The Gateway IP address comes from the modem software.
3. Scroll down to the **Modem Configuration** section of the page to view the assigned APN for your modem.
4. Click the **Edit icon** to request a new APN from your network provider.
5. Insert an LTE SIM card into Litmus Edge devices to connect them to the LTE network.

:::hint{type="info"}
**Note**: For more information about your LTE modem, go to **System&#x20;**>**&#x20;Info** and scroll to the *Modem Interfaces* section.
:::

# Connect an LTE Modem with the Terminal Interface (TUI)

**To use the TUI to connect Litmus Edge to an LTE network:**

1. Perform the initial setup of your modem and enter Litmus Edge gateway information. Insert an LTE SIM card into the device to connect it to the LTE network.
2. Open the **TUI** to see information about your LTE connection below eth0 and eth1 information.
3. Press the **F2** key to enter setup. Make sure to choose an appropriate keyboard layout if this is your first time using the TUI. The **us** layout is a standard English keyboard layout. 
4. Use the **Arrow keys** to navigate the TUI. Select **Configure LTE modems** and press **Enter**. Select **Next** with the arrow keys and press **Enter** once again to open the next menu.
5. Select your LTE modem with th&#x65;**&#x20;Arrow keys** and the **Enter&#x20;**&#x6B;ey.
6. Type the APN that you would like to request from your network provider. Press **Enter**.

See [Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP) for more information.&#x20;


[title] Add an Interface Alias
[path] Product Features/System/Info/

You can add an alias for Linux serial interfaces that are connected to your network by navigating to **System&#x20;**>**&#x20;Info** from the *Serial Interfaces* section.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CBBPws9gyn7NJYNBbZISp_image.png "The Serial Interfaces section")

Linux serial devices assign a random file address upon connection or disconnection and can cause an issue when the system reboots.

:::hint{type="info"}
**Example random file addresses**: `/dev/ttyUSB0`, `/dev/ttyUSB1`, or `/dev/ttyS0`.
:::

The \<`/dev/ttyUSB#`> file address is used when dialing out through a port.

The \<`/dev/ttyS#`> file address is used whenever the port is used for dialing in.

:::hint{type="info"}
**Notes**:&#x20;

- You can use alpha-numeric characters for the alias (A-Z, a-z, 0-9).
- The *Symlink&#xA0;*&#x69;s read only. You cannot add an alias if no symlink is present.
- *Path&#xA0;*&#x69;nformation is run by serial number.
- Added *Alias&#xA0;*&#x69;nformation is run by alias.
- You can copy an alias to use with DeviceHub drivers.&#x20;
:::

# Add a Serial Interface Alias

**To add a serial interface alias:**

1. Navigate to **System***.&#x20;*&#xA;The *Info&#x20;*&#x70;ane appears. &#x20;
2. From the *Serial Interfaces* section, click the **Action menu&#x20;**&#x6E;ext to a serial interface and select **Set Alias**.
3. From the *Create Interface Alias* dialog box, enter an alias name in th&#x65;**&#x20;Interface Alias** field.&#x20;
4. Click **Create Alias**.


[title] Kafka SSL
[path] Product Features/Integration/Integration Connectors/Message Brokers/

Review the [Kafka SSL Integration Guide](docId\:wdXO9Ai73wgSE8HnSdvum).&#x20;

## Overview

Kafka SSL integration enables an Edge System to connect with a Kafka broker using SSL authentication.

## Supported Versions

Compatible with Kafka versions from 0.10.1.0 to 2.1.0.

## Supported Communication

- Outbound (Publish data from Edge to Kafka broker) - Yes
- Inbound (Subscribe data from Kafka broker to Edge) - Yes

## Configurations

| **Variable**         | **Detail**                                                                                                                                                                                            | **Required** |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                 | Enter a name for the connector                                                                                                                                                                        | Yes          |
| Brokers              | List of Kafka brokers separated by comma (Must be reachable from Edge system)                                                                                                                         | Yes          |
| SASL mechanism       | SASL mechanism values include: NONE, SASL\_PLAINTEXT. SCRAM-SHA-256, and SCRAM-SHA-512. This field can only be used if username is not empty                                                          | Yes          |
| Username             | Enter the username                                                                                                                                                                                    | No           |
| Password             | Enter the user password                                                                                                                                                                               | No           |
| CA certificate       | It is a digital certificate issued by a trusted Certificate Authority and is used to authenticate the identity of servers or entities in an SSL/TLS connection                                        | No           |
| Certificate          | SSL Certificate                                                                                                                                                                                       | No           |
| Private key          | SSL certificate private key                                                                                                                                                                           | No           |
| Insecure skip verify | Insecure Skip Verify controls whether a client verifies the server's certificate chain and host name                                                                                                  | No           |
| Topic                | The default topic for publishing                                                                                                                                                                      | Yes          |
| Throttling limit     | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                | No           |
| Persistent storage   | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |
| Queue mode           | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.  | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product      | Version  |
| ------------ | -------- |
| CloudKarafka | 0.11.0.0 |
| Confluent    | N/A      |


[title] Manage Mount Points
[path] Product Features/System/External Storage/

You can manage mount points by navigating to **System&#x20;**>**&#x20;External Storage**.&#x20;

Click the **Action menu** for a mount point to view management options.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N2_ud5gzE1_OnyFRewO7J_image.png "The action menu for a mount point")

- **Edit**
- **Mount**: See [Mount External Storage](docId:0EHe48bvf0CeWNmDGVD_T) to learn more.&#x20;
- **Remove**


[title] Activate an Edge Device
[path] Product Features/System/Device Management/

To activate a Litmus Edge device, refer to [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB).&#x20;

## Troubleshooting

[Activation Troubleshooting ](docId\:ww5ZTFp7lFb6ozhAk7GyH)&#x20;


[title] Configure the CAN Interface
[path] Product Features/System/Info/

You can configure the CAN interface and the slcan-ttyACM0 or slcan-ttyACM1 interface, or both, by navigating to **System&#x20;**>**&#x20;Info** from the *CAN Interface* section. You only need to set the configuration once.

# Before You Begin

Before completing these steps, make sure you do the following:&#x20;

- Use the HPE EL300 device with CAN Bus module (Atmel chipset)
- Acquire sufficient SocketCAN / CAN Bus knowledge

# Configure the CAN Interface

**To configure the CAN Interface:**

1. In Litmus Edge, navigate to **System**.
   The *Info&#x20;*&#x70;ane appears.
2. Scroll to the *CAN Interface* section, and click **Configure&#xA0;**&#x66;or the slcan-ttyACM0 or sclan-ttyACM1 interface.
3. Check the **Open&#xA0;**&#x63;heck box.
4. Select 1000 from the CAN Speed kbit/s drop-down list, and then click **Save**.


[title] Manage API Tokens
[path] Product Features/System/Tokens/

You can manage tokens by navigating to **System&#x20;**>**&#x20;Tokens**.&#x20;

You can copy a token by clicking the **Copy&#x20;**&#x69;con.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iTUhPkIN6HbhnKfjR9n0l_image.png "The Copy token icon")

You can click the **Action menu** to access management options for tokens.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/n2X8liz2tVobVWWZH-gJP_image.png "Action menu options for tokens")

- **Edit**: Update the key name for the token.&#x20;
- **Remove**: You can remove the token.&#x20;
- **Validate**: A message appears showing validation success.&#x20;


[title] Manage the Password Policy
[path] Product Features/System/Policy Management/

You can manage the password policy by navigating to **System&#x20;**>**&#x20;Policy Management**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GcugI-DwfUoIO7d2m6nOI_image.png "Password Policy management options")

# Before You Begin

You must be an administrator to view the *Policy Management&#x20;*&#x70;ane and make changes to the password policy.

# Modify Password Policy

You can make changes to the existing password policy parameters and click **Save Policy**. Modifying a password policy in Litmus Edge takes precedence over the default password policy added in the **Litmus Edge Manager Admin Console&#xA0;**> **Policies** pane.

# Reset Password Policy

You can reset the password policy to its default settings by clicking **Reset Default**.&#x20;


[title] Create an API Token
[path] Product Features/System/Tokens/

You can create an API Token by navigating t&#x6F;**&#x20;System&#x20;**>**&#x20;Tokens**.&#x20;

**To create an API Token:**

1. Navigate to **System&#x20;***>&#x20;***Tokens**.&#x20;
2. From the *REST API Keys* section, click the **Add&#x20;**&#x69;con.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QYauaqcgo6xVczTlvdnx7_addrestapikey.png "Add REST API Key icon")
3. Enter the name of the key in the **Key Name&#xA0;**&#x66;ield, and then click **Create API Key**.


[title] Manage FTP and System Services
[path] Product Features/System/Services/

You can manage FTP and System Services by navigating to **System&#x20;**> **Services**.&#x20;

To learn more about interacting with the FTP directory, see [Litmus Edge File Browser](docId\:NaypFhoKi6NNR5e0zuwsE).&#x20;

:::hint{type="info"}
**Note**: The base directory for the FTP service on Litmus Edge is: */var/lib/customer/ftp-data****.&#x20;***
:::

# Manage FTP Service

From the *Services&#x20;*&#x70;ane, you can manage the FTP Service.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nArSfq-1fv7VI-0miad_z_image.png "FTP Service management options")

## Start and Stop FTP Service

You can start and stop the FTP Service manually by clicking the **Start&#x20;**&#x6F;r **Stop&#x20;**&#x62;utton. The FTP Service is stopped and disabled by default.

:::hint{type="info"}
**Note**: If you reboot Litmus Edge, the FTP Server will not start unless **Start service automatically** is enabled and at least one FTP user is created.&#x20;
:::

## Start Service Automatically

You can click the toggle for **Start service automatically** to enable or disable the FTP service automatically starting when you log in.&#x20;

# Manage System Services

From the *Services&#x20;*&#x70;ane, you can manage system services.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jm-CEh2t0WDzMG-kkj-gB_image.png "System service management options")

## Start and Stop Remote Access Service

You can start and stop the Remote Access Service manually by clicking the **Start&#x20;**&#x6F;r **Stop&#x20;**&#x62;utton. The service is running by default. If you stop the service, you will not be able to access any remote access service.&#x20;

## Start and Stop SSH Service

You can start and stop the SSH Service manually by clicking the **Start&#x20;**&#x6F;r **Stop&#x20;**&#x62;utton. The service is running by default. If you stop the service, no one can log in remotely.&#x20;


[title] Manage Your User Profile
[path] Product Features/System/Users/

:::hint{type="info"}
**Note**: Role-based access control (RBAC) is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

You can access your user profile from your user icon.&#x20;

To manage your user profile, click your user icon in the top-right corner and select **User Profile**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EnQQKA3-wMh07-Z6UC_bA_image.png" size="80" width="1910" height="465" caption="User Profile option" position="center" showCaption="true"}

From your user profile, you can update your password.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8wHgF-3Km1FvZf9Rlrc-r_image.png" size="80" width="950" height="500" caption="Change Password section" position="center" showCaption="true"}

Refer to the *Permission Scopes* section to review your user permissions for each Litmus Edge feature module.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tE4hjpfyq2qcDD3B02PBe_image.png" size="80" width="929" height="860" caption="Permission Scopes section" position="center" showCaption="true"}


[title] Set a License Server
[path] Product Features/System/Licenses/

You can set a license server for your Litmus Edge by navigating to **System&#x20;**>**&#x20;License**.&#x20;

Once you set the license server, you have access to the site license.&#x20;

# Before You Begin

Obtain the License Server Configuration key from Litmus.&#x20;

# Set License Server

**To set a license server:**

1. Navigate to **System&#x20;**> **License**.&#x20;
   The *License&#x20;*&#x70;ane appears.&#x20;
2. From the *License Server Settings* section, click **Set Server**.
   The *Set License Server Configuration* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7CXl86FK2MT9sY-1wWnHa_set-server-button.png)
3. In the **Configuration&#x20;**&#x66;ield, paste or enter the License Server Configuration key obtained from Litmus.
4. Click **Save**. &#x20;
   The license server is set for your Litmus Edge.&#x20;


[title] Find LDAP Distinguished Names (DN)
[path] Product Features/System/LDAP/AD Auth/

To configure LDAP for Litmus Edge you must have the DN information from the LDAP server.

An LDAP Bind DN supplies the user and the user location in the LDAP directory tree. The LDAP client configuration file contains this information. You can access it in the following directory:

`/etc/ldap.conf`

**To find the Bind DN:**

1. Log in to the LDAP server connected to the Active Directory.
2. Identify the domain to query. For example, **litmus.io**.
3. At the Windows command prompt, type the following command to retrieve a specific user.
   `dsquery user dc=<domain_name>,dc=<domain_extension> -name <user_name>`
   - **dc**: Domain component or context.&#x20;
   - **\<domain\_name>**: Replace this with your domain name, without the extension.
   - **\<domain\_extension>**: Replace this with your domain's extension, such as **com**.
   - **\<user\_name>**: Replace this with the user name to search.
4. To retrieve *all* users, enter the following into the command prompt:
   `dsquery user dc=<domain_name>,dc=<domain_extension>`


[title] Licenses
[path] Product Features/System/

Litmus Edge supports two types of licenses.&#x20;

- **Node-locked license**:  Each license is locked to an edge device.
- **Site** **license**: Activated with a license server embedded in Litmus Edge Manager. During the edge device activation, this server can provision a site license, which offers an unlimited usage of devices (except for configurable tag limits and reservations). You can define the limit (upper limit) and reservation (lower limit) of assets, such as tags, per site license. See [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) to learn more.&#x20;

For even more detailed information on the two type of licenses, see [Site and Node-Locked License Overview for Litmus Edge](docId\:nbX0O6C5ylSh-qVy0sdJc).

The *License&#xA0;*&#x70;ane includes the following sections.

- **License Server Settings**: Allows you to configure License server settings.
- **Node-Locked License**: Allows you to add a standard node-locked license to replace the trial license, upgrade a license, add additional licenses to increase the number of devices and tags, or add new modules, as well as to remove licenses. By default Litmus Edge comes with a 15-day node-locked trial license. All features are available with a trial license except backup/restore and template.&#x20;
- **Version**: Allows you to view the current Litmus Edge version and License ID.
- **Features**: Allows you to view the currently installed modules, as well as view and configure the number of devices and tags allowed under your license for site license.

:::hint{type="info"}
**Note**: [Backup/Restore](docId\:Q_mfOXtLO2fAHvHW1JcEf) are not available under the trial license.
:::

Contact your Litmus representative to request a license key.

# Node-Locked License

A standard node-locked license is valid for one year. The license type, license key, and expiration date are visible from **System** > **License**. The license key is 16 digits, for example: `2411-3629-5461-7935`. You must include all the dashes in the license. Multiple licenses can be purchased, added, and activated to increase the number of device and tags or for products in addition to the standard core license.

When a standard core license expires, you cannot access any modules except the license section in *System*. Furthermore, the expired license could use up the CPU, thereby unnecessarily wasting computing resources. A banner appears in **System** > **License** that lets you know which license has expired. You must contact your admin to add a new license. Expiration dates apply to core and additional licenses.

You can upgrade an existing core license to replace it.

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

- For a standard core license, see [Activate a License Offline](docId\:G1c_-lr4pvtRxoqx-DXYN) to learn how to activate a license without being connected to the internet.
- A license can be upgraded but not deactivated.
- A license can be used on the same edge device (same Host ID) any number of times as long as it is within the valid date of expiration.
- A license remains active until midnight on the expiration date and can be extended by up to 8 hours due to cache\_ttl.
:::

Litmus Edge does not require Ethernet or an internet connection during installation. The installation works completely offline. However, Ethernet (not internet) is required during the first bootup after the installation is complete.

:::hint{type="info"}
**Important&#x20;**&#xA0;**for Cloud Deployment**:

Before activating the license, ensure all hardware / VM configuration steps that can modify the MAC address (add/replace a Network Interface Controller (NIC) card) are finalized.

The license Host ID depends on the Media Access Control (MAC) address for the device. The MAC&#x20;

address identifies the devices on a network. Changing the MAC address will invalidate the license.
:::

# Access License UI

**To access the License pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **System&#x20;**>**&#x20;License**.
   The *License&#x20;*&#x70;ane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iFuIXeb3XPpPfRe20dt2D_image.png" size="80" width="1365" height="688" caption="The License pane" position="center" showCaption="true"}

# Next Steps

- [Set a License Server](docId\:O7eilD-y-IaNlsjKtaSli)
- [Remove a License Server](docId\:Pf486tAPBnejYzrIDR_hG)
- [Online Node-Locked License Activations](docId\:z0JnahI3yYXSaGyxGt3ol)
- [Offline Node-Locked License Activations](docId\:tJFNxQxgbiHqQhHTHsOpq)
- [Remove a Node-Locked License](docId\:qYvEEVveoyfepwaRyKyi4)
- [Time Synchronization Issues](docId\:nz0hJoda3Xw0TDfM8XDj5)


[title] Configure a Modem
[path] Product Features/System/Network/

If your device supports LTE, a Modem Configuration section appears by navigating to **System&#x20;**>**&#x20;Network** and clicking the **WWAN&#x20;**&#x74;ab. Once you configure the modem, the information appears on the *Info&#x20;*&#x70;ane.

# Before You Begin

Make sure your configuration is using the same network on which your device is located.

# Configure a Modem

**To configure a modem:**

1. Navigate to **System&#x20;***>&#x20;***Network**.&#x20;
2. Click the **WWAN&#x20;**&#x74;ab.
3. Confirm that there are configurations available.
4. Click the **Edit&#xA0;**&#x69;con.
   The *Update Modem Config* dialog box appears.&#x20;
5. Enter an access point name in the **APN&#xA0;**&#x66;ield.&#x20;
6. Click **Submit**.&#x20;
   The APN name appears in the *Assigned APN***&#xA0;**&#x61;nd the *Requested APN***&#xA0;**&#x66;ield.&#x20;


[title] Mount External Storage
[path] Product Features/System/External Storage/

You can mount and view the details for the external storage you set up in Litmus Edge using CIFS (Common Internet File System) or FTP (File Transfer Protocol) by navigating to **System&#x20;**>**&#x20;External Storage**.&#x20;

**To mount external storage:**

1. Navigate to **System&#x20;***>&#x20;***External Storage**.&#x20;
   The *Mount points* pane appears.&#x20;
2. Click **Add new mount point**. The *Create Mountpoint* dialog box appears.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GDDBh4iGrkEqsXxyBxOEg_addnewmountpoint.png "The Add new mount point icon")
3. Enter the details for the mount point.&#x20;
   - **Mount Point Name**: Enter a name for the mount point. The system automatically creates the folder in **/data/** on the Litmus Edge device.
   - **Type**: Select **CIFS&#x20;**&#x6F;r **FTP**.&#x20;
   - **Share**: Enter the shared folder name. Enter the URI of your remote storage location (//\<Host\_IP\_Address or hostname>/\<Shared\_Folder\_Name>). To find your systems IP address, type **cmd&#xA0;**&#x69;nto the Windows search bar. Type **ipconfig&#xA0;**&#x69;nto the window and use the IPv4 address for your Ethernet or wireless adapter.&#x20;
   - **Read Only**: Uncheck the *Read Only&#x20;*&#x63;heck box. If you select this check box, writing to the network storage is disabled.&#x20;
   - **Mount on Boot** (Optional): If you check the *Mount on Boot* check box, the remote storage is mounted whenever you boot the Litmus Edge device.&#x20;
   - **Username**: Enter the user name for the network location (the Windows username or the Linux Samba username you created previously).
   - **Password**: Enter the password for the network location (the password for the Windows username or the Linux Samba username you created previously). All special characters except comma(,) may be used for the password.
   - **Domain**: If you select **CIFS**, you have the option to enter a domain name. This information is not necessary to connect in most cases. It is the name of the machine where the network folder resides. Type **hostname&#xA0;**&#x69;n the Windows command line or Linux terminal to view this information.
4. When done configuring the external storage, click **Create**.&#x20;
5. Click the **Action menu** for the new mount point and select **Mount**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4AI6EuA24wnBIuyGHh9MP_mountexternalstorage.png "Mount External Storage option")




[title] Network Storage
[path] Product Features/System/External Storage/

You can mount and manage network storage. This enables you to share the same storage location with all marketplace applications.&#x20;

You can use CIFS or FTP to mount external storage.

To add a CIFS mount point, you must do one of the following before creating the CIFS mount point in Litmus Edge:&#x20;

- [Set up a CIFS Mount Point on Linux](docId\:j6-6t4eFcl2Gye8_oYUNr)
- [Set up a CIFS Mount Point on Windows 10](docId\:FDxTDWGA4gh6fZ5F476DK)


[title] Manage Edge Devices
[path] Product Features/System/Device Management/

You can manage edge devices by navigating to **System&#x20;**>**&#x20;Device Management**.&#x20;

# Deactivate a Device

To deactivate a device, locate the device in the *Cloud Activation* section, and then click **Deactivate&#x20;**&#x66;or the device. &#x20;

:::hint{type="warning"}
**Important**:**&#xA0;**&#x41; system reboot is required after device deactivation.&#x20;
:::

# Manage Edge Devices

Management options for edge devices are available from the *Manage&#x20;*&#x73;ection of the *Device Management&#x20;*&#x70;ane.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bED1s7PiznKSIuRLJws9K_image.png" size="80" width="1156" height="692" caption="Management options for edge devices" position="center" showCaption="true"}

- **Reboot**: You can reboot the Litmus Edge device.&#x20;
- **Reset**: Revert the edge device to its factory settings. All edge device configurations are removed and Litmus Edge returns to its original state before any configurations were created.

# Software Update

The Software Update section allows you to upgrade by either uploading an update file or downloading the update file. See [Software Updates](docId\:HfThqIf8nNwIujhBdyoJZ) to learn more.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/K4P2hMGyE-Gr_N4hsmHIF_image.png" size="80" width="962" height="129" caption="Software Update section" position="center" showCaption="true"}


[title] Loopback Connector
[path] Product Features/Integration/Integration Connectors/Other Providers/

:::hint{type="info"}
**Note**: This connector is no longer available as of Litmus Edge version 3.11.0.&#x20;
:::

The connector has the following parameters.&#x20;

- Name
- Throttling limit: Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.
- Persistent storage checkbox: If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.
- Queue Mode: Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.


[title] Add an LDAP/AD Provider
[path] Product Features/System/LDAP/AD Auth/

You must configure providers in Litmus Edge to activate LDAP/AD authentication. The edge device contains a client that communicates with the LDAP server and receives information based on the client access level.

You can add an LDAP/AD Provider by navigating to **System&#x20;**>**&#x20;LDAP/AD Auth**.&#x20;

Review the [Set Up LDAP Using an OpenLDAP Container](docId\:qWV0s8nT5zVIaXw9E7SIr) how-to guide.&#x20;

:::hint{type="warning"}
**Important**:

- Litmus Edge Authentication Providers do not support nested groups. A separate group for each role is required.
- Once you have added a provider, you need to select a provider on the login screen.
:::

To configure LDAP for Litmus Edge, you must find the DN information from the LDAP server.

An LDAP Bind DN supplies the user and the user location in the LDAP directory tree. The LDAP client configuration file contains this information. See [Find LDAP Distinguished Names (DN)](docId\:tlK7Z9mFyA_FfUizugRVR) for more information.

**To add an LDAP provider:**

1. Navigate to **System&#x20;**>**&#x20;LDAP/AD Auth**.
   The *Authentication Providers* pane appears.
2. Click the **Add a Provider** icon.
   Th&#x65;*&#x20;Add Provider* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/w4t-1KTG9A5TyEfNLh4fb_add-a-provider-icon.png" size="80" width="1255" height="472" caption="Add a provider icon" position="center" showCaption="true"}
3. Select the type of method for adding the provider.&#x20;
   - **Load AD Template**: Load pre-defined template for the Active Directory LDAP.
   - **Load OpenLDAP Template**: Load pre-defined template for the OpenLDAP server.
   - **Load**: Load a file with pre-defined settings for the provider.&#x20;
   - **Advanced**: Create a provider without a template.&#x20;
4. Configure the settings for the provider.&#x20;

# Generic

1. Enter the provider name in the **Name&#x20;**&#x66;ield.&#x20;
2. &#x20;The default selection for **Type&#x20;**&#x69;s generic. Confirm the generic settings and click **Next**.&#x20;
   The *Connection&#x20;*&#x73;ection displays.&#x20;

# Connection

1. Configure the *Connection&#x20;*&#x73;ettings.&#x20;
   - **Host**: Enter the fully qualified domain name or IP address of your LDAP server.&#x20;
   - **Port**: Enter the LDAP host port number in the Port field. The default LDAPS (Secure LDAP) port is 636. The default LDAP port is 389.
   - **Use TLS**: Select the checkbox to enable TLS authentication. When TLS is not enabled, Litmus Edge expects to find a configured Custom Certificate. See [Add a Custom CA Certificate](docId\:TTt4LhsdYPNd0siTfg2BY).&#x20;
   - **TLS Root CA**: If you select TLS authentication, paste the root SSL/TLS certificate or click **Upload&#x20;**&#x61;nd load the file.&#x20;
   - **Bind DN**: Enter the bind DN identifier. The bind DN identifies the user and the location of the user in the LDAP directory tree. See [Find LDAP Distinguished Names (DN)](docId\:tlK7Z9mFyA_FfUizugRVR).
   - **Bind DN Password**: Enter the password used to authenticate against LDAP.&#x20;
2. When done, click **Next**.&#x20;
   The *User&#x20;*&#x73;ection displays.&#x20;

# User

1. Configure the *User&#x20;*&#x73;ettings.&#x20;
   - **User Search Base DN**: Enter a value. This Base DN (Distinguished Name) is the point in the LDAP directory tree that the LDAP service uses to initiate a user search. The Base DN is the latter part of the Bind DN. See [Find LDAP Distinguished Names (DN)](docId\:tlK7Z9mFyA_FfUizugRVR).
   - **Search Scope**: Select an option from the drop-down list.
     - **Base&#xA0;**&#x6C;imits the search to the base object. 
     - **One&#xA0;**&#x72;estricts the search to "one level", or in other words, the immediate children of the base object. 
     - **Sub&#xA0;**&#x65;nables a full LDAP tree search, including all children of the base object.
   - **User Search Filter**: Enter a filter to search LDAP users.
   - **Attribute for Unique UserID**: Enter the unique user ID number (uidNumber).
   - **Attribute for Username (for logging in)**: Enter the attribute that will be used for logins.&#x20;
   - **First Name**: Enter the user's first name. &#x20;
   - **Last Name**: Enter the user's surname.&#x20;
2. When done, click **Next**.&#x20;
   The *Groups&#x20;*&#x73;ection displays.&#x20;

# Group

1. Configure the *Group&#x20;*&#x73;ettings.&#x20;
   - **Group Search Base DN**: Enter a value. This Base DN (Distinguished Name) is the starting point that the LDAP service uses to find a group in the LDAP directory tree.
     Example of Group Base ND:&#x20;
     CN=Users,CN=Builtin,DC=MyDomain,DC=com
   - **Search** **Scope**: Select an option from the drop-down list.&#x20;
     - **Base&#xA0;**&#x6C;imits the search to the base object.
     - **One&#xA0;**&#x72;estricts the search to "one level", as in the immediate children of the base object.
     - **Sub&#xA0;**&#x65;nables a full LDAP tree search, including all children of the base object.
   - **Group Search Filter**: Enter a filter to query the Active Directory in the Group Search Filter field.
     See [How to write LDAP search filters](https://confluence.atlassian.com/kb/how-to-write-ldap-search-filters-792496933.html) for more information about creating search filters.
     Example of a filter to query group objects with a common name (CN) starting with Admin:
     (&(objectCategory=group)(cn=Admin\*))
   - **Group Name Attribute**: Enter the common name (CN) for the group to search.&#x20;
   - **Group Membership Attribute**: Enter the distinguished name (DN) for the group to search.
   - **Member Value Type**: Enter the value type for members in the group, DN or CN.&#x20;
2. When done do one of the following:
   - Click **Test&#x20;**&#x74;o test the provider.&#x20;
   - Click **Save&#x20;**&#x74;o save the settings for the provider.&#x20;
   - Click **Create & Map Groups** to create the provider.&#x20;

Once the provider is created, use it when logging in to Litmus Edge.


[title] Remove a License Server
[path] Product Features/System/Licenses/

You can remove a license server set to your Litmus Edge by navigating to **System&#x20;**>**&#x20;License**.&#x20;

After removing a license server, you no longer have access to the site license set to your Litmus Edge.&#x20;

:::hint{type="info"}
**Note**: When you remove a license server, the license *Version&#xA0;*&#x61;nd *Feature&#xA0;*&#x73;ections in the *License&#x20;*&#x70;ane become visible. The previous trial or standard core license is restored. If the previous license is expired, you will no longer be able to access any Litmus Edge features except for the *License&#x20;*&#x70;ane.
:::

**To remove a license server:**

1. Navigate to **System&#x20;***>&#x20;***License**.&#x20;
   The *License&#x20;*&#x70;ane appears.&#x20;
2. From the *License Server Settings***&#xA0;**&#x73;ection, click **Remove Server**.
3. Click **Yes, remove license server**.
   The license server is removed from your Litmus Edge.&#x20;


[title] Manage Interface Aliases
[path] Product Features/System/Info/

You can manage Interface Aliases by navigating t&#x6F;**&#x20;System&#x20;**>**&#x20;Info&#x20;**&#x66;rom th&#x65;*&#x20;Serial Interfaces&#x20;*&#x73;ection.&#x20;

# Copy an Interface Alias

You can copy an alias to use in DeviceHub for Linux serial interfaces that are connected to your network.

To copy an a serial interface alias, click the **Copy&#x20;**&#x69;con next to a serial interface containing an alias.&#x20;

# Remove an Interface Alias

You can remove an alias for Linux serial interfaces that are connected to your network.

To remove a serial interface alias, click the **Action menu** for the serial interface that contains an alias and select **Remove Alias**.&#x20;


[title] Add a Device Certificate
[path] Product Features/System/Certificates/

A device certificate (or SSL certificate) is a digital certificate that provides proof of the device's identity (Litmus Edge instance). A device certificate for your Litmus Edge instance is not required as the connection is already secured with an automatically generated self-signed certificate. Refer to the *Self-Signed Certificates* and *Device Certificates* sections in [Certificates](docId\:s0dXZeU8mTAywyQsYEDyj) for more information.&#x20;

# SSL Certificate Workflow

Refer to the image and descriptions below to review the process of adding an SSL certificate to Litmus Edge (LE) or Litmus Edge Manager (LEM).&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/P9sl2_o0Kx__c_t2QDQqd_diagram-2-oct10th2024.png)

- **Step 1**: You will need to request an SSL certificate from your IT team.&#x20;
- **Step 2**: Your IT team will make a request for the SSL certificate from a certificate authority (CA) (for example, DigiCert).&#x20;
- **Step 3**: The CA will return the following to your IT team.&#x20;
  - The root CA certificate file
  - Any required intermediate certificates
  - The SSL certificate file
- **Step 4**: The IT team will send you the following.&#x20;
  - The root certificate file
  - Any required intermediate certificates
  - The SSL certificate file
  - The private key file
- **Step 5**: You will apply the following in either Litmus Edge (see steps below) or Litmus Edge Manager (see [SSL Setting Features](docId\:MC8Z1bK3yWcKQq4-kupCv)).&#x20;
  - The CA chain file (root CA file and all intermediate certificates)
  - The SSL certificate&#x20;
  - The private key file

You can add a device certificate in Litmus Edge by navigating to **System&#x20;**> **Certificates**.&#x20;

# Before You Begin

Before you complete the steps below, make sure you do the following.

- Verify you have admin credentials for Litmus Edge.&#x20;
- Have access to a Linux system.&#x20;
- Verify that the the certificate you upload is an Nginx certificate.&#x20;
- Submit the *Certificate Signing Request&#x20;*&#x69;n Litmus Edge to a certificate authority and subsequently receive the device certificate with all required parameters (CA Chain and Private Key). See [Manage Certificate Signing Requests](docId\:IK4-nJHtCh0KkMAqhhlYm) for details.&#x20;
- Confirm with your IT department if you require a custom CA certificate to be uploaded to Litmus Edge before you add a device certificate. If you need to upload a custom CA certificate, see [Add a Custom CA Certificate](docId\:TTt4LhsdYPNd0siTfg2BY) for details.&#x20;

# Step 1: Create a Backup of Your Device

You will first need to create a backup of your device in case you need to recover its configuration settings.&#x20;

Follow the steps to [Backup a Device](docId:2DmvdQMHuALT7NPXDmUeu).&#x20;

# Step 2: Generate Key Certificates

You will need to collect the following parameters to create the device certificate.&#x20;

- **SSL Certificate**: The public key certificate associated with the device certificate. You will receive the SSL certificate from the certificate authority after submitting the Litmus Edge certificate signing request. &#x20;
- **CA Chain**: The certificate authority's chain of certificates that validates the device certificate's public and private keys. When validating this parameter, make sure it includes all intermediate certificate authorities.&#x20;
- **Private Key**: The private key certificate associated with the device certificate. You will receive the private key from the certificate authority after submitting the Litmus Edge certificate signing request. To successfully submit the private key, ensure the following:
  - The private key is an RSA private key. If the private key is not RSA, you will need to convert it using openssl. You can use the following command: `openssl rsa -in <old_file_name> -out  <new_file>`.&#x20;
  - The private key is not encrypted. If the private key is encrypted, follow up with your IT department to decrypt it.&#x20;

The steps below are an example to generate certificates locally. You can obtain them from your organization’s IT department.

:::hint{type="info"}
**Note**: This action must be performed in a Linux system outside Litmus Edge.
:::

**To generate key certificates:&#x20;**

1. Log in to a Linux system.
2. Enter the following command:
   `docker run --name servercerts -v /Users/Projects/docs/data/certificates/cert:/certs   `
   `-e CA_EXPIRE=365 -e SSL_EXPIRE=365 -e SSL_KEY=server-key.pem -e SSL_CERT=server-cert.pem   `
   `-e SSL_CSR=server.csr -e SSL_SUBJECT=localhost paulczar/omgwtfssl`
3. Open the private key file in an editor of your choice to check if the key file is RSA.
   The first line should look like this:
   ` -----BEGIN RSA PRIVATE KEY----`

# Step 3: Add the Device Certificate

You will now need to add the device certificate in Litmus Edge.&#x20;

**To add a device certificate:**

1. Navigate to **System&#x20;**> **Certificates**.
2. From the *Certificates&#x20;*&#x70;ane, select the **Device Certificate&#xA0;**&#x74;ab.
3. Click the **Add&#x20;**&#x69;con.&#x20;
   The *Add Certificates* dialog box appears.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XL86oTa3UNsdOZ2XC696w_adddevicecertificate.png "Add device certificate icon")
4. For **SSL Certificate**, **CA Chain**, and **Private Key** fields, do one of the following:
   - Click the **Upload&#x20;**&#x69;con and select the certificate/key file.&#x20;
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RmBfNgqzAMPLQ3lOlb2kq_uploadcertificateparameters.png" size="80" width="1164" height="583" caption="Upload icon" position="center" showCaption="true"}
   - Paste the certificate/key into the field.&#x20;
5. Click **Submit**.

# Step 4: Restart the System

The final step is to restart the system and verify the certificate appears in the *Certificates&#x20;*&#x70;ane.&#x20;

**To restart the system:**

1. From the *Certificates&#xA0;*&#x70;ane, navigate to **System** >**&#x20;Device Management**.
   The *Device Management* pane appears.&#x20;
2. From the **Manage&#xA0;**&#x73;ection, click **Reboot**.
   The system reboots.&#x20;
3. Once the system has restarted, log in and navigate to **System&#x20;**>**&#x20;Certificates**.
   Verify the certificate appears in the *Certificates&#x20;*&#x70;ane.&#x20;


[title] Remote Access
[path] Product Features/System/

:::hint{type="warning"}
**Important**: As of Litmus Edge version 3.11.0, remote access functionality is no longer available. Contact your account representative to learn more.&#x20;
:::

Edge devices often reside on a private network, which makes them inaccessible through the internet from outside that private network. You can enable access to your edge device from any “outside” computer using the Remote Access feature that is based on the [ZeroTier network](https://www.zerotier.com/).

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zYbyyoBWR0HPZE3sq0XeP_image.png" size="80" width="812" height="390" caption="Remote Access Set up " position="center" showCaption="true"}

The workflow for accessing an edge device from an remote computer is as follows:

As the person running the edge device:

1. Create a network in the ZeroTier Central.
2. Make your edge device a node in the network you have created.
3. Share the ZeroTier network ID and the node IP address with the person running the remote computer.

As the person running the remote computer:

1. Join the network whose ID was shared with you in the ZeroTier app installed on the remote computer.
2. Enter the edge device's IP address in the browser on the remote computer.
3. Enter the edge device credentials in the login page that appears.

# Access Remote Access UI

**To access the Remote Access pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, select **System**.
   The *Info&#x20;*&#x70;ane appears.
3. Select **Remote Access**.&#x20;
   The *Remote Access&#x20;*&#x70;ane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pG7Twb9D0sjAtX2JBmbrx_image.png" size="80" width="741" height="613" caption="The Remote Access pane" position="center" showCaption="true"}


[title] Expose an Edge Device as a ZeroTier Network Node
[path] Product Features/System/Remote Access/

:::hint{type="warning"}
**Important**: As of Litmus Edge version 3.11.0, remote access functionality is no longer available. Contact your account representative to learn more.&#x20;
:::

You expose your edge device for remote access by adding it as a node to a ZeroTier network.

To expose your edge device, you will need to do the following:

- Step 1: Set up ZeroTier Central
- Step 2: Join Remote Network in Litmus Edge
- Step 3: Accept Request to Join Network
- Step 4: Collect and Send Network Information

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Step 1: Set up ZeroTier Central

You need to first set up ZeroTier Central and collect the network ID.&#x20;

**To set up ZeroTierCentral:**

1. Visit  [ZeroTier Central](https://my.zerotier.com/).
2. Create an account
3. Create a ZeroTier network and note the network ID.&#x20;
4. Download the ZeroTier application and install it on your computer.

# Step 2: Join Remote Network in Litmus Edge

You can now use the network ID you collected to set up the remove access service in Litmus Edge and join the ZeroTier Central network. &#x20;

**To join the remote network in Litmus Edge:**

1. Log in to Litmus Edge.&#x20;
2. Navigate t&#x6F;**&#x20;System&#x20;**>**&#x20;Services&#x20;***>***&#x20;Remote Access Service** to verify that the Remote Access Service is running.&#x20;
3. Navigate to **System&#x20;**>**&#x20;Remote Access.**
4. On the *Remote Access* pane, click the **Add (+)** tile.
   Th&#x65;*&#x20;Join Remote Network&#x20;*&#x64;ialog box appears.
5. Enter the network ID you have noted in ZeroTier Central and click **Join Network.**
6. The new network tile appears on the pane with the *Requesting Configuration* status. A request for your edge device to join the network is sent to ZeroTier.

# Step 3: Accept Request to Join Network

You can now accept the request to join the network in the ZeroTier application.&#x20;

**To accept the request to join the network:**

1. Open the ZeroTier application.
2. Navigate to the network you have requested to join.
3. Scroll down the network's page to the requests section.
4. Select the check box by your network joining request.
5. (Optional) Enter a meaningful name and description for your edge device as the network node.

# Step 4: Collect and Send Network Information

The final step is to collect the network and IP address information and send it to the person that needs to remotely connect to your edge device.&#x20;

**To collect and send the network information:&#x20;**

1. Log in to Litmus Edge.&#x20;
2. Navigate to **System&#x20;**>**&#x20;Remote Access**. The network tile should now display an **OK&#x20;**&#x73;tatus.
3. Copy the **Network ID** and your edge device's **Remote Access IP** **Address&#x20;**&#x76;alues and communicate them to the person who needs to remotely connect to your edge device.
4. Once the person you have sent the *Network ID* and *Remote Access IP Address* to notifies you that they have requested to join your ZeroTier network, approve their request (see Step 3 for instructions).

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tJrA-q5zpot_Sf-kYKcWR_image.png" size="80" width="742" height="150" caption="Network node section in ZeroTier Central" position="center" showCaption="true"}

# Access the Exposed Edge Device Remotely

With a computer connected to the internet outside of the network where an edge device resides, you can gain remote access to that edge device once it has been exposed as a node on a ZeroTier network.

**To remotely access an exposed edge device:**

1. [Download the ZeroTier app](https://www.zerotier.com/download/) to your machine.
2. Right-click the ZeroTier icon running in your task bar and select **Join Network**.
   The *Join Network* dialog box appears.
3. Enter the **Network ID&#xA0;**&#x76;alue that has been shared with you in the field, and then click **Join**.
4. In the confirmation pane that appears on the right of your screen, click **Yes**.
   This generates a request to join the indicated network.
5. Contact the person who had shared the network ID with you (the network owner) and let them know you have requested access.
   Once they approve your request, your machine becomes the second node on the ZeroTier network.
6. In the browser on your machine, enter the **Remote Access IP Address** value that had been shared with you.
   The Litmus Edge login page opens.
7. Enter the Litmus Edge credentials.
   The Litmus Edge UI appears, You are now remotely connected to the edge device.&#x20;


[title] Create an API Account
[path] Product Features/System/Tokens/

You can create an API account by navigating t&#x6F;**&#x20;System&#x20;**>**&#x20;Tokens**.&#x20;

**To create an API account:**

1. Navigate to **System&#x20;***>&#x20;***Tokens**.&#x20;
2. From the *Access Accounts* section, click the **Add&#x20;**&#x69;con. The *Create API Account&#x20;*&#x64;ialog box appears.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Mh4762XvULGrSpfp8vsA2_addrestapiaccount.png "Add Access Account icon")
3. Enter the details for the account.&#x20;
   - **Account Name**
   - **Enable Account**: Account is enabled by default. &#x20;
4. Click **Create Account**.


[title] Services
[path] Product Features/System/

You can navigate to the *Services&#xA0;*&#x70;ane to manage services. You can manage following services:&#x20;

- FTP (File Transfer Protocol) Server
- SSH (Secure Socket Shell)
- Remote Access services (no longer available as of Litmus Edge version 3.11.0)

# FTP Server

:::hint{type="info"}
**Note**: If you reboot Litmus Edge, the FTP Server will not start unless **Start service automatically** is enabled and at least one FTP user is created.&#x20;
:::

FTP is a standard network protocol used to transfer files between a client and server on a computer network.

- Litmus Edge supports FTP, which allows devices to securely exchange files with the edge device. Litmus Edge is the server in this exchange and the client is running on the device that is on the same network as Litmus Edge.
- FTP can be used to transfer data through a CSV file or similar formats. It also can be used to read a file from the drive and send data to the cloud.

The FTP client must be running on a device that is on the same network as Litmus Edge.

Use the following details to configure the FTP client, to establish a connection to the Litmus Edge server.

- **Host**: The IP address of the Litmus Edge device.
- **Username**: The Litmus Edge FTP username.
- **Password**: The password that was generated.
- **Port**: The default FTP port is 21. The default SSH port is 22. SFTP uses port 22.

[Filezilla](https://filezilla-project.org/) works well as the FTP client communicating with Litmus Edge. To establish a connection with Litmus Edge (the FTP server) from Filezilla, you enter the Host, Username, and Password values (as described above), then click **Quickconnect**. Once connected, drag files from their source location to the default FTP directory in Litmus Edge. This directory is /ftp-data.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ep4jPPTA-fdh70l8S8GAe_image.png" size="80" width="1010" height="650" caption="Filezilla Client for FTP Server" position="center" showCaption="true"}

# System Services

:::hint{type="warning"}
**Important**: As of Litmus Edge version 3.11.0, remote access functionality is no longer available. Contact your account representative to learn more.&#x20;
:::

This section helps you manage Remote Access Service and SSH Service. You can enable/disable these services from this section. By default it is enabled.&#x20;

# Access Services UI

**To access the Services pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **System&#x20;**> **Services**.
   The *Services&#x20;*&#x70;ane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OXhc7kmRTpUCECVCurCep_image.png" size="80" width="834" height="637" caption="The Services pane" position="center" showCaption="true"}

# Next Steps

- [Manage FTP and System Services](docId\:V290pRiyfyiSr9yWDfyMX)&#x20;
- [Add an FTP User](docId:7brk_nIh3pGCZEBYdMJcw)&#x20;
- [Manage FTP Users](docId\:n3bE_d2xxv4DjeJPzx_kH)&#x20;


[title] Manage Nodes
[path] Product Features/OPC UA Server/Hierarchy/

You can manage nodes by navigating to **OPC&#x20;**>**&#x20;Hierarchy**. Refer to the image and callouts for management options.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yDbxaUh2BerFCAXbkyIja_image.png "Management options for nodes")

\[1]**&#x20;Show filter**: Search for nodes.&#x20;

\[2] **Remove selected node**: After confirming the removal of the node from the *Hierarchy&#x20;*&#x70;ane, click the **Save&#x20;**&#x69;con. After saving the update, you must restart the OPC UA server. See [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe) to learn more.&#x20;

:::hint{type="warning"}
**Caution**: All child nodes and their configurations are deleted when you remove a selected node.
:::

\[3] **Reset hierarchy**: Resetting the hierarchy removes all the nodes in the hierarchy. After confirming the reset of the hierarchy, click the **Save&#x20;**&#x69;con. After saving the update, you must Reset the OPC UA server. See [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe) to learn more.&#x20;

\[4] **Export as JSON**: Open the **Action menu** to export the hierarchy exports all of the nodes in the hierarchy to a JSON file and download it to your hard drive. A hierarchy must exist in the *Hierarchy&#x20;*&#x70;ane to view this option.&#x20;

\[5] **Import JSON**: Open the **Action menu** to import all the nodes from a JSON file. The imported nodes merge with the existing hierarchy rather than replace it. After saving the update, you must Reset the OPC UA server. See [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe) to learn more.&#x20;


[title] Manage Groups
[path] Product Features/System/Users/

:::hint{type="info"}
**Note**: Role-based access control (RBAC) is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

After you add groups, you can manage them by navigating to **System&#x20;**> **Users&#x20;**&#x61;nd selecting th&#x65;**&#x20;Groups&#x20;**&#x74;ab.&#x20;

# Search for an Existing Group

You can use the search bar from the *Groups&#x20;*&#x74;ab to search for existing groups.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/j0FvEfgGImYo9j-N3-Blm_image.png" size="80" width="699" height="501" caption="The search bar for existing groups" position="center" showCaption="true"}

# Manage Existing Groups

You can use the **Action menu&#x20;**&#x66;or a group to manage it.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/s8oaAglCnsYPC7RaBAXs5_image.png "The action menu for a group")

- **Edit**: Update the name and roles for the group.&#x20;
- **Delete**: Remove the group from the *Groups&#x20;*&#x74;ab.&#x20;
- **Edit Group Users**: Review the current list of members and click **Assign People** to add or remove users to the group.&#x20;


[title] Add an FTP User
[path] Product Features/System/Services/

You can add one or more users to connect to the FTP server by navigating to **System&#x20;**>**&#x20;Services** from the *FTP Services* section.&#x20;

**To add an FTP user:**

1. Navigate to **System&#x20;***>&#x20;***Services**. &#x20;
2. From the *FTP Service* section, click **Add User**.&#x20;
   The *Add User&#x20;*&#x64;ialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CM36efd6Ny-anGqFNlvaD_addftpuser.png" size="80" width="1913" height="494" caption="The Add User button" position="center" showCaption="true"}
3. Enter a username and click **Add User**.&#x20;
4. Click the **Copy&#x20;**&#x69;con next to the password and save it to a text file. Save the password in a safe place. You cannot use the new user account without this password.
5. Click **Close**.


[title] Data Type Mapping
[path] Product Features/OPC UA Server/Hierarchy/

The following table maps the data types that DeviceHub offers to those OPC UA servers recognized at the exposed data points.

| **DeviceHub Data Type** | **OPC UA Data Type** |
| ----------------------- | -------------------- |
| bin                     | Boolean              |
| bit                     | Boolean              |
| bool                    | Boolean              |
| int8                    | SByte                |
| sint                    | SByte                |
| uint8                   | Byte                 |
| byte                    | Byte                 |
| int                     | Int16                |
| int16                   | Int16                |
| bcd                     | UInt16               |
| uint16                  | UInt16               |
| word                    | UInt16               |
| dint                    | Int32                |
| int32                   | Int32                |
| dbcd                    | UInt32               |
| dword                   | UInt32               |
| uint32                  | UInt32               |
| int64                   | Int64                |
| lint                    | Int64                |
| lbcd                    | UInt32               |
| lword                   | UInt64               |
| uint64                  | UInt64               |
| ulint                   | UInt64               |
| FL                      | Float                |
| flt32                   | Float                |
| float                   | Float                |
| float32                 | Float                |
| real                    | Float                |
| double                  | Double               |
| dreal                   | Double               |
| flt64                   | Double               |
| float64                 | Double               |
| lreal                   | Double               |
| number                  | Double               |
| AC3                     | String               |
| AC7                     | String               |
| AC10                    | String               |
| AC12                    | String               |
| AC20                    | String               |
| AC30                    | String               |
| AC40                    | String               |
| auto                    | String               |
| char                    | String               |
| custom                  | String               |
| date                    | String               |
| decimal                 | String               |
| DNP3TIME                | String               |
| dt                      | String               |
| DT6                     | String               |
| hex                     | String               |
| json                    | String               |
| ldt                     | String               |
| ltime                   | String               |
| ostr                    | String               |
| range                   | String               |
| s5time                  | String               |
| single                  | String               |
| str                     | String               |
| string                  | String               |
| tlp                     | String               |
| time                    | String               |
| tod                     | String               |
| wchar                   | String               |
| wstring                 | String               |

If a device driver supports count, OPC UA needs to have an array for the corresponding data type where the array size equals the count value.

Counters and timers are defined as separate structs or data types in most PLCs. Typically, the edge device is used to read the `counter.acc` or `timer.acc` values. These values are likely to be of `dint` or `udint` type and should be mapped accordingly.

For example, if DeviceHub has a tag with data type `bool` and count `10`, OPC UA must have data type defined as` ArrayOfBoolean[10]`.


[title] Manage the Disk Space Policy
[path] Product Features/System/Policy Management/

You can manage the disk space policy by navigating to **System&#x20;**>**&#x20;Policy Management**.&#x20;

:::hint{type="info"}
**Note**: The System Limit is default and cannot be modified.
:::

# Before You Begin

You must be an administrator to view the *Policy Management* pane and make changes to the disk space policy.

# Manage Disk Space Policy

You can make changes to the following disk space policy fields:

- **User defined hard disk space limit**: You can modify the current value.&#x20;
- **Action**: Select **Warning&#x20;**&#x6F;r **Stop data collection** from the drop-down list.&#x20;

When done updating the policy, click **Save Policy**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KnghuxtqD2Gz5lP99m_GK_image.png "The Disk Space Policy section")


[title] Download the OPC UA Server Certificate
[path] Product Features/OPC UA Server/Connections/

You can download the connected OPC UA server CA certificate by navigating to **OPC&#x20;**> **Certificates**. This certificate must be installed in the Trusted Root Certification Authorities store to enable trust.

:::hint{type="warning"}
**Important**: Make sure the server is started before you download the server certificate. See [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe) to learn more.&#x20;
:::

To download the certificate, click the **Download server certificate** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CGMM9PSOC4gOdh4SAAwzv_image.png)

After clicking the icon, the `server_cert.der` certificate is downloaded to your hard drive.&#x20;

[title] MQTT - Azure IoT Hub using Device Certificates
[path] Product Features/Integration/Integration Connectors/Message Brokers/

Review the following guides: [Send Data to Azure IoT Hub with a Device Certificate](docId\:v3GEhSNpvbq5y1oX7mEej) and [Receive Data from Azure IoT Hub with a Device Certificate](docId\:kOYSBrgtUHp4POv6C_bgP).&#x20;

## Overview

Azure IoT Hub using Device Certificates integration enables an Edge System to connect with Azure IoT Hub using SSL authentication.

## Supported Versions

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

## Supported Communication

- Outbound (Publish data from Edge to MQTT Broker) - Yes
- Inbound (Subscribe data from MQTT Broker to Edge) - Yes

## Configurations

| **Variable**           | **Detail**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | **Required** |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Name                   | Enter a name for the connector                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Yes          |
| Hostname               | IP Address or Server FQDN of MQTT broker (Must be reachable from the Edge system)                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Yes          |
| Port                   | MQTT broker port                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | Yes          |
| Device id              | Device ID is a unique identifier assigned to an IoT device for secure and distinct identification within Azure IoT services.                                                                                                                                                                                                                                                                                                                                                                                                                                  | Yes          |
| Certificate            | A device certificate is a digital credential used for secure authentication and encryption in Azure services, providing trusted identity and data protection.                                                                                                                                                                                                                                                                                                                                                                                                 | Yes          |
| Private key            | A device private key is a cryptographic key used for secure, authenticated communication between an IoT device and Azure services.                                                                                                                                                                                                                                                                                                                                                                                                                            | Yes          |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br />As an example, in Mosquitto, you have the following settings:<br />* max\_queued\_messages (default 100)
* max\_queued\_bytes (default 0)<br />As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes          |
| Integration topic      | Default topic for publishing or subscribing. <br />Default: *devices/\{deviceId}/messages/events/*<br />Where \{deviceid} gets replaced with the value from the configuraiton entered.                                                                                                                                                                                                                                                                                                                                                                        | Yes          |
| LWT topic              | It refers to the specific topic where the last will message will be published.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | No           |
| LWT payload            | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message.                                                                                                                                                                                                                                                                                                                                                                                | No           |
| LWT payload type       | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                               | No           |
| LWT QoS                | A QoS value for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | No           |
| LWT retained           | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message.                                                                                                                                                                                                                                                                                                                                                                                                               | No           |
| Throttling limit       | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                                                                                                                                                                                                                                                                        | No           |
| Persistent storage     | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                                                                                                                                                                                                                                                                         | No           |
| Queue mode             | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                                                                                                                                                                                                                                                                          | No           |

## Compatibility Validation

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product        | Version |
| -------------- | ------- |
| Azure services | N/A     |


[title] Manage Cloud Storage Sync Jobs
[path] Product Features/System/External Storage/Cloud Storage Sync/

:::hint{type="info"}
**Notes**:&#x20;

- Cloud Sync Storage is available for Litmus Edge version 3.11.0 and later. Enable the feature from **System&#x20;**> **Support&#x20;**> **Features**.&#x20;
- You can schedule the sync job to run at periodic intervals. Any file in the local directory that is newly added or modified between the intervals will be transferred to the cloud at the next interval. Any file that was not transferred successfully at the last interval will be transferred again at the next interval.
:::

To be able to manage a sync job, you must disable the job.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/l4Xe8B_6JXRLe7LWJHyhM_image.png "Disabled sync job")

To manage a sync job, click the **Action&#x20;**&#x6D;enu for the job.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6rqH8305PyD1CcLdXxbI9_image.png "Sync job action menu")

- **Edit**: Update the details for the job.&#x20;
- **Remove**: Delete the sync job.&#x20;


[title] Activate a Node-Locked License Online
[path] Product Features/System/Licenses/Online Node-Locked License Activations/

You can activate a license key received from Litmus by navigating to **System&#x20;**>**&#x20;License**.&#x20;

# Before You Begin

Before completing the steps below, make sure you do the following:

- Obtain the license activation key from Litmus.&#x20;
- If your current license is expired, also obtain the *Data & Device Management Endpoint* value from Litmus.&#x20;
- Synchronize the time for the Litmus device. See [Time Synchronization Issues](docId\:nz0hJoda3Xw0TDfM8XDj5) to learn more.&#x20;

# Activate License Online

Refer to the appropriate steps depending on if your current license is expired or not.&#x20;

## Activate a License Online if Your Current License is Not Expired

**To activate a license if your current license is not expired:**

1. Navigate to **System&#x20;***>&#x20;***License**.&#x20;
   The *License&#x20;*&#x70;ane appears.&#x20;
2. From the *Node-Locked License* section, click **Add License**.
   The *Add a New License* form appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LXye-lSMaStUJu1MkzMXc_add-license.png" size="80" width="1238" height="541" caption="The Add License button" position="center" showCaption="true"}
3. From the *Online License Activation* tab, paste or enter the license activation key obtained from Litmus in the **Activation Key** field.&#x20;
4. Click **Submit**.
   The license is activated and appears in the *License* pane.

## Activate a License Online if Your Current License is Expired

**To activate a license if your current license is expired:**

1. Log in to Litmus Edge. &#x20;
   The *Cloud Activation&#x20;*&#x70;age appears.
2. Click **Advanced Options**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0GlpDZ2RfaVRCIOViQ2fH_advanced-options-link.png" size="80" width="871" height="450" position="center" showCaption="false"}
3. In the *Node-Locked License* section, click **Add License**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JBSRkI--gS5O21CvYUnS6_add-license.png" size="80" width="870" height="618" position="center" showCaption="false"}
4. Under *Online License Activation*, paste or enter the license activation key obtained from Litmus in the **Activation Key** field.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aJ13QJz3nPn3BZG2-VDCg_online-license-key.png" size="80" width="870" height="784" position="center" showCaption="false"}
5. Click **Submit**.
   The license is activated and appears in the *License&#x20;*&#x70;ane.


[title] Prepare for Backup
[path] Product Features/System/Backup/Restore/

Review the following information to prepare for restoring a backup.&#x20;

:::hint{type="warning"}
**Important**: If you create a backup on an instance of Litmus Edge running on a virtual machine, you can't use the same backup to restore an instance of Litmus Edge running on a physical device.&#x20;
:::

Make sure you do the following before restoring a backup.&#x20;

- Obtain a license for backup and restore. A new license is needed each time the Litmus Edge device changes its MAC address.&#x20;
- Activate the device with Litmus Edge Manager. See [Activate an Edge Device](docId\:G1kWiYDlSR5u8qEJk0djp) for more information.

:::hint{type="success"}
**Tip**:&#x20;
**Request a License Key**

Contact your Litmus Edge representative to request a license key.

Once an additional license key has been received, go to **System&#x20;**>**&#x20;License** to enter the license key and activate the license. See [Upgrade a Node-Locked License](docId\:HiP2yHhUBzHMEdcA8skBZ) or [Upgrade a Node-Locked License Offline](docId:1VdgdV8fEU_Xx-zx41b9o).
:::

Your organization's standards and requirements dictate the frequency of device backups.

# Litmus Edge Configuration Backup and Virtual Machine Snapshots

Some virtual machines (such as VMware ESXI or MS HyperV) offer snapshots as a disaster recovery feature. Therefore, for these virtually deployed Litmus Edge instances, configuration backups should not be used as the primary means of disaster recovery.

A snapshot is the state of a virtual machine at a specific point in time. In addition to being able to save a Litmus Edge’s state like a configuration backup can, snapshots also preserve the virtual device’s memory and disc allocation.

For these virtual machines, configuration backups can be used instead to reset the configuration of a virtual device or to duplicate the setup of one device to many other virtual devices.


[title] Use the Asset Online Percentage KPI
[path] How-To-Guides/Analytics Guides/

The **Asset Online Percentage** KPI is a simple ratio of the time the tag has been online versus how long it has been running. This is also indicated by the *success* field in the incoming message from the tag.

# User Scenario

Review the following scenario for the asset online percentage KPI processor function. Then, using an input processor, you will simulate PLC data and calculate assets online in percentage with the current timestamp.

In a manufacturing facility, the asset online percentage KPI is needed for monitoring the performance of automated assembly lines. If the machine was only online for 8 hours out of 10, then it was online 80% of the time. By using this KPI, engineers can identify patterns of downtime and proactively schedule maintenance to prevent costly breakdowns.&#x20;

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1**

- **Name**: Select **S - Random value generator.**
- **Value Type:** Select **float64.**
- **Polling Interval**: Enter **1.**
- **Tag Name**: Enter **tag01.**

# Step 3: Create Analytics Flow

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Asset Online Percentage Processor function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the *Topic* field, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for **tag01**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select the **Asset Online Percentage&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Start Hour:&#x20;**&#x54;ime to **start&#x20;**&#x63;alculating the asset online percentage.
   - **End Hour:&#x20;**&#x54;ime to **end&#x20;**&#x63;alculating the asset online percentage.
   - **Time Interval:** If the tag publishes at the expected interval, it is better to disable this timer by entering **0** in the field.
   - Click **Save**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FMDBT1dS8eGg4cCNHjwlE_image.png" size="80" width="805" height="586" position="center" caption="Edit a Processor dialog box" showCaption="true"}
7. Connect the *DataHub Subscribe* processor (tag: *tag01*) to the *Asset Online Percentage&#x20;*&#x70;rocessor with a wire and use the **events&#x20;**&#x63;onnection.
8. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N456EZIv7AVNzkL4YeIxx_image.png" size="80" width="651" height="205" position="center" caption="Completed Flows Canvas" showCaption="true"}

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Asset Online Percentage&#x20;*&#x70;rocessor to view the output values.

The output describes a situation where the machine was online for **32.3%** of the time in the 24 hours.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/y6tGTILU5TN99_QtypjTE_image.png "Output of Asset Online Percentage processor")


[title] DeviceHub Guides
[path] How-To-Guides/

Refer to the following DeviceHub how-to guides.

- [Organize Device and Tag Data by Using Metadata](docId:583P-fbuozem6wHgRdGkQ)
- [Use the Batch-Write Topic to Send Multiple Write Requests](docId\:lQDXyI8u7LBpcZ8BpEAMX)
- [Use the Write Topic to Send Data to a PLC](docId\:Cvry8Cj21g1TGbJYrlI2L)
- [Use the Manage Topic to Stop a Device](docId\:LL1X_AvCrXSRF8DUgVJWU)
- [Use the Poll-Once Topic to Manually Retrieve Register Values](docId\:RBZS-inJo2i9fMyKvtZCp)
- [Use the PLC-Status Topic to Verify Connection Status](docId\:qEl-cScKBvIGVDMm3KcCw)
- [Use the Status Register to Connect a PLC](docId\:hVN0HI-9IFGljk0qi5GEm)
- [Use the Siemens S7 Browse Agent](docId\:dGrnb8Sr57iFEKdjafEmT)&#x20;
- [Connect to a Mazak MTConnect Demo Agent](docId\:jM7zO6THR1TH9LDaRueyv)&#x20;


[title] AMQP TCP Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and an AMQP broker.&#x20;

# Before You Begin

You will need access to an AMQP-TCP broker.&#x20;

Refer to the following to learn more:

- [Downloading and Installing RabbitMQ](https://www.rabbitmq.com/download.html)
- [Server Operator Documentation](https://www.rabbitmq.com/admin-guide.html)

# Step 1: Add a Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add the AMQP TCP Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **AMQP TCP&#x20;**&#x70;rovider.&#x20;

:::hint{type="info"}
**Note**: For configuring exchange options, see [AMQP TCP](docId\:tbqI9gJtHl4O5KDc8VT8O) and refer to the *Exchange Options* section to learn more.&#x20;
:::

Enter the details for the connector.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Enter the IP address for the AMQP broker.&#x20;
- **Port**: Enter the port number for the AMQP broker. The default value is **5671**.&#x20;
- **Virtual host** (Optional): Enter the virtual host path, which specifies the namespace for permissions, exchanges, queues, and bindings on the server.
- **Username&#x20;**(Optional): Enter the username for authentication with the AMQP broker. The default value is **guest**.&#x20;
- **Password&#x20;**(Optional): Enter the password for authentication with the AMQP broker. The default value is **guest**. &#x20;
- **Exchange&#x20;**(Optional): Enter the northbound (third-party) topic to publish to through the connector.
- **exchangeType**: Select the exchange type (direct, fanout, topic, x-custom).&#x20;
- **Exchange durable**: Select the checkbox to allow the exchange to survive restarts.&#x20;
- **Exchange auto delete**: Select the checkbox to make the server no longer remain declared when there are no remaining bindings.&#x20;
- **Exchange internal**: Select the checkbox to enable the *internal&#x20;*&#x66;lag.&#x20;
- **Exchange no wait**: Select the checkbox to instruct the exchange to not wait for a response.&#x20;
- **Routing key**: The AMQP routing key that the exchange might use to determine how to route messages to the queue.
- **ISO8601 timestamp**: Select this checkbox to convert message timestamps to the ISO8601 format before sending.
- **Throttling limit&#x20;**(Optional): The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 4: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cHakg20AyPvVyoMl4BLi0_amqptcp.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 5: Create Topics for Connector

You will now need to create outbound topics for the connector from the tags created in Step 2.

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 6: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

# Step 7: Verify Successful Connection

Access the AMQP broker and ensure that data is being sent from Litmus Edge to the broker.&#x20;

[title] Use the Rise and Fall Function
[path] How-To-Guides/Analytics Guides/

You can use the Rise and Fall function to calculate the difference in upper and lower thresholds between consecutive values from the PLCs.&#x20;

# Understanding Different Rise and Fall Functions

Use one of the following functions for your inputs:

- **Rise:&#x20;**&#x4F;nce you enter a lower and upper threshold, this function will show you the timestamp at which the current value starts to rise from the upper threshold.
- **Fall:&#x20;**&#x4F;nce you enter a lower and upper threshold, this function will show you the timestamp at which the current value starts to fall from the lower threshold.
- **RiseAndFall:&#x20;**&#x4F;nce you enter a lower and upper threshold, this function will show you the timestamp at which the current value starts to rise from the upper threshold and fall from the lower threshold.

# User Scenario

Review the following scenario for the rise and fall processor function. Then, you will simulate PLC data and calculate KPIs using a single input processor function.

Suppose you are monitoring a manufacturing process where a motor's temperature is being recorded by a PLC. You want to know when the temperature rises above 80 degrees Celsius and when it falls below 70 degrees Celsius. Using the RiseAndFall function with the appropriate thresholds, you can get the exact timestamps when the temperature rises above 80 degrees and falls below 70 degrees. This information can help you optimize the process and prevent any potential issues.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: temperature**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **temperature**
- **Min\_value**: Enter **60**
- **Max\_value**: Enter **90**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Rise and Fall function:**

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **temperature**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.

## Step 3a: Configure rise KPI&#x20;

1. Click **Add processor** again and select **Rise and Fall&#x20;**&#x70;rocessor.
   The following information defines this function\:v
   - **KPI:** Select **rise**.
   - **Tolerance:** Enter a value to determine the range of values considered acceptable.
   - **Upper:** Enter **80** for upper threshold value.
   - **Lower:** Enter **70** for lower threshold value.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/k5lwGS8Eg3HNhonWdka96_image.png "rise and fall dialog box")
3. Connect the DataHub Subscribe processor (tag: *temperature*) to the Rise and Fall processor with a wire and use the **events** connection.
4. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/I4Ba-kd5BWQoSh4fgqSkB_image.png "Completed analytics flow canvas")

## Step 3b: Configure fall KPI&#x20;

1. Click **Add processor** again and select **Rise and Fall&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **KPI:** Select **fall**.
   - **Tolerance:** Enter a value to determine the range of values considered acceptable.
   - **Upper:** Enter **80** for upper threshold value.
   - **Lower:** Enter **70** for lower threshold value.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UyqVy0lEmDwGpm7TXrvUe_image.png "rise and fall dialog box")
3. Connect the DataHub Subscribe processor (tag: *temperature*) to the Rise and Fall processor with a wire and use the **events** connection.
4. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/95PWcyu4J_226gmVAvtql_image.png "Completed analytics flow canvas")

## Step 3c: Configure riseAndFall KPI&#x20;

1. Click **Add processor** again and select **Rise and Fall&#x20;**&#x70;rocessor.
   The following information defines this function\:v
   - **KPI:** Select **riseAndFall**.
   - **Tolerance:** Enter a value to determine the range of values considered acceptable.
   - **Upper:** Enter **80** for upper threshold value.
   - **Lower:** Enter **70** for lower threshold value.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LJ8udCR1F3nHal867cMTF_image.png "rise and fall dialog box")
3. Connect the DataHub Subscribe processor (tag: *temperature*) to the Rise and Fall processor with a wire and use the **events** connection.
4. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/E2ISHhq7Z4KZNpW4Z87oO_image.png "Completed analytics flow canvas")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Rise and Fall&#x20;*&#x70;rocessor to view the output values.

## View rise KPI Output

As the generated value is **82.664**, which is more than the upper threshold, the output shows the `riseEnd`, `riseStart` and `riseTime` fields.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/I7l-xFUGwOKrEb9fU7cn5_image.png "rise KPI Output")

## View fall KPI Output

As the generated value is **67.775**, which is less than the lower threshold, the output shows the `fallEnd`, `fallStart` and `fallTime` fields.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5w0X3f6agPvTdYXGRWbLV_image.png "fall KPI Output")

## View riseAndFall KPI Output

After generating values of **68.557** and **83.003**, both falling outside the lower and upper thresholds, the corresponding fields are displayed.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WTtJ_5QauoHGa1rB619bX_image.png "riseAndFall KPI Output")


[title] Write to Databases with Integration Topics
[path] How-To-Guides/Flows Guides/

You can create Flows to send data to a database through integration topics.&#x20;

# Before You Begin

Make sure you follow the preferable database integration in the [Integration Guides](docId\:ZJCZ7NP6pGLZGihEVl8Ed). For this tutorial, we will use the [MySQL Integration Guide](docId\:vA1LuXPm0Kh57qTIs56FT).

# **Step 1: Add a Device**

Follow the steps to [Connect a Device]() and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, [Add Tags]() to the device.

## **Tag 1: tag1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **tag1**
- **Min\_value**: Enter **10**
- **Max\_value**: Enter **50**

# Step 3: Add a Database Integration Topic

**To add a database integration topic:**

1. In Litmus Edge, navigate to **Integration**.&#x20;
2. Click a **database integration** tile. Make sure the tile has a *Connected* status.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_42wOKGHoQz3lWzbSr5Pu_image.png" size="50" width="440" height="417" position="center" caption="Database integration tile" showCaption="true"}
3. Click **Topics**.&#x20;
4. Click **Add a new subscription** icon.&#x20;
   The *Data Integration dialog* box appears.&#x20;
   - **Data Direction:&#x20;**&#x53;elect **Local to Remote - Outbound**.
   - **Local Data Topic:** Click the **Search&#x20;**&#x69;con, and then select the device and alias topic for the tag you previously created.
   - Toggle **Enable** to enable the topic.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GOOZFKntAqWWOAiQoVcR9_image.png "Topics page in integration")
5. Click **Yes**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ci9Ebe2s891h0ZB9QRtLv_image.png "Edit data integration dialog box")

:::hint{type="info"}
**Note:** Modifying topics restarts the connector.
:::

# Step 4: Create Flow

**To create the flow:**

1. Navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow.&#x20;
   See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.
2. Drag the **Inject**, **Function**,**&#xA0;**&#x61;nd **DataHub Publish&#xA0;**&#x6E;odes to the canvas and wire them together.
3. Drag the **DataHub Subscribe&#xA0;**&#x61;nd **Debug&#xA0;**&#x6E;odes to the canvas and wire them together.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/12GYDgUk5fD3sbCt9FSn__flow-22339x203.png" size="50" width="339" height="203" position="center" caption="Flows canvas " showCaption="true"}
4. Double-click the **Function&#x20;**&#x6E;ode.&#x20;
   - In the **On Message** tab, input the code below, ensuring to update the variables *obj.name*, *obj.num*, and *msg.subjectInput* to match your topic and database.&#x20;
     `var obj = {}; // Create an empty JSON object.     `
     `obj.name ="test_table"; // Write the name of your database integration remote data topic in the quotation marks.     `
     `obj.num = 99000; // Change num to be one of the names of your columns or change 99000 to a value that you want to insert into the database.     `
     `msg.payload = JSON.stringify(obj); // Puts the JSON object into the message payload.     `
     `msg.subjectInput = "test_table"; // Write the name of your database integration remote data topic in the quotation marks.     `
     `return msg;`
   - Click **Done**.
5. Double-click the **Datahub Publish&#xA0;**&#x6E;ode.&#x20;
   - **Datahub:** Configure the *Datahub Publish&#x20;*&#x63;onnection if needed. See [Configure Connector Nodes](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
   - **Topic:&#x20;**&#x45;nter your topic name.
   - Click **Done**.
6. Double-click the **Datahub Subscribe** node.&#x20;
   - **Datahub:** Configure the *Datahub Subscribe&#x20;*&#x63;onnection if needed. See [Configure Connector Nodes](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
   - **Topic:&#x20;**&#x45;nter your topic name.
   - Click **Done**.
7. Click **Deploy**.
8. Expand the message window beneath the flow.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Zy8ybHzr9L7Zr34GsUSZH_image.png "Flow canvas message window")
9. Click the **Inject node button** to insert rows into the database. &#x20;
10. Click the **Debug&#xA0;**&#x69;con to view the data output.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sEDZRZpwbEVgyqOTnG7vO_image.png "Flows canvas debug tab ")

# Step 5: Verify the Results in Database

You can query the database to confirm that the integration topic inserted the data properly. See [Make Queries in the Container Terminal](docId\:vA1LuXPm0Kh57qTIs56FT) to learn more.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uk0Xf0bUijUyMnJApVDvT_image.png "Output of custom query on test_table")


[title] Use the Poll-Once Topic to Manually Retrieve Register Values
[path] How-To-Guides/DeviceHub Guides/

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

- You need to follow the following guidelines for topic names: [Subject-Based Messaging](https://docs.nats.io/nats-concepts/subjects).&#x20;
- When publishing structured data such as JSON, you must convert to a byte array (string) first. To do this in a flow, you can use the **json&#x20;**&#x6E;ode.&#x20;
:::

You can use the Poll-once topic to retrieve a register value when an event occurs. The Poll-once topic will manually trigger the polling of register values.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/DzNKDvVbWQQ?si=wiwA1AVJce2HtU1y&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

You don’t need to have real-time monitoring for a PLC, and you only need to get register values when a specific event is triggered, thereby reducing unnecessary network traffic. You therefore use the Poll-once topic to retrieve these event-triggered register values.&#x20;

# Set Up and Use the Poll-Once Topic

**To set up and use the Poll-once topic:&#x20;**

1. Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). For this user scenario, a Simulator Generator device is used.&#x20;
2. Follow the steps to [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) and create one tag with the following parameters.&#x20;
   - **Name**: S - Random value generator
   - **Value Type**: int64
   - **Polling Interval**: 0
   - **Tag Name**: Enter a name for the tag.&#x20;
   - **Address**: 1
3. Click the **Copy&#x20;**&#x69;con for the tag's RAW Topic. Save (paste) this RAW Topic somewhere secure. You will refer to this later.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/niA_RXhl80A9b7uEhFe5I_copy-raw-topic.png "Copy RAW Topic icon")
4. Click the **Action menu** for the tag and selec&#x74;**&#x20;View Poll Topic**.&#x20;
   The *Poll Once* dialog box displays.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/POapcnnq3be93g79SoLTW_poll-once-topic.png "The View Poll Topic option")
5. Click the **Copy&#x20;**&#x69;con for the tag. You will refer to this later.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HHoEtz9ldE7A9QrzodN7d_poll-once-icon.png" size="80" width="786" height="316" position="center" showCaption="false"}
6. Navigate to **Flows Manager**.&#x20;
7. For a Flows Manager, click the **Go To Flow Definition** icon.&#x20;
   The Flow canvas opens in a new browser tab.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7V-lMFoDbKs0kJVZDJlgK_go-to-flow-definition.png" size="80" width="1010" height="490" caption="Go To Flow Definition icon" position="center" showCaption="true"}
8. On the Flow canvas, drag the **inject&#x20;**&#x6E;ode and **DataHub Publish** node onto the canvas. Then, connect the two nodes.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DezwjDs5jwEmTUqko9Bqq_inject-and-publish-nodes.png" size="80" width="862" height="555" caption="The inject and DataHub Publish nodes" position="center" showCaption="true"}
9. Double-click the **DataHub Publish&#x20;**&#x6E;ode.&#x20;
   The *Edit DataHub Publish* node dialog box displays.&#x20;
   - In the **Topic&#x20;**&#x66;ield, paste the Poll-once topic you copied in step 5.&#x20;
   - If needed, configure the Datahub Publish connection. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
   - Click **Done**.&#x20;
10. Drag the **DataHub Subscribe** node and **debug&#x20;**&#x6E;ode onto the canvas.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/E9uIt7zH_PdKJpsS1HOYl_subscribe-and-debug-nodes.png" size="80" width="801" height="462" caption="The DataHub Subscribe and debug nodes" position="center" showCaption="true"}
11. Double-click the **DataHub Subscribe** node.&#x20;
    The *Edit DataHub Subscribe* node dialog box displays.&#x20;
    - In the **Topic&#x20;**&#x66;ield, paste the Raw Topic you copied in step 2.&#x20;
    - Click **Done**, and then **Deploy**.&#x20;
12. Expand the message window beneath the flow.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Zh___1Jnu2LMvcPHcAmSQ_poll-once-message-bar.png" size="80" width="1713" height="892" caption="The message window" position="center" showCaption="true"}
13. Click the **Debug&#x20;**&#x69;con to view messages from the debug node.
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tnKgBHcMjkJX1PYETh0Yt_poll-once-debug-icon.png" size="80" width="1712" height="625" caption="The debug icon" position="center" showCaption="true"}
14. Click the **Inject&#x20;**&#x62;utton. This triggers the timestamp message, which will then trigger the poll-once tag to be activated.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DNQ7i4TPmQUvsbGOiS2O4_poll-once-inject-button.png" size="80" width="820" height="500" position="center" caption="The inject button" showCaption="true"}
15. Confirm the **Debug&#x20;**&#x6E;ode is activated. &#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KCp1K7jEKyfaQioiTaG-x_poll-once-debug-button.png" size="80" width="801" height="462" caption="The Activate Debug button" position="center" showCaption="true"}
16. The debug window displays a `"success" :true` message, which means the poll-once tag successfully polled the device and displayed the data for the tag.      &#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cO5Ut4NUShhaFKWyEG-uZ_poll-once-success-message.png" size="80" width="1920" height="937" position="center" showCaption="false"}

The rest of the payload displays the following information for the tag:

- **Data Type**: The data type configured for the tag you created in step 1.&#x20;
- **Timestamp**: Date and time data for the poll-once message.&#x20;
- **Register ID**: The register ID for the tag generated in Litmus Edge.&#x20;
- **Value**: The value generated for the tag when the poll was triggered. Since the tag was configured with *S - Random value generator*, a random value is generated.&#x20;
- **Device ID**: The device ID for the DeviceHub device generated in Litmus Edge.&#x20;
- **Tag Name**: The name you configured for the tag.&#x20;
- **Device Name**: The name you configured for the device.&#x20;
- **Description**: The description you entered for the tag. Since no description was entered for the tag in this use case, no value was displayed.&#x20;
- **Metadata**: The meta data configured for the tag. Since no meta data was configured for the tag in this use case, no value was displayed.&#x20;


[title] Generic MQTT Integration Guide (Mosquitto)
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and an MQTT broker using Mosquitto.&#x20;

Mosquitto is a lightweight open source message broker that Implements MQTT versions 3.1.0, 3.1.1, and version 5.0.

# Before You Begin

- You must download the Mosquitto message broker. See the [Mosquitto Download](https://mosquitto.org/download/) page to learn more.&#x20;
- Configure Mosquitto so that anonymous users are allowed to access it.&#x20;

To verify that Mosquitto is running in Windows, open up a command prompt and enter `netstat -an`. If Mosquitto is successfully running, you should be able to see your IP address and port 1883.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vU5CpbyFcdYaM9-vyEMLv_image.png" size="80" width="978" height="356" position="center" showCaption="false"}

If you don't see port 1883 being used:

- Open **Task Manager > Services&#xA0;**&#x61;nd start/restart the Mosquitto server from there.
- Make sure the **mosquitto.conf** file is correctly configured so that Mosquitto can run on your system.&#x20;

# Step 1: Add the Generic MQTT Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **MQTT - Generic&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Mosquitto is running locally on your PC, so enter your IP address.&#x20;
  If needed, use the `ipconfig `command in the command prompt window and refer to the IPv4 Address.
- **Port**: Confirm that the default value **1883** is entered.&#x20;
- **Client ID**: Enter **1**.
- **Username**: Leave this field blank.&#x20;
- **Password**: Leave this field blank.&#x20;
- **QoS**: Make sure the default value **1** is selected.&#x20;
- **Parallel Publish Count**: Confirm the default value **100&#x20;**&#x69;s entered. The number of messages being published simultaneously. Once the defined limit has been reached, subsequent messages are silently dropped. The default value is 100.&#x20;
- **Integration Topic**: Enter **mos\_topic\_1**.&#x20;
- **LWT topic**: The topic for MQTT's Last Will and Testament feature. You can leave this value blank.&#x20;
- **LWT payload**: The payload for MQTT's Last Will and Testament feature. You can leave this value blank.
- **LWT payload type**: The payload type for MQTT's Last Will and Testament feature. The options are *string&#x20;*&#x61;nd *base64*.&#x20;
- **LWT QoS**: The Quality of Service value for MQTT's Last Will and Testament feature. The default value is **1**.&#x20;
- **LWT retained**: Select this checkbox to retain the value for MQTT's Last Will and Testament feature.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online.  
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 2: Add Outbound/Inbound Topic to Connector

**To add the outbound and inbound topics to the MQTT connector:**

1. Navigate to **Integration**.&#x20;
2. Click the *MQTT - Generic&#x20;*&#x63;onnector tile.&#x20;
3. Click the **Topics&#x20;**&#x74;ab.&#x20;
4. Click the **Add a new subscription** icon.&#x20;
   Th&#x65;*&#x20;Data Integration&#x20;*&#x64;ialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Aj9tTx4BUmgxzEsVkWk3l_addnewsubicon.png" size="80" width="1279" height="325" caption="Add a new subscription icon" position="center" showCaption="true"}
5. Configure the following parameters.&#x20;
   - **Data Direction**: Select **Local to Remote - Outbound**.&#x20;
   - **Local Data Topic**: Enter a name for the local data topic.&#x20;
   - **Remote Data Topic**: Confirm the topic where the data is pushed. This is th&#x65;*&#x20;Integration Topic&#x20;*&#x76;alue for the connector.&#x20;
   - **Enable**: Select the toggle to enable the topic.&#x20;
6. Click **OK&#x20;**&#x74;o add the topic.&#x20;
7. Click the **Add a new subscription** icon again to add the inbound topic.
8. Configure the following parameters.&#x20;
   - **Data Direction**: Select **Remote to Local - Inbound**.
   - **Local Data Topic**: Enter **integration.raw\.Mos\_topic\_1**.
   - **Remote Data Topic**: Confirm the topic where the data is pushed. This is th&#x65;*&#x20;Integration Topic&#x20;*&#x76;alue for the connector.&#x20;
   - **Enable**: Select the toggle to enable the topic.&#x20;
9. Click **OK&#x20;**&#x74;o add the topic.&#x20;

# Step 3: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NnmgEcHpmj4lj2M2hhGnT_mqttgeneric.png" size="60" width="369" height="345" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 4: Create Flow to Verify Connection

**To create the flow:**

1. In Litmus Edge, navigate to **Flows Manager**.&#x20;
2. Click th&#x65;**&#x20;Go To Flow Definition** icon for a selected **Flows Manager**.&#x20;
   The *Flow canvas* opens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6Y7MEND2DIhy478Wqq8sW_gotoflowdefinition.png" size="80" width="1203" height="421" caption="Go To Flow Definition icon" position="center" showCaption="true"}
3. From the flow canvas, drag the **DataHub Subscribe** node (DataConnector section), **Inject&#x20;**&#x6E;ode (Common section), and **Debug&#x20;**&#x6E;ode (Common section) to the canvas.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bKk53hNGYnLbaRL4kr73k_three-nodes.png" size="80" width="1055" height="690" caption="The DataHub Subscribe, Inject, and Debug nodes" position="center" showCaption="true"}
4. Connect the **DataHub Subscribe** and **Inject&#x20;**&#x6E;odes to the **Debug&#x20;**&#x6E;ode.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9xlHFwsenS98ux421NiDi_mosquitto-mqtt-flow-layout.png" size="60" width="350" height="336" position="center" showCaption="false"}
5. Double click the **DataHub Subscribe** node.&#x20;
   The *Edit DataHub Subscribe Node&#x20;*&#x64;ialog box appears.
6. In the **Topic&#x20;**&#x66;ield, enter **integration.raw\.Mos\_topic\_in**.&#x20;
7. If needed, configure the DataHub Subscribe connection. See [Configure Connector Nodes](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
8. Click **Done**.&#x20;
9. Double-click the **Inject&#x20;**&#x6E;ode.&#x20;
   The *Edit Inject Node* dialog box appears.
10. In the **msg.payload** field, select **string**.&#x20;
11. In the **msg.topic field**, enter **integration.raw\.Mos\_topic\_1**.&#x20;
12. Enter **test&#x20;**&#x69;n the **Name&#x20;**&#x66;ield, and then click **Done**.&#x20;
13. Click **Deploy&#x20;**&#x74;o save the flow.&#x20;
14. Open the command prompt window and go to the directory that stores Mosquitto files.
15. Enter `mosquitto_pub.exe -t mos_topic_1 -m "Hello from Mosquitto"`, and then press **ENTER**.
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/laGmsoRCHm05KMT_hvcf2_mosquitto-mqtt-command-prompt.png" size="80" width="732" height="422" caption="Command prompt window" position="center" showCaption="true"}
16. In the browser window that has the Litmus Edge flow canvas, expand the message window beneath the flow to view debug messages and click the **Debug&#xA0;**&#x69;con. Verify that *Hello from mosquitto* displays.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aKE2gMzjIE3sddqkKj7Nu_image.png" size="80" width="1096" height="739" caption="Successful message in Flow canvas" position="center" showCaption="true"}


[title] Tag Data Type Conversions
[path] How-To-Guides/DeviceHub Guides/Use the Siemens S7 Browse Agent/

Tag Data Type conversion is converted as follows:

- TIA Portal Tag Table Data Types
- TIA Portal Program Block Data Types

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

- Arrays are automatically expanded. For each array, a tag is created for the entire array as well as each index in the array.
- Tags cannot be created for User Data Types or Strings placed in the InOut section of a function block.
- User-defined types in tag tables cannot be expanded. The address of the start of the UDT will be provided as a tag.&#x20;
:::

# TIA Portal Tag Table Data Types

*TIA Portal tag table* *data types* are converted to *Server data types* as follows:

| **TIA Portal Data Type** | **Server Data Type** |
| ------------------------ | -------------------- |
| Bool                     | Boolean              |
| Byte                     | Byte                 |
| Char                     | Char                 |
| Counter                  | Word                 |
| Date                     | String               |
| Dint                     | Long                 |
| DWord                    | DWord                |
| Int                      | Short                |
| Real                     | Float                |
| S5Time                   | Long                 |
| Time                     | String               |
| Timer                    | Long                 |
| Time Of Day              | String               |
| Word                     | Word                 |
| Aom\_Ident               | DWord                |
| Conn\_Any                | Word                 |
| Conn\_Ouc                | Word                 |
| Conn\_Prg                | Word                 |
| Conn\_R\_Id              | DWord                |
| DB\_ANY                  | Word                 |
| DB\_DYN                  | Word                 |
| DB\_WWW                  | Word                 |
| Event\_Any               | DWord                |
| Event\_Att               | DWord                |
| Event\_HwInt             | DWord                |
| Hw\_Any                  | Word                 |
| Hw\_Device               | Word                 |
| Hw\_DpMaster             | Word                 |
| Hw\_DpSlave              | Word                 |
| Hw\_Hsc                  | Word                 |
| Hw\_Interface            | Word                 |
| Hw\_IEPort               | Word                 |
| Hw\_Io                   | Word                 |
| Hw\_IoSystem             | Word                 |
| Hw\_Module               | Word                 |
| Hw\_Pto                  | Word                 |
| Hw\_Pwm                  | Word                 |
| Hw\_SubModule            | Word                 |
| LReal                    | Double               |
| OB\_Any                  | Short                |
| OB\_Att                  | Short                |
| OB\_Cyclic               | Short                |
| OB\_Delay                | Short                |
| OB\_DIAG                 | Short                |
| OB\_HWINT                | Short                |
| OB\_PCYCLE               | Short                |
| OB\_STARTUP              | Short                |
| OB\_TIMEERROR            | Short                |
| OB\_Tod                  | Short                |
| Pip                      | Word                 |
| Port                     | Word                 |
| Rtm                      | Word                 |
| SInt                     | Char                 |
| UDInt                    | DWord                |
| UInt                     | Word                 |
| USInt                    | Byte                 |
| WChar                    | Short                |

# TIA Portal Program Block Data Types

*TIA Portal program block data types&#x20;*&#x61;re converted to *Server data types&#x20;*&#x61;s follows:

| **TIA Portal Data Type** | **Server Data Type** |
| ------------------------ | -------------------- |
| Bool                     | Boolean              |
| Byte                     | Byte                 |
| Char                     | Char                 |
| Counter                  | Char                 |
| Date                     | String               |
| Dint                     | Long                 |
| DWord                    | DWord                |
| Int                      | Short                |
| Real                     | Float                |
| S5Time                   | Long                 |
| Time                     | String               |
| Timer                    | String               |
| Time Of Day              | String               |
| Word                     | Word                 |
| Date and Time            | String               |
| AOM\_IDENT               | DWord                |
| CONN\_ANY                | Word                 |
| CONN\_OUC                | Word                 |
| CONN\_PRG                | Word                 |
| CONN\_R\_ID              | DWord                |
| DB\_ANY                  | Word                 |
| DB\_DYN                  | Word                 |
| DB\_WWW                  | Word                 |
| EVENT\_ANY               | DWord                |
| EVENT\_ATT               | DWord                |
| EVENT\_HWINT             | DWord                |
| Hw\_Any                  | Word                 |
| Hw\_Device               | Word                 |
| Hw\_DPMaster             | Word                 |
| Hw\_DPSlave              | Word                 |
| Hw\_HSC                  | Word                 |
| Hw\_Interface            | Word                 |
| Hw\_IEPort               | Word                 |
| Hw\_Io                   | Word                 |
| Hw\_IoSystem             | Word                 |
| Hw\_Module               | Word                 |
| Hw\_Pto                  | Word                 |
| Hw\_Pwm                  | Word                 |
| Hw\_SubModule            | Word                 |
| LReal                    | Double               |
| OB\_Any                  | Short                |
| OB\_Att                  | Short                |
| OB\_Cyclic               | Short                |
| OB\_Delay                | Short                |
| OB\_DIAG                 | Short                |
| OB\_HWINT                | Short                |
| OB\_PCYCLE               | Short                |
| OB\_STARTUP              | Short                |
| OB\_TIMEERROR            | Short                |
| OB\_Tod                  | Short                |
| Pip                      | Word                 |
| Port                     | Word                 |
| Rtm                      | Word                 |
| SInt                     | Char                 |
| UDInt                    | DWord                |
| UInt                     | Word                 |
| USInt                    | Byte                 |
| WChar                    | Short                |


[title] Events
[path] Product Features/System/

The *Events&#xA0;*&#x70;ane displays a list of events that have occurred in Litmus Edge.

Events are the actions the edge device performs, identifies, and then logs during its operation.

You can view information for each of the listed events: the edge device component where the event occurred, the event severity, and so on.

Events are tracked for the following components:

- Integration
- DeviceHub
- System
- Authentication (auth)
- Marketplace
- Licensing
- OPC UA
- Flows Manager
- Digital Twins
- Analytics

:::hint{type="info"}
**Limitation**: Delete and restart events are not tracked.
:::

See [Generated System Events](docId\:nrR1VQmoepUqu_YVQRNlh) for more information.

For Litmus Edge version 3.11.0 and later, you can view and copy the topic name for system events.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/U_tMDQeuzwTMm9spW4oc9_image.png "Events topic")

Th&#x65;**&#xA0;***Events&#xA0;*&#x70;ane includes two tabs:

- **Live Events**: Shows events as they occur in inverse chronological order.
- **Events History**: Filter and sort the events using a number of criteria: date and time range, component name, and so on.

# Live Events

The Live Events tab allows you to view the following columns for each event:

- Timestamp for when the event occurred
- Severity of the event
- Component for which the event occurred
- Message explaining the event action
- Event Information icon allowing you to view information about the event
- Action icon allowing you to select *History&#x20;*&#x66;or the event

:::hint{type="info"}
**Note**: Hovering over the **Event Information** icon allows you to view the severity, driver, connector, message, user, name, tags added and tags removed depending on the component for the event selected.
:::

## Freeze and Resume Live Events

You can click **Freeze&#x20;**&#x74;o stop the logging of live system events. Click **Resume&#x20;**&#x74;o start the logging of live system events.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Xxhx6bzq0Uy1WhfeV3KC__image.png "The Freeze button for live events")

# Events History&#x20;

You can view events history from the *Events&#x20;*&#x70;ane.&#x20;

## Event History for Individual Live Events

To view the event history of an individual live event, click the **Action menu** for the event in th&#x65;*&#x20;Live Events&#x20;*&#x74;ab and select **History**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AJyQWtRNsFAUWsxm2DGvy_image.png "The History option for live events")

The filtering is preloaded and the events history for the selected live event appears in the *Events History* tab.

## Filtered Event History

You can use the *Events History* tab to enter filter criteria and view specific event history.&#x20;

:::hint{type="info"}
**Note**: As of Litmus Edge version 3.11.0, the action menu for events in th&#x65;*&#x20;Event History* tab is no longer available.&#x20;
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/csEXQNEm7TsMVs8esjQCk_image.png "Events History tab")

Enter your filter criteria for viewing event history and click **Load**. To use the search function, make sure you have loaded an event history with filtering criteria before entering search terms.&#x20;

You can view the following columns for each event:

- Timestamp for when the event occurred
- Severity of the event
- Component for which the event occurred
- Message explaining the event action
- Event Information icon allowing you to view information about the event
- Action icon allowing you to select Event History for the event

## Download Event History

:::hint{type="info"}
**Note**: The ability to download your event history is available for Litmus Edge version 3.11.0 and later.&#x20;
:::

You can download your event history in a CSV file by selecting the **Events History** tab, and then clicking the **Download as CSV** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-_vtFvJJKhI5JZmEpAjIu_image.png "The Download as CSV icon")

## Purge Event History

:::hint{type="info"}
**Note**: The ability to purge your event history is available for Litmus Edge version 3.11.1 and later.&#x20;
:::

You can purge your event history by selecting the **Events History** tab, and then clicking the **Purge all** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_XczTdh6smKzlQOZtSyr2_image.png "Purge all events icon")


[title] AMQP SSL Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and an AMQP broker with SSL authentication.&#x20;

# Before You Begin

You will need the following:

- Access to an AMQP broker that uses SSL authentication.&#x20;
- The CA certificate and other required authentication parameters needed to access the broker.&#x20;

Refer to the following links to learn more:

- [Downloading and Installing RabbitMQ](https://www.rabbitmq.com/download.html)
- [Enabling TLS Support in RabbitMQ](https://www.rabbitmq.com/ssl.html#enabling-tls)
- [OpenSSL Downloads](https://www.openssl.org/source/)

# Step 1: Add a Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add the AMQP SSL Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **AMQP SSL** provider.&#x20;

:::hint{type="info"}
**Note**: For configuring exchange options, see [AMQP SSL](docId\:rg_43hJ4AMeMH6RB-cP4C) and refer to the *Exchange Options* section to learn more.&#x20;
:::

Enter the details for the connector.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Enter the IP address for the AMQP broker.&#x20;
- **Port**: Enter the port number for the AMQP broker. The default value is **5671**.&#x20;
- **Virtual host** (Optional): Enter the virtual host path, which specifies the namespace for permissions, exchanges, queues, and bindings on the server.
- **Username&#x20;**(Optional): Enter the username for authentication with the AMQP broker. The default value is **guest**.&#x20;
- **Password&#x20;**(Optional): Enter the password for authentication with the AMQP broker. The default value is **guest**. &#x20;
- **Exchange&#x20;**(Optional): Enter the northbound (third-party) topic to publish to through the connector.
- **exchangeType**: Select the exchange type (direct, fanout, topic, x-custom).&#x20;
- **Exchange durable**: Select the checkbox to allow the exchange to survive restarts.&#x20;
- **Exchange auto delete**: Select the checkbox to make the server no longer remain declared when there are no remaining bindings.&#x20;
- **Exchange internal**: Select the checkbox to enable the *internal&#x20;*&#x66;lag.&#x20;
- **Exchange no wait**: Select the checkbox to instruct the exchange to not wait for a response.&#x20;
- **Routing key**: The AMQP routing key that the exchange might use to determine how to route messages to the queue.
- **ISO8601 timestamp**: Select this checkbox to convert message timestamps to the ISO8601 format before sending.
- **CA Certificate**: Paste the CA certificate associated with the broker. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Certificate&#x20;**(Optional): Paste the SSL certificate. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Private key** (Optional): Enter or paste the SSL private key.&#x20;
- **Throttling limit&#x20;**(Optional): The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 4: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8KBgai2vx5kuY8puFgarA_amqpssl.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 5: Create Topics for Connector

You will now need to create outbound topics for the connector from the tags created in Step 2.

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 6: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

# Step 7: Verify Successful Connection

Access the AMQP broker and ensure that data is being sent from Litmus Edge to the broker.&#x20;

[title] Use the Change of Value KPI
[path] How-To-Guides/Analytics Guides/

The **Change of Value** KPI displays the complete message payload when the current value differs from the previous value. If there is no substantial change, no output is displayed.

# User Scenario

Review the following scenario for the change of value KPI processor function. Then, using an input processor, you will simulate PLC data and use this KPI to detect a change of value in the input field.

In an industrial setting, the Change of Value KPI is used to monitor the voltage levels in an electrical grid. The input processor continuously collects voltage data and feeds it to the Change of Value KPI processor. The KPI triggers an output when there is a substantial change in voltage, alerting the operators to potential issues. Otherwise, if things are normal, no output is expected. It allows the engineers to promptly respond to voltage fluctuations, preventing equipment damage and outages.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: voltage**

- **Name**: Select **S - Random value generator.**
- **Value Type:** Select **float64.**
- **Polling Interval**: Enter **1.**
- **Tag Name**: Enter **voltage.**
- **Min Value:&#x20;**&#x45;nter **99.**
- **Max Value:** Enter **103.**

# Step 3: Create Analytics Flow

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Change of Value Processor function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the *Topic* field, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **voltage&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select the **Change of Value&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Map Field Name:&#x20;**&#x45;nter the field you want to observe like *value* or *timestamp*, depending entirely on the input message you are sending to this KPI.
   - **Delta of Tolerance:&#x20;**&#x45;nter a delta of **1&#x20;**&#x69;f you want to allow ignoring a change of *+/- 1* from your previous value. If you enter delta as **0**, even the smallest change will be detected by this KPI.
   - **Time Interval:** If the tag publishes at the expected interval, it is better to disable this timer by entering **0** in the field.
   - Click **Save**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/i6gSWzDzq6JF7cGjvtXK8_image.png" size="80" width="759" height="548" position="center" caption="Edit a Processor dialog box" showCaption="true"}
7. Connect the *DataHub Subscribe* processor (tag: *voltage*) to the *Change of Value&#x20;*&#x70;rocessor with a wire and use the **events&#x20;**&#x63;onnection.
8. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tzRQf-RW-j3XPZ1oD2sFL_image.png" size="80" width="683" height="187" position="center" caption="Completed Flows Canvas" showCaption="true"}

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Change of Value&#x20;*&#x70;rocessor to view the output values.

The output displays the message payload when the value field is **+/- 1&#x20;**&#x66;rom your previous value.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SzOmxc9srdY3iRYoziLrn_image.png "Output of Change of Value processor")


[title] Send Alerts to a Mobile Phone
[path] How-To-Guides/Flows Guides/

You can use Flows to set up automated SMS alerts that can be sent to a mobile phone.&#x20;

# User Scenario&#x20;

In a manufacturing plant, when certain conditions are met, such as temperature exceeding safe limits, you can send alerts from the shop floor to workers who need to respond to that critical condition.

Here's how you can do it using Litmus Edge:

1. Read tags from a PLC.
2. Define alerts (conditions/rules/levels) in Flows.&#x20;
3. Route alerts to specific cell phones or user groups.&#x20;

# Strategies for Sending Alerts

You can send alert messages to a mobile device with either SMS Gateway or WiFi/ Networks.

## Use an SMS Gateway for Messaging

- **SMPP-based SMS Gateway**: To generate alerts through SMS, you can use the SMPP (Short Message Peer-to-Peer) protocol. You have the option to use a gateway that is available in a data center, or you can deploy an open-source solution such as Jasmin SMS Gateway, which can be installed in Litmus Edge by navigating to **Applications&#x20;**> **Marketplace**.
- **Hardware SMS Gateway**: You can deploy a device with a SIM card and use Flows to send messages to the gateway when an alert is triggered.
- **Online SMS Gateway**: You can use online cloud-based SMS gateways like AWS SNS or Twilio for sending SMS alerts.&#x20;

For instructions on how to create a Twilio flow to send an SMS alert, please refer to the section below titled "Create Twilio Flow to Send an SMS Alert".

## Use WiFi/ Network for Messaging

Install a Notification-receiving mobile app. Several MBaaS (Mobile Backend-as-a-Service) applications (such as Kinvey, Cloudkit for iOS, or Firebase) provide this capability.

- Litmus Edge becomes the Notification Server.
- The app connects to flows to receive notifications.

# Create Twilio Flow to Send an SMS Alert

The following example provides high-level guidance for configuring outgoing Twilio messaging in flows. Because each enterprise has unique requirements and configurations, customize this example for your environment.

## Before You Begin

You will need to sign up for a Twilio account on their [website](https://www.twilio.com/). Note that Twilio charges for message activity.

## Step 1: Configure the Twilio Node

**To configure the Twilio node:**

1. In Litmus Edge, navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow. See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.
2. On the flow canvas, add the **Twilio out&#x20;**&#x6E;ode.&#x20;
3. Double-click the node.&#x20;
   The *Edit twilio out node&#x20;*&#x64;ialog box appears.
   - **Output:&#x20;**&#x53;elect **SMS&#x20;**&#x66;rom the dropdown options.&#x20;
   - **Name:** Enter **twilio\_alert**.
   - **To:&#x20;**&#x45;nter the **phone number&#x20;**(no spaces or special characters) for the person who receives the text messages.&#x20;
   - **Twilio:&#x20;**&#x43;lick the **Edit&#x20;**&#x69;con and configure the following parameters for the Twilio connection.&#x20;
     To retrieve these values, log in to your Twilio account and access the *Programmable SMS Dashboard*.&#x20;
     - **Account SID**: Find this **SID&#x20;**(Security ID) in the Twilio account dashboard.
     - **From**: Use the Twilio-assigned **phone number** found in your Twilio account.
     - **Token:** Find this **authentication token** in the Twilio account dashboard.
       ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YPcRj2mZCN0xxp3pkh2jP_image.png" size="70" width="763" height="544" position="center" caption="Twilio account dashboard" showCaption="true"}
     - **Name:** Enter an optional user-defined **name**.
     - Click **Update**.
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Le1_OuhCF_g_WrXX_u7S3_image.png" size="50" width="688" height="457" position="center" caption="Edit twilio out node dialog box" showCaption="true"}

## Step 2: Test Connectivity

**To test the connectivity:**

1. Drag a **Function&#x20;**&#x61;nd **Inject&#x20;**&#x6E;odes to the canvas and wire them to the **Twilio** node.
2. Double-click the **Function&#x20;**&#x6E;ode.&#x20;
   - **On Message**: Enter a basic **message&#x20;**&#x74;o send as a text message.&#x20;
     Use this code as an example:
     `msg.payload = "Alert: This is a test message from the manufacturing floor.";     `
     `return msg;`
   - Click **Done**.&#x20;
3. Click **Deploy**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xKCJPnOrxgpGVjXVfvDGP_image.png "Completed flows canvas")
4. Click the **Inject&#x20;**&#x6E;ode button to trigger the alert and check the respective phone for the text message.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uzbN855y9vVHhx5UTUcUT_image.png" size="50" width="736" height="552" position="center" caption="Alert message from twilio" showCaption="true"}


[title] Use the Manage Topic to Stop a Device
[path] How-To-Guides/DeviceHub Guides/

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

- You need to follow the following guidelines for topic names: [Subject-Based Messaging](https://docs.nats.io/nats-concepts/subjects).&#x20;
- When publishing structured data such as JSON, you must convert to a byte array (string) first. To do this in a flow, you can use the **json&#x20;**&#x6E;ode.&#x20;
:::

The Manage topic allows you to control the status of a DeviceHub device.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/zUhR_e9DpvM?si=MpcUUDKSUobwJbe2&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

You'd like to remotely disconnect a PLC from Litmus Edge.&#x20;

# Set Up and Use the Manage Topic

**To set up and use the Manage topic:**

1. Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). For this user scenario, a Simulator Generator device is used.&#x20;
2. Navigate to **DeviceHub**.
3. In the Generator device tile, click the **Display Copy Options** icon and select the Manage topic. This will copy the Manage status topic.  You will refer to this topic later on.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Xrjcj8WXfmFsYunbDWeNN_copy-manage-topic.png" size="80" width="671" height="373" caption="Copy the manage topic" position="center" showCaption="true"}
4. Navigate to **Flows Manager**.&#x20;
5. For a Flows Manager, click the **Go To Flow Definition** icon.&#x20;
   The Flow canvas opens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eS8eKsky9erOo1BgLHWsU_go-to-flow-definition.png" size="80" width="1010" height="490" caption="Go To Flow Definition icon" position="center" showCaption="true"}
6. On the Flow canvas, copy the **DataHub Publish** node and **inject&#x20;**&#x6E;ode onto the canvas. Then, connect the two nodes.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hxeBGHjI4zRRnTQbC11Lj_manage-nodes.png" size="80" width="767" height="503" caption="The nodes needed for the manage topic" position="center" showCaption="true"}
7. Double-click the DataHub Publish node.&#x20;
   - In the **Topic&#x20;**&#x66;ield, paste the Manage topic you copied in step 3.&#x20;
   - If needed, configure the Datahub Publish connection. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
   - Click **Done**.&#x20;
8. Double-click the **inject&#x20;**&#x6E;ode.&#x20;
   The *Edit inject* node dialog box displays.&#x20;
9. For **msg.payload**, select **string**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kq5hmoJOK102KwP524Kd-_string-payload.png" size="80" width="565" height="883" caption="Select a string payload" position="center" showCaption="true"}
10. For **msg.payload**, enter `{"command" : "stop"}`.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/r2q-Y9AvRkXGIstxxuL4m_stop-command.png" size="60" width="561" height="890" caption="Command to stop device" position="center" showCaption="true"}
11. Click **Done**, and then click **Deploy**.
12. Click the **inject&#x20;**&#x62;utton. This triggers the payload message you configured for the node.&#x20;
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5Asv74QwMTjgwjEd4worC_activate-inject-button.png "The inject button")
13. Return to the Litmus Edge browser window and navigate to **DeviceHub**. The device now shows a *Stopped&#x20;*&#x73;tatus.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wsChus5eqPIHIu0c5pHIC_device-stopped.png" size="60" width="431" height="360" caption="Stopped status" position="center" showCaption="true"}

To restart the device, you can use the following command: `{"command" : "start"}`.

[title] Create a Chart
[path] How-To-Guides/Flows Guides/

You can use Flows to create different types of visualizations such as Line charts, Bar charts, Pie charts, Polar area charts, and Radar charts.

# **Use**r Sce**nario**

Review the following scenario for creating a Line chart using Flows Manager.

In a food processing plant, engineers need to monitor and optimize refrigeration units. They can create a line chart visualization with two lines: one showing the temperature in Celsius and the other converting these readings to Fahrenheit. This real-time chart helps in maintaining precise temperature control, which is critical for food safety standards. Such visualization helps in quick decision-making if temperatures deviate from the desired range, ensuring product quality and regulatory compliance.

# Step 1: Create the Chart

**To create a temperature conversion line chart:**

1. In Litmus Edge, navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow.&#x20;
   See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
2. Drag a **Datahub Subscribe&#x20;**&#x6E;ode, two **Function&#x20;**&#x6E;odes, and a **Chart** node to the canvas and wire them together.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0O8FWw3dLapqt9JMkS5GO_image.png" size="70" width="607" height="192" position="center" caption="Flows canvas with chart node" showCaption="true"}
3. Double-click the **Datahub Subscribe** node.
   The *Edit Datahub Subscribe node&#x20;*&#x64;ialog box appears.
   - **Datahub:&#x20;**&#x43;onfigure the Datahub connection if needed. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
   - **Topic:&#x20;**&#x45;nter **Fahrenheit**.
   - **Name:&#x20;**&#x45;nter **Temperature**.
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/f7Y4NiMev08RYgD7Tgf2s_image.png" size="60" width="403" height="256" position="center" caption="Edit Datahub Subscribe node dialog box" showCaption="true"}
4. Double-click one of the **Function&#x20;**&#x6E;odes.
   The *Edit function node&#x20;*&#x64;ialog box appears.
   - **Name:&#x20;**&#x45;nter **Farenheit**.
   - **On Message:&#x20;**&#x45;nter the following lines of code to return the temperature in Fahrenheit:
     `msg.topic = 'Fahrenheit '; // Defines the variable`
     `return msg;`
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NXr8w48TTEVRtQoVeDbjH_image.png" size="70" width="512" height="247" position="center" caption="Edit function node dialog box" showCaption="true"}
5. Double-click the other **Function&#x20;**&#x6E;ode.
   The *Edit function node&#x20;*&#x64;ialog box appears.
   - **Name:&#x20;**&#x45;nter **Celsius**.
   - **On Message:&#x20;**&#x45;nter the following lines of code to return the temperature in Celsius:
     `var faren = msg.payload; // Temperature from the device in Fahrenheit.     `
     `var cel = parseFloat(5 / 9 * (parseInt(faren) - 32)).toFixed(2); // Converts Fahrenheit to Celsius up to two decimal places.     `
     `msg.payload = cel; // Sets the display value on the chart to be our Celsius calculation.     `
     `msg.topic = 'Celsius'; // Gives the name "Celsius" to the second line of the chart.     `
     `return msg;`
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yuAZE6HrMFOuxAPBZWvah_image.png" size="70" width="510" height="303" position="center" caption="Edit function node dialog box" showCaption="true"}
6. Double-click the **Chart&#x20;**&#x6E;ode.&#x20;
   The *Edit chart node&#x20;*&#x64;ialog box appears.
   - **Label:&#x20;**&#x45;nter **Temperature**.
   - **Type:&#x20;**&#x53;elect **Line chart** from the dropdown option.
   - **Other Options:&#x20;**&#x54;here are a number of options for the Chart Types, Labels, Legends, and Series Colours. Feel free to experiment with different options according to your projects.&#x20;
   - **Group:** Click the **Edit&#x20;**&#x69;con to add a new dashboard group.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_dM0yzgTY3QOse5yQ8t_6_image.png" size="60" width="547" height="932" position="center" caption="Edit chart node dialog box" showCaption="true"}
7. Make the following changes in the *Edit dashboard group node&#x20;*&#x64;ialog box.
   - **Name:&#x20;**&#x45;nter **Temperature**.
   - **Display group name:&#x20;**&#x53;elect the checkbox.&#x20;
   - **Tab:&#x20;**&#x43;lick the **Edit&#x20;**&#x69;con to add a new dashboard tab.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CWS6KV0ZZs22eqaqEhwKc_image.png" size="60" width="550" height="461" position="center" caption="Edit dashboard group node dialog box" showCaption="true"}
8. Make the following changes in the *Edit dashboard tab node&#x20;*&#x64;ialog box.
   - **Name:&#x20;**&#x45;nter **Temperature**.
   - **Icon:&#x20;**&#x45;nter **dashboard**.
   - Click **Add&#x20;**&#x6F;r **Update**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fk885meXJCCBJ4JsH9P_V_image.png" size="60" width="561" height="541" position="center" caption="Edit dashboard tab node dialog box" showCaption="true"}
9. Click **Add&#x20;**&#x6F;r **Update** from the *Edit dashboard group node&#x20;*&#x64;ialog box. Then click **Done&#x20;**&#x66;rom the *Edit chart node* dialog box and return to the flows canvas.
10. Add an **Inject&#xA0;**&#x6E;ode, a **Function&#xA0;**&#x6E;ode, and a **Datahub Publish** node onto the canvas and wire them together.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZEqaMul3Qi3MsnNYwNiHP_image.png "Completed flows canvas ")
11. Double-click the **Function&#x20;**&#x6E;ode.
    The *Edit function node&#x20;*&#x64;ialog box appears.
    - **On Message:&#x20;**&#x45;nter the following lines of code to generate random float numbers as Fahrenheit temperature.
      `var run = (Math.random() * (86 - 80.75) + 80.75).toFixed(2); //generate random float numbers`
      `msg.payload = run;`
      `return msg;`
    - Click **Done**.
      ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5j9_bLsTC60k73AV6vXYF_image.png" size="70" width="483" height="261" position="center" caption="Edit function node dialog box" showCaption="true"}
12. Double-click the **Datahub Publish** node.
    The *Edit Datahub Publish node* dialog box appears.&#x20;
    - **Datahub:&#x20;**&#x43;onfigure the Datahub connection if needed. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
    - **Topic:&#x20;**&#x45;nter **Fahrenheit**.
    - **Name:&#x20;**&#x45;nter **Temperature**.
    - Click **Done**.
      ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mzLrptQ5IzSK2_-M6nEO1_image.png" size="60" width="380" height="252" position="center" caption="Edit Datahub Publish node dialog box " showCaption="true"}
13. Click **Deploy**.

# Step 2: View Line Chart as Output

**To view the line chart as output:**

1. Drag the **Sidebar&#x20;**&#x75;p from the bottom of the canvas and select the **Dashboard&#x20;**&#x69;con.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4amOfjJokKGZSup_LsFty_image.png "Dashboard icon on flows canvas")
2. You can see the dashboard group and tab you created from the *Chart&#x20;*&#x6E;ode. Click the **Expand&#x20;**&#x69;con to view the generated chart in the *Node-RED Dashboard&#x20;*&#x62;rowser window.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6jDyPZfZw5jDNsmH-VghP_image.png" size="70" width="789" height="282" position="center" caption="Dashboard expand window" showCaption="true"}
3. The line chart shows how Fahrenheit temperatures convert to Celsius temperature in real time.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2OteieOGghiCG1W9peOc2_image.png" size="70" width="986" height="572" position="center" caption="Line chart output" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x59;ou may need to wait sometime to collect enough data for a proper line chart.
:::


[title] Backup/Restore
[path] Product Features/System/

The *Backup/Restore* pane allows you to do the following:

- Configure and initiate system backups and restore operations. To prepare for possible hardware failures, Litmus Edge provides a disaster recovery plan to support device replacement.&#x20;
- Create detailed, granular backup templates and exchange these templates between edge devices as JSON files.

# Backup/Restore Tab

:::hint{type="warning"}
**Important**:

- Backup/restore operations are not intended for replication of configurations. These operations will fail when attempted.&#x20;
- If you create a backup on an instance of Litmus Edge running on a virtual machine, you can't use the same backup to restore an instance of Litmus Edge running on a physical device.
:::

Litmus Edge offers a backup option which consists of generating a backup file with a list of configuration settings that can be applied to the same device or a new device.&#x20;

You can use Backup and Restore in the following ways:&#x20;

- From the Litmus Edge UI 
- From Litmus Edge Manager&#x20;

An alternative non-Litmus Edge backup option is also available, see [Image Backup](docId\:uaEo25G-S0UQIqyrkFSPo) for more details.

The following use cases are supported:

- Set up a newly installed Litmus Edge device with a different device’s configuration.
- A user deleted or overwrote a portion of the configuration and wants to reset to a last-known good configuration.
- Device hardware fails and the device must be replaced with another one. See [Replace a Damaged Device](docId\:CGsTw8WRuhcX9eoTbzfO1).&#x20;
- Device hardware is upgraded. See the *Upload a Template* section in [Manage Templates](docId\:Vge3AG1QmW9S7YJS7-2IB). &#x20;


# Template Tab

The *Template&#xA0;*&#x74;ab allows you to select configurations available for the Litmus Edge device and download them to a JSON file, thereby creating an edge device configuration template, which can be used for replication of Litmus Edge configurations.&#x20;

To review what configurations are included in a template file, see [Manage Templates](docId\:Vge3AG1QmW9S7YJS7-2IB). &#x20;

You can create multiple versions of edge device configuration files. You can then upload the template file to another edge device. A successful upload applies the configuration to that device.

You can also apply templates to Litmus Edge using Litmus Edge Manager, potentially changing the configurations for hundreds of edge devices.

For more information about templates, see [Templates](docId\:Me1x3I4rPT_IIgNPCY1GA).[Edge Device Templates](docId\:nNxhGGYezqqsdyajOkc8F) 

# How Backup Works&#x20;

Upon a backup operation, Litmus Edge create a snapshot of a predetermined list of configuration settings (specified in [Backup File Contents and File Management](docId\:q6Abk1gtv_I0EILNedOk_)) and stores it into a `.DAT` file.

# How Restore Works&#x20;

Upon a restore operation, the Litmus Edge is temporarily set into a blank state. Then it retrieves all the configuration settings stored in the `.DAT` file and applies all the settings into the Litmus Edge instance appropriately. The Litmus Edge instance is then automatically rebooted.

# Choose Between Backup/Restore or Download/Upload Template

|                      | **Backup and Restore**                                                                    | **Download/Upload Template**                                                      |
| -------------------- | ----------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| Purpose              | Restore a hardware-damaged Litmus Edge Device                                             | Clone a Litmus Edge Device to other devices&#xA;                                  |
| Customizability      | Cannot be customized and contains a predetermined list of configuration settings.         | Can be customized to contain a list of selectable configuration settings.         |
| Files Generated/Used | `.DAT` file                                                                               | `.json` file                                                                      |
| Operation            | Replicate and overwrite the Litmus Edge device's system state from the backup (.DAT) file | Append (and not overwrite) its configurations settings to the Litmus Edge device. |

# Access Backup/Restore UI

**To access the Backup/Restore pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **System&#x20;**>**&#x20;Backup/Restore**.
   The *Backup/Restore&#x20;*&#x70;ane appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HfzA9BlWGyBcz01eqEu6R_image.png" size="80" width="1905" height="722" caption="Backup/Restore pane" position="center" showCaption="true"}

# Next Steps

- [Prepare for Backup](docId\:V7N2DUVF8NsAk2X_IcLaW)&#x20;
- [Back Up a Device](docId:2DmvdQMHuALT7NPXDmUeu)&#x20;
- [Restore a Device](docId\:IQy8cNDTUL9T4Mm59CvCo)&#x20;
- [Replace a Damaged Device](docId\:CGsTw8WRuhcX9eoTbzfO1)&#x20;
- [Manage Templates](docId\:Vge3AG1QmW9S7YJS7-2IB)&#x20;
- [Image Backup](docId\:uaEo25G-S0UQIqyrkFSPo)&#x20;


[title] Image Backup
[path] Product Features/System/Backup/Restore/

Image backup saves an image of the entire device. This saved image will recreate the device the exact same way as it was at the time of the backup.

This offers a more complete backup option than Litmus Edge’s configuration backup feature. However, the drawback is additional storage (disc) space will be needed and that it must be done externally through a third-party (non-Litmus Edge) software tool.

# Recommended Software Tools for Image Backup

- Veeam Backup and Replication
- Acronis

# Image Back Up Contents

In addition to the list of configuration settings stored by Litmus Edge’s backup feature, an image backup also consists of the following:

- Data stored in the internal InfluxDB
- Third-party pallets installed in Flows
- Container images and internal Container volumes
- Files stored in the FTP folder
- Running containers

# Image Backup and Configuration Backup Pairing

An image backup should be created in conjunction with (and not replace) an automatically generated configuration backup in Litmus Edge Manager.

As also both file and data are preserved, the image backup itself offers a Litmus Edge instance the potential for immediate operation after a restore. The drawback to an image backup is in the case of some accidental deletes. When accidental deletes occur, an image backup may not be available to restore the pre-deleted information. A configuration backup (that was automatically generated by Litmus Edge Manager) could be used instead.


[title] Use the Manufacture Counter KPI
[path] How-To-Guides/Analytics Guides/

You can use the **Manufacture Counter** KPI processor to count the total number of manufactured units in a period.&#x20;

For this KPI, you need to add an input definition called `manufactureEnd` to the connecting wire, which is an event trigger, triggering whenever there is an end of a manufacturing cycle.

# User Scenario

Review the following scenario for the Manufacture Counter KPI processor. Then, using an input processor, you will simulate PLC data and monitor how much output is being produced compared to an ideal scenario.

In an industrial setting, the Manufacture Counter KPI helps ensure quality control and maintain optimal production levels. With this KPI, plant engineers can compare actual output with ideal scenarios or identify anomalies that may indicate equipment maintenance needs. For instance, if a machine is supposed to produce 100 bottles per hour but is currently only producing 80 bottles per hour, it indicates that the machine is operating at 80% of its capacity. This analysis helps prevent overheating and potential breakdowns in machinery.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: tag1**

- **Name**: Select **S - Random value generator.**
- **Value Type:** Select **int64.**
- **Polling Interval**: Enter **1.**
- **Tag Name**: Enter **tag1.**
- **Min Value:&#x20;**&#x45;nter **10.**
- **Max Value:** Enter **100.**

# Step 3: Create Analytics Flow

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Manufacture Counter KPI Processor function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the *Topic* field, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for *tag1*.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select the **Manufacture Counter** processor.
   The following information defines this function:
   - **Unit:** Enter the time unit in which you are entering the *Ideal Count&#x20;*&#x70;arameter.&#x20;
   - **Ideal Count:&#x20;**&#x45;nter the total number of manufacturing units produced at regular intervals.
   - **From Value:&#x20;**&#x53;tart a manufacturing unit when the value goes from this number.
   - **To Value:&#x20;**&#x52;ecord a manufacturing unit when the value goes to this number.
   - **Time Interval:** If the tag publishes at the expected interval, it is better to disable this timer by entering **0** in the field.
   - Click **Save**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/34edAri5rbWcMDKbAtBNS_image.png" size="80" width="571" height="657" position="center" caption="Edit a Processor dialog box" showCaption="true"}
7. Connect the *DataHub Subscribe* processor (tag: *tag1*) to the *Manufacture Counter&#x20;*&#x70;rocessor with a wire. Use the **Events** connection and enter a definition of **manufactureEnd&#x20;**&#x66;or the connection.
8. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QLUvWWXlxf9V8IZBcv5vW_image.png" size="80" width="507" height="236" position="center" caption="Completed Flows Canvas" showCaption="true"}

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Manufacture Counter&#x20;*&#x4B;PI processor to view the output values.

The output displays a capacity utilization of **54%**, with a total number of **925** manufactured units at the given timestamp.&#x20;

:::hint{type="info"}
**Note:** Capacity utilization will be updated upon the occurrence of a manufacturing event. Otherwise, it will be updated when the threshold for the hour/day/week is reached (determined by the *Ideal Count&#x20;*&#x61;nd *Unit&#x20;*&#x70;arameter).
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/T-aoioW7cMemFeOjxn0z9_image.png "Output of Manufacture Counter processor")


[title] Applications Guides
[path] How-To-Guides/

Refer to the following Applications how-to guides.&#x20;

- [Set Up LDAP Using an OpenLDAP Container](docId\:qWV0s8nT5zVIaXw9E7SIr)
- [Visualize Data Using Grafana](docId\:SUoMePWWNb2wt-m7HD8Hh)
- [Use Marketplace SDK with Python](docId\:bmNALqRid882pgbDuyLzU)&#x20;
- [Deploy and Use MySQL](docId:0AeSaRPP0TJBrTnj0aw62)&#x20;
- [Set Up the Influx Client for InfluxQL Queries](docId:8Ojs_LcmnpYyiwkbl5jCa)&#x20;
- [Add an Application Container Using Docker Compose](docId\:uAPBguYU4KBdLp0JFiCjT)&#x20;


[title] Use the Write Topic to Send Data to a PLC
[path] How-To-Guides/DeviceHub Guides/

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

- You need to follow the following guidelines for topic names: [Subject-Based Messaging](https://docs.nats.io/nats-concepts/subjects).&#x20;
- When publishing structured data such as JSON, you must convert to a byte array (string) first. To do this in a flow, you can use the **json&#x20;**&#x6E;ode.&#x20;
:::

The Write Topic allows you to write data to a PLC device.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/AEshDyZg5CU?si=Jh4QfY1ZzhPGi-gf&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

In your production environment one of the sensors that a PLC uses malfunctions,  causing the PLC to receive inaccurate data. While waiting for the sensor to be repaired, you input a  value manually to simulate the correct sensor data.

# Use the Write Topic

Complete the following steps to use the write topic based on the user scenario.&#x20;

**To use the Write topic:&#x20;**

1. Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). For this use case, a Simulator Generator device is used.&#x20;
2. Follow the steps to [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) and create one tag with the following parameters.&#x20;
   - **Name**: M - Memory Register
   - **Value Type**: int64
   - **Polling Interval**: 5
   - **Tag Name**: Enter a name for the tag.&#x20;
   - **Address**: 1
3. Copy the topic name under the *RAW Topic* column. You will refer to this later.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wWKrvxaYnXWk2WotSwg-L_copytag.png "Copy tag icon")
4. Click th&#x65;**&#x20;Action menu&#x20;**&#x66;or the tag and select **View Write Topic**.&#x20;
   The *Write&#x20;*&#x64;ialog box displays.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iE3BapB7FgBQXOhgXH8b4_viewwritetopic.png "View Write Topic option")
5. Click the **Copy&#x20;**&#x69;con for the tag. You will refer to this later.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/v6fuUYdfgGvY1AjiX7df9_copywritetopic.png "Copy Write topic icon")
6. Navigate to **Flows Manager**. For a Flows Manager, click the **Go To Flow Definition** icon.&#x20;
   The Flow canvas opens in a new browser tab.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7V-lMFoDbKs0kJVZDJlgK_go-to-flow-definition.png" size="80" width="1010" height="490" caption="Go To Flow Definition icon" position="center" showCaption="true"}
7. On the Flow canvas, drag the **inject&#x20;**&#x6E;ode and **DataHub Publish** node onto the canvas. Then, connect the two nodes.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DezwjDs5jwEmTUqko9Bqq_inject-and-publish-nodes.png "The inject and DataHub Publish nodes")
8. Double-click the **DataHub Publish&#x20;**&#x6E;ode.&#x20;
   The *Edit DataHub Publish* node dialog box displays.&#x20;
   - In the **Topic&#x20;**&#x66;ield, paste the Write topic you copied previously (number 5).&#x20;
   - If needed, configure the Datahub Publish connection. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
   - Click **Done**.&#x20;
9. Double-click the **inject&#x20;**&#x6E;ode.
   The *Edit inject node* dialog box displays.&#x20;
   - For **msg.payload**, update the **timestamp&#x20;**&#x73;election and select **string**.&#x20;
   - In the **string&#x20;**&#x66;ield, enter **\{"value":114}**. This will insert the desired value into the tag payload.&#x20;
   - Click **Done**.&#x20;
10. Drag the **DataHub Subscribe** node and **debug&#x20;**&#x6E;ode to the canvas and connect them.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Q_SPD2vMbkMTTo5s307ns_flow2.png)
11. Double-click the **DataHub Subscribe** node.&#x20;
    The *Edit DataHub Subscribe* node dialog box displays.&#x20;
    - In the **Topic&#x20;**&#x66;ield, paste the topic name you copied previously (number 3).
    - If needed, configure the Datahub Subscribe connection. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
    - Click **Done**.&#x20;
12. Click **Deploy**.&#x20;
13. Expand the message window beneath the flow.&#x20;
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CQPkR4GFHYaySoxYE7d0E_flow3.png)
14. Click the **Debug&#x20;**&#x69;con to view messages from the debug node.&#x20;
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RNP1NwQzoi08nJXNo02j7_flow4.png)
15. Click the **inject&#x20;**&#x6E;ode button. This will insert the value (114) into the payload of the tag. Confirm you see the value in the debug window.&#x20;
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1-GGT23fek8_YAY1APX2K_flow5.png)


[title] Restore a Device
[path] Product Features/System/Backup/Restore/

You can restore a Litmus Edge device from the backup.dat file you have stored on your local drive by navigating to **System&#x20;**> **Backup/Restore**.&#x20;

If you need to replace a damaged device, see [Replace a Damaged Device](docId\:CGsTw8WRuhcX9eoTbzfO1).&#x20;

There are two ways to restore a device:&#x20;

- Restore a device manually&#x20;
- Back up a device to the Cloud

# Important

- You should regularly back up Litmus Edge. See [Back Up a Device](docId:2DmvdQMHuALT7NPXDmUeu). &#x20;
- The backup can only be restored to the same device or to a replacement device.
- The backup can only be restored to a device with the same license key.
- The restore operation overwrites all configurations collected since the last backup.

# Restore a Device Manually

**To manually restore a device:**

1. In Litmus Edge, navigate to **System&#x20;***>&#x20;***Backup/Restore**.
   The *Backup/Restore* pane appears.&#x20;
2. From the *Backup/Restore Configuration* section, click **Restore**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QQlFsasfMGhpmBi8rtIZd_restorebutton.png" size="80" width="1903" height="668" caption="Restore button" position="center" showCaption="true"}
3. Navigate to the backup.dat file you stored on your local drive, and click **Open**.
   A warning message indicates that the system reboots after the restore has completed.
4. Click **OK**.
   Once restored, the Litmus Edge device restarts with the configuration backed up on the selected file.
   When the device reboots, refresh the Litmus Edge application.

# Restore a Device from the Cloud

You have the option of restoring a device from the Cloud.&#x20;

:::hint{type="success"}
**Tip**: You can also restore a device from Litmus Edge Manager from the **Backup&#xA0;**&#x74;ab for the device details.
:::

## Before You Begin

- Make sure you have obtained a license for backup and restore.
- Make sure you have activated the device with Litmus Edge Manager. See [Activate an Edge Device](docId\:G1kWiYDlSR5u8qEJk0djp) for more information.

**To restore a device from the cloud:**

1. In Litmus Edge, navigate to **System&#x20;***>&#x20;***Backup/Restore**.
   The *Backup/Restore* pane appears.
2. From the *Restore/Backup to the Cloud* section, select a saved backup file and click the **Restore from Cloud** icon.&#x20;
   A warning message indicates that the system reboots after the restore has completed.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/k322CM8o_GWDsCApt75X6_restorefromcloud.png" size="80" width="1720" height="391" caption="Restore from Cloud icon" position="center" showCaption="true"}
3. Click **OK**.

Once restored, the Litmus Edge device restarts with the saved backup selected.

When the device reboots, refresh the Litmus Edge application.


[title] Support
[path] Product Features/System/

The **System&#x20;**>**&#x20;Support** pane is primarily used by Customer Support for troubleshooting purposes.

It includes the following sections.&#x20;

# Components

This section shows the status and version of the underlying software components for Litmus Edge. A green circle by a component's name means that this component is online, and a red circle means that the component is offline.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GO39_Ck6t0WoVgZU_Gbpg_image.png" size="80" width="1002" height="422" caption="The Components section " position="center" showCaption="true"}

# Support Bundle

The support bundles are primarily used for diagnostic purposes. They should be attached as part of a support ticket when contacting customer support. Support bundles are then reviewed by customer support.

The files in the support bundle are password-protected.

:::hint{type="info"}
**Note**: For Litmus Edge version 3.11.0 and later, you have the option to not include the config files in the support bundle. Select to include config files in the bundle for full diagnosis.&#x20;
:::

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-qWMePMHT5f3UaSKm6AV4_image.png "Support bundle section")

# File Downloads

Allows you to download the DeviceHub Agent file and open source license bundles.

To download a file, click the **Download&#x20;**&#x69;con.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DKwCxl0elARuqvtL76znN_image.png" size="80" width="733" height="230" caption="Download icon" position="center" showCaption="true"}

You can view more information on a file by clicking the **Expand&#x20;**&#x69;con.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YZsH9sYQ9Pl9kbHfBINnJ_image.png" size="80" width="733" height="230" caption="Expand icon" position="center" showCaption="true"}

# Online Support

- [Support](https://support.litmus.io)


[title] Send Data to Azure IoT Hub with an SAS Key
[path] How-To-Guides/Integration Guides/Azure IoT Hub Guides/

Review the following guide for setting up an outbound data integration between Litmus Edge and Azure IoT Hub using an SAS Key.&#x20;

# Before You Begin

You must first [Set up an Azure IoT Hub](docId\:HJbKLRQ2HUmK_Ah21aex3).&#x20;

# Step 1: Add a Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add the Azure IoT Hub using SAS Key Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **MQTT - Azure IoT Hub using SAS Key** provider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Enter the IP address or server FQDN of the MQTT broker (must be reachable from your edge device).&#x20;
- **Port**: The MQTT broker's port number. The default value is 8883.&#x20;
- **Device ID**: Copy the *Device ID* of your edge device from th&#x65;*&#xA0;IoT Devices* page in the Azure portal and paste it here.
- **SAS Key**: Copy the primary or secondary shared access key from the *IoT Devices* page in the Azure portal and paste it here.&#x20;
- **Parallel Publish Count**: The maximum number of concurrently published messages. The default value is 16.&#x20;
- **Integration Topic**: The default topic to publish or subscribe to: devices/\[deviceId]/messages/events/. Replace `[deviceId]` with the Device ID copied from Azure.&#x20;
- **Token TTL**: The token expiry time in minutes. The default value is 1440.&#x20;
- **LWT Topic**: The topic for MQTT's Last Will and Testament feature.&#x20;
- **LWT payload**: The payload for MQTT's Last Will and Testament feature.&#x20;
- **LWT payload type**: The payload type for MQTT's Last Will and Testament feature. The options are *string&#x20;*&#x61;nd *base64*.&#x20;
- **LWT QoS**: The Quality of Service value for MQTT's Last Will and Testament feature.&#x20;
- **LWT retained**: Select this check box to retain the value for MQTT's Last Will and Testament feature.&#x20;
- **Throttling Limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 4: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RQot-5j1JSnlVxY_dW-ZT_azureiotsas.png" size="60" width="369" height="345" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 5: Create Outbound Topics for Connector

You will now need to create topics from the tags you added in Step 2. &#x20;

Before creating the topics copy the *Raw Topic* parameter for all tags you want to use for topics. See [Manage Tags](docId\:G9ROOmPC3XZ4Zq6CbNONc) for more information.

**To create topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Add topics to the connector with the details below. See [Add Topics to Connectors](docId\:O394mIPBbicF4ci2O5zSr) for more information.&#x20;
   - **Data Direction**: Select **Local to Remote - Outbound**.&#x20;
   - **Local Data Topic**: Paste th&#x65;*&#x20;Raw Topic* for the tag created in Step 2.&#x20;
   - **Remote Data Topic**: Verify the format of the remote data topic is **devices/\[DeviceID]/messages/events/**. Replace \[DeviceID] with the Device ID parameter configured for the connector.  **devices/MyDevice/messages/devicebound/%24.to=%2Fdevices%2Fmessages%2Fdevicebound**.
   - **Enable**: Click the toggle to enable the topic.&#x20;
4. Click **Yes&#x20;**&#x74;o add the topic.&#x20;
5. After adding all required topics, navigate to the *Integration&#x20;*&#x70;ane.&#x20;
6. From the connector tile, ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 6: Manage Data in Azure

Once data is sent to the Azure IoT Hub, you can manage it as needed. Refer to the [Azure IoT Hub Documentation](https://learn.microsoft.com/en-us/azure/iot-hub/) to learn more.&#x20;


[title] Configure an External DataHub Source
[path] How-To-Guides/

When you [Configure the Timeseries DB](docId\:V0B5qmjOQnp8qvVIaI7iT) in DataHub, you have the option of selecting an internal or external source. This guide will show you how to configure an external DataHub source with an InfluxDB database.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/SiZRHbFMpkU?si=EGmlduEFTbR7qjhr&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

In this guide you will deploy InfluxDB from the same computer (Windows-based) running Litmus Edge and then configure the InfluxDB database for the DataHub Timeseries DB.

For your specific scenario, you can deploy an external InfluxDB database and connect to it from Litmus Edge DataHub.&#x20;

# Before You Begin

- You will need to set up your computer so that it can run Docker commands.&#x20;
- Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) (with **Enable Data Store** selected) and [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) in DeviceHub. The data from the tags will be used to test the connection of the Timeseries DB.&#x20;

# Step 1: Set up InfluxDB

You will first need to pull an InfluxDB image file and then run it on your computer.&#x20;

**To set up InfluxDB:**

1. On your computer, open the command prompt window.&#x20;
2. Run the following command.&#x20;
   `docker run --name influxdb -p 8086:8086 influxdb:2.0.9`
   The command will create the InfluxDB container with the name "influxdb", on port 8086, and install InfluxDB version 2.0.9. If you are using a different version of InfluxDB, update the version number.&#x20;
3. Once the pulling and running of InfluxDB is complete, open a browser window and enter http\://localhost:8086 in the address window.&#x20;
   The setup screen for InfluxDB displays.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-AE-DmvxDBy5oTN-pgRrK_influxdbinitial-user.png "InfluxDB initial setup screen")
4. Configure the details for the initial user. You will need to refer to the organization name when configuring the Timeseries DB in Litmus Edge.&#x20;
   - **Username**
   - **Password**
   - **Initial Organization Name**
   - **Initial Bucket Name**
5. Click **Continue**.&#x20;
6. Continue setting up the database as needed.&#x20;
7. Return to the homepage of InfluxDB.&#x20;
8. Navigate to **Data&#x20;**> **Tokens**. Then, click the token name already created.&#x20;
   Details for the token display.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Q5Fk7tvFfH8I6AO9-FY8k_tokens.png "The Tokens page")
9. Click **Copy to Clipboard** and store the token somewhere securely. You will refer to this when setting up the Timeseries DB in Litmus Edge.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/W_Y_npKkQcRaTnMKokMR4_copytoken.png "Token details")

Now that InfluxDB is configured to your specific requirements and you've collected the parameters needed to set up the connection, you can complete the setup in Litmus Edge.&#x20;

# Step 2: Configure DataHub Timeseries DB

You can now configure the DataHub Timeseries DB and use the InfluxDB database as the source.&#x20;

**To configure the DataHub Timeseries DB:**

1. Navigate to **DataHub&#x20;**> **Configuration**.&#x20;
2. Click the toggle to enable the Timeseries DB and select the *Source type* of **External**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2OT5eoBSJlEGjTtmYToED_configure-external-datahub-source01.png)
3. Configure the parameters.&#x20;
   - **DB uri**: Enter **http\://localhost:8086**.
   - **Auth token**: Paste the token copied in Step 1 number 9.&#x20;
   - **Organization name**: Enter the organization name configured in Step 1 number 4.&#x20;
   - **DB vendor**: Select **InfluxDB v2.x**.&#x20;
   - **Description&#x20;**(Optional): Enter a description. &#x20;
   - **Name**: Enter a name for the configuration.&#x20;
4. Click **Save**.&#x20;
5. Click **Test&#x20;**&#x61;nd review the result.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ITfI3vufE6iKtLRHmz_G6_testresult.png)

# Step 3: Verify Connection in InfluxDB

Return to the InfluxDB browser window and explore the metrics to ensure that data is being successfully sent from Litmus Edge to InfluxDB.&#x20;

[title] Create, Write to, and Read from a Log File
[path] How-To-Guides/Flows Guides/

You can use Flows to create a log file on the Litmus Edge device, populate it, and read its contents.&#x20;

:::hint{type="info"}
**Note:&#x20;**&#x46;ile names used in node configurations are case sensitive.
:::

# Create a Log File

Before any data can be written, you need to create create a file first.

**To create a file in a flow:**

1. In Litmus Edge, navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow.&#x20;
   See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
2. Drag a **write file** node and an **inject&#x20;**&#x6E;ode to the canvas and wire them together.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DUnpLEQg8JpkbWXkvSTEU_image.png "Flows canvas with write file node")
3. Double-click the **write** **file** node.
   The *Edit write file&#x20;*&#x6E;ode dialog box appears.
   - **Filename:** Enter a **filename&#x20;**&#x70;refaced with a forward slash ( `/` ).&#x20;
     - The forward slash is required in the filename.
       Example: `/ftp-data/testlogfile.log`
     - The file is created on the Litmus Edge device.
     - If a subdirectory already exists, you can supply the full path to the file.
       Example: `/ftp-data/testlogfile` or `/logfiles/testlogfile`.
   - **Action:** Select **append to file** from the drop-down menu and click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RJ7EBYF7NHe1EnyUzQuWQ_image.png" size="70" width="508" height="477" position="center" caption="Edit write file node dialog box" showCaption="true"}
4. Click **Deploy&#x20;**&#x74;o save the flow.&#x20;
5. Click the button on the left side of the **inject&#x20;**(timestamp) node to inject the current timestamp into the **write file** node, which creates the file locally if it does not already exist.&#x20;
   In this example, the `/ftp-data/testlogfile.log` file is saved.

# Read a File

You can use a **Read file&#x20;**&#x6E;ode to access a file that you have created or written to.

**To read a file:&#x20;**

1. From the Flows canvas, drag a **read file** node, **inject&#x20;**&#x6E;ode, and **debug&#x20;**&#x6E;ode to the canvas and wire them together.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/I3RXPC_Qezq9u1ppGCYy0_image.png "Flows canvas with read file node")
2. Double-click the **read file&#x20;**&#x6E;ode.
   Th&#x65;*&#x20;Edit read file node&#x20;*&#x64;ialog box appears.
   - **Filename:** Enter the **filename&#x20;**&#x70;refaced with a forward slash ( `/` ).&#x20;
     A forward slash is required to be the first character of the filename.
     Example: `/ftp-data/testlogfile.log`
   - **Output:** From the drop-down menu, select the standard **single utf8 string&#x20;**&#x66;ormat.
   - Click **Done.**
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/m7gvFU9YU7LiUWBXNeUs8_image.png" size="70" width="503" height="405" position="center" caption="Edit read file node dialog box" showCaption="true"}
3. Click **Deploy.**
4. Drag the **Sidebar&#x20;**&#x75;p from the bottom of the canvas and select the **Debug** icon.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NR-2HuY85vCMwwDX8RM7y_image.png "Debug icon on flows canvas")
5. Click the **inject&#x20;**&#x6E;ode button to trigger the flow.
   The debug area shows the timestamp that has been written to the `/ftp-data/testlogfile.log` file.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N6VKJpRNTt4o11ntJuFpU_image.png "Output of reading a file")

# Write to a Pre-Existing File

In the Create a Log File steps, the inject node triggered file creation. The following steps show how to write to an existing file.

**To continue writing to the file that was created in&#x20;**[Create a Log File](docId\:sCUUvQUAXNWBAH1BjB4Ar)**:**

1. From the Flows canvas, double-click the **write file** node.
   The *Edit write file&#x20;*&#x6E;ode dialog box appears.
   - **Filename:** Enter a **filename&#x20;**&#x70;refaced with a forward slash ( `/` ).&#x20;
     We use the same file we created before: `/ftp-data/testlogfile.log`
   - **Action:** Select **append to file** from the drop-down menu.
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UdiLRuIatRa6nZjvIiV3O_image.png" size="70" width="510" height="488" position="center" caption="Edit write file node dialog box" showCaption="true"}
2. Click **Deploy.**
3. Click the **inject&#x20;**&#x6E;ode button to inject the current timestamp into the **write file&#x20;**&#x6E;ode, which appends the output to the pre-existing file.
4. Drag the **Sidebar&#x20;**&#x75;p from the bottom of the canvas and select the **Debug&#x20;**&#x69;con.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/t5B0Bbra-BOIsEySwdOjl_image.png "Debug icon on flows canvas")
5. Click the **inject&#x20;**&#x6E;ode button from the *read file* node configuration to verify that the write task to the pre-existing file was successful.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bF9Hx9_Tz-cgijJJF_Zvb_image.png "Output of reading a file")

# Write a Message to a File

You can inject a string message into a pre-existing or a new file from the Flows.

**To write a message (text string) to a file:**

1. In your Flow canvas, double-click the **inject** node.
   The *Edit inject node* dialog box appears.
   - **msg.payload:** From the drop-down menu, select **String**.
   - Enter text of your choice in the blank text field.
     In this example, we have entered: `Hello World`.
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/F0bgpuXGMXR2_HpNnKz3Z_image.png" size="70" width="572" height="333" position="center" caption="Edit inject node dialog box " showCaption="true"}
2. Click **Deploy**.
3. Click the **inject&#x20;**&#x6E;ode button to inject the message into the **write file&#x20;**&#x6E;ode, which appends the output to the pre-existing file.
4. Drag the **Sidebar&#x20;**&#x75;p from the bottom of the canvas and select the **Debug&#x20;**&#x69;con.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/t5B0Bbra-BOIsEySwdOjl_image.png "Debug icon on flows canvas")
5. Click the **inject&#x20;**&#x6E;ode button from the *read file* node configuration to verify that the message was written to the file.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ba3EJG8wXOXut7FQSS6bG_image.png "Output of reading a file")


[title] Use the Status Register to Connect a PLC
[path] How-To-Guides/DeviceHub Guides/

The status register option in device configurations allows you to set up a connection with a PLC device that won't successfully connect using the default connection configuration between Litmus Edge and the device.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/RO7jqr-F0og?si=5R3BxdMkt_5hPJZS&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

The default configuration for a PLC in your production environment can't connect to Litmus Edge. You will therefore use the status register option to create a custom configuration to connect the PLC to Litmus Edge.&#x20;

# Set Up and Use the Status Register Option

Complete the following tasks to use the status register option.&#x20;

## Before You Begin

For this user scenario, the Modbus slave simulator is used. To complete these steps, you will need to download the [Modbus slave simulator](https://www.modbustools.com/download.html).

## Step 1: Set up Modbus Simulator

**To set up the Modbus slave simulator:&#x20;**

1. Open Modbus slave simulator.&#x20;
2. Navigate to **Setup&#x20;**> **Slave Definition...**
3. Configure the following parameters.
   **Slave ID**: 1
   **Function**: 03 Holding Register (4x)
   **Address**: 0
   **Quantity**: 10
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/a7JBxIn3Auyh7J5gNPX33_slave-definition.png" size="50" width="402" height="339" caption="Slave Definition dialog box" position="center" showCaption="true"}
4. Click **OK**.&#x20;
5. Navigate to **Connection&#x20;**> **Connect...**
6. Configure the following parameters.
   **Connection**: Modbus TCP/IP
   **IP Address**: Enter the IPv4 address for your computer. If needed, use the `ipconfig` command in the command prompt window and copy the **IPv4 Address**.
   **Port**: 502
   **IPv4**: Select this option.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vdS2B3mGsNRoHup9jQWqF_connect.png" size="50" width="407" height="422" caption="Connection Setup dialog box" position="center" showCaption="true"}
7. Click **OK**.&#x20;

The simulator successfully connects.&#x20;

## Step 2: Connect Modbus Device in Litmus Edge

You can now follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq).&#x20;

Configure the following parameters:&#x20;

- **Device Type**: Modbus
- **Driver Name**: Modbus TCP
- **Name**: Enter a name for the Modbus TCP Ethernet Driver.
- **Network Address**: Enter the IP address you configured in the Modbus slave simulator.&#x20;
- **Network Port**: 502
- **Station ID**: This is the Slave ID configured in the Slave Definition in the Modbus slave simulator. Enter **1**.&#x20;

After adding the device, the device shows a successful connection to the slave simulator.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OMi36lMOMXNQav79F8Eo8_image.png" size="50" width="420" height="344" caption="Successful connection to slave simulator" position="center" showCaption="true"}

Now that the device is successfully connected, you can test the status register function.&#x20;

## Step 3: Update Slave Definition Function

To test the status register function, you will need to update the function parameter in the slave definition of the slave simulator. This simulates a PLC device with a default configuration that can't connect to Litmus Edge.&#x20;

**To update the slave definition function:**

1. In the Modbus slave simulator, navigate to **Connection&#x20;**> **Disconnect**.&#x20;
2. Navigate to **Setup&#x20;**> **Slave Definition...**
3. Update the **Function&#x20;**&#x74;o **04 Input Register (3x)**.&#x20;
4. Click **OK**.&#x20;
5. Navigate to **Connection&#x20;**> **Connect...** and click **OK**.&#x20;

The Litmus Edge device you created should now show a disconnected status due to the change in function from the simulator.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/35DbO-a6ptVU5ti7Fjk9P_image.png" size="50" width="419" height="343" caption="Disconnected status for device" position="center" showCaption="true"}

## Step 4: Configure Status Register in Litmus Edge

You can now set up the status register option in the device configuration to successfully connect to the slave simulator.&#x20;

**To configure the status register in Litmus Edge:**

1. In Litmus Edge, click the **Edit&#x20;**&#x69;con for the device.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3zsxHN39b4XhTMQI10ih3_edit-icon.png" size="50" width="419" height="343" caption="Edit icon" position="center" showCaption="true"}
2. Select the **Status Register** check box.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N37RTBhvBEwQmkawPZqyG_status-register.png" size="80" width="1182" height="751" position="center" showCaption="false"}
3. Configure the following parameters.&#x20;
   - **Name**: I - Analog Input Registers
   - **Value Type**: int32
4. Click **Update Device**.&#x20;

The device now shows a successful connection again based on the status register configuration.&#x20;

## Step 5: Test Tags

Now that the device is successfully connected using status register, you can now test that tags in the device can be read.&#x20;

You will do the following:

1. Create a tag in Litmus Edge.&#x20;
2. Update register values for the connected device in Modbus slave simulator.&#x20;
3. Use [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5) to read the tag values and confirm the tags are successfully configured.&#x20;

**To test the tags for the device:&#x20;**

1. In Litmus Edge, navigate to DeviceHub > Tags.
2. Select the Modbus TCP device.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LjWlxnCLpv9Q4FawFAR2Y_select-modbus-tcp-device.png" size="80" width="1573" height="472" caption="Select Modbus TCP device" position="center" showCaption="true"}
3. Click the **Add Tag** icon and select **Add a Tag**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qrtNoC3vZQrvyoRWgWvF2_add-tag.png" size="80" width="1573" height="671" caption="Add Tag icon" position="center" showCaption="true"}
4. Configure the following parameters.&#x20;
   - **Name**: This needs to be the same register as used in the Modbus slave simulator. Select **I - Analog Input Registers**.
   - **Tag Name**: Enter a name for the Modbus TCP Ethernet Driver tag.
   - **Value Type**: int16
   - **Polling Interval**: The interval in seconds that the tag will poll for data. Enter **1**.&#x20;
   - **Address**: The register that the tag will start reading data. Enter **1**.&#x20;
   - **Count**: The number of registers that the tag will read. Enter **5**.&#x20;
5. Click **Add Tag**.
6. Click the **Copy&#x20;**&#x69;con for the tag's RAW Topic. You will refer to this later.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_8j8Ugrr8L-72n3hvwGdl_copy-tag.png" size="80" width="1573" height="457" caption="Copy icon for tag" position="center" showCaption="true"}
7. In Modbus slave simulator, double-click the cell in column 00000 and row 1. This is the cell that the tag you created will start reading from (Address parameter). Enter the value **5** and click **OK**. Do the same for row 2 to 5 and enter the following values: **11**, **22**, **44**, **66**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x_JvBMV25vfWrdp__ZKP2_register-tags.png" size="80" width="946" height="483" caption="Modbus slave simulator register tag values" position="center" showCaption="true"}
8. In Litmus Edge, navigate to **Analytics**.&#x20;
9. Open the **Action menu** and select **Add a processor**.&#x20;
   The *Create a Processor* dialog box opens.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KCWg6yYzlltqQunzgVPf7_add-processor.png" size="80" width="1525" height="441" caption="Action menu for Analytics canvas" position="center" showCaption="true"}
10. Select **DataHub Subscribe**.&#x20;
11. In the **Topic&#x20;**&#x66;ield, paste the tag's RAW topic that you copied earlier from step 6.&#x20;
12. Click **Save**.&#x20;
13. Click the **View&#x20;**&#x69;con for the processor.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yPS_DeHjLM_5p7q51_YY7_view-icon.png" size="80" width="1573" height="497" caption="The View icon" position="center" showCaption="true"}
14. Under *Instance Messages*, verify that *success&#x20;*&#x64;isplays **true&#x20;**&#x61;nd *value&#x20;*&#x64;isplays the five values you configured in the Modbus slave simulator (**5**,**11**,**22**,**44**,**66**).&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Bu0ggVRG-onTZhDAIUbij_tag-messages.png" size="80" width="1573" height="731" caption="Instance messages for tag" position="center" showCaption="true"}


[title] Back Up a Device
[path] Product Features/System/Backup/Restore/

You can backup your Litmus Edge with its configurations by navigating to **System&#x20;**>**&#x20;Backup/Restore**.

:::hint{type="warning"}
**Important**: If you create a backup on an instance of Litmus Edge running on a virtual machine, you can't use the same backup to restore an instance of Litmus Edge running on a physical device.&#x20;
:::

There are two ways to back up a device: Manually and Cloud.&#x20;

# Back Up a Device Manually

You can back up a device manually and save a copy of the device to your local drive.&#x20;

## Before You Begin

Review the following resources before manually backing up a device.&#x20;

- [Prepare for Backup](docId\:V7N2DUVF8NsAk2X_IcLaW)
- [Backup File Contents and File Management](docId\:q6Abk1gtv_I0EILNedOk_)

## How To Back Up a Device Manually

**To manually back up a device:**

1. In Litmus Edge, navigate to **System&#x20;***>&#x20;***Backup/Restore**.
   The *Backup/Restore* pane appears.&#x20;
2. From the *Backup/Restore Configuration* section, click **Backup**.
   A backup.dat file is saved to the Downloads folder.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UWcco0PkOEQol5mlOVap4_backupbutton.png "Backup button")
3. Move the **backup.dat&#xA0;**&#x66;ile to a designated folder on your local drive.
4. Rename the **backup.dat&#xA0;**&#x66;ile according to your naming convention.

## Recommended Alternative: Use Litmus Edge Manager to Backup Device

As instructed above, backing up a Litmus Edge device is a *manual&#xA0;*&#x70;rocess. Litmus Edge Manager offers an *automatic&#xA0;*&#x62;acking up feature for your Litmus Edge devices. This option automatically creates a new backup every time a Litmus Edge device’s configuration setting changes. This includes setting changes such as saving a flow, adding a new user, or adding a new Analytics processor.

See [Backup](docId\:axfcH6DH6avOvjLq5W7Rz) from the Litmus Edge Manager documentation to learn more.&#x20;

# Back Up a Device to the Cloud

Backup to the Cloud facilitates backups to Litmus Edge Manager. Backups allow you to save a Litmus Edge device configuration to the cloud and later restore the configuration for the same device.

You can save the current device configuration to the cloud. This enables you to store full license and configuration information within a backup JSON file. You can later restore the full license and configuration to the same Litmus Edge device.

- Use this option to save a Litmus Edge device configuration so that you can later revert to a previous configuration.
- Use this option to store a local backup of the Litmus Edge device configuration.

## Before You Begin

Before completing the steps below, make sure you do the following:

- Obtain a license for backup and restore.
- Activate the device with Litmus Edge Manager. See [Activate an Edge Device](docId\:G1kWiYDlSR5u8qEJk0djp) for more information.

## How To Back Up a Device to the Cloud

:::hint{type="warning"}
**Important****:** When you configure a device backup to the Cloud, you have the option of selecting the backup time interval. This selection determines the frequency at which the backup mechanism checks the device configuration for changes. If no changes are made, no backup file will be sent.
:::

**To save a device configuration to the cloud:**

1. In Litmus Edge, navigate to **System&#x20;***>&#x20;***Backup/Restore**.
   The *Backup/Restore&#x20;*&#x70;ane appears.&#x20;
2. From the *Restore/Backup to the Cloud&#x20;*&#x73;ection, click **Configure&#x20;**&#x61;nd select an option from the drop-down list: None, 1 Day, 1 Hour, 10 minutes, custom interval in minutes.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BU8h02yFaf2VqN9QNlwDc_configure-button.png "Configure menu")
3. After you have made your selection or entered an interval in minutes into the **Interval&#xA0;**&#x66;ield, click **Set Custom**.
4. From th&#x65;*&#x20;Restore/Backup to the Cloud* section, click **Save**.
   The backup configuration is saved to the cloud according to your selections. The backup files appear as files in the *Restore/Backup to the Cloud* section for the interval you have selected.


[title] Set up an Azure IoT Hub
[path] How-To-Guides/Integration Guides/Azure IoT Hub Guides/

Azure IoT Hub integration enables Litmus Edge to publish data directly to the Microsoft Azure cloud. You will need to set up the Azure IoT Hub before setting up the connector in Litmus Edge.&#x20;

# Before you begin

You must have an Azure account.

# Step 1: Create an IoT Hub

You can create the IoT Hub in the Microsoft Azure portal.&#x20;

**To create an IoT Hub:**

1. Open the [Microsoft Azure portal](https://portal.azure.com).&#x20;
2. Log in with your Azure account.
3. Click **Create a resource**.
   The *Everything&#x20;*&#x64;ialog box appears.&#x20;
4. Enter **IoT Hub** in the **Search&#x20;**&#x62;ar.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tfQXkjCKsFhnw1Qqx8HrQ_azure-everything.png" size="80" width="674" height="216" caption="Azure Everything dialog box" position="center" showCaption="true"}
5. Click **IoT Hub**, and then click **Create**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eB20WhcJX_rRlXPbiJm2W_azure-iot-create.png" size="80" width="678" height="756" caption="IoT Create button" position="center" showCaption="true"}
6. From the *Basics&#xA0;*&#x74;ab, select an option from the **Subscription&#xA0;**&#x64;rop-down list.
7. Do one of the following:
   - Select an option from the **Resource Group&#xA0;**&#x64;rop-down list.
   - Click **Create new&#xA0;**&#x61;nd create a new resource group.
8. Select an option from the **Region&#x20;**&#x64;rop-down list.&#x20;
9. Enter a name for the IoT Hub in the **IoT Hub Name** field.&#x20;
10. Click the **Size and scale&#xA0;**&#x74;ab.
11. Select an option from the **Pricing and scale tier&#x20;**&#x64;rop-down list.&#x20;
12. Enter a value in the **Number of S1 IoT Hub units** field to determine the number of connected devices to host on Azure and send messages to and from Litmus Edge.
13. Click the **Review + Create&#xA0;**&#x74;ab to finalize creating the IoT Hub and begin adding devices.

# Step 2: Add IoT Device to Hub

After creating the IoT Hub, you will need to add an IoT device to the hub.&#x20;

**To add an IoT device to the hub:**

1. From the Azure portal, open the Command-Line-Interface (CLI).&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OZckHstKlDBD9Qi550oKD_azure-cli.png" size="30" width="133" height="56" caption="Command-Line-Interface icon" position="center" showCaption="true"}
2. In the Azure CLI, enter the following two commands. Make sure to replace with `YourIotHubName` and `MyNodeDevice` with the names of your respective IoT Hub and device.&#x20;
   `az extension add --name azure-iot`
   `az iot hub device-identity create --hub-name YourIoTHubName --device-id MyNodeDevice`
3. From the Azure portal, click your IoT Hub.&#x20;
4. Under *Explorers*, click **IoT devices&#xA0;**&#x74;o verify that you successfully added the new device.


[title] Use Marketplace SDK with Python
[path] How-To-Guides/Applications Guides/

In this example, the Marketplace application consumes data from a topic, does some analysis, and pushes the data to a new topic.

For this example, a Docker image is built, the image is transferred to an edge device using FTP, access is provided to a topic, the container is run from the Docker image, and the application is tested using Flows. Download the set of files below as a reference.&#x20;

::File[]{src="https://archbee-doc-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/m4gX6EoUtLe0nMudBhQj3_marketplace-sdk-python.zip" label="marketplace-sdk-python.zip" uploadAsPublic="false"}

# Before You Begin

Make sure you have access to the following:

- A Linux system and Docker engine.
- Python so that you can access the files in the marketplace-sdk-python.zip file.

# Step 1: Build the Docker Image

The **\_main.py\_** file in the marketplace-sdk-python files consists of the logic that must be written to manipulate the data. The code is well commented and can be used as a reference. You can also make changes in the container from the Litmus Edge terminal.

From a Linux computer, execute the following command:

:::BlockQuote
docker build -t python-sdk
:::

# Step 2: Transfer the Image to an Edge Device

**To transfer the image to an edge device:&#x20;**

1. Log in to Litmus Edge, navigate to **System&#x20;**> **Services**.
   The *Services&#x20;*&#x70;ane appears.&#x20;
2. From the *FTP Service***&#xA0;**&#x73;ection, Click **Start**.
   The *FTP Service* is started.&#x20;
3. Click **Add User**.
   The *Add User&#x20;*&#x64;ialog box appears.&#x20;
4. Enter a user name and click **Add User**.
   The *Create User* dialog box appears.
5. Click the **Copy&#x20;**&#x69;con next to the password, save it somewhere safe, and then click **Close**.
   The user is added to the FTP Users list.
6. From the Linux system, use an FTP client such as File-zilla to connect to the FTP server on port 21.
7. Navigate to the **docker images&#xA0;**&#x66;older in **ftp-data/docker-images** and add the **.tar** file (docker saved image.tar) that is the locally saved version of your container.
8. Return to the *Services&#xA0;*&#x62;rowser tab and navigate to **Applications** >**&#x20;Images**.
   The *Images&#x20;*&#x70;ane appears.&#x20;
9. From the *Images&#x20;*&#x70;ane, click the **Add&#x20;**&#x69;con.
   The *Import Image&#x20;*&#x64;ialog box appears.
10. Select the **FTP&#xA0;**&#x6F;ption.
11. Click the **Image File Path&#xA0;**&#x66;ield and select the **.tar&#xA0;**&#x66;ile from the drop-down list.
12. Click **Import**.
    The image is uploaded to the *Images&#x20;*&#x6C;ist.

# Step 3: Run the Container

**To run the container:**

1. In Litmus Edge, navigate to **Applications&#x20;**> **Images&#x20;**> **Containers**.&#x20;
   The *Containers&#x20;*&#x70;ane appears.&#x20;
2. Click the **Start&#x20;**&#x69;con next to the image name.
   The selected application runs.&#x20;

# Step 4: Create an API Account

**To create an API account:**

1. In Litmus Edge, navigate to **System&#x20;**>**&#x20;Tokens**.
2. From the *Access Accounts* section, click the **Add&#x20;**&#x69;con.&#x20;
   The *Create API Account* dialog box appears.
3. Enter the account name and click **Create Account**.
   The new account appears in the *Access Accounts* section on the *Tokens&#x20;*&#x70;ane.

# Step 5: Create Topics

**To create topics:**

1. In Litmus Edge, navigate to **System&#x20;**> **Tokens**.&#x20;
2. From the *Access Accounts&#x20;*&#x73;ection, click the **Action menu** next to a selected account and select **Edit topics**.
   The account form drops down.
3. Perform one or both of the following:
   - From the *Read Topics***&#xA0;**&#x73;ection, enter a name in the **Topic Name&#xA0;**&#x66;ield, and then click **Add Read Topic**. These are the subscribe topics you will use later.&#x20;
   - From the *Write Topics***&#xA0;**&#x73;ection, enter a name in the **Topic Name&#xA0;**&#x66;ield, and then click **Add Write Topic**. These are the publish topics you use later.&#x20;
4. Repeat as needed.
5. When you are done adding topics, click **Update**.
6. Click **OK**.

# Step 6: Copy the API Key

**To copy the API key:&#x20;**

1. In Litmus Edge, navigate to **System&#x20;**> **Tokens**.&#x20;
2. From the *Access Accounts* section, click the **Action menu** next to a selected account and select **View API Key**.
3. Click the **Copy&#x20;**&#x69;con next to the API Key.
   The API Key is copied to your clipboard.&#x20;
4. Click **Close**.

# Step 7: Run the Application

When you run the application, refer to the following command for step 3.&#x20;

:::BlockQuote
docker run -d python-sdk&#x20;
\-- mode=\<product>-access&#x20;
\-- api-key=\<API-key>&#x20;
\-- \<product>-access-address=10.30.50.1:9094&#x20;
\-- inbound-topic=\<subscribe-topic>&#x20;
\-- outbound-topic=\<publish-topic
:::

**To run the application:**

1. In Litmus Edge, navigate to **Applications&#x20;**>**&#x20;Containers**.
2. Click **Run**.
3. Copy and paste the command above in the command line.&#x20;
4. For the above docker entry:
   - Replace `<product>` with your product name.
   - Replace `<API-key>` with your API key.
   - Replace `<subscribe-topic>` with the topic you want to subscribe to.
   - Replace `<publish-topic>` with the topic you want to publish.
5. Click **Run**.&#x20;

# Step 8: Validate the Application

**To validate the application:**

1. In Litmus Edge, navigate to **Flows Manager**.&#x20;
2. Click the **Go To Flow Definition** icon for a selected **Flows Manager**.&#x20;
   Th&#x65;*&#x20;Flow canvas&#x20;*&#x6F;pens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6PlxhptXn4xZ_4ZdrIAuf_gotoflowdefinition.png" size="80" width="944" height="366" caption="Go To Flow Definition icon" position="center" showCaption="true"}
3. Drag the **inject&#x20;**&#x6E;ode and the **Datahub Publish** node to the canvas and wire them together.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wURLUHU_Ta3CGQVbWtgi1_injectpublishnodes.png" size="80" width="664" height="625" caption="Inject and DataHub Publish nodes" position="center" showCaption="true"}
4. Double-click the **Inject&#xA0;**&#x6E;ode.
   The *Edit Inject* node dialog box appears.
5. From the **Repeat&#x20;**&#x64;rop-down list, select **interval**.
6. In the Name field, enter **Timestamp message generator**.&#x20;
7. Click **Done**.&#x20;
8. Double-click the **Datahub Publish&#xA0;**&#x6E;ode.
   The *Edit Datahub Publish node&#x20;*&#x64;ialog box appears.
9. From the *Edit Datahub Publish node* dialog box, configure the following:
   - **Datahub**: Make sure **Add new Datahub Connect...** is selected.&#x20;
   - **Topic**: Enter the subscribe topic name you created earlier.&#x20;
   - **Name**: Enter **Connector**.&#x20;
10. Click **Done**.&#x20;
11. Drag the **Datahub Subscribe** node and the **debug&#x20;**&#x6E;ode to the canvas and wire them together.
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZMn_UDwkN7Q4Eo3q5ncEI_debugsubscribe.png" size="80" width="707" height="591" caption="The DataHub subscribe and Debug nodes" position="center" showCaption="true"}
12. Double-click the **Datahub Subscribe&#xA0;**&#x6E;ode.
    The *Edit Datahub Subscribe* node dialog box appears.
13. From the *Edit Datahub Publish node* dialog box, configure the following:
    - **Datahub**: Make sure **Add new Datahub Connect...** is selected.&#x20;
    - **Topic**: Enter the publish topic name you created earlier.&#x20;
    - **Name**: Enter **Listener**.&#x20;
14. Click **Done**.&#x20;
15. Click **Deploy**.&#x20;
16. Expand the message window beneath the flow and click the **Debug&#x20;**&#x69;con. Verify that messages are displaying.
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7sPDx4TLHetId9TeVwaZy_flows-message-bar-and-debug-icon.png" size="80" width="1920" height="280" caption="The Debug pane" position="center" showCaption="true"}
17. Return to the Flows Manager browser window and navigate to **Applications&#x20;**>**&#x20;Containers**.
18. Click the **View&#x20;**&#x69;con to show the container logs.
    A log of streaming messages sent and received appears.


[title] Flows Guides
[path] How-To-Guides/

Refer to the following Flows how-to guides.&#x20;

- [Subscribe to Topics with Flows](docId\:j6mthBGu7NnTTtVX6VZ9K)
- [Use Access to Write to a Topic](docId\:M703YLylzJsQRMfHJE49d)
- [Use Access to Read from a Topic](docId\:DjC5x8C48Wdjs7mbqNuxO)
- [Create, Write to, and Read from a Log File](docId\:sCUUvQUAXNWBAH1BjB4Ar)
- [Save Multiple Register Values to a CSV File](docId\:EkCJ5COrKb3TyQw6kCXLy)
- [Work with SQL Databases](docId\:ktg9mT9rMK1hx_JBskTIj)
- [Work with MongoDB Databases](docId\:cENRdTqk6ZeiAP7fnWeRq)
- [Write to Databases with Integration Topics](docId\:GtKeSNbcxocITzNv-A5OS)
- [Create a Chart](docId:6yU0W6TW0Cek5wAOkMa1F)
- [Ping a Host](docId\:pE3DNj45vJQVGRM1eY1TZ)
- [Send Alerts to a Mobile Phone](docId\:vO6jCb7tVT_opKzEXhSLM)
- [Create Audio Notifications for Sensor Readings](docId\:slqUQI2ydjbU3U7Ys7XfE)


[title] How-To-Guides
[path] /


[title] Replace a Damaged Device
[path] Product Features/System/Backup/Restore/

Whenever a Litmus Edge device needs to be replaced, several steps must be taken to get the new device configured and online with minimal interruption.

If you only need to restore a device configuration to a device that isn't damaged, see [Restore a Device](docId\:IQy8cNDTUL9T4Mm59CvCo).&#x20;

# Important

- You should regularly back up Litmus Edge. See [Back Up a Device](docId:2DmvdQMHuALT7NPXDmUeu).&#x20;
- The replacement device must be on the same network as the device that was backed up. If the backed up device has a static IP address assigned to it, then the replacement device gets that same IP address. For example, a replacement device has an IP address of 10.0.0.120 and the backed up device is on a network with an IP address of 192.168.1.1. After restoration, the replacement device is no longer accessible with the 10.0.0.120 address because it now assumes the 192.168.1.1 address.
- The backup can only be restored to the same device or to a replacement device.
- The backup can only be restored to a device with the same license key.
- The Restore operation overwrites all configurations collected since the last backup.

# Before You Begin

Make sure you have obtained a license for backup and restore.

# Replace a Damaged Device

To replace a damaged device, you will need to do the following:

- Step 1: Activate the license
- Step 2: Restore backup file

## Step 1: Activate License

See [Activate a Node-Locked License Online](docId\:ew63TzR21xC_8mkhmT1mp) to learn how to activate the license for the device.

## Step 2: Restore Backup File

**To restore the backup file:**

1. In Litmus Edge, navigate to **System&#x20;***>&#x20;***Backup/Restore**.
   The *Backup/Restore* pane appears.&#x20;
2. From the *Backup/Restore Configuration* section, click **Restore**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5ntH0MuQSnsF5UtBqD0FG_restorebutton.png" size="80" width="1903" height="668" caption="Restore button" position="center" showCaption="true"}
3. Navigate to the backup.dat file you stored on your local drive, and click **Open**.
4. Click **OK**.
   Once restored, the Litmus Edge device restarts with the configuration backed up on the selected file.
   When the device reboots, refresh the Litmus Edge application.
5. Activate the Litmus Edge Manager connection by setting the device status to **Online**.
   This action registers the new device with Litmus Edge Manager and the corresponding LWM2M and MQTT protocols.


[title] Azure Event Hub Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and [Azure Event Hub](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-about).

The Azure Even Hub connector is based on the [Azure official SDK](https://github.com/Azure/azure-event-hubs-go).

# Before You Begin

You must have an Azure account.&#x20;

# Step 1: Add a Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add the Azure Event Hubs Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **Azure Event Hubs** provider.&#x20;

Configure the following parameters.&#x20;

- **Name**: A recognizable name to identify the connector.&#x20;
- **Connection String**: Copy the string from your Azure SAS Policy and paste it here.
- **Maximum Message Size**: The maximum message size in KB. The default value is 256.&#x20;
- **Parallel Connections Count**: The maximum number of parallel connections from your edge device to Azure Event Hub. The default value is 50.&#x20;
- **Combine Messages**: Select the checkbox to combine messages (thus reducing the number of parallel connections).&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 4: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RfS2qA0T3Wa13MG-ghHFF_azureeventhubs.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 5: Add Outbound Topics for Connector

You will now need to create outbound topics for the connector from the tags created in Step 2.

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

**After importing the tag(s), do the following:**

1. Edit the tag and configure the **Remote Data Topic**. Copy and paste the name of your Azure Event Hub.&#x20;
2. Click the **Enable&#x20;**&#x74;oggle to enable the topic.&#x20;
3. Make sure the connector has a CONNECTED status.&#x20;

# Step 6: Verify Connection in Azure

**To verify the connection in Azure:&#x20;**

1. Open the Azure portal.&#x20;
2. Open the Event Hub you have connected to and see statistics on the messages it receives from the Litmus Edge outbound topic.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PFUAlTjXqElSfTZ8yklmF_azure-event-hub-11000x350.png" size="80" width="1000" height="350" caption="Azure Event Hub" position="center" showCaption="true"}
3. Navigate to **Process Data > Explore** to see the messages in a tabular form.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AKN5ZJuCRyFfeNkiX5xOU_azure-event-hub-21000x379.png" size="80" width="1000" height="379" caption="Explorer view in Azure" position="center" showCaption="true"}


[title] Amazon AWS IoT Core over SSL Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide to set up an integration between Litmus Edge and AWS IoT Core with SSL authentication.&#x20;

# Before You Begin

You must have an AWS account with the appropriate user privileges.&#x20;

# Set Up Integration in AWS

## Step 1: Onboard Device

**To onboard a device:&#x20;**

1. Open the AWS IoT browser tab and click **Manage&#x20;**>**&#x20;Things**.
   The *Things&#x20;*&#x70;ane appears.
2. From the left pane, click **Onboard**.
   The *Connect to AWS IoT* pane appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/V3BO-G9gCkJgBquUU1wEG_aws-iot-onboard.png" size="80" width="1397" height="588" caption="Connect to AWS IoT pane" position="center" showCaption="true"}
3. From the Onboard a device box, click **Get Started**.
   The *Connect to AWS IoT* wizard appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BHiU0IKv0X6aUQDOo0UdD_aws-iot-wizard.png" size="80" width="740" height="493" caption="Connect to AWS IoT wizard" position="center" showCaption="true"}
4. Click **Get Started**.
   The *How are you connecting to AWS IoT* screen appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hsDisp19aOwYBl-wpuGtc_aws-iot-how.png" size="80" width="743" height="566" caption="How are you connecting to AWS IoT screen" position="center" showCaption="true"}
5. From the *Choose a platform***&#xA0;**&#x73;ection, select **Linux/OSX**.
6. From the *Choose a AWS IoT Device SDK* section, select **Java**, and then click **Next**.
   The *Register a thing* screen appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/E-Fl8AkTeMQeWdkRi_4vG_aws-iot-register.png" size="80" width="741" height="335" caption="Register a thing screen" position="center" showCaption="true"}
7. In the **Name&#x20;**&#x66;ield, enter **Thing1**, and then click **Next step**.
   The *Download a connection kit&#x20;*&#x73;creen appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JcU-bFVza3ql5LxJWwnCD_aws-iot-download.png" size="80" width="743" height="581" caption="Download a connection kit screen" position="center" showCaption="true"}
8. Click **Linux/OSX**, view the downloaded .zip file at the bottom of the screen, and then click **Next step**.
   The *Configure and test your device&#x20;*&#x73;creen appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Sjr9VXe3uXxpsrKksZ_RU_aws-iot-test-device.png" size="80" width="742" height="472" caption="Configure and test your device screen" position="center" showCaption="true"}
9. View the downloaded .zip file at the bottom of the screen, and then click **Done**.
   The *Connected successfully* screen appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nGT4A0Jc2g1xP8YmtleOM_aws-iot-connected.png" size="80" width="740" height="523" caption="Connected successfully screen" position="center" showCaption="true"}
10. Click **Done**.
    The named *Thing1* appears in the Things pane.

## Step 2: Create Policy

**To create the policy:&#x20;**

1. From the left pane in the AWS Things pane, click **Secure > Policies**.
2. Refresh the page.&#x20;
   The named *Thing1-Policy* appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Sxu_BWI5z7d3niexH9xGb_aws-iot-thing-policy.png" size="80" width="1409" height="433" caption="Policy item" position="center" showCaption="true"}

## Step 3: Create and Download Certificate and Private Key

You will need to download the certificate and private key that you will use to configure the AWS connector in Step 8.&#x20;

**To create and download the certificate and private key:&#x20;**

1. From the left pane, click **Certificates**.
   The certificate for the named Thing appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/csua6h_nIb2AtvPRf7XrW_aws-iot-thing-certificate.png" size="80" width="1410" height="490" caption="Certificate pane" position="center" showCaption="true"}
2. Click the **Actions&#xA0;**&#x69;con for the certificate, and select **Delete**.
   The *Confirmation&#x20;*&#x64;ialog box appears.
3. Click **Yes, continue with delete**.
4. Refresh the page.
   The *Certificates&#x20;*&#x77;izard appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0wDcTp89OT15aFLewKYbq_aws-iot-certificates.png" size="50" width="388" height="408" caption="Certificate wizard" position="center" showCaption="true"}
5. Click **Create a certificate**.
   The *Create a certificate* screen appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sehdtYmb71A0NICh4Nyml_aws-iot-create-certificate.png" size="80" width="746" height="382" caption="Create a certificate screen" position="center" showCaption="true"}
6. Click **Create certificate**.
   The *Certificate created* screen appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4xECEOxkSnjbd8n6dKL7r_aws-iot-certificate-success.png" size="80" width="1037" height="526" caption="Certificate created screen" position="center" showCaption="true"}
7. Click **Download&#xA0;**&#x6E;ext to *A certificate for this thing*.
8. Click **Download&#xA0;**&#x6E;ext to *A private key*.
9. Click **Keep&#xA0;**&#x6E;ext to the downloaded files.
10. Click **Activate**, and then click **Attach a policy**.
    The *Add authorization to certificate* screen appears.
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CER_7HJZXXmFRNvhXVaWO_aws-iot-policy.png" size="80" width="751" height="402" caption="Add authorization to certificate screen" position="center" showCaption="true"}
11. Select the named **Thing1-Policy**, and then click **Done**.
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xT6c811L9MGH58HgKZa8J_aws-iot-certificate-success.png" size="80" width="1037" height="526" position="center" showCaption="false"}

## Step 4: Edit Policy

**To edit the policy:&#x20;**

1. From the left pane, click **Policies**.
   The *Policies&#x20;*&#x70;ane appears.&#x20;
2. Click the named **Thing1-Policy**.
   The named *Thing1-Policy* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/klxQ58Tn_WLxFba6BIi68_aws-iot-policy-details.png" size="80" width="749" height="530" caption="Policy dialog box" position="center" showCaption="true"}
3. Click **Edit policy document**.
   The *Edit Policy* screen appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cRhCT48jqWCWdGVcb-8hn_aws-iot-policy-edit.png" size="80" width="752" height="526" caption="Edit Policy screen" position="center" showCaption="true"}
4. Scroll down the policy document, copy the last line, paste the copied line below, and edit it as follows:
   Change **sdk-nodejs** to *sdk-golang*.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Fnaf_Q5NpkRt77wlgHJ7P_aws-iot-policy-edit-golang.png" size="80" width="590" height="101" caption="Edit policy code" position="center" showCaption="true"}
5. Click **Save as new version**.
6. Click the **Back&#xA0;**&#x61;rrow to return to the *Policies&#x20;*&#x70;ane.

# Set Up Integration in Litmus Edge

After setting up your AWS account, you will need to log in to Litmus Edge to complete the steps below and complete the integration.&#x20;

## Step 5: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

## Step 6: Add Tag to Device

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

## Step 7: Retrieve Parameters for AWS Connector

You will have to log in to your AWS account to retrieve the parameters for the AWS connector.&#x20;

**To retrieve the parameters:**

1. Log in to your AWS account.&#x20;
2. Open the AWS IoT browser tab and click **Manage&#x20;**>**&#x20;Things**.
   The *Things&#x20;*&#x70;ane appears.&#x20;
3. Click **Thing\[#]**.
   The *Thing\[#}* dialog box appears.
4. From the left pane, click **Interact**.
   The pane changes to reflect your selection.
5. Copy the **REST API Endpoint&#xA0;**&#x75;nder the HTTPS section. This is the *Hostname&#x20;*&#x70;arameter for the AWS connector.&#x20;
6. Click **Secure > Policies**.
   The *Policies&#x20;*&#x70;ane appears.
7. Click **Thing\[#]-Policy**.
   The *Thing\[#]-Policy&#x20;*&#x64;ialog box appears.
8. Scroll to the bottom and copy SDK resource to your clipboard. For this use case, the SDK resource is **sdk-golang**. This is the *Client ID* parameter for the AWS connector.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cobC0-16iXGjmwvUbVR0X_aws-iot-things-sdk.png" size="80" width="927" height="647" caption="The SDK resource value" position="center" showCaption="true"}
9. Copy the first topic value. In this use case, the topic is **topic\_1**. This the *Integration Topic* value.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/et2d9FRdGwyIfg82wBQcF_aws-iot-things-topic.png" size="80" width="951" height="606" caption="The topic value" position="center" showCaption="true"}

## Step 8: Add AWS IoT Core Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **MQTT - Amazon AWS IoT Core over SSL&#x20;**&#x70;rovider.

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Paste the *REST API Endpoint* value copied in Step 6.&#x20;
- **Port**: Enter the MQTT broker port. The default value is **8883**.&#x20;
- **Certificate**: Paste the downloaded certificate in Step 3. &#x20;
- **Private key**: Paste the downloaded private key in Step 3.&#x20;
- **Client ID**: Paste the *SDK resource* copied in Step 6.&#x20;
- **QoS**: Confirm that the default value **0** is entered. The Quality of Service (QoS) level is an agreement between the sender of a message and the receiver of a message that defines the guarantee of delivery for a specific message.
- **Parallel Publish Count**: The number of messages being published simultaneously. Once the defined limit has been reached, subsequent messages are silently dropped. The default value is **100**.
- **Integration Topic**: Paste the topic value copied in Step 6.&#x20;
- **LWT topic**: The topic for Last Will and Testament feature of MQTT.
- **LWT payload**: The payload for Last Will and Testament feature of MQTT.&#x20;
- **LWT payload type**: The payload type for MQTT's Last Will and Testament feature. The options are *string&#x20;*&#x61;nd *base64*.&#x20;
- **LWT QoS**: The Quality of Service value for MQTT's Last Will and Testament feature.
- **LWT retained**: Select this check box to retain the value for MQTT's Last Will and Testament feature.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

## Step 9: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3Zn4dsoTADVWs5tUSHlfM_awsiot.png" size="60" width="369" height="345" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

## Step 10: Create Topics for Connector

You will now need to create topics for the connector. To create outbound topics, you have the option of importing the tag created in Step 6. To create inbound topics, you will have to manually create the topic.

## Create Outbound Topics

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.
   The *DeviceHub Import* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/P4DmkIncgndRZM-a6izhV_nexzwy7zvifut6sw3syxy-importtagsicon.png)
4. Select all the tags to import and click **Import**.&#x20;

## Create Inbound Topics

Before creating inbound topics, copy the *Raw Topic* for tags that you want used for topics. See [Manage Tags](docId\:G9ROOmPC3XZ4Zq6CbNONc) for more information.

**To create inbound topics:**

1. Click the connector tile.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Add a new subscription** icon.
   The *Data Integration* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KTv6nD5K9Qg0a7QYZKzEx_aj9ttx4bumgxzesvkwk3l-addnewsubicon.png)
4. Configure the following parameters.&#x20;
   - **Data Direction**: Select **Remote to Local - Inbound**.
   - **Local Data Topic**: Paste the *Raw Topic&#x20;*&#x63;opied for the device tag.
   - **Remote Data Topic**: Confirm the topic where the data is pushed.&#x20;
   - **Enable**: Select the toggle to enable the topic.&#x20;
5. Click **Yes&#x20;**&#x74;o add the topic.&#x20;

## Step 11: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

## Step 12: Verify Outbound Messages

You will need to log in to your AWS account to verify that outbound messages are being sent.&#x20;

**To verify outbound messages:&#x20;**

1. Log in to your AWS account.&#x20;
2. Navigate to the *AWS Things* pane and click **Monitor**.
   The *Monitor&#x20;*&#x70;ane appears.&#x20;
3. Select **Hour&#xA0;**&#x66;rom the **Time range&#xA0;**&#x64;rop-down list.
   The charts change to reflect your selection.
4. Click the browser **Refresh&#x20;**&#x74;o refresh the page.
   The *Successful connections* chart shows a connection.
5. Scroll down to the Messages published chart.
   The *Messages published* chart shows messages arriving.

## Step 13: View Outbound Messages in Litmus Edge Flow

You can create a flow in Litmus Edge to view the outbound messages.&#x20;

**To create a flow:**

1. Follow the steps to [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) and add the following nodes.
   - **DataHub Subscribe&#x20;**
   - **Debug**
2. Double-click the **DataHub Subscribe&#xA0;**&#x6E;ode.
   The *Edit DataHub Subscribe node* dialog box appears.
3. Paste the local topic you created in Step 9. &#x20;
4. If needed, configure the *Datahub Subscribe* connection. See the "Step 3: Configure Connector Nodes" section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
5. Click **Done**, and then click **Deploy**.
6. Click the **debug&#xA0;**&#x74;ab. See the *Additional Options* section in [Manage the Flow Canvas](docId\:qQnwjDagEcrDG0JtIVulu) for more details.&#x20;
7. Verify that *Test Message* appears in the debug results.&#x20;

You can return to *AWS Monitor* browser tab and view the *Messages published&#x20;*&#x63;hart to see the outbound messages are being sent.

[title] Use the Base Conversion Function
[path] How-To-Guides/Analytics Guides/

Base conversion is the process of converting a number from one numeral system to another.&#x20;

You have the following base conversion options:

- decimal -> binary&#x20;
- decimal -> hexaDecimal&#x20;
- decimal -> octaDecimal&#x20;
- binary -> decimal
- octaDecimal -> decimal&#x20;
- hexaDecimal -> decimal

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

- For conversion of various units to decimal, it is expected that the input is a string value.
- Your input needs to have a field named **value&#xA0;**&#x69;f you are converting from binary, octadecimal, or hexadecimal to decimal.
:::

# Video

:::Iframe{code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/-_flOR3IByM?si=iB32IQQBLkQneDld&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

Review the following user scenario for using the Base Conversion processor. In manufacturing plants, engineers need to work with machines that use different protocols. If a machine produces diagnostic data in one type of format, and the monitoring software requires decimal format for analysis, the Base Conversion Function can convert the data quickly. This allows for seamless integration between the machine and the monitoring system.

For this guide, you will simulate data coming from a PLC and generate the decimal values 200, 300, and 400. You will then convert them accordingly using base conversion.&#x20;

## Step 1: Add a Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters.&#x20;

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

## Step 2: Add Tags&#x20;

After connecting the device, [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create the following tags.&#x20;

### Tag 1

- **Name**: Select **S - Random value generator**.
- **Value Type**: Select **int64**.&#x20;
- **Polling Interval**: Enter **5**.
- **Tag Name**: Enter **Tag 1**.&#x20;
- **Min\_value**: Enter **200**.
- **Max\_value**: Enter **200**.

### Tag 2

- **Name**: Select **S - Random value generator**.
- **Value Type**: Select **int64**.&#x20;
- **Polling Interval**: Enter **5**.
- **Tag Name**: Enter **Tag 2**.&#x20;
- **Min\_value**: Enter **300**.
- **Max\_value**: Enter **300**.

### Tag 3

- **Name**: Select **S - Random value generator**.
- **Value Type**: Select **int64**.&#x20;
- **Polling Interval**: Enter **5**.
- **Tag Name**: Enter **Tag 3**.&#x20;
- **Min\_value**: Enter **400**.
- **Max\_value**: Enter **400**.

## Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tags you previously created.&#x20;

**To create the analytics flow:**

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.&#x20;
4. In the **Topic&#x20;**&#x66;ield, click the search icon, select the device you previously created, and then select the alias topic for Tag 1.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WCQZHR-mYlP6DN5qMoK6w_base-conversion-topic-search-icon.png" size="80" width="1174" height="602" caption="Topic search icon" position="center" showCaption="true"}
5. Click **Save**.&#x20;
6. Click **Add processor** again and select **Base Conversion**.&#x20;
7. In the **Conversion&#x20;**&#x66;ield, make sure the default value **decimal -> binary** is selected, and click **Save**.&#x20;
8. Connect the two processors, select **Events**, and enter a definition of **Tag 1&#x20;**&#x66;or the connection.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x2PeVUbJ9ajsQH1yGsEOT_base-conversion-tag-1-flow.png" size="80" width="955" height="415" caption="Processor flow for Tag 1" position="center" showCaption="true"}
9. Repeat steps 2-8 for Tag 2 and configure the following:
   - In the *DataHub Subscribe* processor, select the alias topic for Tag 2.&#x20;
   - In the *Base Conversion* processor, select a conversion of **decimal -> hexaDecimal**.&#x20;
   - When you connect the two processors, select **Events&#x20;**&#x61;nd enter a definition of **Tag 2** for the connection.&#x20;
10. Repeat steps 2-8 for Tag 3 and configure the following:
    - In the *DataHub Subscribe* processor, select the alias topic for Tag 3.&#x20;
    - In the *Base Conversion* processor, select a conversion of **decimal -> octaDecimal**.&#x20;
    - When you connect the two processors, select **Events&#x20;**&#x61;nd enter a definition of **Tag 3** for the connection.&#x20;
11. On the analytics canvas, click **Save**.&#x20;

The configured analytics flows should look like the following.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/x8idYM4MZUO46qiqE6Oed_image.png" size="80" width="958" height="525" position="center" caption="Completed analytics canvas" showCaption="true"}

## Step 4: View Base Conversion Data

You can view data on the analytics canvas by clicking the **View&#x20;**&#x69;con in each Base Conversion processor.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Txdg7PDlloPv7E7vmjcCm_image.png" size="80" width="958" height="525" caption="View icons for Base Conversion processors" position="center" showCaption="true"}

### Base Conversion Data for Tag 1

The original decimal value of 200 is converted to a binary value of 11001000.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3mn8GizAOIozKfKiAKpL8_image.png" size="80" width="955" height="801" caption="Tag 1 value after base conversion" position="center" showCaption="true"}

### Base Conversion Data for Tag 2

The original decimal value of 300 is converted to a hexadecimal value of 12c.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/bJRNSIYoLXyI-tkb8yp5E_image.png" size="80" width="951" height="806" caption="Tag 2 value after base conversion" position="center" showCaption="true"}

### Base Conversion Data for Tag 3

The original decimal value of 400 is converted to a octadecimal value of 620.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FV1KbkIsanrSOBZuU202s_image.png" size="80" width="952" height="785" caption="Tag 3 value after base conversion" position="center" showCaption="true"}


[title] Use the XMR Chart Function
[path] How-To-Guides/Analytics Guides/

You can use the XMR Chart function to calculate a central line that remains constant. &#x20;

The central line is utilized to monitor the consistency and fluctuation of a process over a period of time. It comprises two distinct charts:&#x20;

- **Individual (X) Chart:** Used to trace individual values.
- **Moving Range (MR) chart:** Used to observe the variation between consecutive measurements.

# User Scenario

Review the following scenario for the XMR Chart function. Then, you will simulate PLC data and calculate the central line.

In a pharmaceutical production plant, consistent dosage in pill manufacturing is paramount for patient safety and regulatory compliance. High-precision scales measure the weight of individual pills, with data points collected at regular intervals.&#x20;

The XMR Chart function is integral to this process, providing real-time monitoring of dosage weights. By establishing a central line from initial measurements and calculating moving ranges, the plant ensures each pill is within the stringent weight specifications.&#x20;

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: input1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **1**
- **Tag Name**: Enter **input1**
- **Min\_value**: Enter **101**
- **Max\_value**: Enter **199**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the XMR Chart Processor function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **input1&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select the **XMR Chart&#x20;**&#x70;rocessor.
   The *Edit a Processor&#x20;*&#x64;ialog box appears.
   - **Window Size:** Enter a value that represents the range to apply the XMR chart function. For this example, we input a value of **100**.
   - **Process Limit Multiplier:** It is used to calculate the upper and lower process limits. For this example, we input a value of **2.66**.
   - **TimeInterval:&#x20;**&#x49;f you know your input is going to publish at the expected interval, it is better to disable this timer by entering **0** in the field.
   - Click **Save**.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0t7cNz2vV0LU00N-I-N8O_image.png "Edit a Processor dialog box")
7. Connect the *DataHub Subscribe* processor (tag: *input1*) to the *XMR Chart* processor with a wire and use the **events&#x20;**&#x63;onnection.
8. On the analytics canvas, click **Save**.
   The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qA7pWRHmPxdYhH0ildw83_image.png "Completed Flows Canvas")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *XMR Chart&#x20;*&#x70;rocessor to view the output values.

The output of the XMR Chart function shows a central line at **150.29**, with an upper process limit of **229.14** and a lower process limit of **71.44**. ​

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vlBXHn-Uj8VYX2idzx077_image.png "Output of XMR Chart")

Once the window is filled, other fields that are calculated as follows:&#x20;

- **Moving Ranges:** Difference of successive values.
- **Average Moving Range:&#x20;**&#x41;verage of the moving ranges.
- **Process Limit Multiplier:** Calculates the upper and lower process limits.
- **Upper and Lower Natural Process limit:&#x20;**&#x43;alculated by taking the product of process limit multiplier and average moving range, and adding/subtracting it from the central line.

In some cases, the central line is adjusted. Here are the cases:

- If current value is outside the process limits multiple times in a row.
- If the multiple values in a row are closer to either limit than they are to the central line.


[title] Organize Device and Tag Data by Using Metadata
[path] How-To-Guides/DeviceHub Guides/

When configuring DeviceHub devices and tags, you have the option of adding metadata, which allows you to define key-value pair data for the device output payload. The metadata can then be used to find, use, and reuse particular instances of data.&#x20;

Some examples where using metadata would be beneficial include the following:

- Device category metadata organizes devices.&#x20;
- Tag type metadata organizes tag categories.&#x20;
- Plant Floor ID metadata organizes different areas of a production site.&#x20;
- Location metadata organizes devices and plants across multiple worldwide sites.&#x20;

# User Scenario

For this user scenario, you will use device and tag metadata to organize your data using the following parameters:

- The country and city the device is located in. In a real-life scenario, you may be using multiple Litmus Edge instances across different locations that are managed by Litmus Edge Manager.&#x20;
- The location (wing area) of the devices within each plant.&#x20;
- The category for each tag.&#x20;

You will create four devices, with two tags each, totaling eight tags.

## Step 1: Connect Devices

You will first connect all relevant devices in DeviceHub.&#x20;

**To connect devices:**

1. Navigate to **DeviceHub**.&#x20;
   The *Devices&#x20;*&#x70;ane opens.&#x20;
2. Click the **Connect a Device** box.&#x20;
   The *Connect Device&#x20;*&#x64;ialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/oSZM3kzzeLi-lItO0BMLO_connectdevice.png" size="80" width="1046" height="528" caption="Connect a Device box" position="center" showCaption="true" indent="2"}

3. Click the **Device Type** drop-down list and select **Simulator**.
4. Click the **Driver Name** drop-down list, and select **Generator**.

Configure the following four devices.&#x20;

### Device 1

- **Name**: PLC\_1
- **Meta Data**: Select checkbox.&#x20;
- **Key/Value pair 1**
  - **Key**: Country
  - **Value**: US
- **Key/Value pair 2**
  - **Key**: City
  - **Value**: Chicago
- **Key/Value pair 3**:&#x20;
  - **Key**: Device\_Location
  - **Value**: South\_Wing
- **Enable Alias Topics**: To view the topic with an alias name instead of in raw format, select this checkbox. For Litmus Edge version 3.5.2 and later, it is selected by default. Learn more about [Alias Topics](docId:3eyAfPpweuVmBLCEy17sq).&#x20;

### Device 2

- **Name**: PLC\_2
- **Meta Data**: Select checkbox.&#x20;
- **Key/Value pair 1**
  - **Key:&#x20;**&#x43;ountry
  - **Value**: US
- **Key/Value pair 2**
  - **Key**: City
  - **Value**: Chicago
- **Key/Value pair 3**&#x20;
  - **Key**: Device\_Location
  - **Value**: East\_Wing
- **Enable Alias Topics**: To view the topic with an alias name instead of in raw format, select this checkbox. For Litmus Edge version 3.5.2 and later, it is selected by default. Learn more about [Alias Topics](docId:3eyAfPpweuVmBLCEy17sq).&#x20;

### Device 3

- **Name**: PLC\_3
- **Meta Data**: Select checkbox.&#x20;
- **Key/Value pair 1**
  - **Key:&#x20;**&#x43;ountry
  - **Value**: US
- **Key/Value pair 2**
  - **Key**: City
  - **Value**: Cleveland
- **Key/Value pair 3**&#x20;
  - **Key**: Device\_Location
  - **Value**: North\_Wing
- **Enable Alias Topics**: To view the topic with an alias name instead of in raw format, select this checkbox. For Litmus Edge version 3.5.2 and later, it is selected by default. Learn more about [Alias Topics](docId:3eyAfPpweuVmBLCEy17sq).&#x20;

### Device 4

- **Name**: PLC\_4
- **Meta Data**: Select checkbox.&#x20;
- **Key/Value pair 1**
  - **Key:&#x20;**&#x43;ountry
  - **Value**: Canada
- **Key/Value pair 2**
  - **Key**: City
  - **Value**: Toronto
- **Key/Value pair 3**&#x20;
  - **Key**: Device\_Location
  - **Value**: North\_Wing
- **Enable Alias Topics**: To view the topic with an alias name instead of in raw format, select this checkbox. For Litmus Edge version 3.5.2 and later, it is selected by default. Learn more about [Alias Topics](docId:3eyAfPpweuVmBLCEy17sq).&#x20;

## Step 2: Add Tags

You can now add tags to the devices you created. For this user scenario, the tags will be used to capture air pressure and temperature values, and each device can have multiple tags for each measurement.&#x20;

**To add tags:&#x20;**

1. Navigate to **DeviceHub&#x20;**> **Tags**.&#x20;
2. From the *Tags&#x20;*&#x70;ane, click **Add Tag**, and then select **Add Tag**.
   The *Add Tag* dialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qtBEZhjluowlxDF9hMdmC_add-tag.png" size="80" width="1582" height="478" caption="The Add Tag icon" position="center" showCaption="true" indent="2"}

3. Click the **Select a Device** field, and then select the first device to add tags to.&#x20;

Add the following eight tags.&#x20;

### PLC\_1

Tag 1

- **Name**: S - Random value generator
- **Value Type**: int64
- **Polling Interval**: Enter **5**. This is the time interval in seconds that the tag will be polled for data.&#x20;
- **Tag Name**: Temperature\_1
- **Meta Data**: Select checkbox.&#x20;
- **Key/Value pair**
  - **Key**: Category
  - **Value**: Temp

Tag 2

- **Name**: S - Random value generator
- **Value Type**: int64
- **Polling Interval**: Enter **5**. This is the time interval in seconds that the tag will be polled for data.&#x20;
- **Tag Name**: Temperature\_2
- **Meta Data**: Select checkbox.&#x20;
- **Key/Value pair**
  - **Key**: Category
  - **Value**: Temp

### PLC\_2

Tag 1

- **Name**: S - Random value generator
- **Value Type**: int64
- **Polling Interval**: Enter **5**. This is the time interval in seconds that the tag will be polled for data.&#x20;
- **Tag Name**: Temperature\_1
- **Meta Data**: Select checkbox.&#x20;
- **Key/Value pair**
  - **Key**: Category
  - **Value**: Temp

Tag 2

- **Name**: S - Random value generator
- **Value Type**: int64
- **Polling Interval**: Enter **5**. This is the time interval in seconds that the tag will be polled for data.&#x20;
- **Tag Name**: Air\_Pressure\_1
- **Meta Data**: Select checkbox.&#x20;
- **Key/Value pair**
  - **Key**: Category
  - **Value**: Pressure

### PLC\_3

Tag 1

- **Name**: S - Random value generator
- **Value Type**: int64
- **Polling Interval**: Enter **5**. This is the time interval in seconds that the tag will be polled for data.&#x20;
- **Tag Name**: Air\_Pressure\_1
- **Meta Data**: Select checkbox.&#x20;
- **Key/Value pair**
  - **Key**: Category
  - **Value**: Pressure

Tag 2

- **Name**: S - Random value generator
- **Value Type**: int64
- **Polling Interval**: Enter **5**. This is the time interval in seconds that the tag will be polled for data.&#x20;
- **Tag Name**: Air\_Pressure\_2
- **Meta Data**: Select checkbox.&#x20;
- **Key/Value pair**
  - **Key**: Category
  - **Value**: Pressure

### PLC\_4

Tag 1

- **Name**: S - Random value generator
- **Value Type**: int64
- **Polling Interval**: Enter **5**. This is the time interval in seconds that the tag will be polled for data.&#x20;
- **Tag Name**: Air\_Pressure\_1
- **Meta Data**: Select checkbox.&#x20;
- **Key/Value pair**
  - **Key**: Category
  - **Value**: Pressure

Tag 2

- **Name**: S - Random value generator
- **Value Type**: int64
- **Polling Interval**: Enter **5**. This is the time interval in seconds that the tag will be polled for data.&#x20;
- **Tag Name**: Temperature\_1
- **Meta Data**: Select checkbox.&#x20;
- **Key/Value pair**
  - **Key**: Category
  - **Value**: Temp

## Step 3: View Data

You can now view the data from the devices and tags in Litmus Edge through the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89).&#x20;

### View Data in Flows Manager

1. Navigate to **DeviceHub**.                                                                                                                          The *Devices&#x20;*&#x70;ane opens.&#x20;
2. For the PLC\_1 device tile, open the menu and copy the device topic name. Store the topic name somewhere for use later.&#x20;
   The ">" indicates a wildcard character, so the topic name applies to all tags for the device.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0AZCp1qH2aNacarnbzQDb_copydevicetopic.png" size="80" width="598" height="358" caption="Device topic name" position="center" showCaption="true" indent="2"}

3. Copy and store the device topic names for all other devices.&#x20;
4. Navigate to **Flows Manager**.&#x20;
5. For a Flows Manager, click the **Go To Flow Definition** icon.&#x20;
   The Flow canvas opens in a new browser tab.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YJuq2bpVLRQFztDx388IL_go-to-flow-definition.png" size="80" width="1010" height="490" caption="Go To Flow Definition icon" position="center" showCaption="true" indent="2"}

6. On the Flow canvas, drag four **DataHub Subscribe&#x20;**&#x6E;odes and four **debug&#x20;**&#x6E;odes onto the canvas. Then, connect the nodes.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/daVvuPYlZHXYyrKm8Wwid_flowcanvas1.png" size="80" width="779" height="459" caption="Flow canvas nodes" position="center" showCaption="true" indent="2"}

7. Double-click the first DataHub subscribe node.&#x20;
   The *Edit DataHub Subscribe node* dialog box appears.
   - In the **Topic&#x20;**&#x66;ield, paste the wildcard topic name for the device copied in step 2.&#x20;
   - If needed, configure the Datahub Subscribe connection. See the [Configure Connector Nodes](docId:7x0n7C4DxswTD61vpIBza) section to learn more.&#x20;
   - In the **Name&#x20;**&#x66;ield, enter **PLC\_1**.&#x20;
   - Click **Done**.&#x20;
8. Continue configuring the other three **DataHub Subscribe** nodes for the other devices.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tbrHE39C68jiTrVTs3hVK_flowcanvas2.png" size="80" width="791" height="503" caption="Four DataHub Subscribe nodes configured" position="center" showCaption="true" indent="2"}

9. Click **Deploy**.&#x20;
10. Expand the message window beneath the flow to view debug messages.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uJmaK_cPXEt6DKZtj9pSU_flowcanvas3.png" size="80" width="1354" height="769" caption="The message window" position="center" showCaption="true" indent="2"}

11. Click the **Debug&#x20;**&#x69;con.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rez2kWBOzmYTRB8QEie0x_flowcanvas4.png" size="80" width="1347" height="547" caption="The Debug icon" position="center" showCaption="true" indent="2"}

12. Make sure the four debug nodes are activated.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iUOi53j-y0mK5oJeT5Ujr_flowcanvas5.png" size="80" width="843" height="613" caption="Activate buttons" position="center" showCaption="true" indent="2"}

13. View the data in the debug window.&#x20;
    The payload below shows data from each tag in each of the four devices. The device and tag metadata is included at the end of each payload item.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HQZTEg2Day87q0AaQbgak_image.png" size="80" width="1920" height="937" caption="Payload from four devices" position="center" showCaption="true"}

### View Payload Data

Review the payload data from the debug window for each DeviceHub device.&#x20;

:::CodeblockTabs
PLC\_3

```json
{
  "success": true,
  "datatype": "int64",
  "timestamp": 1683901823577,
  "registerId": "DBE0C6D2-A91D-49D1-9CB7-DBF3C6D9C919",
  "value": -1,
  "deviceID": "7C01E851-FE46-463A-90EC-98AA3F12BE09",
  "tagName": "Air_Pressure_1",
  "deviceName": "PLC_3",
  "description": "",
  "metadata": {
    "Country": "US",
    "Device_Location": "North_Wing",
    "City": "Cleveland",
    "Category": "Pressure"
  }
}
```

PLC\_3

```json
{
  "success": true,
  "datatype": "int64",
  "timestamp": 1683901823577,
  "registerId": "E2A6A9E3-697B-436D-8682-866950BF96AC",
  "value": -1,
  "deviceID": "7C01E851-FE46-463A-90EC-98AA3F12BE09",
  "tagName": "Air_Pressure_2",
  "deviceName": "PLC_3",
  "description": "",
  "metadata": {
    "Device_Location": "North_Wing",
    "City": "Cleveland",
    "Country": "US",
    "Category": "Pressure"
  }
}
```

PLC\_1

```json
{
  "success": true,
  "datatype": "int64",
  "timestamp": 1683901824688,
  "registerId": "7425F365-9D97-4B6C-BB01-DCCAFC04F383",
  "value": 1,
  "deviceID": "C9C3F3DF-954F-4233-834C-4B381741357C",
  "tagName": "Temperature_1",
  "deviceName": "PLC_1",
  "description": "",
  "metadata": {
    "Device_Location": "South_Wing",
    "City": "Chicago",
    "Country": "US",
    "Category": "Temp"
  }
}
```

PLC\_1

```json
{
  "success": true,
  "datatype": "int64",
  "timestamp": 1683901824688,
  "registerId": "C35CB204-5A00-4753-B7AF-F1D6059A2E1B",
  "value": 1,
  "deviceID": "C9C3F3DF-954F-4233-834C-4B381741357C",
  "tagName": "Temperature_2",
  "deviceName": "PLC_1",
  "description": "",
  "metadata": {
    "Country": "US",
    "Category": "Temp",
    "Device_Location": "South_Wing",
    "City": "Chicago"
  }
}
```

PLC\_2

```json
{
  "success": true,
  "datatype": "int64",
  "timestamp": 1683901825029,
  "registerId": "008A21C1-FE0A-41EC-83A6-48C60831C11C",
  "value": 1,
  "deviceID": "5D4EF199-AC0D-4510-839E-F3256650D0B8",
  "tagName": "Temperature_1",
  "deviceName": "PLC_2",
  "description": "",
  "metadata": {
    "Device_Location": "East_Wing",
    "City": "Chicago",
    "Country": "US",
    "Category": "Temp"
  }
}
```

PLC\_2

```json
{
  "success": true,
  "datatype": "int64",
  "timestamp": 1683901825029,
  "registerId": "C083DE09-F6BD-428A-9710-6579ADB03F9C",
  "value": 1,
  "deviceID": "5D4EF199-AC0D-4510-839E-F3256650D0B8",
  "tagName": "Air_Pressure_1",
  "deviceName": "PLC_2",
  "description": "",
  "metadata": {
    "City": "Chicago",
    "Country": "US",
    "Category": "Pressure",
    "Device_Location": "East_Wing"
  }
}
```

PLC\_4

```json
{
  "success": true,
  "datatype": "int64",
  "timestamp": 1683901827473,
  "registerId": "0D918230-21CD-4D89-9CF2-F4E3550B599B",
  "value": 0,
  "deviceID": "629145EB-2549-4BC1-8ECB-ACD86BC44061",
  "tagName": "Temperature_1",
  "deviceName": "PLC_4",
  "description": "",
  "metadata": {
    "Country": "Canada",
    "Device_Location": "North_Wing",
    "City": "Toronto"
  }
}
```

PLC\_4

```json
{
  "success": true,
  "datatype": "int64",
  "timestamp": 1683901827473,
  "registerId": "7782779E-1582-4773-AB02-0A8CE8BD3597",
  "value": 0,
  "deviceID": "629145EB-2549-4BC1-8ECB-ACD86BC44061",
  "tagName": "Air_Pressure_1",
  "deviceName": "PLC_4",
  "description": "",
  "metadata": {
    "Device_Location": "North_Wing",
    "City": "Toronto",
    "Country": "Canada",
    "Category": "Pressure"
  }
}
```
:::


[title] Use the Expression Processor Function
[path] How-To-Guides/Analytics Guides/

You can use a single input or multiple inputs to create a mathematical expression with your desired topic.&#x20;

Single inputs use events or values-type connection and multiple inputs use only values-type connection.

# **User Scenario**

Review the following scenario for the expression processor function. Then, you will simulate PLC data and calculate mathematical expression outputs using the expression processor function.

## **User Scenario 1 (Using one Input Function)**

In a cold storage facility, maintaining the right humidity levels is crucial for preserving the quality of perishable goods. An alert system needs to be in place to signal if the humidity goes beyond the acceptable range.

**Expression for Humidity Alert:&#x20;**(Humidity\_value \< 30 || Humidity\_value > 50) ? "Alert: Humidity Out of Range" : "Humidity Normal"

## **User Scenario 2 (Using multiple Input Functions)**

In a solar power plant, it's essential to constantly monitor the efficiency of solar panels to ensure optimal energy production. Efficiency can be calculated based on the ratio of the output power to the input solar radiation, along with the surface area of the solar panel.

**Expression for Efficiency Calculation:&#x20;**(P\_value / (S\_value \* Area\_value)) \* 100

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tags. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more. Each tag will represent one of the user scenarios noted above.&#x20;

## Tag 1 (User Scenario 1)

- **Name**: Select **S - Random value generator**.
- **Value Type**: Select **int64**.&#x20;
- **Polling Interval**: Enter **5**.
- **Tag Name**: Enter **Humidity**.
- **Min Value:** Enter **25**.
- **Max Value:** Enter **55**.

## Tag 2 (User Scenario 2)

- **Name**: Select **S - Random value generator**.
- **Value Type**: Select **float64**.&#x20;
- **Polling Interval**: Enter **5**.
- **Tag Name**: Enter **Power**.&#x20;
- **Min Value:** Enter **75**.
- **Max Value:** Enter **100**.

## Tag 3 (User Scenario 2)

- **Name**: Select **S - Random value generator**.
- **Value Type**: Select **float64**.&#x20;
- **Polling Interval**: Enter **5**.
- **Tag Name**: Enter **Solar\_Radiation**.&#x20;
- **Min Value:** Enter **50**.
- **Max Value:** Enter **75**.

## Tag 4 (User Scenario 2)

- **Name**: Select **S - Random value generator**.
- **Value Type**: Select **int64**.&#x20;
- **Polling Interval**: Enter **5**.
- **Tag Name**: Enter **Area**.&#x20;
- **Min Value:** Enter **250**.
- **Max Value:** Enter **500**.

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tag you previously created. Follow the appropriate step out of 3a or 3b based on the two user scenarios for the Expression processor function you want to use.

## Step 3a: Configure Single Input Expression (User Scenario 1)

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **Humidity&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select **Expression&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Expression**: Enter the mathematical expression from the user scenario 1.&#x20;
     You must define the connection of the input tag as a **variable name&#x20;**(Humidity) and then use that in the mathematical expression (such as Humidity\_value).
   - **Output Field Name**: Enter **value&#x20;**&#x61;s the field to appear in the output.
7. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3u7ou-UJ-5LO4-OspjmxD_image.png "Expression processor dialog box")
8. Connect the DataHub Subscribe processor (tag: *Humidity)* to the Expression processor with a wire and enter the definition of **Humidity&#x20;**&#x66;or the **value-type** connection.
9. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rvfxLsuRacaC8ZTUtlpIK_image.png "Completed canvas flow with one input")

## Step 3b: Configure Multiple Inputs Expression (User Scenario 2)

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **Power&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Repeat steps 2-4 in *Step3b* to add another *DataHub Subscribe* node. Select the alias topic for the **Solar\_radiation&#x20;**&#x61;nd **Area&#x20;**&#x74;ag respectively.&#x20;
6. Click **Save**.
7. Click **Add processor** again and select **Expression&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Expression**: Enter the mathematical expression from the user scenario 2.&#x20;
     You must define the connection of the input tag as a **variable name&#x20;**(P, S, Area) and then use that in the mathematical expression (such as P\_value, S\_value, and Area\_value).
   - **Output Field Name**: Enter **value&#x20;**&#x61;s the field to appear in the output.
8. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lsGZw6G--vzW1dRvVakBf_image.png "Exression processor dialog box")
9. Connect the DataHub Subscribe processor (tag: *Power)* to the Expression processor with a wire and enter the definition of **P&#x20;**&#x66;or the **value-type** connection.
10. Connect the DataHub Subscribe processor (tag: *Solar\_Radiation)* to the Expression processor with a wire and enter the definition of **S&#x20;**&#x66;or the **value-type** connection.
11. Connect the DataHub Subscribe processor (tag: *Area)* to the Expression processor with a wire and enter the definition of **Area&#x20;**&#x66;or the **value-type** connection.
12. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WK2ZS831zXNvSAn7ZfakZ_image.png "Completed canvas flow with multiple inputs")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Expression* processor to view the output values.

## View Output for User Scenario 1

The expression function calculates the humidity from the defined tag values and gives the output for the mathematical expression.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IifgUf0XZAdWWV2IMGlPk_image.png "Output for single input expression")

## View Output for User Scenario 2

The expression function calculates the efficiency from the defined tag values and gives the output for the mathematical expression.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ixueibh5CTUVHXNyNRnZy_image.png "Output for multiple input expression")


[title] Backup File Contents and File Management
[path] Product Features/System/Backup/Restore/Back Up a Device/

Review the following information for backup file contents and file management.&#x20;

# What Gets Backed Up

Configurations, including OPC UA configurations, are saved in a `.DAT` file, which is downloadable from the *Backup/Restore Configuration* section in the *Backup/Restore* tab.&#x20;

Backup consists of:

- User, role, and group configurations
- Device IP
- Authentication Settings
  - API-keys
  - Users
  - Password Policy
- DeviceHub settings (device and tags)
  - Including metadata
- Marketplace catalogues
- Device Management Settings
  - Certificates
  - Timezone
  - Friendly names
  - Network Card Configurations
  - DNS
  - NTP
- Flow Instance and Flows File
- OPC UA settings including hierarchy
- Saved firewall rules and static routes
- Integration Connectors, Configurations and Subscribed Topics
- Analytics Groups and Processors
- Licensing Information

# What Is Not Backed Up

Databases, containers, and volume/images are not part of backup.

# Backup File Characteristics

The lightweight backup file:

- Makes efficient use of storage resources
- Uses encryption to secure credentials

# Best Practices

The following recommendations help to ensure seamless recovery:

- The default backup file is named something like `backup_1624983948318.dat`. Rename the file based on a naming convention that identifies the date the backup was taken.

:::hint{type="info"}
**Example**: `2020-09-18 12:51-backup.dat`
:::

- Move the backup file from the default `Downloads` directory to an operational directory on a server that can be accessed by the operations team.

# Successful Backup

The backup `.DAT` file must be extracted and opened in Notepad.

- This `.DAT` file contains the Litmus Edge configurations, as well as OPC UA configurations and Flows configurations.
- Use this file to restore your Litmus Edge device.

:::hint{type="warning"}
**Caution**: Modifications to the contents of the backup `.DAT` file may render it unusable for restoring a Litmus Edge device.
:::


[title] Receive Data from Azure IoT Hub with a Device Certificate
[path] How-To-Guides/Integration Guides/Azure IoT Hub Guides/

Review the following guide for setting up an inbound data integration between Litmus Edge and Azure IoT Hub using a Device Certificate.&#x20;

# Additional Resources

Refer to the following resources for more information.&#x20;

- [Send device-to-cloud and cloud-to-device messages with IoT Hub](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messaging?WT.mc_id=Portal-Microsoft_Azure_IotHub#message-format)
- [Using the MQTT protocol directly (as a module)](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support#using-the-mqtt-protocol-directly-as-a-module)
- [Receiving cloud-to-device messages](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support#receiving-cloud-to-device-messages)

:::hint{type="info"}
**Note**: Integration does not support wildcard characters for inbound messages.
:::

# Before You Begin

You must first [Set up an Azure IoT Hub](docId\:HJbKLRQ2HUmK_Ah21aex3). When you add the IoT device to the hub, select **X.509 Self-Signed** as the **Authentication type&#xA0;**&#x77;hen you add the IoT device in Azure.&#x20;

# Step 1: Retrieve Connector Parameters

You will need to log in to Azure to retrieve the parameters for configuring the connector in Litmus Edge.&#x20;

::::hint{type="info"}
**Tip**: Use the following command to generate a public/private key pair:

:::BlockQuote
openssl req -newkey rsa:2048 -nodes -keyout myprivatekey.pem -x509 -days 365 -out mydevicekeycer.pem
:::
::::

**To retrieve the connector parameters:**

1. From the Microsoft Azure home page, click your IoT Hub.
2. From the Navigation panel under *Explorers*, click **IoT devices**.
3. From the *Azure IoT devices&#x20;*&#x70;ane, copy the device name from the **Device ID&#xA0;**&#x63;olumn.
4. Click the **Device ID&#xA0;**&#x66;or the device you want to connect.
5. Copy the **key ID&#xA0;**&#x61;nd paste it to the **Primary Thumbprint&#xA0;**&#x66;ield, and then copy the **certificate ID&#xA0;**&#x61;nd paste it to the **Secondary Thumbprint&#xA0;**&#x66;ield.

# Step 2: Add the Azure IoT Hub using Device Certificates Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **MQTT - Azure IoT Hub using Device Certificates** provider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name the connector.&#x20;
- **Hostname**: IP Address or Server FQDN of MQTT broker. 
- **Port**: Verify the default value of 8883 is entered.&#x20;
- **Device ID**: Copy the **Device ID** retrieved in Step 1.
- **Certificate**: Paste the certificate from the **mydevicekeycer.pem** file generated in Step 1.&#x20;
- **Private key**: Paste the key certificate from the **myprivatekey.pem&#xA0;**&#x66;ile generated in Step 1.&#x20;
- **Parallel Publish Count**: The maximum number of concurrently published messages. The default value is 16.&#x20;
- **Integration Topic**: The default topic to publish or subscribe to.&#x20;
- **Token TTL**: The token expiry time in minutes. The default value is 1440.&#x20;
- **LWT Topic**: The topic for MQTT's Last Will and Testament feature.&#x20;
- **LWT payload**: The payload for MQTT's Last Will and Testament feature.&#x20;
- **LWT payload type**: The payload type for MQTT's Last Will and Testament feature. The options are *string&#x20;*&#x61;nd *base64*.&#x20;
- **LWT QoS**: The Quality of Service value for MQTT's Last Will and Testament feature.&#x20;
- **LWT retained**: Select this check box to retain the value for MQTT's Last Will and Testament feature.&#x20;
- **Throttling Limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online.  
- **Queue Mode**: Select the queue mode as lifo (last in first out) or fifo (first in first out). Selecting lifo means that the last data entry is processed first, and selecting fifo means the first data entry is processed first.&#x20;

# Step 3: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mCTxa7bfolpQ05zQnEJS8_azureiotdevice.png" size="60" width="369" height="345" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 4: Create Inbound Topics for Connector

You will now need to create inbound topics to receive data from Azure IoT Hub.&#x20;

**To create topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Add topics to the connector with the details below. See the *Add a Topic to a Connector* section in [Manage Connectors](docId:5hctoRLhgaX3Ikh_lvi0A) for more information.&#x20;
   - **Data Direction**: Select **Remote to Local - Inbound**.&#x20;
   - **Local Data Topic**: Enter **integration.raw\.inboundtest**.&#x20;
   - **Remote Data Topic**: Replace **devices/\[Device ID]/messages/events/** with **devices/\[Device ID]/messages/devicebound/%24.to=%2Fdevices%2Fmessages%2Fdevicebound**. Replace \[Device ID] with the Device ID value configured for the connector.&#x20;
   - **Enable**: Click the toggle to enable the topic.&#x20;
4. Click **Yes&#x20;**&#x74;o add the topic.&#x20;
5. After adding all required topics, navigate to the *Integration&#x20;*&#x70;ane.
6. From the connector tile, ensure the connector is not disabled and still shows a CONNECTED status.

# Step 5: Initiate and View Inbound Messages

You will need to create a flow to view the inbound messages from the connector.&#x20;

**To initiate and view inbound messages:**

1. Follow the steps to [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) and add the following nodes.
   - **DataHub Subscribe**:&#x20;
   - **Debug**
2. Double-click the **DataHub Subscribe&#xA0;**&#x6E;ode.
   The *Edit DataHub Subscribe node* dialog box appears.
3. Enter **Azure inbound&#xA0;**&#x69;n the **Name&#xA0;**&#x66;ield.
4. Paste the Topic you created in Step 4 in the **Topic&#xA0;**&#x66;ield.&#x20;
5. If needed, configure the *Datahub Subscribe* connection. See the "Step 3: Configure Connector Nodes" section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
6. Click **Done**, and then click **Deploy**.
7. Click the **debug&#xA0;**&#x74;ab.
8. Log in to Azure.&#x20;
9. Open the device pane and click **Message to Device**.
   The *Message to device* pane appears.&#x20;
10. Enter **Test Message&#xA0;**&#x69;n the **Message Body&#xA0;**&#x66;ield and click **Send Message**.
11. Open the flow you created in Litmus Edge and check the *Debug messages* tab. See the *Additional Options* section in [Manage the Flow Canvas](docId\:qQnwjDagEcrDG0JtIVulu) for more details.&#x20;
12. Verify that *Test Message* appears in the debug results.&#x20;


[title] Save Multiple Register Values to a CSV File
[path] How-To-Guides/Flows Guides/

You can use Flows to save multiple register values to a CSV file on your Edge device.&#x20;

# **User Scenario**

In an industrial environment, engineers must keep a close eye on the performance of different machines in a factory. To achieve this, they collect raw data at regular intervals from various Programmable Logic Controller (PLC) registers. This data can be aggregated, saved in a file, and used by other applications using Flows. Even if the collection intervals differ, the data can be conveniently accessed using global variables. By analyzing this data, engineers can make informed decisions to improve the productivity of the factory.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device]() and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Each tag will collect data from different types of inputs.

## **Tag 1: input1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **int64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **input1**

## **Tag 2: input2**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **input2**

Click the copy icon to copy the raw topic of both tags you created. Store them securely as you will refer to them later when configuring the flows.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/s2U_uVQqCsLJqffJwPZW3_image.png "DeviceHub Tags page")

# Step 3: Create Analytics Flows

You can use multiple input nodes in a flow to save values in a database or save values to a CSV file.&#x20;

**To save values from multiple registers to a CSV file:**

:::hint{type="info"}
**Note:** A similar method could be used to save values in a MySQL database.
:::

1. In Litmus Edge, navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow.&#x20;
   See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
2. Drag two **Function&#x20;**&#x6E;odes and two **Datahub Subscribe** nodes to the canvas and wire them together.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/p1CsQmPmR35yxPKdna5rC_image.png" size="60" width="293" height="138" position="center" caption="Flows canvas with nodes" showCaption="true"}
3. Double-click one of the **Function&#x20;**&#x6E;odes.
   The *Edit function node&#x20;*&#x64;ialog box appears.&#x20;
   - **On Message:** Add the following lines to save the value to a Global Variable (`output1`), which can be accessed by other flows, nodes, and functions:
     `var temp = (JSON.parse(msg.payload)).value;     `
     `global.set("output1",temp);     `
     `return msg;`
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/m0dlWb7NMBcdfTXrj1GCx_image.png" size="70" width="480" height="272" position="center" caption="Edit function node dialog box" showCaption="true"}
4. Double-click the other **Function** node.
   The *Edit function node&#x20;*&#x64;ialog box appears.&#x20;
   - **On Message:** Enter the following lines of code.
     `var temp = (JSON.parse(msg.payload)).value;     `
     `global.set("output2",temp);     `
     `return msg;`
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8OHFTVaK8NvSEhm-jINwy_image.png" size="70" width="480" height="258" position="center" caption="Edit function node dialog box" showCaption="true"}
5. Double-click one of the **DataHub Subscribe&#x20;**&#x6E;odes.
   The *Edit Datahub Subscribe node&#x20;*&#x64;ialog box appears.
   - **Datahub:&#x20;**&#x43;onfigure the Datahub connection if needed. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
   - **Topic:** Paste the topic for *input1* tag.
   - **Name:** Enter **Input1**.
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HKueza9tx2Wr7Jl0AWXL5_image.png" size="72" width="376" height="243" position="center" caption="Edit Datahub Subscribe node dialog box" showCaption="true"}
6. Repeat the last step for the other **DataHub Subscribe** node and paste the topic for *input2&#x20;*&#x74;ag.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/X267EyM_xhNjK7qqxFLQW_image.png" size="72" width="397" height="157" position="center" caption="Flows canvas with nodes" showCaption="true"}
7. On the same canvas, drag an **inject&#x20;**&#x6E;ode, a **Function&#x20;**&#x6E;ode, and a **Write file&#x20;**&#x6E;ode and wire them together as shown.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BWk9uCIdnR9IpGthQqvAS_image.png "Flows canvas with nodes")
8. Double-click the **inject** node.
   The *Edit inject node* dialog box appears.
   - **Repeat:** Select an **interval&#x20;**&#x66;or every **10 seconds** to read the global variable values.
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ngyXIFkF-YVABklGKCvnQ_image.png" size="60" width="567" height="940" position="center" caption="Edit inject node dialog box" showCaption="true"}
9. Double-click the **Function&#x20;**&#x6E;ode.
   The *Edit function node&#x20;*&#x64;ialog box appears.
   - **On Message:** Enter the following lines of code to set up the output for the CSV file.
     `//create CSV     `
     `var temp = global.get("output1") + "," + global.get("output2");     `
     `msg.payload = temp;     `
     `return msg;`
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WgmISwJ5_ABw2eeq5vgcr_image.png" size="70" width="635" height="335" position="center" caption="Edit function node dialog box" showCaption="true"}
10. Double-click the **Write file** node.
    The *Edit write file node* dialog box appears.
    - **Filename:** Enter a **filename&#x20;**&#x70;refaced with a forward slash ( `/` ).&#x20;
      - The forward slash is required in the filename.
        Example: `/ftp-data/sample.csv`
      - The file is created on the Litmus Edge device.
      - If a subdirectory already exists, you can supply the full path to the file.
        Example: `/ftp-data/sample`or `/logfiles/sample`.
    - **Action:&#x20;**&#x53;elect **append to file** from the drop-down menu and click **Done**.
      ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JG8yMZHw5P57mXC8FUrK2_image.png" size="70" width="456" height="446" position="center" caption="Edit write file node dialog box" showCaption="true"}
11. Click **Deploy** to save the flow.
12. Drag the **Sidebar&#x20;**&#x75;p from the bottom of the canvas and select the **Debug** icon.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0G13ZxTOTWJCeZb19m58b_image.png "Completed flows canvas with debug message icon")
13. Click the button on the left side of the **inject&#x20;**(timestamp) node to inject the current timestamp into the **write file** node, which creates the CSV file locally if it does not already exist.&#x20;
    In this example, the `/ftp-data/sample.csv` file is saved.

# Step 4: Read Contents of CSV File

To read the output of the CSV file, refer to [Create, Write to, and Read from a Log File](docId\:sCUUvQUAXNWBAH1BjB4Ar).&#x20;

:::hint{type="info"}
**Note:** Change the name of the file with the CSV file you created to save multiple register values.
:::

The CSV file holds the current register values from the two inputs and updates them in real-time.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UvFbYz1_NgCWM4WlKLkms_image.png "Output of flows canvas")


[title] Use the Maintenance and Failure KPI
[path] How-To-Guides/Analytics Guides/

The **Maintenance and Failure** KPI mainly deals with the maintenance event and a fault/failure event in a production cycle.

For this KPI, two input definitions are required: `maintenance` and `failure`.

These are event triggers, indicating the event of the maintenance cycle and the discovery of a failure event, respectively.

# User Scenario

Review the following scenario for the maintenance and failure KPI processor. Then, using an input processor, you will simulate PLC data and calculate:

1. Total maintenance events per cycle
2. Total failure events per cycle
3. Time since last maintenance
4. Time since last failure
5. Timestamp of last maintenance
6. Timestamp of last failure

In a manufacturing setting, the maintenance and failure KPI can be used to monitor the performance of production machinery. For example, in a bottling plant, this KPI can track the number of maintenance events and machine failures during the production cycle. By analyzing this data, the plant can determine the average frequency of maintenance, identify any trends in machine failures, and schedule preventive maintenance to reduce downtime. This helps in optimizing production efficiency and minimizing disruptions.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: maintenance**

- **Name**: Select **S - Random value generator.**
- **Value Type:** Select **float64.**
- **Polling Interval**: Enter **1.**
- **Tag Name**: Enter **maintenance.**

## **Tag 2: failure**

- **Name**: Select **S - Random value generator.**
- **Value Type:** Select **float64.**
- **Polling Interval**: Enter **1.**
- **Tag Name**: Enter **failure.**

# Step 3: Create Analytics Flow

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Maintenance and Failure Processor function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the *Topic* field, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for tag1: **maintenance**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png" size="80" width="1142" height="604" position="center" caption="Create a Processor dialog box" showCaption="true"}
5. Click **Save**.
6. Repeat steps 2-5 to add another *DataHub Subscribe&#x20;*&#x70;rocessor for the **failure&#x20;**&#x74;ag.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vtd4d2t5EqUhpFen6vYaU_image.png" size="50" width="302" height="298" position="center" caption="Canvas flow with two DataHub Subscribe processor" showCaption="true"}
7. Click **Add processor** again and select the **Maintenance and Failure** processor.
   The following information defines this function:
   - **Maintenance From & Maintenance To:** If your input changes *Maintenance From* value to *Maintenance To* value, it will trigger a maintenance cycle.
   - **Failure From & Failure To:** If your input changes *Failure From* value to *Failure To* value, it will trigger a failed cycle.
   - **Unit:&#x20;**&#x45;nter the time unit to display time since last maintenance or failure event.
   - **TimeInterval:** If the tag publishes at the expected interval, it is better to disable this timer by entering **0** in the field.
   - Click **Save**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZHcPrMm-86uZ1Wax6QKuH_image.png" size="80" width="585" height="747" position="center" caption="Edit a Processor dialog box" showCaption="true"}
8. Connect the *DataHub Subscribe* processor (tag: *maintenance*) to the *Maintenance and Failure* processor with a wire. Use the **Events** connection and enter a definition of **maintenance&#x20;**&#x66;or the connection.
9. Repeat step 8 for tag: *failure&#x20;*&#x61;nd enter a definition of **failure&#x20;**&#x66;or the connection.
10. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/64Gfc5HZML6NrfSLMwGZs_image.png" size="70" width="637" height="337" position="center" caption="Completed flows canvas" showCaption="true"}

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Maintenance and Failure* processor to view the output values.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vWuxf7n13nlrZCbkN9sAC_image.png "Output of Maintenance and Failure processor")


[title] Use the Online and Offline Percentage KPI
[path] How-To-Guides/Analytics Guides/

The **Online and Offline Percentage** KPI is a raw number indicating how long a sensor was functional and how long it was offline.

# User Scenario

Review the following scenario for the online and offline KPI processor. Then, using an input processor, you will simulate PLC data and use this KPI to have more detailed knowledge of the time.

At a busy automotive manufacturing plant, the production line relies on a critical sensor to monitor engine performance. The maintenance team uses the online and offline percentage KPI to track the sensor's functionality. For instance, if the sensor was operational for 550 minutes but offline for 25 minutes during a specific shift, the team analyzes this data to optimize maintenance schedules and ensure continuous production efficiency.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: tag1**

- **Name**: Select **S - Random value generator.**
- **Value Type:** Select **float64.**
- **Polling Interval**: Enter **1.**
- **Tag Name**: Enter **tag1.**

# Step 3: Create Analytics Flow

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Online and Offline Processor functions:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the *Topic* field, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for **tag1**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select the **Online and Offline Percentage&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Unit:** Time units for displaying online/offline status.
   - **resetOnStatus:&#x20;**&#x49;f you enable this parameter, the KPI will reset every time the status changes from **ON&#x20;**&#x6F;r **OFF**.
   - **Device Reset:&#x20;**&#x45;nable this parameter to reset everything when the device changes.
   - **Time Interval:** If the tag publishes at the expected interval, it is better to disable this timer by entering **0** in the field.
   - Click **Save**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UMDHYVOJN4oopLwXsqlrL_image.png" size="80" width="755" height="507" position="center" caption="Edit a Processor dialog box" showCaption="true"}
7. Connect the *DataHub Subscribe* processor (tag: *tag1*) to the *Online and Offline Percentage&#x20;*&#x70;rocessor with a wire and use the **events&#x20;**&#x63;onnection.
8. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JHOn9FudnFH24BpO9OSKD_image.png" size="80" width="702" height="187" position="center" caption="Completed Flows Canvas" showCaption="true"}

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Online and Offline Percentage* processor to view the output values.

The output shows the offline and online durations along with the timestamp indicating when the device was last offline. It also provides the total time elapsed since the KPI was initiated.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qcZbAXu5ys03jYqUynquI_image.png "Output of Online and Offline Percentage processor")


[title] Use Digital Twins to Contextualize Data
[path] How-To-Guides/

Refer to the following how-to guide for leveraging Digital Twins for energy monitoring.&#x20;

# User Scenario

In this user scenario, the devicehub device will simulate the energy monitoring process across different plant sites. The data generated by the tags reflects real-time energy production, which allows for active analysis of energy efficiency, cost, and consumption patterns.

Digital Twins will model the asset as an energy-monitoring machine located at several plant sites. The instances for the model will be the specific energy-monitoring machines at each site.&#x20;

The power generated in the last hour will be used to calculate values for cost, energy used, and energy rate. The timestamp value will be used to generate values for the attributes of season, start hour, and energy-rate description.&#x20;

We need to add two tags for this. Tag 1, named "L3\_Machine2", will generate random values simulating the variable power of an energy-monitoring machine. Tag 2 in Devicehub collects and stores data from energy monitoring devices. It helps in analyzing energy rates and seasons by simulating timestamp values.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: L3\_Machine2**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **1**
- **Tag Name**: Enter **L3\_Machine2**
- **Min\_value**: Enter **1**
- **Max\_value**: Enter **25**

Values for power generated will be sent through the topic **devicehub.alias.P2\_Electrical\_Panel.L3\_Machine2**.&#x20;

## Tag 2

The data collected from Energy Monitoring devices is stored in Devicehub by enabling the [Enable Data Store ](docId:3eyAfPpweuVmBLCEy17sq)option on the simulator devices. The simulator device will act as a device measuring power values. The tag will simulate these timestamp values from one of the energy monitoring machines, and then the output will be written to the topic **flowToDT.EMD\_L3\_Machine2**.

To process this data, you will need to connect to a third-party database and create a Flow using Flows Manager. This flow will collect the values and determine the season and energy rate based on the date and timestamp.

```javascript
// Determine season and energy rate based on date and timestamp

var arr = msg.payload;
var arrOut = [];

var time = flow.get("tStart");
var tStart = new Date(flow.get("tStart"));
var month = tStart.getMonth();
var hour = tStart.getHours();
flow.set("month", month);
flow.set("hour", hour)

// Determine season
if (month > 5 && 10 > month){
    var season = 'Summer';
} else {
    var season = 'Winter';
}

// Determine energy rate
if (season == 'Summer'){
    if (hour >= 7 && 11 > hour || hour >= 17 && 19 > hour){
        var energyRate = 10.2;
        var energyRateDescription = "Mid-Peak";
    }
    else if (hour >= 11 && 17 > hour){
        var energyRate = 15.1;
        var energyRateDescription = "Off-Peak";
    }
    else {
        var energyRate = 7.4;
        var energyRateDescription = "On-Peak";
    }
}

else {
    if (hour >= 7 && 11 > hour || hour >= 17 && 19 > hour){
        var energyRate = 15.1;
        var energyRateDescription = "On-Peak";
    }
    else if (hour >= 11 && 17 > hour){
        var energyRate = 10.2;
        var energyRateDescription = "Mid-Peak";
    }
    else {
        var energyRate = 7.4;
        var energyRateDescription = "Off-Peak";
    }
}

for (let device = 0; device < arr.length; device++){
    
    obj = {}
    
    // Fields for SQL insert
    obj.time = time;
    obj.plant = arr[device].plant;
    obj.line = arr[device].line_tag;
    obj.asset = arr[device].name_tag;
    obj.shift = global.get("shift");
    obj.energyUsed = parseFloat((arr[device].integral).toFixed(2));
    obj.energyRate = energyRate;
    obj.energyRateDescription = energyRateDescription;
    obj.season = season;
    obj.cost = parseFloat((obj.energyUsed * energyRate).toFixed(2));

    arrOut.push(obj)
}

msg.payload = arrOut;

return msg;
```

# Sample Output Payload from Instance

This user scenario will be based on the following sample output payload from one instance.&#x20;

```json
{
  "time": "2023-04-13T17:00:00.000Z",
  "plant": "Toronto",
  "line": "Line 1",
  "asset": "Machine 2",
  "shift": 2,
  "energyUsed": 2.51,
  "energyRate": 15.1,
  "energyRateDescription": "On-Peak",
  "season": "Winter",
  "cost": 37.9,
  "timestamp": 1681408544466,
  "startHour": "2023-04-13T17:00:00.000Z"
}
```

# Step 3: Create Digital Twins Model

You will first need to create the model that will store the instances of energy monitoring machines.&#x20;

**To create the model:**

1. Navigate to **Digital Twins**.&#x20;
   The *Models&#x20;*&#x70;ane appears.&#x20;
2. From the *Models&#x20;*&#x70;ane, click the **Create a model&#x20;**&#x74;ile.&#x20;
   The *Create a Model* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RgVgMbkVf98fnibVlKx5M_createmodel.png" size="80" width="1266" height="482" caption="The Create a Model tile" position="center" showCaption="true"}
3. Click the **Type** drop-down list and select **ASSET**.
4. Enter the name of the model in the **Name** field (for example, **Energy\_Monitoring\_Model**).
5. (Optional) Enter a short description of the model in the **Description** field.
6. Click **Add**.****
   The new model appears in the *Models&#x20;*&#x70;ane.

After creating the model, you can [configure it](docId:7bHtECK6btdKqfFmA1TqA) with the following parameters.&#x20;

## Model Static Attributes

The static attributes will need to be customized for each instance.&#x20;

- Asset
- Line
- Model
- Manufacturer
- Location
- Plant

## Transformations

The transformations are based on the sample payload above. &#x20;

### energyRateDescription

```json
{
  "value": "$energyRateDescription",
  "timestamp": "$timestamp"
}
```

### energyRate

```json
{
  "value": "$energyRate",
  "timestamp": "$timestamp"
}
```

### energyUsed

```json
{
  "value": "$energyUsed",
  "timestamp": "$timestamp"
}
```

### shift

```json
{
  "value": "$shift",
  "timestamp": "$timestamp"
}
```

### startHour

```json
{
  "value": "$startHour",
  "timestamp": "$timestamp"
}
```

### season

```json
{
  "value": "$season",
  "timestamp": "$timestamp"
}
```

### cost

```json
{
  "value": "$cost",
  "timestamp": "$timestamp"
}
```

The list of transformations would display as the following.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-Hb6EBaBm91j0EM2rKQ-r_image.png "List of transformations")

## Model Dynamic Attributes

The dynamic attributes will use the appropriate schemaID (transformation) to generate values.&#x20;

| **Name**              | **Unit (optional)** | **DataType (optional)** | **SchemaID (optional)** |
| --------------------- | ------------------- | ----------------------- | ----------------------- |
| cost                  | USD                 |                         | cost                    |
| energyRateDescription |                     |                         | energyRateDescription   |
| energyRate            | USD/kWh             |                         | energyRate              |
| energyUsed            |                     |                         | energyUsed              |
| shift                 |                     |                         | shift                   |
| startHour             |                     |                         | startHour               |
| season                |                     |                         | season                  |
| power                 | kW                  |                         |                         |

## Hierarchy

The output for the model will be based on the hierarchy, which would categorize the dynamic and static attributes into **telemetry&#x20;**&#x6F;r **properties**. It would look like the following.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MlNIsMtER3wa6O54LfDTK_image.png)

# Step 4: Create Instances

Once the model is configured, you will need to [Add an Instance](docId\:heaqsUA7YTEWvF_6dE-Ks) for each energy monitoring device at each site.&#x20;

One of the instances is described below based on the topics for the data in the user scenario description.&#x20;

## Instance Static Attributes

You will customize the model static attributes to the specific instance.&#x20;

| **Attribute Name** | **Attribute Value** |
| ------------------ | ------------------- |
| Asset              | Machine 2           |
| Line               | Line 1              |
| Model              | model\_112233       |
| Manufacturer       | Siemens             |
| Location           | Canada              |
| Plant              | Toronto             |

## Instance Dynamic Attributes

You will configure the appropriate topics in the user scenario description to the dynamic attributes configured in the model.&#x20;

| **Name**              | **Unit** | **DataType** | **Topic**                                          | **SchemaID (optional)** |
| --------------------- | -------- | ------------ | -------------------------------------------------- | ----------------------- |
| power                 | kW       |              | devicehub.alias.P2\_Electrical\_Panel.L3\_Machine2 |                         |
| cost                  | USD      |              | flowToDT.EMD\_L3\_Machine2                         | cost                    |
| energyRateDescription |          |              | flowToDT.EMD\_L3\_Machine2                         | energyRateDescription   |
| energyRate            | USD/kWh  |              | flowToDT.EMD\_L3\_Machine2                         | energyRate              |
| energyUsed            |          |              | flowToDT.EMD\_L3\_Machine2                         | energyUsed              |
| shift                 |          |              | flowToDT.EMD\_L3\_Machine2                         | shift                   |
| startHour             |          |              | flowToDT.EMD\_L3\_Machine2                         | startHour               |
| season                |          |              | flowToDT.EMD\_L3\_Machine2                         | season                  |


[title] Use the Gaussian Filter Function
[path] How-To-Guides/Analytics Guides/

You can use the Gaussian Filter function to calculate a smoothed value for each point by considering its adjacent data points.&#x20;

It is factored by a simple Gaussian digital filter, which depends on the distance from the mean, ensuring a natural weighting of surrounding values.

# **Understanding Gaussian Function&#x20;**

The following information describes this function:

- Calculates the mean, standard deviation, and variance of a set of values within a specific window.
- Determines a coefficient using the formula `1 / (sqrt(2 * PI) * deviation)`
- Computes the exponential part with `exp(-1/2 * ((current - mean) / deviation)^2)`
- The Gaussian Function is derived by multiplying the coefficient with the exponential part.
- The process results in a filtered value that smooths or blurs the original data, applying a natural weight based on proximity to the mean.

# **User Scenario**

Review the following scenario for the Gaussian Filter function. Then, you will simulate PLC data and calculate the filtered values.

In a precision manufacturing facility specializing in aerospace components, high-resolution cameras are employed to inspect the surface of parts for microscopic flaws. These inspections generate vast amounts of image data, where even the smallest imperfection can signal a potential failure in critical aerospace systems.&#x20;

We apply the Gaussian Filter function to images to reduce noise and lighting changes that can hide defects. This helps the inspection algorithms to find any problems with a component.

# &#x20;**Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: input1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **1**
- **Tag Name**: Enter **input1**
- **Min\_value**: Enter **101**
- **Max\_value**: Enter **199**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Gaussian Filter Processor function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **input1&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select the **Gaussian Filter&#x20;**&#x70;rocessor.
   The *Edit a Processor* dialog box appears.
   - **Window Size:** Enter a value that represents the range to apply the gaussian digital function. For this example, we input a value of **30**.
   - **Number of Deviations:&#x20;**&#x4E;umber of deviations to use for the calculations. For this example, we input a value of **1**.
   - **TimeInterval:&#x20;**&#x49;f you know your input is going to publish at the expected interval, it is better to disable this timer by entering **0** in the field.
   - Click **Save**.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/b8UQ_jUu5sus9-FZMkQJK_image.png "Edit a Processor dialog box")
7. Connect the *DataHub Subscribe* processor (tag: *input1*) to the *Gaussian Filter&#x20;*&#x70;rocessor with a wire and use the **events&#x20;**&#x63;onnection.
8. On the analytics canvas, click **Save**.
   The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ix7efScZDSQNWV30jVS4k_image.png "Completed Flows Canvas")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Gaussian Filter&#x20;*&#x70;rocessor to view the output values.

The Gaussian Filter output yielded a filtered value of **1.16882172100685** with a coefficient of **0.013888633443174866 &#x20;**&#x61;nd exponential of **0.6947003584251287**.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Gg0G144LZoH6JZeSXH3w-_image.png "Output of Gaussian Filter")


[title] Use the Tengo Script Function
[path] How-To-Guides/Analytics Guides/

You can use Tengo Script to manipulate data. The processor uses Tengo scripting rules similar to the Go programming language.

:::hint{type="info"}
**Note:&#x20;**&#x49;f you need further information on Tengo scripting, please refer to the following:

- [Available Standard Library](https://github.com/d5/tengo/blob/master/docs/stdlib.md)
- [Syntax details Github](https://github.com/d5/tengo)
:::

# Understanding the Tengo Script Processor

This function allows adding, removing, or modifying fields from a single input or multiple inputs.

## **Single In**p**ut&#x20;**

Each message from the input is stored in an array called values. It is important to note:

- Using the `for _, message in values{}` statement allows you to access this input and manipulate it.
- The definition in the connection wire is optional for single input but helpful for multi-inputs to differentiate between them.
- The `message` parameter contains the entire input message, and you can manipulate it as needed.&#x20;

:::hint{type="info"}
**Note:** `_` and `message` can be any custom variable name.
:::

## **Multiple Inputs**

Suppose you have three different inputs attached to this scripting processor, with the connecting wires named A, B, and C:

- `for i, message in values{}` will now have three inputs.
- `i` represents the connection wire from which the input is coming.
- With `if-else` statements, each input can be either individually manipulated or receive a common manipulation.
- You have the option to output the result for one or all inputs.

# User Scenario

Review the following scenario for the Tengo Script processor function. Then, you will simulate PLC data and manipulate outputs using a single input and multiple inputs processor.

## **Single Input User Scenario: Environmental Monitoring in a Factory**

In a factory setting, many sensors constantly monitor air quality by measuring parameters such as CO2 levels, humidity, and temperature. Using the Tengo Script and inputting a single value, such as a CO2 emission reading, it is possible to manipulate this data stream to create a comprehensive air quality index. This can be achieved by dividing the data reading by the standard average of the factory and then multiplying it by 100.

:::CodeblockTabs
Tengo Script

```go
// Single input example

result := 0

for _, message in values{
  
  // 'value' is the CO2 emission reading.
  // Normalize this reading by dividing by a standard average and multiplying by 100
  standardAverage := 400 // Example value for standard CO2 level in parts per million
  normalizedCO2Index := (float(message["value"]) / standardAverage) * 100
  
  result = {
    "timestamp": message["timestamp"],
    "normalizedCO2": normalizedCO2Index,
    "success": message["success"],
    "actual value": message["value"]
  }
}

```
:::

## **Multiple Inputs User Scenario: Manufacturing Plant Management**

In a manufacturing plant, three key sensors track the production line's efficiency: one measures the speed of the conveyor belt, another monitors the temperature of machinery, and the third tracks the number of units produced for adjusting the output rate of finished products. Using the Tengo Script with these three inputs, you can optimize production efficiency. It adjusts production speed based on output rate data, converts temperature to a normalized scale for monitoring, and adjusts production rate for the number of units produced.

:::CodeblockTabs
Tengo Script

```go
// Multiple inputs example

result := 0

for i, message in values{
  
  // Adjusting conveyor speed based on output rate
  if i == "A"{
    // 'value' is the conveyor speed, adjust it based on output rate (C)
    speedAdjustmentFactor := 1 + (float(values["C"]["value"]) * 0.01)
    message["adjustedSpeed"] = float(message["value"]) * speedAdjustmentFactor
  }

  // Machinery temperature monitoring
  if i == "B"{
    // Convert temperature to a normalized scale for monitoring
    message["normalizedTemperature"] = float(message["value"]) / 100
  }

  // Monitoring and adjusting production based on output rate
  if i == "C"{
    // Adjusting production rate, 'value' is the number of units produced
    productionAdjustmentFactor := 1 + (float(message["value"]) * 0.005)
    message["adjustedProduction"] = float(message["value"]) * productionAdjustmentFactor
  }
  
  result = {
    "timestamp": values[i]["timestamp"],
    "original_value": values[i]["value"],
    "customized_value": message["adjustedSpeed"] || message["normalizedTemperature"] || message["adjustedProduction"], 
    "input_source": i,
    "success": message["success"]
  }
}

```
:::

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tags. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more. Each tag will be used for simulating the different user scenarios mentioned above.

## **Tag 1: co2emission**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **int64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **co2emission**
- **Min\_value**: Enter **50**
- **Max\_value**: Enter **800**

## **Tag 2: speed**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **speed**
- **Min\_value**: Enter **0**
- **Max\_value**: Enter **250**

## **Tag 3: temperature**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **temperature**
- **Min\_value**: Enter **10**
- **Max\_value**: Enter **150**

## **Tag 4: units**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **int64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **units**
- **Min\_value**: Enter **1**
- **Max\_value**: Enter **1000**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tag you previously created. Follow the appropriate step (3a or 3b) based on the two user scenarios for the Tengo Script function you want to use.

## Step 3a: Configure **Single Input User Scenario**

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **co2emission&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select **Tengo script&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Timeout**: Enter **waiting period** in ms in the system before a specific event occurs.
   - **Code Block**: Copy and paste the Single Input User Scenario **code&#x20;**&#x65;xample.
     `// Single input example`
     `result := 0`
     `for _, message in values{`
     `  `
     `  // 'value' is the CO2 emission reading.`
     `  // Normalize this reading by dividing by a standard average and multiplying by 100`
     `  standardAverage := 400 // Example value for standard CO2 level in parts per million`
     `  normalizedCO2Index := (float(message["value"]) / standardAverage) * 100`
     `  `
     `  result = {`
     `    "timestamp": message["timestamp"],`
     `    "normalizedCO2": normalizedCO2Index,`
     `    "success": message["success"],`
     `    "actual value": message["value"]`
     `  }`
     `}`
7. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/oYjmtoKt25hIwEkwf4U1L_image.png "Tengo script processor dialog box")
8. Connect the DataHub Subscribe processor (tag: *co2emission*) to the Tengo script processor with a wire and enter the definition of **co2emission&#x20;**&#x66;or the **value-type** connection.
9. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VeR_0EzlSYGUGzBfbJznm_image.png "Completed analytics canvas with one input")

## Step 3b: Configure **Multiple Inputs User Scenario**

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **speed&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Repeat steps 2-5 to add another *DataHub Subscribe* node. Select the alias topic for the **temperature&#x20;**&#x61;nd **units&#x20;**&#x72;espectively.&#x20;
7. Click **Add processor** again and select **Tengo script&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Timeout**: Enter **waiting period** in ms in the system before a specific event occurs.
   - **Code Block**: Copy and paste the Multiple Inputs User Scenario **code&#x20;**&#x65;xample.
     `// Multiple inputs example`
     `result := 0`
     `for i, message in values{`
     `  `
     `  // Adjusting conveyor speed based on output rate`
     `  if i == "A"{`
     `    // 'value' is the conveyor speed, adjust it based on output rate (C)`
     `    speedAdjustmentFactor := 1 + (float(values["C"]["value"]) * 0.01)`
     `    message["adjustedSpeed"] = float(message["value"]) * speedAdjustmentFactor`
     `  }`
     `  // Machinery temperature monitoring`
     `  if i == "B"{`
     `    // Convert temperature to a normalized scale for monitoring`
     `    message["normalizedTemperature"] = float(message["value"]) / 100`
     `  }`
     `  // Monitoring and adjusting production based on output rate`
     `  if i == "C"{`
     `    // Adjusting production rate, 'value' is the number of units produced`
     `    productionAdjustmentFactor := 1 + (float(message["value"]) * 0.005)`
     `    message["adjustedProduction"] = float(message["value"]) * productionAdjustmentFactor`
     `  }`
     `  `
     `  result = {`
     `    "timestamp": values[i]["timestamp"],`
     `    "original_value": values[i]["value"],`
     `     "customized_value": message["adjustedSpeed"] || message["normalizedTemperature"] || message["adjustedProduction"],  `
     `    "input_source": i,`
     `    "success": message["success"]`
     `  }`
     `}`
8. Click **Save.**
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Gzd4lUMVexpi9P9fusTHv_image.png "Tengo script processor dialog box")
9. Connect the DataHub Subscribe processor (tag: *speed*) to the Tengo script processor with a wire and enter the definition of **A&#x20;**&#x66;or the **value-type&#x20;**&#x63;onnection.
10. Connect the DataHub Subscribe processor (tag: *temperature*) to the Tengo script processor with a wire and enter the definition of **B** for the **value-type** connection.
11. Connect the DataHub Subscribe processor (tag: *units*) to the Tengo script processor with a wire and enter the definition of **C** for the **value-type** connection.
12. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/u5W-7VUO6ymzRc-JA2z8u_image.png "Completed analytics canvas with multiple inputs")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Tengo Script&#x20;*&#x70;rocessor to view the output values.

## View Output for **Single Input User Scenario**

The Tengo Script function calculates the air quality index from the defined tag values and gives the output.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aYlqsd-zYvQHe1zH2Yol6_image.png "Output for Tengo script function with one input")

## View Output for **Multiple Inputs User Scenario**

The Tengo Script function manipulates the data from the defined tag values and gives the output.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mw92h07UhSd2EcQel5Bgj_image.png "Output for Tengo script function with multiple inputs")


[title] Generic MQTT Over SSL Integration Guide (Mosquitto)
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and an MQTT broker using Mosquitto and SSL authentication.&#x20;

Mosquitto is a lightweight open source message broker that Implements MQTT versions 3.1.0, 3.1.1 and version 5.0.&#x20;

# Before You Begin

Make sure you [Install the Mosquitto MQTT Broker on Ubuntu](docId\:xpttINDvIxJGReAlsABgI).&#x20;

# Step 1: Retrieve Contents of ca.crt File

You will need to retrieve the contents of the ca.crt file, so that you can add it to the CA Certificate parameter value in the connector you'll configure in Step 2. &#x20;

**To retrieve the contents of the ca.crt file:**

1. Go to the Ubuntu system.
2. Open your **Home&#xA0;**&#x64;irectory using the *Files&#x20;*&#x61;pp.
3. Open the **ca.crt** file.
4. If you see the message *Could Not Display "ca.crt"*, click **Cancel**.
5. Right-click the **ca.crt** file and select **Open with Other Application**.
6. Select **View All Applications**.
7. Select **Text Editor&#xA0;**&#x61;nd click **Select**.
8. Copy the entire contents of the file.

# Step 2: Add the Generic MQTT Over SSL Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **MQTT - Generic over SSL&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Since Mosquitto is running locally on your PC, enter your IP address.
- **Port**: Confirm that the default value **8883** is entered.&#x20;
- **CA Certificate**: Paste the ca.crt file you copied in Step 1. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Certificate&#x20;**(Optional): For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Private key&#x20;**(Optional)
- **Client ID**: Enter **\<username>-with-ssl**.&#x20;
- **Username&#x20;**(Optional)
- **Password&#x20;**(Optional)
- **QoS**: Confirm that the default value **0** is entered. The Quality of Service (QoS) level is an agreement between the sender of a message and the receiver of a message that defines the guarantee of delivery for a specific message.
- **Parallel Publish Count**: Confirm that the default value of **100&#x20;**&#x69;s entered. The number of messages being published simultaneously. Once the defined limit has been reached, subsequent messages are silently dropped.&#x20;
- **Integration Topic**: Enter **test**.&#x20;
- **LWT topic**: Enter **lwtTopicName**.&#x20;
- **LWT payload**: Enter **Some LWT Payload**.&#x20;
- **LWT payload type**: The payload type for MQTT's Last Will and Testament feature. The options are *string&#x20;*&#x61;nd *base64*.&#x20;
- **LWT QoS**: The Quality of Service value for MQTT's Last Will and Testament feature.
- **LWT retained**: Select this check box to retain the value for MQTT's Last Will and Testament feature.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online.  
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 3: Observe the Log File

**To observe the log file:&#x20;**

1. Return to the Ubuntu system.
2. Open a Terminal window if none is open.
3. Enter `sudo tail -f /var/log/mosquitto/mosquitto.log` and press **ENTER&#xA0;**&#x74;o open the log file.
4. View the incoming requests.

# Step 4: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2hIWlh9tiTKeU38_RGJKR_mqttgenericssl.png" size="60" width="369" height="345" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 5: View the Connection in the Log File

**To view the connection in the log file:&#x20;**

1. Return to the Ubuntu system log file.
2. Enter `sudo tail -f /var/log/mosquitto/mosquitto.log`.
   The log file shows the new connection.&#x20;

You should see something like this:

:::BlockQuote
1576338704: New connection from 192.168.1.15 on port 8883.

1576338704: New client connected from 192.168.1.15 as JohnSmith-with-SSL (p2, c1, k2, u'JohnSmith').
:::


[title] Subscribe to Topics with Flows
[path] How-To-Guides/Flows Guides/

You have the following options for subscribing to topics in Flows.&#x20;

# Subscribe to a Single Topic

The following steps describe how to subscribe to a single topic from a connected DeviceHub device. See the following to learn more:

- [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq)
- [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX)

**To subscribe to a single topic:**

1. Get the topic name to configure the *DataHub Subscribe* node in Flows.
   - Go to **DeviceHub** and select the **Tags&#xA0;**&#x70;ane from the navigation menu.
   - Click the **Copy&#xA0;**&#x69;con next to the *RAW Topic* from which you wish to receive data.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nJmhVP4Ac7_GWSdBcd0Lm_aa.png "Litmus Edge DeviceHub Page")
2. In the navigation menu, click **Flows Manager**.
3. To access an existing flow canvas, click the **Go To Flow Definition&#x20;**&#x69;con next to the flow status. For creating a new flow, refer to *Step 2: Create Individual Flow&#x20;*&#x69;n [Create a Flow](docId:7x0n7C4DxswTD61vpIBza)  to learn more.
   The *Flow* canvas opens in a new browser tab.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-Sz2k0jom4DrMqIgt_IBY_c.png "Go To Flow Definition icon")
4. Drag the **DataHub Subscribe node** and **debug node** on the canvas and connect them.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FwWYGnQPIqeg0rCCSTgFN_aaaa.png "The Debug and DataHub Subscribe nodes")
5. Double-click the **DataHub Subscribe&#x20;**&#x6E;ode to open the *Edit DataHub Subscribe* node dialog box. Configure the node by following these steps:
   - Paste the topic name previously copied into the *Topic&#xA0;*&#x66;ield. 
   - If needed, configure the Datahub Subscribe connection. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
   - Enter a name in the *Name&#xA0;*&#x66;ield and click **Done**.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CvHmyQFBjpNVpzaQmK76v_aws.png "The debug node connected to existing flow")
6. To save the flow, click **Deploy**. 
7. Expand the message window beneath the flow.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PdO3lIPUKNYpR9eiOS-2g_wda.png "The message window")
8. Click the **Debug&#xA0;**&#x69;con to view the data output.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EU6xcVQGYQIVH7p2AgVFy_wwww.png "The debug icon")
9. Review the data payload in the message window.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/L_YueXsA7xy9G7MW7WIYY_waq.png "Successful write message")

# Subscribe to Multiple Topics using Wildcards

Use **Wildcards&#x20;**&#x74;o subscribe to multiple topics at once.

## **Wildcard Usage**

`>`**&#x20;Wildcard Character**: Use the `>` wildcard character to subscribe to messages from multiple tags. Example: `devicehub.alias.>` will subscribe to every topic in the DeviceHub.

`*`**&#x20;Wildcard Character**: Use the `*` wildcard character to match a single topic between`.` characters in tags. Example: `devicehub.alias.*.*` matches topics with two-character sequences after each of the two `.` characters.

:::hint{type="info"}
**Note:&#x20;**&#x55;sing just the `>` wildcard character subscribes to all topics, which can cause slowdowns when sending data to databases or clouds. Consider using [Function Nodes](docId\:um1r2CsZniKVz39bZFtBz) to trim data or file nodes for efficiency.
:::

## **Use Wildcards to Subscribe to Multiple Topics**

To subscribe to multiple topics in flows, replace the topic name in step five of "Subscribe to a Single Topic" with the information about topic wildcards as below.&#x20;

**To use wildcards to subscribe to multiple topics:&#x20;**

1. Complete steps 1-5 from "Subscribe to a Single Topic" above.&#x20;
2. Replace the topic name with the desired wildcard-based topic.&#x20;
   **Syntax Examples:**
   `devicehub.alias.>` (Subscribe to all topics in DeviceHub)
   `devicehub.alias.{Device_ID}.>` (Subscribe to all tags from a specific DeviceHub device)
   `devicehub.alias.*.test_tag` (Subscribe to all tags named test\_tag from every DeivceHub device)
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xngWzX0aI46LdbNvKhToy_aawwaa.png" size="50" width="538" height="321" position="center" caption="Edit Datahub Subscribe node dialog box" showCaption="true"}
3. Click **Done** and save the flow by clicking the **Deploy&#xA0;**&#x62;utton at the top-right corner of the screen.
4. Expand the message window beneath the flow.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qUN5U9gp0rXYkLw_78Q8K_wda.png "The message window")
5. Click the **Debug&#xA0;**&#x69;con to view the data output.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ty5MlM2L2Y6XYo16cioXI_wwww.png "The debug icon")
6. Review the data payload in the message window.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Nq0jhivSWKhi8iRUJYOJQ_image.png "Data output from all Topics")


[title] Manage Templates
[path] Product Features/System/Backup/Restore/

You can upload and download device configuration templates by navigating to **System&#x20;***>***&#x20;Backup/Restore** from the *Templates&#x20;*&#x74;ab.

# Template Configurations

The following component categories are available for selection. You can select a whole category, or individual components within a category, for download. Each category will show the list of component that you have configured or installed on the device. For example, the connectors category will show the list of connectors that are on the device.&#x20;

- **Auth**: Configurations of LDAP/AD Authentication Providers. This doesn't include roles, groups, and users created in Litmus Edge. See [LDAP/AD Auth](docId\:BNd3rPslZ0_d_0dx9OFbz).&#x20;
- **Connectors**: Installed connectors and configurations. Connectors with the same name that exist in both the template and the Litmus Edge device will be duplicated with a unique name after uploading the template. The default connector that connects Litmus Edge and Litmus Edge Manager is not included. See [Integration](docId\:Wpqo1fE02tmx3AsKewQU6).
- **Country&#x20;**&#x63;onfigured for the instance. See [Change Country](docId\:R1Lz44wFFv3H9Jg33NWlP).&#x20;
- **Devices**: Connected devices, tags, and configurations. See [DeviceHub](docId\:yKtKJaFuLQr7ExkDvisel).&#x20;
- **DNS**: Saved Fallback DNS Resolvers. See [Configure DNS/NTP Servers](docId\:pz9D0WPBQbUGyh0MH6wyx).&#x20;
- **Docker**: Contains the IP address and netmask to use for Docker’s default bridge using standard CIDR notation. See [Applications](docId\:j4jhjBWbwQY1BS9A3G6Zk).

:::hint{type="info"}
**Example**: `"bip":"10.30.50.1/24"`
:::

- **Firewall**: Saved firewall rules. See [Manage Firewall Rules](docId:7EPAu9hxQoVl546Scor1Q).&#x20;
- **Digital Twins**: Saved models and instances. See [Digital Twins](docId\:i-2A7b3AB6vuvkqfhLjgX).
- **Flows**: Saved Flows. See [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89).

:::hint{type="info"}
**Note**: When you upload a template, the existing flows in the instance are replaced with the flows in the template configuration. If you would like to ensure existing flows are maintained after uploading a template, confirm that any flows you want to keep are part of the template configuration.&#x20;
:::

- **Analytics Groups**: Saved Analytics Flows and Processors within each group. See [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5).&#x20;
- **Marketplace**: Installed catalogs and registries. Only applications deployed using a catalog can be part of a template. For example, If you deployed an application from the catalog, it is part of a template file. If you use the docker run command to deploy an application, it is not part of a template file. See [Marketplace](docId:-vxhwowPd4S7O4a3cXffr).&#x20;
- **NTP**: Saved Network Time Protocol (NTP) servers. See [Configure DNS/NTP Servers](docId\:pz9D0WPBQbUGyh0MH6wyx) and [Troubleshooting - Time Synchronization](docId\:XhCAFvMd0MhSaDjCSx_6a).&#x20;
- **OPC UA**: Saved configurations. See [OPC UA](docId\:R8MlB0gvFHqRMC0lrUxmd).
- **Static Routes**: Saved static routes. See [Manage Static Routes](docId\:Co_QNOa4j7R84FfBXEZqL).&#x20;
- **Timezone&#x20;**&#x63;onfigured for the instance. See [Set Timezone](docId\:R1Lz44wFFv3H9Jg33NWlP).&#x20;

# Download a Template

You can download multiple device configuration templates, selecting different configurations from a single Litmus Edge device.

These device configuration files are then available on your hard drive for upload to other Litmus Edge devices. The template files can also be uploaded to a Litmus Edge Manager to be applied to groups of Litmus Edge devices. See [Edge Software Update](docId:3IevluZfOdrXAqOOpVT1n) to learn more.&#x20;

You can customize the template prior to downloading by selecting components individually or by category.

## Before You Begin

To access the features on the *Backup/Restore* page, you need a valid license.&#x20;

## How to Download a Template

**To download a template:**

1. In Litmus Edge, navigate to *System > Backup/Restore*.
   The *Backup/Restore* pane appears.&#x20;
2. Select the **Template&#x20;**&#x74;ab.&#x20;
   The *Template&#x20;*&#x70;ane appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pNTRwcboIMqOVgP2Y-OQZ_templatepane.png" size="80" width="779" height="832" position="center" showCaption="false"}
3. From the *Templates&#x20;*&#x73;ection, select the checkboxes for the configurations you want to include in the device configuration template or select the **Select All&#xA0;**&#x63;heck box.
4. Click **Download Template**.&#x20;
   A \<date>-template.json file downloads to your hard drive.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YToJn3uIOaQ10o1mOMfiQ_downloadtemplatebutton.png" size="80" width="1617" height="869" caption="The Download Template button" position="center" showCaption="true"}

# Upload a Template

:::hint{type="info"}
**Notes**:&#x20;

- If you upload a template with the same connectors that are already existing in the Litmus Edge device, then duplicate connectors will be created with unique names. For example, if the template and the Litmus Edge device both have a MySQL connector with the name **MySQL\_integration**, a duplicate connector will be created with the name **MySQL\_integration (1)**.&#x20;
- For Litmus Edge version 3.11.0 and later, if one component fails during a template upload, an error message will display and the upload process will continue with the remaining components.&#x20;
:::

You can upload a device configuration template by navigating to **System&#x20;**>**&#x20;Backup** from the *Templates&#x20;*&#x74;ab.

When you upload a device configuration template, it applies the configuration in the file to the Litmus Edge device.

You can also apply templates to Litmus Edge devices using Litmus Edge Manager, potentially changing the configurations for hundreds of Litmus Edge devices.

## Before You Begin

- To access the features on the *Backup/Restore* page, you need a valid license.&#x20;
- Download a device configuration template. See the *Download a Template* section.&#x20;

## How to Upload a Template

**To upload a template:**

1. In Litmus Edge, navigate to *System > Backup/Restore*.
   The *Backup/Restore* pane appears.&#x20;
2. Select the **Template&#x20;**&#x74;ab.&#x20;
   The *Template&#x20;*&#x70;ane appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ar1nuwEjdVMe0VcBH5cvm_templatepane.png" size="80" width="779" height="832" caption="Template pane" position="center" showCaption="true"}
3. Click **Upload Template**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dpVe1FzYlv5qKkCTD6kSR_uploadtemplatebutton.png" size="80" width="1617" height="869" caption="Upload Template button" position="center" showCaption="true"}
4. Navigate to a **\<date>-template.json** file saved on your hard drive, and then click **Open**.&#x20;
   The selected template successfully updates in the *Templates&#x20;*&#x73;ection and applies the configurations to the Litmus Edge device.


[title] Generic MQTT Integration Guide (Last Will and Testament)
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and an MQTT broker using Last Will and Testament.&#x20;

# Overview of MQTT Last Will and Testament

When this type of integration is set up, it includes a notification to other clients that are connected to the MQTT broker when your connection as a client disconnects.

When a client connects to the MQTT broker, it creates a connect packet that is predefined and sent to the MQTT broker.

You can define the message to notify you if the client disconnects.

There are four properties that you can set for the Last Will and Testament.

- LWT Topic: This is the topic that is used by the MQTT broker to send if the client disconnects.
- LWT Payload: This is the payload message that is sent if the client disconnects.
- QoS: This is the quality of service level (0, 1, or 2).
- Retain: This indicates if the message should be retained (true or false).

The MQTT broker sends this message in the following scenarios:

- If the client fails to communicate within the defined *Keep Alive* period
- If the client does not send a disconnect packet before it closes the network connection
- The broker closes the network connection due to a protocol error by the client

# Before You Begin

You will need access to an MQTT broker.&#x20;

# Step 1: Add the Generic MQTT Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **MQTT - Generic&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Enter the server address.&#x20;
- **Port**: Confirm that the default value **1883** is entered.&#x20;
- **Client ID**: Enter the client ID.
- **Username&#x20;**(Optional)
- **Password&#x20;**(Optional)
- **QoS**: The Quality of Service (QoS) level is an agreement between the sender of a message and the receiver of a message that defines the guarantee of delivery for a specific message. Select one of the following:
  - **0**: The message is sent once and delivery isn’t guaranteed.
  - **1**: This method guarantees that the message will be delivered to the broker, but also doesn’t prevent it being received multiple times.
  - **2**: This method guarantees that the message will be delivered to the broker, and the message will be sent exactly once.&#x20;
- **Parallel Publish Count**: The number of messages being published simultaneously. Once the defined limit has been reached, subsequent messages are silently dropped. The default value is 100.&#x20;
- **Integration Topic**: Enter **testTopic**.&#x20;
- **LWT topic**: Enter **lwtTopicName**.&#x20;
- **LWT payload**: Enter **Some LWT Payload**.&#x20;
- **LWT payload type**: The payload type for MQTT's Last Will and Testament feature. The options are *string&#x20;*&#x61;nd *base64*.&#x20;
- **LWT QoS**: The Quality of Service value for MQTT's Last Will and Testament feature.
- **LWT retained**: Select this checkbox to retain the value for MQTT's Last Will and Testament feature.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online.  
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 2: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/s5Aclay2bU1xicFZQWpMX_mqttgeneric.png" size="60" width="369" height="345" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 3: Verify Connection in Flows Manager

You can verify the connection is successfully set up by creating a flow in Litmus Edge.&#x20;

**To create a flow:**

1. In Litmus Edge, navigate to **Flows Manager**.&#x20;
2. Click **Add Flow**.
3. Enter **MQTT LWT&#xA0;**&#x69;n the **Name&#xA0;**&#x66;ield and click **Create Flow**.
4. Click the **Start&#x20;**&#x69;con next to the MQTT LWT flow.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/r97cBIu5zR7UgRGejsEOQ_flowstarticon.png" size="80" width="1170" height="358" caption="Flows Manager Start icon" position="center" showCaption="true"}
5. Click the **Go To Flow Definition** icon.&#x20;
   Th&#x65;*&#x20;Flow canvas&#x20;*&#x6F;pens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6PlxhptXn4xZ_4ZdrIAuf_gotoflowdefinition.png" size="80" width="944" height="366" caption="Go To Flow Definition icon" position="center" showCaption="true"}
6. From the node palette, drag the **MQTT In** node (network section) to the canvas.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7f0HoqgLntPC_1APyE5Yr_mqttinnode.png" size="80" width="1121" height="637" caption="MQTT In node" position="center" showCaption="true"}
7. Double-click the **MQTT In** node.
   The *Edit MQTT In Node* dialog box appears.&#x20;
8. Click the **Edit&#x20;**&#x69;con next to the *Server&#x20;*&#x66;ield.&#x20;
   The *Add new mqtt-broker config node* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/h_f4IwachNpeLbdv60Q_q_editservericon.png" size="60" width="505" height="462" caption="Edit server icon" position="center" showCaption="true"}
9. In the *Name&#x20;*&#x66;ield, enter the name of the broker.&#x20;
10. From the Connection tab, configure the following parameters.&#x20;
    - **Server**: Enter the server address.&#x20;
    - **Port**: Enter **1883**.&#x20;
    - **Client ID**: Enter the client ID.&#x20;
    - **Keep Alive**: Enter **60**.&#x20;
11. Click **Add**.&#x20;
12. From the *Edit MQTT In Node* dialog box, enter **lwtTopicName&#x20;**&#x69;n the **Topic&#x20;**&#x66;ield.&#x20;
13. Select the desired **QoS&#x20;**&#x76;alue.&#x20;
14. Click **Done**.
15. From the *Node&#x20;*&#x70;alette, drag the **Debug&#xA0;**&#x4E;ode to the canvas and connect the two nodes.
16. Click **Deploy**.&#x20;
17. Expand the message window beneath the flow and click the **Debug&#xA0;**&#x69;con. Verify that messages are displaying.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gPJk6NsW3loIyEUdOJWuM_debugicon.png" size="80" width="885" height="365" caption="Debug node messages" position="center" showCaption="true"}


[title] AWS SiteWise Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and AWS SiteWise.&#x20;

# Before You Begin

You need to create an AWS account. See [Setting up an AWS account](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/set-up-aws-account.html) to learn more.&#x20;

Refer to the following AWS resources to learn more about AWS SiteWise:

- [What is AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html)
- [Key Components](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/feature-overview.html)
- [Ingesting data to AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/industrial-data-ingestion.html)
- [Interacting with other AWS services](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/interact-with-other-services.html)

# Step 1: Collect AWS SiteWise Connection Parameters

You will need the following parameters to configure the connection in Litmus Edge.

- **Region**: You need to get the region name for your AWS account. See [AWS IoT SiteWise endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html) and [Specify which AWS Regions your account can use](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) to learn more.&#x20;
- **Access Key**: Copy and paste the access key somewhere securely. See [Managing access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) and [Identity and access management for AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/security-iam.html) to learn more.&#x20;
- **Secret Access Key**: Copy and paste the secret access key somewhere securely. See [Managing access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) and [Identity and access management for AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/security-iam.html) to learn more.&#x20;

# Step 2: Add AWS SiteWise Connector in Litmus Edge

Once you have collected the required AWS connection parameters, follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **AWS SiteWise Connector** provider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Region**: Enter the region name you collected in Step 1 that is associated with your AWS account.
- **Access key**: Paste the access key collected in Step 1.&#x20;
- **Secret access key**: Paste the secret access key collected in Step 1.&#x20;
- **Subscribe interval**: Enter the subscription interval in seconds. Subscribe interval defines the time in seconds between consecutive data update notifications for a subscribed asset property, specifying the frequency at which the system checks and receives updates on the specified property within the IoT SiteWise platform.&#x20;
- **Number of batch messages**: Enter the number of batch messages to publish. This value refers to the quantity of grouped data transmissions. &#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 3: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Zb90FCTloAnIiMZ0bPDtV_awssitewise.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 4: Set up Connection (Outbound or Inbound) with AWS SiteWise

You have the option of setting up an outbound or inbound connection.&#x20;

## Set up Outbound Connection

To set up an outbound connection, you will need to create a DeviceHub device and tags. The tags will be used to send data to AWS SiteWise.&#x20;

### Step a: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

### Step b: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

### Step c: Create Outbound Topics for Connector

You will now need to import the tags you added to the connector as topics.&#x20;

:::hint{type="info"}
**Note**: If there any existing inbound topics already created for the connector, disable them before creating the outbound topics.&#x20;
:::

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

### Step d: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

### Step e: Verify Connection

You can now access your AWS account to verify that data is successfully being sent from Litmus Edge. See [Ingesting data to AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/industrial-data-ingestion.html) to learn more.&#x20;

## Set up Inbound Connection

You have the option of subscribing to data from AWS SiteWise.&#x20;

### Step a: Create Inbound Topics for Connector

You will create topics for the connector that will subscribe to data from associated AWS SiteWise topics.&#x20;

:::hint{type="info"}
**Note**: If there any existing outbound topics already created for the connector, disable them before creating the outbound topics.&#x20;
:::

**To create inbound topics:&#x20;**

1. Navigate to **Integration**.&#x20;
2. Click the connector tile.&#x20;
3. Click the **Topics&#x20;**&#x74;ab.&#x20;
4. Click the **Add a new subscription** icon.&#x20;
   The *Data Integration* dialog box appears.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1Zn9Nd06yDILd3feonCbz_awssitewiseinboundtopic.png "Add a new subscription icon")
5. Configure the following parameters.&#x20;
   - **Data Direction**: Select **Remote to Local - Inbound**.&#x20;
   - **Local Data Topic**: Enter a topic name that will be used for subscribing to data in Litmus Edge.&#x20;
   - **Remote Data Topic**: Copy and paste the associated topic name from AWS SiteWise.&#x20;
   - **Enable**: Select the toggle to enable the topic.&#x20;
6. Click **Yes&#x20;**&#x74;o add the topic.&#x20;
7. From the connector tile, ensure the connector is not disabled and still shows a CONNECTED status. Also verify the topic shows an *Enabled&#x20;*&#x73;tatus.&#x20;

### Step b: Verify Connection in Litmus Edge

You have several options for verifying the connection in Litmus Edge. When subscribing to the data, you will need to use the *Local Data Topic* name configured in the previous step.&#x20;

You can visualize the incoming data using one of the dedicated [Applications](docId\:j4jhjBWbwQY1BS9A3G6Zk) such as [Grafana](docId\:SUoMePWWNb2wt-m7HD8Hh).&#x20;

You can also view the data in the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89) and [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5) areas of Litmus Edge.&#x20;

- If you are creating a flow from the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89), subscribe to the *Local Data Topic* name. See [Subscribe to Topics with Flows](docId\:j6mthBGu7NnTTtVX6VZ9K) to learn more.&#x20;
- If you are using [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5), select the DataHub Subscribe processor and use the *Local Data Topic* name. See [Create an Analytics Flow](docId\:XNeTldW_xYRNSnYTLP3h-) and [Add Processors and Processor Connections](docId\:s6dMQkyHmZvJF7sj8-UYw) to learn more.&#x20;


[title] Azure IoT Hub Guides
[path] How-To-Guides/Integration Guides/

Before setting up an Azure IoT Hub connector, you must first [Set up an Azure IoT Hub](docId\:HJbKLRQ2HUmK_Ah21aex3).

# Next Steps

- [Send Data to Azure IoT Hub with an SAS Key](docId\:FxoUPxtcqiAALlD3UEuNC)&#x20;
- [Receive Data from Azure IoT Hub with an SAS Key](docId:7aTKHCCxDhwxxAV-JFVME)&#x20;
- [Send Data to Azure IoT Hub with a Device Certificate](docId\:v3GEhSNpvbq5y1oX7mEej)&#x20;
- [Receive Data from Azure IoT Hub with a Device Certificate](docId\:kOYSBrgtUHp4POv6C_bgP)&#x20;


[title] Use Access to Read from a Topic
[path] How-To-Guides/Flows Guides/

You can use Flows to read a topic from a tag through the local message broker using an **Access Subscribe&#x20;**&#x6E;ode.

# Before you Begin

Make sure you create an Access API account. See [Create an API Account](docId\:FjKwI7dLgj_21twngGwjV) and [Manage API Accounts](docId\:CEHW4kagrs6kF7sOyzOBK) for more information.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device]() and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags]() to learn more.&#x20;

## **Tag 1**

- **Name**: Select **S - Random value generator**.
- **Value Type**: Select **int64**.&#x20;
- **Polling Interval**: Enter **5**.
- **Tag Name**: Enter **tag 1**.&#x20;

After the tag is created, click the **Copy&#x20;**&#x69;con for the topic name for the tag. You will refer to this later.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mEGGMuMlsreHyxmJAoVkv_a.png "The copy icon for the tag")

# Step 3: Create Access Flow

**To read a topic from a tag using Access:**

1. In Litmus Edge, navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow.&#x20;
   See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
2. Drag the **Access Subscribe** and **Debug** nodes to the canvas and wire them together.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GE8GmsiNA7lY7RxUIEnxr_image.png" size="70" width="430" height="96" position="center" caption="Access Subscribe node" showCaption="true"}
3. In Litmus Edge, navigate to **System&#x20;**>**&#x20;Tokens**.
4. Click th&#x65;**&#x20;Action menu** for the API account you created previously and select **Edit topics**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ulieET8TXxv4ZDLvatucb_image.png "System Tokens page")
5. From the *Edit topics***&#xA0;**&#x64;ialog box, do the following:
   - Paste the topic name from Step 2 in the **Read Topics** field, and click **Add Read Topic**.
     The topic name appears below the *Topic Name field*.
   - Click **Update**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6H3Qzx3atDGas5fu_Baj1_image.png" size="70" width="621" height="296" position="center" caption="Edit topics dialog box" showCaption="true"}
6. Return to the **Flows&#xA0;**&#x62;rowser tab and double-click the **Access Subscribe&#xA0;**&#x6E;ode.
   The *Edit access-subscribe node&#x20;*&#x64;ialog box appears.
   - **Topic Name**: Paste the topic name from Step 2. If you paste a topic from the Tags pane that has not been added to the Access **Read Topic&#x20;**&#x66;ield, you will get an error.
   - Click the **Edit&#x20;**&#x69;con next to the *Access&#x20;*&#x66;ield.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5xemEvAFN5gSeTVG20ce7_image.png" size="70" width="450" height="290" position="center" caption="Edit access-subscribe node dialog" showCaption="true"}
7. Return to the **System&#x20;**>**&#x20;Tokens&#xA0;**&#x62;rowser tab and do the following:
   - Click the **Action menu&#x20;**&#x66;or the API account and select **View API Key**.
   - Click the **Copy** icon next to the *API Key*.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/570PRoC_TXb83Yo_HdcGe_image.png "Access accounts table")
8. Return to the *Add new Access Connect config node* dialog box in the **Flows&#xA0;**&#x62;rowser tab and do the following:
   - **API Key**: Paste the API key you copied.
   - Click **Add&#x20;**&#x6F;r **Update**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-NQYM8NR2H7Mq-hcjI5-V_image.png" size="70" width="455" height="233" position="center" caption="Add new Access Connect config node dialog box" showCaption="true"}
9. Click **Done&#x20;**&#x61;nd then click **Deploy.**
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FUQ9crAbIGcM1UrBIDgbS_image.png" size="70" width="455" height="281" position="center" caption="Edit access-subscribe node dialog box" showCaption="true"}
10. Expand the message window beneath the flow and click the **Debug&#x20;**&#x69;con.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wI_bbReMPplhSo_AuY11c_image.png "Flows canvas debug section")
11. Click the **Debug&#x20;**&#x6E;ode button to view the output in the *Debug message* window.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uVPzBGImLVrjepqSUyj_P_image.png "View the output for Access Subscribe node")


[title] Cognite Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and Cognite. Once the integration is set up, you can send and receive data through the Cognite connector.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sLw1vShTU5-ML0mcKKZK5_image.png "Cognite Platform")

# Before You Begin

You must have access to [Cognite Data Fusion](https://www.cognite.com/en/product/cognite_data_fusion_industrial_dataops_platform).&#x20;

# Step 1: Collect Cognite Connection Parameters

You will need to retrieve the following parameters to configure the connection.&#x20;

## Project ID

The project ID is the unique identifier assigned to each project within Cognite.&#x20;

**To get the project ID:**

1. Sign in to Cognite Data Fusion.&#x20;
2. In the top-left corner, open the environment identifier to view the list of project IDs. Select the appropriate one to integrate with Litmus Edge.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IHjzIbuP85QZwS1cObu-h_cognite-project-list.png)

Refer to [Projects ](https://api-docs.cognite.com/20230101/tag/Projects)API documentation to learn more.&#x20;

## Tenant ID

SIgn in to the [Microsoft Entra admin center](https://entra.microsoft.com/) and navigate to **Identity&#x20;**> **Overview&#x20;**> **Properties**. See [How to find your Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/fundamentals/how-to-find-tenant) to learn more.&#x20;

## Client ID

To retrieve the client ID, you will need to register the Cognite account as an application in Microsoft Entra. If you don't have the appropriate permissions to create a client ID, follow up with your IT department. See [Quickstart: Register an application with the Microsoft identity platform > Register an application](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application) to learn more.&#x20;

## Client Secret

To retrieve the client secret, you will need to register the Cognite account as an application in Microsoft Entra, and then create the client secret. Please note that the secret value is only visible when it is created, and not available to view after. If you don't have the appropriate permissions to create a client secret, follow up with your IT department. See [Quickstart: Register an application with the Microsoft identity platform > Add a client secret](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#add-a-client-secret) to learn more.&#x20;

## Cluster

A cluster is a grouping of resources within the platform.&#x20;

**To retrieve the cluster value:**

1. Log in to Cognite Data Fusion.&#x20;
2. Navigate to **Data Management&#x20;**> **Manage&#x20;**> **Manage Access**.
3. Click the **OpenID connect** tab.&#x20;
4. Refer to the *Audience&#x20;*&#x66;ield. The cluster value is between *https\://* and *.cognitedata.com*.&#x20;

For example, if the audience value is https\://az-eastus-1.cognitedata.com, the cluster value is **az-eastus-1**.&#x20;

## Scope

The scope specifies the level of access and permissions granted to an application in the Cognite platform.&#x20;

**To retrieve the scope value:**

1. Log in to Cognite Data Fusion.&#x20;
2. Navigate to **Data Management&#x20;**> **Manage&#x20;**> **Manage Access**.
3. Click the **OpenID connect** tab.&#x20;
4. Refer to the *Audience&#x20;*&#x66;ield and update it as needed for the scope.&#x20;

For example, if the audience value is https\://az-eastus-1.cognitedata.com, the scope value can be **https\://az-eastus-1.cognitedata.com/.default**. Follow up with your IT department for further assistance.&#x20;

# Step 2: Add Cognite Connector in Litmus Edge

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **Cognite Connector** provider.&#x20;

Configure the following parameters.&#x20;

| **Parameter**      | **Description**                                                                                                                                                                                                                                                   |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name               | Enter a name for the connector.                                                                                                                                                                                                                                   |
| Project ID         | Enter the value retrieved in Step 1.                                                                                                                                                                                                                              |
| Tenant ID          | Enter the value retrieved in Step 1.                                                                                                                                                                                                                              |
| Client ID          | Enter the value retrieved in Step 1.                                                                                                                                                                                                                              |
| Client Secret      | Enter the value retrieved in Step 1.                                                                                                                                                                                                                              |
| Cluster            | Enter the value retrieved in Step 1.                                                                                                                                                                                                                              |
| Scope              | Enter the value retrieved in Step 1.                                                                                                                                                                                                                              |
| Subscribe interval | Enter the interval (in seconds) that the connector polls for data.                                                                                                                                                                                                |
| Throttling limit   | The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.                                                                                                                                         |
| Persistent storage | When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online.                                                                                                      |
| Queue Mode         | Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first. |

# Step 3: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N49umYXapOJOskb6EwaGN_image.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 4: Set up Connection (Outbound or Inbound) with Cognite

You have the option of setting up an outbound or inbound connection.&#x20;

## Set up Outbound Connection

To set up an outbound connection, you will need to create a DeviceHub device and tags. The tags will be used to send data to Cognite.&#x20;

### Step a: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

### Step b: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

### Step c: Create Outbound Topics for Connector

You will now need to import the tags you added to the connector as topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

### Step d: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

### Step e: Verify Connection in Cognite

You can verify the connection is successfully sending data by navigating the Cognite *Data Explorer*. See [Explore data](https://docs.cognite.com/cdf/integration/guides/exploration/data_explorer) to learn more.&#x20;

## Set up Inbound Connection

You have the option of subscribing to data from Cognite. The data that is subscribed to is a loopback as it is first sent from Litmus Edge to Cognite, and then back to Litmus Edge as time series data.&#x20;

### Step a: Create Assets and Time Series

To set up an inbound connection, you will need to create assets and time series as needed in Cognite through API. See [Assets ](https://api-docs.cognite.com/20230101/tag/Assets)and [Time Series](https://api-docs.cognite.com/20230101/tag/Time-series) to learn more.&#x20;

Once you set up assets and time series, copy the IDs for the time series. You will refer to the IDs when configuring the remote topic names for the inbound connection.&#x20;

**To collect the time series IDs:**

1. Log in to Cognite Data Fusion.&#x20;
2. Click **Data Explorer**.&#x20;
3. Click the appropriate asset name to select it.&#x20;
4. Click the **Time series** tab.&#x20;
5. Click the appropriate time series name to select it.&#x20;
6. Under *General*, click the **Copy&#x20;**&#x69;con for **ID**.&#x20;

### Step b: Create Inbound Topics for Connector

You will create topipcs for the connector that will subscribe to data from associated Cognite time series IDs.&#x20;

**To create inbound topics:&#x20;**

1. Navigate to **Integration**.&#x20;
2. Click the connector tile.&#x20;
3. Click the **Topics&#x20;**&#x74;ab.&#x20;
4. Click the **Add a new subscription** icon.
   The *Data Integration* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eT4cT36wVHPqXRb-83Boe_cognite-inbound-topic.png "Add a new subscription icon")
5. Configure the following parameters.&#x20;
   - **Data Direction**: Select **Remote to Local - Inbound**.&#x20;
   - **Local Data Topic**: Enter a topic name that will be used for subscribing to data in Litmus Edge.&#x20;
   - **Remote Data Topic**: Copy and paste the associated time series ID collected in the previous step.&#x20;
   - **Enable**: Select the toggle to enable the topic.&#x20;
6. Click **Yes&#x20;**&#x74;o add the topic.&#x20;
7. From the connector tile, ensure the connector is not disabled and still shows a CONNECTED status. Also verify the topic shows an *Enabled&#x20;*&#x73;tatus.&#x20;

### Step c: Verify Connection in Litmus Edge

You have several options for verifying the connection in Litmus Edge. When subscribing to the data, you will need to use the *Local Data Topic* name configured in the previous step.&#x20;

You can visualize the incoming data using one of the dedicated [Applications](docId\:j4jhjBWbwQY1BS9A3G6Zk) such as [Grafana](docId\:SUoMePWWNb2wt-m7HD8Hh).&#x20;

You can also view the data in the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89) and [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5) areas of Litmus Edge.&#x20;

- If you are creating a flow from the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89), subscribe to the *Local Data Topic* name. See [Subscribe to Topics with Flows](docId\:j6mthBGu7NnTTtVX6VZ9K) to learn more.&#x20;
- If you are using [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5), select the DataHub Subscribe processor and use the *Local Data Topic* name. See [Create an Analytics Flow](docId\:XNeTldW_xYRNSnYTLP3h-) and [Add Processors and Processor Connections](docId\:s6dMQkyHmZvJF7sj8-UYw) to learn more.&#x20;


[title] Add an Application Container Using Docker Compose
[path] How-To-Guides/Applications Guides/

You can add an application container to the **Applications&#x20;**> **Containers&#x20;**&#x70;ane using Docker Compose.

See the [Docker Hub Nginx Image ](https://hub.docker.com/_/nginx)page for more information.&#x20;

You can also leverage Docker Compose in Litmus Edge Manager. See [Set Up Docker Container Configurations for an Application Release](docId\:mebpl6tcgzj9NS2Cmk5cQ) for details.&#x20;

For this use case, we will add a Docker compose container, add and run an Nginix container, verify that the resulting website is running, and then remove the container.

# Step 1: Add a Docker Compose Container

**To add a Docker Compose container:**

1. In Litmus Edge, navigate to **Applications&#x20;**> **Containers**.&#x20;
   The *Containers&#x20;*&#x70;ane appears.&#x20;
2. Click **Run**.&#x20;
   The *Enter command to run* field appears.&#x20;
3. Enter the following:
   `docker run -it -d --name compose -v /var/run/docker.sock:   `
   `/var/run/docker.sock docker/compose:latest /bin/sh`
4. Click **Run**.&#x20;
   The named container appears in the *Containers&#x20;*&#x70;ane and displays a running state. The container runs locally.

# Step 2: Add the Nginx Container

**To add the Nginx container:&#x20;**

1. From the *Containers&#x20;*&#x70;ane, click the **Terminal&#x20;**&#x69;con next to the compose container created in step 1.&#x20;
   The compose shell opens.&#x20;
2. Enter **docker ps -a&#x20;**&#x61;nd press **ENTER**.
   A list of the running containers appears.&#x20;
3. Enter **cd \~** and press **ENTER**.&#x20;
4. Enter **mkdir new&#x20;**&#x61;nd press **ENTER**.
5. Enter **cd new** and press **ENTER**.&#x20;
   The directory changes to /new.&#x20;
6. Enter **vi docker-compose.yaml&#x20;**&#x61;nd press **ENTER**.
   The compose.yaml file opens.&#x20;
7. Paste the following code into the **compose.yaml** file as plain text.&#x20;
   `version: '3'`
   `services:`
   `  web:`
   `    image: nginx`
   `    volumes:`
   `      - ./templates:/etc/nginx/templates`
   `    ports:`
   `      - "3000:80"`
   `    environment:`
   `      - NGINX_HOST=foobar.com`
   `      - NGINX_PORT=80`
8. Press **Esc&#xA0;**&#x61;nd enter **:wq** to save and exit the compose.yaml file.
   You are returned to the compose shell.&#x20;
9. From th&#x65;*&#xA0;/new&#xA0;*&#x64;irectory, enter **docker-compose up&#x20;**&#x61;nd press **ENTER**.
   A series of commands appears, creating and attaching to new\_web\_1.
10. Click the **Containers&#xA0;**&#x6C;ink at the top of the terminal to return to the *Containers&#x20;*&#x70;ane, and then refresh the page.
    The new\_web\_1 for the nginix container appears and is running.

# Step 3: Verify that Nginx in Running

**To verify that Nginx is running:**

1. Open a new browser tab.&#x20;
2. Copy the IP address from the Litmus Edge browser tab.&#x20;
3. Paste the IP address in the new browser tab and add :3000 to the end.&#x20;
   For example: https\://192.168.7.16:3000

The Welcome to nginx! page appears.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VhwPqX8Dc8gjHX5Bd-hFF_image.png" size="80" width="608" height="241" caption="Welcome to nginx! page" position="center" showCaption="true"}

# Step 4: Remove the Nginx Container

You will now need to remove the Nginx container.&#x20;

**To remove the Nginx container:**

1. From the compose terminal shell, press **Ctrl+C&#xA0;**&#x74;o stop the compose container.
2. Enter **docker-compose down&#x20;**&#x61;nd press **ENTER**.
   The new\_web\_1 for the nginx container is removed.


# Step 5: Verify the Nginx Container is Removed

Click the **Containers&#xA0;**&#x6C;ink at the top of the terminal to return to the *Containers&#x20;*&#x70;ane, and then refresh the page.

The new\_web\_1 for the nginix container no longer appears.

Example terminal code:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N99fov6uCnlzxm8K3Q_xk_image.png" size="80" width="1598" height="636" caption="Example code" position="center" showCaption="true"}


[title] Use the Moving Window Processor Function
[path] How-To-Guides/Analytics Guides/

You can use a single input to perform calculations over a sliding or moving window of data from your PLC device. Single inputs are to be provided with the events-type connection and then the respective functions are calculated as the names suggest.

# Understanding Different Moving Window Functions

Use one of the following functions for your inputs:

- **Moving Average:&#xA0;**&#x43;alculates the average of the moving window of input values in the Flow.
- **Moving Maximum:&#xA0;**&#x52;eturns the maximum value among the moving window of input values in the Flow.
- **Moving Minimum:&#x20;**&#x52;eturns the minimum value among the moving window of input values in the Flow.

# **User Scenario**

Review the following scenario for the moving window processor function. Then, you will simulate PLC data and calculate KPIs using multiple moving processor functions.

In a production facility, several PLCs use multiple sensors to monitor parameters such as temperature, pressure, and speed.

- You can monitor temperature trends and detect anomalies in machines by using the **Moving Average** function over a specific time frame.
- You can identify any sudden spikes by extracting the highest pressure readings from sensors using the **Moving Maximum** function over a specific time frame.
- You can pinpoint periods when machine performance drops below acceptable levels by using the **Moving Minimum** function within a defined window.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more. Only one tag will be used for simulating the different Moving processor outputs mentioned above.

## **Tag 1: tag1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **tag1**
- **Min\_value**: Enter **1**
- **Max\_value**: Enter **99**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tag you previously created. Follow the appropriate step out of 3a, 3b, or, 3c based on the Moving Window Processor Function you want to use.

**To create an analytics flow with the Moving Window Processor function:**

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **tag1**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.

## Step 3a: Configure Moving Average Processor

1. Click **Add processor** again and select **Moving Average**.
   The following information defines this function:
   - **Field Name**: Select the field name for which you want to apply the function. For example, **value&#xA0;**&#x6F;r **downtime**.
   - **Processing Type**: Select **float&#x20;**&#x66;rom the drop-down list.
   - **Window Size:&#x20;**&#x45;nter the number of values you want the function to consider.
2. Click **Save.**
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RATjN77ITpAJLV_3_2i7p_image.png "Moving Average dialog box")
3. Connect the DataHub Subscribe processor (tag: *tag1)* to the Moving Average processor with a wire and use the **events&#x20;**&#x63;onnection.
4. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iO_k59vGqpqUpLj-DxxtB_image.png "Completed Moving Average flow canvas")

## Step 3b: Configure Moving Maximum Processor

1. Click **Add processor** again and select **Moving Maximum**.
   The following information defines this function:
   - **Field Name**: Select the field name for which you want to apply the function. For example, **value&#xA0;**&#x6F;r **downtime**.
   - **Processing Type**: Select **float&#x20;**&#x66;rom the drop-down list.
   - **Window Size:&#x20;**&#x45;nter the number of values you want the function to consider.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Llb9yIaiMoQ6h8ClXS6sZ_image.png "Moving Maximum dialog box")
3. Connect the DataHub Subscribe processor (tag: *tag1*) to the Moving Maximum processor with a wire and use the **events&#x20;**&#x63;onnection.
4. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/IJMJ3tknbGfpzAuk6jO5M_image.png "Completed Moving Maximum flow canvas")

## Step 3c: Configure Moving Minimum Processor

1. Click **Add processor** again and select **Moving Minimum**.
   The following information defines this function:
   - **Field Name**: Select the field name for which you want to apply the function. For example, **value&#xA0;**&#x6F;r **downtime**.
   - **Processing Type**: Select **float&#x20;**&#x66;rom the drop-down list.
   - **Window Size:&#x20;**&#x45;nter the number of values you want the function to consider.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mz2rgydGIGMqMKHwtw8kv_image.png "Moving Minimum dialog box")
3. Connect the DataHub Subscribe processor (tag: *tag1*) to the Moving Minimum processor with a wire and use the **events&#x20;**&#x63;onnection.
4. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7-5_DVeRji3igK8ZzYAUT_image.png "Completed Moving Minimum flow canvas")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Moving&#x20;*&#x70;rocessor to view the output values.

## View Moving Average Output

The average function calculates the average of last 10 values from the defined *tag1* values.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Fbtp7g0bphCi6xwA7Tj5E_image.png "Moving Average Processor Output")

## View Moving Maximum Output

The maximum function finds the largest of last 10 values from the defined *tag1* values.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/92_tIhvb6ijk_rSK5BoU9_image.png "Moving Maximum Processor Output")

## View Moving Minimum Output

The minimum function finds the smallest of last 10 values from the defined *tag1* values.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VicTmQsnJxFLpxpzpJl0n_image.png "Moving Minimum Processor Output")


[title] Set Up the Influx Client for InfluxQL Queries
[path] How-To-Guides/Applications Guides/

You can set up the Influx client to execute influxQL queries.

# Before You Begin

Make sure you do the following:

- Add a database user. See [Add Database Users](docId\:Mcfas9grEuoCloQQnThpg) for details.&#x20;
- Pull the Influxdb application image into Litmus Edge. See [Upload an Image](docId\:Ll_C8iAnGQ6jV3eX65nTv) for details.&#x20;
- Launch a container using the Docker Run command. See [Manage Containers](docId:2Ff1mgt8eolOuKcTm2FC2)  for details.&#x20;

# Step 1: Deploy Influx Container

You will need to deploy the Influx container in Litmus Edge and specify the version you want to deploy.&#x20;

**To deploy the Influx container:&#x20;**

1. In Litmus Edge, navigate to **Applications&#x20;**> **Containers**.&#x20;
   The *Containers&#x20;*&#x70;ane appears.&#x20;
2. Click **Run**.&#x20;
   The *Enter command to run* field appears.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zT58_FEgdS6lV15Q6BFHC_run-button.png "The Run button")
3. Enter the following command. Replace `[your influxdb version]` with the correct InfluxDB version (for example, influxdb:2.0).&#x20;

```none
docker run -d --name influxdb influxdb:[your influxdb version]
```

The named container appears in the *Containers&#x20;*&#x70;ane and displays a running state. The container runs locally.

# Step 2: Provide Database User Access to Influx Database

To provide the database user your created access to the Influx database, refer to the following resources and review the appropriate InfluxDB version:

- [influx - InfluxDB command line interface (2.0)](https://docs.influxdata.com/influxdb/v2.0/reference/cli/influx/)
- [influx - InfluxDB command line interface (2.7)](https://docs.influxdata.com/influxdb/v2.7/reference/cli/influx/)
- [influxdb - Official Image | Docker Hub](https://hub.docker.com/_/influxdb)

# Step 3: Enter and Execute InfluxQL Queries

After completing step 2, you can enter and execute InfluxQL Queries.

Refer to [InfluxData Documentation](https://docs.influxdata.com/) to learn more.&#x20;


[title] Use the Compliance and Loss KPI
[path] How-To-Guides/Analytics Guides/

The **Compliance and Loss&#x20;**&#x4B;PI mainly deals with manufactured units and defective units.

For this KPI, two input definitions are required: `manufactureEnd` and `defectiveUnit`. These are event triggers, signifying the end of the manufacturing cycle and the discovery of a defective unit, respectively. When the input tag associated with the *defectiveUnit&#x20;*&#x67;oes from one value to another, it indicates that the unit was defective.

The compliance rate is calculated by subtracting the number of defective units from the total manufactured units. The loss percentage is defined as the ratio of defective units to the total manufactured units.

# User Scenario

Review the following scenario for the compliance and loss KPI processor. Then, using an input processor, you will simulate PLC data and calculate the compliance rate and production loss.

In a manufacturing setting, the Compliance and Loss KPI is essential for monitoring product quality. For instance, a production manager can use this KPI to identify manufacturing issues and ensure product quality. For example, if 40 out of 100 products are defective, it indicates a 40% production loss, prompting the need for process improvement to maintain high-quality standards.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: manufacture**

- **Name**: Select **S - Random value generator.**
- **Value Type:** Select **float64.**
- **Polling Interval**: Enter **1.**
- **Tag Name**: Enter **manufacture.**

## **Tag 2: defective**

- **Name**: Select **S - Random value generator.**
- **Value Type:** Select **float64.**
- **Polling Interval**: Enter **1.**
- **Tag Name**: Enter **defective.**

# Step 3: Create Analytics Flow

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Compliance and Loss Processor function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the *Topic* field, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for tag1: **manufacture**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png" size="80" width="1142" height="604" position="center" caption="Create a Processor dialog box" showCaption="true"}
5. Click **Save**.
6. Repeat steps 2-5 to add another *DataHub Subscribe&#x20;*&#x70;rocessor for the **defective&#x20;**&#x74;ag.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pKjlKpBb8jF3Sr6cJ6wWj_image.png" size="80" width="507" height="303" position="center" caption="Canvas flow with two DataHub Subscribe processor" showCaption="true"}
7. Click **Add processor** again and select the **Compliance and Loss&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Defective From & Defective To:&#x20;**&#x49;f your input changes *Defective From* value to *Defective To* value, it will trigger a defective unit.
   - **Manufacture From & Manufacture To:&#x20;**&#x49;f your input changes *Manufacture From* value to *Manufacture To* value, it will trigger the end of the manufacturing cycle.
   - **Time Interval:** If the tag publishes at the expected interval, it is better to disable this timer by entering **0** in the field.
   - Click **Save**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kCGH6gAIsKRidhmhug0wS_image.png" size="80" width="756" height="768" position="center" caption="Edit a Processor dialog box" showCaption="true"}
8. Connect the *DataHub Subscribe* processor (tag: *manufacture*) to the *Compliance and Loss* processor with a wire. Use the **Events** connection and enter a definition of **manufactureEnd&#x20;**&#x66;or the connection.
9. Repeat step 8 for tag: *defective&#x20;*&#x61;nd enter a definition of **defectiveUnit** for the connection.
10. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/uiRp7PcuHVUL4yVM8Fv5y_image.png" size="80" width="757" height="332" position="center" caption="Completed Flow Canvas" showCaption="true"}

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Compliance and Loss* processor to view the output values.

The output displays the calculated compliance rate and production loss using data from the previously created device and tags.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/isX_OmLCjfVQEL1E3AE3j_image.png "Output of Compliance and Loss processor")


[title] Work with SQL Databases
[path] How-To-Guides/Flows Guides/

You can use flows to make a connection with SQL databases.&#x20;

# Step 1: Install MySQL in Litmus Edge

**To install MySQL in Litmus Edge:**

1. Navigate to **Applications&#x20;**> **Marketplace**.
2. Click **Marketplace List&#x20;**&#x61;nd select **Default Marketplace Catalog**.&#x20;
3. Click the **MySQL** tile.
   The *MySQL configuration&#x20;*&#x64;ialog box opens.&#x20;
   - **Installation script version:&#x20;**&#x46;rom the drop-down list, select **latest**.&#x20;
   - **Name:** Enter a name for the application.
   - Leave the other fields with their default values.&#x20;
4. Click **Launch**.&#x20;
5. Navigate to **Applications&#x20;**> **Catalog Apps&#x20;**&#x74;o ensure the application is running successfully.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ps6YZzvgb4j3IDg0zcZvC_image.png "Running MySQL application")

If you have any issues installing MySQL, do the following:

- Check **System** > **Info** to make sure that you have enough space on your edge device.
- Make sure that you do not have any network connectivity issues.
- Navigate to **Applications&#x20;**> **Catalog Apps&#x20;**&#x61;nd click the **MySQL&#x20;**&#x61;pplication tile to view the logs. Review any errors.&#x20;
- If you get the MySQL error message `Error: Too many connections` , refer to [MySQL Error Message: Too Many Connections](docId\:sKCuXwK6rRtQVxuek5tXG).&#x20;

# Step 2: Create Flow

**To create the flow:**

1. In Litmus Edge, navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow. See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
2. On the Flow canvas, drag and connect an **Inject** node, a **Template** node, a **MySQL** node, and a **Debug** node.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RL1A0jk0jCy6xc3Pc705G_flow-21.png" size="80" width="600" height="150" position="center" caption="Flows canvas with MySQL nodes connection" showCaption="true"}

## Configure MySQL Node

You need to configure a database connection for the MySQL node.&#x20;

**To configure the MySQL node:&#x20;**

1. Double-click the **MySQL&#x20;**&#x6E;ode.
   The *Edit mysql node* dialog box opens.
2. In the **Database&#x20;**&#x66;ield, click the **Edit&#x20;**&#x69;con.&#x20;
3. Configure the properties for the node.&#x20;
   - **Host**: Enter the IP address for your SQL server. It is **127.0.0.1** if your MySQL instance is running on the same device as Litmus Edge.
   - **Port**: If needed, update the default port value **3306**.&#x20;
   - **User**: Enter the user value from the MySQL application configuration. The default value is **user**.
   - **Password**: Enter the password value from the MySQL application configuration. The default value is `loopedge-s3cr3t!`.
   - **Database**: Enter the database value from the MySQL application configuration. The default value is **sample**.
   - If needed, configure the remaining parameters. &#x20;
4. Click **Add**, and then **Done**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BXNAYwWR86mgjG2i5FX6V_image.png" size="50" width="570" height="913" position="center" caption="Edit mysql node dialog box" showCaption="true"}

## Configure Template Node

**To configure the Template node:**

1. Double-click the **Template&#x20;**&#x6E;ode.
   The *Edit template node* dialog box opens.&#x20;
   - **Property: &#x20;**&#x53;elect `msg.` and enter **topic**.&#x20;
   - **Template:&#x20;**&#x45;nter below **query&#x20;**&#x69;nto the form.
     `CREATE TABLE Example (`
     `    id int NOT NULL AUTO_INCREMENT PRIMARY KEY,`
     `    name VARCHAR(255)`
     `);`
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6bmoP0A5i920y148XHNRX_edit-template-node1.png" size="80" width="600" height="350" position="center" caption="Edit template node dialog box" showCaption="true"}
2. Click **Done**, and then **Deploy**.&#x20;

## Review Flow Payload

**To review the flow payload:**

1. Expand the message window beneath the flow and click the **Debug&#x20;**&#x69;con.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wI_bbReMPplhSo_AuY11c_image.png "Flows canvas debug section")
2. Click the **Inject Node** button to run queries after writing them.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Z2IuIkT-ueFYEUYj2xY_3_debug-message17.png" size="80" width="900" height="149" position="center" caption="The output result for mysql query" showCaption="true"}

# Example Queries

Review the following example queries.&#x20;

## Create a Table

```mysql
CREATE TABLE Example (

id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(255)

);
```

## Insert Values

```mysql
INSERT INTO Example (name)

VALUES ("Jane"),("John"),("Chris");
```

## Read the Inserted Values

```mysql
SELECT * FROM Example;
```

## Update Inserted Values

```mysql
UPDATE Example
SET name = "Christine"
WHERE name = "Chris";
```

## Delete Values

```mysql
DELETE FROM Example WHERE name = "Christine";
```


[title] Use the Conversion Function
[path] How-To-Guides/Analytics Guides/

You can use the Conversion processor to convert commonly used units.

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/rpfDaY0DIL4?si=tVN9sfaIXSB1nrCA&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

You have the following base conversion options:

- timestamp -> local time&#x20;
- timestamp -> UTC&#x20;
- Celsius -> Fahrenheit&#x20;
- Fahrenheit -> Celsius&#x20;
- degree -> radian&#x20;
- radian -> degree&#x20;
- degree -> gon&#x20;
- gon -> degree&#x20;
- radian -> gon&#x20;
- gon -> radian

# User Scenarios

Review the following scenarios for converting several tag values. For these scenarios, you will simulate data coming from a PLC and make the following conversions.&#x20;

## User Scenario 1

You have multiple manufacturing sites across several time zones. For monitoring and analysis purposes, you'd like to synchronize your data based on time measurements for all sites.&#x20;

You will then complete the following conversion:

- timestamp -> UTC&#x20;

## Use Scenario 2

Some of your manufacturing equipment uses Fahrenheit for temperature control, while other equipment uses Celsius. This requires you to standardize the temperature measurements of all equipment for consistent and efficient process control.&#x20;

You will then complete the following conversion:

- Fahrenheit -> Celsius

## Use Scenario 3

Your manufacturing site has CNC machines, which use toolpaths defined in degrees. However, some trigonometric calculations and algorithms used in CNC programming require angular measurements to be in radians.&#x20;

You will then complete the following conversion:

- degree -> radian

# Step 1: Add a Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tags. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more. Each tag will represent one of the user scenarios noted above.&#x20;

## Tag 1 (User Scenario 1)

- **Name**: Select **S - Random value generator**.
- **Value Type**: Select **int64**.&#x20;
- **Polling Interval**: Enter **5**.
- **Tag Name**: Enter **Timestamp**.&#x20;

## Tag 2 (User Scenario 2)

- **Name**: Select **S - Random value generator**.
- **Value Type**: Select **int64**.&#x20;
- **Polling Interval**: Enter **5**.
- **Tag Name**: Enter **Temperature**.&#x20;
- **Min\_value**: Enter **75**.
- **Max\_value**: Enter **75**.

## Tag 3 (User Scenario 3)

- **Name**: Select **S - Random value generator**.
- **Value Type**: Select **int64**.&#x20;
- **Polling Interval**: Enter **5**.
- **Tag Name**: Enter **Angle**.&#x20;
- **Min\_value**: Enter **65**.
- **Max\_value**: Enter **65**.

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tags you previously created.&#x20;

**To create the analytics flow:**

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.&#x20;
4. In the **Topic** field, click the search icon, select the device you previously created, and then select the alias topic for the Timestamp tag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cPrHzIeJ18g7uszL1jCux_createprocessor01.png "Create a processor dialog box")
5. Click **Save**.&#x20;
6. Click **Add processor** again and select **Conversion**.&#x20;
7. In the **Conversion&#x20;**&#x66;ield, select **timestamp to UTC**, and click **Save**.&#x20;
8. Connect the two processors, select **Events**, and enter a definition of **timestamp&#x20;**&#x66;or the connection.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XBb8yNuNyguyGyb6lMx2X_conversion-timestamp-flow.png" size="80" width="831" height="408" caption="Processor flow for Timestamp tag" position="center" showCaption="true"}
9. Repeat steps 2-8 for the Temperature tag and configure the following:
   - In the *DataHub Subscribe* processor, select the alias topic for the Temperature tag.&#x20;
   - In the *Conversion* processor, select a conversion of **Celsius -> Fahrenheit**.&#x20;
   - When you connect the two processors, select **Events&#x20;**&#x61;nd enter a definition of **temperature** for the connection.&#x20;
10. Repeat steps 2-8 for the Angle tag and configure the following:
    - In the *DataHub Subscribe* processor, select the alias topic for the Angle tag.&#x20;
    - In the *Conversion* processor, select a conversion of **degree -> radian**.&#x20;
    - When you connect the two processors, select **Events&#x20;**&#x61;nd enter a definition of **angle** for the connection.&#x20;
11. On the analytics canvas, click **Save**.&#x20;

The configured analytics flows should look like the following.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fHvSLRvnctAa18I9M8pZ6_image.png" size="80" width="930" height="510" position="center" caption="Completed analytics flows canvas" showCaption="true"}

# Step 4: View Conversion Data

You can view data on the analytics canvas by clicking the **View&#x20;**&#x69;con in each *Conversion&#x20;*&#x70;rocessor.&#x20;



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PpKCH2b8ov5WDKRiMAImO_image.png" size="80" width="930" height="510" caption="View icons for Conversion processors" position="center" showCaption="true"}

## Conversion Data for Timestamp Tag11.

A value for the time the data was generated in UTC is included in the payload.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/X2SXhnSGvK2oqodbz_vZc_image.png" size="80" width="950" height="788" caption="Time in UTC included in payload" position="center" showCaption="true"}

## Conversion Data for Temperature Tag

The temperature value of 75 Celsius is converted to 167 Fahrenheit.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vnXJA-VENBBHVQF65QG_U_image.png" size="80" width="926" height="722" caption="Converted value from Celsius to Fahrenheit" position="center" showCaption="true"}

## Conversion Data for Angle Tag

The value of 65 degrees is converted to 1.1344640137963142 radian.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3gzjEqvYUheYVzoqma8Lo_image.png" size="80" width="925" height="722" caption="Converted value from degrees to radian" position="center" showCaption="true"}


[title] Generic MQTT Integration Guide (HiveMQ)
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and an MQTT broker using HiveMQ.&#x20;

HiveMQ's MQTT broker is designed for cloud native deployments to make optimal use of cloud resources. The use of MQTT reduces network bandwidth required for moving data.

# Before You Begin

You must download [MQTT Explorer](http://mqtt-explorer.com/).

Visit the [MQTT Dashboard](http://www.mqtt-dashboard.com/) to find the settings required in the MQTT Explorer application.

# Step 1: Connect MQTT Explorer

1. Open MQTT Explorer.
2. Click the **Add&#x20;**&#x69;con to create a new connection.&#x20;
3. In the **Name** field, enter a name for the connection.&#x20;
4. Click the toggle for **Encryption (tls)** so it's not selected.&#x20;
5. In the **Host&#x20;**&#x66;ield, enter **broker.hivemq.com**.&#x20;
6. In the Port field, verify that **1883&#x20;**&#x69;s entered.&#x20;
7. Click **CONNECT**.

# Step 2: Add the Generic MQTT Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **MQTT - Generic&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Enter **broker.hivemq.com**.&#x20;
- **Port**: Confirm that the default value **1883** is entered.&#x20;
- **Client ID**: Enter **1**.&#x20;
- **Username**: Leave this field blank.&#x20;
- **Password**: Leave this field blank.&#x20;
- **QoS**: Select **0**.&#x20;
- **Parallel Publish Count**: Enter **100**. The number of messages being published simultaneously. Once the defined limit has been reached, subsequent messages are silently dropped.&#x20;
- **Integration Topic**: Enter **mqtt\_topic**.&#x20;
- **LWT topic**: The topic for MQTT's Last Will and Testament feature. You can leave this value blank.
- **LWT payload**: The payload for MQTT's Last Will and Testament feature. You can leave this value blank.
- **LWT payload type**: The payload type for MQTT's Last Will and Testament feature. The options are *string&#x20;*&#x61;nd *base64*.&#x20;
- **LWT QoS**: The Quality of Service value for MQTT's Last Will and Testament feature. The default value is **1**.&#x20;
- **LWT retained**: Select this check box to retain the value for MQTT's Last Will and Testament feature.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 3: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lr3QYFh3sAl8wRZdPk1vN_mqttgeneric.png" size="60" width="369" height="345" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 4: Add Outbound/Inbound Topic to Connector

**To add the outbound and inbound topics to the MQTT Connector:**

1. Navigate to **Integration**.&#x20;
2. Click the *MQTT - Generic&#x20;*&#x63;onnector tile.&#x20;
3. Click the **Topics&#x20;**&#x74;ab.&#x20;
4. Click the **Add a new subscription** icon.&#x20;
   Th&#x65;*&#x20;Data Integration&#x20;*&#x64;ialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Aj9tTx4BUmgxzEsVkWk3l_addnewsubicon.png" size="80" width="1279" height="325" caption="Add a new subscription icon" position="center" showCaption="true"}
5. Configure the following parameters.&#x20;
   - **Data Direction**: Select **Local to Remote - Outbound**.&#x20;
   - **Local Data Topic**: Enter a local data topic name.&#x20;
   - **Remote Data Topic**: Confirm the topic where the data is pushed. This is th&#x65;*&#x20;Integration Topic&#x20;*&#x76;alue for the connector.&#x20;
   - **Enable**: Select the toggle to enable the topic.&#x20;
6. Click **OK&#x20;**&#x74;o add the topic.&#x20;
7. Click the **Add a new subscription** icon again to add the inbound topic.
8. Configure the following parameters.&#x20;
   - **Data Direction**: Select **Remote to Local - Inbound**.
   - **Local Data Topic**: Enter a local data topic name. For example: **local\_topic**. &#x20;
   - **Remote Data Topic**: Confirm the topic where the data is pushed. This is th&#x65;*&#x20;Integration Topic&#x20;*&#x76;alue for the connector.&#x20;
   - **Enable**: Select the toggle to enable the topic.&#x20;
9. Click **OK&#x20;**&#x74;o add the topic.&#x20;

# Step 5: Verify Connection in MQTT Explorer

You can verify the connection in MQTT Explorer by subscribing to the topics for the connector.

## Step 5a: Add Topic to MQTT Explorer

You will need to add the topic name you configured for the connector in MQTT Explorer.&#x20;

**To add the topic to MQTT Explorer:&#x20;**

1. Open MQTT Explorer.&#x20;
2. Click **DISCONNECT**.&#x20;
3. Select the connection you created earlier.&#x20;
4. Click **ADVANCED**.&#x20;
5. In the **Topic&#x20;**&#x66;ield, enter the Integration Topic value you configured in Step 2. In this guide, the value is **mqtt\_topic**.&#x20;
6. Verify the QoS value is **0**.&#x20;
7. Click **+ADD**.&#x20;
8. Click **BACK**.&#x20;
9. Click **SAVE**, and then **CONNECT**.&#x20;

## Step 5b: Verify Connection in Flows Manager

You can test the connection by sending a message through the Flows Manager.&#x20;

**To test the connection in Flows Manager:**

1. In Litmus Edge, navigate to **Flows Manager**.&#x20;
2. Click the **Go To Flow Definition** icon for a selected Flows Manager.&#x20;
   The *Flow canvas* opens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Y6H9bnSXYEshKVHY7EUCY_gotoflowdefinition.png" size="80" width="1203" height="421" caption="Go To Flow Definition icon" position="center" showCaption="true"}
3. From the flow canvas, drag the **DataHub Publish** node (DataConnector section) and **Inject&#x20;**&#x6E;ode (Common section) to the canvas.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RZawqMsuHHTpvY8MEgnBf_datahub-pub-and-inject-nodes.png" size="80" width="850" height="587" caption="The DataHub Publish and Inject nodes" position="center" showCaption="true"}
4. Connect the two nodes.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AAATdRNUdC-pGwdpwlufS_inject-publish-nodes-connected.png" size="80" width="840" height="603" caption="The Inject node and DataHub Publish node connected" position="center" showCaption="true"}
5. Double-click the **DataHub Publish** node.&#x20;
   The *Edit DataHub Publish Node* dialog box appears.
6. In the **Topic&#x20;**&#x66;ield, enter the topic name you configured for the outbound topic you created for the connector.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/p4lMLgTf0dqt3oN_Gjtf4_outbound-topic-name.png" size="80" width="1236" height="476" caption="The local topic name for the outbound topic" position="center" showCaption="true"}
7. If needed, configure the Datahub Publish connection. See [Configure Connector Nodes](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
8. Click **Done**.&#x20;
9. Double-click the **Inject&#x20;**&#x6E;ode.&#x20;
   The *Edit Inject Node* dialog box appears.
10. In the **msg.payload** field, select **string&#x20;**&#x61;nd ente&#x72;**&#x20;test MQTT connection**.&#x20;
11. In the **msg.topic&#x20;**&#x66;ield, enter the topic name you configured for the outbound topic you created for the connector.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/f30O7kK1iIVIBwHiTqDzi_inject-node-properties.png" size="70" width="577" height="365" caption="Inject node properties" position="center" showCaption="true"}
12. Click **Done**, and then **Deploy**.&#x20;
13. Click the Inject node button to send the "test MQTT connection" message to the topic.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tm_kY2RGCzwGf8VZZ4s1p_inject-button.png" size="80" width="869" height="584" position="center" showCaption="false"}
14. Verify that the message displays in MQTT Explorer.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/S8w5UzAv62c8Y4rLGQjl-_mqtt-explorer-message.png" size="80" width="999" height="677" caption="Message sent from the Flows Manager to the MQTT topic" position="center" showCaption="true"}


[title] Use the Rounding Function
[path] How-To-Guides/Analytics Guides/

You can use the Rounding processor to round off the collected data to the nearest decimal place.

# Understanding Rounding Methods

You have the following rounding options:

- **roundNearest:&#x20;**&#x54;his method returns a rounded value based on the number of decimal digits configured. For instance, if you set two decimal digits and the value is 1.5677, the rounded value will be 1.57.
- **roundUp:&#x20;**&#x41; method that rounds up the value to the specified number of decimal digits. For example, if you specify two decimal digits and the value is 1.3221, the rounded up value would be 1.33.
- **roundDown:&#x20;**&#x41; method that rounds down the value to the specified number of decimal digits. For example, if you specify two decimal digits and the value is 1.3221, the rounded value is 1.32.
- **roundEven:&#x20;**&#x54;his method rounds to the nearest even integer in cases of rounding ties (when both integers are equidistant, e.g. 1.5). In any other case, it acts as a round nearest function. If the value is 1.3221 and 1.5, the rounded even value is 1 and 2, respectively, as the nearest even integer.

# **User Scenario**

Review the following scenario for rounding off the tag values. Then, you will simulate data from a PLC and make the following rounding conversions.

Some of your manufacturing sites with multiple PLCs collect data with high precision. You can round off the collected data for easier aggregation, computation, visualization, comprehension, and communication.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox. 

# **Step 2: Add Tags**

After connecting the device, [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create the following rounding tags. Each tag will represent one of the round function options noted above. 

## **Tag 1: RoundNearest**

- **Name**: Select **S - Random value generator**
- **Value Type**: Select **float64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **RoundNearest**
- **Min\_value**: Enter **1.523**
- **Max\_value**: Enter **1.523**

## **Tag 2: RoundUp**

- **Name**: Select **S - Random value generator**
- **Value Type**: Select **float64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **RoundUp**
- **Min\_value**: Enter **1.523**
- **Max\_value**: Enter **1.523**

## **Tag 3: RoundDown**

- **Name**: Select **S - Random value generator**
- **Value Type**: Select **float64** 
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **RoundDown**
- **Min\_value**: Enter **1.523**
- **Max\_value**: Enter **1.523**

## **Tag 4: RoundEven**

- **Name**: Select **S - Random value generator**
- **Value Type**: Select **float64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **RoundEven**
- **Min\_value**: Enter **1.523**
- **Max\_value**: Enter **1.523**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tags you previously created. 

**To create an analytics flow with the Rounding function:**

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.&#x20;
4. In the **Topic&#x20;**&#x66;ield, click the *search&#x20;*&#x69;con, select the device you previously created, and then select the alias topic for the **RoundNearest&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.&#x20;
6. Click **Add processor** again and select **Rounding**.
   The following information describes this function:
   - For **Digits**, enter the number of digits for which you would like to round.
   - Entering `0` ignores all floating point values and gives the integer value.
   - For **Method**, select **roundNearest.**
7. Click **Save**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/REU_V4_1fss0zw5KnSw8-_image.png" size="70" width="565" height="481" position="center" caption="Rounding Pocessor dialog box" showCaption="true"}
8. Connect the two processors, select **Events**, and enter a definition of **roundnearest&#xA0;**&#x66;or the connection.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VB-r6QBH3UaMmbMOMDwkY_image.png "Processor flow for roundnearest tag")
9. Repeat steps 2-8 for the round-up tag and configure the following:
   - In the *DataHub Subscribe* processor, select the alias topic for the **RoundUp&#x20;**&#x74;ag. 
   - In the *method dropdown*, select **roundUp.** 
   - When you connect the two processors, select **Events&#xA0;**&#x61;nd enter a definition of **roundup&#xA0;**&#x66;or the connection.  
10. Repeat steps 2-8 for the round-down tag and configure the following: 
    - In the *DataHub Subscribe* processor, select the alias topic for the **RoundDown&#x20;**&#x74;ag.
    - In the *method dropdown*, select **roundDown**. 
    - When you connect the two processors, select **Events&#xA0;**&#x61;nd enter a definition of **rounddown&#xA0;**&#x66;or the connection. 
11. Repeat steps 2-8 for the round-even tag and configure the following:
    - In the *DataHub Subscribe* processor, select the alias topic for the **RoundEven&#x20;**&#x74;ag. 
    - In the *method dropdown*, select **roundEven**. 
    - When you connect the two processors, select **Events&#xA0;**&#x61;nd enter a definition of **roundeven&#xA0;**&#x66;or the connection. 
12. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3tnb2XOJos_nUZUHoYMcQ_image.png "Completed Rounding Function in Analytics flows canvas")

# Step 4: View Rounded Data

You can view data on the analytics canvas by clicking the **View&#xA0;**&#x69;con in each *Rounding&#xA0;*&#x70;rocessor. 

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TutbPg6uvAhfg2OFFry83_image.png "View icons for Rounding processors")

## Round Data for RoundNearest Tag

The *roundNearest* method returns **1.52** as the answer when **1.523&#x20;**&#x69;s used as an input value.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YqBVPeUJotXwJfHSGWmRN_image.png "Rounding to nearest decimal")

## Round Data for RoundUp Tag

The *roundUp&#x20;*&#x6D;ethod returns **1.53** as the answer when **1.523&#x20;**&#x69;s used as an input value.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4oD4Qw82NVdEms6TtAcjM_image.png "Rounding up to nearest decimal")

## Round Data for RoundDown Tag

The *roundDown&#x20;*&#x6D;ethod returns **1.52&#x20;**&#x61;s the answer when **1.523&#x20;**&#x69;s used as an input value.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ssd57nRfs3ukrdeMB42f0_image.png "Rounding down to nearest decimal")

## Round Data for RoundEven Tag

The *roundEven&#x20;*&#x6D;ethod returns **2** as the answer when **1.523&#x20;**&#x69;s used as an input value.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xcv9AA8SXU0w9Yw8PTH30_image.png "Rounding even to nearest decimal")


[title] Use the Combination Processor Function
[path] How-To-Guides/Analytics Guides/

You can use the Combination processor function to combine fields from different input processors into a single JSON string.

# **Understanding Combination Types**

You have the following combination types:

- **Combine selected fields:** This option allows you to combine the selected number of fields from different input processors into a single JSON string.&#x20;
- **Combine all fields:** This option allows you to combine all fields from different input processors into a single JSON string.&#x20;

# **User Scenario**

Review the following scenario for the combination processor function. Then, you will simulate PLC data and create combinations using input processors.

In your manufacturing plant, various PLCs control the production process for assembly lines, robotic arms, conveyor belts, and environmental controls. With the Combination Processor, you can merge the data from multiple or all PLCs into a single JSON string to get a complete view of the plant's operations.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tags. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more. Each tag will represent one of the combination types mentioned above.

## **Tag 1: Combine\_selected\_fields**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **int64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **Combine\_selected\_fields**

## **Tag 2: Combine\_all\_fields**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **int64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **Combine\_all\_fields**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tags you previously created. Follow the steps for either Step 3a or 3b, depending on whether you want to combine selected or all fields.&#x20;

**To create an analytics flow with the Combination Processor function:**

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **Combine\_selected\_fields&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Repeat steps 2-5 to add another *DataHub Subscribe* node. Select the alias topic for the **Combine\_all\_fields&#x20;**&#x74;ag.&#x20;

## &#x20;Step 3a: Configure JSON String for Selected Fields

1. Click **Add processor** again and select **Combination Processor**.
   The following information defines this function:
   - **Combination Type:** Select **combine selected fields** from the drop-down menu.
   - **What Timestamp to Take?:&#x20;**&#x53;elect **fresh timestamp** from the drop-down menu.
   - **Fields to Combine:&#x20;**&#x54;he fields to combine are defined a&#x73;**&#xA0;wire definition\_fieldName.&#x20;**&#x45;nter **combineselect\_tagName, combineselect\_value, combineall\_tagName, combineall\_value,&#x20;**&#x77;ith a comma as the separator.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NjeODEEcC4UqgicOF7Nnw_image.png "Combination Pocessor dialog box")
3. Connect the DataHub Subscribe processor (tag: *Combine\_selected\_fields)* to the Combination processor with a wire and enter the definition of **combineselect&#x20;**&#x66;or the connection.
4. Connect the DataHub Subscribe processor (tag: *Combine\_all\_fields*) to the Combination processor with a wire and enter a definition of **combineall&#x20;**&#x66;or the connection.
5. On the analytics canvas, click **Save**.

## Step 3b: Configure JSON String for All Fields

1. Click **Add processor** again and select **Combination Processor**.
   The following information defines this function:
   - **Combination Type:** Select **combine all fields** from the drop-down menu.
   - **What Timestamp to Take?:&#x20;**&#x53;elect **fresh timestamp** from the drop-down menu.
   - **Fields to Combine:&#x20;**&#x59;ou may skip this field for this combination type.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/w26zM7NVOstD5fnXsVUlZ_image.png "Combination Pocessor dialog box")
3. Connect the DataHub Subscribe processor (tag: *Combine\_selected\_fields)* to the Combination processor with a wire and enter the definition of **combineselect&#x20;**&#x66;or the connection.
4. Connect the DataHub Subscribe processor (tag: *Combine\_all\_fields*) to the Combination processor with a wire and enter a definition of **combineall&#x20;**&#x66;or the connection.
5. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following after completing either Step 3a or Step 3b.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iV6uFsC1u7nUIw2FHvtDt_image.png "Completed Analytics Flow")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Combination* processor to view combined field JSON strings on the analytics canvas.

## View Combined JSON String for Selected Fields

The *Combination&#x20;*&#x70;rocessor returns a JSON string with the fields `combineselect_tagName`, `combineselect_value`, `combineall_tagName`, and `combineall_value`.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/v-7Lh-gRTywVNdGu4qxxy_image.png "Selected Fields in Output")

## View Combined JSON String for All Fields

The *Combination&#x20;*&#x70;rocessor returns the full JSON string with all the fields from both input processors.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jopnvNW3f5U6Bryatv3Gp_image.png "All Fields in Output")


[title] Use the Normalization Processor Function
[path] How-To-Guides/Analytics Guides/

You can use the Normalization processor function to eliminate redundant data and ensure that collected PLC data is on the same scale. Normalization also eliminates undesirable characteristics like Insertion, Update, and Deletion Anomalies.

The value range is observed, and the next value is normalized to a range between 0 and 1 based on the chosen method. The values use a moving window algorithm and are placed between 0 and 1 based on the previous window.

# **Understanding Different Normalization Types**

You have the following normalization types:

- **Min-Max:&#x20;**&#x53;cale the data points between minimum and maximum values in that window. This will ensure that all the transformed values fall between 0 and 1.
- **Average Standard Deviation:&#x20;**&#x53;tandardize features in the moving window by subtracting the mean and dividing by the standard deviation. This results in features with an average of zero and a variance of one.

# **User Scenario**

Review the following scenario for the normalization processor function. Then, you will simulate PLC data and normalization outputs using an input processor.

PLC sensors in a beverage bottling plant monitor variables like liquid temperature, fill level, and bottle placement speed. Applying the normalization function to these readings will help to scale the data points within a 0-1 range for each batch. This uniform scaling is crucial for the machine learning model used in quality control, as it compares current production metrics with historical data to detect and rectify any deviations, ensuring consistent product quality and optimal production efficiency.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tags. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: tag1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **tag1**
- **Min\_value**: Enter **101**
- **Max\_value**: Enter **199**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tag you previously created. Follow the appropriate step out of 3a or 3b based on the two normalization types you want to use.

**To create an analytics flow with the Normalization Processor function:**

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **tag1**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.

## Step 3a: Configure Min-Max **Normalization**&#x20;

1. Click **Add processor** again and select **Normalization&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Mode**: Select the **Min-Max** normalization type from the drop-down menu.
   - **Window Size:&#x20;**&#x45;nter the number of values you want the function to consider.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4gmVV6Z2YIilbqXMgH4Yw_image.png "Normalization dialog box")
3. Connect the DataHub Subscribe processor (tag: *tag1*) to the Normalization processor with a wire and use the **events** connection.
4. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/XcdTnR963am5Yzx8cKyGR_image.png "Completed Normalization flow canvas")

## Step 3b: Configure Average-Standard Deviation **Normalization**&#x20;

1. Click **Add processor** again and select **Normalization&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Mode**: Select the **Average-Standard Deviation** normalization type from the drop-down menu.
   - **Window Size:&#x20;**&#x45;nter the number of values you want the function to consider.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/q2Go2HgTPF1v6IIjoFuum_image.png "Normalization dialog box")
3. Connect the DataHub Subscribe processor (tag: *tag1*) to the Normalization processor with a wire and use the **events&#x20;**&#x63;onnection.
4. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1VK1DIM9XEn5-Q0xUyF8H_image.png "Completed Normalization flow canvas")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Normalization&#x20;*&#x70;rocessor to view the output values.

## View Min-Max Normalization Output

The normalization function normalizes the last 5 values from the defined *tag1*, and the next value is again placed between 0 and 1 based on the previous window.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CNXufZ8NLTsMSwWhEg27C_image.png "Min-Max Normalization Output")

## View Average-Standard Deviation Normalization Output

The normalization function normalizes the last 5 values from the defined *tag1*, and the next value is again placed between 0 and 1 based on the previous window.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/i61iTf514dmby6HSZGqa4_image.png "Average-Standard Deviation Normalization Output")


[title] Use the Production Time and Cycle Time Ratio KPI
[path] How-To-Guides/Analytics Guides/

The **Production Time and Cycle Time Ratio&#x20;**&#x4B;PI mainly deals with production time and the ideal production cycle.&#x20;

You can utilize this KPI to monitor the production cycle time compared to an ideal production cycle time and keep a record of how long it takes to complete the production cycle with a total number of manufactured units in that cycle.

For this KPI, two input definitions are required: `manufactureStart` and `manufactureEnd`&#x20;

These are event triggers that are activated at the start and end of the manufacturing cycle.

# User Scenario

Review the following scenario for the production time and cycle time ratio KPI processor. Then, using an input processor, you will simulate PLC data and calculate the cycle time ratio and production time.

In a manufacturing plant, the Production Time/Cycle Time Ratio KPI can be used to keep track of the time it takes to complete production. A production manager can use the KPI to ensure that the time taken to finish manufacturing aligns with the set benchmarks used to compare the actual production cycle time to the ideal standard. This can help the team identify areas for improvement and make the production process more efficient.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: manufactureS**

- **Name**: Select **S - Random value generator.**
- **Value Type:** Select **float64.**
- **Polling Interval**: Enter **1.**
- **Tag Name**: Enter **manufactureS.**

## **Tag 2: manufactureE**

- **Name**: Select **S - Random value generator.**
- **Value Type:** Select **float64.**
- **Polling Interval**: Enter **1.**
- **Tag Name**: Enter **manufactureE.**

# Step 3: Create Analytics Flow

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Production Time and Cycle Time Ratio function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the *Topic* field, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for tag1: **manufactureS**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png" size="80" width="1142" height="604" position="center" caption="Create a Processor dialog box" showCaption="true"}
5. Click **Save**.
6. Repeat steps 2-5 to add another *DataHub Subscribe* processor for the **manufactureE&#x20;**&#x74;ag.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4q-fTlpRdyglOxxOXNBcX_image.png" size="70" width="380" height="285" position="center" caption="Canvas flow with two DataHub Subscribe processor" showCaption="true"}
7. Click **Add processor** again and select the **Production Time and Cycle Time Ratio** processor.
   The following information defines this function:
   - **Manufacture Start From & Manufacture Start To:&#x20;**&#x49;f your input changes *Manufacture Start From* value to *Manufacture Start To* value, it will trigger the start of the manufacturing cycle.
   - **Manufacture End From & Manufacture End To:&#x20;**&#x49;f your input changes *Manufacture End From* value to *Manufacture End To* value, it will trigger the end of the manufacturing cycle.
   - **Ideal Cycle Time:&#x20;**&#x45;nter the standard production cycle time in seconds.
   - **Time Interval:** If the tag publishes at the expected interval, it is better to disable this timer by entering **0** in the field.
   - Click **Save**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZhCQLCeANOPABhLtVYtow_image.png" size="80" width="838" height="748" position="center" caption="Edit a Processor dialog box" showCaption="true"}
8. Connect the *DataHub Subscribe* processor (tag: *manufactureS*) to the *Production Time and Cycle Time Ratio* processor with a wire. Use the **Events** connection and enter a definition of **manufactureStart&#x20;**&#x66;or the connection.
9. Repeat step 8 for tag: *manufactureE&#x20;*&#x61;nd enter a definition of **manufactureEnd&#x20;**&#x66;or the connection.
10. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Cf3Lju5BItUm7Vgudfyus_image.png" size="80" width="626" height="380" position="center" caption="Completed Flow Canvas" showCaption="true"}

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Production Time and Cycle Time Ratio* processor to view the output values.

In the output, you will find the total count of manufactured units along with the production time and the ratio of the current cycle time to the production time.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Q3I5hTYOPEIr1bvLdzI9__image.png "Output of Production Time and Cycle Time Ratio processor")


[title] Use the Statistical Prediction Function
[path] How-To-Guides/Analytics Guides/

You can use the Statistical Prediction function to make future value predictions by applying the Fast Fourier Transform (FFT) on time-series signals.

# **User Scenario**

Review the following scenario for the statistical prediction processor function. Then, using an input processor, you will simulate PLC data and predict future data from the window of generated values.

In a manufacturing plant, you can use the Statistical Prediction Function to predict future equipment failures. The function analyzes sensor data from the equipment and generates predictions based on past performance. The maintenance team uses these predictions to proactively schedule repairs and avoid costly downtime.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: input1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **1**
- **Tag Name**: Enter **input1**
- **Min\_value**: Enter **1**
- **Max\_value**: Enter **25**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Statistical Prediction Processor function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **input1&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select the **Statistical Prediction&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Window Size:** Enter a value that represents the range to observe before making each prediction. For this example, we input a value of **10**.
   - **Number of Predictions**: Enter a value to determine how many predictions you want. For this example, we input a value of **2**.
   - **Frequency Difference:** Enter a value to represent the sampling rate of discretization. For this example, we input a value of **1**.
   - **Number of Harmonics:&#x20;**&#x45;nter a value to represent the number of waves added to the fundamental wave to reach the desired signal. For this example, we input a value of **4**.
   - For now, the polling interval of the subscription tag is assumed to be 1 second.
   - Click **Save**.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/r1kq2jK8wVTc3RtPSsp-v_image.png "Edit a Processor dialog box")
7. Connect the *DataHub Subscribe* processor (tag: *input1*) to the *Statistical Prediction* processor with a wire and use the **events&#x20;**&#x63;onnection.
8. On the analytics canvas, click **Save**.
   The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/I_Chy7cbbx5IGFISkR9PJ_image.png "Completed Flows Canvas")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Statistical Prediction&#x20;*&#x70;rocessor to view the output values.

Before you can see any output, the input window size needs to be filled. After that, the output will include the prediction along with its timestamp.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GVPiTHRTtGlyLAC5JBqhj_image.png "Output of Statistical Prediction")


[title] Use the Anomaly Detection Function
[path] How-To-Guides/Analytics Guides/

The Anomaly Detection function applies the three-sigma rule to identify outliers by comparing data points against a dynamic threshold of standard deviations from the mean, allowing for real-time adjustment to emerging patterns.

This function operates by maintaining a rolling window of data, calculating the average and standard deviation within this window, and flagging values that deviate beyond the user-defined standard deviation range as anomalies.

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/6jTxC8lPruw?si=DBqH2K5k9VS0QOMi&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

Review the following scenario for the anomaly detection processor function. Then, using an input processor, you will simulate PLC data and detect anomalies from the window of generated values.

In a large-scale manufacturing factory, the Anomaly Detection function is used to monitor the machine's temperatures. It calculates a moving average and standard deviation of temperature readings, flagging any readings that significantly deviate as potential cooling system failures. By defining the number of standard deviations from the average as the threshold for normal operation, factory engineers can quickly identify and respond to overheating risks, ensuring site reliability and uptime.&#x20;

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: input1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **1**
- **Tag Name**: Enter **input1**
- **Min\_value**: Enter **1**
- **Max\_value**: Enter **50**

# Step 3: Create Analytics Flow

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Anomaly Detection Processor function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **input1&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select the **Anomaly Detection&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Window Size:** Enter a value that represents the range to observe before making each prediction. For this example, we input a value of **100**.
   - **Deviations:&#x20;**&#x45;nter the number of standard deviations that would be considered normal, making everything outside that definition anomalous data. For this example, we input a value of **3**.
   - **Topic Reset:** Enable this option to reset the function on topic change.
   - **Control Chart Mode:&#x20;**&#x49;f this option is enabled, there will be no modifications done to the moving window before calculation.
   - Click **Save**.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pkhRil8lk1mMfSBfTievG_image.png "Edit a Processor dialog box")
7. Connect the *DataHub Subscribe* processor (tag: *input1*) to the *Anomaly Detection&#x20;*&#x70;rocessor with a wire and use the **events&#x20;**&#x63;onnection.
8. On the analytics canvas, click **Save**.
   The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/amJ_24VrckVKw6ER__VDW_image.png "Completed Flows Canvas")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Anomaly Detection&#x20;*&#x70;rocessor to view the output values.

The output describes a situation where the current value of **38.31&#x20;**&#x69;s well above the lower limit of **-35.38&#x20;**&#x61;nd below the upper limit of approximately **138.40**, suggesting no anomaly is detected at this timestamp within the moving average of **51.51** and a standard deviation of **28.96**.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cqbWuUEZ5Taj80xNAKwaQ_image.png "Output of Anomaly Detection Function")


[title] Work with MongoDB Databases
[path] How-To-Guides/Flows Guides/

You can use Flows to establish a connection with the MongoDB database and complete  operations on it.

# Step 1: Install MongoDB in Litmus Edge

**To install MongoDB in Litmus Edge:**

1. Navigate to **Applications&#x20;**> **Marketplace**.
2. Click **Marketplace&#x20;**&#x6C;ist and select *Default Marketplace Catalog*.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5GLKTZ-bbTSqESXmybUjh_image.png "Applications marketplace page")
3. Search and click the **MongoDB&#x20;**&#x74;ile.&#x20;
   - **Installation script version:&#x20;**&#x46;rom the drop-down list, select **latest**.&#x20;
   - **Name:** Enter a name for the application.
   - Leave the other fields with their default values.&#x20;
4. Click **Launch**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vrG2Yx1ZGHXelFeR042G4_image.png" size="70" width="945" height="858" position="center" caption="MongoDB configuration dialog box" showCaption="true"}
5. Navigate to **Applications > Catalog Apps&#x20;**&#x74;o ensure the application is running successfully.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nBuRnJRiZNobeQAbKfAR2_image.png "Running MongoDB application")

## Troubleshooting

If you have any issues installing mongoDB, do the following:

- Check **System** > **Info** to make sure that you have enough space on your edge device.
- Make sure that you do not have any network connectivity issues.
- Navigate to **Applications&#x20;**> **Catalog Apps** and click the **MongoDB** application tile to view the logs. Review any errors.&#x20;

# Step 2: Create Flow

To start creating the flow in Litmus Edge, navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow. See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.

**You can create flows with MongoDB nodes to do the following:**

- Read the inserted values
- Update the values
- Remove the values from the database

There are three MongoDB nodes available on the flow canvas.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2QDyqFWawOThFvOCmimVZ_image.png" size="80" width="650" height="767" caption="Available MongoDB nodes" position="center" showCaption="true"}

- **Mongodb in**: Allows simple queries such as *find&#x20;*&#x61;nd *count*.&#x20;
- **Mongodb out**: Allows operations such as *insert*, *update*, and *remove*.&#x20;
- **Mongodb3 in**: Allows more complex operations such as *mapreduce*.&#x20;

## Configure MongoDB Node

You will first need to configure a database connection for the MongoDB node. You can set up the configuration once and use it for all MongoDB nodes in the same Flows Manager.

**To configure the MongoDB node:**

1. Drag and double-click a **Mongodb3 in&#x20;**&#x6E;ode on the canvas.
   The *Edit mongodb3 in node&#x20;*&#x64;ialog box appears.&#x20;
   - **Server:** Click the **Edit&#x20;**&#x69;con.
   - Configure the **Properties** for the node.&#x20;
     - MongoDB does not require a username or password by default, so you can leave this blank unless you set them previously.
     - **URI**: Enter the IP address for your MongoDB server. It is [mongodb://localhost:\<27017>](mongodb://localhost:\<27017>) if your MongoDB instance is running on the same device as Litmus Edge.
     - Click **Add&#x20;**&#x6F;r **Update**.
       ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jX3av9DyVnmrY2sg1UOdh_image.png" size="60" width="505" height="462" position="center" caption="Mongodb3 in Properties dialog box" showCaption="true"}
2. Click **Done** and then click **Deploy**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fUQx9zWWjXNiGPrVO8IXh_image.png "Flows canvas with mongodb3 in node")

## Insert Values

**To insert new records into a MongoDB database:**

1. From the flow canvas, drag and connect an **Inject&#xA0;**&#x6E;ode, a **Function&#xA0;**&#x6E;ode, and a **Mongodb out** node.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TqeED4VtjUVm6U6Os6D8__image.png "Connected nodes on canvas")
2. Double-click the **Function&#x20;**&#x6E;ode.
   The *Edit function node&#x20;*&#x64;ialog box appears.&#x20;
   - **On Message:** Enter the following:
     `msg.payload = {"column1" : "value1", "column2" : 15}; // Change to be the keys and values appropriate for your database.     `
     `return msg;`
   - Click **Done.**
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KgeQ3uHcy4DjPWivPDeAV_image.png" size="70" width="645" height="415" position="center" caption="Edit function node dialog box" showCaption="true"}
3. Double-click the **Mongodb out&#x20;**&#x6E;ode.
   The *Edit mongodb out node&#x20;*&#x64;ialog box appers. &#x20;
   - **Operation**: Select **insert**.&#x20;
   - **Only store msg.payload object**: Select the checkbox.&#x20;
   - **Collection:&#x20;**&#x45;nter **devicehub**.
   - **Server:** Configure the server setting if needed.
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sfkxeG0211y-Mj3i4EPVb_image.png" size="60" width="505" height="413" position="center" caption="Edit mongodb out node dialog box" showCaption="true"}
4. Click **Deploy.**
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/21a8Eu0oT2QcMT4nlmKTP_image.png "Completed flows canvas")
5. Click the **Inject&#x20;**&#x6E;ode button to insert records into the database.&#x20;
   Each click inserts a new record with a new ID (\_id).&#x20;

## Read All Records

**To retrieve all records from a MongoDB collection:**

1. From the flow canvas, drag and connect an **Inject&#xA0;**&#x6E;ode, a **Mongodb in** node, and a **debug&#xA0;**&#x6E;ode.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WNZSEHVEWXXeeL1cNyy8W_image.png "Connected nodes on canvas")
2. Double-click the **Mongodb in** node.&#x20;
   The *Edit mongodb in node* dialog box appears. &#x20;
   - **Collection**: Enter **devicehub**.&#x20;
   - **Operation**: Select **find**.
   - **Server:** Configure the server setting if needed.
   - Click **Done.**
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KxvsTesEAs2muvfjeHcvR_image.png" size="60" width="560" height="371" position="center" caption="Edit mongodb in node dialog box" showCaption="true"}
3. Click **Deploy&#x20;**&#x61;nd expand the message window beneath the flow.&#x20;
4. Click the **Debug&#x20;**&#x69;con to view the output.
   All the records are seen in the table.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1ts5L5McABuVhnbOmH2Jv_image.png "Completed flows canvas")

## Read Single Record

**To retrieve a single record from a MongoDB collection:**

1. From the flow canvas, drag and connect an **Inject&#xA0;**&#x6E;ode, a **Function&#xA0;**&#x6E;ode, a **Mongodb3 in&#xA0;**&#x6E;ode, and a **Debug&#xA0;**&#x6E;ode.
2. From the flow canvas, drag and connect an **Inject&#xA0;**&#x6E;ode, a **Function&#xA0;**&#x6E;ode, a **Mongodb3 in** node, and a **Debug&#xA0;**&#x6E;ode.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9k0Ii2Wyl2WBUcXLuBIBo_image.png "Connected nodes on canvas")
3. Double-click the **Mongodb3 in&#x20;**&#x6E;ode.&#x20;
   The *Edit mongodb3 in node&#x20;*&#x64;ialog box appears.
   - **Service**: Select **External service**.&#x20;
   - **Server**: Select the **Server&#x20;**&#x79;ou created while configuring the MongoDB node above.
   - **Operation**: Select **findOne**.&#x20;
   - Click **Done.**
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zX3Us1kFajTF7_5jZA3z8_image.png" size="60" width="512" height="414" position="center" caption="Edit mongodb3 in node dialog box" showCaption="true"}
4. Double-click the **Function&#x20;**&#x6E;ode.&#x20;
   The *Edit function node&#x20;*&#x64;ialog box appears.
   - **On Message**: Enter the following:
     `msg.payload = {"column2" : 16} // This line reads all records where column2 is equal to 16.     `
     `return msg;`
   - Click **Done.**
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KOVwk6W6b3PHh8kbNX354_image.png" size="70" width="641" height="322" position="center" caption="Edit function node dialog box" showCaption="true"}
5. Click **Deploy** and expand the message window beneath the flow.
6. Click the **Inject&#x20;**&#x6E;ode button to read the record that matches the specified key-value pair. View the record by clicking the **Debug&#xA0;**&#x69;con.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tgWNt-dGjYJQX9l6nnkbV_image.png "Completed flows canvas")

## Update Values

**To update values in a MongoDB database:**

1. In the flow canvas, drag and connect an **Inject&#xA0;**&#x6E;ode, a **Function&#xA0;**&#x6E;ode, and a **Mongodb out** node.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Wp0bt0KhVigZPYuFUCHsO_image.png "Connected nodes on canvas")
2. Double-click the **Mongodb out** node. &#x20;
   The *Edit mongodb out node&#x20;*&#x64;ialog box appears.
   - **Collection**: Enter **devicehub**.&#x20;
   - **Operation**: Select **update**.&#x20;
   - **Update all matching documents**: Select the check box.
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZAzbKjSy02Yn1DoC3oMdd_image.png" size="60" width="508" height="442" position="center" caption="Edit mongodb out node dialog box" showCaption="true"}
3. Double-click the **Function&#x20;**&#x6E;ode.&#x20;
   The *Edit function node&#x20;*&#x64;ialog box appears.
   - **On Message**: Enter the following:
     `msg.query = {"column2" : 15}; // This line makes the query only update records where column2 is equal to 15.     `
     `msg.payload = {"$set": { "column2": 20 }}; // This line uses the set operator to ensure that the update sets column2 to 20 for all matching records.     `
     `return msg;`
   - Click **Done.**
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JDzg9F11MQm_cbnAj188t_image.png" size="70" width="645" height="357" position="center" caption="Edit function node dialog box" showCaption="true"}
4. Click **Deploy&#x20;**&#x61;nd expand the message window beneath the flow.
5. Click the **Inject&#x20;**&#x6E;ode to perform the update operation.
   The records with column2 value as 15 are updated with 20.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MiNQRUk5M0tpg5XLLdznT_image.png "Completed flows canvas")

## Delete Values

**To delete records from a MongoDB database:**

1. In the flow canvas, drag and connect an **Inject&#xA0;**&#x6E;ode, a **Function&#xA0;**&#x6E;ode, and a **Mongodb out** node.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wCjLZ-qDANXpoTqy1cw78_image.png "Connected nodes on canvas")
2. Double-click the **Mongodb out** node. &#x20;
   The *Edit mongodb out node&#x20;*&#x64;ialog box appears.
   - **Collection**: Enter **devicehub**.&#x20;
   - **Operation**: Select **remove**.&#x20;
   - Click **Done.**
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ji8KZYLX6pcqfVytqUQQT_image.png" size="60" width="560" height="406" position="center" caption="Edit mongodb out node dialog box" showCaption="true"}
3. Double-click the **Function&#x20;**&#x6E;ode.&#x20;
   The *Edit function node&#x20;*&#x64;ialog box appears.
   - **On Message**: Enter the following:
     `msg.payload = {"column2" : 20}; // Makes the remove operation delete all records where column2 equals 20.     `
     `return msg;`
   - Click **Done.**
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/p9dY-4FLkQ5WFOeVgpkhv_image.png" size="70" width="711" height="370" position="center" caption="Edit function node dialog box" showCaption="true"}
4. Click **Deploy** and expand the message window beneath the flow.
5. Click the **Inject&#x20;**&#x6E;ode to perform the remove operation.
   The record with columns equal to 20 are deleted.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gU8LH6pQnivzLL_BbouMe_image.png "Completed flows canvas")


[title] Set Up LDAP Using an OpenLDAP Container
[path] How-To-Guides/Applications Guides/

Litmus Edge allows you to set up an LDAP server for managing user access to Litmus Edge devices, eliminating the need to define users locally on each Litmus Edge device.

# **Before You Begin**

Before completing these steps, make sure to do the following:

- Have access to Litmus Edge version 3.11.1 or later.
- Have basic knowledge of LDAP protocol.

# Step 1: Set Up the OpenLDAP Container

**To set up the OpenLDAP container and access the PHP LDAP Admin UI:**

1. In Litmus Edge, navigate to **Applications&#x20;**> **Containers**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xlLsh-YiIcg7DfBJRZtbQ_image.png "Applications > Containers page")
2. Copy and paste the below commands and click the **Run** button.
   - Command to run the **OpenLDAP server:&#x20;**&#xA;`docker run -dit -p 389:389 -p 636:636 --name my-openldap-container osixia/openldap:latest`
   - Command to run the **web UI** to configure users and groups:
     `docker run -dit --name phpldapadmin-service -p 9080:80 --env PHPLDAPADMIN_LDAP_HOSTS=<IP-OF-MY-OPENLDP-CONTAINER> -e PHPLDAPADMIN_HTTPS=false osixia/phpldapadmin:latest`
     Replace `<IP-OF-MY-OPENLDP-CONTAINER>` with the *IP address* of the openLDAP container.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MiT2g0uVtfuPvcEwjs6LZ_image.png "LDAP docker container images")
3. Once both containers are running, you can access *PHP LDAP Admin UI* by going to `<IP Address of LE>:9080` in your web browser.
   You should see this landing page:
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MsQ7FWWNtxJmlIeUTwxIx_image.png "PHP LDAP Admin UI Landing Page")

# Step 2: Create Users and Groups

To configure the Litmus Edge LDAP container, we need to first create some users and groups on the LDAP server. We will create two users, Alice Smith and Bob Jones, and two groups, `litmus-admin` and `litmus-viewer`.

These LDAP groups will correspond to the *Administrator&#x20;*&#x61;nd *Viewer&#x20;*&#x67;roups in Litmus Edge, respectively.&#x20;

To proceed, we need to *log in* to the LDAP server using the default credentials from the container.

**Login DN:** `cn=admin,dc=example,dc=org`&#x20;

**Password:** `admin`&#x20;

**To log into the PHP LDAP Admin UI:**&#x20;

1. Click the **login&#x20;**&#x62;utton.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Th_tLRLOD_Sngv-syRJ2b_image.png "PHP LDAP Admin UI Landing Page - Login")
2. Enter the default **Login DN** and **Password**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N7GnerPFnbgHXUUlnYOmz_image.png "PHP LDAP Admin UI - Login Dialog Box")
3. Upon successful login, you will see the landing page and an empty tree structure on the left side.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tPLifSCvsVa4az6MbM0oZ_image.png "PHP LDAP Admin UI Landing Page ")

:::hint{type="info"}
**Note:** To keep this guide simple, we will add the groups and users under this root level. However, in an actual LDAP server, the structure is more complicated and contains many subfolders.
:::

## Step 2a: Add Users

**To add users to the LDAP server:**

1. Click the **Globe&#x20;**&#x69;con and then select **Create a child entry**.&#x20;
   The *Create Object* page appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lxnze7qWupISmDdsVr5ff_image.png "PHP LDAP Admin UI Create User Page")
2. From *Templates*, select **Default**.
3. From the ObjectClasses list for the LDAP server container, select **inetOrgPerson**.
4. Click **Proceed >>**
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JmwTeMya3JxD5EhKfzJ16_image.png "PHP LDAP Admin UI Create User Dialog Box")
5. Fill out the basic details for the users:
   - **cn:** asmith
   - **sn:** Smith
   - **givenName:** Alice
   - **employeeNumber:&#x20;**&#x31;2345
   - **Password:&#x20;**\<enter a password>
6. Click **Create Object** and then **Commit**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GPdt1M2U818xctwuXTD5F_image.png "PHP LDAP Admin UI Create LDAP Entry Page")
7. Repeat the above for Bob Jones (make sure you do this on the root of the LDAP by clicking on **dc=example, dc=org** and **Create a child entry**).
   Enter the following details:
   - **cn:** bjones&#x20;
   - **sn:** Jones&#x20;
   - **givenName:** Bob&#x20;
   - **employeeNumber:** 54321&#x20;
   - **Password:&#x20;**\<enter a password>
8. Click **Create Object** and then **Commit**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/la3VVO6Lj-EdJLuxdmH_m_image.png "PHP LDAP Admin UI Create LDAP Entry Page")

You should see both *Alice* and *Bob* added to the LDAP server:&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/g66K265aDwy6PgemOq9Pa_image.png" size="60" width="304" height="262" position="center" caption="PHP LDAP Admin UI Side Option" showCaption="true"}

## Step 2b: Add Groups

**To add groups to the LDAP server:**

1. Click the **Globe&#x20;**&#x69;con and then select **Create a child entry**.&#x20;
   The *Create Object* page appears.
2. From *Templates*, select **Default**.
3. From the *ObjectClasses&#x20;*&#x6C;ist for the LDAP server container, select **groupOfNames**.
4. Click **Proceed >>**
5. Fill out the basic details for the groups:
   - **cn:** litmus-admin
   - **member:&#x20;**&#x43;lick the *search icon&#x20;*&#x61;nd select **cn=asmith**
6. Click **Create Object**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6aGEnfp7425bBSXxyR3Ph_image.png" size="80" width="753" height="719" position="center" caption="PHP LDAP Admin UI - Create Groups" showCaption="true"}
7. Click **Commit.**
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eDBXaq_KMuX4WagSnBrio_image.png" size="70" width="513" height="275" position="center" caption="PHP LDAP Admin UI Create LDAP Entry Page" showCaption="true"}
8. Repeat the above for **Litmus-viewer** group (make sure you do this on the root of the LDAP by clicking on **dc=example, dc=org** and **Create a child entry**).
   Enter the following details:
   - **cn:** litmus-viewer&#x20;
   - **member:&#x20;**&#x43;lick the *search icon&#x20;*&#x61;nd select **cn=bjones**
9. Click **Create Object.**
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3laUsgiT9mPUmAtqi1aEC_image.png" size="70" width="581" height="712" position="center" caption="PHP LDAP Admin UI - Create Groups" showCaption="true"}
10. Click **Commit.**
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Fj8xMIhxpHn-K_nn9Wh4b_image.png" size="70" width="475" height="277" position="center" caption="PHP LDAP Admin UI Create LDAP Entry Page" showCaption="true"}

We should now have four entries under the root folder of the LDAP server. Next, we will configure Litmus Edge.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PLL_EIG6js49b0EQpT8Vu_image.png" size="60" width="346" height="370" position="center" caption="PHP LDAP Admin UI Side Option" showCaption="true"}

# Step 3: Litmus Edge LDAP Configuration&#x20;

**To define the LDAP server connection from Litmus Edge:**

1. Navigate to **System&#x20;**> **LDAP/AD Auth** and then click the **+** button to define a new LDAP Provider.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dOZdmIjyTG4dTUlax9aEr_image.png "System > LDAP/AD Auth Page")
2. The *Add Provider* dialog box appears. Here, we have the option to start from a template or to define everything manually.
   Select **Advanced** to fill in all details and understand each parameter.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ELAuTeeF9WEah3VGkcaQ1_image.png "Add Provider dialog box ")
3. On the *Generic&#x20;*&#x74;ab, give the provider a **name&#x20;**&#x61;nd click **Next**.
   The default selection for *Type&#x20;*&#x69;s **generic**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tpFmkUQw2ZOsbksR9Vwdz_image.png "Add Provider dialog box - Generic tab")
4. On the *Connection* tab, enter the following:&#x20;
   - **Host:&#x20;**&#x45;nter th&#x65;**&#x20;IP address&#x20;**&#x6F;f the LDAP container as the host.
   - **Port:&#x20;**&#x45;nter the **port number&#x20;**&#x75;sed to define the docker container for the LDAP server. For this guide, we used port **389&#x20;**&#x69;n *Step 1*.
   - **Bind DN and Bind DN Password:&#x20;**&#x45;nter the same **admin user credentials** to authenticate *PHP LDAP Admin UI*.
   - Click **Next**.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/m1N2ORWJjJ_fiFuSxw-4p_image.png "Add Provider dialog box - Connection tab")

# Step 4: Define User Search Details

In the *User&#x20;*&#x74;ab, we define the parameters for Litmus Edge to search and parse relevant information from the LDAP server, such as first name, last name, username, and UserID.

**The following information defines the User configuration:**

- **User Search Base DN:&#x20;**&#x54;he DN (Distinguished Name) of the folder in the LDAP server is the starting point for searching users. As our LDAP server is simple, we'll start searching from the top-level folder, which is **dc=example, dc=org**.
- **Search Scope:** Litmus Edge can use this setting to determine the level at which it should search for users.&#x20;
  There are three options in the drop-down menu to choose from:
  - **base:** Search at the base level of the User Search Base DN.
  - **one:** Search one level below the base level of the User Search Base DN.&#x20;
  - **sub:** Search all levels below the User Search Base DN.&#x20;
    For this guide, select **sub** to search everything under the top level folder.
- **User Search Filter:** We require a filter to provide Litmus Edge with a list of users who should have access to it.&#x20;
  In a practical scenario, individuals may want to limit access to only specific employees, but for our guide, we will match any entry that has an objectClass of *inetOrgPerson*: `(&(objectClass=inetOrgPerson))`.
  If you need more information on how to write LDAP filters, you can refer to [How to write LDAP search filters](https://confluence.atlassian.com/kb/how-to-write-ldap-search-filters-792496933.html).
- **Attribute For Unique UserID:** This is the attribute that Litmus Edge will use as a unique identifier for each user. In this example, we will use **employeeNumber**.
- **Attribute For Username:** This is the attribute that Litmus Edge will use for the username when logging in to Litmus Edge. In this example, we will use **cn**.&#x20;
  So Alice's username will be *asmith* and Bob's username will be *bjones*.&#x20;
- **First Name:** This is the attribute that Litmus Edge will use for the user's first name. This is the **givenName&#x20;**&#x61;ttribute that we filled out when creating Alice and Bob's user accounts in the LDAP server.&#x20;
- **Last Name:** This is the attribute that Litmus Edge will use for the user's last name. For this example, we will use **sn** attribute.

After configuring your *User* tab, it will look like the screenshot below.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/izu7xVn1qn0QnVggbTWpl_image.png "Add Provider dialog box - User tab")

# Step 5: Define Group Search Details&#x20;

The *Group&#x20;*&#x74;ab is same as the user section, but this time we are telling Litmus Edge how to search for the groups.

**The following information defines the Group configuration:**

- **Group Search Base DN:&#x20;**&#x54;he DN (Distinguished Name) of the folder in the LDAP server will be our starting point for searching groups. As our LDAP server is simple, we'll start searching from the top-level folder, which is **dc=example, dc=org**.
- **Search Scope:** Litmus Edge can use this setting to determine the level at which it should search for groups.&#x20;
  There are three options in the drop-down menu to choose from:
  - **base:** Search at the base level of the Group Search Base DN.
  - **one:** Search one level below the base level of the Group Search Base DN.&#x20;
  - **sub:** Search all levels below the Group Search Base DN.&#x20;
    For this guide, select **sub** to search everything under the top level folder.
- **Group Search Filter:** We require a filter to provide Litmus Edge with a list of groups who should have access to it.&#x20;
  For this guide, we will match any entry that has an objectClass of *groupOfNames* and then we will add an additional filter to only include the *groupOfNames* that have a *cn* that starts with *Litmus*.&#x20;
  The filter looks like the following: `(&(objectClass=groupOfNames)(cn=litmus*))`.
- **Group Name Attribute:** This is the attribute Litmus Edge will use to display the group name.&#x20;
  In this example, we will use **cn**.
- **Group Membership Attribute:** This attribute informs Litmus Edge which users belong to the group. This information is necessary for Litmus Edge to determine a user's permissions upon login.&#x20;
  In this example, we use **member&#x20;**&#x61;ttribute.
- **Group Member Value Type:** This attribute tells Litmus Edge about the type of information stored in the list of members. When we added Bob and Alice to the group, their user account DN was inserted.
  In this example, Litmus Edge can use the attribute **DN** to identify members in the list.

After configuring your *Groups&#x20;*&#x74;ab, it will look like the screenshot below.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Rly3GFhXMnP5BYLi73F9j_image.png "Add Provider dialog box - Groups tab")

# Step 6: Test the Configuration

You will find a *Test&#x20;*&#x62;utton on this screen that will verify the input settings.

Click the **Test&#x20;**&#x62;utton. The *Update Provider* dialog box appears. It shows the expected results for two users and two groups.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iMC3sBpc1smrCnv0-BEe-_image.png "Update Provider dialog box ")

# Step 7: Map LDAP Groups to Litmus Edge Groups

After a successful test of the connection, click **Create and Map Groups**. The *Map Groups* dialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Hf0XB5sGcp6IygnREtTsF_image.png "Map Groups dialog box")

Litmus Edge was able to connect to the LDAP server and find the list of groups that we created.

Next, we need to map these groups to the local groups we have on Litmus Edge. This mapping will let Litmus Edge know which permissions the user should be granted when they log in.

From the drop-down menu, map *litmus-admin* to **Administrators&#x20;**&#x61;nd *litmus-viewer* to **Viewers&#x20;**&#x61;nd click **Save**.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tALNSIXeYAbZL-bcjtXgY_image.png "Map Groups dialog box - With Permissions")

# Step 8: Check User Access to Edge Device

Now, we will log in as Alice or Bob and verify that they each have the *Administrator&#x20;*&#x61;nd *Viewer&#x20;*&#x70;ermissions, respectively.

:::hint{type="info"}
**Note:** Please use the login credentials that were configured for Alice and Bob in Step 2a.
:::

Select **openldap&#x20;**&#x66;rom *Provider ID* drop-down to log in via LDAP.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CmMddPBc-cQgmylXp2dQQ_image.png" size="70" width="504" height="440" position="center" caption="Litmus Edge Login Page" showCaption="true"}

If you select *Internal&#x20;*&#x70;rovider, Litmus Edge will look for a local user with the username of asmith, which does not exist. If your login was successful, you should see the EULA and need to accept it (this is only the case for the first login).

When you log in as Alice, you have complete access to Litmus Edge. To check, navigate to *System/Users/Groups&#x20;*&#x61;nd select **Administrators**. You will notice that Alice has been added to the Administrators group. This is expected because Alice is part of the litmus admin on the LDAP server.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/MioB7wEIZ-oGxWUe608PG_image.png "List of Members dialog box")

If you log in as Bob and try to access the same page as *System/Users/Groups*, you will find that you do not have the necessary access to view the page. This is because Bob has been assigned the Viewers group permissions and does not have the required privileges to view the page.

[title] Deploy and Use MySQL
[path] How-To-Guides/Applications Guides/

You can make the most of the massive amount of data collected by Litmus Edge by storing the data in a database for further analysis. The Litmus Edge default Marketplace includes a MySQL application.

# Step 1: Deploy the MySQL Application

Litmus Edge provides a variety of applications in its default marketplace catalog. In the case of MySQL, a container-based MySQL database is provided, which is local to the Litmus Edge device. Data collected at the edge can be stored in this local database. In addition, you can extract data from the local database for consumption by other databases in your enterprise.

:::hint{type="warning"}
**Caution**:

- Caution should be used when using this local database. If the size exceeds the hardware memory size, it crashes the Litmus Edge system, causing data to be lost and requiring a fresh installation.
- To manage the size of the local database, we recommend weekly backups and management of local data by using scripts.
- As an alternative to the local database, collect data and send it to an external database that is on the same network as the Litmus Edge device.
:::

## Before You Begin

Internet connectivity is required to deploy the Default Public Marketplace and to deploy applications. Once you create an application instance, you no longer need internet access to create additional instances of the same application.

**To deploy the MySQL application:**

1. In Litmus Edge, navigate to **Applications&#x20;**> **Marketplace**.&#x20;
2. Click the **MySQL&#xA0;**&#x74;ile.
3. The MySQL Launch dialog box appears.
4. From the **Installation script version&#xA0;**&#x64;rop-down list, select **latest**.
   The MySQL form appears.
5. Configure the following parameters.&#x20;
   - **Name**
   - **Description&#x20;**(Optional)
   - **Port**: Enter a port. The default value is 3306.&#x20;
   - **Database**: Enter a database name.
   - **User**: Enter a user name.
   - **Password**: Enter a MySQL password.
   - **MySQL password**: Enter a MYSQL root password.&#x20;
   - **Restart**: Configure the restart setting. Enter **no**, **always**, or **on-failure**.&#x20;
6. Click **Launch**.
   The MySQL application appears as a tile in the *Catalog Apps&#x20;*&#x70;ane.

# Step 2: Create a MySQL Database Table

You will now need to define a database table for the data you're collecting.&#x20;

You can use a tool, such as MySQL Workbench, to connect to the Litmus Edge local database to create a table.&#x20;

## Identify Database Table and Column Requirements

The columns and data types required for a database table depend on a device tag's configuration. For this exercise, a basic database table illustrates data that can be saved to the database. Using the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89), you can collect and parse the message payload to extract the device ID, device tag, and the register's value.

### Before You Begin

- You will need to configure the DataHub Subscribe node with a topic for a connected device. Navigate to **DeviceHub&#x20;**> **Tags**, select a device, and copy the **RAW Topic** for the tag you want to use.&#x20;
- You need to know the message format. In the following example, you can see the field names and values that you may want to save in a database.

:::BlockQuote
\{"success": true,"datatype": "int", "timestamp": 1531914109501, "registerId": "D22AC344-B908-481D-AA7E-A45E0041AC46", "value": 433, "deviceID": "45F95B1C-F6F0-4696-A271-60FA1A5E79DD", "tagName": "AB-1"}
:::

**To identify database table and column requirements:&#x20;**

1. In Litmus Edge, navigate to **Flows Manager**.&#x20;
2. Click the **Go To Flow Definition** icon for a selected **Flows Manager**.&#x20;
   Th&#x65;*&#x20;Flow canvas&#x20;*&#x6F;pens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6PlxhptXn4xZ_4ZdrIAuf_gotoflowdefinition.png" size="80" width="944" height="366" caption="Go To Flow Definition icon" position="center" showCaption="true"}
3. From the node palette, drag the **DataHub Subscribe** node (DataConnector section) to the canvas.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/j2Sz7jq3aibQ0V56l3Cy8_datahubsubscribenode.png" size="80" width="1055" height="690" caption="DataHub Subscribe node" position="center" showCaption="true"}
4. Drag the **Debug&#xA0;**&#x6E;ode to the canvas and connect the two nodes.
5. Double click the **DataHub Subscribe** node.&#x20;
   The *Edit DataHub Subscribe Node&#x20;*&#x64;ialog box appears.
6. In the **Topic&#x20;**&#x66;ield, paste the topic name you previously copied and click **Done**.
7. If needed, configure the *Datahub Subscribe* connection. See the "Step 3: Configure Connector Nodes" section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
8. Click **Deploy**.&#x20;
9. Expand the message window beneath the flow and click the **Debug&#x20;**&#x69;con. Verify that messages are displaying.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OUaGrEw-E3aDYBkalVGq__flows-message-bar-and-debug-icon.png)

## Create a Database Table

While table creation can be accomplished by writing SQL statements in a flow, the preferred method uses a database tool, such as MySQL Workbench, to create the table and columns in the Litmus Edge local database.

For the purpose of this exercise, connect to the Litmus Edge database and create a database table with the following columns: **deviceID**, **tagName**, and **tagValue**.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/a1FCRXkM5b-orz_7rco-g_image.png "Litmus Edge database with deviceID, tagName, and tagValue columns")

## Create Flow to Populate a MySQL Database

You can create another flow to collect data and store it in a MySQL database.&#x20;

:::hint{type="info"}
**Note**: You can access the MySQL database located on the Litmus Edge device or you can use an external database on the same network as the Litmus Edge device.
:::

Refer to the flow below that you will create.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YRrJTpX09TaDaBIAOiziz_image.png "Flow to populate a MySQL Database")

### Before You Begin

- You will need to configure the DataHub Subscribe node with a topic for a connected device. Navigate to **DeviceHub&#x20;**> **Tags**, select a device, and copy the **RAW Topic** for the tag you want to use.&#x20;
- You must have experience working with flows and SQL queries.&#x20;

**To create a flow to populate a MySQL database:**

1. In Litmus Edge, navigate to **Flows Manager**.&#x20;
2. Click the **Go To Flow Definition** icon for a selected **Flows Manager**.&#x20;
   Th&#x65;*&#x20;Flow canvas&#x20;*&#x6F;pens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6PlxhptXn4xZ_4ZdrIAuf_gotoflowdefinition.png" size="80" width="944" height="366" caption="Go To Flow Definition icon" position="center" showCaption="true"}
3. Refer to the following tasks for nodes.&#x20;

### DataHub Subscribe and JSON Nodes

After configuring the DataHub Subscribe node with a topic from a connected device, it collects the message. The JSON node processes the message to ensure that it is in the proper JSON format required for further processing.

1. Drag the **DataHub Subscribe** and **JSON&#x20;**&#x6E;odes onto the canvas and connect both nodes.&#x20;
2. Double-click the DataHub Subscribe node.&#x20;
   The *Edit DataHub Subscribe Node&#x20;*&#x64;ialog box appears.
3. In the **Topic&#x20;**&#x66;ield, paste the topic name you previously copied and click **Done**.
4. Click **Deploy**.&#x20;

### Function Node

The Function node parses the incoming message.&#x20;

1. Drag the **Function&#x20;**&#x6E;ode onto the canvas and connect it to the **JSON&#x20;**&#x6E;ode.&#x20;
2. Double-click the **Function&#x20;**&#x6E;ode and enter the JavaScript code below in the **On Message&#x20;**&#x74;ab. This parses the message payload.&#x20;
3. Click **Deploy**.&#x20;

```javascript
var obj = {};
obj.deviceID = msg.payload.deviceID;
obj.tagName = msg.payload.tagName;
obj.value = msg.payload.tagValue;
msg.payload = obj;
return msg;
```

### Template Node

Use the Template node to write SQL statements to insert data into the database columns.

1. Drag the **Template&#x20;**&#x6E;ode onto the canvas and connect it to the **Function&#x20;**&#x6E;ode.&#x20;
2. Double-click the **Template&#x20;**&#x6E;ode.&#x20;
3. In the **Property&#x20;**&#x66;ield, select **msg.** and enter **topic**.&#x20;
4. Enter the SQL statement below in the **Template&#x20;**&#x77;indow.&#x20;
5. Click **Deploy**.&#x20;

:::hint{type="info"}
**Note**: In the example statement below, **test&#x20;**&#x72;epresents the name of the database table, which you need to create. The table doesn't exist by default.&#x20;
:::

```sql
INSERT INTO test (deviceID,tagName,tagValue) VALUES
('{{payload.deviceID}}','{{payload.tagName}}','{{payload.tagValue}}');
```

### MySQL Node

Configure this node with a port and credentials to connect to the local Litmus Edge MySQL database when using the Marketplace application. When using an external MySQL database on the same network as the Litmus Edge device, configure the MySQ&#x4C;**&#xA0;**&#x6E;ode with the IP address, port, and credentials for that database server.

1. Drag the **MySQL&#x20;**&#x6E;ode onto the canvas and connect it to the **Template&#x20;**&#x6E;ode.&#x20;
2. Double-click the **MySQL&#x20;**&#x6E;ode.&#x20;
3. In the **Database&#x20;**&#x66;ield, click the **Edit&#x20;**&#x69;con.&#x20;
4. Configure the following parameters.&#x20;
   - **Host**: 127.0.0.1
   - **Port**: 3306
   - **User**: root
   - **Password**: Enter the MySQL database password
   - **Database**: Enter the name of the database

### Debug Node

Verify your flow is working as designed.

1. Drag the **Debug&#x20;**&#x6E;ode onto the canvas and connect it to the **MySQL&#x20;**&#x6E;ode.&#x20;
2. Expand the message window beneath the flow and click the **Debug&#x20;**&#x69;con. Verify that messages are displaying.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_Di1BE_daz2dFfep0uI4T_flows-message-bar-and-debug-icon.png" size="80" width="1920" height="280" caption="Debug node messages" position="center" showCaption="true"}

## Validate Database Updates

To check that collected values are being inserted into the MySQL database, create a basic flow.

Refer to the updates to the flow created in the previous steps.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2IqrN3OqNyNMF4Siaoz9L_image.png "Updated flow to validate connectivity")

**To validate database updates:&#x20;**

1. From the flow canvas you used to create the previous flow, copy and paste the **Template&#x20;**&#x6E;ode previously created and connect it to the **Function&#x20;**&#x6E;ode.&#x20;
2. Double-click the **Template&#x20;**&#x6E;ode.&#x20;
3. Enter the following SQL statement in the **Template&#x20;**&#x77;indow and click **Done**.&#x20;
   `select * from test;`
4. Click **Deploy**.&#x20;
5. Copy and paste the **MySQL&#x20;**&#x6E;ode previously created and connect it to the newer **Template&#x20;**&#x6E;ode.&#x20;
6. Click **Deploy**.&#x20;
7. Drag a new **Debug&#x20;**&#x6E;ode onto the canvas and connect it to the newer **MySQL&#x20;**&#x6E;ode.&#x20;
8. Expand the message window beneath the flow and click the **Debug&#xA0;**&#x69;con. Verify that messages are displaying.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/t0BhXfNtgb5W1OyXEPZ8X_flows-message-bar-and-debug-icon.png" size="80" width="1920" height="280" caption="Debug node messages" position="center" showCaption="true"}

# Step 3: Save Multiple Registers to MySQL

You will now update the original template node on the flow canvas to do the following:

- Collect raw data from various PLC registers.
- Aggregate the data at regular intervals.
- Save the aggregated data for use by other applications.

Use the Template node to format the SQL statement to update the database with values that have been collected from multiple registers.

**To save multiple registers to MySQL:**

1. From the same flow canvas you used to create and update flows, double-click the original **Template&#x20;**&#x6E;ode.&#x20;
2. Enter the following SQL statement in the **Template&#x20;**&#x77;indow and click **Done**.&#x20;

```sql
INSERT INTO mytable(value1,value2,value3,value4) values 
({{output1}},{{output2}},"{{output3}}","{{output4}}");
```

:::hint{type="info"}
**Note**: Depending on the MYSQL column types, certain formatting may be required. For example, if a column is VARCHAR, the following notation must be used: **"\{\{}}"**.&#x20;
:::


[title] Litmus Edge with AWS IoT SiteWise
[path] How-To-Guides/Integration Guides/

Review the following guide to set up an integration between Litmus Edge and AWS IoT SiteWise to send data directly to the cloud.

# Before You Begin

Before completing these steps, make sure to do the following:

- Have access to an AWS account with the appropriate user privileges.
- Set up a [SiteWise Edge gateways with AWS IoT Greengrass](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/gw-self-host-gg2.html).
- A Litmus Edge Manger instance with an active configuration ready for deployment of an edge device. See [Set Up an Activation Configuration](docId\:VbRFW-a0LLtuJmwdpuNNV) for details.
- Refer to *Step 3: Add Template&#x20;*&#x69;n the [Set Up an Activation Configuration](docId\:VbRFW-a0LLtuJmwdpuNNV) section to include the template file below. This JSON file contains the configuration for the AWS IoT SiteWise Edge Integration and should be uploaded to the activation config.

::File[]{src="https://archbee-doc-uploads.s3.amazonaws.com/Q116WJTAr1sefeVNvMCF9-hbKzLnfoColO-eBDQfPAi-20240905-161836.json" label="AWS_IoT_SiteWise_Edge_template.json"}

# Set Up Integration in AWS

## **Step 1:&#x20;**&#x44;eploying Litmus Edge From AWS IoT SiteWise Console&#x20;

**To deploy litmus edge from your AWS IoT SiteWise console:**

1. Open the *AWS IoT SiteWise* browser tab and navigate to **Data Sources&#x20;**&#x73;ection.
   See [Add a partner data source](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/cpa-add-source.html) and [SiteWise Edge gateway partner data source option](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-partner-data-source.html#cp-litmus) for more details.
2. Click **Add data source**.
   The *Add data source* panel appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/F3LNZWbPGe542TO0Dc2Vj_image.png" size="100" width="1693" height="291" position="center" caption="Add data source panel" darkWidth="1693" darkHeight="291" showCaption="true" indent="2"}

3. Configure the following parameters to add data source and activate litmus edge.
   - **Source type:&#x20;**&#x53;elect **Litmus Edge** from the drop-down list.
   - **Source name:** Name your Litmus Edge instance.
   - **Activation configuration:&#x20;**&#x54;his configuration is optional.&#x20;
     - For this guide, select **Activate now using a code**.
       - **Litmus Edge Manager Activation URL:&#x20;**&#x53;ee [Step 8: Retrieve Activation Code/URL](docId\:VbRFW-a0LLtuJmwdpuNNV) to generate an activation URL.
       - **Litmus Edge Manager activation code:&#x20;**&#x53;ee [Step 8: Retrieve Activation Code/URL](docId\:VbRFW-a0LLtuJmwdpuNNV) to generate an activation code.
       - **Litmus Edge Manager CA certificate:&#x20;**&#x53;ee [Add a Custom CA Certificate](docId\:TTt4LhsdYPNd0siTfg2BY) for more details.
     - To activate with Litmus Edge manager later, select **Activate later on Litmus Edge*****.***
       - Litmus Edge will not be activated with Litmus Edge Manager and will require manual activation, licensing and configuration. See [Activate an Edge Device](docId\:tDJ648wJgATVqzyx79UwB) for details.
   - Check the **Authorize** check box.
   - Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GkDGhDaJp2oHXoyJTMyDS_image.png" size="80" width="887" height="831" position="center" darkWidth="887" darkHeight="831" showCaption="false" indent="3"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ye-8KbfmQrjMm8QbRwrNk_image.png" size="80" width="876" height="514" position="center" caption="Add data source dialog box" darkWidth="876" darkHeight="514" showCaption="true" indent="3"}

## Step 2: Monitor the Deployment

**To monitor the deployment of edge devices:**

1. Return to the *AWS IoT SiteWise Console.*&#x20;
2. Click the **Greengrass core device name** under the *Edge gateways* section.
   The *Overview&#x20;*&#x70;age for the Core Device appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/o1E0QcVJemGvm9zKci_GE_image.png" size="100" width="1700" height="743" position="center" caption="Overview page" darkWidth="1700" darkHeight="743" showCaption="true" indent="2"}

3. Click **Deployments&#x20;**&#x61;nd check the status of the latest deployment.
   Allow a few minutes for the deployment to refresh.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6RkMdejknHXJm7axq5PFL_image.png" size="100" width="1502" height="606" position="center" caption="Deployments page" darkWidth="1502" darkHeight="606" showCaption="true" indent="2"}

4. The Status on this device tab will change to **Succeeded**.
   The deployment of the edge device is completed.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vJCdn1oenFc97ISDQx_75_image.png" size="100" width="1491" height="603" position="center" caption="Deployments page" darkWidth="1491" darkHeight="603" showCaption="true" indent="2"}

## Step 3: Approve Activation in Litmus Edge Manager

:::hint{type="info"}
**Notes:&#x20;**&#x45;nsure that the correct template is applied during the configuration, as this will provide the necessary connector setup.&#x20;

**See Step 3: Add Template** in [Set Up an Activation Configuration](docId\:VbRFW-a0LLtuJmwdpuNNV) for details.

Download the template file below:

::File[]{src="https://archbee-doc-uploads.s3.amazonaws.com/Q116WJTAr1sefeVNvMCF9-Ndi54T6Dz3bH6ViaeB0a6-20240905-162238.json" label="AWS_IoT_SiteWise_Edge_template.json"}
:::

After deployment, go back to Litmus Edge Manager and approve the activation request. See [Step 4: Approve the Activation Request in Litmus Edge Manager](docId\:rdL1GO82TH_UOLBJRhaW3) for details.

# Set Up Integration in Litmus Edge

After setting up your AWS account, you will need to log in to the previously deployed Litmus Edge instance to complete the steps for integrating with AWS IoT SiteWise.

You can access the Litmus Edge UI by directly accessing the AWS SiteWise Edge gateway.

If direct access is not available, they can also remotely connect to the Litmus Edge instance from the Litmus Edge Manager from [Open Edge Devices](docId\:XpURI-8b1QSviQEpNCvzD).

:::hint{type="info"}
**Important:&#x20;**&#x54;o log in to your Litmus Edge instance, you need the IP of the gateway and port 8443. See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ) for more details.
:::

## Step 4: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector.

## Step 5: Add Tag to Device

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

## Step 6: Add MQTT - AWS IoT SiteWise Edge Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **MQTT - AWS IoT SiteWise Edge&#x20;**&#x70;rovider.

Configure the following parameters.

- **Name:&#x20;**&#x45;nter Connector Name.
- **Client ID:&#x9;**&#x45;nter Unique client identity.
- **Property Alias:** This can be static or use format directives, with the default being **/$D/$N** `(e.g., /<device_name>/<tag_name>)`. Ensure the Property Alias matches the AWS IoT SiteWise Asset Measurement Alias.
- **Integration Topic:** AWS recommends that the default integration topic for publishing matches the Property Alias.
- **Additional Alias Definition:&#x20;**(Optional) String to further define dynamic *Property Alias&#x20;*&#x61;nd *Integration Topic*.
- Click **Save&#x20;**&#x6F;r **Update**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SkD7TXX2hIiaiNeWtRimx_image.png" size="100" width="1107" height="681" position="center" caption="MQTT - AWS IoT SiteWise Edge dialog box" darkWidth="1107" darkHeight="681" showCaption="true" indent="2"}

## Step 7: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GBc0HbwaV7_s7wCYQOVSF_image.png" size="50" width="402" height="346" position="center" caption="Enable the Connector" darkWidth="402" darkHeight="346" showCaption="true"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

## Step 8: Create Topics for Connector

You will now need to create topics for the connector. To create outbound topics, you have the option of importing the tag created in Step 5. To create inbound topics, you will have to manually create the topic.

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click th&#x65;**&#x20;Import from DeviceHub&#x20;**&#x74;ags icon.
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ypZrUmB7ziVyI_86MQpP4_image.png" size="100" isUploading="false" width="1820" height="544" darkWidth="1820" darkHeight="544" showCaption="false" indent="2"}

4. Select all the tags to import and click **Import**.&#x20;

## Step 9: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7fNlyn-OodMfSH8N2szfW_image.png)

## Step 10: Verify Outbound Data

To verify that data is landing in AWS IoT SiteWise, you can check either the Data Streams or the specific Asset where the data is expected to publish.&#x20;

You will need to log in to your AWS console to verify that outbound messages are being sent.

### Step 10a: Verify Data from Data Streams

**To verify outbound messages from data streams:&#x20;**

1. Log in to your *AWS console*.&#x20;
2. From the side menu, navigate to the **Data streams** pane.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/J_a5G9ysaINmjV_t2yr62_image.png" size="100" width="1920" height="427" position="center" caption="Data streams pane" darkWidth="1920" darkHeight="427" showCaption="true" indent="2"}

3. Click the **Refresh&#x20;**&#x62;utton to refresh the page.
   The *Data streams info&#x20;*&#x74;able shows a new topic.
4. Enable the topic and confirm that data is flowing correctly from Litmus Edge to AWS IoT SiteWise.
   - The Data stream alias in AWS SiteWise Console will be the Integration Topic or Remote Data topic defined in the Litmus Edge AWS IoT SiteWise Edge Integration.

The data was successfully sent from Litmus Edge to the broker AWS IoT Sitewise.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tpvjxjpW5tP6pVa8euj9v_image.png "Data streams page")

### Step 10b: Verify Data from Asset’s Measurement&#x20;

If the *Property Alias&#x20;*&#x63;onfigured in Litmus Edge matches what is set in AWS IoT SiteWise, the data will be visible in the Asset’s measurement section.&#x20;

**To verify outbound messages from asset’s measurement: &#x20;**

1. Log in to your *AWS console*.&#x20;
2. From the side menu, navigate to the **Assets** pane.
3. Click **Measurements** under the *Property Type*.
4. Confirm that data is flowing correctly from Litmus Edge to AWS IoT SiteWise.

The data was successfully sent from Litmus Edge to the broker AWS IoT Sitewise.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zPSMGrnxn8wQ6GvHe7tCb_image.png "Asset’s Measurement Page")


[title] Use the Join Processor Function
[path] How-To-Guides/Analytics Guides/

You can use the Join processor to combine the output for two or more input processors. You must define the connector when multiple input processors are connected to a Join Processor.

# Understanding Different Join Outputs

You have the following output modes for Join processor by fields:

- **Map:** Use this option if standard JSON format is needed (e.g., for database output).
- **Array:** Use this option if all values are needed in an array format.

# **User Scenario**

Review the following scenario for the join processor function. Then, you will simulate PLC data and join outputs using multiple input processors.

In a chemical plant, different PLCs monitor environmental factors like temperature, humidity, gas levels, and pressure in various plant areas. With the Join Processor, you can combine these readings into an array or JSON format for real-time monitoring and trend analysis of the plant environment.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tags. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.  Each tag will be used for simulating the different Join processor outputs mentioned above.

## **Tag 1: tag1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **int64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **tag1**

## **Tag 2: tag2**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **tag2**

## **Tag 3: tag3**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **string**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **tag3**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tags you previously created. Follow Step 3a or 3b, depending on whether you want to combine outputs in JSON or Array format.

**To create an analytics flow with the Join Processor function:**

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **tag1**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Repeat steps 2-5 to add another *DataHub Subscribe* node. Select the alias topic for the **tag2&#x20;**&#x61;nd **tag3&#x20;**&#x72;espectively.&#x20;

## Step 3a: Configure Join Processor with Output as MAP

1. Click **Add processor** again and select **Join Processor**.
   The following information defines this function:
   - **Output Mode:** Select **map** from the drop-down menu.
   - **Map Field Prefix:&#x20;**&#x41;dd a **prefix&#x20;**&#x62;efore the output fields when they are combined if needed.
   - **Input Source:&#x20;**&#x59;ou can use the device or connecting wire definition name. If the device name is chosen, it is required to have the **deviceName** and **tagName** fields in the input.
   - **Field:&#x20;**&#x54;he field from the JSON String you want to join. Available options are **device**, **tagName**, **value**, etc.
2. Click **Save.**
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/N8W18SonlubcI2SmmkStQ_image.png "Join Processr dialog box with Map Output")
3. Connect the DataHub Subscribe processor (tag: *tag1)* to the Join processor with a wire and enter the definition of **inputA&#x20;**&#x66;or the connection.
4. Connect the DataHub Subscribe processor (tag: *tag2*) to the Join processor with a wire and enter a definition of **inputB&#x20;**&#x66;or the connection.
5. Connect the DataHub Subscribe processor (tag: *tag3*) to the Join processor with a wire and enter a definition of **inputC&#x20;**&#x66;or the connection.
6. On the analytics canvas, click **Save**.

## Step 3b: Configure Join Processor with Output as Array

1. Click **Add processor** again and select **Join Processor**.&#x20;
   The following information defines this function:
   - **Output Mode:** Select **array** from the drop-down menu.
   - **Map Field Prefix:&#x20;**&#x54;his field can remain empty.
   - **Field:&#x20;**&#x54;he field from the JSON String you want to join. Available options are **device**, **tagName**, **value**, etc.
   - **Array Sort By:&#x20;**&#x49;n **Array&#x20;**&#x6D;ode, you can arrange field values by **tag**, **definition**, **id**, and **time**.
   - **Array Sort Order:&#x20;**&#x49;n **Array&#x20;**&#x6D;ode, you can arrange field values in either **Ascending&#x20;**&#x6F;r **Descending&#x20;**&#x6F;rder.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xzkKPmt1SIiQmDGYmB2Ub_image.png "Join Processr dialog box with Array Output")
3. Connect the DataHub Subscribe processor (tag: *tag1)* to the Join processor with a wire and enter the definition of **inputA&#x20;**&#x66;or the connection.
4. Connect the DataHub Subscribe processor (tag: *tag2*) to the Join processor with a wire and enter a definition of **inputB&#x20;**&#x66;or the connection.
5. Connect the DataHub Subscribe processor (tag: *tag3*) to the Join processor with a wire and enter a definition of **inputC&#x20;**&#x66;or the connection.
6. On the analytics canvas, click **Save**.

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Join&#x20;*&#x70;rocessor to view outputs in different modes on the analytics canvas.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fja6VU1A99pU9CaBYR154_image.png "Completed Analytics Canvas")

## View Map Mode Output

The *Join* processor returns a JSON string with the joined fields from all the tags defined.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Mcm5UwlM1RGcQfoHoWQxc_image.png "Output of Map Mode")

## View Array Mode Output

The *Join&#x20;*&#x70;rocessor returns an Array of the joined field from all the tags defined, sorted by time in ascending order.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/M4oNAGH9TGHFk94hZ1Vfc_image.png "Output of Array Mode")


[title] Use the Mazak MTConnect Demo Agent to Connect a Device
[path] How-To-Guides/DeviceHub Guides/

MTConnect is a read-only protocol commonly used by CNC machines.

Mazak provides a publicly accessible tool that can be used to test your device setup. See [Mazak MTConnect Demo Agents](http://mtconnect.mazakcorp.com/) for more information.&#x20;

# Step 1: Add MTConnect Device

**To add the MTConnect Device:&#x20;**

1. In Litmus Edge, navigate to **DeviceHub&#x20;**> **Devices**.&#x20;
2. Click the **Connect a Device** box.&#x20;
   The *Connect Device&#x20;*&#x64;ialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/atJL37pPuLGI2bM_w2ibz_adddevice.png" size="80" width="1046" height="528" caption="Connect a Device box" position="center" showCaption="true"}
3. In the **Device Type** drop-down list, select **MTConnect**.&#x20;
4. In the **Driver Name** drop-down list, select **MTConnect Ethernet (Gen1)**.&#x20;
5. Configure the following parameters.
   - **Name**: Enter a name for the device.&#x20;
   - **Description**: Enter a description for the device.&#x20;
   - **Network Address**: Enter the device IP address. To get the IP address, you can use the command prompt to ping the device at Mazak with the following command: `C:\Users\<your username> ping mtconnect.mazakcorp.com`. Copy and paste the IP address in the response.&#x20;
     - The Network Address is the IP address of the device running the MTConnect protocol. For Litmus Edge only, the IP is used without "http\://" even if it is an HTTP-based protocol. The MTConnect connection can also be accessed from a browser. See [http://mtconnect.mazakcorp.com:5717](http://mtconnect.mazakcorp.com:5717/) to view the XML Document Tree.
   - **Network Port**: Enter 5717. The Network Port is the port for which the MTConnect server is listening. It is the same port used by the URL. The above link for the XML Document Tree uses the same port as your device.&#x20;
   - **Device Name**: Enter the device name.&#x20;
     - The Device Name is unique to MTConnect but crucial. MTConnect operates using an XML-based schema to be able to locate which tags to read. You must provide the name of the device as the schema can potentially hold the data for multiple devices.
     - To find the device name, you can run the probe URL. See [http://mtconnect.mazakcorp.com:5717/probe](http://mtconnect.mazakcorp.com:5717/probe) to view the XML schema. You can locate the name for the device to be connect under a \<Device id> tag. The value to be used is for the name key.
     -
       ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zlVJHGAWbiQxI7uSey9_N_mtconnect-device-id.png" size="80" width="819" height="288" caption="Device ID parameter" position="center" showCaption="true"}
   - **Enable Alias Topics**: Select the check box.&#x20;
   - **Enable Data Store**: Select the check box.
6. Click **Add Device**.&#x20;
   MTConnect is a browsing-based driver and requires at least one tag to be added before showing as Connected.

# Step 2: Browse for Tags

**To browse for tags:**

1. Navigate to **DeviceHub&#x20;**> **Tags**.
2. Click the **Add&#xA0;**&#x69;con, and then select **Browse Tags**.
   The *Browse Tags* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-IzCEVGfswGJSotXHToyy_browsetags.png" size="80" width="1402" height="470" caption="Browse Tags option" position="center" showCaption="true"}
3. Select the MTConnect device.
   The tags list drops down.&#x20;
   It may be necessary to manually refresh the tag browser if it does not show the expected result. This can happen if the device was created with the wrong IP address, port, or device name. In this case, the first browsing will return no results, but a dummy browsing list is created when refreshed. You can edit the device and correct the mistake, and then try to browse tags again. If the dummy browsing list appears again, refresh the browse list.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TB-gOVdYhqHO_PoFwU9rS_mtconnect-browse-tags.png" size="80" width="1099" height="679" caption="Browse tags list" position="center" showCaption="true"}
4. Select the tags to add.&#x20;
5. Click **Add**.
6. Navigate to Devices. The MTConnect device shows as CONNECTED in the *Devices&#x20;*&#x70;ane.


[title] Integration Guides
[path] How-To-Guides/

Refer to the following Integration how-to guides.

# Cloud Service Providers

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/M6Q7SO-XmmUHoiu12P-D__aaaa.png" size="30" width="1000" height="290" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Azure Event Hub Integration Guide](docId\:d4uqWUga6paYEzjD6SSOW)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/yCoXFzJYguKNGrxoZ4Jax_zz.png" size="20" width="256" height="206" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Google Cloud Pub/Sub Integration Guide](docId\:c6Zowc1akXEA0SxlPg2oa)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EVqyzcdh69GJJPCjc9csT_image.png" size="20" width="202" height="203" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[AWS SiteWise Integration Guide](docId\:bYsaJu0nIwJ2vIT6jJ0IG)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/xUdRp07zj_nfOQPj0CaF6_cognite-seeklogo.png" size="30" width="1000" height="1000" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Cognite Integration Guide](docId\:ndv9rd7rDi0q_9huVnCSC)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ohx6MN0vamxfezzIixj37_image.png" size="50" width="286" height="72" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[MindSphere Integration Guide](docId\:oQFt-fX8hh1jyWW8IcGQu)
:::
::::

***

# **Message Brokers**

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KnfRxX6hChmXd_ldnXqOH_image.png" size="40" width="1100" height="280" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Generic MQTT Over SSL Integration Guide (Mosquitto)](docId\:sAFR6wpbZKfzUj6bxOP9S)

[Generic MQTT Integration Guide (HiveMQ)](docId\:fV3eiYJ9BspT09ezdrd38)

[Generic MQTT Integration Guide (Last Will and Testament)](docId:_n-WI6ENXufR2hYVRoGOk)

[Generic MQTT Integration Guide (Mosquitto)](docId\:dmZHGjQjB9ydwDvDVxyxC)

[Install the Mosquitto MQTT Broker on Ubuntu](docId\:xpttINDvIxJGReAlsABgI)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PS1rwXAonAdcbgjI6p6MS_image.png" size="40" width="800" height="204" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[AMQP SSL Integration Guide](docId\:MGp4_jY6J-Kip5ZJ20wmH)

[AMQP TCP Integration Guide](docId\:b023sSmsxxZWVrCNMQD6W)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3hXE23xkgmyuTIiF2okBH_image.png" size="40" width="513" height="229" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Kafka SSL Integration Guide](docId\:wdXO9Ai73wgSE8HnSdvum)

[Kafka TCP Integration Guide](docId\:ugayQPvt6AHq_E6Ms8mSP)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JFqu3ZzSRCOs9Ow7A8SA4_image.png" size="30" width="1000" height="290" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Azure IoT Hub Guides](docId\:UGgahQ7FOY2Qh4YuP3Oa7)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zpEUVZhPFra2660lyEIgZ_image.png" size="20" width="196" height="199" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Amazon AWS IoT Core over SSL Integration Guide](docId\:CKMHM7oqjpVcAqmMsKhW-)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zpEUVZhPFra2660lyEIgZ_image.png" size="20" width="196" height="199" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[LitmusEdge with AWS IoT SiteWise](docId\:onkpQPEXB3jEKiZb_rNNO)&#x20;
:::
::::

***

# **Databases**

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem


::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pLfJyDVB19YMwJeCQKzSz_image.png" size="50" width="512" height="103" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[InfluxDB v2.x TCP Integration Guide](docId\:FzZTCLIwKshVDdPkwy4zG)

[InfluxDB v2.x SSL Integration Guide](docId:_L5n_qRhgHNjmjMcs-WZs)

[InfluxDB v1.7.x TCP Integration Guide](docId\:xWdn88NdbtdW0J0rE-Owv)

[InfluxDB v1.7.x SSL Integration Guide](docId\:FyYolKgsXLk4XHRbX47V9)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/G3kRVLpx8C-LDQ3uHa3xU_image.png" size="40" width="2500" height="2021" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Microsoft SQL Server SSL Integration Guide](docId\:t0Icjy44gC5ZePqMOWQ_Z)

[Microsoft SQL Server Integration Guide](docId\:uIPn_TgSKNJO4ut7eqnEI)

[Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RGsIvP5S8txo4grFLx4Ye_image.png" size="50" width="512" height="146" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[MongoDB Integration Guide](docId:0cZXAiRD8-dshxcD5hmjF)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem


::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cdZbg8Op9JhjoCo8NiaOx_image.png" size="30" width="168" height="114" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm)

[MySQL Integration Guide](docId\:vA1LuXPm0Kh57qTIs56FT)

[MySQL SSL Integration Guide](docId\:UkvbOt9x0nbMfmNJMH_ID)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dDQcJ4pxb3Ibp2zg71kYH_image.png" size="30" width="503" height="408" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[PostgreSQL SSL Integration Guide](docId\:yWtjE4wN7ifyHSAAjFVQf)

[PostgreSQL Integration Guide](docId\:NKI28N3DMLmhDSaNBY_BB)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mEo8o-jX3DcGntXcTnLU0_image.png" size="40" width="2500" height="738" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Splunk Integration Guide](docId\:hSzP2SpepMfivrhpKHOfK)
:::
::::

***

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eNyIM73mIiySRwcsfp-sM_image.png" size="50" width="1013" height="286" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Snowflake Integration Guide](docId:9EwtDSPb4VUsABX2CTfjT)
:::
::::

***

# Other Providers

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ho5qAVXIBDToFtafnyVHU_image.png" size="40" width="512" height="125" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Set Up Edge Cascading with the NATS Connector](docId\:p9zqIlAmmJcfPzzj5kJLO)&#x20;
:::
::::


[title] Use the PLC-Status Topic to Verify Connection Status
[path] How-To-Guides/DeviceHub Guides/

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

- You need to follow the following guidelines for topic names: [Subject-Based Messaging](https://docs.nats.io/nats-concepts/subjects).&#x20;
- When publishing structured data such as JSON, you must convert to a byte array (string) first. To do this in a flow, you can use the **json&#x20;**&#x6E;ode.&#x20;
:::

The PLC-status topic is used to verify the connection of DeviceHub devices.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/5weVIPyCpRI?si=6awrSV-ke7bE_V93&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

You'd like to verify the connection status of a PLC to Litmus Edge from a remote location.&#x20;

# Set up and Use the PLC-Status Topic

**To set up and use the PLC-status topic:&#x20;**

1. Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). For this user scenario, a Simulator Generator device is used.&#x20;
2. Navigate to **DeviceHub**.&#x20;
3. In the Generator device tile, click th&#x65;**&#x20;Display Copy Options&#x20;**&#x69;con and select the PLC status topic. This will copy the PLC status topic. You will refer to this topic later on.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QMy8hxZv4CM5FZLn_sfsH_copy-plc-status.png" size="80" width="671" height="373" caption="Copy the PLC status topic" position="center" showCaption="true"}
4. Navigate to **Flows Manager**.&#x20;
5. For a Flows Manager, click the **Go To Flow Definition** icon.&#x20;
   The Flow canvas opens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YJuq2bpVLRQFztDx388IL_go-to-flow-definition.png" size="80" width="1010" height="490" caption="Go To Flow Definition icon" position="center" showCaption="true"}
6. On the Flow canvas, drag the **Datahub Subscribe** node and **debug&#x20;**&#x6E;ode onto the canvas. Then, connect the two nodes.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rFBhmtBOhyKLZca06yEtQ_plc-status-nodes.png" size="80" width="870" height="494" caption="Nodes needed for PLC status" position="center" showCaption="true"}
7. Double-click the **DataHub Subscribe** node.
   The *Edit DataHub Subscribe node* dialog box appears.
   - In the **Topic&#x20;**&#x66;ield, paste the PLC status topic you copied in step 3.&#x20;
   - If needed, configure the Datahub Subscribe connection. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
   - Click **Done**, and then click **Deploy**.&#x20;
8. Expand the message window beneath the flow. &#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JX5Q6gfezPd36MMFlrwFH_message-bar.png" size="80" width="1920" height="937" caption="The message window" position="center" showCaption="true"}
9. Click the **Debug&#x20;**&#x69;con to view debug messages.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JC4cy7D-QXdzNqDI_czdP_debug-icon.png" size="80" width="1920" height="643" caption="The Debug icon" position="center" showCaption="true"}
10. Confirm the **Debug&#x20;**&#x6E;ode is activated.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ape1kZ4p0O1vNuxlL6wr4_activate-debug.png" size="80" width="1062" height="648" caption="The activate debug button" position="center" showCaption="true"}
11. The debug window displays a `"success": true` message, which means the device is successfully connected to Litmus Edge. If the device is not connected, did not respond in time, or is not properly configured in Litmus Edge, `"success": false` will display. &#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/k9cbCEQNSQyQzuHN7_1j2_success-true.png" size="80" width="1616" height="767" caption="Success true message" position="center" showCaption="true"}

The rest of the payload displays the following information from the device:

- **Data type**: The data type used to verify the PLC status.&#x20;
- **Value**: The bit value that displays the status of the device. The value 0 means the device is on/connected.&#x20;
- **Device Name**: The device name you configured in Litmus Edge.&#x20;
- **Timestamp**: Date and time data for the PLC status message.&#x20;
- **Device ID**: The device ID for the DeviceHub device generated in Litmus Edge.&#x20;
- **Description**: The default description for the PLC status topic (Poll Register).&#x20;


[title] Use the Batch-Write Topic to Send Multiple Write Requests
[path] How-To-Guides/DeviceHub Guides/

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

- You need to follow the following guidelines for topic names: [Subject-Based Messaging](https://docs.nats.io/nats-concepts/subjects).&#x20;
- When publishing structured data such as JSON, you must convert to a byte array (string) first. To do this in a flow, you can use the **json&#x20;**&#x6E;ode.&#x20;
:::

You can use the Batch-Write topic to send multiple write requests simultaneously.&#x20;

:::hint{type="warning"}
**Important**:

- Only Gen 2 drivers can use batch-write topics. See the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr) to review available Gen 2 drivers.&#x20;
- This is only available for devices that don't select th&#x65;**&#x20;Enable Alias Topics** checkbox in the device configuration. You must use tags in the raw topic format. See [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and [Manage Devices](docId\:p4VpVE-BxtLSJqn37yROr) for more information.&#x20;
:::

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/wU_gvFLplLQ?si=8D-EB7QE9YeYE0N4&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

Litmus Edge collects process data on a PLC, and the setpoint values for the PLC are continuously re-calibrated. These new setpoints and other control values can be collected and sent in one request through the Batch-Write topic.&#x20;

# Set Up and Use the Batch-Write Topic

Complete the following tasks to use the Batch-Write topic.&#x20;

## Before You Begin

You will need the register IDs for the tags included in the batch write operation. If you don't have these values, you can get them by completing the steps in *Step 2: Configure Nodes* below.&#x20;

## Step 1: Set Up Flow Canvas

**To set up the Flow canvas:**

1. Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). For this use case, a Simulator Generator device is used.&#x20;
2. Follow the steps to [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) and create three tags with the following parameters.
   - **Name**: M - Memory Register
   - **Value Type**: int64
   - **Polling Interval**: 10
   - **Tag Name**: Enter a name for each tag.&#x20;
   - **Address**: Enter 1 for the first tag, 2 for the second, and 3 for the third.&#x20;
3. Navigate to **DeviceHub&#x20;**> **Devices**.&#x20;
4. In the Generator device tile, click the **Display Copy Options** icon and select the **Manage&#x20;**&#x74;opic. This will copy the PLC Manage topic. You will refer to this topic later on. Save (paste) this topic somewhere secure.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nk9-19PTw9RWUiepfqejr_copy-manage-topic.png" size="80" width="671" height="373" caption="The manage topic" position="center" showCaption="true"}
5. Copy the **Raw&#x20;**&#x54;opic. You will refer to this topic later on.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4mjaEluZMCfFmxr6dFxqD_copy-device-raw-topic.png" size="80" width="668" height="385" caption="The device Raw Topic" position="center" showCaption="true"}
6. Navigate to **Flows Manager**.&#x20;
7. For a Flows Manager, click the **Go To Flow Definition** icon.&#x20;
   The Flow canvas opens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kNr8nC8m2jwwx3dYuHdlR_use-case-5-pic.png" size="80" width="1017" height="493" caption="Go To Flow Definition icon" position="center" showCaption="true"}
8. On the Flow canvas, drag the **DataHub Subscribe** node and **debug&#x20;**&#x6E;ode on the canvas and connect them. Then, drag the **inject&#x20;**&#x6E;ode and the **DataHub Publish&#x20;**&#x6E;ode onto the canvas and connect them. &#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Shx9UdNx5PcnpI-CzhyQX_batch-write-four-nodes.png" size="80" width="922" height="536" caption="Set up the four nodes for batch write" position="center" showCaption="true"}

You can now configure the nodes on the canvas.&#x20;

## Step 2: Configure Nodes

**To configure the nodes:**

1. Double-click the **DataHub Subscribe** node.&#x20;
   The *Edit DataHub Subscribe&#x20;*&#x6E;ode dialog box displays.
   - In the **Topic&#x20;**&#x66;ield, paste the Raw topic you copied previously.&#x20;
   - If needed, configure the Datahub Subscribe connection. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.
   - Click **Done**, and then click **Deploy**.&#x20;
2. Expand the message window beneath the flow.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lAkehfri9Opxk0GUaHv7B_batch-write-message-bar.png "The message window")
3. Click the **Debug&#x20;**&#x69;con to view debug messages.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Y8QE7Chyax0W07kwl3TAd_batch-write-debug-icon.png "The debug icon")
4. If not already activated, click the debug button to activate it. Then, wait for the first debug message to appear.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TAqS_cDsdu6eH-Xjxo-T4_batch-write-debug-button.png "The debug button")
5. When the first debug message displays, copy the **registerId&#x20;**&#x76;alues. You may need to wait about 10 seconds (as this was the set polling interval value) for the **registerId** values to show up. These are the register IDs for each tag you created. You will use these values to configure the inject node.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-NxEO5h_sofYMNgurwu0s_batch-write-register-ids.png" size="80" width="1920" height="813" caption="Register IDs for tags" position="center" showCaption="true"}
6. Double-click the **inject&#x20;**&#x6E;ode.&#x20;
   - For **msg.payload**, update the **timestamp&#x20;**&#x73;election and select **string**.
   - In the **string&#x20;**&#x66;ield, enter the payload in the following format: `{"registerID_1": value_1, "registerID_2": value_2, "registerID_3": value_3}`. Keep in mind that the order of the register IDs you configure is based on the address values you configured for the tags. `value_1`, `value_2`, `value_3` can be replaced with any value of your choosing.
   - For example, for this use case, the payload will be: `{"C3E1CC7C-143F-46DA-BB70-C40196E56763": 11, "BE047C8C-875F-4D47-84AE-4D224733FE1D": 22, "BB1D6677-F4AE-41FD-A5AA-25E9E4AC7917": 33}`. The first register ID is the one configured with **Address&#x20;**&#x31; in the tag configuration, the second register ID is the one configured with **Address&#x20;**&#x32;, and the third register ID is the one configured with **Address&#x20;**&#x33;. `11`, `22`, `33` are values chosen for this example.
   - Click **Done**.&#x20;
7. Double-click the **DataHub Publish** node.&#x20;
   The *Edit DataHub Publish* node dialog box displays.
   - In the **Topic&#x20;**&#x66;ield, paste the Manage topic you copied previously. Then, replace `manage` in the topic with `batch_write`. For example, `devicehub.manage.0F992AC9-4A73-4D7A-8134-6AB374BBE628` is changed to `devicehub.batch_write.0F992AC9-4A73-4D7A-8134-6AB374BBE628`.
   - Click **Done**, and then click **Deploy**.&#x20;

You can now send the batch data to the device tags.&#x20;

## Step 3: Send Batch Data

**To send the batch data:**

1. Click the **inject&#x20;**&#x62;utton. This sends the data to all the tags configured in the inject node simultaneously. For this use case, the inject node sends the values 11, 22, and 33 to the three device tags.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9hY_bkZ_RBmCL8J0Igo5i_batch-write-inject-button.png" size="80" width="1564" height="427" caption="The inject node button" position="center" showCaption="true"}
2. Wait up to 10 seconds for the next debug message. The three values display based on the **Address&#x20;**&#x61;nd **value&#x20;**&#x70;arameters you configured previously.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5fUCh4bpouOO4c-SQosx3_batch-write-messages.png" size="80" width="1920" height="937" caption="The batch write messages" position="center" showCaption="true"}


[title] Send Data to Azure IoT Hub with a Device Certificate
[path] How-To-Guides/Integration Guides/Azure IoT Hub Guides/

Review the following guide for setting up an outbound data integration between Litmus Edge and Azure IoT Hub using a Device Certificate.&#x20;

# Additional Resources

Refer to the following resources for more information.&#x20;

- [Send device-to-cloud and cloud-to-device messages with IoT Hub](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messaging?WT.mc_id=Portal-Microsoft_Azure_IotHub#message-format)
- [Sending device-to-cloud messages](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support#sending-device-to-cloud-messages) 
- [Using the MQTT protocol directly (as a module)](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support#using-the-mqtt-protocol-directly-as-a-module)

# Before You Begin

You must first [Set up an Azure IoT Hub](docId\:HJbKLRQ2HUmK_Ah21aex3). When you add the IoT device to the hub, select **X.509 Self-Signed** as the **Authentication type&#xA0;**&#x77;hen you add the IoT device in Azure.&#x20;

# Step 1: Add a Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add the Azure IoT Hub using Device Certificates Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **MQTT - Azure IoT Hub using Device Certificates** provider. Define the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: The IP address or server FQDN of the MQTT broker (must be reachable from your edge device).&#x20;
- **Port**: The MQTT broker's port number. The default value is 8883.&#x20;
- **Device ID**: Copy the **Device ID** of your edge device from th&#x65;*&#xA0;IoT Devices* page in the Azure portal and paste it here.
- **Certificate**: Copy the certificate from the **mydevicekeycer.pem** file and paste it here. For Litmus Edge version 3.11.0 and later, you have the option to upload a file. &#x20;
- **Private Key**: Copy the key from the *myprivatekey.pem* file and paste it here.&#x20;
- **Parallel Publish Count**: The maximum number of concurrently published messages. The default value is 16.&#x20;
- **Integration Topic**: The default topic to publish or subscribe to: devices/\[deviceId]/messages/events/. Replace `[deviceId]` with the Device ID copied from Azure.&#x20;
- **LWT Topic**: The topic for MQTT's Last Will and Testament feature.&#x20;
- **LWT payload**: The payload for MQTT's Last Will and Testament feature.&#x20;
- **LWT payload type**: The payload type for MQTT's Last Will and Testament feature. The options are *string&#x20;*&#x61;nd *base64*.&#x20;
- **LWT QoS**: The Quality of Service value for MQTT's Last Will and Testament feature.&#x20;
- **LWT retained**: Select this check box to retain the value for MQTT's Last Will and Testament feature.&#x20;
- **Throttling Limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online.  
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 4: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NfPoJRPuMEBWYUqX9yT81_azureiotdevice.png" size="60" width="369" height="345" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 5: Create Outbound Topics for Connector&#x20;

You will now need to create topics from the tags you added in Step 2. &#x20;

Before creating the topics copy the *Raw Topic* parameter for all tags you want to use for topics. See [Manage Tags](docId\:G9ROOmPC3XZ4Zq6CbNONc) for more information.

**To create topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Add topics to the connector with the details below. See the *Add a Topic to a Connector* section in [Manage Connectors](docId:5hctoRLhgaX3Ikh_lvi0A) for more information.&#x20;
   - **Data Direction**: Select **Local to Remote - Outbound**.&#x20;
   - **Local Data Topic**: Paste th&#x65;*&#x20;Raw Topic* for the tag created in Step 2. &#x20;
   - **Remote Data Topic**: Enter **integration.raw\.outboundtest**.&#x20;
   - **Enable**: Click the toggle to enable the topic.&#x20;
4. Click **Yes&#x20;**&#x74;o add the topic.&#x20;
5. After adding all required topics, navigate to the *Integration&#x20;*&#x70;ane.
6. From the connector tile, ensure the connector is not disabled and still shows a CONNECTED status. &#x20;

# Step 6: View Outbound Messages

You can create a flow in Litmus Edge to view the outbound messages of the connector.&#x20;

**To view outbound messages:**

1. Follow the steps to [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) and add the following nodes.
   - **DataHub Subscribe**:&#x20;
   - **Debug**
2. Connect the two nodes.&#x20;
3. Double-click the **DataHub Subscribe&#xA0;**&#x6E;ode.
   The *Edit DataHub Subscribe node* dialog box appears.
4. Paste the local topic you created in Step 4. &#x20;
5. If needed, configure the *Datahub Subscribe* connection. See the "Step 3: Configure Connector Nodes" section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
6. Click **Done**, and then click **Deploy**.
7. Check the *Debug messages* tab. See the *Additional Options* section in [Manage the Flow Canvas](docId\:qQnwjDagEcrDG0JtIVulu) for more details.&#x20;
8. Verify that outbound messages are displaying.&#x20;


[title] Ping a Host
[path] How-To-Guides/Flows Guides/

You can use Flows to ping a host or an IP address that belongs to the network where your Edge device resides.

**To ping a host:**

1. In Litmus Edge, navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow.&#x20;
   See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
2. Drag an **Inject&#xA0;**&#x6E;ode, a **Ping&#xA0;**&#x6E;ode, and a **Debug** node to the canvas.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/82kHSSF4Fdu8Pp8T61SYm_image.png "Flows canvas with ing node")
3. Double-click the **Ping&#xA0;**&#x6E;ode.
   The *Edit ping node* dialog box appears.
   - **Target:** Enter `www.google.com, <PLC IP Address>`.
   - **Protocol:** Select **Automatic&#x20;**&#x66;rom the drop-down menu.
   - **Mode:** Select **Triggered&#xA0;**&#x66;rom the drop-down menu.
   - **Name:&#x20;**&#x45;nter `Ping PLC`.
   - Click **Done.**
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pIj_pm8U-xerAsHDl4GUx_image.png" size="70" width="558" height="458" position="center" caption="Edit ping node dialog box " showCaption="true"}
4. Connect the nodes together.
   You cannot connect the *Inject* node to the *Ping&#x20;*&#x6E;ode unless you select **Triggered&#x20;**&#x69;n the *Edit ping node&#x20;*&#x64;ialog box. If you select Timed in the Edit ping node dialog box, the *Ping* node sends the messages to the Debug pane every 20 seconds by default.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nis9s3ZjZfB5bblPpLSKx_image.png "Flows canvas with connected nodes")
5. Click **Deploy**.
6. Drag the **Sidebar&#x20;**&#x75;p from the bottom of the canvas and select the **Debug&#x20;**&#x69;con.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/38wHjOYMlPnph8LF082KW_wibbrempplhsoauy11cimage.png "Flows canvas debug section")
7. Click the **Inject&#x20;**&#x6E;ode button to return the *trip time* to ping the address in ms.
   The messages return a boolean `false` if no response is received or if the host is unresolved.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ni-ZF0xEysdCAbVeg_sld_image.png "Completed flow canvas with output")


[title] Receive Data from Azure IoT Hub with an SAS Key
[path] How-To-Guides/Integration Guides/Azure IoT Hub Guides/

Review the following guide for setting up an inbound data integration between Litmus Edge and Azure IoT Hub using an SAS Key.&#x20;

# Before You Begin

You must first [Set up an Azure IoT Hub](docId\:HJbKLRQ2HUmK_Ah21aex3).&#x20;

# Step 1: Add the Azure IoT Hub using SAS Key Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **MQTT - Azure IoT Hub using SAS Key** provider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Enter the IP address or server FQDN of the MQTT broker (must be reachable from your edge device).&#x20;
- **Port**: Enter the MQTT broker's port number. The default value is 8883.&#x20;
- **Device ID**: Copy the *Device ID* of your edge device from th&#x65;*&#xA0;IoT Devices* page in the Azure portal and paste it here.
- **SAS Key**: Copy the primary or secondary shared access key from the *IoT Devices* page in the Azure portal and paste it here.&#x20;
- **Parallel Publish Count**: The maximum number of concurrently published messages. The default value is 16.&#x20;
- **Integration Topic**: The default topic to publish or subscribe to: devices/\[deviceId]/messages/events/. Replace `[deviceId]` with the Device ID copied from Azure.&#x20;
- **Token TTL**: The token expiry time in minutes. The default value is 1440.&#x20;
- **LWT Topic**: The topic for MQTT's Last Will and Testament feature.&#x20;
- **LWT payload**: The payload for MQTT's Last Will and Testament feature.&#x20;
- **LWT payload type**: The payload type for MQTT's Last Will and Testament feature. The options are *string&#x20;*&#x61;nd *base64*.&#x20;
- **LWT QoS**: The Quality of Service value for MQTT's Last Will and Testament feature.&#x20;
- **LWT retained**: Select this check box to retain the value for MQTT's Last Will and Testament feature.&#x20;
- **Throttling Limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online.  
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 2: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kio3tM-CAoE1L2t6-lpSM_azureiotsas.png" size="60" width="369" height="345" position="center" caption="Toggle to enable connector" showCaption="true"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 3: Create Inbound Topics for Connector

You will now need to create inbound topics that will receive data from Azure IoT Hub. &#x20;

**To create topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Add topics to the connector with the details below. See the *Add a Topic to a Connector* section in [Manage Connectors](docId:5hctoRLhgaX3Ikh_lvi0A) for more information.&#x20;
   - **Data Direction**: Select **Remote to Local - Inbound**.&#x20;
   - **Local Data Topic**: Paste th&#x65;*&#x20;Raw Topic* for the tag created in Step 2.&#x20;
   - **Remote Data Topic**: Replace **devices/\[Device ID]/messages/events/** with **devices/\[Device ID]/messages/devicebound/%24.to=%2Fdevices%2Fmessages%2Fdevicebound**.Replace \[Device ID] with the Device ID parameter configured for the connector. &#x20;
   - **Enable**: Click the toggle to enable the topic.&#x20;
4. Click **Yes&#x20;**&#x74;o add the topic.&#x20;
5. After adding all required topics, navigate to the *Integration&#x20;*&#x70;ane.&#x20;
6. From the connector tile, ensure the connector is not disabled and still shows a CONNECTED status. &#x20;

# Step 4: Initiate and View Inbound Messages

You will need to create a flow to view the inbound messages from the connector.&#x20;

**To initiate and view inbound messages:**

1. Follow the steps to [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) and add the following nodes.
   - **DataHub Subscribe**:&#x20;
   - **Debug**
2. Connect the two nodes.&#x20;
3. Double-click the **DataHub Subscribe&#xA0;**&#x6E;ode.
   The *Edit DataHub Subscribe node* dialog box appears.
   - Paste the local topic you created in Step 4. &#x20;
   - If needed, configure the *Datahub Subscribe* connection. See the "Step 3: Configure Connector Nodes" section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
   - Click **Done**, and then click **Deploy**.
4. Log in to Azure.&#x20;
5. Open the device pane and click **Message to Device**.
   The *Message to device* pane appears.&#x20;
6. Enter **Test Message&#xA0;**&#x69;n the **Message Body&#xA0;**&#x66;ield and click **Send Message**.
7. Open the flow you created in Litmus Edge and check the *Debug messages* tab. See the *Additional Options* section in [Manage the Flow Canvas](docId\:qQnwjDagEcrDG0JtIVulu) for more details.&#x20;
8. Verify that *Test Message* appears in the debug results.&#x20;


[title] Use the Linear Prediction Function
[path] How-To-Guides/Analytics Guides/

You can use the Linear Prediction function to forecast future data points by fitting a linear equation to collected data and using statistical techniques to identify the underlying trend.

# **User Scenario**

Review the following scenario for the linear prediction processor function. Then, using an input processor, you will simulate PLC data and predict future data from the window of generated values.

In a steel production facility, the temperature within the blast furnace is a critical parameter that determines the quality of the produced steel. Operators use the Linear Prediction function to forecast the temperature trends based on past readings. By fitting a linear model to the historical temperature data collected from sensors, the function helps predict potential overheating or cooling, which could lead to suboptimal steel quality.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: input1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **1**
- **Tag Name**: Enter **input1**
- **Min\_value**: Enter **1**
- **Max\_value**: Enter **25**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Linear Prediction Processor function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **input1&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select the **Linear Prediction&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Window Size:** Enter a value that represents the range to observe before making each prediction. For this example, we input a value of **60**.
   - **Number of Predictions**: Enter a value to determine how many predictions you want. For this example, we input a value of **2**.
   - **Polling Interval:** Enter the interval in seconds at which you want to publish the data from the input tag. For this example, we input a value of **1**.
   - **TimeInterval:&#x20;**&#x49;f you know your input is going to publish at the expected interval, it is better to disable this timer by entering **0** in the field.
   - Click **Save**.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AG55hRS51Rt_37_lAxC7Y_image.png "Edit a Processor dialog box")
7. Connect the *DataHub Subscribe* processor (tag: *input1*) to the *Linear Prediction* processor with a wire and use the **events&#x20;**&#x63;onnection.
8. On the analytics canvas, click **Save**.
   The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TJYPkDKGOJmgZz-Qgf0b4_image.png "Completed Flows Canvas")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Linear Prediction&#x20;*&#x70;rocessor to view the output values.

The prediction is made by extrapolating the number of predictions in the simple formula `y = m*X + b`.

The output indicates a linear prediction with an intercept of **9.89**, a slope of **0.0434**, and a prediction value of **12.68**.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NO_BdcdibNDQ8z49zCV6p_image.png "Output of Linear Prediction")

&#x20;

[title] Activate a Node-Locked License Offline
[path] Product Features/System/Licenses/Offline Node-Locked License Activations/

If your Litmus Edge doesn't have an internet connection, you can activate a license offline.&#x20;

# Before You Begin

Before completing the steps below, make sure you do the following:

- Have an Ethernet connection for your first bootup of the Litmus Edge device after installation.
- Synchronize the time for the Litmus device. See [Time Synchronization Issues](docId\:nz0hJoda3Xw0TDfM8XDj5) to learn more.&#x20;
- Have access to a browser that is connected to the internet to complete this activation.
- Obtain the license key from Litmus that will be used to activate the license.&#x20;
- If your Internet browser is on a separate computer, use a text file to copy the Activation Key and Offline Activation Key so you can transport the information.

# Activate License Offline

Refer to the appropriate steps depending on if your current license is expired or not.&#x20;

## Activate a License Offline if Your Current License is Not Expired

**To activate a license without an Internet connection if your current license is not expired:**

1. Navigate to **System&#x20;***>&#x20;***License**.&#x20;
   The *License&#x20;*&#x70;ane appears.&#x20;
2. From the *Node-Locked License* section, click **Add License**.

   The *Add a New License* form appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lWgR3MXBwCNYBFEo8l-2k_add-license.png" size="80" width="1238" height="541" caption="The Add License button" position="center" showCaption="true"}
3. Click the **Offline License Activation&#x20;**&#x74;ab.&#x20;
   The *Activation Key&#x20;*&#x61;nd *Offline Activation Key* fields appear.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tS9tsCG_QfPesQbrB5oOL_offline-license-activation.png" size="80" width="1239" height="812" caption="The Offline License Activation tab" position="center" showCaption="true"}
4. Paste or enter the license key obtained from Litmus in the **Activation Key** field. Then, click **Generate Request**.&#x20;
   The Offline Activation Request value appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iza83n6PxfpaiUAJQXdLl_paste-activation-key.png" size="80" width="1238" height="728" caption="The Activation Key and Offline Activation Request fields" position="center" showCaption="true"}
5. Click the **Copy&#x20;**&#x69;con for the *Offline Activation Request*.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5nYk8D4awu32sL9-uDQzF_copy-offline-activation-request.png" size="80" width="1238" height="728" caption="The copy icon for the Offline Activation Request" position="center" showCaption="true"}
6. Click **Open License Portal**.&#x20;
   The *Licensing Portal* opens in a new browser tab.&#x20;
7. In the **Activation Request** field paste th&#x65;*&#x20;Offline Activation Request&#x20;*&#x63;opied in step 5.&#x20;
8. Click th&#x65;**&#x20;I'm not a robot** check box. Then, click **Make License**.&#x20;
9. Click the **Copy&#x20;**&#x69;con for the *Activation Result*.&#x20;
10. Return to the browser tab with Litmus Edge and paste the *Activation Result&#x20;*&#x69;n the **Offline Activation Key** field.&#x20;
11. Click **Submit**.&#x20;
    Your license is now activated.&#x20;

## Activate a License Offline if Your Current License is Expired

**To activate a license without an Internet connection if your current license is expired:**

1. Log in to Litmus Edge. &#x20;
   The *Cloud Activation&#x20;*&#x70;age appears.&#x20;
2. Click **Advanced Options**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LX5GcEBlPSO0_RmvF_rQB_advanced-options.png" size="80" width="1076" height="597" caption="The Advanced Options button" position="center" showCaption="true"}
3. From the *Node-Locked License&#x20;*&#x73;ection, click **Add Licens**e.

   The *Add a New License* form appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eeIJ7inwY_P4LEvDjqB5J_expired-add-license.png" size="80" width="1075" height="791" caption="The Add License button" position="center" showCaption="true"}
4. Click the **Offline License Activation** tab.&#x20;

   The *Activation Key* and *Offline Activation Key&#x20;*&#x66;ields appear.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vETJ_3mLSPRJsxDjthp5s_expired-offline-license-activation.png" size="80" width="1075" height="744" caption="The Offline License Activation tab" position="center" showCaption="true"}
5. Paste or enter the license key in the **Activation Key** field. Then, click **Generate Request**.&#x20;

   The Offline Activation Request value appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YVjHJW4cwbCWn9hTADkb1_expired-generate-request.png" size="80" width="1076" height="880" caption="The Activation Key and Offline Activation Request fields" position="center" showCaption="true"}
6. Click the **Copy&#x20;**&#x69;con for the *Offline Activation Request*.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vducF8GAzpGfH1-QQX9s5_expired-copy-offline-activation-request.png" size="80" width="1075" height="788" position="center" showCaption="false"}
7. Click **Open License Portal**.&#x20;
   The *Licensing Portal* opens in a new browser tab.&#x20;
8. In the **Activation Request** field paste th&#x65;*&#x20;Offline Activation Request&#x20;*&#x63;opied in step 5.&#x20;
9. Click th&#x65;**&#x20;I'm not a robot** check box. Then, click **Make License**.&#x20;
10. Click the **Copy&#x20;**&#x69;con for the *Activation Result*.&#x20;
11. Return to the browser tab with Litmus Edge and paste the *Activation Result&#x20;*&#x69;n the **Offline Activation Key** field.&#x20;
12. Click **Submit**.&#x20;
    Your license is now activated.&#x20;


[title] Generated System Events
[path] Product Features/System/Events/

Events are displayed when you complete a specific action for a component.&#x20;

:::hint{type="info"}
**Note**: Some actions performed are local.&#x20;
:::

The event can be a success or a failure. Review below what each event may display and the possible events for each component.&#x20;

| **Component**         | **This event may display**                                                                                                                 | **Possible events**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Auth (Authentication) | - Username of the user who performed the action
- Username of the affected user
- Name of the affected role
- Failure reason               | * User created
* Failed to create user and failure reason
* User deleted
* Failed to delete user and failure reason
* Role created
* Failed to create role and failure reason
* Role deleted
* Failed to delete role and failure reason
* Role assigned to the user
* Failed to assign role to the user and failure reason
* Role unassigned from the user
* Failed to unassign role from the user and failure reason
* User logged in
* Login lockdown initiated                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Integration           | - Username of the user who performed the action
- Connector type
- Connector name
- A list of affected tags
- Failure reason               | * Connector created
* Failed to create a connector and the failure reason
* Connector removed
* Failed to remove the connector and the failure reason
* Connector enabled
* Connector disabled
* Connected
* Disconnected
* Tags removed
* Tags enabled
* Tags disabled                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| DeviceHub             | - Username of the user who performed the action
- Name of the driver
- A list of affected tags
- Failure reason                            | * Device created
* Failed to create device and failure reason
* Device updated
* Failed to update device and failure reason
* Device removed
* Failed to remove device and failure reason
* Device enabled
* Device disabled
* Device connected
* Device disconnected
* Tags added
* Failed to create tags and failure reason
* Tags removed
* Failed to remove tags and failure reason
* Tags updated (added or removed)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| System                | - Username of the user who performed the action
- Name of the file the backup was restored from
- Certificate information
- Failure reason | * Device rebooted
* Version information
* Software update applied. Confirmation is pending a reboot.
* Software update failed and failure reason
* Activation information
* Activation completed
* Activation failed and failure reason
* Deactivation completed
* Deactivation failed and failure reason
* Disk space limit information
* Low disk space. User-defined level exceeded
* Low disk space. System level exceeded
* Backup - restore information
* Backup restored successfully
* Backup restored with warning(s) and failure reason
* Backup restore failed and failure reason
* Template applied
* Failed to apply the template and failure reason
* New self-signed certificate deployed
* Server SSL certificate deployed
* Failed to deploy server certificate and failure reason
* CA certificate added
* Failed to add CA certificate and failure reason
* CA certificate removed
* Failed to remove CA certificate and failure reason
* Identity certificate added
* Failed to add identity certificate and failure reason
* Identity certificate removed
* Failed to remove identity certificate and failure reason
* Identity certificate renewed
* Identity certificate expired |
| Licensing             | - Username of the user who performed the action
- License key, name, features, expiry date and days to expiry
- Failure reason             | * Trial has started
* License added
* Failed to add license and failure reason
* License activated
* License is expiring soon
* License is expired                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Marketplace           | - Username of the user who performed the action
- Application name
- Failure reason                                                        | * Application created
* Failed to create an application and failure reason
* Application stopped
* Failed to delete the application and failure reason
* Application download started
* Application download completed
* Application download failed and failure reason
* Application started
* Application exited
* Application restarted                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| OPC UA                | - Username of the user who performed the action
- uuid
- Message
- Failure reason                                                          | * Server started / stopped
* User modified
* Certificate or hierarchy update                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Digital Twins         | - The model or instance ID
- Message
- The model or instance name
- uuid<br />                                                             | * Model created
* Model deleted
* Model updated
* Instance created
* Instance updated
* Instance deleted
* Instance enabled
* Instance disabled                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Flows Manager         | - Username of the user that performed the action
- id
- Last heartbeat value
- Message
- Flow name
- uuid<br />                            | * Flow created
* Flow deleted
* Flow updated
* Flow started
* Flow stopped
* Flow memory limit updated
* Failures and errors                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Analytics             | - The group name
- Message
- Username of the user who performed the action
- uuid<br />                                                    | * Create new analytics group
* Analytics group updated
* Analytics group locked and unlocked                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |


[title] Connection to License Server Status Messages
[path] Product Features/System/Licenses/

The following table shows all the possible Status Messages when your Litmus Edge instance connects to a license server.

| **Status Message** | **Details**                                                                                                                                                                                                                                                  |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **PINGING**        | The Litmus Edge instance is trying to query license server status.                                                                                                                                                                                           |
| **UP**             | The Litmus Edge instance has successfully established a communication with the license server.                                                                                                                                                               |
| **NO HEART BEAT**  | The Litmus Edge instance has lost its connection with the license server and is attempting a reconnection. This state can only occur after **UP**.                                                                                                           |
| **DOWN**           | The Litmus Edge instance was not able to successfully establish a connection with the license server or has ceased in attempting a reconnection with the License Server. This state will occur after prolonged duration of **PINGING** or **NO HEART BEAT**. |


[title] Upgrade a Node-Locked License Offline
[path] Product Features/System/Licenses/Offline Node-Locked License Activations/

You can upgrade an active license offline by navigating to **System&#x20;**>**&#x20;License**.&#x20;

# Before You Begin

Before completing the steps below, make sure you do the following:

- Have an Ethernet connection for your first bootup of the Litmus Edge device after installation.
- Have access to a browser that is connected to the internet to complete this activation.
- If your Internet browser is on a separate computer, use a text file to copy the Activation Key and Offline Activation Key so you can transport the information.

# Upgrade a License Offline

**To upgrade a license without an Internet connection:**

1. Navigate to **System&#x20;***>&#x20;***License**.
   The *License&#x20;*&#x70;ane appears. &#x20;
2. From the *Node-Locked License* section, click the **Upgrade License** icon for the license you need to upgrade. The *Upgrade License* icon only appears for the licenses whose type supports the upgrade operation.
   The *Upgrade License* form appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zGuZrR2VbT-ndIyMnK7qq_upgrade-icon.png" size="80" width="1217" height="531" caption="The Upgrade License icon" position="center" showCaption="true"}
3. Click the **Upgrade License Offline** tab.
   The *Activation Key* and *Offline Activation Key* fields appear.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/o91MgzEAVoRuVqMhjxPa-_offline-activation-tab.png" size="80" width="1217" height="841" caption="The Upgrade License Offline tab" position="center" showCaption="true"}
4. Paste or enter the license key obtained from Litmus in the **Activation Key** field. Then, click **Generate Request**.
   The Offline Activation Request value appears.
5. Click the **Copy&#x20;**&#x69;con for the *Offline Activation Request*.
6. Click **Open License Portal**.&#x20;
   The *Licensing Portal* opens in a new browser tab.&#x20;
7. In the **Activation Request** field paste th&#x65;*&#x20;Offline Activation Request&#x20;*&#x63;opied in step 5.&#x20;
8. Click th&#x65;**&#x20;I'm not a robot** check box. Then, click **Make License**.&#x20;
9. Click the **Copy&#x20;**&#x69;con for the *Activation Result*.&#x20;
10. Return to the browser tab with Litmus Edge and paste the *Activation Result&#x20;*&#x69;n the **Offline Activation Key** field.&#x20;
11. Click **Submit**.&#x20;
    Your license is now upgraded.&#x20;


[title] Use the Inputs Processor Function
[path] How-To-Guides/Analytics Guides/

You can use multiple inputs to create time-series functions and calculate Key Performance Indicators (KPIs). Multiple inputs are to be provided with the value type connection, and then the respective functions are calculated.

# Understanding Different Inputs Functions

Use one of the following functions for your inputs:

- **Inputs Average:&#x20;**&#x43;alculate the average of the inputs in the Flow.&#x20;
- **Inputs Maximum:&#x20;**&#x46;ind the maximum value between the inputs in the Flow.
- **Inputs Minimum:&#x20;**&#x46;ind the minimum value between the inputs in the Flow.
- **Inputs Sum:&#x20;**&#x41;dd all the input values in the Flow.

# **User Scenario**

Review the following scenario for the inputs processor function. Then, you will simulate PLC data and calculate KPIs using multiple inputs processor functions.

In a production facility, several PLCs use multiple sensors to monitor parameters such as temperature, pressure, and speed.

- You can calculate the average temperature of various sections of the production line using th&#x65;**&#x20;Inputs Average** function.
- You can track the highest pressure with the **Inputs Maximum** function.
- You can track machine downtime by using the **Inputs Minimum** function.
- You can aggregate total production output over a specified period using the **Inputs Sum** function.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tags. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more. Each tag will be used for simulating the different Join processor outputs mentioned above.

## **Tag 1: tag1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **int64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **tag1**
- **Min\_value**: Enter **49**.
- **Max\_value**: Enter **49**.

## **Tag 2: tag2**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **int64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **tag2**
- **Min\_value**: Enter **50**.
- **Max\_value**: Enter **50**.

## **Tag 3: tag3**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **int64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **tag3**
- **Min\_value**: Enter **51**.
- **Max\_value**: Enter **51**.

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tags you previously created. Follow the appropriate step out of 3a, 3b, 3c, or 3d based on the Inputs Processor Function you want to use.

**To create an analytics flow with the Inputs Processor function:**

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **tag1**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Repeat steps 2-5 to add another *DataHub Subscribe* node. Select the alias topic for the **tag2&#x20;**&#x61;nd **tag3&#x20;**&#x72;espectively.&#x20;

## Step 3a: Configure Inputs Average Processor

1. Click **Add processor** again and select **Inputs Average**.
   The following information defines this function:
   - **Field Name**: Select the field name for which you want to apply the function. The field name must be available in all the inputs. For example, **value&#xA0;**&#x6F;r **downtime**.
   - **Processing Type**: Select **unsigned&#xA0;**&#x66;rom the drop-down list.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BCyFIUetSCaS_0dX58l3k_image.png "Inputs Average dialog box")
3. Connect the DataHub Subscribe processor (tag: *tag1)* to the Inputs Average processor with a wire and enter the definition of **Avg\_tag1&#x20;**&#x66;or the **values&#x20;**&#x63;onnection.
4. Connect the DataHub Subscribe processor (tag: *tag2*) to the Inputs Average processor with a wire and enter a definition of **Avg\_tag2&#x20;**&#x66;or the **values&#x20;**&#x63;onnection.
5. Connect the DataHub Subscribe processor (tag: *tag3*) to the Inputs Average processor with a wire and enter a definition of **Avg\_tag3&#x20;**&#x66;or the **values&#x20;**&#x63;onnection.
6. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/2iZ9cUqACJwaR3lCvoQDA_image.png "Completed Inputs Average flow canvas")

## Step 3b: Configure Inputs Maximum Processor

1. Click **Add processor** again and select **Inputs Maximum**.
   The following information defines this function:
   - **Field Name**: Select the field name for which you want to apply the function. The field name must be available in all the inputs. For example, **value&#xA0;**&#x6F;r **downtime**.
   - **Processing Type**: Select **unsigned&#xA0;**&#x66;rom the drop-down list.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vbecSmSTL0M2BJ6hyfUZm_image.png "Inputs Maximum dialog box")
3. Connect the DataHub Subscribe processor (tag: *tag1)* to the Inputs Maximum processor with a wire and enter the definition of **Max\_tag1&#x20;**&#x66;or the **values&#x20;**&#x63;onnection.
4. Connect the DataHub Subscribe processor (tag: *tag2*) to the Inputs Maximum processor with a wire and enter a definition of **Max\_tag2&#x20;**&#x66;or the **values&#x20;**&#x63;onnection.
5. Connect the DataHub Subscribe processor (tag: *tag3*) to the Inputs Maximum processor with a wire and enter a definition of **Max\_tag3&#x20;**&#x66;or the **values&#x20;**&#x63;onnection.
6. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HOKePkxOWTaC6Z4hCyEwk_image.png "Completed Inputs Maximum flow canvas")

## Step 3c: Configure Inputs Minimum Processor

1. Click **Add processor** again and select **Inputs Minimum**.
   The following information defines this function:
   - **Field Name**: Select the field name for which you want to apply the function. The field name must be available in all the inputs. For example, **value&#xA0;**&#x6F;r **downtime**.
   - **Processing Type**: Select **unsigned&#xA0;**&#x66;rom the drop-down list.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6joG4DEiPslfD66t7ANne_image.png "Inputs Minimum dialog box")
3. Connect the DataHub Subscribe processor (tag: *tag1)* to the Inputs Minimum processor with a wire and enter the definition of **Min\_tag1&#x20;**&#x66;or the **values&#x20;**&#x63;onnection.
4. Connect the DataHub Subscribe processor (tag: *tag2*) to the Inputs Minimum processor with a wire and enter a definition of **Min\_tag2&#x20;**&#x66;or the **values&#x20;**&#x63;onnection.
5. Connect the DataHub Subscribe processor (tag: *tag3*) to the Inputs Minimum processor with a wire and enter a definition of **Min\_tag3&#x20;**&#x66;or the **values&#x20;**&#x63;onnection.
6. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vd6g-b6-mjVJnGdxNYveQ_image.png "Completed Inputs Minimum flow canvas")

## Step 3d: Configure Inputs Sum Processor

1. Click **Add processor** again and select **Inputs Sum**.
   The following information defines this function:
   - **Field Name**: Select the field name for which you want to apply the function. The field name must be available in all the inputs. For example, **value&#xA0;**&#x6F;r **downtime**.
   - **Processing Type**: Select **unsigned&#xA0;**&#x66;rom the drop-down list.
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kPxz2KwyM-Lc6akwNHN7L_image.png "Inputs Sum dialog box")
3. Connect the DataHub Subscribe processor (tag: *tag1)* to the Inputs Sum processor with a wire and enter the definition of **Sum\_tag1&#x20;**&#x66;or the **values&#x20;**&#x63;onnection.
4. Connect the DataHub Subscribe processor (tag: *tag2*) to the Inputs Sum processor with a wire and enter a definition of **Sum\_tag2&#x20;**&#x66;or the **values&#x20;**&#x63;onnection.
5. Connect the DataHub Subscribe processor (tag: *tag3*) to the Inputs Sum processor with a wire and enter a definition of **Sum\_tag3&#x20;**&#x66;or the **values &#x20;**&#x63;onnection.
6. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/mYm8ErZA04pHQrJH7yjvs_image.png "Completed Inputs Sum flow canvas")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Inputs* processor to view the output values.

## View Inputs Average Output

The average function calculates the average of three defined tag values.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Rce7f7T72xqg7-znCYU35_image.png "Average of inputs value")

## View Inputs Maximum Output

The maximum function finds the largest of three defined tag values.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9acVtTkzimX8LfRDJilN6_image.png "Maximum of all inputs")

## View Inputs Minimum Output

The minimum function finds the lowest of three defined tag values.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/c_qubzIymXk0ToXcXGrG6_image.png "Minimum of inputs value")

## View Inputs Summation Output

&#x20;The summation function calculates the total of three defined tag values.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lqp0JI8ILDCvr2qspYhvB_image.png "Summation of inputs value")


[title] Zerotouch
[path] Product Features/System/

:::hint{type="info"}
**Note**: The Zerotouch feature is available for Litmus Edge version 3.5.2 and later.&#x20;
:::

Zerotouch provisioning allows you to automatically install Litmus Edge configurations, applications, and docker files onto multiple devices.&#x20;

# Zerotouch Installation

See [Zerotouch Installation](docId\:TTYdfGFKJU_fbSCfoFa3e) to learn more about installing Litmus Edge onto devices using Zerotouch.&#x20;

# Access Zerotouch UI

**To access the Zerotouch pane:&#x20;**

1. Log in to Litmus Edge.
2. From the Navigation panel, navigate to **System** >**&#x20;Zerotouch**.
   The *Zerotouch&#x20;*&#x70;ane appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OhvwPwaTVzMDtVXouwsC1_zerotouch-ui.png" size="80" width="1081" height="697" caption="Zerotouch pane" position="center" showCaption="true"}

From the Zerotouch pane, you can review applications that were included in a Zerotouch installation, their status, and the reasons for any installation failures.&#x20;

[title] Use Access to Write to a Topic
[path] How-To-Guides/Flows Guides/

You can use an **Access Publish&#x20;**&#x6E;ode to write to a topic through the local message broker by using flows. This guide uses the string message `Hi` to write to a topic.

# &#x20;Before you Begin

- Make sure you create an Access API account. See [Create an API Account](docId\:FjKwI7dLgj_21twngGwjV) and [Manage API Accounts](docId\:CEHW4kagrs6kF7sOyzOBK) for more information.
- Make sure you have created a flow to read from a topic. See [Use Access to Read from a Topic](docId\:DjC5x8C48Wdjs7mbqNuxO) for more information.

**To write a topic using Access:**

1. In Litmus Edge, navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow.&#x20;
   See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
2. Drag the **Access Publish** and **Inject&#x20;**&#x6E;odes to the canvas and wire them together.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/p8bDz90FNYOVUg5DqZMs0_image.png" size="70" width="707" height="148" position="center" caption="Access Publish node" showCaption="true"}
3. In Litmus Edge, navigate to **System&#x20;**> **Tokens.**
4. Click the **Action menu&#x20;**&#x66;or the API account you created previously and select **Edit topics**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/soVRVtUnE8YwNehhosaCr_image.png "System Tokens page")
5. From the *Edit topics* dialog box, do the following:
   - Enter `test-topic` in the **Write Topics** field, and click **Add Write Topic**.
     The topic name appears below the *Topic Name* field.
     Make sure that there are no spaces in the topic name.
   - Enter the same topic name(`test-topic`) in the **Read Topics** field, and click **Add Read Topic**.
     The topic name appears below the *Topic Name* field.
     Make sure that there are no spaces in the topic name.
   - Click **Update**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Tly-ldZWH1MpXmvcNmSZU_image.png" size="70" width="613" height="297" position="center" caption="Edit topics dialog box" showCaption="true"}
6. Return to the **Flows&#x20;**&#x62;rowser tab and double-click the **Access Publish&#x20;**&#x6E;ode. The *Edit Access Publish****&#xA0;****node* dialog box appears.
   - **Topic Name**: Paste the topic name `test-topic` you added in the Access **Topic Name&#xA0;**&#x66;ield.
   - Click the **Edit&#x20;**&#x69;con next to the *Access* field.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/rdajdjQFSdQw3uyOnGBNl_image.png" size="70" width="452" height="272" position="center" caption="Edit Access Publish node dialog box" showCaption="true"}
7. Return to the **System&#x20;**>**&#x20;Tokens&#xA0;**&#x62;rowser tab and do the following:
   - Click the **Action menu&#x20;**&#x66;or the API account you created previously and select **View API Key.**
   - Click the **Copy&#x20;**&#x69;con next to the *API Key*.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LAq65EwxGzLPNXkXUcmWC_image.png "Access accounts table")
8. Return to the *Edit Access Connect node* dialog box in the **Flows&#x20;**&#x62;rowser tab and do the following:
   - **API Key:&#x20;**&#x50;aste the API key you copied.
   - Click **Add&#x20;**&#x6F;r **Update**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/PiOh8zafHdCFB2yOF9_8E_image.png" size="70" width="456" height="247" position="center" caption="Edit Access Connect node dialog box" showCaption="true"}
9. Click **Done.**
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/tHCI3fhRQV6J7XAOzBWMu_image.png" size="70" width="450" height="298" position="center" caption="Edit access-publish node dialog box" showCaption="true"}
10. Double-click the **Inject&#xA0;**&#x6E;ode.
    The *Edit inject node* dialog box appears.
    - **msg.payload:** Select the **String&#xA0;**&#x6F;ption from the drop-down list and enter `Hi` message in the **Payload&#xA0;**&#x66;ield.
    - **msg.topic:** Enter the name of the write topic (`test-topic`) you added in the *Access Write Topic* field.
    - **Repeat:** Select **interval&#xA0;**&#x66;rom the drop-down list.
    - **every:** Enter a value for how often to add a message.
    - Click **Done.**
      ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/0E8SUxV8GJKU1I1mbyixJ_image.png" size="70" width="777" height="885" position="center" caption="Edit inject node dialog box " showCaption="true"}
11. Drag an **Access Subscribe** node to the canvas and wire it to the **Debug&#xA0;**&#x6E;ode.
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HDePtjxGW2TzFk0UKG4bH_image.png" size="70" width="745" height="228" position="center" caption="Completed flows canvas" showCaption="true"}
12. Double-click the **Access Subscribe&#xA0;**&#x6E;ode.&#x20;
    The *Edit access-subscribe node&#x20;*&#x64;ialog box appears.
    - **Topic Name:&#x20;**&#x45;nter the name of the write topic you added in the *Access Write Topic* field.
    - **Access:** From the drop-down list, select the **Access Connect** you defined in the *Access-Publish* node.
    - Click **Done.**
      ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SqDQXeFYD0wwDlQVOrl09_image.png" size="70" width="452" height="293" position="center" caption="Edit access-subscribe node dialog box" showCaption="true"}
13. Click **Deploy**.
14. Expand the message window beneath the flow and click the **Debug&#x20;**&#x69;con.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wI_bbReMPplhSo_AuY11c_image.png "Flows canvas debug section")
15. Click the **Debug&#x20;**&#x6E;ode button to view the output in the *Debug message* window.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9yiJJK7_PErFLTaXIK94f_image.png "View the flow output")


[title] Aveva Data Hub Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up and integration between Litmus Edge and Aveva Data Hub. Once the integration is set up, you can send and receive data through OSIsoft Messaging Format.

# Before You Begin

You must have access to [Aveva Data Hub](https://datahub.connect.aveva.com/) and have the correct admin permissions.&#x20;

# Step 1: Add a Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Create Client in Aveva Data Hub

You will need to create a client-credentials client and do the following:

- Set the role to Tenant Administrator.&#x20;
- Copy the *Client Secret* for use later.&#x20;

See the Aveva Data Hub documentation [Get started with client-credentials](https://docs.aveva.com/bundle/data-hub/page/overview/get-started/clients/gs-client-credentials-clients.html) clients to learn more.&#x20;

# Step 4: Add Type in Aveva Data Hub

Add a type in Aveva Data Hub to define the schema of the data coming from Litmus Edge. This allows Aveva Data Hub to identify the payload and associate events with streams of data.&#x20;

When you add the type, do the following:

- Select **Standard Type**.
- Enter values for **Id**, **Name**, and **Description**.&#x20;
- Add the following properties.

| **Key**         | **Id**      | **Name**    | **Base Type** |
| --------------- | ----------- | ----------- | ------------- |
| Select checkbox | timestamp   | timestamp   | Int64         |
| Select checkbox | tagName     | tagName     | String        |
| Select checkbox | deviceName  | deviceName  | String        |
|                 | success     | success     | Boolean       |
|                 | datatype    | datatype    | String        |
|                 | value       | value       | String        |
|                 | deviceID    | deviceID    | String        |
|                 | description | description | String        |
|                 | registerId  | registerId  | String        |

See the Aveva Data Hub documentation [Add a type](https://docs.aveva.com/bundle/data-hub/page/add-organize-data/store-data/types/types-procedure.html) to learn more.&#x20;

# Step 5: Add Stream in Aveva Data Hub

After adding the type, add a stream that will index data based on the properties of the type you created previously.&#x20;

When you create the stream, select the type you created in Step 2.&#x20;

See the Aveva Data Hub documentation [Manage streams](https://docs.aveva.com/bundle/data-hub/page/add-organize-data/store-data/streams/streams-manage-streams.html) to learn more.&#x20;

# Step 6: Add the Aveva Data Hub Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **Aveva Data Hub** provider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Description&#x20;**(Optional): Enter a description. &#x20;
- **Endpoint**: Enter the appropriate regional endpoint (U.S. West, North Europe, Australia East), which can be found in Aveva Data Hub by navigating to **Security&#x20;**> **Clients&#x20;**> **Client&#x20;**> **Connection Information** > **Regional Endpoints**.&#x20;
  - U.S. West: https\://uswe.datahub.connect.aveva.com/
  - North Europe: https\://euno.datahub.connect.aveva.com/
  - Australia East: https\://auea.datahub.connect.aveva.com/
- **Client Id**: Enter your Aveva Data Hub Client ID, which can be found by navigating to **Security&#x20;**> **Clients&#x20;**> **Client&#x20;**> **Details**> **Client ID**.
- **Client Secret**: Enter your Aveva Data Hub Client Secret, which can be copied when creating a client in Step 1. If you need to create a new secret, navigate to **Security&#x20;**> **Clients&#x20;**> **Client&#x20;**> **Secrets**.
- **Tenant Id**: Enter your Aveva Data Hub Tenant ID. You can find it by navigating to **Security&#x20;**> **Client&#x20;**> **Details**.&#x20;
- **Stream Id**: Enter the Stream ID you created in Step 3. You can find it by navigating to **Data Management**.&#x20;
- **Namespace**: Enter the namespace of the Default SDS stream name. You can find it in the stream details.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 7: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/08DVjM7ZnFiItUg4jUyUD_aveva.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

After adding the connector in Litmus Edge, you have the option of viewing the data flowing through the connector in Aveva Data Hub or Litmus Edge.&#x20;

# View Data in Aveva Data Hub

You can view the stream data in Aveva Data Hub.&#x20;

## Create Outbound Topics for Connector

You will need to create outbound topics for the connector from the tags created in Step 2. If there any existing inbound topics already created for the connector, disable them before creating the outbound topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

## Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

## View Stream Data in Aveva Data Hub

You can now view the data from the DeviceHub tag(s) in Aveva Data Hub. When you configure the stream data view, select **Get Range Values** from the *Query Type* drop-down list.&#x20;

See the Aveva Data Hub documentation [View stream data](https://docs.aveva.com/bundle/data-hub/page/add-organize-data/store-data/streams/streams-view-data.html) to learn more.&#x20;

# View Data in Litmus Edge

You have the option of adding inbound topics in the Aveva Data Hub connector, so that you can view data in the Litmus Edge Flows Manager.&#x20;

## Create Inbound Topic for Connector

You will use the stream ID from Aveva Data Hub to create the inbound topic. If there any existing outbound topics already created for the connector, disable them before creating the inbound topic.&#x20;

**To create the inbound topic:**

1. Click the connector tile.&#x20;
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Add a new subscription** icon.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FwlN--YLxnjlv2RjsB7GJ_add-topic.png" size="80" width="1043" height="444" position="center" showCaption="false"}
4. Configure the topic.&#x20;
   - **Data Direction**: Select **Remote to Local - Inbound**.&#x20;
   - **Local Data Topic** (Optional): Paste the Stream ID value for the local data topic name. A prefix will be automatically added to the name.&#x20;
   - **Remote Data Topic**: Copy the stream ID you created in Aveva Data Hub and paste it here.&#x20;
   - **Description&#x20;**(Optional): Enter a description for the topic.&#x20;
   - **Enable**: Click the toggle to enable the topic.&#x20;
5. Click **OK**.&#x20;

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

## Copy Inbound Topic Name

From the *Topics&#x20;*&#x74;ab for the connector, copy the *Local Topic* name for the new topic and refer to it when creating the flow.&#x20;

## Create Flow&#x20;

You can now create the flow that will display the data from the connector.&#x20;

**To create the flow:**

1. Navigate to **Flows Manager**.&#x20;
2. For a Flows Manager, click the **Go To Flow Definition** icon.&#x20;
   The flow canvas opens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/t2rTotjVdzoBvR3kOruKK_go-to-flow-definition.png" size="80" width="1010" height="490" caption="Go To Flow Definition icon" position="center" showCaption="true"}
3. On the flow canvas, drag the **Datahub Subscribe** node and **debug&#x20;**&#x6E;ode onto the canvas. Then, connect the two nodes.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7CHgVLn3EpkwH-VMrw-d4_nodes.png" size="80" width="870" height="494" caption="The DataHub Subscribe and Debug nodes" position="center" showCaption="true"}
4. Double-click the **DataHub Subscribe** node.
   The *Edit DataHub Subscribe node* dialog box appears.
   - In the **Topic&#x20;**&#x66;ield, paste the inbound topic name you previously copied (Remote Data Topic) .
   - If needed, configure the Datahub Subscribe connection. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
   - Optionally, add a name for the node.&#x20;
   - Click **Done**, and then click **Deploy**.&#x20;
5. Expand the message window beneath the flow to view debug messages.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WT7s2416YA3IyVPLb1XrD_aveva-message-window.png" size="80" width="1103" height="824" caption="The message window" position="center" showCaption="true"}
6. Click the **Debug&#x20;**&#x69;con.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TE6Fo-dPlgqCDguff7BDf_aveva-debug-icon.png" size="80" width="1103" height="824" caption="The Debug icon" position="center" showCaption="true"}
7. Confirm that messages are displaying in the message window.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9xXhqW5qRNu6dUYahMX65_aveva-debug-message.png" size="80" width="1242" height="661" caption="Data message displayed in debug window" position="center" showCaption="true"}


[title] Offline Node-Locked License Activations
[path] Product Features/System/Licenses/

If your Litmus Edge doesn't have an internet connection, you can do the following:

- [Activate a Node-Locked License Offline](docId\:G1c_-lr4pvtRxoqx-DXYN)
- [Upgrade a Node-Locked License Offline](docId:1VdgdV8fEU_Xx-zx41b9o)


[title] Upgrade a Node-Locked License
[path] Product Features/System/Licenses/Online Node-Locked License Activations/

You can upgrade an active license by navigating to **System&#x20;**>**&#x20;License**.&#x20;

**To upgrade a license online:**

1. Navigate to **System&#x20;***>&#x20;***License**.&#x20;
   The *License&#x20;*&#x70;ane appears.&#x20;
2. From the *Node-Locked License* section, click the **Upgrade License&#x20;**&#x69;con for the license you need to upgrade. The *Upgrade License* icon only appears for the licenses whose type supports the upgrade operation.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vOA7O3OmR375dPwDtLX2c_upgrade-icon.png" size="80" width="1217" height="531" caption="The Upgrade License icon" position="center" showCaption="true"}
3. Enter the license activation key into the **Upgrade License Online** field. Make sure you include all the dashes when entering the license activation key.
4. Click **Submit**.
5. In the confirmation box that appears, click **Yes**.


[title] Remove a Node-Locked License
[path] Product Features/System/Licenses/

You can remove the following licenses from the **System&#x20;**>**&#x20;License** pane.&#x20;

- Add-on node-locked licenses
- Core node-locked licenses if no active add-on licenses are associated with them

**To remove a license:**

1. Navigate to **System&#x20;***>&#x20;***License**.
   The *License&#x20;*&#x70;ane appears.&#x20;
2. From the *Node-Locked License* section, click the **Remove License** icon for the license you want to remove. The *Remove License* icon appears grayed out for those licenses that cannot be removed. To remove a core node-locked license, you need to first remove all add-on licenses associated with it.
   The *Confirm License Removal&#x20;*&#x64;ialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CmYl7_km5KdF5RAGXuiF4_remove-license.png" size="80" width="1217" height="531" caption="The Remove License icon" position="center" showCaption="true"}
3. Click **Yes, remove license**.


[title] Use the Siemens S7 Browse Agent
[path] How-To-Guides/DeviceHub Guides/

With the Siemens S7 Browse Agent, you can export tags and variables from a TIA Portal project and import them into Litmus Edge. The agent will export all input (I), output (Q), and memory (M) tags from the tag table and tags from all non-optimized data blocks. See [Tag Data Type Conversions](docId\:GFiOHAR7NSF71gFkM3-aB) to learn more.

# Before You Begin

- Create a TIA Portal project that includes the S7 PLC that you want to add to DeviceHub. The project should have only one PLC. If you have more than one PLC in your project, create copies of your project with only PLC in each project and run the agent separately for each project.
- Go to the Litmus Central Portal and [download](https://central.litmus.io/listing/siemens-s7-browse-agent/) the corresponding agent for your version of TIA Portal.
- If the TIA Portal project is open, close the project.
- Follow the steps below to enable TIA Openness.

## Enable TIA Openness

1. Type `lusrmgr.msc` in the start menu and press Enter.
   The local user management console opens.
2. Click **Groups**. Then, right-click **Siemens TIA Openness&#x20;**&#x61;nd select **Add to Group...**
   The *Siemens TIA Openness Properties* window opens.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/FDOIchvbYOFq79Zsf6riy_image.png" size="80" width="946" height="723" caption="lusrmgr window" position="center" showCaption="true" indent="2"}

3. On the *Siemens TIA Openness Properties* window, click **Add...**
   The *Select Users* window opens.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HimnZADJhVDteaiPlS54I_image-1.png" size="80" width="831" height="573" caption="Adding the user to the Siemens TIA Openness group" position="center" showCaption="true" indent="2"}

4. On the *Select Users* window, click **Advanced**.
   Another window titled *Select Users&#x20;*&#x6F;pens.
5. Click **Find Now** in the new window.
   The search results populate.
   Find your Windows user, select it, then click **OK**.
   The new *Select Users* window closes, and the original Select Users window now shows your user name.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UWKJNDWLhmDgcmHjJVTVh_image-2.png" size="80" width="458" height="253" caption="Select Users window" position="center" showCaption="true" indent="2"}

6. Click **OK**.
   The original *Select Users* window closes.
7. On the *Siemens TIA Openness Properties* window, click **Apply**.
8. Close the remaining windows, log out of Windows, and then log back in.

# Use the Siemens S7 Browse Agent

Using the Siemens S7 Browse Agent includes the following tasks:

- Step 1: Add Siemens S7 Device to DeviceHub
- Step 2: Extract the Siemens S7 Browse Agent
- Step 3: Copy the Library File
- Step 4: Create an API Key
- Step 5: Configure the Siemens S7 Browse Agent
- Step 6: Export Tags to CSV File
- Step 7: Upload Tags to Litmus Edge

## Step 1: Add Siemens S7 Device to DeviceHub

1. In Litmus Edge, navigate to **DeviceHub&#x20;**> **Devices**.
2. Click the **Connect a Device** box.
   The *Connect Device&#x20;*&#x64;ialog box appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/atJL37pPuLGI2bM_w2ibz_adddevice.png" size="80" width="1046" height="528" caption="Connect a Device box" position="center" showCaption="true" indent="2"}

3. In the **Device Type** drop-down list, select **Siemens**.
4. In the **Driver Name** drop-down list, select **Siemens S7&#x20;**&#x6F;r **Siemens S7-Advanced (Gen1)**.
5. Configure the parameters for the device. See [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4) or [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d) to learn more.
6. Copy the name you gave to the device and paste it somewhere for reference later.&#x20;

## Step 2: Extract the Siemens S7 Browse Agent

1. In Windows Explorer, extract the contents of the downloaded zip file.
2. Open the extracted folders until you view the files *ExportCSV.16.exe* and *litmus.siemens.dll*.

## Step 3: Copy the Library File

1. Locate the file *Siemens.Engineering.dll&#x20;*&#x69;n your program installation folder.
   - If you have TIA Portal V15, it is located in **Program Files > Siemens > Automation > Portal V15 > Public API > V15**.
   - If you have TIA Portal V15.1, it is located in **Program Files > Siemens > Automation > Portal V15\_1 > Public API > V15\_1**.
   - If you have TIA Portal V16, it is located in **Program Files > Siemens > Automation > Portal V16 > Public API > V16**.
2. Copy *Siemens.Engineering.dll*.
3. Paste the file into the Siemens S7 Browse Agent folder, next to the .exe file and *litmus.siemens.dll*.

## Step 4: Create an API Key

This is an optional step which allows the Siemens S7 Browse Agent to upload the tag CSV file to Litmus Edge.

**To create an AP key:&#x20;**

1. Navigate to **System&#x20;**>**&#x20;Tokens**.
2. In the *REST API Keys* section, click the **Add REST API Key** icon.&#x20;
3. Enter a name for the token in the **Key Name&#xA0;**&#x66;ield, and then click **Create API Key**.
4. In the *Value&#x20;*&#x63;olumn for the key, click the **Copy&#xA0;**&#x69;con and paste it somewhere for reference later.&#x20;

## Step 5: Configure the Siemens S7 Browse Agent

1. From the V16 folder, double-click the ExportCSV.16.exe file to open the agent.
   The *DeviceHub Automated Tag Generation* dialog box appears.
2. Click the **Project Diff File** **Browse&#x20;**&#x69;con and navigate to your TIA Portal project. The default save file path is **Documents > Automation > Project\_Name > Project\_Name.ap16**, where Project\_Name is the name you gave your project.
3. Select the project file and click **Open**.
4. Click the **CSV File Browse&#x20;**&#x69;con, navigate to the folder you want to store the CSV file, enter **v15 tags** in the **File Name&#xA0;**&#x66;ield, and then click **Save**.
5. Configure the following parameters:
   - **DeviceHub Driver**: During "Step 1: Add Siemens S7 Device to DeviceHub," if you added a device using the Siemens S7-Advanced (Gen1) driver, select **Gen1**. If you used the Siemens S7 driver, select **Gen2**.
   - **Device Name**: Paste the device name that you copied in "Step 1: Add Siemens S7 Device to DeviceHub."
   - **Gateway Address&#x20;**(optional): Enter the Litmus Edge IP Address.
   - **API Token&#x20;**(optional): Paste the REST API Key that you copied in "Step 4: Create an API Key."

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EbGr0A5qFXtgYXTD12amW_image.png" size="48" width="352" height="495" caption="The Siemens S7 Browse Agent" position="center" showCaption="true"}

## Step 6: Export Tags to CSV File

1. From the *Siemens S7 Browse Agent* dialog box, click **Export**.
2. View the *Logs&#x20;*&#x70;ane to see the export process.
   When the **Openness access** popup window appears, select **Yes** or **Yes to all** to grant access to the agent.
   This process may take some time. When you see *Finished&#xA0;*&#x69;n the *Logs&#x20;*&#x70;ane, the tags are exported to a CSV file.
3. Navigate to the folder on your hard drive that you designated for the CSV file and confirm it was successfully created.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TEmq6xf_HMZZrS71DexZs_image.png" size="42" width="500" height="260" caption="The Openness access popup" position="center" showCaption="true"}

## Step 7: Upload Tags to Litmus Edge

If you skipped "Step 4: Create an API Key," you will need to upload the tag CSV file from Litmus Edge DeviceHub instead of from the Siemens S7 Browse Agent. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.

1. From the *Siemens S7 Browse Agent* dialog box, click **Upload**.
2. In Litmus Edge, navigate to **DeviceHub&#x20;**>**&#x20;Tags**.
3. Click the Siemens S7 device.
4. Confirm the tags from the CSV file are successfully uploaded.


[title] Create Audio Notifications for Sensor Readings
[path] How-To-Guides/Flows Guides/

You can use Flows to create dashboards to notify you when sensor anomalies occur.

# User Scenario

Imagine a situation in an automobile assembly plant temperature sensors detect readings that are beyond the normal range. In such a scenario, the system can immediately trigger an audio alert, which can help to quickly address potential issues.&#x20;

**To create a flow that notifies you of temperature reading alerts:**

1. In Litmus Edge, navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow. See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.
2. Drag an **Inject** node, **Function&#x20;**&#x6E;ode, and **Serial out** node onto the canvas and connect them.
3. Create a new connection by adding **Serial in**, **Function**, and **Audio out&#x20;**&#x6E;odes to the canvas and connecting them together.
   The *two connections* should be connected as shown below.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/011yIOGsXZY095XaicBdv_image.png "Flows canvas")
4. Double-click either the **Serial in** or **Serial out&#x20;**&#x6E;ode.
   The *Edit serial node&#x20;*&#x64;ialog box appears.&#x20;
   - **Serial Port:&#x20;**&#x43;lick the **Edit&#x20;**&#x69;con.&#x20;
     The *Edit serial-port node&#x20;*&#x70;age opens.
     - Create a configuration for the connected device. Make sure that the **Serial Port&#x20;**&#x61;nd **Baud rate** match the device information.
     - Click **Update**.
   - Click **Done**.
5. Repeat **step 4** to configure each *serial* node in the flow.
6. Double-click the **Inject&#x20;**&#x6E;ode.&#x20;
   The *Edit inject node&#x20;*&#x64;ialog box appears.
   - **msg.payload**: Select **string&#x20;**&#x66;rom the drop-down option and enter a string message that requests the desired data from it.&#x20;
     In this use case, *F* is used to request temperature data in Fahrenheit from the sensor.&#x20;
   - **Repeat:** Set an interval to have the node automatically request data after every one second.
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Y5W_AB5PZb0o9ZTrSaCcB_image.png" size="70" width="778" height="893" position="center" caption="Edit inject node dialog box" showCaption="true"}
7. Double-click th&#x65;**&#x20;Audio out** node.&#x20;
   The *Edit audio out node* dialog box appears.
   - **TTS Voice**: Select a voice to use.&#x20;
   - **Play audio when window not in focus:** Select the check box to hear the alert when the flow is minimized.
   - **Group:** If needed, click the **Edit&#x20;**&#x69;con to create a dashboard.
   - **Name:&#x20;**&#x45;nter a user-define&#x64;**&#x20;name.**&#x20;
   - Click **Done**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AD64zUX-fM6FXfYFk0Mjq_image.png" size="70" width="800" height="442" position="center" caption="Edit audio out node dialog box" showCaption="true"}
8. Double-click the **Function&#x20;**&#x6E;ode connected to the *Inject* node and *Serial out* node.
   The *Edit function node* dialog box appears.&#x20;
   - **On Message:** Enter code that adds a carriage return to the message to ensure that the device reads it properly.
     `msg.payload = msg.payload + "\r"; // Add a carriage return to the output.     `
     `return msg;`
9. Double-click the **Function&#x20;**&#x6E;ode connected to the *Serial in* node and *Audio out* node.
   The *Edit function node* dialog box appears.&#x20;
   - **On Message:&#x20;**&#x45;nter code that checks for the sensor reading and outputs a message when it is above or below a certain threshold.
     `var val = parseFloat(msg.payload); // Gets the temperature in degrees Fahrenheit from the string sent by the device.     `
     `if (val > 70.0) { // Checks for if the temperature is higher than 70 deg F     `
     `msg.payload = "high"; // Sets the notification message to say "high" when the temperature is high.     `
     `}     `
     `else {     `
     `msg.payload = "low"; // Sets the notification message to say "low" when the temperature is lower than 70 deg F.     `
     `}     `
     `return msg;`
10. Click **Deploy&#x20;**&#x61;nd expand the message window beneath the flow.
11. Click the **Dashboard&#x20;**&#x69;con. Then, click the **Expand** icon to open the dashboard to begin hearing the audio notifications.
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BeQ1CtJSD6J_q5oBgXs7J_image.png "The expanded dashboard icon")


[title] Use the Feature Extractor Function
[path] How-To-Guides/Analytics Guides/

You can use the Feature Extractor processor function to extract meaningful patterns and characteristics from raw PLC data, transforming complex data into features that machine learning models can easily understand and utilize.&#x20;

# **User Scenario**

Review the following scenario for the feature extraction processor function. Then, using an input processor, you will simulate PLC data and extract features from the window of generated values.

In a food processing plant, PLCs are placed strategically along the production line to monitor the moisture content of products as they pass through ovens and cooling stations. Using a window of `N` values, you can calculate the Average and Median moisture content at critical stages of the production process.&#x20;

Additionally, to assess the consistency of moisture levels, you can use the Standard Deviation and Variance functions of the Feature Extractor processor to provide real-time data analysis and actionable insights. It helps to identify and address optimal features, preventing product spoilage and ensuring that each batch meets the company's strict standards.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: moisture**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **5**
- **Tag Name**: Enter **moisture**
- **Min\_value**: Enter **1**
- **Max\_value**: Enter **199**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Feature Extraction Processor function:**

1. Navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **moisture**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select the **Feature Extractor&#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Window Size:&#x20;**&#x45;nter the number of values you want the function to consider.
   - **Timeinterval:&#x20;**&#x59;ou can set a timer in milliseconds to push values. Set the timer to zero if you don't want to use it.
   - **Feature Options:&#x20;**&#x53;elect the **Average**, **Median**, **Standard Deviation**, and **Variance&#x20;**&#x63;heckboxes to view your output.
7. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NzL2blaxqAZca6D1ArPjJ_image.png "Feature Extractor processor dialog box")
8. Connect the DataHub Subscribe processor (tag: *moisture*) to the Feature Extractor processor with a wire and use the **events** connection.
9. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/59mU8hSfEC4rmJANfo0g-_image.png "Completed analytics flow ")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Feature Extractor&#x20;*&#x70;rocessor to view the output values.

Before you can see any output, the input window size needs to be filled. After that, the output will include the prediction along with its timestamp.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/saWJ8vbP4F3h7ZWAlsjfp_image.png "Feature Extractor output")


[title] Use the Signal Decomposition Function
[path] How-To-Guides/Analytics Guides/

You can use the Signal Decomposition function to extract and separate signal components from composite signals, which are related to semantic units.&#x20;

This function decomposes signals by computing trends through linear regression and seasonality through naive differencing.

# User Scenario

Review the following scenario for the Signal Decomposition function. Then, you will simulate PLC data and calculate the trend in the data.

In a wind farm, the Signal Decomposition function is utilized to analyze the output from turbines. It helps to separate the consistent patterns due to seasonal wind changes from the overall trends in turbine performance. This information is crucial for scheduling maintenance during expected low-wind periods and optimizing energy production throughout the year.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: input1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **1**
- **Tag Name**: Enter **input1**
- **Min\_value**: Enter **101**
- **Max\_value**: Enter **199**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Signal Decomposition Processor function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **input1&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select th&#x65;**&#xA0;Signal Decomposition&#x20;**&#x70;rocessor.
   The *Edit a Processor* dialog box appears.
   - **Window Size:** Enter a value that represents the range to apply the signal decomposition function. For this example, we input a value of **10**.
   - **Model Type:** Select between **additive&#xA0;**&#x61;nd **multiplicative.**
     - **Additive model:** Signal = Trend + Seasonality + Residue
     - **Multiplicative model:** Signal = Trend \* Seasonality \* Residue
   - **Periodicity**: Enter a value to determine how frequently the observations are spaced in time. For this example, we input a value of **5**.
   - Click **Save**.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZVoO-IVdhIMaWEh_zMqnY_image.png "Edit a Processor dialog box")
7. Connect the *DataHub Subscribe* processor (tag: *input1*) to the *Signal Decomposition&#x20;*&#x70;rocessor with a wire and use the **events&#x20;**&#x63;onnection.
8. On the analytics canvas, click **Save**.
   The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jvRfgNhcYYeMG43pBXeVi_image.png "Completed Flows Canvas")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Signal Decomposition&#x20;*&#x70;rocessor to view the output values.

The output shows the data with the trend removed at **166.05**, a seasonal component of **131.78**, and a positive trend in the data at **26.16**. ​

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sj9W45UraN1I9SOtGSrca_image.png "Output of Signal Decomposition processor")


[title] Use the Uptime and Downtime by Value KPI
[path] How-To-Guides/Analytics Guides/

You can use the **UpTime and DownTime by Value** KPI processor to compare your current value with a desired value. The KPI sorts them as either uptime or downtime based on the specified condition ( greater(>), less(\<), equal(==) or notEqual(!=) ) and a delta to round off mistakes.

# **User Scenario**

Review the following scenario for the uptime and downtime by Value KPI processor. Then, using an input processor, you will simulate PLC data and use this KPI to have more detailed knowledge of the time.

In a manufacturing plant, the PLC monitors a critical component with an ideal value of 10.5. If the output drops below 5 or deviates by 0.5 value, it signifies potential issues, triggering downtime. For instance, if the output equals 0, it also means downtime. The plant manager can use the Uptime and Downtime KPI processor to analyze these conditions and gain insights into the production line's status. This scenario allows for proactive maintenance and operational decisions, ensuring real-time visibility and minimizing unplanned downtime.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: tag1**

- **Name**: Select **S - Random value generator.**
- **Value Type:** Select **float64.**
- **Polling Interval**: Enter **1.**
- **Tag Name**: Enter **tag1.**
- **Min Value:&#x20;**&#x45;nter **0.**
- **Max Value:&#x20;**&#x45;nter **11.5.**

# Step 3: Create Analytics Flow

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the UpTime and DownTime&#x20;****by Value&#x20;****Processor function:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the *Topic* field, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for **tag1**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select the **UpTime and DownTime&#x20;****by Value &#x20;**&#x70;rocessor.
   The following information defines this function:
   - **Unit:&#x20;**&#x53;elect the time units from the drop-down menu to display the uptime/downtime status. Choose **seconds** for this user scenario.
   - **Condition:&#x20;**&#x53;elect a condition from the drop-down menu for comparing the current value to the desired value. Choose the **less than (\<)&#x20;**&#x63;ondition for this user scenario.
   - **Desired Value:&#x20;**&#x45;nter a desired value to check the current uptime/downtime status. Use **10.5** for this user scenario.
   - **Delta of Tolerance:&#x20;**&#x45;nter a delta of **0.5&#x20;**&#x74;o allow for a tolerance of *+/- 0.5* from your desired value. If you input a delta of **0**, even the smallest change will be detected by this KPI.
   - **TimeInterval:&#x20;**&#x49;f the tag publishes at the expected interval, it is better to disable this timer by entering **0** in the field.
   - Click **Save**.
     ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KkZ2X2jn7dCHoOktYSfIy_image.png" size="80" width="840" height="726" position="center" caption="Edit a Processor dialog box" showCaption="true"}
7. Connect the *DataHub Subscribe* processor (tag: *tag1*) to the *UpTime and DownTime by Value&#x20;*&#x70;rocessor with a wire and use the **events&#x20;**&#x63;onnection.
8. On the analytics canvas, click **Save**.

The configured analytics flows should look like the following:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/w4cVC9VZT8wizqQW-6UrG_image.png" size="80" width="618" height="272" position="center" caption="Completed Flows Canvas" showCaption="true"}

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *UpTime and DownTime by Value* processor to view the output values.

The output will display the message payload with the uptime and downtime value field, disregarding current values within *+/- 0.5* of your desired value.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wGLzlYv3ro4SEjuElXjD7_image.png "Output of UpTime and DownTime by Value processor")


[title] Visualize Data Using Grafana
[path] How-To-Guides/Applications Guides/

You can use Grafana to visualize data in Litmus Edge.&#x20;

# Step 1: Install Docker Container

You have two options to install the Docker container.&#x20;

## Option 1: Deploy Grafana from Litmus Edge Manager

If you have access to Litmus Edge Manager (LEM), you can use LEM to deploy Grafana in your Litmus Edge instance.&#x20;

**To deploy Grafana from Litmus Edge Manager:**

1. In Litmus Edge Manager, follow the steps to [Manage Applications](docId:1cjuL2kjJIQEBN2kVHjp6). For Grafana, follow the steps to [Deploy an Application to Edge Devices](docId\:DruoOcegNxCGi-D_5azZw).
   - For *Step 2: Application Settings*, if the default port number is already in use, you will need to enter another port.
2. In Litmus Edge, navigate to **Applications&#x20;**> **Containers**.
   The *Containers&#x20;*&#x70;ane appears.&#x20;
3. Verify that the Grafana Docker Container is running.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/WaAOMIYw3jqvo2U3FPKiX_image.png" size="80" width="1710" height="176" caption="Operational Grafana Docker Container" position="center" showCaption="true"}

## Option 2: Run Grafana Container in Litmus Edge

If you don't have access to Litmus Edge Manager, you can run the Grafana container in Litmus Edge.&#x20;

**To run the Grafana container in Litmus Edge:**

1. Navigate to **Applications&#x20;**> **Containers**.
   The *Containers&#x20;*&#x70;ane appears.&#x20;
2. From the *Containers* pane, click **Run**.&#x20;
   The *Enter command to run&#x20;*&#x66;ield appears.&#x20;
3. Enter the following Docker run command and click **Run**.

```linux
docker run -d --name=grafana --restart=always -u root -v grafana-storage:/var/lib/grafana -v grafana-config:/etc/grafana -p 3000:3000 grafana/grafana
```

&#x20;         If needed, replace `-p 3000:3000` with a different port.&#x20;

&#x20;     4\. Verify that the Grafana Docker Container is running.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/nDu33rzpXZih5O3N3dqYJ_image.png "Operational Grafana Docker Container")

# Step 2: Access Grafana

To connect to Grafana, you will use your Litmus Edge IP address and the port configured in the Grafana container.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/fd8bBffMy8AnzthY0OC16_image.png" size="80" width="1350" height="363" caption="Grafana port" position="center" showCaption="true"}

**To access Grafana:&#x20;**

1. In a new browser window, enter the URL to connect to Grafana using this format: \[Litmus Edge IP address]:\[port]. For example, if your Litmus Edge instance uses the IP address https\://192.168.0.146, and the Grafana container uses port 3000, enter **192.168.0.146:3000**.
   The Grafana login screen appears.&#x20;
2. Enter **admin&#x20;**&#x61;s the username and password, and then change the password.
   The *Grafana Home&#x20;*&#x73;creen appears.&#x20;

# Step 3: Set up Database

Grafana needs a database to extract from to display results. Litmus Edge allows you to configure the internal timeseries database (tsdata) to connect to Grafana.

You also have the option to set up a database to your specific requirements.&#x20;

## Step 1: Create DB User

You will need to create a user that has read access to the database.

**To create a DB user:**

1. In Litmus Edge, navigate to **DataHub&#x20;**> **DB Users**.&#x20;
2. Click the **Add user** icon.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/87yrHqM7VDvqiMyQcsDE5_add-user.png" size="80" width="1031" height="383" caption="The Add user icon" position="center" showCaption="true"}
3. Configure the user details.&#x20;
   - **Username**
   - **Password**: Copy and save this for later use.&#x20;
   - **Database**: Select **tsdata**.&#x20;
   - **Privilege**: Select **Read**.&#x20;
4. Click **Add User**.&#x20;

## Step 2: Ensure Database Has a Measurement

The database will not connect successfully to Grafana unless at least one measurement is in the database.&#x20;

To confirm if the database has a measurement, navigate to **DataHub&#x20;**> **DB Management** and click the arrow to expand the tsdata database.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QHmEBSDbk3KSmAlPxduy__image.png" size="80" width="1133" height="456" caption="Expand the tsdata database" position="center" showCaption="true"}

If there are no measurements listed, follow the steps below.&#x20;

### Step 2a: Connect Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and do the following:

- Select the Device Type **Simulator&#x20;**&#x61;nd the Driver Name **Generator**.&#x20;
- Select the **Enable Data Store** check box in the device configuration.&#x20;
- Enter a value in the **Retention Hours** field.&#x20;

### Step 2b: Add Tag to Device

Follow the steps to [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) and add at least one tag to the device you created.&#x20;

After connecting the device and adding the tag, navigate to **DataHub&#x20;**> **DB Management** and click the arrow to expand the tsdata database again to confirm a measurement is now available.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/w3I4oxDdUWezec3DTR1eS_image.png" size="80" width="1133" height="465" caption="tsdata measurement" position="center" showCaption="true"}

# Step 4: Add a Data Source in Grafana

You will need to add a data source in Grafana that connects to the database you created. See the [Influx data source](https://grafana.com/docs/grafana/latest/datasources/influxdb/) documentation from Grafana to learn more.&#x20;

When configuring the data source, do the following:

- Select the **InfluxDB** time-series database.&#x20;
- In the **URL&#x20;**&#x66;ield, enter `http://10.30.50.1:8086`. 10.30.50.1 is the IP address of Litmus Edge on the internal docker network by default.&#x20;
- In the **Database&#x20;**&#x66;ield, enter `tsdata`.&#x20;
- In the **User&#x20;**&#x66;ield, enter the username you configured for the DB user in Litmus Edge. &#x20;
- In the **Password&#x20;**&#x66;ield, paste or enter the password you configured for the DB user in Litmus Edge.&#x20;

# Step 5: Add a Dashboard in Grafana

Now that the database is successfully connected to Grafana, you can start visualizing the data by using a dashboard. See the [Create a dashboard ](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/create-dashboard/)documentation from Grafana to learn more.&#x20;


[title] Analytics Guides
[path] How-To-Guides/

Refer to the following Analytics how-to guides.

- [Use the Anomaly Detection Function](docId\:I1n2b2AioiyCtPPXMmZ6O)
- [Use the Base Conversion Function](docId:0Inbp8WiJltwYp6JSam6A)
- [Use the Combination Processor Function](docId:0_WLPlyO7jI5qmFk4h27R)
- [Use the Conversion Function](docId\:gFmp-yf8mosOG__Wtsgkq)
- [Use the Expression Processor Function](docId:-L9q5dUs-J6pJXn8g0oJ6)
- [Use the Feature Extractor Function](docId:_Km9OY9g1SAFbsElm9zIV)
- [Use the Gaussian Filter Function](docId\:mPsZHt79rd-PujWaT_73M)
- [Use the Inputs Processor Function](docId\:ErgcQ5bpreT1F_YWjmhxC)
- [Use the Join Processor Function](docId\:EFCB4gXGUgmBIh2Jp6IyK)
- [Use the Linear Prediction Function](docId\:zQSnDZTHYWRZYqd-ZXCjk)
- [Use the Moving Window Processor Function](docId:3aLLS4NWakwZULLqW74bL)
- [Use the Normalization Processor Function](docId\:VrIOtn4jWIKKQhtatmX4K)
- [Use the Rise and Fall Function](docId\:mlNwX1P757tGIVK4UeTJU)
- [Use the Rounding Function](docId\:CITM1lr6a_HGFc4mICTJa)
- [Use the Signal Decomposition Function](docId\:Bb4zcE8165VEps8y8Wn3o)
- [Use the Statistical Prediction Function](docId\:LK3l3Lwvzj3FEebLtPfOH)
- [Use the Statistical Tests Function](docId:4JolnzQltN5Kxhd1OdoEV)
- [Use the Tengo Script Function](docId\:GO6xp9Hia7376x4KEz46P)
- [Use the XMR Chart Function](docId\:D2uXsP6Zn5AwZejMzXgtS)

Refer to the following Analytics KPIs how-to guides.

- [Use the Asset Online Percentage KPI](docId:_BlUy1zQajRgdBTY-qCkg)
- [Use the Change of Value KPI](docId\:v5tzf0sRk4QfnV8KgkInV)
- [Use the Compliance and Loss KPI](docId\:ArRyZZHpqAZ_OAC_oy4D5)
- [Use the Maintenance and Failure KPI](docId\:ukT4bLHmmjECdZ0UCDDRc)
- [Use the Manufacture Counter KPI](docId\:l3Za-HMok751FWo9BgIv1)
- [Use the Online and Offline Percentage KPI](docId\:t9dY_Q9cB6STenPAGmqXD)
- [Use the Production Time and Cycle Time Ratio KPI](docId:9ci35eXD6jEEmJ3eqcrO-)
- [Use the Uptime and Downtime by Value KPI](docId\:bNiG00pysIROShZnWIheW)


[title] Use the Statistical Tests Function
[path] How-To-Guides/Analytics Guides/

The Statistical Tests Function can help you determine how well a set of data matches a certain distribution, especially normal distribution. You can do this by analyzing the data's characteristics and calculating corresponding p-values.

# Understanding Different Types of Statistical Tests

You have the option of the using the following types of statistical tests.&#x20;

## **Jarque-Bera Test**

The Jarque-Bera test measures how a dataset's skewness and kurtosis compare to that of a normal distribution, with its value indicating the likelihood of non-normality.

**Formula:&#x20;**`JB = (n/6) (skewness^2 + (1/4)(kurtosis-3)^2)`

## **Cramer-Von Mises Test**

This test assesses the fit of a data sample to a specified cumulative distribution by analyzing the squared differences, with a low p-value indicating a poor fit.

**Formula:&#x20;**`cramerVonMises = (1/(12*n)) + sum(((2*i - 1)/(2*n) - Phi(Z))^2)`

## &#x20;**Anderson-Darling Test**

The Anderson-Darling test focuses on the tails of the distribution to evaluate if the data conforms to a specified distribution, typically giving more weight to outliers.&#x20;

&#x20;**Formula:** `A^2 = -n - (1/n) * sum((2*i - 1) * log(Phi(Z_i)) + (2*(n - i) + 1) * log(1 - Phi(Z_(n-i))))`

## **D'Agostino Pearson Test**

This test combines skewness and kurtosis to examine if the shape of a dataset's distribution aligns with a normal distribution, looking for deviations in symmetry and sharpness of the highest point.

## **Kolmogorov-Smirnov Test**

The Kolmogorov-Smirnov test, particularly the Lilliefors modification, evaluates the normality of a dataset by comparing the empirical distribution function with the cumulative normal distribution.

**Formula:&#x20;**`K = max(D+, D-) * sqrt(n)`

# User Scenario

Review the following scenario for the Statistical Tests function. Then, you will simulate PLC data and calculate the corresponding test values for the collected data.

In a chemical manufacturing plant, quality control engineers use the Statistical Tests Function to ensure that the mixture ratios of raw materials are consistent with the required standards for product batches. By analyzing characteristics such as consistency and concentration, the tests determine if the batch data deviates from normal distribution, which is critical for product quality.

# **Step 1: Add a Device**

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters:

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

# **Step 2: Add Tags**

After connecting the device, add the following tag. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more.&#x20;

## **Tag 1: input1**

- **Name**: Select **S - Random value generator**
- **Value Type:** Select **float64**
- **Polling Interval**: Enter **1**
- **Tag Name**: Enter **input1**
- **Min\_value**: Enter **101**
- **Max\_value**: Enter **199**

# Step 3: Create Analytics Flows

You can now create the analytics flows using data from the device and tag you previously created.&#x20;

**To create an analytics flow with the Statistical Function Processor:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. On the analytics canvas, clic&#x6B;**&#x20;Add processor**.&#x20;
   The *Create a processor* dialog box displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZdcpDTjKPrLwdKeFw6LWq_base-conversionadd-processor.png" size="80" width="1244" height="452" caption="The Add processor option" position="center" showCaption="true"}
3. Select **DataHub Subscribe**.
4. In the **Topic&#x20;**&#x66;ield, click the **Search&#x20;**&#x69;con, select the device you previously created, and then select the alias topic for the **input1&#x20;**&#x74;ag.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AdCgZcKlrYLXkOnUTBkWY_a.png "Create a Processor dialog box")
5. Click **Save**.
6. Click **Add processor** again and select th&#x65;**&#xA0;Statistical Function&#x20;**&#x70;rocessor.
   The *Edit a Processor* dialog box appears.
   - **Window Size:** Enter a value that represents the range to apply the statistical tests. For this example, we input a value of **100**.
   - Select the **Jarque Bera**, **Anderson Darling**, **Cramer Von Mises**, **D Agostino Pearson**, and **Kolmogorov Smirnov&#x20;**&#x63;heckboxes.
   - Click **Save**.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KnDyLPuOuCVTJ6vi_1ziM_image.png "Edit a Processor dialog box")
7. Connect the *DataHub Subscribe* processor (tag: *input1*) to the *Statistical Function&#x20;*&#x70;rocessor with a wire and use the **events&#x20;**&#x63;onnection.
8. On the analytics canvas, click **Save**.
   The configured analytics flows should look like the following:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/n_LFV-QX0X5sDt39mBi_u_image.png "Completed Flows Canvas")

# Step 4: View Output of Processor

Click the **View&#x20;**&#x69;con in the *Statistical Function&#x20;*&#x70;rocessor to view the output values.

The tests suggest the sample data may not fit a normal distribution, as indicated by the p-values and test statistics provided.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/w0THUofe39JmlPorybmFe_image.png "Output of Statistical Test Function")


[title] Validated Gateway Devices
[path] Resources/

Review the following validated physical devices for Litmus Edge OS deployment.

# Devices Validated for Every Long-Term Support (LTS) Release

The following devices are validated with every LTS version of Litmus Edge (major versions released twice a year).&#x20;

## Dell 3200

| **Specification** | **Description**                                            |
| ----------------- | ---------------------------------------------------------- |
| Model Number      | EGW 3200                                                   |
| CPU               | Intel Core i7-8700T CPU @ 2.40GHz (6 Cores, 12 Processors) |
| RAM               | 16GB                                                       |
| Storage           | 512GB                                                      |
| Display           | 2x DP++                                                    |
| Network Ports     | 1x 2.5 GbE, 1x GbE                                         |
| DB9 Ports         | COM1/2: RS-232/422/485                                     |
| USB               | 4x USB 3.1 Gen 1                                           |
| Power Supply      | 9–36 VDC, 120 W AC-to-DC adapter                           |
| GPIO              | 6-ch DI and 6-ch DO                                        |
| Wi-Fi             | WiFi AX210                                                 |
| BIOS              | American Megatrends Aptio 1.03.10                          |
| Secure Boot       | Disabled                                                   |

## Dell 5200

| **Specification** | **Description**                                                                            |
| ----------------- | ------------------------------------------------------------------------------------------ |
| Model Number      | EGW-5200                                                                                   |
| CPU               | Intel Core i7-9700TE CPU @ 1.80GHz, 8 Cores, 8 Logical Processors                          |
| RAM               | 32GB                                                                                       |
| Storage           | 512GB                                                                                      |
| Display           | DisplayPort x2, VGA x1, DVI-D x1                                                           |
| Network Ports     | 3 LAN ports                                                                                |
| DB9 Ports         | RS 233/485 x2, uFM I/O x2                                                                  |
| USB               | USB 3.1 x3, USB 2.0 x3                                                                     |
| Power Supply      | 12–24 VDC (±10% tolerance)/ Optional: 180 W / 220 W, 60 W (for PoE) external AC/DC adapter |
| GPIO              | Digital Input/Output                                                                       |
| Wi-Fi             | Supported                                                                                  |
| BIOS              | American Megatrends Aptio, password-protected                                              |
| Secure Boot       | Disabled                                                                                   |

## Emerson (RXi2-BP)

| **Specification** | **Description**                                                                                          |
| ----------------- | -------------------------------------------------------------------------------------------------------- |
| Model Number      | RXi2-BP                                                                                                  |
| CPU               | AMD Ryzen Embedded V1404I with Radeon Vega Gfx@ 2.00GHz (4 Cores, 8 Processors)                          |
| RAM               | 4GB                                                                                                      |
| Storage           | 102.84GB                                                                                                 |
| Display           | 1 Display port (DP1)                                                                                     |
| Network Ports     | 4 LAN ports                                                                                              |
| DB9 Ports         | Two serial interfaces, one configured to RS232 (P0) and one configurable to RS422 or RS485 \[2W/4W] (P1) |
| USB               | Two USB2 (USB 3 & 4) and two USB3.2 Gen1 (USB 1 & 2) ports. All four are USB type-A connectors.          |
| Power Supply      | DC power supply with 24V (+-25%) and at least delivering 1.8 A                                           |
| GPIO              | Not available                                                                                            |
| Wi-Fi             | Not available                                                                                            |
| Secure Boot       | Disabled                                                                                                 |

## Emerson (RXi2-LP)

| **Specification** | **Description**                                                   |
| ----------------- | ----------------------------------------------------------------- |
| CPU               | AMD GX-412GC SOC with Radeon R3E Graphics (4 Cores, 4 Processors) |
| RAM               | 4GB                                                               |
| Storage           | 64GB                                                              |
| Display           | 1 Display port                                                    |
| Network Ports     | 4 LAN ports                                                       |
| DB9 Ports         | RS232 UART, RS485 UART                                            |
| USB               | 2 USB 3.0, 2USB 2.0                                               |
| Power Supply      | 24 V DC                                                           |
| GPIO              | Not available                                                     |
| Wi-Fi             | Not available                                                     |
| BIOS              | American Megatrends Aptio                                         |
| Secure Boot       | Disabled                                                          |

# Other Validated Devices

The following devices have been validated based on the specified *Litmus Edge version*.&#x20;

## Aaeon

| **Specification**   | **Description**                                       |
| ------------------- | ----------------------------------------------------- |
| Litmus Edge version | 3.1.4.0                                               |
| Model Number        | BOXER-6641                                            |
| CPU                 | Intel Core i5-8500T CPU 2.10GHz (6 Core, 6 Processor) |
| RAM                 | 8GB                                                   |
| Storage             | 128GB SATA SDD                                        |
| Display             | 2 HDMI                                                |
| Network Ports       | 4 LAN ports                                           |
| DB9 Ports           | 6 ports RS-232/422/485                                |
| USB                 | USB 3.0 x 4&#xA;USB 2.0 x 4                           |
| Power Supply        | 3-pin DC Input 10\~35V                                |
| GPIO                | Not available                                         |
| Wi-Fi               | Not available                                         |
| BIOS                | American Megatrends Aptio                             |
| Secure Boot         | Disabled                                              |

## Aaeon (with GPU)

| **Specification** | **Description**                                            |
| ----------------- | ---------------------------------------------------------- |
| Model Number      | BOXER-8332AI-CFL                                           |
| CPU               | Intel Core i7-8700T CPU @ 2.40GHz (6 Cores, 12 Processors) |
| RAM               | 32GB                                                       |
| Storage           | 256GB                                                      |
| GPU               | Tesla T4- 16GB                                             |
| Display           | 2 HDMI                                                     |
| Network Ports     | 3 LAN ports                                                |
| DB9 Ports         | 4 RS232/422/485                                            |
| USB               | 6 USB 3.0                                                  |
| Power Supply      | 3P-125V 10A 180D.1.8M.USA.                                 |
| GPIO              | Not available                                              |
| Wi-Fi             | Not available                                              |
| BIOS              | American Megatrends Aptio                                  |
| Secure Boot       | Disabled                                                   |

## Advantech

| **Specification**   | **Description**                                  |
| ------------------- | ------------------------------------------------ |
| Litmus Edge version | 3.5.5                                            |
| Model Number        | UNO-127                                          |
| CPU                 | Intel® Atom™ x6413E 1.5GHz Quad-Core             |
| RAM                 | 1 x DDR4 with 4 GB                               |
| Storage             | 1 x eMMC (64 GB), 1 x mSATA (shared with mPCIe)  |
| Display             | 1 HDMI                                           |
| Network Ports       | 1 x RJ45, 10/100/1000 Mbps IEEE 802.3u           |
| DB9 Ports           | Not available                                    |
| USB                 | 2 x USB 3.2                                      |
| Power Supply        | 3P-125V 10A 180D.1.8M.USA.                       |
| GPIO                | Not available                                    |
| Wi-Fi               | Not available                                    |
| BIOS                | AMI EFI X64                                      |
| Secure Boot         | Disabled                                         |

## Hirschmann OpEdge-4D

| **Specification** | **Description**                |
| ----------------- | ------------------------------ |
| CPU Architecture  | ARM                            |
| Deployment Method | Supports Docker container only |

## Hirschmann OpEdge-8D

| **Specification** | **Description**                |
| ----------------- | ------------------------------ |
| CPU Architecture  | Intel                          |
| Deployment Method | Supports Docker container only |

## Hitachi

| **Specification**   | **Description**                                  |
| ------------------- | ------------------------------------------------ |
| Litmus Edge version | 3.0.0.1                                          |
| Model Number        | CE50-10                                          |
| CPU                 | Intel Atom x7-E3950 1.60GHz \[4 cores/4 threads] |
| RAM                 | 8GB SO-DIMMx1                                    |
| Storage             | mSATA SSD (64GB) x 1                             |
| Network Ports       | Ethernet 1Gb 3 port network adapters             |
| DB9 Ports           | 1 (25pin)                                        |
| USB                 | 2                                                |
| Wi-Fi               | Available                                        |
| BIOS                | Not mentioned Secure Boot                        |
| Secure Boot         | Disabled                                         |

## HPC Systems

| **Specification**   | **Description**          |
| ------------------- | ------------------------ |
| Litmus Edge version | 3.5.6                    |
| Model Number        | Edge Tank 510            |
| CPU                 | Intel i7-1185G7E 1.80GHz |
| RAM                 | 16GB                     |
| Storage             | 256GB SSD                |
| Display             | DisplayPort x 2          |
| Network Ports       | 2 LAN ports              |
| DB9 Ports           | 2 x COM Port             |
| USB                 | USB 3.1 x 2, USB 2.0 x 2 |
| Power Supply        | DC 9-55V                 |
| Wi-Fi               | Not available            |
| BIOS                | UEFI mode                |
| Secure Boot         | Disabled                 |

## HPE&#x20;

| **Specification** | **Description**                                                                                                                                                                                                                    |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Model Number      | Tesla T4- 16GB                                                                                                                                                                                                                     |
| CPU               | Intel Core i5-4300U                                                                                                                                                                                                                |
| RAM               | 8GB                                                                                                                                                                                                                                |
| Storage           | 64GB                                                                                                                                                                                                                               |
| Display           | 1-VGA, 1-HDMI                                                                                                                                                                                                                      |
| Network Ports     | 6x LAN ports (2+4)                                                                                                                                                                                                                 |
| DB9 Ports         | Two (1) RS-232 or RS-422/485 Serial Ports – configurable using BIOS                                                                                                                                                                |
| USB               | Two (2) USB 2.0 Standard (TypeA) ports and Two (2) USB 3.0 Standard (Type A) ports                                                                                                                                                 |
| Power Supply      | 3-pin DC +9-36V input isolated to 1.5KV.&#xA;Mating plug specification : MC-style, 3-position, 3.81mm pitch, screw flange&#xA;Included: External AC 12V universal power supply kit (USA, UK, EURO and JPN) with lockable connector |

## Lanner NCA-1515

| **Specification**   | **Description**                                                                                                   |
| ------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Litmus Edge version | 3.5.5                                                                                                             |
| Model Number        | NCA 1515 (version 1.8)                                                                                            |
| CPU                 | Intel® Atom® C3000                                                                                                |
| RAM                 | 64GB                                                                                                              |
| Storage             | HDD/SSD Support 1x 2.5” Bay (Optional)&#xA;Onboard Slots 1x EMMC 8GB, 1x M.2 2242                                 |
| Network Ports       | 4x GbE RJ45 Intel® SoC Integrated MAC,&#xA;2x GbE RJ45 Intel® i350 (by SKU),&#xA;2x GbE SFP Intel® i350 (by SKU)  |
| DB9 Ports           | 1x RJ45 Console Port & LOM                                                                                        |
| USB                 | 2x USB 2.0 Ports                                                                                                  |
| Power Supply        | 60W Power Adapter&#xA;AC 100\~240V @50\~60 Hz                                                                     |
| Wi-Fi               | Available                                                                                                         |
| BIOS                | AMI SPI Flash BIOS                                                                                                |

## Lenovo SE10

| **Specification**   | **Description**               |
| ------------------- | ----------------------------- |
| Litmus Edge version | 3.5.5                         |
| Model Number        | ThinkEdge SE10                |
| CPU                 | Intel Atom x6425RE 1.90GHz    |
| RAM                 | 16GB                          |
| Storage             | 480GB SSD                     |
| Display             | DisplayPort x 1, HDMI x 1     |
| Network Ports       | 2 LAN ports                   |
| DB9 Ports           | 2 x COM Port                  |
| USB                 | USB 3.2 Gen2 x 2, USB 2.0 x 2 |
| Power Supply        | AC 115-230V                   |
| Wi-Fi               | Available                     |
| BIOS                | UEFI mode                     |
| Secure Boot         | Disabled                      |

## Lenovo SE50

| **Specification**   | **Description**                           |
| ------------------- | ----------------------------------------- |
| Litmus Edge version | 3.4.0                                     |
| Model Number        | ThinkEdge SE50                            |
| CPU                 | Intel(R) Core(TM) i7-8665UE CPU @ 1.70GHz |
| RAM                 | 32GB                                      |
| Storage             | 480GB SSD                                 |
| Display             | DisplayPort x 1, HDMI x 1                 |
| Network Ports       | 6 LAN ports                               |
| DB9 Ports           | 2 x COM Port                              |
| USB                 | USB 3.2 Gen1 x 2, USB 2.0 x 2             |
| Power Supply        | DC 10-60V                                 |
| Wi-Fi               | Available                                 |
| BIOS                | UEFI mode                                 |
| Secure Boot         | Disabled                                  |

## LEXCOM (2I810D)

| **Specification**   | **Description**                           |
| ------------------- | ----------------------------------------- |
| Litmus Edge version | 3.2.5                                     |
| Model Number        | 2I810D                                    |
| CPU                 | Intel(R) Core(TM) i7-8665UE CPU @ 1.70GHz |
| RAM                 | 16GB SO-DIMMx1                            |
| Storage             | mSATA (128GB) x 1                         |
| Display             | HDMI,VGA display interface                |
| Network Ports       | Ethernet 1Gb 4 port network adapters      |
| DB9 Ports           | 2 x COM Port                              |
| USB                 | 7 USB                                     |
| Power Supply        | On board DC +12V                          |
| GPIO                | 8                                         |
| Wi-Fi               | Not available                             |
| BIOS                | Not available                             |
| Secure Boot         | Disabled                                  |

## LEXCOM (3I810DW)

| **Specification**   | **Description**                           |
| ------------------- | ----------------------------------------- |
| Litmus Edge version | 3.2.5                                     |
| Model Number        | 3I810DW                                   |
| CPU                 | Intel(R) Core(TM) i7-8665UE CPU @ 1.70GHz |
| RAM                 | 16GB SO-DIMMx1                            |
| Storage             | mSATA (512GB) x 1                         |
| Display             | 2 x HDMI, eDP display interface           |
| Network Ports       | Ethernet 1Gb 5 port network adapters      |
| DB9 Ports           | 2 x COM Port                              |
| USB                 | 7 USB                                     |
| Power Supply        | Wide Range DC IN +9\~36V                  |
| GPIO                | 16                                        |
| Wi-Fi               | Not available                             |
| BIOS                | Not available                             |
| Secure Boot         | Disabled                                  |

## MiTAC

| **Specification**   | **Description**                                    |
| ------------------- | -------------------------------------------------- |
| Litmus Edge version | 3.3.1                                              |
| Model Number        | MP1-11TGS-6305E                                    |
| CPU                 | Intel Celeron 6305E, 1.80GHz                       |
| RAM                 | 8GB                                                |
| Storage             | 64GB M.2 NVMe SSD                                  |
| Display             | 2 x DisplayPort 1.4, 2 x HDMI 1.4                  |
| Network Ports       | Intel® I219-LM Giga LAN, Intel® I225-LM 2.5GbE LAN |
| DB9 Ports           | 3 x RS232, 1 x RS232 / 422 / 485                   |
| USB                 | 2 x USB 2.0, 4 x USB 3.2 Gen 2                     |
| Power Supply        | 100-240V AC to 24 V DC adapter                     |
| GPIO                | Not available                                      |
| Wi-Fi               | Not available                                      |
| BIOS                | American Megatrends Aptio D8340A01                 |
| Secure Boot         | Disabled                                           |

## Omron

| **Specification**   | **Description**                                       |
| ------------------- | ----------------------------------------------------- |
| Litmus Edge version | 3.2.5                                                 |
| Model Number        | NYB45-30360                                           |
| CPU                 | Intel(R) Xeon(R) CPU E3-1515M v5 @ 2.80 GHz 4 cores/8 |
| RAM                 | SO-DIMM, DDR4 Non-ECC 32GB                            |
| Storage             | 500GB, Serial ATA 3.0, 5400 r/min                     |
| Network Ports       | 3 LAN ports                                           |
| USB                 | 2 x USB 3.0, 2 x USB 2.0                              |

## ONLogic

| **Specification**   | **Description**                                            |
| ------------------- | ---------------------------------------------------------- |
| Litmus Edge version | 3.1.4.0                                                    |
| Model Number        | HX500                                                      |
| CPU                 | Intel Core i5-10500T Processor-2.3GHz (6 cores/12 threads) |
| RAM                 | 8GB SO-DIMM DDR4                                           |
| Storage             | 128GB M.2 NVMe SSD                                         |
| Display             | 3 Display port                                             |
| Network Ports       | 2 LAN ports                                                |
| DB9 Ports           | 1 RS-232                                                   |
| USB                 | 8 ports                                                    |
| Power Supply        | DC 120W, 20 V, 6A- North America Power Cord                |
| GPIO                | Not available                                              |
| Wi-Fi               | Not available                                              |
| BIOS                | Not mentioned Secure Boot                                  |
| Secure Boot         | Disabled                                                   |

## Super Micro

| **Specification** | **Description**                                                                                                                                                                                                        |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Model Number      | E100-9W-H                                                                                                                                                                                                              |
| CPU               | Intel® Core™ i7-8665UE                                                                                                                                                                                                 |
| RAM               | 8GB                                                                                                                                                                                                                    |
| Storage           | 128GB                                                                                                                                                                                                                  |
| Display           | 1 HDMI and 1 Display Port                                                                                                                                                                                              |
| Network Ports     | 2 LAN ports                                                                                                                                                                                                            |
| DB9 Ports         | 4 COM ports: 2 RS232, 2 RS232/422/485,&#xA;RS-485 supports auto flow control- configurable using BIOS                                                                                                                  |
| USB               | 4 USB 3.1 Gen2 ports (Type A), 4 USB 2.0&#xA;(Type A)                                                                                                                                                                  |
| Power Supply      | 12V to +24V DC Wide power range&#xA;input&#xA;ACPI Power Management&#xA;Control of power-on for recovery from&#xA;AC power loss&#xA;Force Power On by Jumper&#xA;CPU thermal trip support for processor&#xA;protection |

## Winmate

| **Specification**   | **Description**                                                     |
| ------------------- | ------------------------------------------------------------------- |
| Litmus Edge version | 22.2.0                                                              |
| Model Number        | IBDRW100-P                                                          |
| CPU                 | Intel Atom Processor E3950 @ 1.60GHz, 4 Cores, 4 Logical Processors |
| RAM                 | 1 x SO-DIMM, DDR3L 1866 MHz, 4GB                                    |
| Storage             | 1 x M.2 2242 B-key SSD 64GB                                         |
| Display             | 1 x VGA                                                             |
| Network Ports       | 4 x Giga LAN RJ45 Connector                                         |
| DB9 Ports           | 1 x RS232/422/485, 1 x RS422/485                                    |
| USB                 | 3 x USB3.0 (Type-A), 1 x USB2.0 (Type-A)                            |
| Wi-Fi               | Not available                                                       |
| BIOS                | InsydeH20                                                           |
| Secure Boot         | Disabled                                                            |


[title] Time Synchronization Issues
[path] Troubleshooting/System Troubleshooting/

Time synchronization is required for precise time resolution for time-stamping collected measurements. Also, Litmus Edge uses the current time for license activation. Therefore, if the time is substantially off, the trial license may be considered invalid and cause the trial to end prematurely.

NTP (Network Time Protocol) servers offer the easiest, most reliable, and accurate time-synchronization method.

:::hint{type="warning"}
**Important**: If you are installing Litmus Edge:

- Adjust the system clock through the BIOS before installing Litmus Edge. Otherwise the 15-day trial period may be rejected and invalidated by the license server.
- In the event that your license becomes invalidated, contact your Litmus representative.
- See [ISO Installation on an Industrial PC (IPC)](docId\:TvqRcSCI72ATtvVwmMqdo). &#x20;
:::

# Synchronize Using Public NTP Servers

Litmus Edge comes pre-configured with servers in the public NTP pool. This requires internet access. See [The NTP Pool Project](https://www.pool.ntp.org/en/) to learn more.&#x20;

If Litmus Edge is in an environment without internet access or if you want to specify your own NTP servers, you can do it using the Web UI or the Terminal User Interface (TUI), as shown below. See the *Configure Time* section in [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP). &#x20;

# Configure NTP Time Servers using the TUI

Refer to the *Configure Time* section. See [Access the Terminal User Interface](docId\:R1Lz44wFFv3H9Jg33NWlP).&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/s0ZDPhvGqlSUP_wJEXnt2_image.png" size="80" width="669" height="263" caption="Configure NTP Time Servers in TUI" position="center" showCaption="true"}

# Configure NTP Time Servers through the Web Interface

See the *NTP Servers* section in [Configure DNS/NTP Servers](docId\:pz9D0WPBQbUGyh0MH6wyx).&#x20;

# Synchronize Using a Local NTP Server

See [Configure a Local NTP Server](docId\:xGvfY_-LGJVKGKqzyb4sS).&#x20;


[title] Litmus Edge Can't Read Increased Disk Space on Virtual Machine
[path] Troubleshooting/Installation and Deployments Troubleshooting/

When you add disk space (expand a hard drive) to a virtual machine (VM), you usually add unallocated space to the VM, which Litmus Edge can’t read. In that case, you would need to expand the pre-existing volume to contain both disk spaces (old and new) using any partitioning tool on the VM.

# Solution

:::hint{type="info"}
**Note:&#x20;**&#x45;nsure that VM is powered off before proceeding and you have the necessary access to your hypervisor.
:::

**To add more disk space on the VM:**

1. Install [gparted](https://gparted.org/download.php) or any partitioning tool on the VM.
2. Use the application to expand the pre-existing volume to contain both disk spaces.
3. Complete the steps to install Litmus Edge with an ISO file. See [ISO Installation on Hypervisors](docId\:hfQ4XuEelug1sfF7UmV2G) to learn more.


[title] Add an OPC UA Server Connection with UA Expert Client
[path] How-To-Guides/

You can connect a new client to the OPC UA server.

In the following guide, the Simulator is used as the selected device and UAExpert on Windows 10 is used as the client.

To add an OPC UA Server Connection, you will need to do the following:

- Step 1: Add the Simulator Device
- Step 2: Add a Tag for the Simulator Device
- Step 3: Add Nodes to the OPC UA Hierarchy
- Step 4: Connect a Client with UA Expert

To jump to a specific section, refer to the Table of Contents on the right side and click the corresponding step.&#x20;

# Before You Begin

Before completing the steps below, make sure you do the following:&#x20;

- Add nodes to the OPC UA Hierarchy. See [Add a Node](docId:-_FS_awS0Vp6VRHvRmuiZ) or [Import Nodes](docId:_a9eDbY61Uw7-e1UMp2fR) for more information.
- Start the OPC UA Server. See [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe) for more information.
- Run your server on port 4840. See [Manage the OPC UA Server](docId\:auzIPeIw63IOIZXLEQ3xe) for more information.

# Step 1: Add the Simulator Device

**To add the Simulator device:**

1. Navigate to **DeviceHub**.
   The *Devices&#x20;*&#x70;ane appears.&#x20;
2. Select the **Add&#xA0;**&#x62;ox.&#x20;
   The *Connect Device* dialog box appears.
3. Click the **Connect Device&#xA0;**&#x64;rop-down list, and select **Simulator&#xA0;**&#x66;rom the list.
4. Click the **Driver Name&#xA0;**&#x64;rop-down list, and select **Simulator&#xA0;**&#x66;rom the list.
5. The *Connect Device* form drops down beneath your selections.
6. Enter **PLC1&#xA0;**&#x69;n the **Name&#xA0;**&#x66;ield.&#x20;
7. (Optional) Enter a short description of the device in the **Description&#xA0;**&#x66;ield.
8. Click **Add Device**.

# Step 2: Add a Tag for the Simulator Device

:::hint{type="info"}
**Note**: You should add multiple tags to the Simulator (for example, plc1\_tag1, plc1\_tag2, plc1\_tag3, plc1\_tag4).
:::

**To add a Tag for the Simulator device:**

1. Navigate to **DeviceHub&#x20;**>**&#x20;Tags**.
2. From the Tags pane, click **Add Tag**, and then select **Add One**.
3. Click the **Select a Device&#xA0;**&#x66;ield, and then select **simulator&#xA0;**&#x66;rom the drop-down list.
4. From the *Add Tag* form , enter the following details:
   - **Value Type**: Select **int**.&#x20;
   - **Name**: Select **int-integer**.
   - **Tag Name**: Enter `plc1_tag1`.&#x20;
   - **Polling Interval**: Enter `1`.
   - **Address**: Enter `0`.
   - **Min Value**: Enter `1`.
   - **Max Value**: Enter `100`.
   - **Description&#x20;**(Optional) Enter a description for the tag.
5. Click **Add Tag**.

# Step 3: Add Nodes to the OPC UA Hierarchy

You can add nodes to the OPC UA Hierarchy in the following ways:

- [Add a Node](docId:-_FS_awS0Vp6VRHvRmuiZ)&#x20;
- [Import Nodes](docId:_a9eDbY61Uw7-e1UMp2fR)&#x20;

# Step 4: Connect a Client with UAExpert

**To connect a client with UAExpert:**

1. [Download UAExpert from Unified Automation](https://www.unified-automation.com/downloads/opc-ua-clients.html).
2. Open UAExpert. Click the **Add Server&#x20;**&#x62;utton at the top.
3. From **Custom Discovery**, double click to add a server.
4. From the *Enter URL* dialog box, enter the Litmus Edge IP address with the ocp\:tcp\:// protocol on port 4840. For example: `ocp.tcp://192.168.1.130:4840`.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/laNSZcPf8w-Le5CdHGg-b_addcustomserver.png" size="80" width="872" height="425" caption="The Enter URL dialog box" position="center" showCaption="true"}
5. Click **OK**. The Litmus Edge OPC UA server should automatically discover your new client.
6. Once connected successfully, verify that you can see the *Root > Litmus Edge > PLC1 > tags* hierarchy in the *Address Space* panel.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3sIcMZExQyyby4jeYgLCr_ua-expert-project.png "Address Space panel")
7. Select a Tag to view the the Tag's current value.


[title] Kafka Integration
[path] How-To-Guides/Integration Guides/Databricks Integration/Streaming with Kafka & GCP Pub/Sub/

To configure the Kafka integration, complete the following steps.

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add Kafka Connector

**To add the Kafka connector in Litmus Edge: &#x20;**

1. Navigate to **Integration**.
2. Click **Add a connector&#x20;**&#x69;con.&#x20;
   The *Add a connector&#x20;*&#x64;ialog box appears.
3. Select the **Kafka SSL&#x20;**&#x70;rovider from the drop-down menu.&#x20;
   In this guide, we are using Confluent Kafka as the Kafka broker, so we selected *Kafka SSL Integration*.
4. Complete the following information for the *Kafka SSL* connector as shown in the screenshot and click **Add/Update**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Lg2qbmz1NEZbuUCcaIZLM_image.png" size="80" width="734" height="770" position="center" caption="Edit a connector" showCaption="true"}
5. Click the **kafka SSL&#x20;**&#x63;onnector tile.&#x20;
   The connector *Dashboard* appears.
6. Click the **Topics&#x20;**&#x74;ab.
7. Click the **Import from DeviceHub** tags icon and select all the tags to send data to *Databricks*.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/S5iC2Vx6ao8YdpIv45-MR_image.png "Topics tab in Kafka Connector")

# Step 4: Set Up Databricks for Kafka Streaming&#x20;

In Databricks, you can configure *Kafka&#x20;*&#x63;onnector parameters from a **Python notebook** file. You will need to input information about the Broker address, Topic name, and API key and secret.

**To set up Databricks for Kafka streaming:**

1\. Navigate to **Databricks&#x20;**&#x77;orkspace using your log in credentials.

2\. Create a new notebook in *Databricks*. Follow the [Databricks Kafka Streaming Guide](https://docs.databricks.com/en/connect/streaming/kafka.html) to set up *Kafka* streaming.&#x20;

3\. Once the data is loaded, it will be in the following format:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/73AHR-ihz_gJP_IQd_P8q_image.png" size="50" width="340" height="172" position="center" caption="Dataframe format" showCaption="true"}

The payload sent by LE will be in the **value&#x20;**&#x66;ield in binary format.

# Example Notebook for Kafka Streams

:::hint{type="info"}
**Note:&#x20;**&#x54;he user can create their own notebooks and customize them as needed. This example notebook will explain how to ingest the standard DeviceHub JSON Payload.
:::

**Open a new notebook and follow the steps:**

1. Import the necessary libraries and dependencies to handle *Kafka&#x20;*&#x64;ata streams and process data using *PySpark*. 

```python
import pyspark.sql.types as T
import pyspark.sql.functions as F
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, DoubleType, BooleanType, TimestampType, LongType
from pyspark.sql.functions import from_unixtime, from_json, col, cast
```

2\. Define the credentials and *Kafka broker* information that will be used to authenticate and connect to the *Kafka server*.&#x20;

:::hint{type="info"}
**Note:&#x20;**&#x45;nd-users should use secure methods of passing their *Kafka&#x20;*&#x63;redentials.
:::

```python
confluentBootstrapserver = "<KAFKA_BROKER_SERVER>"
KafkaTopic = "<KAFKA_TOPIC>"
apiKey = "<API_KEY>"
apiSecret = "<API_SECRET>"
```

3\. Configure **Spark&#x20;**&#x74;o read data streams from the *Kafka topic.*&#x20;

:::hint{type="info"}
**Note:&#x20;**&#x45;nsure to include the *Kafka server*, *security protocol*, and *authentication&#x20;*&#x64;etails.
:::

```python
df = spark.readStream \
        .format("kafka") \
        .option("kafka.bootstrap.servers", confluentBootstrapserver) \
        .option("kafka.security.protocol", "SASL_SSL") \
        .option("kafka.sasl.mechanism", "PLAIN") \
        .option("kafka.sasl.jaas.config", f'kafkashaded.org.apache.kafka.common.security.plain.PlainLoginModule required username="{apiKey}" password="{apiSecret}";') \
        .option("subscribe", KafkaTopic) \
        .option("startingOffsets", "earliest") \
        .load()
```

This will output the following:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aMSqpwcWJaTFZpiqVHN6J_image.png" size="50" width="340" height="172" position="center" caption="Dataframe format" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x54;his guide covers the DeviceHub JSON Payload. Please update the notebook if you are sending a different payload to Databricks.
:::

4\. Define the schema that matches the expected structure of the incoming data and parse the *Kafka stream* data accordingly.&#x20;

```python
# Define the schema
schema = StructType([
    StructField("deviceName", StringType()),
    StructField("tagName", StringType()),
    StructField("deviceID", StringType()),
    StructField("success", BooleanType()),
    StructField("datatype", StringType()),
    StructField("timestamp", LongType()),
    StructField("value", DoubleType()),
    StructField("metadata", StringType()),
    StructField("registerId", StringType()),
    StructField("description", StringType())
])

# Convert the binary 'value' column to string and then parse the JSON data
parsed_df = (df
             .withColumnsRenamed({'timestamp': 'kafka_time'})
             .withColumn("parsed_value", from_json(col("value").cast("string"), schema))
             .withColumn("LE_timestamp", from_unixtime(F.col('parsed_value.timestamp')/1000, "yyyy-MM-dd HH:mm:ss.SSS"))
             .select("key","topic", "kafka_time","partition","offset","parsed_value.*","LE_timestamp", )
)
```

This will output the following:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vWXgtE2Cn9QF4JvhbXxvR_image.png" size="50" width="355" height="334" position="center" caption="Dataframe format" showCaption="true"}

5\. Specify the **Databricks&#x20;**&#x74;able where the parsed data will be stored.&#x20;

```python
table = "<DATABRICKS_TABLE_NAME>"


query = (parsed_df 
    .writeStream
    .format("delta")
    .outputMode("append")
    .option("checkpointLocation", "/tmp/delta/"+ table + "/_checkpoints/").toTable(table)
)
```

6\. Once the data is published to the *Databricks&#x20;*&#x74;able, you can query the table to verify that the data ingestion process is successful.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YMEkUvLPO_dkgIlfJ_-cr_image.png "Databricks table")


[title] MySQL Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and a MySQL database.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/aWjUEaNorqw?si=WDvEyuX-Ph4bdtz7&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

In this guide you will deploy a MySQL database container from Litmus Edge and then integrate with the database using the DB-MySQL connector. For your specific scenario you may use an external MySQL database to set up the integration.&#x20;

If using a database not deployed through Litmus Edge, you can use the following supported versions:

- MySQL (4.1+)
- MariaDB&#x20;
- Percona Server
- Google CloudSQL
- Sphinx (2.2.3+)

For external MySQL databases, refer to the following to learn more:

- [MySQL Docker Image](https://hub.docker.com/_/mysql)
- [MySQL Documentation](https://dev.mysql.com/doc/)

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add MySQL Marketplace Application

:::hint{type="info"}
**Note**: The version used in this guide for MySQL version is 8.0. See the [MySQL 8.0 Reference Manual](https://dev.mysql.com/doc/refman/8.0/en/) for more information.&#x20;
:::

**To add the MySQL Marketplace Application:**

1. In Litmus Edge, navigate to **Applications&#x20;**> **Marketplace**.
2. Click **Marketplace List** and select **Default Marketplace Catalog**.
3. Click the **MySQL** application tile.&#x20;
4. From the **Installation script version** drop-down list, select **latest**.&#x20;
5. Configure the following parameters.
   - **Name**: Enter **MySQL**.&#x20;
   - **Database**: Enter **sample**.&#x20;
   - **User**: Enter **user**.&#x20;
   - **Password**: Enter the user password.&#x20;
   - **MySQL password**: Enter the same value as the *Password&#x20;*&#x70;arameter.&#x20;
6. Click **Launch**.&#x20;
7. Navigate to **Applications&#x20;**> **Catalog Apps**.&#x20;
   The MySQL application appears, pulls the image, and then starts the application. The MySQL application shows as running.
8. Navigate to **Applications&#x20;**> **Containers**.&#x20;
   The MySQL application Container is running.
9. Copy the IP address for the MySQL application.

# Step 4: Add the DB - MySQL Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - MySQL&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Paste the IP address you copied in Step 3. &#x20;
- **Port**: The MySQL Server port. The default value is **3306**.&#x20;
- **Username**: Enter **user**.&#x20;
- **Password&#x20;**(Optional): Enter the user password.&#x20;
- **Database**: Enter **sample**.&#x20;
- **Table**: Enter **test\_table**. If you are sending data to an existing table, use the corresponding name.&#x20;
- **Show Mapping**: If you want to send data to a custom table, select this check box and unselect *Create table*. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more. To add key/value pairs for the custom table, see [Configure Key/Value Pairs](docId\:Yj_sKBPP9J_TH3_qvC1Tm).&#x20;
- **Create table**: If you want to send data to an existing table in the default format, or you want to create a new table in the default format, select this checkbox and unselect *Show Mapping*. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.&#x20;
- **Commit timeout**: Enter the transaction commit timeout in (ms).
- **Max transaction size**: Enter the maximum number of messages before a transaction is committed, regardless of timeout parameter.&#x20;
- **Bulk insert count**: (Available for Litmus Edge version 3.11.1 and later) To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 5: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UCTN6TwDoDpYB_nliMqgK_mysql.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 6: Create Topics for Connector

You will now need to import the tags created in Step 2 as topics for the MySQL connector. The topics will be created as outbound topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 7: Enable Topics

To enable the topics, return to the *Topics* tab and click the **Enable all topics** icon.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Iq7BWYqGWueu4US73iBl3_image.png" size="80" width="1220" height="330" caption="Enable all topics icon" position="center" showCaption="true"}

# Step 8: Make MySQL Queries

You can now verify that you can view data through the terminal command window.&#x20;

Update the credentials, database name, and table name to your own specific configurations.&#x20;

**To make queries in the container terminal:**

1. In Litmus Edge, navigate to **Applications&#x20;**>**&#x20;Containers**.
2. Click the **Terminal&#xA0;**&#x69;con next to the MySQL container.
   The MySQL shell opens.
3. From the MySQL container terminal, enter `mysql -u user -p` and press **ENTER**.
   *Enter password:&#xA0;*&#x61;ppears.
4. Enter your user password, and then press **ENTER**.
   *Welcome to the MySQL monitor&#xA0;*&#x61;ppears.
5. Enter `show databases;`**,&#x20;**&#x61;nd then press **ENTER**.
   The database name appears.
6. Enter `use sample;`, and then press **ENTER**.
   *Reading table information for completion of table and column names&#xA0;*&#x61;ppears in the console.
7. Enter `show tables;`, and then press **ENTER**.
   The table names for *sample&#x20;*&#x61;ppear.

8. Enter `select * from test_table;` (or the table name you configured in Step 4), and press **ENTER**.
   Data appears from the imported tags for the connector.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8ySxZhLyQ3WRBEtWPRdq2_applications-mysql-terminal-data.png" size="80" width="1619" height="744" caption="MySQL connection messages" position="center" showCaption="true"}


[title] Litmus Edge 3.11.0
[path] Product Updates/2023/

Release Date: December 19, 2023

Review the current list of [Limitations](docId:-ptLJws-rryFLBDqgR3Ly).&#x20;

## New Features

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **DeviceHub**:<br />* Support is now provided for the following drivers:
  - AB DF1 Ethernet
  - AB DF1 Serial
  - Emerson FB107 Ethernet
  - Enron Modbus
  - IEC60870-5-104 Ethernet (Gen1)
  - Mitsubishi iQ-F Ethernet
  - OSI Agent Advanced
  - Profinet Acyclic Turck
  - Siemens S7 CommPlus Symbolic                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Integration**:<br />* The following connectors are now available:
  - Aveva Data Hub
  - AWS SiteWise
  - Snowflake&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Network**:<br />* A new firewall management feature is now available by navigating to **System&#x20;**> **Network&#x20;**> **Firewall**. This feature allows you to manage firewall rules to open specific ports or port ranges for inbound communication.&#x20;
  - The **Firewall&#x20;**&#x70;ane allows you to do the following:
    - Review what ports are being used by Litmus Edge system components, applications, and containers.&#x20;
    - Ensure that any DeviceHub drivers and Docker container applications are not running on conflicting ports.&#x20;
    - Open ports and port ranges with appropriate protocol (TCP/UDP) for Docker applications, containers, and DeviceHub drivers.
    - Manage and close ports as needed.&#x20;
  - These firewall rules apply only to IPv4 traffic.&#x20;
* A new static route management feature is now available by navigating to **System&#x20;**> **Network&#x20;**> **Routes**. This feature allows you to control the routing of messages in a complex network with multiple interfaces and gateways.
  - The **Routes&#x20;**&#x70;ane allows you to do the following:
    - Review the list of current static routes.&#x20;
    - Add new static routes.&#x20;
    - Edit  and remove static routes.&#x20;
  - **Warning**: Incorrect static routes can disconnect your network access to Litmus Edge. Please add or modify routes with caution. |
| **External Storage**:<br />* The new Cloud Sync Storage feature allows you to transfer files from Litmus Edge to a cloud storage service. You can set up cloud storage with AWS S3 and Azure Blob Storage.&#x20;
  - To enable this feature, navigate to **System&#x20;**> **Support&#x20;**> **Features&#x20;**&#x61;nd click the toggle for Cloud Storage Sync.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **Digital Twins**:<br />* You can now view a count of the number of attributes when viewing models and instances.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **System**: <br />* The Wi-Fi section has moved to **System&#x20;**> **Network&#x20;**&#x61;s a new tab.&#x20;
* A new *NTP&#x20;**Client Status* section in **System&#x20;**> **Network&#x20;**>**&#x20;DNS / NTP Servers** displays information on the status and time synchronization of the NTP Client.&#x20;
* The OPC UA Server performance is now enhanced by moving to the Unified Automation Stack.
* When you activate Litmus Edge through Litmus Edge Manager, a validation is now available to ensure the connection is valid.&#x20;
* You can download an event history in a CSV file by navigating to **System&#x20;**> **Events&#x20;**> **Events History**.&#x20;
* You can retrieve topics for events by navigating to **System > Events**.&#x20;
* When upgrading Litmus Edge by uploading or downloading the upgrade file, you will now need to download a backup of your Litmus Edge before proceeding with the upgrade.
* When downloading a support bundle, you now have the option to download config and log details, or only download log details.&#x20;
* When importing a template and one component fails to be imported, the import process doesn't stop. The failed component is skipped and the template process continues.&#x20;
* When a license activation fails, the error messages now provide more relevant information on the cause of the error.&#x20;
* The Enable Data Store setting for DeviceHub devices is now saved in template files.&#x20;
* The grace period to allow a disconnection from the license server is now increased from 8 hours to 24 hours.&#x20;                                                                                                      |
| **Users**: <br />* When configuring roles, you can now specify which Flows Managers users can modify.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **DeviceHub**:<br />* Several enhancements have been made to the **Server Search** feature.&#x20;
* You can now search for tags in all devices from **DeviceHub&#x20;**> **Tags**.&#x20;
* If there is a system reboot, the status of devices is maintained. For example, if a device is stopped and Litmus Edge is rebooted, the device will remain stopped when Litmus Edge restarts.&#x20;
* When you click a device tile and then click the **Tags&#x20;**&#x74;ab, you can now manage the list of tags for the device.&#x20;
* New data types are now available for Omron NJ Ethernet (Gen1) and Keyence Nano Ethernet (Gen1).&#x20;
* The following options are now available when connecting a device.&#x20;
  - **Publish on Polling Interval**
    - Only available for Gen 2 drivers.&#x20;
    - If this option is selected, the driver will always publish messages according to the polling interval configuration. If the driver has not completed the request to read the data at a polling interval, the payload will have a `success=false` message.&#x20;
    - If this option is not selected, the driver will not publish a message at the polling interval if the request to read data has not completed.&#x20;
  - **Watchdog**
    - This option is not available for all drivers. For example, drivers that act as servers don't have this option, such as Industrial OT Server and OSI Agent.&#x20;
    - If this option is selected, the driver will be monitored based on the Watchdog period (in seconds) you configure. If an issue is detected, then the driver will restart.&#x20;
* The Browse Tags feature is now available for the Beckhoff TwinCAT3 Ethernet(Gen1) driver.&#x20; |
| **Flows Manager**:<br />* The number of Flows Managers you can create is now increased from 4 to 16.&#x20;
* The maximum size of logs for flows is now 80 MB, rotated between two log files of 40 MB each.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Integration**<br />* The Google Pub/Sub connector has the following enhancements:
  - You can define custom attributes.&#x20;
  - You can upload the value for the *Service Account Key* field.&#x20;
  - The client email parameter is now available
* You now have the option of uploading a CSV file of topics for connectors.&#x20;
* You can now download the topics for a connector.&#x20;
* You can now clear logs for connectors.&#x20;
* Connectors that have certificate variables now allow you to upload certificate files.&#x20;
* The inbound option for topics has been removed from connectors that only support outbound topics.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| **OPC UA**: <br />* You can now do the following:
  - Define the network interface to expose the OPC UA server from.&#x20;
  - Re-initialize the server when any changes are made to the server configuration.&#x20;
  - Place items under the root or at the parent level.&#x20;
  - Create a custom hierarchy with folders, devices, and tags.&#x20;
  - Reset the hierarchy with the following options: All, Manually Created Only, Imported Only.&#x20;
  - Pass any NATS topic as a message as long as it follows the standard DeviceHub structure.&#x20;
* The OPC UA server now does the following:
  - Converts all the data types of the respective driver to standard OPC UA server data types.&#x20;
  - Allows bi-directional communication (read/write) to the topics.&#x20;
* A new OPC UA server Node ID field is now available.&#x20;
* The following new policies are now available:
  - Aes256\_Sha256\_RsaPss
  - Aes128\_Sha256\_RsaOaep                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Digital Twins**:<br />* In the event of system reboot, the output payload provides the last known attribute timestamps and values for instances.&#x20;
* The following data types are now supported for dynamic attributes:&#x20;
  - JSON
  - Number
  - String
  - Boolean
  - Array
* Models and instances are now tagged with version numbers based on changes made.&#x20;
* You now have the option to rename nodes and items in hierarchies.&#x20;
* You have the option of importing and exporting static attributes, dynamic attributes, and hierarchies in model and instance configurations.&#x20;
* The fields for uploading CSV files have been updated.&#x20;
* Models and instances are now saved by new **Save Model** and **Save Instance** buttons.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Analytics**:<br />* Two new options are now available for the DataHub Subscribe input processor:
  - Ignore Failed Data: Select to ignore data with the output `success=false`.&#x20;
  - Ignore Null Value: Select to ignore data with the output `value=null`.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **DataHub**:<br />* Starting with Litmus Edge version 3.5.2, the user interface prompted you to configure an external timeseries database and not an internal one. You now have the option of configuring either an internal or external timeseries database with no plan to deprecate internal timeseries databases.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Applications**:<br />* In **Applications&#x20;**> **Containers**, a new *Status&#x20;*&#x63;olumn displays the uptime and current status of the containers.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Terminal User Interface (TUI)**:<br />* Fixed issue with a blank username or password not displaying an error message.&#x20;
* Fixed issue with the activation and deactivation function not working.
* Fixed issue with the initial reboot sequence allowing you to access the main menu and make changes before the reboot initialization finishes and the reboot occurs.
* Fixed issue with some fields, such as Cloud Activation URL and Docker Subnet, accepting blank entries before submitting.
* Fixed issue with Cloud Activation not allowing to cancel or timeout.
* Fixed issue with the Managed Services section not displaying any options.
* Fixed issue with being able to access all TUI options if an admin user cancels the end-user license agreement (EULA) and logs in again to the TUI.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **System**: <br />* Fixed issue with not being able to generate support bundles.&#x20;
* Fixed issue with the Docker version not creating events for DeviceHub, Connectors, and Flows.&#x20;
* Fixed issue with the source timestamp not updating in an OPC UA server.&#x20;
* Fixed issue with applications not running successfully after upgrading Litmus Edge.&#x20;
* Fixed issue with users with the Auth\:Modify permission having issues navigating to **System&#x20;**> **Device&#x20;****Management**.&#x20;
* Fixed issue with downloaded template files including components that weren't selected.&#x20;
* Fixed issue with a connected DB-InfluxDB SSL connector significantly increasing its CPU usage after upgrading Litmus Edge.&#x20;
* Fixed issue with templates not loading Marketplace catalogs and registries.&#x20;
* Fixed issue with LDAP Group Mapping not being available after updating Litmus Edge.&#x20;
* Fixed issue with Raspberry PI ARM64 not displaying CPU info.&#x20;
* Fixed issue with backup files with over 25 DeviceHub devices not uploading successfully.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **DeviceHub**:<br />* Fixed issue with the Siemens S7 driver not being able to collect tags with the data type `S5Time`.&#x20;
* Fixed issue with the Browse Tags feature not working after browsing tags, canceling the operation, and attempting to browse tags again.&#x20;
* Fixed issue with the API sending empty responses if a DeviceHub device is stopped.&#x20;
* Fixed issue with a "Successfully copied" message displaying after copying a topic in DeviceHub but after pasting "undefined" displays. &#x20;
* Fixed issue with issues trying to read data a Profinet device using the PROFIdrive profile.&#x20;
* Fixed issue with the AB CompactLogix Ethernet FreeTag driver not being able to re-connect after a power outage for the PLC connected to the driver.&#x20;
* Fixed issue with devices not receiving all license features from the license server.
* Fixed issue with address ranges for the following drivers:
  - AB PLC5 (Gen1)
  - AB PLC5 Ethernet (Gen1)
  - Beckhoff ADS/AMS Ethernet (Gen1)
  - Siemens S5-Ethernet (Gen1)
  - Siemens S7-200 Ethernet (Gen1)
  - Siemens S7-200 Serial (Gen1)
  - Siemens S7-300 Serial (Gen1)
  - Siemens S7-Advanced (Gen1)
* Fixed the following issues with the AB CompactLogix Ethernet Advanced driver:
  - The driver not publishing NATS messages when the driver has a large number of tags.&#x20;
  - Polling of tags affected by incorrect grouping of Boolean tags.&#x20;
* Fixed issue with the Browse Tags feature returning the incorrect number of tags for the OPC UA Client Advanced driver.&#x20;
* Fixed issue with the Roc800 Ethernet driver crashing after adding a tag with type Opcode180.&#x20; |
| **Analytics**:<br />* Fixed formatting and navigation issues with the Tengo Script processor.&#x20;
* Fixed issue with the **Export** option on the Analytics canvas not working successfully.&#x20;
* Fixed issue with an error persisting for the Change of Value node even after resetting Litmus Edge.&#x20;
* Fixed issue with an error message displaying after connecting a Statistical Prediction node to a Moving Average node.
* Fixed issue with the **Next&#x20;**&#x62;utton in the *Create Flow* dialog not being available after selecting **DataHub&#x20;****Subscribe**.&#x20;
* Fixed issue with the Change of Value processor using the incorrect data type for values.&#x20;
* Fixed issue with the output of values written as string values when they should be written as integer values.&#x20;
* Fixed issue with the debug window not displaying correctly unless the browser page is refreshed.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **Flows Manager**: <br />* Fixed issue with new flows not displaying or the admin flow instance not starting unless Litmus Edge is rebooted.&#x20;
* Fixed issue with errors displaying after importing a file of flows.&#x20;
* Fixed issue with uploading a node\_module file in an incorrect format, and a message displays incorrectly notifying you the file was successfully uploaded.&#x20;
* Fixed issue with the poll-once topic only displaying data after clicking the inject node the first time. Subsequent clicks of the inject node now correctly display data.&#x20;
* Fixed issue with Flows Managers displaying a `warning` status incorrectly.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Digital Twins**:<br />* Fixed issue with write and Poll-once topics being listed as options for dynamic attributes.&#x20;
* Fixed issue with the order of model hierarchies not saving properly.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Integration**:<br />* Fixed issue with the MongoDB 4+ connector consuming a large amount of RAM and consequently crashing.
* Fixed issue with the Google Pub/Sub connector restarting topics after they are deleted.&#x20;
* Fixed issue with duplicate topics being created for connectors.&#x20;
* Fixed issue with frequent disconnections from the InfluxDB 2.x TCP connector.&#x20;
* Fixed issue with the Mindsphere connector not being able to send data.&#x20;
* Fixed issue with the log window not resetting when returning to view it.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **OPC UA**: <br />* Fixed issue with errors after starting and stopping the OPC UA Server.&#x20;
* Fixed issue with write requests being sent to the OPC UA server as empty payloads.&#x20;
* Fixed issue with importing an OPC UA hierarchy and not all nodes are imported.&#x20;
* Fixed issue with the OPC UA server showing tags with the bit data type as a string data type.&#x20;
* Fixed issue with importing a hierarchy from DeviceHub from a JSON file and the NodeID Settings are ignored.&#x20;
* Fixed issue with the OPC UA Server not being able to handle all data types.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Applications**:<br />* Fixed issue with not being able to fetch logs for a container with the filter of one minute.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

## Deprecated Components and Features

| Description                                                                                                                                                                                                                                                                                                                            |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **System**:<br />* Functionality in **System&#x20;**> **Remote Access** is no longer available.&#x20;                                                                                                                                                                                                                                  |
| **Terminal User Interface (TUI)**:<br />* You can no longer enter a site-based license through the TUI. To enter a site-based license or to complete offline license activation, you will need to use the Web UI for Litmus Edge or Litmus Edge Manager.&#x20;                                                                         |
| **DeviceHub**:<br />* The Koyo Ethernet driver is no longer available. It has been replaced with the Koyo Ethernet (Gen1) driver. &#x20;
* The Siemens S7-400 driver is no longer available. We recommend using [Siemens S7](docId:3F4pyvAbl33gjzd8FFNJ4) or [Siemens S7-Advanced (Gen1)](docId\:dVuAFyxV1oXlASaxVvb8d) instead.&#x20; |
| **Integration**:<br />* The Loopback connector is no longer available.&#x20;                                                                                                                                                                                                                                                           |


[title] CIDR Conversion Table
[path] Resources/

CIDR notation accomplishes the same task as network subnet masking. CIDR defines which IP addresses, and how many host IP addresses are allowed on the network. The following table details how many networks and IP addresses are allowed with each CIDR length and equivalent subnet masks.

**What does CIDR mean?**

CIDR stands for **Classless Inter-Domain Routing**. It enables network administrators to group blocks of IP addresses into single routing networks. CIDR accomplishes the same task as traditional subnet masking.

To understand what CIDR notation means, take the IP address 192.168.0.15 and the /24 CIDR, for example. 192.168.0.15 defines the address prefix, and /24 defines the number of bits reserved for the netmask. This means that the first 24 bits of the IP address are reserved for network routing. Thus, writing 192.168.0.15/24 means the same thing as using the 255.255.255.0 subnet mask for the 192.168.0.15 IP address. This means that the last 8 bits of the IP address are reserved for host IP addresses, thus IP addresses 192.168.0.15 through 192.168.0.255 are allowed as host IP addresses on the network.

**CIDR Conversion Table**


| **CIDR Length** | **Mask**        | **Number of Networks** | **Number of Hosts** |
| --------------- | --------------- | ---------------------- | ------------------- |
| /1              | 128.0.0.0       | 128 A                  | 2,147,483,392       |
| /2              | 192.0.0.0       | 64 A                   | 1,073,741,696       |
| /3              | 224.0.0.0       | 32 A                   | 536,870,848         |
| /4              | 240.0.0.0       | 16 A                   | 268,435,424         |
| /5              | 248.0.0.0       | 8 A                    | 134,217,712         |
| /6              | 252.0.0.0       | 4 A                    | 67,108,856          |
| /7              | 254.0.0.0       | 2 A                    | 33,554,428          |
| /8              | 255.0.0.0       | 1 A                    | 16,777,214          |
| /9              | 255.128.0.0     | 128 B                  | 8,388,352           |
| /10             | 255.192.0.0     | 64 B                   | 4,194,176           |
| /11             | 255.224.0.0     | 32 B                   | 2,097,088           |
| /12             | 255.240.0.0     | 16 B                   | 1,048,544           |
| /13             | 255.248.0.0     | 8 B                    | 524,272             |
| /14             | 255.252.0.0     | 4 B                    | 262,136             |
| /15             | 255.254.0.0     | 2 B                    | 131,068             |
| /16             | 255.255.0.0     | 1 B                    | 65,025              |
| /17             | 255.255.128.0   | 128 C                  | 32,512              |
| /18             | 255.255.192.0   | 64 C                   | 16,256              |
| /19             | 255.255.224.0   | 32 C                   | 8,128               |
| /20             | 255.255.240.0   | 16 C                   | 4,064               |
| /21             | 255.255.248.0   | 8 C                    | 2,032               |
| /22             | 255.255.252.0   | 4 C                    | 1,016               |
| /23             | 255.255.254.0   | 2 C                    | 508                 |
| /24             | 255.255.255.0   | 1 C                    | 254                 |
| /25             | 255.255.255.128 | 2 subnets              | 124                 |
| /26             | 255.255.255.192 | 4 subnets              | 62                  |
| /27             | 255.255.255.224 | 8 subnets              | 30                  |
| /28             | 255.255.255.240 | 16 subnets             | 14                  |
| /29             | 255.255.255.248 | 32 subnets             | 6                   |
| /30             | 255.255.255.252 | 64 subnets             | 2                   |
| /31             | 255.255.255.254 | none                   | none                |
| /32             | 255.255.255.255 | none                   | 1                   |

**Class A, B, and C Networks**:

The above table uses Class A, B, and C to define network types. Network classes define how many addresses are allowed on the network, with class A being the largest and class C being the smallest. Specific size details are defined in the following class definitions:

**Class A**: Allows 16777216 host addresses on the network. The starting host address is 0.0.0.0 and the ending address is 127.0.0.0. These networks use the 255.0.0.0 subnet mask, or /8 CIDR notation.

**Class B**: Allows 65536 host addresses on the network. The starting host address is 128.0.0.0 and the ending address is 191.255.0.0. These networks use the 255.255.0.0 subnet mask, or /16 CIDR notation.

**Class C**: Allows 256 host addresses on the network. The starting host address is 192.0.0.0 and the ending address is 223.255.255.0. These networks use the 255.255.255.0 subnet mask, or /24 CIDR notation.


[title] Google Cloud Pub/Sub Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and [Google Pub/Sub service](https://cloud.google.com/pubsub/docs/overview).&#x20;

Once the integration is set up, you can use it for the following:&#x20;

- Publishing data from a topic in your edge device to a *Subscription&#x20;*&#x74;opic in the Google Cloud Platform (GCP)
- Subscribing to data published by a *Publication&#x20;*&#x74;opic in the Google Cloud Platform

# Before You Begin

- You need to create a Google Service Account. Make sure the account has the correct roles and permissions required for setting up the connection.&#x20;
- Refer to the following Google resources for learning more about Pub/Sub and configuring connections:
  - [Google Pub/Sub service](https://cloud.google.com/pubsub/docs/overview)
  - [Configure Private Google Access for on-premises hosts > Domain Options ](https://cloud.google.com/vpc/docs/configure-private-google-access-hybrid#config-choose-domain)(information regarding private access to GCP services)
  - [Supported products and limitations > Pub/Sub ](https://cloud.google.com/vpc-service-controls/docs/supported-products#table_pubsub)(information regarding private access to GCP services)
  - [SDK on Publish Settings](https://pkg.go.dev/cloud.google.com/go/pubsub#PublishSettings)
  - [Publish messages to topics](https://cloud.google.com/pubsub/docs/publisher)

# Set up the Outbound Connection (Publish to Google Pub/Sub)

Follow the steps below to set up the outbound connection.&#x20;

## Step 1: Create Publication Topic in Google Cloud Platform

In the Google Cloud Platform, create a *publication&#x20;*&#x74;opic. A matching *subscription&#x20;*&#x74;opic is created automatically, with the *-sub* suffix appended to the topic name.

## Step 2: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

## Step 3: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

## Step 4: Add the Google Cloud Pub/Sub Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **Google Cloud Pub/Sub Connector** provider.&#x20;

For more information about message publication settings, see the [SDK on Publish Settings](https://pkg.go.dev/cloud.google.com/go/pubsub#PublishSettings).&#x20;

Configure the following parameters. These fields are available for Litmus Edge version 3.11.0 and later.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Service Account Key (.json)**: Copy the JSON key from your Google Cloud Platform and paste it here. For Litmus Edge version 3.11.0 and later, you have the option to upload a file.&#x20;
- **The project ID of the cloud project**: Copy the ID from your Google Cloud Platform and paste it here.&#x20;
- **The private key ID of the cloud project**: Copy the key ID from your Google Cloud Platform and paste it here.&#x20;
- **The client email of the cloud project**: Enter the email from your Google Cloud Platform.&#x20;
- **Integration Topic**: Copy the name of the *Publication&#x20;*&#x74;opic (without the "-sub" suffix) from your Google Cloud Platform and paste it here.
- **Custom Attributes**:  For Litmus Edge version 3.11.0 and later, you can add custom attributes in key/value pairs for further data processing. Refer to the following to learn more:
  - [Use Custom Attributes in the Google Cloud Pub/Sub Connector](docId\:gW36RAZMeZIiEtUvWLgLd)
  - Google documentation for [Using attributes](https://cloud.google.com/pubsub/docs/publisher#using-attributes)
- **Parallel Publish Count**: The number of messages being published simultaneously. The default value is **100**. &#x20;
- **Parallel byte threshold**: The minimum size of a batch (in bytes) for the batch to be published. The default value is zero, which means that there is no threshold (limit).&#x20;
- **Publish count threshold**: The minimum number of messages in a batch for the batch to be published. The default value is zero, which means that there is no threshold (limit).&#x20;
- **Publish delay threshold (Milliseconds)**: The maximum time that the client will attempt to publish a batch of messages. The default value is zero, which means that there is no threshold (limit).&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

## Step 5: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/z8pQ_cSdvBAp-YYmvkyFf_google.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

## Step 6: Create Outbound Topics for Connector

You will now need to import the tags you added in Step 2 to the connector as topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After importing the tag(s), do the following:

- Edit the tag and configure the **Remote Data Topic**. Copy and paste the name of the *Subscription&#x20;*&#x74;opic  (with the `-sub` suffix) from your Google Cloud Platform. &#x20;
- Make sure the connector has a CONNECTED status.&#x20;

## Step 7: Enable Topics

Because you imported DeviceHub tags for a *CONNECTED* connector, all topics will be disabled.&#x20;

To enable the topics, return to the *Topics&#x20;*&#x74;ab and click the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Iq7BWYqGWueu4US73iBl3_image.png "Enable all topics icon")

## Step 8: Verify Connection in Google Cloud Platform

**To verify the connection in Google Cloud Platform:**

1. Pull the *subscription&#x20;*&#x74;opic to see messages it receives from the Litmus Edge outbound topics created previously.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-VdXPYXn3ue8QmzOVGPMD_pubsubmsg1000x272.png "List of Litmus Edge outbound topics")
2. View the *subscription&#x20;*&#x73;tatistics.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/u-2c_cHty2BoX6BGFJBKN_pubsubgraph1000x235.png "Graph of subscription statistic")

# Set up the Inbound Connection (Subscribe to Google Pub/Sub)

Follow the steps below to set up the inbound connection.&#x20;

See [Publish messages to topics](https://cloud.google.com/pubsub/docs/publisher) to learn more about publishing messages in Google Pub/Sub.&#x20;

## Step 1: Create Publication Topic in Google Cloud Platform

In the Google Cloud Platform, create a *publication&#x20;*&#x74;opic.

## Step 2: Add the Google Cloud Pub/Sub Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **Google Cloud Pub/Sub Connector** provider.&#x20;

Configure the following parameters. These fields are available for Litmus Edge version 3.11.0 and later.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Service Account Key (.json)**: Copy the JSON key from your Google Cloud Platform and paste it here. For Litmus Edge version 3.11.0 and later, you have the option to upload a file.&#x20;
- **The project ID of the cloud project**: Copy the ID from your Google Cloud Platform and paste it here.&#x20;
- **The private key ID of the cloud project**: Copy the key ID from your Google Cloud Platform and paste it here.&#x20;
- **The client email of the cloud project**: Enter the email from your Google Cloud Platform.&#x20;
- **Integration Topic**: Copy the name of the *Publication&#x20;*&#x74;opic (without the "-sub" suffix) from your Google Cloud Platform and paste it here.
- **Custom Attributes**:  For Litmus Edge version 3.11.0 and later, you can add custom attributes in key/value pairs for further data processing. Refer to the following to learn more:
  - [Use Custom Attributes in the Google Cloud Pub/Sub Connector](docId\:gW36RAZMeZIiEtUvWLgLd)
  - Google documentation for [Using attributes](https://cloud.google.com/pubsub/docs/publisher#using-attributes)
- **Parallel Publish Count**: The number of messages being published simultaneously. The default value is **100**. &#x20;
- **Parallel byte threshold**: The minimum size of a batch (in bytes) for the batch to be published. The default value is zero, which means that there is no threshold (limit).&#x20;
- **Publish count threshold**: The minimum number of messages in a batch for the batch to be published. The default value is zero, which means that there is no threshold (limit).&#x20;
- **Publish delay threshold (Milliseconds)**: The maximum time that the client will attempt to publish a batch of messages. The default value is zero, which means that there is no threshold (limit).&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

## Step 3: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/eiB32iROGzvFcrs6xBjad_google.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

## Step 4: Create Inbound Topic for Connector

You will now need to create a topic in Litmus Edge from the Google Cloud Platform publication topic created in Step 1.&#x20;

**To create inbound topics:&#x20;**

1. Navigate to **Integration**.&#x20;
2. Click the connector tile.&#x20;
3. Click the **Topics&#x20;**&#x74;ab.&#x20;
4. Click the **Add a new subscription** icon.
   The *Data Integration* dialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RhLASRY6moVGfDkGhz12N_googleaddsubscriptionle.png)
5. Configure the following parameters.&#x20;
   - **Data Direction**: Select **Remote to Local - Inbound**.&#x20;
   - **Local Data Topic**: Enter a name for the topic name in Litmus Edge.&#x20;
   - **Remote Data Topic**: Copy and paste the *Publication&#x20;*&#x74;opic from your Google Cloud Platform.&#x20;
   - **Enable**: Select the toggle to enable the topic.&#x20;
6. Click **Yes&#x20;**&#x74;o add the topic.&#x20;
7. From the connector tile, ensure the connector is not disabled and still shows a CONNECTED status. Also verify the topic shows an *Enabled&#x20;*&#x73;tatus.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dbobD_VeGJHP75dKmzgM0_image.png)

## Step 5: Send Messages in Google Cloud Platform

Start sending messages through the *publication&#x20;*&#x74;opic (created in Step 1) from the Google Cloud Platform. See [Publish messages to topics](https://cloud.google.com/pubsub/docs/publisher) to learn more.&#x20;

## Step 6: Verify Connection in Litmus Edge

You can do one of the following to verify the connection in Litmus Edge. When configuring the Flow or application, use the th&#x65;**&#x20;Local Data Topic** name configured in Step 4.&#x20;

- [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to view the messages coming from Google Pub/Sub through the connector you created.&#x20;
- Visualize the incoming data using one of the dedicated [Applications](docId\:j4jhjBWbwQY1BS9A3G6Zk) such as [Grafana](docId\:SUoMePWWNb2wt-m7HD8Hh).&#x20;


[title] Litmus Edge FAQs
[path] Resources/

# Get Started with Litmus Edge

:::ExpandableHeading
What is Litmus Edge?

Litmus Edge is an operating system on an Industrial PC (IPC) appliance. This edge-level software seamlessly collects data from IoT devices/systems (such as sensors and PLCs) and integrates the data into the cloud or into on-premise enterprise systems. Extensive knowledge of 250+ device drivers, both legacy and newer systems, enables Litmus Edge to manage the variety of devices in an industrial environment. Litmus Edge software provides support for many protocols/buses (RS232, RS485, CAN, Ethernet, Fieldbus). The raw or processed data can be visualized and analyzed at the edge or sent to Litmus Edge Manager, in near real time.
:::

:::ExpandableHeading
How can I try Litmus Edge?

Contact Litmus to schedule a Litmus Edge Demo.
:::

:::ExpandableHeading
How do I access Litmus Edge?

- Enter the IP address into a browser running on the same network as the Litmus Edge device.
- For example, enter `https://192.168.1.49`, into the address bar.
:::

:::ExpandableHeading
What browsers does Litmus Edge support?

The latest versions of the following browsers:

- Google Chrome
- Mozilla Firefox
- Safari
- Microsoft Edge

If you encounter any issues with Litmus Edge, make sure to remove any ad blockers.&#x20;
:::

:::ExpandableHeading
I am new to Litmus Edge, how do I get started?

Try the Litmus Edge [Installation and Deployments](docId\:kfV1aRRRlYrgPLszg75gl) guide to start using Litmus Edge concepts and procedures.


:::

:::ExpandableHeading
Can I use Litmus Edge without Litmus Edge Manager?

Yes, you can use Litmus Edge without Litmus Edge Manager. You can collect data from a device and visualize data through Litmus Edge with the DeviceHub and Flows components.
:::

:::ExpandableHeading
Can I SSH into the machine running Litmus Edge software?

No, you should only access the machine using the WebUI or the provided Terminal User Interface.
:::

:::ExpandableHeading
What is the list of ports required for Litmus Edge?

- Port 443 must be open to access the Litmus Edge Web User Interface.&#x20;
- To allow a connection with Litmus Edge and Litmus Edge Manager, ports 80, 443, 8883, and 51820 must be open.&#x20;

See [Firewall Port Configuration Requirements](docId\:boQw9Hv4KQBt6nUF7m9s9) to learn more about other ports used by Litmus Edge services.&#x20;
:::

:::ExpandableHeading
Is it possible to connect using external authentication?

Yes. You can use the LDAP/Active Directory. In the Litmus Edge navigation panel, select **System > LDAP/AD Auth**.
:::

:::ExpandableHeading
What is the maximum number of times I can attempt a log in? How do I recover from a lock out?

You can attempt to log in five times before you are locked out. With each attempt, the timeout increases until you are locked out after the fifth try. You can restart to reset the timeout counter.

An admin can reset a user's password from the **System > User** pane. The user must restart after a reset by the admin. An admin password cannot be reset due to security. If you are an admin that has forgotten your password, you must reinstall.
:::

# Upgrading Litmus Edge

:::ExpandableHeading
How do I know that there is a new release of Litmus Edge?

Visit the [Litmus Central portal](https://central.litmus.io/).
:::

:::ExpandableHeading
What is the difference between **Upgrade&#x20;**&#x61;nd **Add License** on the License pane?&#x20;

*Upgrade&#x20;*&#x69;s next to the core license on the License pane. Only a single core license is allowed. If you have a different core license, you can use Upgrade. Using Upgrade replaces the current core license.

*Add License* on the License pane is used to add a feature/pack license such as Analytics or a Marketplace add-on.&#x20;
:::

:::ExpandableHeading
How do I upgrade to a new version of Litmus Edge without doing a fresh install?

Use Upgrade next to the core license on the License pane. You need a `.upd` file for the new version and a currently installed version of Litmus Edge that supports upgrades to the new version. See [Software Updates](docId\:HfThqIf8nNwIujhBdyoJZ) for details on which version you must start from to begin the upgrade process from Litmus Edge.
:::

# Edge Devices and Drivers

:::ExpandableHeading
Why does my DeviceHub device display a `DISCONNECTED` status or a `success=false` message for a tag?

Refer to [DeviceHub Troubleshooting](docId\:M8jYFRaXMkKTiJXpc8OTK) for reasons and steps to resolve these issues.&#x20;
:::

:::ExpandableHeading
Why is my CSV file not able to upload tags?

Refer to [DeviceHub Troubleshooting](docId\:M8jYFRaXMkKTiJXpc8OTK) for possible reasons for this issue and how to resolve it.&#x20;
:::

:::ExpandableHeading
What devices and drivers are supported?

Check out the extensive lists of [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr).
:::

:::ExpandableHeading
What is the DeviceHub?

DeviceHub provides the mechanism for connecting to physical devices (PLCs, sensors) to collect data from them.

- DeviceHub needs to be configured for *southbound* connections, including connections to PLCs.
- DeviceHub collects data from physical devices and publishes it to an internal message broker. The data can be managed locally and sent to any desired destination.
- DeviceHub's main purpose is to collect data from PLCs (Programmable Logic Controller) and publish it to a Message Broker subject for further distribution.
- PLC-level statistics and input/output data can be obtained at the edge using DeviceHub.
- There are 250+ device drivers included in DeviceHub. DeviceHub supports many PLC manufacturers, such as Siemens, Allen-Bradley, Mitsubishi, Omron. See also [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr).
:::

:::ExpandableHeading
What is the purpose of a Tag in DeviceHub?

- A DeviceHub device tag refers to the PLC tag/register. PLC registers hold PLC runtime information.
- Tags are the actual input and output registers in a device to which sensors are connected. Every PLC has a tag and tags differ from PLC to PLC.
- Examples of tags include: digital input, digital output, analog input, analog output, timers, counters.
:::

:::ExpandableHeading
Why is my device not connecting to Litmus Edge?

Try double-checking connection parameters and firewall settings.
:::

:::ExpandableHeading
How can I remotely manage the device?

Use the Remote Access service, along with Litmus Edge and Litmus Edge Manager configurations.
:::

:::ExpandableHeading
Can I program a PLC using Litmus Edge?

No, the PLC cannot be programmed from Litmus Edge. The PLC (Programmable Logic Controller) needs to be already programmed before setting up in Litmus Edge. Litmus Edge reads the PLC data.
:::

:::ExpandableHeading
Why is Litmus Edge using a lot of my networks bandwidth or data limit?

Try setting the polling interval for DeviceHub Tags. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) for more information about length of time. Polling PLC registers too often may cause too much data to be sent over the network from which the Litmus Edge is connected.
:::

# Flows Manager

:::ExpandableHeading
What is Flows?

Flows offers flow-based programming with a drag-and-drop flow editor. It is for data manipulation, data normalization, and visualization.
:::

:::ExpandableHeading
How can I push a flow to many devices?

Flows has an import/export feature to share flows.
:::

:::ExpandableHeading
Why does flow stop working even though it is shown as “running”?

The Flows Manager module has a max limit of 4 concurrently running flows. If a flow crashes, the module tries to restart it 5 times, and then stops it permanently. This causes the module to reach the limit, which generated the “limit reached” error. When you see that error, download the flow file, delete the flow instance. start a new one, import it, and then edit the flow logic to make sure it will not crash. Soon a warning status will be implemented for the flows, which is expected to obviate the confusion.
:::

:::ExpandableHeading
Why doesn't the Flows "export to clipboard" option copy the data to the clipboard?

Before exporting nodes, select the nodes and connecting wires within a flow tab. See [Manage the Flow Canvas](docId\:qQnwjDagEcrDG0JtIVulu).&#x20;
:::

:::ExpandableHeading
Why aren't all my nodes included in my Flows backup?

The most likely cause of this is due to the use of custom nodes. If a custom node is used in your flow, you must download and reinstall the custom nodes. Custom nodes are not included in backups.
:::

# OPC UA

:::ExpandableHeading
Which servers are supported with OPC UA Client driver?

See [OPC UA Client](docId\:CYSORhlYGBTc7-CJiLi0v) for more information about supported servers.
:::

# Applications and Integrations

:::ExpandableHeading
How can I prevent the deployment of unknown or unsecured containers into Marketplace? Is there a certificate authentication mechanism that I can apply?

For containers, we rely on the security that Docker offers. For deployment, you can use certificate-based authentication to add a private registry (Litmus Edge Manager, quay.io, Google Container Registry - GCR, Azure Registry, Docker Trusted Registry, Docker Hub.) and then use images on these registries to launch containers.
:::

:::ExpandableHeading
Why do I see my image under the Images section and not under the Containers section?

The **Applications > Containers** section only displays containers that are currently active or stopped.

Since none of the uploaded images have been used with a Docker command, th&#x65;**&#x20;Applications > Containers** section does not display anything related to those images. You must construct the correct Docker command and run it.

Only after running the Docker command will anything related to the uploaded images appear in the **Applications > Containers&#x20;**&#x73;ection.

See [The Docker Run Command-Line Reference](https://docs.docker.com/engine/reference/commandline/run/) for more information about how to structure a Docker command to run a container.

If you ran the Docker command and the image does not appear in the **Applications > Containers** section, open a new ticket, and provide the Docker command that was used.
:::

:::ExpandableHeading
Can I directly interact with MQTT on a local Litmus Edge?

Litmus Edge does NOT have MQTT broker. It has an MQTT client. However, you can launch a container with MQTT broker and connect to it.
:::

# System Settings

:::ExpandableHeading
Why am I having problems logging into my External Mount?

For the **System**>**External** **Storage** feature, passwords with the special character comma(`,`) are not supported. Change the password to not contain comma or commas.
:::

:::ExpandableHeading
What is the difference between a Device Backup and a Device Configuration Template?

A Backup is a `.DAT` file that cannot be customized and contain a predetermined list of configuration settings.

A Template is a `.json` file that can be customized to contain a list of selectable configuration settings.

The key difference between the two are the use purposes. Restoring a hardware-damaged Litmus Edge Device should be done with a Backup while cloning a Litmus Edge Device to other devices should be done with a Template.

Furthermore, a restore operation will replicate and overwrite the Litmus Edge device's system state from the backup (`.DAT`) file. On the contrary, a Template upload operation will append (and not overwrite) its configurations settings to the Litmus Edge device.
:::


[title] Browser Issues
[path] Troubleshooting/Installation and Deployments Troubleshooting/

The following sections describe common browser-related technical difficulties may occur when trying to access Litmus Edge and how troubleshoot them. The difficulties that may arise includes the following:

- Browser Access Restrictions
- Browser Cache Issues

# Browser Access Restrictions

Browsers typically display one of the following two warnings when trying to access Litmus Edge:

- Your connection is not private
- You connection is not secure

Litmus Edge uses self-signed certificates by default. This type of warning is expected when using a self-signed certificate in a local environment.

You can bypass browser warnings on Google Chrome and Mozilla Firefox as follows:

- **Google Chrome**: Click **Advanced**, and then click **Proceed to \<website> (unsafe)** at the bottom of the page.
- **Mozilla Firefox**: Click **Advanced**, and then click **Add Exception...** at the bottom of the page. Click **Confirm Security Exception** on the pop-up window

The following table details some of the reasons for browser access restrictions and recommended steps to resolve the issues.

| **Possible Causes**                          | **Recommended Steps**                                                                                                                                           |
| -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Needs SSL Certificate from trusted authority | Litmus Edge includes a self-signed certificate, but you can add additional certificates. See [Certificates](docId\:s0dXZeU8mTAywyQsYEDyj) for more information. |
| Wrong date and time on computer/device       | Verify that the date and time are correct on the device.                                                                                                        |
| Browser cookies and cached files             | This usually only occurs in the Chrome browser. Clear the cookies and cache.                                                                                    |
| Anti-virus software block SSL connection     | Try disabling the anti-virus software.&#xA;                                                                                                                     |
| DNS caching                                  | Clear the DNS cache using the ipconfig command in Windows:<br />`ipconfig `/ `flushdns`                                                                         |
| Owner has configured website improperly      | This usually only occurs in the Firefox browser. Add the Litmus Edge IP address to the browser's website exceptions list to proceed.                            |

# Browser Cache Issues

Litmus Edge and Litmus Edge Manager applications use a web browser as their main interface. For optimized loading, web browsers keep a cache of files and images for recently visited websites. This avoids having to download the pages each time you visit a page.

This optimization can sometimes cause problems when the browser reads from its cache instead of downloading the latest page. This can cause unexpected behavior such as the following:

- The page looks partially loaded.
- The page looks like it has loaded but the page has strange or unusual formatting.
- Images on the page are in the wrong places.
- Strange login and license activation issues.

## Clear the Browser Cache

You can easily fix cache issues by clearing the cache. Here are some easy ways to clear a browser’s cache. These techniques should work on all Windows and Mac browsers.

- Hold down th&#x65;**&#xA0;SHIFT key while refreshing the page**. This forces a refresh with an empty cache on all browsers.
- Press the **CTRL + SHIFT + R** key combination to force an empty cache refresh. For **Safari**, press **CMD + R**.
- Hold th&#x65;**&#xA0;CTRL + SHIFT + DELETE** key combination to open the clear browser history menu. For **Safari**, press **CMD + SHIFT + DELETE**. Make sure to choose the cache option and the largest time range possible to clear the entire cache.

## View and Clear Browser History

Often, clearing the browser history can help fix issues. Press **CTRL + H** to view the history menu. You can clear the browsing data from this window or select a previous page from the list. For Safari, press **CMD +H** key combination to view the history menu.


[title] Litmus Edge 3.0.0.1
[path] Product Updates/2020/

Release Date: October 26, 2020

### Improvements and Bug Fixes

| Description                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Bug Fixes:<br />* **Critical** - Floating bug with ngnix throwing 500 error. Related to Linux system open files. Important bug fix
* **Minor** - DH publishing null value for polling tag
* **Minor** - Marketplace sync improvements |

### Known Issues

| Description                                                                                                                                                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| - Running Marketplace Application configuration are not added to template&#xD;
- Backup from previous system with same TagName may show an error upon restore&#xD;
- Backup/Restore from previous system may fail for some cases&#xD;
- Logs do not display for CC |




[title] Litmus Edge 3.2.8
[path] Product Updates/2022/

Release Date: June 23, 2022

## Enhancements and Improvements

| Description                                                                                                                                              |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**: <br />* OPCUA-subscribe gen2 driver now offers a new topic in the format `devicehub.batch_write.${DeviceID}` for supporting batch writes. |
| **System**: <br />* Editing Marketplace Catalog will now hide **Client Secret** values                                                                   |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **DeviceHub:**<br />* Observer-role users will no longer be able to delete devices in Show devices table view.
* Developer-role users can now successfully update devices in Device Details mode
* When Emerson driver ROC800 ethernet Polling Interval is updated with a new value, it might stop polling. Polling now continues at the rate of the specified new value.                                                                                                                                                                                                                                                                                                                              |
| **Flows Manager**:<br />* Multiple attempts to start flow now correctly shows 400 Bad Request status code accompanied by message `flow is starting, please wait...`
* Depreciation message for DataHub Subscribe node has been removed. The node will not be removed in the future.                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Applications**:<br />* Intermittent catalog synchronization issues (with a `502 Error`) for the **Container Registry** table has been resolved.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Integration**:<br />* Google Cloud Pub/Sub Connector will now display `DISCONNECTED` status for unauthorized users                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **System**:<br />* Memory leaks (leading to massive memory utilization) associated with excessive event traffic (>5 events per second) has been fixed.
* **Device Management**:
  - Fixed issues with upgrade between 3.2.3 to 3.2.5
  - Data store settings are preserved now during software upgrade.
* **Events**: Integration Connectors events are now successfully generated.
* **LDAP/AD Auth**: After Adding a Provider, groups are now saved with the associated Provider ID. (Previously stuck on loading the groups screen without saving the Provider ID).
* **System** > **WiFi** now successfully displays/hides depended on whether the Litmus Edge device contains a WiFi card or not. |
| **Licensing**:<br />* Litmus Licensing Server connected to a Litmus Edge instance will now have a more reliable and smoother connection.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |

## Known Issues

| Description                                                                                                                                                                                                                                          |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Applications**:<br />* An unavailable **Container Registry** may lead to a failed deployment attempt of the respective **Catalog App**.<br />**Workaround:** Perform a catalog Sync Marketplace operation to refresh the Container Registry table. |


[title] Litmus Edge 3.11.5
[path] Product Updates/2024/

Release Date: May 30, 2024

Review the current list of [Limitations](docId:-ptLJws-rryFLBDqgR3Ly).&#x20;

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **DeviceHub**:<br />* `Include Extended Event Data` is now enabled to read W\&M Events in the Emerson ROC800 driver.&#x20;
* Stream browse is now supported to allow for large arrays of data.
* The library for the Heidenhain 530 Advanced Ethernet (Gen1) driver has been updated. &#x20;
* The following FOCAS libraries can now be read for the Fanuc CNC Ethernet (Gen1) driver:
  -  cnc\_modal
  -  cnc\_rdgcode
  -  cnc\_rdcommand
* The Fanuc CNC Ethernet (Gen1) driver now supports the following write functions.
  - Custom macros:
    - cnc\_wrmacro
    - cnc\_wrmacror
    - cnc\_wrmacror2
  - PMC macros:
    - pmc\_wrcntldata
    - pmc\_wrcntlgrp
    - pmc\_wrkpm
    - pmc\_wrmsg
    - pmc\_wrpmcrng
    - pmc\_wrpmcparam
* The Count tag parameter is now available for the Koyo Ethernet (Gen1) driver.&#x20;
* The Euromap63 driver now supports *Write&#x20;*&#x75;sing the SET command.&#x20; |
| **Integration**:<br />* The outbound transfer speed for the Kafka TCP connector has been optimized.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **Cloud Storage**:<br />* Several improvements have been made to the Cloud Storage feature.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* Fixed issue with the AB CompactLogix Ethernet Advanced driver not being able to browse UDT tags.&#x20;
* Fixed issue with not being able to enter a tag address that ends in 8 or 9.&#x20;
* Fixed issue with tag addresses for Gen1 drivers being incorrectly rejected. Address validation is no longer enabled for tag addresses.&#x20;
* Fixed issue with the JTEKT Ethernet Gen1 driver where the address format for bit types in the tag table was incorrect. &#xA;The bit address format has changed to all lower case now.&#x20;                                                                                  |
| **OPC UA**:<br />* Fixed issue with a restriction on the number of segments allowed in topic names. There is no longer a restriction.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Integration**:<br />* Fixed issue with connectors generating a `too many open files` error.&#x20;
* Fixed issue with the NATS connector not reconnecting after a network issue.&#x20;
* Fixed issue with the Cognite connector not including all fields in responses. &#x20;
* Fixed issue with the Kafka connector writing data and requiring a restart after removing tags.
* Fixed issue with Kafka connector giving `db error` after enabling/disabling the topics. &#x20;
* Fixed issue with tags being able to be assigned to multiple subscriptions.
* Fixed issue with some input text fields not displaying the names and tooltips. |
| **Digital Twins:**<br />* Fixed issue where an incorrect JSON data error was shown when creating a Transformation.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |


[title] Create a Custom Table in a MySQL Database
[path] How-To-Guides/Integration Guides/

You can use the *Show Mapping* option in SQL-connector integrations to create a custom table.&#x20;

# User Scenario

In your manufacturing plant there is one PLC that tracks the temperature. You want to store the temperature value in a database with a timestamp, but don't need the additional data provided in the payload of DeviceHub devices. You also want to convert the values that are calculated in Celsius to Fahrenheit as integer values.&#x20;

For this guide, you will do the following:

- Simulate temperature values coming from a PLC
- Convert the values to Fahrenheit
- Deploy a MySQL container in Litmus Edge
- Create a custom table in the MySQL database
- Configure a connection to the database through the MySQL connector
- Send the data through the connector into the custom table

## Step 1: Add a Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and configure the following parameters.&#x20;

- **Device Type**: Simulator
- **Driver Name**: Generator
- **Enable Alias Topics**: Select the checkbox.&#x20;

## Step 2: Add Tag

After connecting the device, [Add a Tag](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. &#x20;

### Tag 1

- **Name**: Select **S - Random value generator**.
- **Value Type**: Select **int64**.&#x20;
- **Polling Interval**: Enter **5**.
- **Tag Name**: Enter **Tag1**.&#x20;
- **Min\_value**: Enter **100**.
- **Max\_value**: Enter **129**.

## Step 3: Create Analytics Flow

You can now create the analytics flow that will convert the temperature values into Celsius.&#x20;

**To create the analytics flow:**

1. Navigate to **Analytics&#x20;**> **Instances**.&#x20;
2. Click **Add Flow**.&#x20;
   The *Create Flow* dialog displays.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ygXFT_hIplmYcbdrL1MEU_flow-icon.png)
3. Fo&#x72;*&#x20;Processor Input*, select **DataHub Subscribe**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1ZZHYykbyQ_JtG7AkJyjy_datahubsubscribe.png)
4. Click the **Search&#x20;**&#x69;con and select the device and tag you previously created.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cFOc0_s7WsvPgF7PIYEV-_topicsearch.png)
5. Click **Next**.&#x20;
6. For *Processor Function*, select **Conversion**. Then, select the **Celsius > Fahrenheit** conversion.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aJUEEQSq1QHN2pO_WyCry_conversion2.png)
7. Click **Next**.&#x20;
8. For *Processor Output*, select **DataHub Publish**, Then, copy the topic name and store it somewhere securely for reference later.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ia9U9gayCgmhQl7FNgBH8_datahubpublish.png)
9. Click **Create Flow**.&#x20;
10. Click **Save&#x20;**&#x74;o save the analytics flow on the canvas.&#x20;

## Step 4: Create Flow

Since the only data needed from the device is the converted temperature value and the timestamp, you will create the flow that will parse the data and only provide the required data in the payload.&#x20;

**To create the flow:**

1. Navigate to **Flows Manager&#x20;**&#x61;nd create a new flow. See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
2. Connect the following nodes together:
   DataHub Subscribe
   json
   change
   json
   DataHub Publish
   debug (connected to second json node)
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6ALwpDjFvMQK0YkpDmvBq_flowfull.png)
3. Configure the nodes.&#x20;

### DataHub Subscribe

Th&#x65;*&#x20;DataHub Subscribe* node will be configured to subscribe to the topic that publishes the converted temperature values from the analytics flow.&#x20;

**To configure the DataHub Subscribe node:**

1. Double-click the **DataHub Subscribe** node.&#x20;
2. In the *Topic&#x20;*&#x66;ield paste the topic name copied from the DataHub Publish processor in the analytics flow.&#x20;
3. If needed, configure the Datahub Subscribe connection. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
4. Optionally, enter a name for the node.&#x20;
5. Click **Done**.&#x20;

### JSON Nodes

The two json nodes will do necessary parsing of data between JSON string and object. No configurations are needed for these nodes.&#x20;

### Change

The *change&#x20;*&#x6E;ode will delete the unnecessary data in the payload from the subscribed topic.&#x20;

**To configure the change node:&#x20;**

1. Double-click the **change&#x20;**&#x6E;ode.&#x20;
2. Update **Set&#x20;**&#x74;o **Delete**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VFB1sZ9iyo_AUakxMiFQY_changedelete.png" size="70" width="528" height="334" position="center" showCaption="false"}
3. In the msg. field, enter payload.metadata.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SuXYg91fPSPq1Fo1W4qWf_firstchange.png" size="70" width="517" height="299" position="center" showCaption="false"}
4. Click **+add**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/qK27Mi71wur2D2t1w1KF__addchange.png" size="70" width="526" height="875" position="center" showCaption="false"}
5. Continue adding the following deletions.&#x20;
   - payload.registerId
   - payload.tagName
   - payload.success
   - payload.description
   - payload.datatype
   - payload.deviceName
   - payload.deviceID
6. Click **Done**.&#x20;

### DataHub Publish

The DataHub Publish node will be used by the MySQL connector to write data into the database table.&#x20;

1. Double-click the **DataHub Publish** node.&#x20;
2. In the *Topic&#x20;*&#x66;ield enter a topic name. You will refer to this name later.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/k5cS60IelFXdZfOgz3ysi_publishname.png" size="70" width="506" height="306" position="center" showCaption="false"}
3. Click **Done**.&#x20;

### Debug

The debug node will be used to review the updated payload and ensure the output is correct.&#x20;

**To review the payload:**

1. On the flow canvas, click **Deploy&#x20;**&#x74;o save the changes to the flow.&#x20;
2. Expand the message window beneath the flow.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/woDAMmFgulRO1sZTdx3NK_expanddebug-window.png)
3. Click the **Debug&#xA0;**&#x69;con to view the data output.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LQSeWVyAJIbwiJomRgIXI_debugicon.png)
4. Confirm that the output is only including two items in the payload: *value&#x20;*&#x61;nd *timestamp*.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/F6Dmj1IpoblHz4L4PQeuk_output.png)
5. Click **Deploly&#x20;**&#x74;o save the flow.&#x20;

## Step 5: Add MySQL Marketplace Application

You can now add the MySQL application to Litmus Edge. You can customize the parameters to your own preferred configurations.&#x20;

:::hint{type="info"}
**Note**: The version used in this guide for MySQL version is 8.0. See the [MySQL 8.0 Reference Manual](https://dev.mysql.com/doc/refman/8.0/en/) for more information.&#x20;
:::

**To add the MySQL Marketplace Application:**

1. In Litmus Edge, navigate to **Applications&#x20;**> **Marketplace**.
2. Click **Marketplace List** and select **Default Marketplace Catalog**.
3. Click the **MySQL** application tile.&#x20;
4. From the **Installation script version** drop-down list, select **latest**.&#x20;
5. Configure the following parameters.
   - **Name**: Enter **MySQL**.&#x20;
   - **Database**: Enter **sample**.&#x20;
   - **User**: Enter **user**.&#x20;
   - **Password**: Enter the user password.&#x20;
   - **MySQL password**: Enter the same value as the *Password&#x20;*&#x70;arameter.&#x20;
6. Click **Launch**.&#x20;
7. Navigate to **Applications&#x20;**> **Catalog Apps**.&#x20;
   The MySQL application appears, pulls the image, and then starts the application. The MySQL application shows as running.
8. Navigate to **Applications&#x20;**> **Containers**.&#x20;
   The MySQL application Container is running.
9. Copy the IP address for the MySQL application.

## Step 6: Create Custom Database Table

You will need to create the custom table in the database before data can be written into it.&#x20;

Update the credentials, database name, and table name to your own specific configurations.&#x20;

**To create the custom table:**

1. In Litmus Edge, navigate to **Applications&#x20;**>**&#x20;Containers**.
2. Click the **Terminal&#xA0;**&#x69;con next to the MySQL container.
   The MySQL shell opens.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9t2LYeH-mHRMjiVEnpZrv_terminalicon.png)
3. From the MySQL container terminal, enter `mysql -u user -p` and press **ENTER**.
   *Enter password:&#xA0;*&#x61;ppears.
4. Enter your user password, and then press **ENTER**.
   *Welcome to the MySQL monitor&#xA0;*&#x61;ppears.
5. Enter `show databases;`**,&#x20;**&#x61;nd then press **ENTER**.
   The database names appears.
6. Enter `use sample;`, and then press **ENTER**.
   *Reading table information for completion of table and column names&#xA0;*&#x61;ppears in the console. This allows you to use the database.&#x20;
7. Enter `create table conversion_values( timestamp bigint null, value int null );`,  and press **ENTER**.&#x20;

The custom table is created with the following:

- The table name *conversion\_values*
- The column names *timestamp&#x20;*&#x61;nd *value*
- The column timestamp has the data type *bigint&#x20;*&#x61;nd value has the data type *int*
- Both columns allow null values

## Step 7: Configure MySQL Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - MySQL&#x20;**&#x70;rovider.&#x20;

Configure the following required parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Paste the IP address you copied in Step 5. &#x20;
- **Port**: Confirm the MySQL Server port. The default value is **3306**.&#x20;
- **Username**: Enter **user&#x20;**&#x6F;r the username configured in Step 5.&#x20;
- **Password&#x20;**(Optional): Enter the password configured in Step 5.&#x20;
- **Database**: Enter **sample&#x20;**&#x6F;r the database configured in Step 5.&#x20;
- **Table**: Enter **conversion\_values&#x20;**&#x6F;r the table name configured in Step 6.&#x20;
- **Show Mapping**: Enter the following key/value pairs and click **+ Add**.&#x20;
  - **Key 1**: timestamp
  - **Value 1**: \{\{.timestamp}}
  - **Key 2**: value
  - **Value 2**: \{\{.value}}
- **Create table**: Make sure the checkbox is not selected.&#x20;

Configure the following optional parameters as needed.&#x20;

- **Commit timeout**: Enter the transaction commit timeout in (ms).
- **Max transaction size**: Enter the maximum number of messages before a transaction is committed, regardless of timeout parameter.&#x20;
- **Bulk insert count**: (Available for Litmus Edge version 3.11.1 and later) To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

## Step 8: Add Outbound Topic

You will need to add the DataHub Publish topic you configured on the flow canvas as an outbound topic in the MySQL connector.&#x20;

**To add the outbound topic:**

1. Navigate to Integration.&#x20;
2. Click the MySQL connector tile.&#x20;
3. Click the **Topics&#x20;**&#x74;ab.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/odNo8M5KEK95osYZnnQ8z_topicstab.png)
4. Click the **Add&#x20;**&#x69;con and select **Add a new subscription**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RpmJjmFmSqptxQ56ThNVa_addnewsubscription.png)
5. Configure the parameters for the topic.&#x20;
   - **Data Direction**: Select **Local to Remote - Outbound**.&#x20;
   - **Local Data Topic**: Paste or enter the DataHub Publish topic name configured in the flow canvas in Step 4. In our example, enter **conversion\_values**.&#x20;
   - **Remote Data Topic**: Optionally, enter your desired topic name that will be used to write the data into the database table.&#x20;
   - **Description**: Optionally, enter a description.&#x20;
   - **Enable**: Click the toggle to enable the topic.&#x20;
6. Click **OK**.&#x20;
   The new topic appears on the *Topics&#x20;*&#x70;ane and is enabled. This topic will write data to the MySQL database table.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JqEg2_onpKXdX37AhedLs_image.png)

## Step 9: Verify Connection

Use the command line in the MySQL application to confirm data is successfully being written into the database.&#x20;

Update the credentials, database name, and table name to your own specific configurations.&#x20;

**To verify the connection:**

1. In Litmus Edge, navigate to **Applications&#x20;**>**&#x20;Containers**.
2. Click the **Terminal&#xA0;**&#x69;con next to the MySQL container.
   The MySQL shell opens.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/9t2LYeH-mHRMjiVEnpZrv_terminalicon.png)
3. From the MySQL container terminal, enter `mysql -u user -p` and press **ENTER**.
   *Enter password:&#xA0;*&#x61;ppears.
4. Enter your user password, and then press **ENTER**.
   *Welcome to the MySQL monitor&#xA0;*&#x61;ppears.
5. Enter `use sample;`, and then press **ENTER**.&#x20;
   *Reading table information for completion of table and column names&#xA0;*&#x61;ppears in the console.
6. Enter `select * from conversion_values;`,  and press **ENTER**.&#x20;

The data in the custom table displays.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/g71z0s3b92tKVDjcyb1t7_image.png" size="40" width="288" height="280" position="center" showCaption="false"}


[title] Litmus Edge 3.11.6
[path] Product Updates/2024/

Release Date: July 19, 2024

Review the current list of [Limitations](docId:-ptLJws-rryFLBDqgR3Ly).&#x20;

## Enhancements and Improvements

| Description                                                                                                                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* Retry count is now available for the Enron Modbus driver.&#x20;
* The Enron Modbus driver now has modified "retry request" logic to handle noise during communication. |

## Resolved Issues

| Description                                                                                                                                                                                           |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* Fixed issue with the connection configuration for the Enron Modbus driver.
* Fixed issue that was causing increased CPU and memory usage over time with some DeviceHub devices. |
| **Integration**:<br />* Fixed issue with the NATS connector causing duplicate messages and potential resource problems.                                                                               |
| **System:**<br />* Fixed issue with remote access connection info incorrectly showing a connected status even when the Litmus Edge Manager instance is unreachable.                                   |
| **Security:**<br />* The patch for the OpenSSH vulnerability CVE-2024-6387 has been updated.                                                                                                          |


[title] Work with Tables in SQL Connectors (Create Table and Show Mapping)
[path] How-To-Guides/Integration Guides/

When you set up and configure a connection with the following SQL connectors, you have the option of selecting how the data will be transferred to database tables.&#x20;

- [DB - Microsoft SQL Server](docId\:kBbNqdaiDijPTi_NbfDtL)
- [DB - MySQL](docId\:kBpCY_zyjeM5fjBdW4_Be)
- [DB - PostgreSQL](docId\:cdtDKh0tfNZUm7tOda8pN)

When configuring the connector, make sure to select only one of the following options.

# Option 1: Create Table

If you select the **Create table** checkbox, a default table will be created if one doesn't already exist. The table will be used to store data sent through the connector.&#x20;

If you select this checkbox, make sure to unselect the **Show Mapping** checkbox.&#x20;

## Microsoft SQL Server Default Table

If you set up a connection with [DB - Microsoft SQL Server](docId\:kBbNqdaiDijPTi_NbfDtL) or [DB - Microsoft SQL Server SSL](docId\:fL8xjCey1ZIgF8QuE_MfM) and select **Create table**, an existing table will be used or a new one will be created using the following commands.&#x20;

```sql
IF NOT EXISTS(SELECT *
              FROM sysobjects
              WHERE NAME = '"TABLE_NAME"'
                AND xtype = 'U')
CREATE TABLE "TABLE_NAME"
(
    id          BIGINT IDENTITY(1,1) NOT NULL,
    record_uuid CHAR(36)       NOT NULL,
    arrived_at  DATETIME       NOT NULL,
    device_id   VARCHAR(64)    NULL,
    register_id VARCHAR(64)    NULL,
    tag_name    VARCHAR(64)    NULL,
    datatype    VARCHAR(32)    NULL,
    value       TEXT           NULL,
    success     BIT            NULL,
    PRIMARY KEY (id)
)
```

## MySQL Default Table

If you set up a connection with [DB - MySQL](docId\:kBpCY_zyjeM5fjBdW4_Be) or [DB - MySQL SSL](docId\:ktrqTE8JyPfVh2iVWg5Ko) and select **Create table**, an existing table will be used or a new one will be created using the following commands.

```mysql
CREATE TABLE IF NOT EXISTS `TABLE_NAME`
(
    id          BIGINT AUTO_INCREMENT NOT NULL,
    record_uuid CHAR(36)              NOT NULL,
    arrived_at  DATETIME              NOT NULL,
    device_id   VARCHAR(64)           NULL,
    register_id VARCHAR(64)           NULL,
    tag_name    VARCHAR(64)           NULL,
    datatype    VARCHAR(32)           NULL,
    value       TEXT                  NULL,
    success     TINYINT               NULL,
    PRIMARY KEY (id)
);
```

## PostgreSQL Default Table

If you set up a connection with [DB - PostgreSQL](docId\:cdtDKh0tfNZUm7tOda8pN) or [DB - PostgreSQL SSL](docId\:XN3pOaQdTpOeTUOAy5pOZ) and select **Create table**, an existing table will be used or a new one will be created using the following commands.

```pgsql
CREATE TABLE IF NOT EXISTS "TABLE_NAME"
(
    id BIGSERIAL NOT NULL,
    record_uuid UUID NOT NULL,
    arrived_at  TIMESTAMP WITH TIME ZONE NOT NULL,
    device_id   VARCHAR(64)    NULL,
    register_id VARCHAR(64)    NULL,
    tag_name    VARCHAR(64)    NULL,
    datatype    VARCHAR(32)    NULL,
    value       VARCHAR NULL,
    success     BOOLEAN        NULL,
    PRIMARY KEY (id)
);
```

# Option 2: Show Mapping

If you select the **Show Mapping** checkbox, you can send data to a custom table in the database. This table can be configured in your preferred format and structure.&#x20;

:::hint{type="warning"}
**Important**:&#x20;

- If you make any changes to the data type or destination table in the database, make sure to disable and enable the connector. If the connector isn't restarted, Litmus Edge will not have access to the latest table schema. This may affect the data transfer.
- When configuring the table, there are no limitations on what data types are supported. You can put any field type into the custom table as long as this type can store data from the respective field.
:::

## Before You Begin

- Make sure you have sufficient knowledge of SQL when configuring the mapping for the custom table. Any errors in the format will cause failures in sending data to the database.&#x20;
- The database table that will store the data from this connection will be need to be created before completing these steps. This task only maps the data that will be sent to the pre-existing table.&#x20;

## Configure Custom Table Mapping

To configure custom table mapping, begin by following Step 1, Step 2, and Step 3 for one of the following guides:

- [Microsoft SQL Server Integration Guide](docId\:uIPn_TgSKNJO4ut7eqnEI)&#x20;
- [MySQL Integration Guide](docId\:vA1LuXPm0Kh57qTIs56FT)
- [PostgreSQL Integration Guide](docId\:NKI28N3DMLmhDSaNBY_BB)

These guides use DeviceHub data from devices and tags to create the data that will be sent to the database. Alternatively, you can also use [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5) or the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89) to create this data.&#x20;

When you get to Step 4 to add the connector in Litmus Edge, configure the following parameters for the custom table:

- **Table**: This is the name of the pre-existing custom table that will store the transferred data.&#x20;
- **Show Mapping**: Select this checkbox. See the *Configure Key/Value Pairs&#x20;*&#x73;ection below to learn how to format key/value pairs.&#x20;
- **Create Table**: Make sure to unselect this checkbox.&#x20;

### Configure Key/Value Pairs

Once you select the *Show Mapping* checkbox, you'll be able to map the key/value pairs for the custom table.&#x20;

**To configure key/value pairs:**

1. From the *Add a connector* o&#x72;*&#x20;Edit connector&#x20;*&#x64;ialog box, select the **Show Mapping** checkbox. Make sure the *Create table* checkbox is not selected.&#x20;
   The Key/Value section appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5WNE83rVoi-LUO5K3O0tU_show-mapping-check-box.png" size="80" width="1170" height="751" position="center" caption="Show Mapping checkbox" showCaption="true"}
2. In the **Key&#x20;**&#x66;ield, enter the name of the first column in the table.&#x20;
3. In the **Value&#x20;**&#x66;ield, enter the value name that will be stored in the first column in the following format: `{{.value_name}}`. Replace *value\_name* with the corresponding key value of the JSON. See the example below.&#x20;
4. Click **+Add**.&#x20;
   The key/value pair is added to the mapping for the connector.&#x20;
5. Continue adding columns and corresponding values for your table.&#x20;

### Mapping Example

You have the following data in JSON format.&#x20;

:::BlockQuote
\{“deviceName”: “PLC1”, “timestamp”: 1239423823, "value": 123},&#x20;
\{“deviceName”: “PLC1”, “timestamp”: 1247382948, "value": 545},&#x20;
\{“deviceName”: “PLC1”, “timestamp”: 1294859324, "value": 787}
:::

You have created the following database table.&#x20;

| Device Name | Timestamp | Data Value |
| ----------- | --------- | ---------- |
|             |           |            |

The Show Mapping section would be formatted as shown below.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JHQ2iAcrCggVPAvjvOo1J_image.png" size="80" width="1165" height="500" caption="Show Mapping formatting example" position="center" showCaption="true"}

The database table would be updated with the data as shown below.&#x20;

| Device Name | Timestamp  | Data Value |
| ----------- | ---------- | ---------- |
| PLC1        | 1239423823 | 123        |
| PLC1        | 1247382948 | 545        |
| PLC1        | 1294859324 | 787        |


[title] About MQTT
[path] Resources/

**Message Queue Telemetry Transport (MQTT)&#xA0;**&#x69;s a publish/subscribe-based lightweight protocol. It is designed for Machine to Machine (M2M) telemetry in low-bandwidth environments. MQTT sits on top of the TCP/IP protocol. This publish/subscribe protocol requires a message broker. The broker distributes messages to the interested clients based on the topic of the message.

**MQTT&#xA0;**&#x64;efines methods for the desired action to be performed on the client. The different methods are:

- **Connect**: Waits for a connection to be established with the server.
- **Disconnect**: Waits for the MQTT client to finish the work and then for the TCP/IP session to disconnect.
- **Subscribe**: Waits for the completion of a subscribe or unsubscribe method.
- **Unsubscribe**: It request the server to unsubscribe the client from one or more topic.
- **Publish**: This method immediately returns to the application thread after passing the request to the MQTT client.

A **MQTT client&#xA0;**&#x69;s a sensor that generally publishes messages to the broker.

The broker sends the message to the MQTT clients that have subscribed to receive the data.

:::hint{type="info"}
**NOTE**: A MQTT client can publish, subscribe, or both.
:::

A **Client Agent&#xA0;**&#x69;s available in almost all programming languages and major operating systems.

**Topics&#xA0;**&#x61;re used for MQTT addressing. The JSON file that is downloaded from the Loop platform (when the device is deployed) contains the topic to which the data needs to be published and subscribed. The user can also create a custom topic and define to publish or subscribe or both from ACL (Action Control List) under project settings.

An **MQTT Broker&#xA0;**&#x69;s responsible for receiving all messages, filtering them and sending messages to all the subscribed clients. The broker also does the authentication and authorization of the client. The broker is also extensible, which allows integration of custom authentication, authorization, and integration of the clients.

The MQTT connection is always between a client and a broker, as no client connects to another client. The client sends a CONNECT message to the broker and broker response with a CONNACK and the status. Once the connection is established, the broker keeps it open as long as the client does not send a disconnect command.

A **Client ID&#xA0;**&#x69;t is the identifier for each of the MQTT clients that connects to the MQTT broker. The ID is unique per broker. The broker identifies the client and the state of the client using the client ID.

**Security**: The broker has a username and password for authentication of the client and authorization. MQTTS also uses TLS/SSL certificates for authentication.

**QOS**: The Quality of Service tells the user regarding the guarantee of message delivery.

- QOS 0 - At most once.
- QOS 1 - At least once.
- QOS 2 - Exactly once.

The Quality of Service is important as it lets the client choose the QoS level based on the application and network reliability.

Alternate protocols include the AMQP (Advanced Message Queuing Protocol), COAP (Constrained Application Protocol), and XMPP (Extensible Messaging and Presence Protocol).


[title] InfluxDB v1.7.x TCP Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and an InfluxDB database (version 1.7 or 1.8).&#x20;

:::hint{type="info"}
**Note**: The following data types and formats are not viewable in InfluxDB:

- string
- char
- JSON payloads
:::

# User Scenario

In this guide InfluxDB is installed through a Docker image. You have several other options for the installation. See the following to learn more.&#x20;

- [Download InfluxDB OSS](https://docs.influxdata.com/influxdb/v1/introduction/download/)
- [Install InfluxDB OSS](https://docs.influxdata.com/influxdb/v1/introduction/install/)

# Step 1: Set up InfluxDB

You will first need to pull an InfluxDB image file and then run it on your computer. For this guide InfluxDB version 1.8.0 is pulled.&#x20;

**To set up InfluxDB:**

1. On your computer, open the command prompt window.&#x20;
2. Run the following command.&#x20;
   `docker run --name influxdb -p 8086:8086 influxdb:1.8.0`
   The command will create the InfluxDB container with the name "influxdb", on port 8086, and install InfluxDB version 1.8.0.&#x20;

Once the InfluxDB container is running, refer to the following to learn more about setting up and configuring InfluxDB:

- [InfluxDB v1 documentation](https://docs.influxdata.com/influxdb/v1/)
- [Configure InfluxDB OSS](https://docs.influxdata.com/influxdb/v1/administration/config/)
- [Creating a database](https://docs.influxdata.com/influxdb/v1/introduction/get-started/#creating-a-database)

Once you set up and configure InfluxDB to your specific requirements, you can complete the setup in Litmus Edge.&#x20;

# Step 2: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 3: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 4: Add the InfluxDB v1.7.x TCP Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - InfluxDB v1.7.x TCP&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **InfluxDB address**: Enter the InfluxDB database address and port in the following format: http\://\<InfluxDB address>:\<port>.&#x20;
- **InfluxDB datbase name**: Enter the database name configured in the InfluxDB setup in Step 1.&#x20;
- **Username&#x20;**(Optional): Enter a username to access the database.
- **Password&#x20;**(Optional): Enter the password associated with the username.&#x20;
- **Insert batch size**: Enter the number of messages to be collected as a batch before inserting into the database.
- **Insert batch commit time**: The batch commit time in seconds.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 5: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/pTuZNKg_QdLQm5t7V2EVH_influxdb17tcp.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 6: Create Topics for Connector

You will now need to import the tags you added in Step 3 to the connector as topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 7: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

# Step 8: Verify Connection

Access the InfluxDB database to ensure that data is being successfully sent from LItmus Edge to the database.&#x20;


[title] Litmus Edge 3.0.0.0
[path] Product Updates/2020/

Release Date: October 16, 2020

### Enhancements and New Features

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub 2.0**<br />* Added performance improvements for DeviceHub. With these improvements system consumes less CPU/RAM resources.
* Added Advanced Drivers
* Added support for TagName Aliasing
* Start/Stop individual driver communication
* Legacy drivers are suffixed with Gen 1 for identification<br />**IMPORTANT**:<br />* Deprecated BACnet Driver in 3.0.0.0 image. It is still available on 2.x versions. Upcoming release of 3.x will have an advance BACnet driver with performance improvements.
* Special characters in device and TagName are converted to underscore in alias topic                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **Flows Manager**<br />* Start/Stop/Delete multiple instances (up to 4) of flows
* User can add new flows with maximum allowed RAM
* Added support to download flows.json file
* Added support to upload custom node modules
* Added support to download the logs
* Upgraded with node-red backend (1.0.6)
* Included new nodes
* Included Access Subscribe and Access Publish which restricts direct access to message broker to improve security
* Access Publish and Subscribe can search through list of topics
* Flows are included as part of backup/restore and template
* Flows permission fixes for Admin and Observer Edge users<br />**INFO**:<br />* To show all topics allowed by Access API in Access Publish/Subscribe node, you need to start typing the name in the topic name field.
* Search will work after adding the Access API Token and saving the flows.
* Flows backup from previous system won't be restored automatically with 3.x, however a user can manually export the flows json configuration from 2.x flows and import it to 3.x flows |
| **New and improved Integration Connectors**<br />* Added support for CA signed certificate with Azure IoT hub
* Added connector for Oracle DB
* Integration connectors list with search functionality
* Added Access Connector
* Updated libraries for Kafka connectors
* Improvements for database connectors
* Integration Logs are available to user. This logging is disabled by default. User can click the CC card and enable the log to have it appear on the CC dashboard.
* Bug fixes and general UI enhancements<br />**INFO**:<br />* &#xD;Database Schema has the field value type changed from `NUMERIC` to `VARCHAR`                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Enhancements to Analytics**<br />* Ability to run TensorFlow and TensorFlow lite models natively
* Import and export ability for Analytics
* Live data debug support
* Tengo scripting engine to perform a variety of changes on metadata<br />**INFO**:<br />* &#xD;CPU must support AVX to run TensorFlow models with Analytics. More Information available on TensorFlow website.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Enhancements to Marketplace**<br />* Additional registry login support (AWS, Azure, GCR)
* Catalog V2 added as a default catalog
* Improved UI and UX
* Improved application launch progress with providing more information to user through informative UI messages
* Marketplace permission fixes for Admin and Observer Edge users                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **Enhancements to OPC UA Server**<br />* Added OPC UA Client Certificate Authentication
* Added update for easy import/export of OPC UA Server configuration
* OPUCA Server configurations are included with backup/template
* Various bug fixes and UI improvements                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Device Management improvements**<br />* WiFi and LTE support for EL300
  - Kernel Upgrade to provide Wifi Support for HPE Edgeline EL300 (Intel Wireless-AC 9260 Module)
  - Added support for EL300 LTE module
* Redesign Network page
* Redesign Services page
* Enhancements to Support page
* Enhancements to Edge events
* Improvements to Backup/Restore and Template
  - Backup file encryption
  - Changed backup format from JSON to ZIP file
  - Implemented mechanism to import 2.6.x configurations
  - UI improvements                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Improved DeviceHub Agent**:<br />* Upgraded DeviceHub Agent 3.2.2.0. It can be found in System > Support > File Downloads
* Default port is changed to 41250
* Enhanced DeviceHub agent to allow sending csv files to Edge
* Added columns Type and Value into the tags table
* Amended CSV generation in accordance with FreeTag changes
* Shows the type number if the type is unknown
* Added statistic info section with total count of tags sent, server connection state, OPCDA connection state.
* Performance improvements
* UI improvements<br />**INFO**:<br />* &#xD;Keep network ID : `0.0.0.0` to monitor network traffic across all the IP addresses                                                                                                                                                                                                                                                                                                                                                                                                      |
| **General UI & UX Improvements**<br />* Icons changed for Datahub, Analytics
* Improved on authorization access for developer and observer user permissions throughout web UI
* Manage identity certificates and CSRs from web UI
* Improved error handling and error messages
* Configurable column in Devicehub tag page
* Web UI Idle time out extended to 24 hrs
* Introduced progress bar to show cloud activation end point update progress
* Implemented select all/none functionality for browse tags window                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Miscellaneous**<br />* Implemented CSRF protection. Cross-Site Request Forgery (CSRF) is an attack that forces an end user to execute unwanted actions on a web application in which they are currently authenticated.
* Implemented Self Signed Certificate generation upon adding a new device
* Users can manage identity certificates and CSRs from web UI
* System is accessible from browser by host name if their computer supports mDNS. This is a convenient feature if device uses DHCP for address allocation and the address may change time to time. The host name is static and it never changes.                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

### Known Issues

| Description                                                                                                                                                                                                                                                                                             |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Running Marketplace Application configuration are not added to template&#xD;
- Backup from previous system with same TagName may show an error upon restore&#xD;
- Backup/Restore from previous system may fail for some cases&#xD;
- PLC Status tag may show an error of “unexpected token” in flows |

### Important Information

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Deprecated Components**<br />* Deprecated LWM2M
* Deprecated Flows, which is replaced with advanced Flows Manager
* Deprecated BACnet driver
* Deprecated BACnet Service Management from UI
* Deprecated Git based Marketplace Catalog (V1), replaced with Marketplace Catalog (V2)
* Deprecated Reinitialize button in DeviceHub. It isn't needed for DeviceHub 2.0 and start / stop drivers has the same process.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **IMPORTANT**:<br />* Software update through UPD is not compatible for updating systems from 2.x to 3.x. Fresh installation of LE is required to launch 3.0.0.0
* BalenaEtcher v1.5.109 can be used to create bootable USB drive from ISO file
* Default password for first time login has changed to “litmusedge”
* Clear browser cache after performing a software upgrade
* Always make sure supported browsers are updated to the latest version
* DeviceHub service stops if minimum disk space requirement isn't met. Please make sure to have minimum 1 GB disk space while deploying applications.
* LEM 1.9.x is compatible with both LE 2.x and LE 3.x
* Edge FTP server listens to port 21
* Auto-provision of device from Litmus Edge Manager-1.7.2 is supported starting 2.6.1 LE
* Valid production licenses are expected to work even after clean installation of 3.0.0.0 on the same device
* Duplicate Tags prevent restoration of a 2.6.x backup to a newly installed 3.0.0.0 instance. Remove duplicate Tags prior to backup. |
| **System Migration from 2.x to 3.x**<br />Litmus Edge migration refers to taking backup from 2.6.x version and restoring it on 3.x, transferring all configurations in the process. Production deployments running on 2.x doesn't have to migrate to 3.x, as migration process may not be successful depending upon the environment. Software update through UPD is not compatible for updating systems from 2.x to 3.x. Fresh installation of LE is required to launch 3.0.0.0<br />What does success look like?<br />Successfully performed migration means that all configurations has successfully restored and that the new system has no incompatibility with previously accessible functionality, except for those that are deprecated.                                                                                                                                                                                                                                                                                                    |
| **Deployment Environments**<br />Users can install ISO directly on the following environments:<br />* Hyper-V
* KVM
* VMware ESXi<br />Additional information can be found in documentation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |


[title] Device Connectivity Issues
[path] Troubleshooting/DeviceHub Troubleshooting/

At times, a device may display as **Disconnected&#x20;**&#x6F;r a tag may generate a `success=false` message.

Refer to the following error messages and sThe following table explains conditions that might cause a device to disconnect or a tag to generate a false value, the reasons it disconnected, and the steps to connect the device:

| **Error message**                                                                                                                                                                                                                                                                                                                                                                               | **Steps to resolve**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Free Tag: Explicit register name required**<br />Certain device drivers do not have a list of register names in the DeviceHub Add Tag form.<br />When a list of registers is not provided, the case-sensitive register name must be entered exactly as it is defined in the PLC.<br />The device does not display a **Connected** status until a tag with a correct register name is created. | Add a tag with a case sensitive register name. See [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to learn more. <br />&#xA;&#xA;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| **HID Device in Wait State**<br />Some HID (Human Interface Devices), such as barcode scanners, are always disconnected and only show a connected status when they send data to Litmus Edge.                                                                                                                                                                                                    | This is a temporary state and no intervention is required. The device connects when there is data to receive.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Incorrect PLC Configuration**<br />If configuration changes have been made to a PLC, the best way to ensure accurate status is to delete and recreate the device in DeviceHub.                                                                                                                                                                                                                | 1. Delete the device. See [Manage Devices](docId\:p4VpVE-BxtLSJqn37yROr) for more information.
2. Create a new device with the correct PLC configuration. See [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq) and the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr) for more information.                                                                                                                                                                                                                                                                                                                                                                                      |
| **Incorrect Tag Information**<br />To prevent the PLC from going into fail-safe mode or from crashing the process when a tag has incorrect information, Litmus Edge disconnects communication with the PLC.<br />For example, a tag may contain an incorrect address.                                                                                                                           | 1) Monitor all the tags in flows to identify the bad tag.
2) Find the tag with a success flag set to *false*.
3) Delete the tag from DeviceHub. See [Manage Tags](docId\:G9ROOmPC3XZ4Zq6CbNONc) for more information.
4) If there is no data on the flows, restart the PLC. If a node in a flow indicates "waiting for messages" and nothing is displayed in the debug console, this means that Litmus Edge has stopped communicating with the PLC, so there is no data.                                                                                                                                                                                                                             |
| `success=false` message<br />This could be caused for several reasons:<br />* Wrong configuration for address or data type.&#x20;
* The tag doesn't exist in the PLC.&#x20;
* The PLC is not able to respond in time to the poll request.&#x20;                                                                                                                                                 | If there are intermittent false messages and a majority of tag messages are `success=true`, this could be due to the PLC not being able to respond in time to the poll requests. You can increase the poll interval in the DeviceHub tag configuration to give more time to the PLC to respond to requests. You can also add a filter to remove the false messages. <br />If the configuration of the tag is incorrect, the status of the DeviceHub device will eventually show a `DISCONNECTED` status to prevent the PLC from going into an error state. To resolve this, you can delete the incorrect tag and refresh the device. If this doesn't resolve the issue, you can reboot the gateway.  |


[title] Litmus Edge 3.1.4.0
[path] Product Updates/2021/

Release Date: June 23, 2021

### Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* Added support for Heidenhain Ethernet Driver for TNC-530 and 640
* Implemented browse capability with the Allen Bradley CompactLogix Gen 2 driver                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Enhancements to various components:**<br />* Extended support for SASL Plaintext with Kafka SSL and TCP connectors
* Improved Analytics performance for more than 2000 tags
* Dashboard now shows count of Flows tabs and Analytics groups/Flows
* Improved refresh button on Analytics to work flawless with group structure
* Added functionality to update flows memory
* Improvements added to System events to capture device and tag deletion
* Improved button alignment in FTP service
* Improved FTP server polling process
* Enhanced OPC UA client browse starting point configurable
* Improved adding tags with browse functionality for AB Compact Logix Ethernet FreeTag driver
* Improved Integration connector event messages
* Improved Kafka SSL connector for Confluent
* Improved marketplace sync with database |

### Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Fixed issue with OPC UA configurations and tags restore with backup file on a different edge instance&#xD;
- Fixed issue with template creation without marketplace selection&#xD;
- Fixed issue with Restoring backup file from Litmus Edge Manager&#xD;
- Fixed issue with template upload overwriting devices&#xD;
- Fixed issue with OPC UA client certificate mode&#xD;
- Fixed issue with PLC Status tag showing an error of “unexpected token” in Flows&#xD;
- Fixed issue with Omron Peripheral USB Serial port does not appear automatically&#xD;
- Fixed issue with applications not included in template if catalog is not selected during template creation&#xD;
- Fixed issue with Analytics nodes navigating to default group even if you have pinned other groups&#xD;
- Fixed issue with docker volume not being removed along with the application&#xD;
- Fixed issue with Analytics remove all instances option&#xD;
- Fixed issue with Analytics copy flows breaking groups&#xD;
- Fixed issue with access version REST API endpoint&#xD;
- Fixed issue with listing diskspace on UI for more than 1 TB disks&#xD;
- Fixed issue with activation code for reactivation of Edge device on the same Litmus Edge Manager&#xD;
- Fixed Issue with missing template in Analytics&#xD;
- Fixed issue with Upload template for Analytics Flows&#xD;
- Fixed Issue with Analytics batch input not working&#xD;
- Fixed issue with the Analytics context menu not being visible&#xD;
- Fixed issue with AB MicroLogix driver for NATS publishing after adding a Tag&#xD;
- Fixed issue with 15 second delay launching access connector |

### Limitations

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Changing tag parameters requires DeviceHub restart&#xD;
- Virtualbox deployment shows occasional TUI message with Login incorrect error. This can be rectified with an instance restart.&#xD;
- The default network should be updated before deploying an application. Configurations changes upon a network change can cause deployed applications to disappear&#xD;
- A force deletion of a default connector doesn't remove it. Make sure to gracefully deactivate cloud activation&#xD;
- Timeout for a backup file upload is \~ 5-6 sec, which can cause an issue for remote users&#xD;
- Occasionally a delay occurs on Litmus Edge upgrade deployment made from Litmus Edge Manager&#xD; |

### Deprecated Components and Features

| Description                                     |
| ----------------------------------------------- |
| - Siemens Advanced Gen2 driver has been removed |
| &#xD;                                           |

### Important Information

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Enable the EFI option for VirtualBox deployment. It can be found in **Settings** > **System** > **Motherboard** > **Extended EFI**
- Upgrade from 3.1.1.0 to 3.1.4.0 is not supported with VirtualBox deployment
- The Siemens Advanced (Gen2) driver is deprecated in this release. If you are using this driver in your current deployment, make sure to backup the drivers/tags before upgrading to this version.
- Renamed AB MicroLogix Ethernet to AB EthernetIP Ethernet |
| &#xD;                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |

### Known Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Backup/Restore from a previous system may fail in some cases&#xD;
- Deactivation does not go through if the Litmus Edge Manager connection is lost&#xD;
- Access node in Flows does not show drop down of topic before deployment&#xD;
- Incorrect configurations with AD can show UI errors&#xD;
- Marketplace Catalog list view does not allow deployment of application&#xD;
- Browse tags does not work for an OPC UA Client connecting with a Prosys Server&#xD;
- The Observer user role when trying to view the registry pane gives UI error&#xD;
- Disk Space Policy Management is not sending the appropriate warnings&#xD;
- External storage "mount on boot" remains unmounted&#xD;
- LDAP does not provide feedback step-by-step&#xD;
- The License pane does not show the add-on license status if the core license is expired&#xD;
- There is no support for custom data format for the MYSQL connector&#xD;
- An Unhandled error occurs for a disabled user creation with the API endpoint&#xD;
- There is a failed retry connection for a software upgrade for the connection reset&#xD;
- An update for user/device events generates the wrong event&#xD;
- Docker images with larger size fails to upload&#xD;
- The DeviceHub Dashboard is not displaying the outages graph&#xD;
- Count shows as 1 during Tag creation due to incorrect request.&#xD;&#xA;**Workaround**: edit the tag after you create it to change the “count” tag parameter&#xD;
- Authentication mode for Basic256 encryption on the OPC UA server is not functional&#xD; |
| &#xD;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |


[title] MySQL Error Message: Too Many Connections
[path] Troubleshooting/Flows Troubleshooting/

If you get the MySQL error message `Error: Too many connections` , this could be caused by the connection limit of 150 connections configured in MySQL. Each MySQL node on the Flows canvas creates a connection pool of 50 connections to the MySQL server, so using 4 MySQL nodes in 4 different Flows Managers could trigger this error. To resolve this, you can manually increase the MySQL connection limit up to 100,000. Refer to GitHub documentation on [68-mysql.js](https://github.com/node-red/node-red-nodes/blob/master/storage/mysql/68-mysql.js) to learn more.&#x20;

[title] MySQL SSL Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and a MySQL database using SSL authentication.&#x20;

# Before You Begin

You will need the following:

- Access to a MySQL database with SSL authentication.&#x20;
- The CA Certificate and any other required authentication parameters to access the database.&#x20;

You can use the following supported versions:

- MySQL (4.1+)
- MariaDB&#x20;
- Percona Server
- Google CloudSQL
- Sphinx (2.2.3+)

Refer to the following links to learn more:

- [MySQL Docker Image](https://hub.docker.com/_/mysql)
- [MySQL Documentation](https://dev.mysql.com/doc/)
- [Configuring MySQL to Use Encrypted Connections](https://dev.mysql.com/doc/refman/8.0/en/using-encrypted-connections.html)

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add the DB - MySQL SSL Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - MySQL SSL&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Enter the IP address to access the database.&#x20;
- **Port**: The port needed to access the database. The default value is **3306**.&#x20;
- **CA Certificate**: Paste the CA certificate associated with the database. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Certificate**: Paste the SSL certificate. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Private Key**: Enter or paste the SSL private key.&#x20;
- **Username**: Enter the username to access the database.&#x20;
- **Password&#x20;**(Optional): Enter the password associated with the username.&#x20;
- **Database**: Enter the database name.&#x20;
- **Table**: Enter a name to create a new table or enter the name of an existing table.&#x20;
- **Show Mapping**: If you want to send data to a custom table, select this check box and unselect *Create table*. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more. To add key/value pairs for the custom table, see [Configure Key/Value Pairs](docId\:Yj_sKBPP9J_TH3_qvC1Tm).&#x20;
- **Create table**: If you want to send data to an existing table in the default format, or you want to create a new table in the default format, select this check box and unselect *Show Mapping*. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.&#x20;
- **Commit timeout**: Enter the transaction commit timeout in (ms).
- **Max transaction size**: Enter the maximum number of messages before a transaction is committed, regardless of timeout parameter.&#x20;
- **Bulk insert count**: (Available for Litmus Edge version 3.11.1 and later) To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 4: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LGZNs7jWb1Fbex36zMkf0_mysqlssl.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 5: Create Topics for Connector

You will now need to import the tags created in Step 2 as topics for the MySQL connector. The topics will be created as outbound topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 6: Enable Topics

To enable the topics, return to the *Topics* tab and click the **Enable all topics** icon.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Iq7BWYqGWueu4US73iBl3_image.png" size="80" width="1220" height="330" caption="Enable all topics icon" position="center" showCaption="true"}

# Step 7: Make MySQL Queries

You can now verify that you can view data in the MySQL database.&#x20;

Update the credentials, database name, and table name to your own specific configurations.&#x20;

**To make MySQL queries:**

1. From the MySQL terminal window, enter `mysql -u user -p` and press **ENTER**.
   `Enter password: `appears.
2. Enter your user password, and then press **ENTER**.
   *Welcome to the MySQL monitor&#xA0;*&#x61;ppears.
3. Enter `show databases;`**,&#x20;**&#x61;nd then press **ENTER**.
   The database name appears.
4. Enter `use sample;`, and then press **ENTER**.
   *Reading table information for completion of table and column names&#xA0;*&#x61;ppears in the console.
5. Enter `show tables;`, and then press **ENTER**.
   The table names for *sample* appear.

6. Enter `select * from test_table;` , and press **ENTER**.
   Data appears from the imported tags for the connector.&#x20;


[title] VirtualBox only Showing 32-bit and no 64-bit Versions
[path] Troubleshooting/Installation and Deployments Troubleshooting/

When creating a new VirtualBox, you should see options for 32-bit and 64-bit versions. Your host operating system needs 64-bit to run a guest operating system in VirtualBox.

There is an issue when installing Litmus Edge on a VirtualBox for Windows systems that have upgraded the Windows OS.

If you only see 32-bit versions when selecting the type of operating system, Windows OS has upgraded and turned on Memory Integrity for security reasons.

You must have administrative access to the security in Windows to turn this off.

There are two solutions to fix the Memory Integrity issue:

# Solution 1: Repair VirtualBox Installation

Complete these steps to repair the version of VirtualBox you currently have.&#x20;

**To repair the VirtualBox installation:**

1. Download the same version of the installer file that you currently have from the [VirtualBox website](https://www.virtualbox.org/).&#x20;
2. Right-click the installer file used to install VirtualBox and select **Run as administrator**.
3. When the Windows *User Account Control* window appears, click **Yes**. You may need to enter an administrator password in the User Account Control window.&#x20;
   A setup window appears.&#x20;
4. Click **Next**.
5. Click the **Repair** icon.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/quHI4UH8BtNms_LLMWFxd_m6t6-rxiagvl2idg1dpudwindows-installer-repair-icon.png" size="50" width="594" height="250" caption="Repair icon" position="center" showCaption="true"}
6. Click **Repair**.
   VirtualBox begins the repair process.
7. When the repair process is finished, click **Finish**.
   VirtualBox may ask you to restart your PC.

# Solution 2: Disable Memory Integrity in Windows 10

Complete these steps to disable memory integrity setting in Windows 10.&#x20;

**To disable memory integrity:**

1. Open **Windows Security**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/aSAgGfj2t-N-F_8rbSCos_l-z9y0r2c0bdnrzh5vuowindows-security.png" size="50" width="430" height="78" caption="Windows Security icon" position="center" showCaption="true"}
2. Click **Device Security**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TZK4OdgfOMJH3q6rxottM_6vjhcsvfdnvkuwnbp63vrdevice-security.png" size="60" width="785" height="602" caption="Device Security link" position="center" showCaption="true"}
3. From the *Core isolation* section, click **Core isolation details**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VlDSJz2avFpXfW6-ZRyLx_6kc9ho799rfaz4oiruiicore-isolation-details.png" size="60" width="588" height="382" caption="Core isolation details link" position="center" showCaption="true"}
4. From the *Memory Integrity* section, click the **Off** toggle.
   You may need to restart your PC.


[title] Set Up Edge Cascading with the NATS Connector
[path] How-To-Guides/Integration Guides/

:::hint{type="info"}
**Note**: The NATS Proxy feature is available for Litmus Edge version 3.3.1 and later.&#x20;
:::

Review the following guide for setting up Edge Cascading, which is an integration of multiple Litmus Edge instances with a NATS connector.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/niEdj9OKLHU?si=EGlaBkC3yWZdIsfR&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Before You Begin

- Ensure that every Litmus Edge instance that will be used to set up the NATS Proxy connection is on version 3.3.1 or newer.&#x20;
- Determine which Litmus Edge instance(s) will be the NATS server (host the API access account), and which Litmus Edge instance(s) will be the NATS client (host the NATS connector). The NATS server and the NATS client can both send and receive the data going through the NATS proxy connection.&#x20;
- If your network has a firewall, make sure it allows port 4222.&#x20;

# Set up Edge Cascading with One NATS Client and One NATS Server

Review the following workflow to set up two Litmus Edge instances with Edge Cascading. Litmus Edge A (Server) is the NATS Server and Litmus Edge B (Client) is the NATS Client. You will be able to view data from the NATS Server.&#x20;

## Step 1: Enable NATS Proxy (NATS Server)

You will need to enable the NATS Proxy connection in Litmus Edge A (Server). The connection is disabled by default.&#x20;

**To enable NATS Proxy:**

1. In Litmus Edge A (Server), navigate to **System&#x20;***>&#x20;***Tokens**.&#x20;
2. In the *NATS Proxy* section, click the **Disabled&#x20;**&#x74;oggle to **Enabled**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/c531axHt08fwIWFyydnTC_natstoggle.png" size="80" width="1128" height="363" caption="Enable/Disable toggle for NATS Proxy" position="center" showCaption="true"}

## Step 2: Create and Configure Access Account (NATS Server)

You will now need to enable a NATS server. To do this, you will need to create an access account. Once you create the account, copy the API key that you will use to set up the NATS integration connector.&#x20;

**To create the access account:**

1. From Litmus Edge A (Server), navigate to **System&#x20;***>&#x20;***Tokens**.&#x20;
2. From the *Access Accounts* section, click the **Add&#x20;**&#x69;con. The *Create API Account&#x20;*&#x64;ialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/NVtrGVuV7qCbClj9j5_dO_createaccessaccount.png" size="80" width="1902" height="659" caption="Add Access Account icon" position="center" showCaption="true"}
3. Enter a name for the account and ensure the *Enable Account&#x20;*&#x63;heckbox is selected.&#x20;
4. Click **Create Account**.&#x20;
5. Click the **Action menu** for the account you just created and select **Edit topics**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_PNVW1neviVz4jtjO5zXh_edittopics.png" size="80" width="1708" height="418" caption="Edit topics option" position="center" showCaption="true"}
6. In the **Read Topics** field, enter the relevant NATS topics and click **Add Read Topic** for each one. Ensure that you follow proper NATS topics conventions for topic names. By default, a wildcard topic is created (`>`). This topic will read all topics.
7. In the **Write Topics** field, enter the relevant NATS topics and click **Add Write Topic** for each one. Ensure that you follow proper NATS topics conventions for topic names. To create a wildcard topic, enter `>` for the topic name.&#x20;
8. When done entering read and write topics, click **Update**.&#x20;
9. Click the **Action menu** again for the account and select **View API Key**.&#x20;
10. Click the **Copy&#x20;**&#x69;con for the API key and paste it somewhere so you can access it later.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/zQBCvvbN5la_Tn7SFdZ_x_copyapi.png" size="80" width="778" height="229" caption="Copy API Key icon" position="center" showCaption="true"}

## Step 3: Add the NATS Connector (NATS Client)

You will now have to set up the NATS Client by adding a NATS integration connector.&#x20;

**To create the NATS Integration Connector:**

1. From Litmus Edge B (Client), navigate to **Integration***.&#x20;*
2. Click the **Add a connector&#x20;**&#x69;con.
   The *Add a connector* dialog box appears.&#x20;
3. Use the *Provider&#x20;*&#x64;rop-down list to select the **NATS&#x20;**&#x63;onnector.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iF05MAkJ-FOiAV9HWw7gI_natsconnector.png" size="80" width="1171" height="358" caption="NATS connector" position="center" showCaption="true"}
4. &#x20;Enter the details for the connector.&#x20;
   - **Name**: Enter a name for the connector.&#x20;
   - **Hostname**: Copy the URL of the Litmus Edge instance with the NATS server and the access account you previously created. For example, if the URL of the instance with the NATS server is https\://192.168.0.175, enter **192.168.0.175**.&#x20;
   - **Port**: Verify the default port is correct and make any necessary changes.&#x20;
   - **NATS Username**: You can leave the field blank.&#x20;
   - **NATS Password**: This field is required. Paste the API key you copied from the access account you previously created.&#x20;
   - **Default topic name**: Enter a default topic name. The default topic name does not need to have data and does not need to be present in all systems sending/receiving data. It can also be overwritten. It will be used in *Step 7: View Data* to view the data from the NATS connection.&#x20;
   - **Enable TLS secure connection**: Make sure the check box is selected. This allows the connector to successfully connect with the NATS server.&#x20;
   - **Insecure skip verify**: Make sure the check box is selected. This allows for a successful connection with a NATS server that may have a self-signed certificate that is not formally recognized by a certificate authority.&#x20;
   - **Throttling limit**: You have an option to enter a throttling limit.&#x20;
   - **Persistent storage**: You have the option of selecting this option. When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
   - **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;
5. Click **Add**.&#x20;

## Step 4: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7PMf-IOMkOWJCjds-RLGL_nats.png" size="60" width="369" height="345" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

## Step 5: Add Device

Now that you've set up the connection between the NATS Server and NATS Client, you can create the DeviceHub device that will store the tags that will be used to create topics for the NATS connector.&#x20;

From Litmus Edge B (Client), follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq).&#x20;

Make the following configurations:

- Select Device Type **Simulator&#x20;**&#x61;nd Driver Name **Generator**. You have the option of setting up a different device to your specific requirements.&#x20;

## Step 6: Add Tags

After connecting the device, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. The tags will be used to create topics in the NATS connector.&#x20;

## Step 7: Create Topics for Connector

You will need to create topics in the NATS connector you created.&#x20;

**To create connector topics:**

1. From Litmus Edge B (Client), navigate to **Integration**.&#x20;
2. Click the NATS connector tile.&#x20;
   The connector *Dashboard&#x20;*&#x64;isplays.&#x20;
3. Click the **Topics&#x20;**&#x74;ab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/purOttFQT_GmSLrhBRVoQ_topicstab.png" size="80" width="813" height="495" caption="Topics tab" position="center" showCaption="true"}
4. Click the **Import from DeviceHub tags** icon.&#x20;
   Th&#x65;*&#x20;DeviceHub Import* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3QoqWW7UzM2Gzn14kLr_4_importfromdevicehub.png" size="80" width="950" height="419" caption="Import from DeviceHub tags icon" position="center" showCaption="true"}
5. Select the check box to import all tags from the device you created earlier and click **Import**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UivNkogGDzT2nmWH3hy0j_select-all-tags.png" size="80" width="973" height="283" caption="DeviceHub Import dialog box" position="center" showCaption="true"}
6. Click the **Enable all topics** icon.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/wiN9XoOvWUhGj4c4mxU8O_enablealltopics.png" size="80" width="1293" height="516" caption="Enable all topics icon" position="center" showCaption="true"}
7. Navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

## Step 8: View Data

Once the connection is successfully set up, you can use the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89) or [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5) in the NATS Server to view data from the connection.&#x20;

### Before You Begin

You will need to use the default topic name you configured for the NATS connector in the NATS Client. Click the **Edit** icon for the NATS connector tile and copy the default topic name.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vNGj5iTv5n-mJgBmaH6fC_image.png" size="80" width="1163" height="482" caption="Default topic name" position="center" showCaption="true"}

### View Data in Flows Manager

You can create a flow to view data from the connector topics.&#x20;

**To view data from the Flows Manager:**

1. From Litmus Edge A (Server), navigate to **Flows Manager**.&#x20;
2. For a Flows Manager, click the **Go To Flow Definition** icon.&#x20;
   The Flow canvas opens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/t2rTotjVdzoBvR3kOruKK_go-to-flow-definition.png" size="80" width="1010" height="490" caption="Go To Flow Definition icon" position="center" showCaption="true"}
3. On the flow canvas, drag the **Datahub Subscribe** node and **debug&#x20;**&#x6E;ode onto the canvas. Then, connect the two nodes.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7CHgVLn3EpkwH-VMrw-d4_nodes.png" size="80" width="870" height="494" caption="The DataHub Subscribe and Debug nodes" position="center" showCaption="true"}
4. Double-click the **DataHub Subscribe** node.
   The *Edit DataHub Subscribe node* dialog box appears.
   - In the **Topic&#x20;**&#x66;ield, paste the default topic name for the NATS connector.
   - If needed, configure the Datahub Subscribe connection. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
   - Click **Done**, and then click **Deploy**.&#x20;
5. Expand the message window beneath the flow to view debug messages.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/lz-qs1cWlGXGmyB37FgSn_expand-message-window.png" size="80" width="1294" height="858" caption="The message window" position="center" showCaption="true"}
6. Click the **Debug&#x20;**&#x69;con.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VcYhsouq_alRxhjvziSnG_debug-icon.png" size="80" width="1317" height="858" caption="The Debug icon" position="center" showCaption="true"}
7. Confirm the **Debug&#x20;**&#x6E;ode is activated and review the messages in the debug window. The `"success" :true` message confirms the connection is successful.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KtgWj7qK9x4WPDGPBu3dz_pgkbero2uus39idohrigsuccess-messages.png" size="80" width="1317" height="858" position="center" caption="Review messages" showCaption="true"}

### View Data in Analytics

You can view data by using the Analytics canvas.&#x20;

**To view data in Analytics:**

1. From Litmus Edge A (Server), navigate to **Analytics**.
2. Click **Add Processor** and select **DataHub Subscribe**.&#x20;
3. In the **Topic&#x20;**&#x66;ield, paste the default topic name for the NATS connector.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YVK2-K2-dRNFMKGIUiGM8_analytics-topic.png" size="80" width="778" height="397" caption="Topic name" position="center" showCaption="true"}
4. Click **Save**.&#x20;
5. Click the **View&#x20;**&#x69;con.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/_07URQKl1dtMNvu9MXALi_view-icon.png" size="80" width="832" height="471" caption="The View icon" position="center" showCaption="true"}
6. Review the *Instance Messages*. The `"success" :true` message confirms the connection is successful.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/CEBeESk-2hJdzgww1SZdu_analytics-messages.png" size="80" width="1294" height="773" caption="Instance Messages" position="center" showCaption="true"}


[title] SDK Testing Script
[path] Resources/

In situations where there are multiple Litmus Edge instances, you can use our prepared VSCode-executable `.http` script to automate the initialization of the Litmus Edge instances for SDK testing.&#x20;

## Before you begin

Before completing the steps below, ensure you do the following:

- Install [Visual Studio Code](https://code.visualstudio.com/Download) on your local computer.
- Verify your installed Visual Studio Code has the [REST Client plugin](https://marketplace.visualstudio.com/items?itemName=humao.rest-client).
- Run at least one Virtual Machine with Litmus Edge already installed.
- Run a second Virtual Machine with Litmus Edge Manager already installed.&#x20;

## The `  .http  ` script

:::CodeblockTabs
http

```csp
#############################################################
# LE initialization script. Prepare new Litmus Edge (LE) instance to work with Litmus Edge Manager (LEM)
# Initialization steps:
# 1. Change default Litmus Edge password and confirm EULA
# 2. Set Litmus Edge Manager address and confirm SSL certificate 
# 3. Send activation request
#############################################################

##### Variables ######
// LE ip address
@ip=YOUR_LE_IP_ADDRESS_HERE
// Default LE admin password
@defaultPassword=default_password
// New LE password
@newPassword=new_password
// LEM url
@lemUrl=YOUR_LEM_IP_ADDRESS_HERE
// Activation code from LEM (Project > Activation > Configuration)
@activationCode=ACTI-VATI-ONCO-NFIG
######################

##### Init steps ######
### First login to LE
# @name login
POST https://{{ip}}/auth/v2/login

{"username":"admin","password":"{{defaultPassword}}","providerId":"00000000-0000-0000-0000-000000000000"}

### Confirm EULA

PUT https://{{ip}}/auth/v2/eula 
Cookie: jwtAccess={{login.response.body.jwtAccess}}

{"agree":true,"version":"1.0"}

### Change LE default password

# @name change
PUT https://{{ip}}/auth/v2/password?locale=en-US
Cookie: jwtAccess={{login.response.body.jwtAccess}}

{"newPassword":"{{newPassword}}","currentPassword":"{{defaultPassword}}"}

### Change activation URL

# @name changeUrl
POST https://{{ip}}/dm/cloud/url?locale=en-US
Cookie: jwtAccess={{change.response.body.jwtAccess}}

{"url":"{{lemUrl}}"}

### Confirm LEM certificate

PUT https://{{ip}}/dm/cloud/url/{{changeUrl.response.body.tx}}/confirm?locale=en-US
Cookie: jwtAccess={{change.response.body.jwtAccess}}

### Send activation code to LEM

POST https://{{ip}}/dm/cloud?locale=en-US
Cookie: jwtAccess={{change.response.body.jwtAccess}}

{"code":"{{activationCode}}"}
```
:::

## Using the script

Visual Studio Code with REST Client Plugin is needed to execute the script. As indicated in the script, under `##### Variables ######`, modify the following values for variables as needed for your Litmus Edge and Litmus Edge Manager instances.

- `@ip  `
- `@defaultPassword  `
- `@newPassword  `
- `@lemUrl  `
- `@activationCode`

This script automates `PUT`/`POST` requests to a Litmus Edge instance to communicate with the Litmus Edge Manger instance.  As of right now, the script above is meant for manual Litmus Edge testing of common use cases such as the following:

- password changes
- confirming `EULA`&#x20;
- changing cloud activation end points
- sending activation request

The script is also meant to be added with additional request as necessary to test for additional features.&#x20;


[title] 2024
[path] Product Updates/

- [Litmus Edge 3.11.6](docId:2IQghRI3W5z8H0DhgbJk7)
- [Litmus Edge 3.11.5](docId\:uowvokL-V6YP_fJ1o8F6L)
- [Litmus Edge 3.11.4](docId\:oafnYAZS7hFLRbW9_Egy5)
- [Litmus Edge 3.11.3](docId\:omQhhh-7DPWK0U9_GigIo)
- [Litmus Edge 3.11.1](docId\:lb94-5Mc2p0oqvi3GMyK6)


[title] Litmus Edge 3.11.4
[path] Product Updates/2024/

Release Date: April 17, 2024

Review the current list of [Limitations](docId:-ptLJws-rryFLBDqgR3Ly).&#x20;

## Enhancements and Improvements

| Description                                                                                                                                       |
| ------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* You can now use the Station ID parameter in the Enron Modbus driver to split registers and read data from different slaves. |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* Fixed issue with special characters in tag names not being uploaded successfully through a CSV file.&#x20;
* Fixed issue with the poll-once and write topics not working if a hyphen “-” is in the tag name.&#x20;
* Fixed issue with the FB107 Ethernet driver not connecting if there are duplicate ParamTags in one point type.&#x20;
* Fixed issue with the Enron Modbus driver successfully connecting even though incorrect station IDs are configured.&#x20;
* Fixed issue with the Enron Modbus driver displaying `success:false` for tags.
* Fixed issue with the incorrect driver name displaying in the *Edit Device* dialog window.&#x20;
* Fixed issue with the Enron Modbus driver generating a `not found field bytesAndWordsOrder` error message.&#x20;
* Fixed issue with Opcode167 in the FB107 Ethernet driver not reading tag values correctly.&#x20;
* Fixed the following issue for the S7CommPlus driver: Tags with the following data types are now added correctly from browse for devices using P2 or P3 authentication. Invalid tags now fail individually instead of failing the entire poll group.
  - Char
  - Date
  - Date\_and\_Time
  - LDT
  - LTime
  - LTime\_Of\_Day
  - S5Time
  - Time |
| **Templates**:<br />* Fixed issue with tag formulas not being included in template uploads.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |


[title] Litmus Edge 3.5.2
[path] Product Updates/2023/

Release Date: May 4, 2023

## New Features

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* Support is now provided for the following Gen 2 drivers:
  - AB CompactLogix Ethernet Advanced
  - LioN-X
  - Mitsubishi A Serial Series
  - Mitsubishi Q/L Ethernet
  - Modbus RTU Advanced
  - Modbus RTU over TCP
  - MQTT Client
  - MQTT Server
  - Omron Fins Ethernet
  - OSI Agent
* The new Server Search feature allows you to search for and add pre-defined tags to DeviceHub devices.
* A new **DataHub&#x20;**&#x70;age replaces the **DataHub&#x20;**> **Configuration&#x20;**&#x70;age. The DataHub (Legacy) page will be removed in a future release. You will need to create new configurations and migrate existing DataHub (Legacy) configurations to the **DataHub&#x20;**&#x70;age.&#x20; |
| **Integration**:<br />* Support is now provided for the following connectors:
  - DB - Mongo v4+
  - REST API&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **System**:<br />* You can now use Zerotouch installation, which allows you to pre-define a Litmus Edge configuration and use it to deploy edge devices on-site with no additional human input.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**: <br />* Additional data types have been added in the Register Table for the Sinumerik 808D Serial (Gen1) driver.&#x20;
* When searching for tags, you can now use the search filters **contains&#x20;**&#x61;nd **equals to**. &#x20;
* When you create or update Gen 2 drivers, you can select the **Enable logging** check box.&#x20;
* When using Browse Tags, you can now cancel active browse requests.&#x20; |
| **Digital Twins**: <br />* When mapping dynamic attributes in Digital Twins instances, you can now use a drop-down list to select connected devices and then search for corresponding topics.&#x20;
* You can now search for existing static attributes and dynamic attributes in Digital Twins models.&#x20;
* The **Save&#x20;**&#x69;con is now available from the **Hierarchy&#x20;**&#x74;ab.&#x20;                          |
| **System**:<br />* System updates are now more robust. You also now have the option to upload and download upgrade files in **System&#x20;**> **Device Management**.&#x20;                                                                                                                                                                                                                                                        |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub:**<br />Fixed the following issues: <br />* Not being able to successfully add all tags using **Browse Tags** with the AB CompactLogix Ethernet driver.&#x20;
* Messages not displaying with the poll-once command using the OPC UA Advanced driver.&#x20;
* Not being able to delete all tags at once for a device.&#x20;
* The Modbus TCP driver reporting incorrect values when the tag count is greater than 1.&#x20;
* The connection automatically closing with Gen 2 drivers.&#x20;
* Tag-level metadata not being transported when importing templates.
* Device names not updating in Litmus Edge Manager.&#x20; |
| **Integration**:<br />* Fixed issue with not being able to import a large number of tags with the Google Cloud Pub/Sub connector.&#x20;
* You can now use special characters in passwords for SQL connectors.&#x20;
* Fixed issue with errors when editing connector topics that are connected and enabled.&#x20;
* Fixed issue with the show mapping option in SQL Connectors causing failures.&#x20;                                                                                                                                                                                                                                |
| **System**:<br />* Fixed issue with activation fails for node-locked licenses (online and offline) after downloading the latest Docker image.&#x20;
* When there is an issue creating a template, the error message now provides information on what caused the failure.&#x20;
* Fixed issue with metrics not being available for Litmus Edge devices connected to Litmus Edge Manager.&#x20;
* Fixed issue with the Litmus Edge Docker not forwarding events to Litmus Edge Manager.&#x20;                                                                                                                                           |
| **Analytics**:<br />* Fixed issue with the Database Output processor not working successfully.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Flows Manager**:<br />* Fixed issue with the **Deploy only modified flows** option causing errors.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **Digital Twins**:<br />* Fixed issue with changes to instances not being saved after being reassigned to a new model.&#x20;
* Fixed issue with models and instances being included in templates even when they are not selected.&#x20;                                                                                                                                                                                                                                                                                                                                                                                               |

## Known Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* Users with appropriate role permissions may be unable to trigger the Enable Data Store option for devices. &#xA;Workaround: Use the admin account to trigger the Enable Data Store option.&#x20;
* The Siemens S7 (Gen2) driver may have issues publishing data. &#x20;
* Uploading a CSV file of tags may not be successful if the file contains an existing tag in Litmus Edge.&#x20;
* The AB CompactLogix Ethernet FreeTag (Gen2) driver contains a spare word in write requests.&#x20;
* When using Browse Tags for the OPC UA Client Advanced driver, the **Select all&#x20;**&#x66;unction may not work.&#x20;
* The CAN Raw device may not be able to connect to HPE EL300.&#x20;
* The OPC UA Client Advanced driver may not be able to connect to some OPC UA servers.&#x20;
* Links in device tile warning messages may not successfully launch correct documentation pages. |
| **Digital Twins**:<br />* The order of model hierarchies may not save properly.&#x20;
* Write and Poll-once topics should not be listed as options for dynamic attributes.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **Analytics**:<br />* An error message may display after connecting a Statistical Prediction node to a Moving Average node.
* Error messages for the Change of Value node may persist even after addressing the error.&#x20;
* The debug window may not display data for nodes not connected to an output node.&#x20;
* Data formatted as INT may not display properly.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Integration**:<br />* When running an Influx DB locally with a Docker command and adding an Influx DB connector to Litmus Edge, the connector may not be able to run successfully. &#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **System**:<br />* When using VirtualBox, a "Login incorrect" message may display on the Terminal User Interface during startup.
* When uploading a template, you may mistakenly receive the error message `license sync exceeded`.&#x20;
* Large template files may not be restored successfully.&#x20;
* Activation errors messages may not display or not display clear reasons for the error.&#x20;
* Expired licenses may display an incorrect expiry date in **System&#x20;**> **License.**                                                                                                                                                                                                                                                                                                                                                                                                             |
| **UI**:<br />* The support chat text may be misaligned.&#x20;
* The support chat window may block some buttons.&#x20;
* The **System&#x20;**&#x70;age may display double scroll bars.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

## Deprecated Components and Features

| Description                                                                                                                                                                                                                                                                                                                                                       |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* The **Refresh&#x20;**&#x69;con for device tiles is removed.&#x20;
* The following drivers are no longer offered:
  - AB CompactLogix (Gen1)
  - AB ControlLogix (Gen1)
  - AB MicroLogix (Gen1)
  - OPC UA Client (Gen1)
  - Siemens S7-1200 (Gen1)
  - Siemens S7-1500 (Gen1)
  - Siemens S7-300 (Gen1)
  - OPC UA Client Subscribe (Gen1) |
| **Integration**:<br />* The DB - Oracle connector is no longer offered.&#x20;                                                                                                                                                                                                                                                                                     |


[title] Litmus Edge 3.11.1
[path] Product Updates/2024/

Release Date: January 23, 2024

Review the current list of [Limitations](docId:-ptLJws-rryFLBDqgR3Ly).&#x20;

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **System**: <br />* You now have the option to delete system events if they take up a lot of disk space.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **DeviceHub**:<br />* The following improvements have been made to the Enron Modbus driver:
  - You can now retrieve history tag data in ASCII mode for serial communication.
  - Read and Write is now implemented for the string data type.&#x20;
  - It is possible to configure names for items in sequential history data.&#x20;
  - Alarms and Events are now automatically acknowledged.&#x20;
  - The new `Max record number` parameter is now available, which improves how archives are read.&#x20;
  - Empty events are no longer published.&#x20;
  - Null characters are no longer included in strings.&#x20;
  - The algorithm for determining the connection status is now re-factored.&#x20;
  - A new string-size parameter is now available.&#x20; |
| **Integration**:<br />* A new Bulk insert count parameter is now available for the following connectors. This allows you to group tags into batches using one bulk-insert statement.&#x20;
  - DB - Microsoft SQL Server
  - DB - Microsoft SQL Server SSL
  - DB - MySQL
  - DB - MySQL SSL
  - DB - PostgreSQL
  - DB - PostgreSQL SSL                                                                                                                                                                                                                                                                                                                                                                                                                             |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **System**: <br />* ﻿Fixed issue with the confirmation dialog to delete topics for API access-accounts displaying previously deleted topics and also having issues with the formatting of the text. ﻿
* Fixed issue with Litmus Edge components going into panic mode when adding a new network.
* Fixed issue with not being able to update group permissions for LDAP users.&#x20;                                                                                                                                                                                                                                                                                                                                         |
| **DeviceHub**:<br />* Fixed issue with tags for Gen2 drivers receiving data as expected but displaying an incorrect red status.&#x20;
* Fixed issue with the Watchdog option not being enabled by default after upgrading from version 3.5.6.&#x20;
* Fixed issue with the format of OpCode 7 values for the Emerson FB107 driver.
* Fixed issue with not being able to manually change the tag data type for the Euromap 63 driver.
* Fixed issue with events and alarms being pulled for the Enron Modbus driver even if the polling interval is set to 0 seconds.&#x20;
* Fixed issue with trying to add or upload tags for the Heidenhain 530 Advanced Ethernet (Gen1) driver with an address value that is not 0.&#x20; |


[title] Litmus Edge Appliance and Docker Models Compared
[path] Resources/

Review the table below to see which components the Litmus Edge Docker model doesn't have compared to the standard Litmus Edge appliance version.&#x20;

| **Feature**                                                                     | **Litmus Edge Appliance Version** | **Litmus Edge Docker Version** | **Notes**                                                                                                                                                                                           |
| ------------------------------------------------------------------------------- | --------------------------------- | ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Dashboard                                                                       | Yes                               | Yes                            |                                                                                                                                                                                                     |
| Dashboard > Device Up Time                                                      | Yes                               | No                             |                                                                                                                                                                                                     |
| Dashboard > Service Status                                                      | Yes                               | Yes but limited (see note)     | For the Docker version, only the following services display a status:<br />* DeviceHub
* Flows Manager
* Analytics
* Integrations
* OPC UA
* DM (Data Management)                                   |
| DeviceHub > Drivers                                                             | Yes                               | Yes                            |                                                                                                                                                                                                     |
| DeviceHub > Tags                                                                | Yes                               | Yes                            |                                                                                                                                                                                                     |
| DeviceHub > Device Discovery                                                    | Yes                               | No                             |                                                                                                                                                                                                     |
| DeviceHub > Utilities                                                           | Yes                               | No                             |                                                                                                                                                                                                     |
| Digital Twins > Models <br />Digital Twins > Instances                          | Yes                               | Yes                            | Litmus Edge version 3.3.1 and later                                                                                                                                                                 |
| DataHub > Configurations<br />DataHub > DB Management<br />DataHub > DB Users   | Yes                               | Yes                            |                                                                                                                                                                                                     |
| Flows Manager                                                                   | Yes                               | Yes                            |                                                                                                                                                                                                     |
| Analytics > Instances <br />Analytics > Instances Table <br />Analytics Models  | Yes                               | Yes                            |                                                                                                                                                                                                     |
| Integrations                                                                    | Yes                               | Yes                            |                                                                                                                                                                                                     |
| Applications                                                                    | Yes                               | No                             |                                                                                                                                                                                                     |
| OPC UA                                                                          | Yes                               | Yes                            |                                                                                                                                                                                                     |
| System > Info                                                                   | Yes                               | No                             |                                                                                                                                                                                                     |
| System > Certificates                                                           | Yes                               | Yes                            |                                                                                                                                                                                                     |
| System > Network                                                                | Yes                               | No                             | For the Docker version this is managed at the host system.                                                                                                                                          |
| System > Wifi                                                                   | Yes                               | No                             | For the Docker version this is managed at the host system.                                                                                                                                          |
| System > Remote                                                                 | Yes                               | No                             | For the Docker version this is managed at the host system.                                                                                                                                          |
| System > Device Management                                                      | Yes                               | Yes but limited (see note)     | The Docker version only has Cloud Activation, and doesn't have the following:<br />* Reboot
* Factory  Reset
* Software Update                                                                      |
| System > LDAP/AD                                                                | Yes                               | Yes                            |                                                                                                                                                                                                     |
| System > Users                                                                  | Yes                               | Yes                            |                                                                                                                                                                                                     |
| System > Tokens<br />* NATS Proxy&#x20;
* REST API Keys&#x20;
* Access Accounts | Yes                               | Yes                            | NATS Proxy available for Litmus Edge 3.3.1 version and later                                                                                                                                        |
| System > Services                                                               | Yes                               | No                             | For the Docker version, this is managed at the host system.                                                                                                                                         |
| System > External Storage                                                       | Yes                               | No                             | For the Docker version, this is managed at the host system.                                                                                                                                         |
| System > Policy Management                                                      | Yes                               | No                             |                                                                                                                                                                                                     |
| System > Licenses                                                               | Yes                               | Yes but limited (see note)     | A 15-day trial license is available for the VM version but isn't available for the Docker version.                                                                                                  |
| System > Events                                                                 | Yes                               | Yes                            |                                                                                                                                                                                                     |
| System > Zerotouch                                                              | Yes                               | No                             | Litmus Edge version 3.5.2 and later                                                                                                                                                                 |
| System > Support                                                                | Yes                               | Yes but limited (see note)     | The *File Downloads* section isn't available for the Docker version.                                                                                                                                |
| System > Backup/Restore                                                         | Yes                               | No                             |                                                                                                                                                                                                     |
| System > Template                                                               | Yes                               | Yes but limited (see note)     | Default connectors aren't included for the VM and Docker versions. <br />The following template components aren't available for the Docker version:<br />* DTwin (Digital Twin)
* Marketplace<br /> |
| User Profile                                                                    | Yes                               | Yes                            |                                                                                                                                                                                                     |


[title] Tutorial Videos
[path] Resources/

Review the following video tutorials highlighting different features and topics for Litmus Edge.&#x20;

# Installation Tutorials

## VirtualBox ISO File Installation

:::Iframe{code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/IVGKFc3ScLA?si=27j3xp5wrzdM2OSO&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

## VirtualBox OVA File Installation

:::Iframe{code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/xqFLd0c4x6U?si=-Pld84YCmRAZc3NX&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

## ESXi **(VMWare vSphere 7.0.3.01400) OVA File Installation**

:::Iframe{code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/adrAUkweHDc?si=psPnKddk-stc24Hf&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

## Hyper-V ISO File Installation

:::Iframe{code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/jr8HBpCfV0o?si=OYm3Cty7r-uNTJrP&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

# Connect a Device

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/zUMQYuGHHZs?si=Lqx-f9mrRVf0BU2i&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Add Tags

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/_RcLeg_wQfo?si=VQkrsS_H0YYi-NZy&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Configure an External DataHub Source

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/SiZRHbFMpkU?si=O-aUovvyNQIu0VkJ&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Flows Manager Overview

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/xTXsg64aQ-M?si=x8f2UDTAlut2uQfK&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Create Analytics Flows

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/Dvk4WrGzQ2c?si=fGSntwD6U3mU55FT&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Use the Conversion Function

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/rpfDaY0DIL4?si=ClK38GVR8WT6MGFi&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Add Topics to Connectors

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/PmeNTqPWqpQ?si=qA768WLMgMjwrnZ-&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Integration Tutorial Videos

## MongoDB Integration

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/HftByawxDu0?si=h-XbFHASmHyI2hF5&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

## PostgreSQL Integration

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/rSsrTL7TMQc?si=1rdeDGc0HHIJz8NS&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

## MySQL Integration

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/aWjUEaNorqw?si=7MmWwv1_ejj93gmh&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

## Microsoft SQL Server Integration

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/3UzEKzVosAc?si=uu4MCsc0TYANmmNw&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

## InfluxDB Integration

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/MFB4HiusggI?si=V_6hiAWhGIhF2E49&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Topic Tutorial Videos

## PLC Status Topic

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/5weVIPyCpRI?si=6awrSV-ke7bE_V93&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

## Write Topic

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/AEshDyZg5CU?si=x-r5Z-BRIacT9rqi&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

## Manage Topic&#x20;

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/zUhR_e9DpvM?si=MpcUUDKSUobwJbe2&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

## Batch-Write Topic&#x20;

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/wU_gvFLplLQ?si=8D-EB7QE9YeYE0N4&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

## Poll-Once Topic

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/DzNKDvVbWQQ?si=wiwA1AVJce2HtU1y&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Analytics Tutorial Videos

## Anomaly Detection

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/6jTxC8lPruw?si=DBqH2K5k9VS0QOMi&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

## Conversion

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/rpfDaY0DIL4?si=tVN9sfaIXSB1nrCA&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

## Base Conversion

:::Iframe{code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/-_flOR3IByM?si=iB32IQQBLkQneDld&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; referrerpolicy=&#x22;strict-origin-when-cross-origin&#x22; allowfullscreen></iframe>"}

:::

# Status Register Tutorial

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/RO7jqr-F0og?si=5R3BxdMkt_5hPJZS&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# Edge Cascading

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/niEdj9OKLHU?si=EGlaBkC3yWZdIsfR&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::


[title] Tag Upload through CSV Issues
[path] Troubleshooting/DeviceHub Troubleshooting/

Depending on the region setting in Windows, you may have issues uploading tags with a CSV file because of the delimiter used. If CSV files are saved by using a semicolon as the delimiter instead of a comma, the tags won't be uploaded successfully. Refer to the table below.&#x20;

| **Error message**                                                                                              | **Steps to resolve**                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **header field deviceId not exists**<br />The CSV file may use semicolons as the delimiter instead of commas.  | 1. In Microsoft Excel, navigate to **File&#x20;**> **Options&#x20;**> **Advanced**.&#x20;
2. Unselect the checkbox fo&#x72;**&#x20;Use system separators**.&#x20;
3. In the **Decimal separator** field, enter a period (.).&#x20;
4. In the **Thousands separator** field, enter a comma (,).&#x20;<br />Learn more about [Advanced Options](https://support.microsoft.com/en-gb/office/advanced-options-33244b32-fe79-4579-91a6-48b3be0377c4) from the Microsoft documentation.  |


[title] Litmus Edge 3.11.3
[path] Product Updates/2024/

Release Date: March 28, 2023

Review the current list of [Limitations](docId:-ptLJws-rryFLBDqgR3Ly).&#x20;

## New Features

| Description                                                           |
| --------------------------------------------------------------------- |
| **Integration**:<br />* The Cognite connector is now available.&#x20; |

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **DeviceHub**:<br />* Fragmented writing is now supported for the DNP3 Ethernet driver.&#x20;
* The following enhancements have been made to the Roc800 Ethernet driver.&#x20;
  - Timestamps are now displayed in ISO 8601/RFC3339 format with time zone offset.
  - The local time is now used for data and time data points.&#x20;
  - The table parameter properties have been updated to avoid incorrect values from being entered.&#x20;
* The Count tag parameter is now available for the JTEKT Toyopuc CMP-Link Ethernet (Gen1) driver.&#x20;
* You can now download the default certificate for the OSI Agent Advanced driver.
* Values entered for the address are now validated against allowed minimum and maximum address values. &#x20; |
| **Integration**:<br />* All datetime-related fields for the Aveva DataHub connector are now formatted to ISO 8601.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Flows Manager**:<br />* When a Flows Manager is in a *Warning&#x20;*&#x73;tatus, you can now start and stop the Flows Manager as needed.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Digital Twins**:<br />* You can now create an array transformation within a model.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **DeviceHub**:<br />* Fixed issue with not being able to configure decimal-point values for the *Polling Interval* parameter.&#x20;
* Fixed issue with the BACnetIP driver showing a connected status even though the ethernet cable is disconnected.&#x20;
* Fixed issue with the Fanuc CNC Ethernet (Gen1) driver not being able to read values from the X, Y, and Z axis.&#x20;
* Fixed issue with DeviceHub metrics displaying an incorrect status for Device Online Status.&#x20;
* Fixed issue with not being able to configure positive float values for tag poll intervals.&#x20;
* Fixed issue with devices showing a polling status for several minutes when visiting the page for the first time. &#x20;
* Fixed issue with the Enron Modbus driver parsing time incorrectly.&#x20;
* Fixed issue with the CompactLogix Ethernet Advanced driver using the "TagName" parameter instead of "Name" to poll data.&#x20;
* Fixed issue with the Siemens S7 driver crashing when an incorrect tag address is configured.&#x20;
* Fixed issue with the OPC UA Client driver displaying duplicate value types.&#x20; |
| **Digital Twins**:<br />* Fixed issue with templates not successfully enabling the *Flatten Hierarchy* option for instances.&#x20;
* Fixed issue with changes in instances not being applied successfully.&#x20;
* Fixed issue with static attributes not loading successfully from a CSV upload.&#x20;
* Fixed issue with not being able to remove a SchemaID transformation from a dynamic attribute.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **System**:<br />* Fixed issue with the BadgerDB database causing slowdowns in performance.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Flows Manager**:<br />* Fixed issue with the Flows Manager not automatically restarting when a flow crashes.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Integration**:<br />* Fixed issue with Litmus Edge generating an excessive number of connections to Confluent.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |


[title] Configure DCOM for OPC DA Connections
[path] Resources/

This document will detail the steps needed to configure DCOM access in Windows 7 and Windows 10. These settings are required for OPC DA (OPC Classic) connections between two PCs. You will need to configure different settings for the PC with the OPC server and the PC with the OPC client.

## Step 1: Set up the Client PC

**To set up the client PC:&#x20;**

1. Open *Control Panel* and set the view by option to **Small icons**.
2. Select **Administrative Tools**.
3. Open *Component Services*, then select **Console Root > Component Services > Computers > My Computer**.
4. Right-click **My Computer&#x20;**&#x61;nd open **Properties&#x20;**&#x74;o open the popup window.
5. Open the **Default Properties** tab and set the *Default Authentication Level* to **None**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/luhelKolGRY_h2l4HJpF3_setupclientpc01.png" size="80" width="756" height="814" caption="Default Properties tab" position="center" showCaption="true"}
6. Open the **COM Security&#x20;**&#x74;ab and select **Edit Limits…** in the *Access Permissions&#x20;*&#x73;ection to open the popup window.
7. Allow **Local Access&#x20;**&#x61;nd **Remote Access** for the *ANONYMOUS LOGON* group.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1vFOGnhuR13zSoPN_L-wy_setupclientpc02.png" size="80" width="691" height="782" caption="COM Security tab" position="center" showCaption="true"}
8. Select **OK&#x20;**&#x6F;n both popup windows to save your changes.
9. In *Control Panel*, open **Windows Firewall**.
10. In the left sidebar, selec&#x74;**&#x20;Allow a program of feature through Windows Firewall**.
11. Select **Change settings** and select both options (Private and Public) on the **File and Printer Sharing** line.&#x20;
12. Click **OK&#x20;**&#x74;o save your changes.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/KQ7pLjGSO27MpXwwamZyG_setupclientpc03.png" size="80" width="1010" height="844" caption="File and Printer Sharing option" position="center" showCaption="true"}

## Step 2: Set up the Server PC

**To set up the server PC:**

1. Open *Control Panel&#x20;*&#x61;nd set the view by option to **Small icons**.
2. Select **Administrative Tools**.
3. Open *Computer Management*, then select **Computer Management (Local) > System Tools > Local Users and Groups > Users**.
4. In the menu bar, select **Action > New User**.
5. Add a username, password, and select the options “User cannot change password” and “Password never expires.” You may need to deselect “User must change password at next logon” to enable these options.
6. Click **Create**, then click **Close&#x20;**&#x74;o finish creating the new user.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/QX5a2tDgw-yhM6ObQH2dp_setupclientpc04.png" size="80" width="1242" height="555" caption="New user dialog box" position="center" showCaption="true"}
7. On the *Computer Management* window, select the user you just created, then select **Action > Properties**.
8. Go to the **Member Of** tab, click **Add…** to open the *Select Groups* popup window, then click **Advanced…** to open another popup window.
9. Click **Find Now** to populate the Search results field, select the **Administrators&#x20;**&#x67;roup, then click **OK**.
10. Click **OK&#x20;**&#x6F;n the *Select Groups&#x20;*&#x70;opup window, then **OK&#x20;**&#x6F;n the user *Properties&#x20;*&#x77;indow.&#x20;
    ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8Ho7Q9klqTdqEkBB9Sg65_setupclientpc05.png "Select Groups dialog box")


[title] MindSphere Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and MindSphere.

# Step 1: Create a MindSphere Aspect

**To create a MindSphere aspect:**

1. Log in to MindSphere.&#x20;
2. From the dashboard, select **Asset Manager**.
   The *Asset Manager* pane appears.&#x20;
3. From the left pane, select **Aspects**.
   The *Aspects&#x20;*&#x70;ane appears.&#x20;
4. Click **Create aspect**.&#x20;
   The *Create aspect* dialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/d-qVuqoy2RubNqKwBjr3o_mindsphere-create-aspect.png" size="80" width="871" height="701" caption="Create aspect dialog box" position="center" showCaption="true"}
5. In the **Name&#x20;**&#x66;ield, enter **Litmus**.&#x20;
6. Scroll to the bottom and click **Add variable**.
   The *Variables&#x20;*&#x73;ection drops down.&#x20;
7. Configure the following parameters.&#x20;
   - **Name**: Enter **temperature**.&#x20;
   - **Data type**: Select **LONG**.&#x20;
   - **Unit**: Enter **C**.&#x20;
8. Click **Add variable**.&#x20;
   A new row appears in the *Variables&#x20;*&#x73;ection.&#x20;
9. Configure the following parameters.&#x20;
   - **Name**: Enter **pressure**.&#x20;
   - **Data type**: Select **INT**.&#x20;
   - **Unit**: Enter **bar**.&#x20;
10. Scroll down and click **Save**.
    The aspect appears in the *Aspects&#x20;*&#x70;ane.
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dI-N7O4YfsA9GqOh9wO4T_mindsphere-aspect.png" size="80" width="1699" height="678" caption="The Aspects pane" position="center" showCaption="true"}

# Step 2: Create a Type

**To create a type:&#x20;**

1. From the left pane, click **Types**.
   The *BasicAsset&#x20;*&#x70;ane appears.&#x20;
2. From the Core types section, select **BasicAgent**.
   The *BasicAgent&#x20;*&#x70;ane appears.&#x20;
3. From the *Core types* section, select **MindConnectLib**.
   The *MindConnect Lib* pane appears.&#x20;
4. Click **Add derived type**.
   The *Create type* dialog box appears.&#x20;
5. In the *Name&#x20;*&#x66;ield, enter **boiler**.&#x20;
6. From the *Aspects&#x20;*&#x73;ection, click **Add aspect**.
   A new row appears in the *Aspects&#x20;*&#x6C;ist.&#x20;
7. From the *Aspects&#x20;*&#x6C;ist, select the aspect you created from the **Aspect&#xA0;**&#x64;rop-down list.
8. Click **Save**.&#x20;
   The aspect appears in the *boiler&#x20;*&#x70;ane.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jYCyEzzUU_CsEzyQIwt0W_mindsphere-type-boiler.png" size="80" width="1694" height="690" caption="The boiler pane" position="center" showCaption="true"}
9. Click **Back&#x20;**&#x74;wice.&#x20;
   The *BasicAsset&#x20;*&#x70;ane appears.&#x20;

# Step 3: Create an Asset

**To create an asset:**

1. From the left pane, click **Assets**.
   The r*oot asset* pane appears.&#x20;
2. Click **Create asset**.&#x20;
   The *Select type* pane appears.&#x20;
3. Select **boiler&#xA0;**&#x66;rom the list, and then click **Create**.
   Th&#x65;*&#x20;Add asset&#x20;*&#x64;ialog box appears.&#x20;
4. In the name field, enter **plant12**, and then click **Save**.&#x20;
   The plant appears in the root asset list.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/M2OPOOpADZlqGsouSqB-h_mindsphere-root-asset.png" size="80" width="1664" height="708" caption="The root asset list" position="center" showCaption="true"}

# Step 4: Configure the MindConnect Lib plugin

**To configure the MindConnect Lib plugin:**

1. From the *Aspects&#x20;*&#x70;ane, click the **Mindconnect Lib&#xA0;**&#x73;ection.
   The *Configure MindConnect Lib* dialog box appears.&#x20;
2. Select **SHARED\_SECRET**, and then click **Save**.
   The *Edit boarding configuration* dialog box appears.&#x20;
3. Click **Generate onboarding key**.
   The key appears in the *Boarding configuration* field.&#x20;
4. Click **Copy to clipboard**.
   The key is copied to your clipboard.&#x20;

# Step 5: Add the MindSphere Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **MindSphere PSK&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Agent boarding configuration**: Paste the key generated in Step 4.&#x20;
- **Aspect name**: Enter the aspect name created in Step 1. &#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online.  
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 6: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RsAyFme0gN2v66AjMLiDy_mindsphere.png" size="60" width="369" height="345" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 7: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 8: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 9: Create Topics for Connector

You will now need to import the tags created in Step 7 as topics for the MindSphere connector. The topics will be created as outbound topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status. &#x20;

# Step 10: Enable Topics

To enable the topics, return to the Topics tab and click the **Enable all topics** icon.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Iq7BWYqGWueu4US73iBl3_image.png" size="80" width="1220" height="330" caption="Enable all topics icon" position="center" showCaption="true"}

# Step 11: Add Data Source

**To add the data source:**

1. Log in to MindSphere.&#x20;
2. Click the **Menu&#xA0;**&#x69;con, and select **Asset Manager**.&#x20;
   The *Asset Manager* pane appears.&#x20;
3. From the left pane, click **plant12**.
   The *Aspects&#x20;*&#x70;ane appears.&#x20;
4. Click **MindConnect Lib**.
   The MindConnect Lib Plugin for the *plant12 boiler&#x20;*&#x61;ppears.
5. Click **Add data source**.
   The *Add data source* dialog box appears.&#x20;
6. In the *Name&#x20;*&#x66;ield, enter **boiler**, and then click **Accept**.
   The boiler line item is added.&#x20;
7. Click **Add data point&#xA0;**&#x6E;ext to the boiler line item.
   The *Add data point* dialog box appears.
8. Configure the following parameters.&#x20;
   - **Name**: Enter **temp**.&#x20;
   - **Type**: Select **LONG**.
   - **Unit**: Enter **C**.&#x20;
9. Click **Accept**.&#x20;
   The first data point is added to the boiler line item.&#x20;
10. Click **Add data point&#xA0;**&#x6E;ext to the boiler line item.
11. Configure the following parameters.&#x20;
    - **Name**: Enter pres.&#x20;
    - **Type**: Select **INT**.
    - **Unit**: Enter **bar**.&#x20;
12. Click **Accept**.&#x20;
    The second data point is added to the boiler line item.&#x20;
13. Click **Save**, and then click **Save&#x20;**&#x61;gain.&#x20;
14. Click the **Data mappings&#xA0;**&#x74;ab.
15. Click the **Expand&#xA0;**&#x61;rrow next to **boiler&#xA0;**&#x74;o display the data points.
16. Click **Link variable&#xA0;**&#x6E;ext to *temp*.
    The *Link variable* dialog box appears.&#x20;
17. Select **Link variable&#xA0;**&#x6E;ext to temperature, and then click **Accept**.
    The data mapping for temperature appears under *temp*.&#x20;
18. Click **Link variable&#xA0;**&#x6E;ext to *pres*.
    The *Link variable* dialog box appears. &#x20;
19. Select **Link variable&#xA0;**&#x6E;ext to pressure, and then click **Accept**.
    The data mapping for pressure appears under *pres*.&#x20;
20. Click **Close**.
    The *Asset&#x20;*&#x70;ane appears.&#x20;

# Step 12: Verify the Connection

**To verify the connection:&#x20;**

1. Return to the MindSphere *Edit boarding configuration* dialog box browser tab.
2. Note that *Onboarded&#x20;*&#x73;hows a green status.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/oQfQnb0P1VFkCtlc2Db6N_mindsphere-onboarded-green.png" size="80" width="632" height="62" caption="Onboarded Boarding status" position="center" showCaption="true"}
3. Click **Close**.
   The *plant12 assets* pane appears.&#x20;
4. Click the **Menu&#xA0;**&#x69;con, and select **Fleet Manager**.
   Th&#x65;*&#x20;Fleet Manager&#x20;*&#x70;ane appears.&#x20;
5. From the left pane, click **plant12**.
   the *Aspects&#x20;*&#x70;ane appears to the right displaying the MindSphere aspect.
6. From the right pane, click the **Litmus Edge aspect**.
   The aspect chart appears displaying the variables.&#x20;
7. Click the **Zoom&#xA0;**&#x69;con multiple times until the temperature and pressure lines diverge.


[title] Kafka SSL Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and a Kafka broker that uses SSL authentication.&#x20;

# Before You Begin

You will need the following:

- Access to a Kafka broker that uses SSL authentication. &#x20;
- The CA certificate and other required authentication parameters needed to access the broker.&#x20;

Refer to the following links to learn more:

- [Apache Kafka Download](https://kafka.apache.org/downloads)&#x20;
- [Encrypt and Authenticate with TLS](https://docs.confluent.io/platform/current/kafka/authentication_ssl.html)
- [OpenSSL Downloads](https://www.openssl.org/source/)

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add the Kafka SSL Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **Kafka SSL&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.

- **Name**: Enter a name for the connector.&#x20;
- **Brokers list separated by comma**: Enter the Kafka broker URL. For example: 192.168.56.1.&#x20;
- **SASL mechanism**: Select an option: NONE, SASL\_PLAINTEXT, SCRAM-SHA-256, SCRAM-SHA-512.&#x20;
- **Username&#x20;**(Optional): If needed, enter the username to access the broker.&#x20;
- **Password**: (Optional): If needed, enter the password associated with the username.&#x20;
- **CA Certificate**: Paste the CA certificate associated with the broker. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Certificate**: Paste the SSL certificate. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Private key**: Enter or paste the SSL private key.&#x20;
- **Topic**: Enter the name of the default topic used for publishing data.&#x20;
- **Throttling Limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 4: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EHmzDvQKlohZ24GOFrqdR_kafkassl.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 5: Create Topics for Connector&#x20;

You will now need to import the tags you added in Step 3 to the connector as topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 6: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

# Step 7: Verify Connection

Access the Kafka broker and verify that Litmus Edge is successfully sending data.&#x20;

[title] Splunk Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and Splunk through HTTP.&#x20;

# Before You Begin

You must have a Splunk account.&#x20;

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tag

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Retrieve Splunk Parameters

Log in to Splunk, navigate to the Splunk - Sublime Text page, and copy the following values:

- Input line
- Services line
- Token line

# Step 4: Add the Splunk Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **Splunk** provider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Paste the **Input line** copied in Step 3.&#x20;
- **Port**: Leave the default value of **8088**.&#x20;
- **Use SSL**: Make sure the check box is selected.&#x20;
- **Endpoint**: Paste the **Services line** copied in Step 3.&#x20;
- **Token**: Paste the **Token line** copied in Step 3.&#x20;
- **Throttling Limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online.  
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 5: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/D1fE9vqPtVcbjwPwupsHA_splunk.png" size="60" width="369" height="345" position="center" caption="Toggle to enable connector" showCaption="true"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 6: Create Topics for Connector

You will now need to import the tags created in Step 2 as topics for the Splunk connector. The topic will be created as outbound topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 7: Enable Topics

To enable the topic, return to the Topics tab and click the **Enable all topics** icon.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Iq7BWYqGWueu4US73iBl3_image.png" size="80" width="1220" height="330" caption="Enable all topics icon" position="center" showCaption="true"}

# Step 8: Verify Data Connection in Splunk

**To verify the data connection in Splunk:**

1. Log in to Splunk.&#x20;
2. Open the Splunk HTTP Event Collector and refresh the data.
3. Scroll down to the *Activity&#xA0;*&#x73;ection and hover over the data to view *Valid Requests*.
4. In the *Request Overview* section, hover over the *Valid Request Count* and click the **Refresh&#x20;**&#x69;con.&#x20;
5. Verify that the values for *Event Count* and *Valid Request Count* update.&#x20;


[title] Site and Node-Locked License Overview for Litmus Edge
[path] Resources/

For a Litmus Edge instance to be able to fully access and use all features, it must carry a license. This license can be a site license or a node-locked license.&#x20;

For information about Litmus Edge Manager licenses, see [Site and Node-Locked License Overview for Litmus Edge Manager](docId\:Jvibd0MBSj97ZcPDfhab9).

# Understanding and Adding a Site License for Litmus Edge

For a Litmus Edge to carry a site license, you will need a connection with a license server. The Litmus Edge can connect to Litmus Edge Manager (which contains an embedded license server that the Litmus Edge will automatically connect to) or a standalone license server. See [License Server Installation](docId\:hRCG1143QUU3HaNq2slFc) for details.

The license server contains Litmus Edge site licenses. While a connection between a Litmus Edge and a license server (whether standalone or within a Litmus Edge Manager) is established, the license server will continue to provide a site license to a Litmus Edge instance. If the connection between the Litmus Edge and the license server is lost, the Litmus Edge instance will lose its license as well.

A site license, depending on its constituent features, may act both as a Litmus Edge site license and also a Litmus Edge Manager site license.

To retrieve a site license from a license server for Litmus Edge, see [Set a License Server](docId\:O7eilD-y-IaNlsjKtaSli).

## Litmus Edge Manager License Server for Litmus Edge

The Litmus Edge Manager License Server provides site licenses to Litmus Edge instances. This server can also provide the Litmus Edge Manager with its own site license. See [License Server Management](docId:5U_hNNsaVs--E5HQJEQ0O) for more information on how to customize the site licenses that Litmus Edge instances will receive from Litmus Edge Manager.

# Understanding and Adding a Node-Locked License for Litmus Edge

For a Litmus Edge to carry a node-locked license, you will need a license key. The key will be a 16-digit code (`####-####-####-####`) that is valid for certain number of years, based on the license SKU definition. The node-locked license key can be requested from Litmus account executives.&#x20;

To access the Litmus Edge system, a core license must be present in Litmus Edge. You can expand the features available to you by adding appropriate node-locked licenses.&#x20;

:::hint{type="warning"}
**Important**: Each node-locked license key is bound to a Litmus Edge MAC address. If the MAC address is changed, the license key will be invalidated.
:::

A Litmus Edge node-locked license key cannot be used as a Litmus Edge Manager node-locked license key.

To add a node-locked license for Litmus Edge, see one of the following:

- [Activate a Node-Locked License Online](docId\:ew63TzR21xC_8mkhmT1mp)
- [Activate a Node-Locked License Offline](docId\:G1c_-lr4pvtRxoqx-DXYN)

# Litmus Edge Site Licenses and Node-Locked Licenses Compared

| **Site License**                                                                                                                                                                              | **Node-Locked**                                                                                                                                                                                                                                                                                                                                                                                                                                |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Requires a continuous connection to a license server or a Litmus Edge Manager to activate and use the license.                                                                                | Online activation requires Litmus Edge to briefly access the internet to activate the license. After activation, no internet access for Litmus Edge is needed to retain and use the license.<br />Offline activation doesn't require Litmus Edge to have an internet connection to use the license. However, you will need access to the internet (for example, on a different web browser window) during activation to retrieve the license.  |
| Activated through a license server and can be shared across multiple Litmus Edge instances.<br />The site license SKU defines the features that are available in each activated Litmus Edge.  | Depending on the specific details of your license, a node-locked license can be added to multiple Litmus Edge instances.<br />The license is registered to every Litmus Edge instance it is activated with. <br />The node-locked license SKU defines the features that are available in Litmus Edge.                                                                                                                                          |
| Can be upgraded with additional features/capabilities.                                                                                                                                        | Can be upgraded with additional features/capabilities.                                                                                                                                                                                                                                                                                                                                                                                         |


[title] MongoDB Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and a MongoDB database.&#x20;

For this integration, you can use either the DB-MongoDB or DB-MongoDB v4+ connector.&#x20;

See the the [MongoDB documentation](https://www.mongodb.com/docs/) for more information.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/HftByawxDu0?si=_iYQnvEl5Oz4nOkf&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

In this guide you will deploy a MongoDB database container from Litmus Edge and then integrate with the database using the DB-MongoDB connector. For your specific scenario you may use an external MongoDB database to set up the integration.&#x20;

If you do use an external MongoDB database, make sure to use the appropriate connector depending on the version of MongoDB you are using (DB-MongoDB or DB-MongoDB v4+).&#x20;

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add MongoDB Marketplace Application

:::hint{type="info"}
**Note**: The version used in this guide for MongoDB is 4.4.4.
:::

**To add the MongoDB Marketplace Application:**

1. In Litmus Edge, navigate to **Applications&#x20;**> **Marketplace**.
2. Click **Marketplace List** and select **Default Marketplace Catalog**.
3. Click the **MongoDB** application tile.&#x20;
4. From the **Installation script version** drop-down list, select **latest**.&#x20;
5. Enter **MongoDB&#x20;**&#x69;n the **Name&#x20;**&#x66;ield. &#x20;
6. Click **Launch**.&#x20;
7. Navigate to **Applications&#x20;**> **Catalog Apps**.&#x20;
   The MongoDB application appears, pulls the image, and then starts the application. The MongoDB application shows as running.
8. Navigate to **Applications&#x20;**> **Containers**.&#x20;
   The MongoDB application Container is running.
9. Copy the IP address for the MongoDB application.

# Step 4: Add the DB - MongoDB Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - MongoDB&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Paste the IP address you copied in Step 3. &#x20;
- **Port**: The MongoDB Server port. The default value is **27017**.&#x20;
- **Username&#x20;**(Optional): Leave the field blank.&#x20;
- **Password&#x20;**(Optional): Leave the field blank.&#x20;
- **Auth database** (Optional): The authentication database name. The default value is **admin**.&#x20;
- **Auth mechanism**: Select **PLAIN**.&#x20;
- **Database**: Enter **db-sample**.&#x20;
- **Collection**: Enter **devicehub**.&#x20;
- **Commit timeout**: Enter the transaction commit timeout in (ms).
- **Max transaction size**: Enter the maximum number of messages before a transaction is committed, regardless of timeout parameter.
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online.  
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 5: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/l7IT7q26XOgrZmdSD1Xs3_mongodb.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 6: Create Topics for Connector

You will now need to import the tags created in Step 2 as topics for the MongoDB connector. The topics will be created as outbound topics.

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 7: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

# Step 8: Make MongoDB Queries

You can now verify that you can view data through the terminal command window.&#x20;

Update the database and collection names to your own specific configurations.&#x20;

**To make queries in the MongoDB container terminal:**

1. In Litmus Edge, navigate to **Applications&#x20;**>**&#x20;Containers**.
2. Click the **Terminal&#xA0;**&#x69;con next to the MongoDB container.
   The MongoDB shell opens.
3. From the MongoDB container terminal, enter `mongo`**&#xA0;**&#x61;nd press **ENTER**.
   The *MongoDB shell version v4.4.4&#xA0;*&#x61;ppears and connects.
4. Enter `show databases`**&#xA0;**&#x61;nd press **ENTER**.
   The *db-sample* database name appears in the console.
5. Enter `use db-sample`**&#xA0;**&#x61;nd press **ENTER**.
   The directory switches to *db-sample*.
6. Enter `show collections`**&#xA0;**&#x61;nd press **ENTER**.
   The devicehub collection list appears.&#x20;
7. Enter `db.devicehub.find()` and press **ENTER**.
   Confirm you see data being loaded into the collection.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/dfXIjA4RtCThnNkcyT-QE_image.png)


[title] Use Custom Attributes in the Google Cloud Pub/Sub Connector
[path] How-To-Guides/Integration Guides/Google Cloud Pub/Sub Integration Guide/

When integrating the [Google Cloud Pub/Sub Integration Guide](docId\:c6Zowc1akXEA0SxlPg2oa) connector, you have the option to configure custom attributes. Review the following user scenario for using custom attributes.&#x20;

# User Scenario Overview

Consider a scenario where you have multiple manufacturing sites worldwide, and one Litmus Edge instance is connected to each site. Each Litmus Edge instance also has one Google Cloud Pub/Sub Connector integrated with an outbound connection. To categorize the data being sent from Litmus Edge to the Google Cloud Platform, you want to add custom attributes to each connector so that you know the origin of the data.&#x20;

You will create the following key custom attributes:

- Country
- City
- Site ID

# Configure Custom Attributes

To review the entire workflow for setting up an outbound connection with the Google Cloud Pub/Sub Connector, refer to [Google Cloud Pub/Sub Integration Guide](docId\:c6Zowc1akXEA0SxlPg2oa). The steps below focus on configuring the custom attributes for one of the Litmus Edge instances described in the user scenario above.&#x20;

**To configure custom attributes:**

1. Navigate to **Integration**.&#x20;
2. From the *Integration&#x20;*&#x70;ane, click the **Add a connector** box.&#x20;
   The *Add a Connector&#x20;*&#x64;ialog box appears.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/YTCrJ12hK_ZZi6h-r-Ue5_addconnector.png" size="80" width="795" height="520" position="center" caption="Add a connector icon" showCaption="true"}
3. Select **Google Cloud Pub/Sub Connector**.&#x20;
4. Configure the connection parameters to set up a connection with the Google Service account. Refer to [Google Cloud Pub/Sub Integration Guide](docId\:c6Zowc1akXEA0SxlPg2oa).&#x20;
5. Click the checkbox for **Show Custom Attributes**. The configuration section displays.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/udT-6gUxpd3dW4lUbNv_e_showcustomattributescheckbox.png" size="80" width="1177" height="759" position="center" caption="Show Custom Attributes checkbox" showCaption="true"}
6. Enter the following Key/Value pairs and click **+ Add&#x20;**&#x66;or each pair.&#x20;
   - **Key**: Country **Value**: United States
   - **Key**: City **Value**: Chicago
   - **Key**: Site ID **Value**: 2463
7. Review the configured custom attributes and all other connection parameters. Then, click **Add**.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/VANQIOlUK4931W9XWdaeh_customattributesconfigured.png" size="80" width="1178" height="762" position="center" caption="Custom Attributes Configured" showCaption="true"}

The connector displays in the *Integration&#x20;*&#x70;ane with the custom attributes in the connector configuration.&#x20;

# Sample Payload with Custom Attributes

Review the following payload with custom attributes configured.&#x20;

- The *Attribute keys* column displays custom attributes that are created for the payload (*location&#x20;*&#x61;nd *source*).&#x20;
- The *attribute.location* column displays the value for the *location&#x20;*&#x61;ttribute (toronto).&#x20;
- The *attribute.source* column displays the value for the *source&#x20;*&#x61;ttribute (mce).&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/OXFLvK3BPmUjAeF7mhw5Y_image.png" size="80" width="1417" height="555" position="center" showCaption="false"}


[title] Litmus Edge 3.1.0.0
[path] Product Updates/2021/

Release Date: March 25, 2021

### Improvements and Bug Fixes

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| New - Serial Device Alias<br />* Added support for serial interfaces on UI which helps users to add DeviceHub Drivers with persistent configurations which survives a reboot
* Added support for custom names and aliases for serial interfaces                                                                                                                                                                                                                 |
| New - LDAP Grouping<br />* Added support to map user roles to different LDAP groups easily from UI                                                                                                                                                                                                                                                                                                                                                              |
| New - Enhancements to dynamic browsing with OPC UA Client<br />* Added support for dynamic browsing for > 1k tags with OPC UA client drivers                                                                                                                                                                                                                                                                                                                    |
| Additions to System Events<br />* Added system performance improvements
* Extended support for Marketplace application events
* Extended support for events with licensing
* Added support for event forwarding with Litmus Edge Manager 2.0                                                                                                                                                                                                                    |
| Improved status reporting with marketplace image pull<br />* Added support for real time status update on application image download
* Enhancements made to UI or application launch from catalog                                                                                                                                                                                                                                                               |
| Additions to DeviceHub Drivers<br />* Added float support for Modbus driver (Gen 2)
* Added improvements to OPC UA Client subscription<br />**Note**: OPC UA Client is now subscription-based and not polling.<br />* Added the OPC UA Client Poll driver
* Added the Emerson ROC800 Ethernet driver
* Added the Brother TC Ethernet driver
* Added AB CompactLogix Ethernet FreeTag driver
* Added Mitsubishi QJ71e71 driver
* Added Mitsubishi Q ASCII driver |
| Improvements to Integration<br />* Added MQTT Last Will and Testament configuration                                                                                                                                                                                                                                                                                                                                                                             |
| Added CSRF in different components<br />* Added CSRF protection to prevent cross scripting attack                                                                                                                                                                                                                                                                                                                                                               |
| General UI & UX Improvements<br />* Improved marketplace application error reporting with user friendly UI messages
* Improved UI for tags additions > 10,000 tags                                                                                                                                                                                                                                                                                              |

### Known Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Backup from previous system with same TagName may show an error upon restore&#xD;
- Backup/Restore from previous system may fail for some cases&#xD;
- PLC Status tag may show an error of “unexpected token” in flows&#xD;
- Applications not included in template if catalog isn't selected during template creation&#xD;
- Developer user can't manage OPC UA Server, Integrations, Analytics&#xD;
- Containers can't resolve each other by name&#xD;
- Occasional TUI message with Login incorrect error&#xD;
- Analytics navigates to default group even if you have pinned other groups&#xD;
- Deactivation doesn't go through when Litmus Edge Manager connection is lost&#xD;
- Applying template on same device overwrites&#xD;
- Access node in flows doesn't show drop down of topic before deployment&#xD;
- OPC UA Client certificate mode unsupported&#xD;
- Disk Space Policy Management is not sending appropriate warnings.&#xD;
- Unable to add Siemens Logo PLC. |

### Deprecated Components and Features

| Description                                                                                    |
| ---------------------------------------------------------------------------------------------- |
| **DataHub:** <br />* Create Database                                                           |
| **DeviceHub:** <br />* OPCDA Agent driver. This is not compatible with the new DeviceHub Agent |

### Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                         |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Fixed issues with container logs shown on UI&#xD;
- Fixed loading issues of with app terminal&#xD;
- Fixed issue with copying analytics flows&#xD;
- Fixed issue with docker IP change on&#xD;
- Fixed issues with OPC UA server certificate based authentication&#xD;
- Fixed issue with applications not being part of template |


[title] Issues with Parsing Data
[path] Troubleshooting/OPC UA Troubleshooting/

If you are trying to convert the data type of topics going through the OPC UA server and have issues with viewing the data (you see `null` values), keep in  mind the following:

- The OPC UA server can't convert data types of topics
- The OPC UA server will work with the original data types coming from the topic

## Solution: Parse Data before Sending to OPC UA Server

To resolve this issue, you will need to create a custom OPC UA tag by creating a JSON object and sending it to the appropriate topic.&#x20;

Refer to the following to learn more:

- [Mozilla Developer Documentation - parseint()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt)
- [Data Type Mapping](docId\:F-u01pBVBJTPggjBwbZn4)

You can also review the following JSON file example that creates a flow to convert the data type of data before sending it to the OPC UA Server. See [Manage the Flow Canvas](docId\:qQnwjDagEcrDG0JtIVulu) to learn more about importing JSON files.&#x20;

::File[]{src="https://archbee-doc-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/AaE_5MAXQOAUXsb8LJCMX_parsing-datatypeexample.json" label="Parsing Data_Type_Example.json"}


[title] PostgreSQL SSL Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and a PostgreSQL database using SSL authentication.&#x20;

# Before You Begin

You will need the following:

- Access to a PostgreSQL database that uses SSL authentication.
- The CA Certificate and any other required authentication parameters to access the database.&#x20;

Refer to the following links to learn more:

- [PostgreSQL Docker Image](https://hub.docker.com/_/postgres)
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
- [Secure TCP/IP Connections with SSL](https://www.postgresql.org/docs/16/ssl-tcp.html)

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add the DB - **PostgreSQL SSL&#x20;**&#x43;onnector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - PostgreSQL SSL&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Enter the hostname for the PostgreSQL database.&#x20;
- **Port**: The PostgreSQL Server port. The default value is **5432**.&#x20;
- **SSL Mode**: Select the SSL Mode (require, verify-ca, verify-full).&#x20;
- **CA Certificate**: Paste the CA certificate associated with the database. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Certificate**: Paste the SSL certificate. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Private Key**: Enter or paste the SSL private key.&#x20;
- **Username**: Enter the appropriate username.&#x20;
- **Password**: Enter the password for the username. &#x20;
- **Database**: Enter the database name.&#x20;
- **Table**: Enter the table name.
- **Show Mapping**: If you want to send data to a custom table, select this check box and unselect *Create table*. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more. To add key/value pairs for the custom table, see [Configure Key/Value Pairs](docId\:Yj_sKBPP9J_TH3_qvC1Tm).&#x20;
- **Create table**: If you want to send data to an existing table in the default format, or you want to create a new table in the default format, select this checkbox and unselect *Show Mapping*. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.&#x20;
- **Commit timeout**: Enter the transaction commit timeout in (ms).
- **Max transaction size**: Enter the maximum number of messages before a transaction is committed, regardless of timeout parameter.&#x20;
- **Bulk insert count**: (Available for Litmus Edge version 3.11.1 and later) To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 4: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/iMtx0yTin43zijwoyX-k0_postgressl.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 5: Create Topics for Connector

You will now need to import the tags created in Step 2 as topics for the PostgreSQL connector. The topics will be created as outbound topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 6: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

# Step 7: Make PostgreSQL Queries

You can now verify that you can view data in the PostgreSQL database.&#x20;

Update the credentials, database name, and table name to your specific configurations.&#x20;

**To make PostgreSQL queries:**

1. From the PostgreSQL terminal window, enter `psql -h locahost -U postgres`**&#xA0;**&#x61;nd press **ENTER**. If you configured a different username, replace `postgres`.&#x20;
   The *psql (9.6.5)***&#xA0;**&#x76;ersion number appears.
2. Enter `\l`**&#xA0;**&#x61;nd press **ENTER**.
   The list of databases appears in the console.
3. Enter `\c postgres`**&#xA0;**&#x61;nd press **ENTER**.&#x20;
   *You are now connected to database "db-example" as user "postgres"* appears.
4. Enter `\dt` and press **ENTER**.
   The list of relations appears showing the devicehub schema.
5. Enter `\d devicehub` and press **ENTER**.
   The *public.devicehub* table appears.
6. Enter `select * from devicehub;` and press **ENTER**.
   The data for the devicehub table appears.


[title] Custom Topic Configuration for Litmus Edge OPC UA Server
[path] Troubleshooting/OPC UA Troubleshooting/

See the steps below to update a tag in the Litmus Edge OPC UA server that originates from a source other than DeviceHub.&#x20;

## **Solution**

The Litmus Edge OPC UA server allows you to enter any topic as the data source when configuring a new tag. The server still expects a custom topic to have the same fields in the message as a DeviceHub message. At a minimum, the fields `success` and `value` are required in the payload of the message for the OPC UA server to update the tag.

This guide assumes that you have already configured and enabled the OPC UA server and that a tag is already configured. The following instructions show how to update a tag on the OPC UA server with the current timestamp.

:::hint{type="info"}
**Note:&#x20;**&#x49;t is important to match the data type of the value you are sending with the data type of the configured tag in the OPC UA server. If the data types do not match, the value may not be updated on the OPC UA server.
:::

**To update a custom topic in LE OPA UA Server:**

1. In Litmus Edge, navigate to **Flows Manager** and open the flow canvas. See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
2. On the flows canvas, add an inject node, a function node, and a DeviceHub Publish node.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8b75Wi0yFbOxZHtTiedjl_opcua-topic-01.png)
3. Double-click the inject node. Configure it to inject the timestamp on an interval, every 1 second.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/EZx7X-Uq_9WhW92iZEZQn_opcua-topic-02.png" size="80" width="612" height="185" position="center" showCaption="false"}
4. Double-click the function node. Insert the following code. &#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ef7xSv1pqqHmxTyvnncd2_opcua-topic-03.png" size="70" width="442" height="188" position="center" showCaption="false"}
5. The payload will generate the following output.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3iw72FBZThu3NEweWQ_Ju_opcua-topic-04.png" size="80" width="467" height="112" position="center" showCaption="false"}
6. Double-click the DataHub Publish node. In the Topic field, enter the topic name  configured in your OPC UA tag.&#x20;
   Below is the configuration of the OPC UA tag used in this example.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/vPs_vGeYOMqX1S9E8pWku_opcua-topic-05.png)

The structure of the JSON string you are sending to the custom topic must have the  and `value` keys at minimum for the OPC UA server to update the value from that topic. If success is set to true, the value is updated and the status of the tag is `Good`.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/kxRth-wzSdJQ5QRsgCM5o_image.png)

If success is set to `false`, the value is updated and the status of the tag is `BadResourceUnavailable`.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7RzVsARTJDFgwi3AYTWDX_image.png "Status of tag with error")


[title] Databricks Unity Catalog Volume
[path] How-To-Guides/Integration Guides/Databricks Integration/

You can configure the Databricks Unity Catalog Volume on the Litmus Edge webUI to send files directly to the Databricks Unity Catalog (supports AWS, Azure, and GCP).

# **Before You Begin**

Make sure you have the following:

- Access to Litmus Edge WebUI. See [Access the Litmus Edge Web UI](docId\:tGtrj9DEH1W_ro24kmbmQ)
- Access to Databricks workspace URL and access token.

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: **Add Cloud Sync Job**

**To add the cloud storage sync job:**

1. Navigate to **System** > **External Storage**.&#x20;
2. Click **Add sync job**.
   The *Add Cloud Sync Job&#x20;*&#x64;ialog box appears.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JbVYkn6KeRGMFEvAtSJ5__image.png "External Storage page in Litmus Edge")
3. From the *Add Cloud Sync Job&#x20;*&#x64;ialog box, enter the following details:
   - **Name:&#x20;**&#x45;nter a **name** for the cloud sync job.
   - **Provider:** Select **Databricks Unity Catalog Volume** provider from the drop-down list.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/3mwfdbLwnA9WOUjRTfZ6j_image.png "Add Cloud Sync Job dialog box")

# Step 4: Configure Databricks Unity Catalog Volume

:::hint{type="info"}
**Note:&#x20;**&#x49;t is recommended to review the [Run your first ETL workload on Databricks | Databricks](https://docs.databricks.com/en/getting-started/etl-quick-start.html) on AWS guide before starting this section.
:::

**To configure the Databricks Unity Catalog Volume:**

1. From the *Add Cloud Sync Job&#x20;*&#x64;ialog box, enter the following details:
   - **Name:&#x20;**&#x45;nter a friendly user defined **name**.
   - **Workspace URL:&#x20;**&#x45;nter the **URL&#x20;**&#x6F;f your Databricks workspace.&#x20;
     See [Get identifiers for workspace objects | Databricks on AWS](https://docs.databricks.com/en/workspace/workspace-details.html#workspace-url) for more details.
   - **Access Token:&#x20;**&#x43;opy and paste the **access token&#x20;**&#x66;rom your Databricks account.&#x20;
     See [Databricks SQL Driver for Go | Databricks on AWS](https://docs.databricks.com/en/dev-tools/go-sql-driver.html#databricks-personal-access-token-authentication) for more details.
   - **Source:&#x20;**&#x45;nter the source path from where the files will be copied.&#x20;
   - **Destination:** Enter the path of the remote destination. For this scenario, it is the path for your unity catalog volume on *Databricks&#x20;*&#x77;hich must be created prior to setting your Litmus Edge.&#x20;
     See [Create and work with volumes | Databricks on AWS](https://docs.databricks.com/en/connect/unity-catalog/volumes.html#create-and-work-with-volumes) for more details.
   - **Transfer mode:&#x20;**&#x53;elect **Copy&#x20;**&#x74;o ensure files are copied from the source to the destination.
     ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Bh8R4rsLgE7mzWIZYbm_Z_image.png "Databricks workspace environment")
2. Click **Save**.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JtHnHINPrpx1TdLZHCpph_image.png "Add Cloud Sync Job dialog box")

# Step 5: Enable the Cloud Storage Sync

Click the toggle button to **enable&#x20;**&#x74;he storage sync job and start transferring files from the source to the destination.

Once a successful connection is established, the status changes to *connected* from *transferring*.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/P-A61PoykVABPhwbBdmiC_image.png "Cloud Storage Sync pane")

# Step 6: Confirm Transfer Completion&#x20;

**To verify the files in the Databricks Unity Catalog Volume:**

1. Go to you&#x72;**&#x20;Databricks Unity Catalog Volume&#x20;**&#x77;orkspac&#x65;**.**&#x20;
2. Refresh the page to see the newly uploaded files.&#x20;
3. Confirm that the *test.csv&#x20;*&#x68;as been uploaded successfully.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/TPwwA_E9dtHrC6qUziPKa_image.png "Databricks Unity Catalog Volume")

# Example Notebook&#x20;

This notebook will use the data transferred to the *Databricks&#x20;*&#x55;nity Catalog Volume. Follow these steps to create and run a *Delta Live Tables (DLT)* pipeline:

1\. Import the necessary libraries and dependencies.&#x20;

```python
from pyspark.sql.functions import col, current_timestamp
import dlt
```

2\. Define the file path, table name, and DLT configuration variables.&#x20;
See [Create a Delta Live Tables materialized view](https://docs.databricks.com/en/delta-live-tables/python-ref.html#create-a-delta-live-tables-materialized-view-or-streaming-table) for more details.&#x20;

```python
# Define variables used in code below
file_path = "<VOLUME_PATH>"
table_name = "<TABLE_NAME>"
checkpoint_path = "<CHECK_POINT_PATH>"

@dlt.table(table_properties={"<key>" : "<value>", "<key>" : "<value>"})
def <DLT_NAME>():
  return (
     spark.readStream.format('cloudFiles')
     .option('cloudFiles.format', '<file-format>')
     .load(f'{file_path}')
 )
```

3\. After defining the variables, create and publish a pipeline. See [Create and publish a pipeline](https://docs.databricks.com/en/ingestion/onboard-data.html#step-4-create-and-publish-a-pipeline) guide for detailed steps.&#x20;

4\. Schedule the pipeline to run at desired intervals. See [Schedule the pipeline](https://docs.databricks.com/en/ingestion/onboard-data.html#step-5-schedule-the-pipeline) guide for detailed steps.&#x20;

**5.&#x20;**&#x4D;onitor the pipeline to ensure data is being processed as expected. You can query the table created in the Unity Catalog Volume to confirm that the data is correctly ingested.

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ls8hdD-XKcg5HrEHOzq6K_image.png "Dataframe table")


[title] Litmus Edge 3.2.3
[path] Product Updates/2022/

Release Date: March 7 2022

## New Features

| Description                                                                                                      |
| ---------------------------------------------------------------------------------------------------------------- |
| **System**:<br />* Improved layout of the License page                                                           |
| **Flows Manager**:<br />* The “Warning” status is shown when Flows Manager reaches the maximum restart threshold |
| **SSD Kernel Driver**:<br />* Support added for ATA controller driver                                            |

## Enhancements and Improvements

| Description                                                                                   |
| --------------------------------------------------------------------------------------------- |
| **DeviceHub Driver**:<br />* Support legacy models with Siemens S7-200 Ethernet (Gen1) driver |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - &#xD;AB CompactLogix Ethernet FreeTag Gen2 driver works only with the CPU slot 1&#xD;
- The Value Type field is empty in the Edit Tag dialog box&#xD;
- A 404 error message appears when the user deletes a tag with the Status column shown&#xD;
- The "too many open files" error appears in the Flows Manager module&#xD;
- Flows Manager shows the “Running” status when the restarts reached the limit of 5 concurrent flows&#xD;
- Countdown is not shown on device reboot after SW upgrade&#xD;
- Fixed issues with OPCUA Client Gen2 driver(polling) tag’s description&#xD;
- Fixed Gen2 driver payload for encoding or escape chars&#xD;
- Fixed issues with ADD totalflow driver not connecting without tag addition&#xD;
- Fixed issue with Analytics API token with group lock |

## Known Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Dashboard**<br />* Some metrics shown on the Dashboard do not match the values retrieved through an API                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **DeviceHub:&#x20;**<br />* The OPC UA client does not connect to the server with the Basic256Sha256-SE security policy                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Flows Manager**:<br />* Access node in Flows does not show drop down of topic before deployment
* Some of the drop-down lists are not filled with the correct values until after the first deployment                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Analytics**:<br />* The OPC UA client does not connect to the server with the Basic256Sha256-SE security policy<br />**Workaround**: Empty group gets removed with a service restart/system reboot<br />* Processors that are manually moved to the right on the canvas erroneously re-align to the left
* TensorFlow processors don't appear on the list of available processors because TensorFlow plugins fail to load                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **Applications**:<br />* Changing Catalog application state to Resume causes launch error
* Users cannot edit the `AWS_ECR` container registry due to missing credentials; the workaround is to enter the credentials every time when editing the form
* The "delete app" and "restart app" events are not always shown on the list of events
* The marketplace catalog is not included in the template if the applications belonging to that catalog are not selected when creating the template
* A registry can be removed without asking the user for an explicit confirmation
* Applications appear on the Overview pane even after their container and image had been removed; cannot be removed manually
* Docker doesn't restore the WG lemwg0 interface after a container is restarted                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Integration**:<br />* The Developer user cannot manage integration connectors
* The MySQL connector supports only the Litmus' own data format
* The MySQL description endpoint doesn't return the mapping description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **System**:<br />* The comma character (`,`) is not supported in CIFS passwords
* The countdown dialog does not appear at the end of the software update
* Litmus Edge activation fails if the edge device is shut down before the activation request is approved in Litmus Edge Manager
* Expired licenses use more than 35% of the CPU
* The API calls `Post /auth/v2/providers/config/test` with the Advanced Directory configuration result in `Server Error 500`
* The message shown when a template deployment fails does not tell the user which components had failed
* If the device name is the same as the one that appears in the template, the template upload fails for the devices with the same configuration; the workaround is to edit the device names in the template file
* An incorrect error message is shown when an external storage mount cannot be found
* There is a discrepancy between the memory usage values shown on the **Dashboard** and on the **System** > **Info** pane
* Software update from 3.0.1.0 dissolves all groups defined in the **Analytics** module
* InfluxDB initialization for large databases is unstable (slow, with high CPU consumption)
* Software upgrade is not supported on VirtualBox 6.1.x; upgrade attempt may result in a corrupted, unrecoverable appliance |
| **Web UI**: <br />* The UI layout gets misaligned with certain combinations of screen sizes and resolutions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **API:**<br />*  The gRPC API `RequestFirmwareUpdate` doesn't retry after the connection is reset                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |


[title] Litmus Edge 3.3.1
[path] Product Updates/2022/

Release Date: December 13, 2022

## New Features

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* Support is now provided for the following drivers:
  - BACnet BacnetIP
  - Danfoss FC/TSC
  - Emerson DNP3 Ethernet&#x20;
  - Emerson ROC800 Ethernet
  - IEC IEC60870-5-102 Ethernet (Gen1)
  - ODVA CIP Explicit (Gen1)
  - OPC UA Client Advanced
  - Profinet Acyclic
* When you add a tag to a device, you can now enable the option to **Only Publish on Change of Value**. This option customizes NATS messages to be published only when the *value&#x20;*&#x70;arameter changes from a previous value to a new one. This only applies to numerical/string data values such as int, real, and float. It does not apply to JSON or arrays. Poll-once topics will not be affected by **Change of Value** settings. These topics will still only see a single message.&#x20; |
| **Digital Twins**:<br />* The Digital Twins feature is a virtual representation of industrial assets. It can combine physical asset data from different sources, so that you can use it for monitoring and maintenance activities such as insights, alerts, and feedback loop.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Tokens**:<br />* You can now set up a NATS Proxy connection, which allows data to be transferred between multiple Litmus Edge instances. You can also set up a connection between a Litmus Edge instance and an external developer application.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **System**:<br />* Role-based access control (RBAC) now allows you to customize roles, groups, and users for user management. You can customize individual modify/view permissions in Litmus Edge to roles and groups, which will then be assigned to respective users.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ******DeviceHub**: <br />* When you add a tag to a device, you now have the option of adding meta data to the individual tag. Meta data summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. It can then be used to find, use, and reuse particular instances of data. &#x20;
* The **Tag Formula** parameter is now available for tags. Two variables are permitted: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power
  - log
  - exp |
| **Applications**:<br />*  The following enhancements/improvements have been made in Litmus Edge Manager to the Marketplace feature:
  - Ability to copy/paste and edit original compose files. You can also convert compose files into advanced config after publishing.&#x20;
  - Ability to specify the network mode (none, host, bridge) for a specific Marketplace component and launch it.&#x20;
  - Ability to create components using an advanced workflow. You can set separate hosts, networks, and container configurations.&#x20;                                                                                                        |
| **Integration**<br />* The MQTT connector now has an option for **Persistent storage**.&#x20;
* The MQTT connector now has option to define the **QoS&#x20;**&#x70;arameter at the topic level.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                               |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ******DeviceHub****:**<br />* The Mitsubishi QJ71E71 driver no longer shows `CONNECTED` when an incorrect Station ID parameter is entered. The status will now correctly show `DISCONNECTED` if the Station ID parameter is incorrect.&#x20;
* The **M&#x20;**&#x72;egister in tags now displays all supported data types.&#x20;
* The Generator driver now displays messages for Poll-Once topics in tags if a special character is used in the tag name.&#x20;
* When you add a tag to the Siemens S7 driver, you can now configure a DB number greater than 255, up to a maximum of 65,535. &#x20; |
| ******Flows Manager**:<br />* Fixed issue with flows not opening in a new window when you remotely access Litmus Edge from Litmus Edge Manager.                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ******Integration**:<br />* Several issues and improvements have been made to the MQTT connector.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ******System**:<br />* System events now correctly tag the driver name and device name.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

## Deprecated Components and Features

| Description                                                                                                                                                                                                                                                                                                                                     |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ******DeviceHub**:<br />* The following Gen 2 drivers are no longer offered:
  - Mitsubishi FX3G-Binary Ethernet
  - Mitsubishi Q-Ascii
  - Mitsubishi Q-Binary
  - Panasonic Mewtocol Ethernet
  - Siemens S7-200 Ethernet
  - Siemens S7Sinumerik Ethernet
* Internet Protocol for Smart Objects (IPSO) features are no longer offered.&#x20; |
| **Integration**:<br />* The Access connector and Google IoT Core connector are no longer offered.&#x20;                                                                                                                                                                                                                                         |
| **Applications**:<br />* Graphs from Marketplace Apps are no longer offered.&#x20;                                                                                                                                                                                                                                                              |

## Known Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* When you toggle a network to **ON&#x20;**&#x69;n Device Discovery, the WiFi icon may not display.&#x20;
* When you add a tag to the Siemens S7 driver, you aren't allowed to configure a DB number greater than 255. The maximum number should be 65,535. &#x20;                                                                                                                                                                                                                                                                                                                                    |
| **System**:<br />* When the following tasks fail, error messages don't provide enough information to troubleshoot the issues.&#x20;
  - Template deployments
  - Remote access
  - Apply Marketplace templates&#x20;
* Software upgrade is not supported on VirtualBox 6.1.x; upgrade attempt may result in a corrupted, unrecoverable appliance.
* If the device name is the same as the one that appears in the template, the template upload fails for the devices with the same configuration.&#x20;
  - **Workaround:** Edit the device name in the template file, so that it doesn't match the one in the template. |
| **Datahub**:<br />* The UI incorrectly reflects the time series database size.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |


[title] InfluxDB v2.x TCP Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and an InfluxDB database (version 2.x).&#x20;

:::hint{type="info"}
**Note**: The following data types and formats are not viewable in InfluxDB:

- string
- char
- JSON payloads
:::

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/MFB4HiusggI?si=YblRnSpArI40qwOj&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

In this guide you will deploy InfluxDB from the same computer (Windows-based) running Litmus Edge and then use the DB - InfluxDB v2.x TCP connector to connect locally Litmus Edge and the database.&#x20;

# Before You Begin

You will need to set up your computer so that it can run Docker commands.&#x20;

# Step 1: Set up InfluxDB

You will first need to pull an InfluxDB image file and then run it on your computer.&#x20;

**To set up InfluxDB:**

1. On your computer, open the command prompt window.&#x20;
2. Run the following command.&#x20;
   `docker run --name influxdb -p 8086:8086 influxdb:2.0.9`
   The command will create the InfluxDB container with the name "influxdb", on port 8086, and install InfluxDB version 2.0.9. If you are using a different version of InfluxDB, update the version number.&#x20;
3. Once the pulling and running of InfluxDB is complete, open a browser window and enter http\://localhost:8086 in the address window.&#x20;
   The setup screen for InfluxDB displays.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-AE-DmvxDBy5oTN-pgRrK_influxdbinitial-user.png "InfluxDB initial setup screen")
4. Configure the details for the initial user. You will need to refer to these values when setting up the connector in Litmus Edge.&#x20;
   - **Username**
   - **Password**
   - **Initial Organization Name**
   - **Initial Bucket Name**
5. Click **Continue**.&#x20;
6. Continue setting up the database as needed.&#x20;
7. Return to the homepage of InfluxDB.&#x20;
8. Navigate to **Data&#x20;**> **Tokens**. Then, click the token name already created.&#x20;
   Details for the token display.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Q5Fk7tvFfH8I6AO9-FY8k_tokens.png "The Tokens page")
9. Click **Copy to Clipboard** and store the token somewhere securely. You will refer to this when setting up the connector in Litmus Edge.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/W_Y_npKkQcRaTnMKokMR4_copytoken.png "Token details")

Now that InfluxDB is configured to your specific requirements and you've collected the parameters needed to set up the connection, you can complete the setup in Litmus Edge.&#x20;

# Step 2: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 3: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 4: Add the InfluxDB v2.x TCP Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - InfluxDB v2.x TCP&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **InfluxDB address**: Enter **http\://localhost:8086**.&#x20;
- **InfluxDB bucket name**: Enter the bucket name configured in the InfluxDB setup in Step 1.&#x20;
- **Organization**: Enter the organization name configured in the InfluxDB setup in Step 1.&#x20;
- **Auth token**: Paste the token copied in Step 1.&#x20;
- **Username**: Enter the username configured in the InfluxDB setup in Step 1.&#x20;
- **Password**: Enter the password configured in the InfluxDB setup in Step 1.&#x20;
- **Insert batch size**: Enter the number of messages to be collected as a batch before inserting into the database.
- **Insert batch commit time**: The batch commit time in seconds.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 5: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/DPdTPF9a3fmTCchXdkpR1_influxdb2tcp.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 6: Create Topics for Connector

You will now need to import the tags you added in Step 3 to the connector as topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 7: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

# Step 8: Verify Connection

Return to the InfluxDB browser window and explore the metrics to ensure that data is being successfully sent from Litmus Edge to InfluxDB.&#x20;


[title] Litmus Edge 3.5.4
[path] Product Updates/2023/

Release Date: May 30, 2023

## Resolved Issues

| Description                                                                                               |
| --------------------------------------------------------------------------------------------------------- |
| **System:**<br />* Fixed login issues with the Terminal User Interface after changing the password.&#x20; |

## Known Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Terminal User Interface (TUI)**:<br />* A user with the “Viewer” permission is able to access the Terminal User Interface and access all options.
* No error message displays if a user leaves the username or password field blank and clicks **Apply**.
* You may be kicked out of the TUI screen unexpectedly.
* You can’t add add a site license or add-on license through the TUI.
* You can’t successfully use the activation and deactivation function in the TUI.
* When the initial reboot sequence starts, you may be able to access the main menu and make changes before the reboot initialization finishes and the reboot occurs.
* Some fields, such as Cloud Activation URL and Docker Subnet, accept blank entries before submitting.
* When attempting Cloud Activation, there is no option to cancel the request or wait for a timeout.
* The Managed Services section may not display any options.
* If an admin user cancels the end-user license agreement (EULA) and logs in again to the TUI, they are still able to access all TUI options and make changes.
* When using VirtualBox, a "Login incorrect" message may display on the Terminal User Interface during startup.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **System**:<br />* You may not be able to add a Mount Point successfully in **System** > **External Storage**.&#x20;
* The **Up** and **Down&#x20;**&#x6F;ptions may not work in **System&#x20;**> **LDAP/AD Auth**.&#x20;
* When activating Litmus Edge from Litmus Edge Manager with a node-locked license, the activation may complete successfully but an error message may display and the license may not migrate successfully.&#x20;
* Litmus Edge Manager should not be able to apply templates to Litmus Edge devices activated with a trial license.&#x20;
* When you try to upgrade with an invalid license key, no error message displays.&#x20;
* After activating Litmus Edge with Litmus Edge Manager, you may have to manually refresh the browser window to see the activated license.&#x20;
* The Docker version of Litmus Edge may not list events for DeviceHub, Connectors, and Flows.&#x20;
* The same license activated on different servers may display a different expiry date on each server.&#x20;
* A new XML file is created every time the OPC UA hierarchy is updated.&#x20;
* Large template files may not be restored successfully.&#x20;
* When uploading a template, the error message "License sync exceeded" may incorrectly display.&#x20;
* Errors may occur when trying to generate support bundles.&#x20;
* When you click **Reset Policy** in **System&#x20;**> **Policy Management**, any values entered should reset.&#x20;
* Basic authorization for an API Key created in **System&#x20;**> **Tokens&#x20;**&#x6D;ay not work for the Docker version of Litmus Edge.&#x20;
* When using VirtualBox, a "Login incorrect" message may display on the Terminal User Interface during startup.<br />&#xD;                          |
| **DeviceHub**:<br />* Search doesn’t work when the DriverName parameter is used.&#x20;
* You can’t update the retention hours of a DeviceHub device with a value of 0.&#x20;
* Multiple meta data values are able to be added while only the first one is saved.&#x20;
* When more than 11 DeviceHub devices are added, some of the devices may get stuck in “Polling” status.&#x20;
* If **Only Publish on Change of Value** is selected for a tag, you subscribe to the poll-once topic of the tag in the Flows Manager, and use the inject node, only the first value will display in the debug window. Subsequent values won’t display because the Only Publish on Change of Value selection won't allow the same values to be published.
* Tag values aren’t saved in downloaded CSV files for tags that generate JSON objects.&#x20;
* Downloaded logs may contain invalid characters.&#x20;
* CAN devices may not get detected on HPE EL300.&#x20;
* If you stop DeviceHub devices and reboot Litmus Edge, the devices may re-connect.&#x20;
* Arrays for Gen 2 drivers are not published correctly.&#x20;
* Adding an LZ register for the Mitsubishi FX5U Ethernet (Gen1) driver may cause errors.&#x20;
* The endianness sequence for the AB PLC5 Ethernet (Gen1) driver is incorrect.&#x20;
* The AB CompactLogix Ethernet FreeTag (Gen2) driver contains a spare word in write requests.&#x20;
* When using Browse Tags for the OPC UA Client Advanced driver, the **Select all** function may not work.&#x20;
* When the Siemens S7-Advanced (Gen1) driver is disconnected, the memory of the process increases over time until it is stopped by oom\_killer.&#x20;
* The OPC UA Client Advanced driver may not be able to connect to some OPC UA servers. &#xD; |
| **Applications**:<br />* When you run a Docker command in **Applications&#x20;**> **Containers**, an error message may display even though the application is created.&#x20;
* After installing several Marketplace applications and then trying to download the template, an error may occur.&#x20;
* When running the InfluxDB application, the application may fail with no error message on the cause of the failure.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **Integration**:<br />* If you add an inbound or outbound topic to the Google Pub/Sub connector without an SA key, the connector fails.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **Analytics**:<br />* If you add flows to the Analytics canvas, add the Database Batch Input processor, connect an external DataHub database in DataHub, and then refresh the page, an error may occur.&#x20;
* The formatting of the Tengo Script processor dialog should be indented correctly.&#x20;
* The **Export** option on the Analytics canvas may not work successfully.&#x20;
* An error may persist for the Change of Value node even after resetting Litmus Edge.&#x20;
* An error message may display after connecting a Statistical Prediction node to a Moving Average node.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Flows Manager**:<br />* The Flows Manager should only store two rotated copies of logs and clean the rest.&#x20;
* New flows may not be displayed unless Litmus Edge is rebooted.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Digital Twins**:<br />* Creating custom topics for instances through API should not be allowed.&#x20;
* The order of model hierarchies may not save properly.&#x20;
* Write and Poll-once topics should not be listed as options for dynamic attributes.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **UI**:<br />* The support chat text may be misaligned.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |




[title] Microsoft SQL Server SSL Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and a Microsoft SQL Server database using SSL authentication.&#x20;

# Before You Begin

You will need the following:

- Access to a Microsoft SQL Server database that uses SSL authentication.&#x20;
- The CA Certificate associated with the database.&#x20;

Refer to the following links to learn more:

- [Microsoft SQL Server - Ubuntu based images](https://hub.docker.com/_/microsoft-mssql-server)
- [sqlcmd Utility](https://learn.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15)
- [Deploy and connect to SQL Server Docker containers](https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-docker-container-deployment?view=sql-server-ver15\&pivots=cs1-bash)
- [Certificate requirements for SQL Server](https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/certificate-requirements?view=sql-server-ver16)
- [Configure SQL Server Database Engine for encrypting connections](https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/configure-sql-server-encryption?view=sql-server-ver16)

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add the Microsoft SQL Server SSL Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - Microsoft SQL Server SSL&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Enter the IP address to access the database. &#x20;
- **Port**: The port to access the database. The default value is **1433**.&#x20;
- **SSL Mode**: Select the SSL mode: **disable**, **true**, or **false**.&#x20;
- **CA Certificate**: Paste the CA certificate. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Username**: Enter the username to access the database.&#x20;
- **Password**: Enter the password associated with the username.&#x20;
- **Database**: Enter the database name.&#x20;
- **Table**: Enter the table that will be receiving the data. If you are sending data to an existing table, use the corresponding name.&#x20;
- **Show Mapping**: If you want to send data to a custom table, select this check box and unselect *Create table*. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more. To add key/value pairs for the custom table, see [Configure Key/Value Pairs](docId\:Yj_sKBPP9J_TH3_qvC1Tm).&#x20;
- **Create table**: If you want to send data to an existing table in the default format, or you want to create a new table in the default format, select this check box and unselect *Show Mapping*. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.&#x20;
- **Commit timeout**: Enter the transaction commit timeout in (ms).
- **Max transaction size**: Enter the maximum number of messages before a transaction is committed, regardless of timeout parameter.&#x20;
- **Bulk insert count**: (Available for Litmus Edge version 3.11.1 and later) To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 4: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/5QW7Ca4yxLS_s1Hj4Wwep_mssqlssl.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 5: Create Topics for Connector

You will now need to import the tags created in Step 2 as topics for the Microsoft connector. The topics will be created as outbound topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 6: Enable Topics

To enable the topics, return to the *Topics* tab and click the **Enable all topics** icon.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Iq7BWYqGWueu4US73iBl3_image.png" size="80" width="1220" height="330" caption="Enable all topics icon" position="center" showCaption="true"}

# Step 7: Create Flow

You can now create a flow in Litmus Edge to verify the connection.&#x20;

**To create the flow:&#x20;**

1. In Litmus Edge, navigate to **Flows Manager**.&#x20;
2. Click the **Go To Flow Definition** icon for a selected **Flows Manager**.&#x20;
   Th&#x65;*&#x20;Flow canvas&#x20;*&#x6F;pens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6PlxhptXn4xZ_4ZdrIAuf_gotoflowdefinition.png" size="80" width="944" height="366" caption="Go To Flow Definition icon" position="center" showCaption="true"}
3. From the node palette, drag the **DataHub Subscribe** node (DataConnector section) to the canvas.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/j2Sz7jq3aibQ0V56l3Cy8_datahubsubscribenode.png" size="80" width="1055" height="690" caption="DataHub Subscribe node" position="center" showCaption="true"}
4. Drag the **Debug&#xA0;**&#x6E;ode to the canvas and connect the two nodes.
5. Double click the **DataHub Subscribe** node.&#x20;
   The *Edit DataHub Subscribe Node&#x20;*&#x64;ialog box appears.
6. In the **Topic&#x20;**&#x66;ield, paste the topic name copied in Step 5.
7. Enter `tag imported to mssql db` in the **Name&#xA0;**&#x66;ield.
8. If needed, configure the *Datahub Subscribe* connection. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
9. Click **Done**.&#x20;
10. Click **Deploy**.&#x20;
11. Expan&#x64;**&#xA0;**&#x74;he message window beneath the flow and click the **Debug&#xA0;**&#x69;con. Verify that messages are displaying.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gPJk6NsW3loIyEUdOJWuM_debugicon.png" size="80" width="885" height="365" caption="Debug node messages" position="center" showCaption="true"}

# Step 9: Make Microsoft SQL Queries

You can now verify that you can view data in the Microsoft SQL (MSSQL) database.&#x20;

Update credentials, the database name, and the table as needed for your specific configurations

**To make Microsoft SQL queries:**

1. From the MSSQL terminal window, enter `/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P <sa password>`**&#xA0;**, and then press **ENTER**.
2. Enter `select DB_NAME (),` and then press **ENTER**.
3. Enter `go`, and then press **ENTER**.
   The master database name appears.
4. Enter `select name from sys.databases`, and then press ENTER.
5. Enter `go`, and then press **ENTER**.
   All database names appear.
6. Enter `use master`, and then press **ENTER**
7. Enter `go`, and then press **ENTER**.****
   Changed database context to *master&#x20;*&#x61;ppears.
8. Enter `select * from information_schema.tables;` and press **ENTER**.
9. Enter `go`, and then press **ENTER**.
   The *Table Catalog* for the master database appears.
10. Enter `select * from test_table` (or the table name you configured in Step 4), and then press **ENTER**.
11. Enter `go`, and then press **ENTER**.
    If you selected *Create table* in Step 3, identification messages from the topic appear, including the *deviceId&#x20;*&#x61;nd *registerId&#x20;*&#x61;t the end of each message.
    If you selected *Show Mapping* in Step 3, the custom mapping you configured appears.&#x20;


[title] Install the Mosquitto MQTT Broker on Ubuntu
[path] How-To-Guides/Integration Guides/

Review the following guide for installing the Mosquitto MQTT broker on Ubuntu. Once installed, you can connect to the following connectors in Litmus Edge:

- MQTT - Generic TCP&#x20;
- MQTT - Generic over SSL.&#x20;

# Before You Begin

Make sure you do the following:

- Verify the Ubuntu OS is 19.10.
- Use a Virtual Machine on VirtualBox 6.0 to install Ubuntu.
- Verify that the Virtual Machine has two configured network adapters that are set as follows:
  - Adapter 1 is set to Bridged Adapter
  - Adapter 2 is set to NAT

# Step 1: Install Net Tools

**To install net tools:**

1. From a command prompt, enter **sudo apt install net-tools**, and press **ENTER**.
2. If asked to provide your password, enter the password and press **ENTER**.
3. Enter **ifconfig&#x20;**&#x61;nd press **ENTER**.&#x20;
   For this use case, the IP needed is for the Bridged Adapter (enp0s3). It is 192.168.1.11.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/RVl-v-2RvP4W7HM5Ana0g_ifconfig.png" size="80" width="933" height="499" caption="ifconfig command" position="center" showCaption="true"}

# Step 2: Install MQTT Broker

**To install the MQTT broker:**

1. From a command prompt, ente&#x72;**&#xA0;sudo apt-get update** and press **ENTER**.
2. If asked to provide your password, enter the password and press **ENTER**.
3. Enter **sudo apt-get install mosquitto** and press **ENTER**.
4. Enter **Y** and press **ENTER&#xA0;**&#x74;o continue.
   The MQTT broker is installed.

# Step 3: Install MQTT Client

You can install the MQTT client to test the MQTT broker configuration.

**To install the MQTT client:**

1. Enter **sudo apt-get install mosquitto-clients** and press **ENTER**.
2. Enter **Y** and press **ENTER&#xA0;**&#x74;o continue.
   The MQTT client is installed.

# Step 4: Test Initial Installation

You can verify that the MQTT broker and client are correctly installed.

**To test the initial installation:**

1. Enter **mosquitto\_sub -t "test"** and press **ENTER**.
2. Right-click the **Terminal&#xA0;**&#x69;con and select **New Window&#xA0;**&#x74;o open a second terminal window.
3. Select the second terminal window.
4. Enter **mosquitto\_pub -m "message from mosquitto\_pub client" -t "test"** and press **ENTER**.
5. Select the first terminal window to view the message sent from the second terminal window.
   You should see: `message from mosquitto_pub client`
6. Press **Ctrl+C** to exit the first terminal window.

# Step 5: Set Up Username and Password

**To set up a username and password:**

1. Enter **sudo mosquitto\_passwd -c /etc/mosquitto/passwd \<username>** and press **ENTER**.
   For example: **sudo mosquitto\_passwd -c /etc/mosquitto/passwd JohnSmith**
2. Enter a password for the username at the prompt and press **ENTER**.
3. Re-enter the password and press **ENTER**.
4. Enter **sudo nano /etc/mosquitto/conf.d/default.conf** and press **ENTER** to edit the *default.conf* file.
   The default.conf file opens in the nano editor. You can enforce refusal of connections from anonymous users and provide the path of the file holding all users and passwords from this file.
5. Copy or enter the following two lines into the file.
   `allow_anonymous false   `
   `password_file /etc/mosquitto/passwd`
6. Press **Ctrl+O&#xA0;**&#x74;o save the changes.
7. Verify the file name.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JdxgfopQmykax_2WwU6b__verify-mosquitto-filename.png" size="80" width="666" height="67" caption="Mosquitto broker file name" position="center" showCaption="true"}
8. Press **ENTER**.
   The changes are verified.&#x20;
9. Press **Ctrl+X&#xA0;**&#x74;o exit the nano editor.
10. From the terminal window, enter **sudo ufw allow 1883** and press **ENTER**.
    The rule is applied. This rule ensures that the firewall allows connections on port 1883. This is the default port for the Mosquitto MQTT broker and is used for a connection using the username and password.
11. Enter **sudo systemctl restart mosquitto** and press **ENTER**.
    Mosquitto restarts so the new configuration and rule can be used.

# Step 6: Test Username and Password Requirements

**To test the username and password requirements:**

1. Enter **mosquitto\_sub -t "test" -u "\<username>" -P "\<userpassword>"** and press **ENTER**.
   For example: `mosquitto_sub -t "test" -u "JohnSmith" -P "XYZcorp@1"`
2. Open a second terminal window if you have closed it and select it.
3. Enter **mosquitto\_pub -t "test" -m "message from mosquitto\_pub client"** and press **ENTER&#xA0;**&#x74;o try to connect a publisher without using the correct username and password.
   The connection is refused. You should see: `connection error: Connection Refused: not authorized`.
4. Enter **mosquitto \_pub -t "test" -m "message from mosquitto\_pub client" -u "\<username>" -P "\<password>"** and press **ENTER&#xA0;**&#x74;o connect using the correct username and password.
5. Select the first terminal window.
   View the message: *message from mosquitto\_pub client***&#xA0;**&#x69;n the first Terminal window.
6. Press **Ctrl+C** to exit the subscription stage in the first Terminal window.

# Step 7: Enable SSL/TSL

You can create certificates and keys in the Ubuntu system home directory.

:::hint{type="info"}
**Important**: If you decide not to use the bash file for the following task and instead use either the commands individually or follow other guides available, you must use the FQDN (Fully qualified domain name) for the CN (Common Name). Never use the IP address.&#x20;
:::

Refer to the following content for step 2.&#x20;

```none
#!/usr/bin/env bash
#(@)generate-CA.sh - Create CA key-pair and server key-pair 
signed by CA

# Copyright (c) 2013-2016 Jan-Piet Mens <jpmens()gmail.com>
# All rights reserved.
# 
# Redistribution and use in source and binary forms, with 
or without
# modification, are permitted provided that the following 
conditions are met:
# 
# 1. Redistributions of source code must retain the above 
copyright notice,
#    this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the 
above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the 
distribution.
# 3. Neither the name of mosquitto nor the names of its
#    contributors may be used to endorse or promote 
products derived from
#    this software without specific prior written permission.
# 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 
IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

#
# Usage:
#	./generate-CA.sh		
creates ca.crt and server.{key,crt}
#	./generate-CA.sh hostname	
creates hostname.{key,crt}
#	./generate-CA.sh client email	
creates email.{key,crt}
#
# Set the following optional environment variables before 
invocation
# to add the specified IP addresses and/or hostnames to the 
subjAltName list
# These contain white-space-separated values
#
#	IPLIST="172.13.14.15 192.168.1.1"
#	HOSTLIST="a.example.com b.example.com"

set -e

export LANG=C

kind=server

if [ $# -ne 2 ]; then
	kind=server
	host=$(hostname -f)
	if [ -n "$1" ]; then
		host="$1"
	fi
else
	kind=client
	CLIENT="$2"
fi

[ -z "$USER" ] && USER=root

DIR=${TARGET:='.'}
# A space-separated list of alternate hostnames (subjAltName)
# may be empty ""
ALTHOSTNAMES=${HOSTLIST}
ALTADDRESSES=${IPLIST}
CA_ORG='/O=OwnTracks.org/OU=generate-CA/emailAddress=nobody@example.net'
CA_DN="/CN=An MQTT broker${CA_ORG}"
CACERT=${DIR}/ca
SERVER="${DIR}/${host}"
SERVER_DN="/CN=${host}$CA_ORG"
keybits=2048
openssl=$(which openssl)
MOSQUITTOUSER=${MOSQUITTOUSER:=$USER}

# Signature Algorithm. To find out which are supported by 
your
# version of OpenSSL, run `openssl dgst -help` and set your
# signature algorithm here. For example:
#
#	defaultmd="-sha256"
#
defaultmd="-sha512"

function maxdays() {
	nowyear=$(date +%Y)
	years=$(expr 2032 - $nowyear)
	days=$(expr $years '*' 365)

	echo $days
}

function getipaddresses() {
	/sbin/ifconfig |
		grep -v tunnel |
		sed -En '/inet6? /p' |
		sed -Ee 's/inet6? (addr:)?//' |
		awk '{print $1;}' |
		sed -e 's/[%/].*//' |
		egrep -v '(::1|127\.0\.0\.1)'	
# omit loopback to add it later
}


function addresslist() {

	ALIST=""
	for a in $(getipaddresses); do
		ALIST="${ALIST}IP:$a,"
	done
	ALIST="${ALIST}IP:127.0.0.1,IP:::1,"

	for ip in $(echo ${ALTADDRESSES}); do
		ALIST="${ALIST}IP:${ip},"
	done
	for h in $(echo ${ALTHOSTNAMES}); do
		ALIST="${ALIST}DNS:$h,"
	done
	ALIST="${ALIST}DNS:localhost"
	echo $ALIST

}

days=$(maxdays)

if [ -n "$CAKILLFILES" ]; then
	rm -f $CACERT.??? $SERVER.??? $CACERT.srl
fi

if [ ! -f $CACERT.crt ]; then

	#    ____    _    
	#   / ___|  / \   
	#  | |     / _ \  
	#  | |___ / ___ \ 
	#   \____/_/   \_\
	#                 

	# Create un-encrypted (!) key
	$openssl req -newkey rsa:${keybits} -x509 -nodes 
$defaultmd -days $days -extensions v3_ca -keyout 
$CACERT.key -out $CACERT.crt -subj "${CA_DN}"
	echo "Created CA certificate in $CACERT.crt"
	$openssl x509 -in $CACERT.crt -nameopt multiline 
-subject -noout

	chmod 400 $CACERT.key
	chmod 444 $CACERT.crt
	chown $MOSQUITTOUSER $CACERT.*
	echo "Warning: the CA key is not encrypted; store it 
safely!"
fi


if [ $kind == 'server' ]; then

	#   ____                           
	#  / ___|  ___ _ ____   _____ _ __ 
	#  \___ \ / _ \ '__\ \ / / _ \ '__|
	#   ___) |  __/ |   \ V /  __/ |   
	#  |____/ \___|_|    \_/ \___|_|   
	#                                  

	if [ ! -f $SERVER.key ]; then
		echo "--- Creating server key and signing 
request"
		$openssl genrsa -out $SERVER.key $keybits
		$openssl req -new $defaultmd \
			-out $SERVER.csr \
			-key $SERVER.key \
			-subj "${SERVER_DN}"
		chmod 400 $SERVER.key
		chown $MOSQUITTOUSER $SERVER.key
	fi

	if [ -f $SERVER.csr -a ! -f $SERVER.crt ]; then

		# There's no way to pass subjAltName on the 
CLI so
		# create a cnf file and use that.

		CNF=`mktemp /tmp/cacnf.XXXXXXXX` || 
{ echo "$0: can't create temp file" >&2; exit 1; }
		sed -e 's/^.*%%% //' > $CNF <<\!ENDconfig
		%%% [ JPMextensions ]
		%%% basicConstraints        
= critical,CA:false
		%%% nsCertType              
= server
		%%% keyUsage                
= nonRepudiation, digitalSignature, keyEncipherment
		%%% nsComment               
= "Broker Certificate"
		%%% subjectKeyIdentifier    
= hash
		%%% authorityKeyIdentifier  
= keyid,issuer:always
		%%% subjectAltName          
= $ENV::SUBJALTNAME
		%%% # issuerAltName           
= issuer:copy
		%%% ## nsCaRevocationUrl       
= http://mqttitude.org/carev/
		%%% ## nsRevocationUrl         
= http://mqttitude.org/carev/
		%%% certificatePolicies     
= ia5org,@polsection
		%%% 
		%%% [polsection]
		%%% policyIdentifier	    
= 1.3.5.8
		%%% CPS.1		    
= "http://localhost"
		%%% userNotice.1	    
= @notice
		%%% 
		%%% [notice]
		%%% explicitText            
= "This CA is for a local MQTT broker installation only"
		%%% organization            
= "OwnTracks"
		%%% noticeNumbers           
= 1
!ENDconfig

		SUBJALTNAME="$(addresslist)"
		export SUBJALTNAME		
# Use environment. Because I can. ;-)

		echo "--- Creating and signing server 
certificate"
		$openssl x509 -req $defaultmd \
			-in $SERVER.csr \
			-CA $CACERT.crt \
			-CAkey $CACERT.key \
			-CAcreateserial \
			-CAserial "${DIR}/ca.srl" \
			-out $SERVER.crt \
			-days $days \
			-extfile ${CNF} \
			-extensions JPMextensions

		rm -f $CNF
		chmod 444 $SERVER.crt
		chown $MOSQUITTOUSER $SERVER.crt
	fi
else
	#    ____ _ _            _   
	#   / ___| (_) ___ _ __ | |_ 
	#  | |   | | |/ _ \ '_ \| __|
	#  | |___| | |  __/ | | | |_ 
	#   \____|_|_|\___|_| |_|\__|
	#                            

	if [ ! -f $CLIENT.key ]; then
		echo "--- Creating client key and signing 
request"
		$openssl genrsa -out $CLIENT.key $keybits

		CNF=`mktemp /tmp/cacnf-req.XXXXXXXX` || 
{ echo "$0: can't create temp file" >&2; exit 1; }
		# Mosquitto's use_identity_as_username 
takes the CN attribute
		# so we're populating that with the 
client's name
		sed -e 's/^.*%%% //' > 
$CNF <<!ENDClientconfigREQ
		%%% [ req ]
		%%% distinguished_name	
= req_distinguished_name
		%%% prompt			
= no
		%%% output_password		
= secret
		%%% 
		%%% [ req_distinguished_name ]
		%%% # O                       
= OwnTracks
		%%% # OU                      
= MQTT
		%%% # CN                      
= Suzie Smith
		%%% CN                        
= $CLIENT
		%%% # emailAddress            
= $CLIENT
!ENDClientconfigREQ

		$openssl req -new $defaultmd \
			-out $CLIENT.csr \
			-key $CLIENT.key \
			-config $CNF
		chmod 400 $CLIENT.key
	fi

	if [ -f $CLIENT.csr -a ! -f $CLIENT.crt ]; then

		CNF=`mktemp /tmp/cacnf-cli.XXXXXXXX` || 
{ echo "$0: can't create temp file" >&2; exit 1; }
		sed -e 's/^.*%%% //' > $CNF 
<<\!ENDClientconfig
		%%% [ JPMclientextensions ]
		%%% basicConstraints        
= critical,CA:false
		%%% subjectAltName          
= email:copy
		%%% nsCertType              
= client,email
		%%% extendedKeyUsage        
= clientAuth,emailProtection
		%%% keyUsage                
= digitalSignature, keyEncipherment, keyAgreement
		%%% nsComment               
= "Client Broker Certificate"
		%%% subjectKeyIdentifier    
= hash
		%%% authorityKeyIdentifier  
= keyid,issuer:always
!ENDClientconfig

		SUBJALTNAME="$(addresslist)"
		export SUBJALTNAME		
# Use environment. Because I can. ;-)

		echo "--- Creating and signing client 
certificate"
		$openssl x509 -req $defaultmd \
			-in $CLIENT.csr \
			-CA $CACERT.crt \
			-CAkey $CACERT.key \
			-CAcreateserial \
			-CAserial "${DIR}/ca.srl" \
			-out $CLIENT.crt \
			-days $days \
			-extfile ${CNF} \
			-extensions JPMclientextensions

		rm -f $CNF
		chmod 444 $CLIENT.crt
	fi
fi
```

**To enable SSL/TSL:&#x20;**

1. From a terminal window, enter **nano&#xA0;**&#x61;nd press **ENTER**.
2. Copy the content above and paste it into the nano editor.
3. Press **Ctrl+O&#xA0;**&#x74;o save the changes.
4. Enter **generate-CA.sh&#xA0;**&#x74;o provide the file name and press **ENTER**.
   The file is created.&#x20;
5. Press **Ctrl+X&#xA0;**&#x74;o exit the nano editor.
   The file is in your default directory.
6. Enter **sudo chmod 774 \<filename>** and press **ENTER** to set permissions.
   For example: `sudo chmod 774 generate-CA.sh`
7. Enter **sudo ./\<filename>** and press **ENTER&#xA0;**&#x65;xecute the bash file and create the certificates.
   For example: Example: `sudo ./generate-CA.sh`
   The bash file is executed.
   You should see:`  JohnSmith@JohnSmith-virtualBox: ~$ ./generate-CA.sh    `
   `Generating a RSA private key`
   The certificates and key files are in your home directory.
8. Enter **sudo cp ca.crt /etc/mosquitto/ca\_certificates** and press **ENTER&#xA0;**&#x74;o copy the ca.crt to the correct folder.
9. Enter **sudo cp \<your FQDN>.crt /etc/mosquitto/certs** and press **ENTER&#xA0;**&#x74;o copy the file containing the FQDN.crt to the correct folder.
   For example: `sudo cp JohnSmith-VirtualBox.crt /etc/mosquitto/certs`
10. Enter **sudo cp \<your FQDN>.key /etc/mosquitto/certs** to copy the server certificate which has the file name \<your FQDN>.key.
    For example: `sudo cp JohnSmith-VirtualBox.key /etc/mosquitto/certs`
11. Enter **sudo nano /etc/mosquitto/conf.d/default.conf** and press **ENTER&#xA0;**&#x74;o allow for SSL encryption.
    The default.conf file opens.
12. Move your cursor down using the arrow keys and paste the following lines:
    `# Plain MQTT protocol    `
    `listener 1883    `
    `    `
    `# End of plain MQTT configuration    `
    `    `
    `# MQTT over TLS/SSL    `
    `listener 8883    `
    `cafile /etc/mosquitto/ca_certificates/ca.crt    `
    `certfile /etc/mosquitto/certs/<your FQDN>.crt    `
    `keyfile /etc/mosquitto/certs/<your FQDN>.key    `
    `require_certificate false    `
    `    `
    `# End of MQTT over TLS/SLL configuration`
13. Press **Ctrl+O&#xA0;**&#x74;o save the changes.
14. Press **ENTER**, and then press **Ctrl+X&#xA0;**&#x74;o exit the nano editor.
15. Enter **sudo ufw allow 8883** and press **ENTER&#xA0;**&#x74;o allow SSL encrypted connections on port 8883.
    The rule is applied.
16. Enter **sudo systemctl restart mosquitto** and press **ENTER&#xA0;**&#x74;o run the Mosquitto broker using the new configuration and rule.

# Step 8: Test Certificates, Username, and Password Requirements

**To test the certificates, username, and password requirements:**

1. Enter **mosquitto\_sub --cafile /etc/mosquitto/ca\_certificates/ca.crt -h \<Host IP> -t "test" -p8883 -d -u "\<username>" -P "\<password>"** and press **ENTER** to create a subscription.
   For example: `mosquitto_sub --cafile /etc/mosquitto/ca_certificates/ca.crt -h 192.168.1.11 -t "test" -p 8883 -d -u "JohnSmith" -P "XYZcorp@1"`
2. Open a second terminal window if previously closed and select it.
3. Enter **mosquitto\_pub -h \<Host IP> -t "test" -m "hello" -p 8883 -d -u "\<username>" -P "\<password>" --cafile /etc/mosquitto/ca\_certificates/ca.crt** and press **ENTER&#xA0;**&#x74;o publish a message.
   For example: `mosquitto_pub -h 192.168.1.11 -t "test" -m "hello" -p 8883 -d -u "JohnSmith" -P "XYZcorp@1" --cafile /etc/mosquitto/ca_certificates/ca.crt`
4. Select the first Terminal window to view the message **hello**.
5. Press **Ctrl+C&#xA0;**&#x74;o exit the subscription stage in the first terminal window.


[title] Microsoft SQL Server Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and a Microsoft SQL database.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/3UzEKzVosAc?si=XHTcIgUvUAitYZ5Q&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

In this guide you will deploy a Microsoft SQL Server database container from Litmus Edge and then integrate with the database using the DB-Microsoft SQL Server connector. For your specific scenario you may use an external Microsoft SQL Server database to set up the integration.&#x20;

For external Microsoft SQL Servers, refer to the following to learn more:

- [Microsoft SQL Server - Ubuntu based images](https://hub.docker.com/_/microsoft-mssql-server)
- [sqlcmd Utility](https://learn.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15)
- [Deploy and connect to SQL Server Docker containers](https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-docker-container-deployment?view=sql-server-ver15\&pivots=cs1-bash)

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add Microsoft SQL Server Application

:::hint{type="info"}
**Note**: The version used in this guide for Microsoft SQL Server is `2017-latest`.
:::

**To add the Microsoft SQL Server Marketplace Application:**

1. In Litmus Edge, navigate to **Applications&#x20;**> **Marketplace**.
2. Click **Marketplace List** and select **Default Marketplace Catalog**.
3. Click the **Microsoft SQL Server&#x20;**&#x61;pplication tile.&#x20;
4. From the **Installation script version** drop-down list, select **2017-CU8-ubuntu**.&#x20;
5. Enter **MSSQL&#x20;**&#x69;n the **Name&#x20;**&#x66;ield. &#x20;
6. Copy the password from the **SA Password&#xA0;**&#x66;ield or create a new one and save it for use later.
7. Click **Launch**.&#x20;
8. Navigate to **Applications&#x20;**> **Catalog Apps**.&#x20;
   The Microsoft SQL Server application appears, pulls the image, and then starts the application. The MSSQL application shows as running.
9. Navigate to **Applications&#x20;**> **Containers**.&#x20;
   The MSSQL application Container is running.
10. Copy the IP address for the MSSQL application.

# Step 4: Add the Microsoft SQL Server Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - Microsoft SQL Server&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Paste the IP address you copied in Step 3. &#x20;
- **Port**: The MSSQL Server port. The default value is **1433**.&#x20;
- **Username**: Enter **sa**.&#x20;
- **Password&#x20;**(Optional): Enter the user password you copied in Step 3.&#x20;
- **Database**: Enter **master**.&#x20;
- **Table**: Enter **test\_table**. If you are sending data to an existing table, use the corresponding name.&#x20;
- **Show Mapping**: If you want to send data to a custom table, select this check box and unselect *Create table*. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more. To add key/value pairs for the custom table, see [Configure Key/Value Pairs](docId\:Yj_sKBPP9J_TH3_qvC1Tm).&#x20;
- **Create table**: If you want to send data to an existing table in the default format, or you want to create a new table in the default format, select this check box and unselect *Show Mapping*. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.&#x20;
- **Commit timeout**: Enter the transaction commit timeout in (ms).
- **Max transaction size**: Enter the maximum number of messages before a transaction is committed, regardless of timeout parameter.&#x20;
- **Bulk insert count**: (Available for Litmus Edge version 3.11.1 and later) To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online.  
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 5: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6_zk06pk-JfrMMKbrDkbi_mssql.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 6: Create Topics for Connector

You will now need to import the tags created in Step 2 as topics for the Microsoft connector. The topics will be created as outbound topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 7: Enable Topics

To enable the topics, return to the *Topics* tab and click the **Enable all topics** icon.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Iq7BWYqGWueu4US73iBl3_image.png" size="80" width="1220" height="330" caption="Enable all topics icon" position="center" showCaption="true"}

# Step 8: Create Flow

You can now create a flow in Litmus Edge to verify the connection.&#x20;

**To create the flow:&#x20;**

1. In Litmus Edge, navigate to **Flows Manager**.&#x20;
2. Click the **Go To Flow Definition** icon for a selected **Flows Manager**.&#x20;
   Th&#x65;*&#x20;Flow canvas&#x20;*&#x6F;pens in a new browser tab.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6PlxhptXn4xZ_4ZdrIAuf_gotoflowdefinition.png" size="80" width="944" height="366" caption="Go To Flow Definition icon" position="center" showCaption="true"}
3. From the node palette, drag the **DataHub Subscribe** node (DataConnector section) to the canvas.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/j2Sz7jq3aibQ0V56l3Cy8_datahubsubscribenode.png" size="80" width="1055" height="690" caption="DataHub Subscribe node" position="center" showCaption="true"}
4. Drag the **Debug&#xA0;**&#x6E;ode to the canvas and connect the two nodes.
5. Double click the **DataHub Subscribe** node.&#x20;
   The *Edit DataHub Subscribe Node&#x20;*&#x64;ialog box appears.
6. In the **Topic&#x20;**&#x66;ield, paste the topic name copied in Step 6.
7. Enter `tag imported to mssql db` in the **Name&#xA0;**&#x66;ield.
8. If needed, configure the *Datahub Subscribe* connection. See the *Step 3: Configure Connector Nodes* section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
9. Click **Done**.&#x20;
10. Click **Deploy**.&#x20;
11. Expan&#x64;**&#xA0;**&#x74;he message window beneath the flow and click the **Debug&#xA0;**&#x69;con. Verify that messages are displaying.&#x20;
    ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gPJk6NsW3loIyEUdOJWuM_debugicon.png" size="80" width="885" height="365" caption="Debug node messages" position="center" showCaption="true"}

# Step 9: Make Make Microsoft SQL Queries

You can now verify that you can view data through the terminal command window.&#x20;

Update credentials, the database name, and the table as needed for your specific configurations.

**To make queries in the container terminal:**

1. In Litmus Edge, navigate to **Applications&#x20;**>**&#x20;Containers**.
2. Click the **Terminal&#xA0;**&#x69;con next to the MSSQL container.
   The MSSQL shell opens.
3. From the MSSQL container terminal, enter `/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P <sa password>`**&#xA0;**, and then press **ENTER**.
4. Enter `select DB_NAME ()`, and then press **ENTER**.
5. Enter `go`, and then press **ENTER**.
   The master database name appears.
6. Enter `select name from sys.databases`, and then press ENTER.
7. Enter `go`, and then press **ENTER**.
   All database names appear.
8. Enter `use master`, and then press **ENTER**
9. Enter `go`, and then press **ENTER**.****
   Changed database context to *master&#x20;*&#x61;ppears.
10. Enter `select * from information_schema.tables;` and press **ENTER**.
11. Enter `go`, and then press **ENTER**.
    The *Table Catalog* for the master database appears.
12. Enter `select * from test_table` , and then press **ENTER**.
13. Enter `go`, and then press **ENTER**.
    If you selected *Create table* in Step 4, identification messages from the topic appear, including the *deviceId&#x20;*&#x61;nd *registerId&#x20;*&#x61;t the end of each message.
    If you selected *Show Mapping* in Step 4, the custom mapping you configured appears.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/o06WecDb_VJzgbQea7Z4f_image.png)


[title] GCP Pub/Sub Integration
[path] How-To-Guides/Integration Guides/Databricks Integration/Streaming with Kafka & GCP Pub/Sub/

To configure the GCP Pub/Sub integration, complete the following steps.

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add Google Cloud Pub/Sub Connector

**To add the Kafka connector in Litmus Edge: &#x20;**

1. Navigate to **Integration**.
2. Click **Add a connector&#x20;**&#x69;con.&#x20;
   The *Add a connector&#x20;*&#x64;ialog box appears.
3. Select **Google Cloud Pub/Sub&#x20;**&#x70;rovider from the drop-down list.
4. Complete the following information for the *Google Cloud Pub/Sub* connector as shown in the screenshot and click **Update**.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/oKVDocR1dTli-tufu3gt4_image.png" size="80" width="944" height="933" position="center" caption="Edit a connector dialog box" showCaption="true"}
5. Click the **Google Cloud Pub/Sub&#x20;**&#x63;onnector tile.&#x20;
   The connector *Dashboard* appears.
6. Click the **Topics&#x20;**&#x74;ab.
7. Click the **Import from DeviceHub** tags icon and select all the tags to send data to *Databricks*.
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/H665vloLztpoeg-1udojP_image.png "Topics tab in Google Cloud Pub/Sub connector")

# Step 4: Set Up Databricks for GCP Pub/Sub Streaming&#x20;

In Databricks, you can configure *GCP Pub/Sub&#x20;*&#x63;onnector parameters from a **Python notebook** file. You need to authenticate using service account credentials and specify Pub/Sub topic.

**To set up Databricks for GCP Pub/Sub Streaming:**

1\. Navigate to **Databricks&#x20;**&#x77;orkspace using your log in credentials.

2\. Create a new notebook in *Databricks*. Follow the [Databricks Pub/Sub Streaming Guide](https://docs.databricks.com/en/connect/streaming/pub-sub.html) to set up *Google Pub/Sub* streaming.&#x20;

3\. Once the data is loaded, it will be in the following format:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/li1qCy_FJ3DEx6-r1P0qB_image.png" size="50" width="308" height="120" position="center" caption="Dataframe format" showCaption="true"}

The payload sent by LE will be in the **payload&#x20;**&#x66;ield in binary format.

# Example Notebook for GCP Pub/Sub Streams

:::hint{type="info"}
**Note:&#x20;**&#x54;he user can create their own notebooks and customize them as needed. This example notebook will explain how to ingest the standard DeviceHub JSON Payload.
:::

**Open a new notebook and follow the steps:**

1\. Import the necessary libraries and dependencies to handle *Pub/Sub* data streams and process data using *PySpark*. 

```python
import pyspark.sql.types as T
import pyspark.sql.functions as F
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, DoubleType, BooleanType, TimestampType, LongType
from pyspark.sql.functions import from_unixtime
```

2\. Define the credentials and *GCP Pub/Sub* information that will be used to authenticate and connect to the *Pub/Sub service*.

:::hint{type="info"}
**Note:** End-users should use secure methods of passing their *Pub/Sub&#x20;*&#x63;redentials.
:::

```python
# for both topic and subscription topic, you only need to pass the topic and sub-topic name. Not the full path
# example = databricks-test
# not the full path in GCP PubSub, which is "projects/litmus-sales-enablement/topics/databricks-test"

authOptions = {"<GCP_PUBSUB_SA_KEY>"}

pubsub_topic = "<GCP_PUBSUB_TOPIC>" 
pubsub_subscription = "<GCP_PUBSUB_SUB_TOPIC>"
projectId = "<GCP_PROJECT_ID>"
```

3\. Configure **Spark&#x20;**&#x74;o read data streams from the *Pub/Sub topic.*&#x20;

:::hint{type="info"}
**Note:&#x20;**&#x45;nsure to include the *subscription ID, topic ID, project ID,&#x20;*&#x61;n&#x64;*&#x20;authentication options*.
:::

```python
df = (spark.readStream
  .format("pubsub")
  .option("subscriptionId", pubsub_subscription) 
  .option("topicId", pubsub_topic)
  .option("projectId", projectId)
  .options(**authOptions)
  .load()
)
```

This will output the following:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/7JE6rz2qe81SAa3I4urn5_image.png" size="50" width="308" height="120" position="center" caption="Dataframe format" showCaption="true"}

:::hint{type="info"}
**Note:&#x20;**&#x54;his guide covers the DeviceHub JSON Payload. Please update the notebook if you are sending a different payload to Databricks.
:::

4\. Define the schema that matches the expected structure of the incoming data and parse the *Pub/Sub stream* data accordingly.&#x20;
This involves decoding the payload, extracting attributes, and structuring the parsed data into a DataFrame.&#x20;

```python
schema = StructType([
  StructField("deviceName", StringType(), True),
  StructField("tagName", StringType(), True),
  StructField("deviceID", StringType(), True),
  StructField("success", BooleanType(), True), 
  StructField("datatype", StringType(), True),
  StructField("timestamp", LongType(), True),
  StructField("value", DoubleType(), True), 
  StructField("metadata", StringType(), True),
  StructField("registerId", StringType(), True),
  StructField("description", StringType(), True)
])

table = "<DATABRICKS_TABLE_NAME>"

query = (df
  .withColumn("payload", F.decode(F.col("payload"), "UTF-8"))
  .withColumn("attributes", F.from_json(F.col("attributes"), T.MapType(T.StringType(), T.StringType())))
  .withColumn('parsed_value', F.from_json(F.col('payload').cast('string'), schema))
  .withColumn("LE_timestamp", from_unixtime(F.col('parsed_value.timestamp')/1000, "yyyy-MM-dd HH:mm:ss.SSS"))
  .select("messageId","attributes","publishTimestampInMillis",'parsed_value.*', "LE_timestamp")
  .writeStream
  .format("delta")
  .outputMode("append")
  .option("checkpointLocation", "/tmp/delta/"+ table + "/_checkpoints/").toTable(table)
)
```

5\. Once the data is published to the *Databricks&#x20;*&#x74;able, you can query the table to verify that the data ingestion process is successful.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BOMapqxwCitLv9cEieMUv_image.png "Databricks table")


[title] InfluxDB v1.7.x SSL Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and an InfluxDB database (version 1.7 or 1.8) using SSL authentication.&#x20;

:::hint{type="info"}
**Note**: The following data types and formats are not viewable in InfluxDB:

- string
- char
- JSON payloads
:::

# User Scenario

In this guide InfluxDB is installed through a Docker image. You have several other options for the installation. See the following to learn more.&#x20;

- [Download InfluxDB OSS](https://docs.influxdata.com/influxdb/v1/introduction/download/)
- [Install InfluxDB OSS](https://docs.influxdata.com/influxdb/v1/introduction/install/)

# Step 1: Set up InfluxDB

You will first need to pull an InfluxDB image file and then run it on your computer. For this guide InfluxDB version 1.8.0 is pulled.&#x20;

**To set up InfluxDB:**

1. On your computer, open the command prompt window.&#x20;
2. Run the following command.&#x20;
   `docker run --name influxdb -p 8086:8086 influxdb:1.8.0`
   The command will create the InfluxDB container with the name "influxdb", on port 8086, and install InfluxDB version 1.8.0.&#x20;

Once the InfluxDB container is running, refer to the following to learn more about setting up and configuring InfluxDB, and also enabling SSL authentication:

- [InfluxDB v1 documentation](https://docs.influxdata.com/influxdb/v1/)
- [Configure InfluxDB OSS](https://docs.influxdata.com/influxdb/v1/administration/config/)
- [Creating a database](https://docs.influxdata.com/influxdb/v1/introduction/get-started/#creating-a-database)
- [Enable HTTPS with InfluxDB](https://docs.influxdata.com/influxdb/v1/administration/https_setup/)

Once you set up and configure InfluxDB to your specific requirements, you can complete the setup in Litmus Edge.&#x20;

# Step 2: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 3: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 4: Add the InfluxDB v1.7.x SSL Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - InfluxDB v1.7.x SSL&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **InfluxDB address**: Enter the InfluxDB database address and port in the following format: http\://\<InfluxDB address>:\<port>.&#x20;
- **InfluxDB datbase name**: Enter the database name configured in the InfluxDB setup in Step 1.&#x20;
- **Username&#x20;**(Optional): Enter a username to access the database.
- **Password&#x20;**(Optional): Enter the password associated with the username.&#x20;
- **CA Certificate**: Paste the CA certificate required to access InfluxDB. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Certificate**: Paste the SSL certificate. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Private key**: Enter or paste the SSL private key.&#x20;
- **Insert batch size**: Enter the number of messages to be collected as a batch before inserting into the database.
- **Insert batch commit time**: The batch commit time in seconds.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 5: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-4X0ecoEZdAEOcKNSfj3W_influxdb17ssl.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 6: Create Topics for Connector

You will now need to import the tags you added in Step 3 to the connector as topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the *Integration&#x20;*&#x6F;verview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 7: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

# Step 8: Verify Connection

Access the InfluxDB database to ensure that data is being sent successfully from Litmus Edge to the database.&#x20;

[title] Litmus Edge 3.1.5.0
[path] Product Updates/2021/

Release Date: August 5, 2021

### Enhancements and Improvements

| Description                                                                                                                                                                               |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Added events for container process of create/kill
- Added events for Flows restart
- Improvements added to SSL intermediate certificate chain handling
- Updated FANUC driver registers |

### Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Fixed issue with deactivation of Litmus Edge Manager when endpoints are not reachable&#xD;
- Fixed issue with Marketplace application pull image over FTP&#xD;
- Fixed issue with backup/template failure over large size files(\~4MB)&#xD;
- Fixed issue with DeviceHub restart due to lack of memory&#xD;
- Fixed issue with generating large support bundle for failed software upgrades&#xD;
- Fixed issue with data retention period time update&#xD;
- Fixed issue with interruption of publishing messages to message broker on Modbus TCP driver with bit data in csv upload&#xD;
- Fixed issue with deviceID causing errors for some Analytics KPIs |

### Limitations

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Changing tag parameters requires DeviceHub restart&#xD;
- Virtualbox deployment shows occasional TUI message with Login incorrect error.&#x20;
  - **Workaround**: This can be rectified with an instance restart.&#xD;
- The default network should be updated before deploying an application. Configurations changes upon a network change can cause deployed applications to disappear&#xD;
- A force deletion of a default connector doesn't remove it. Make sure to gracefully deactivate cloud activation&#xD;
- Timeout for a backup file upload is \~ 5-6 sec, which can cause an issue for remote users&#xD;
- Occasionally a delay occurs on Litmus Edge upgrade deployment made from Litmus Edge Manager&#xD;
- Some browser ad-blockers can also block Analytics. You can receive the following error: `Http failure response for /analytics/v2/version: 0 Unknown Error`&#xD; Check your browser plugins. |

### Deprecated Components and Features

| Description                                       |
| ------------------------------------------------- |
| - Siemens Advanced (Gen2) driver has been removed |

### Important Information

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Enable the EFI option for VirtualBox deployment. It can be found in **Settings** >**&#x20;System** > **Motherboard** > **Extended EFI**
- Upgrade from 3.1.1.0 to 3.1.5.0 is not supported with VirtualBox deployment&#xD;
- Upgrade from 3.1.4.0 to 3.1.5.0 may cause Keyence and FANUC tags to be removed&#xD;
- Allen-Bradley Micrologix driver has known issue&#xD;
- 3.0.1.0 and 3.1.0.0 may have corrupted format of backup, which cannot be restored. Analytics - workaround is to use import/export |

### Known Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Backup/Restore from a previous system may fail in some cases&#xD;
- Access node in Flows does not show drop down of topic before deployment&#xD;
- Incorrect configurations with AD can show UI errors&#xD;
- Marketplace Catalog list view does not allow deployment of application&#xD;
- Browse tags does not work for an OPC UA Client connecting with a Prosys Server&#xD;
- The Observer user role when trying to view the registry pane gives UI error&#xD;
- Uploading larger images may cause error&#xD;
- Disk Space Policy Management is not sending the appropriate warnings&#xD;
- External storage "mount on boot" remains unmounted&#xD;
- LDAP does not provide feedback step-by-step&#xD;
- The License pane does not show the add-on license status if the core license is expired&#xD;
- There is no support for custom data format for the MYSQL connector&#xD;
- An Unhandled error occurs for a disabled user creation with the API endpoint&#xD;
- There is a failed retry connection for a software upgrade for the connection reset&#xD;
- The DH Agent does not renew the tag list with reconnection&#xD;
- An update for user/device events generates the wrong event&#xD;
- Docker images with larger size fails to upload&#xD;
- Remove instances in current group, does not remove the group.&#xD;
  - **Workaround**: Empty group gets removed with a service restart/system reboot&#xD;
- Restore backup file from a different system may cause issues with data store&#xD;
- Viewing the processor output for Analytics does not work.&#xD;
- The tag names for OPC UA Client Subscribe (Gen2) and OPC UA Client Poll (Gen2) are different when the same tag is added.&#xD; |


[title] Litmus Edge 3.0.2.0
[path] Product Updates/2020/

Release Date: December 18, 2020

### Improvements and Bug Fixes

| Description                                                                                             |
| ------------------------------------------------------------------------------------------------------- |
| **Bug Fix**:<br />* Fixed issue with Google IoT Cloud connector not being able to retrieve identity key |

### Known Issues

| Description                                                                                                                                                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| - Running Marketplace Application configuration are not added to template&#xD;
- Backup from previous system with same TagName may show an error upon restore&#xD;
- Backup/Restore from previous system may fail for some cases&#xD;
- Logs do not display for CC |


[title] Litmus Edge 3.1.1.0
[path] Product Updates/2021/

Release Date: March 25, 2021

### Improvements and Bug Fixes

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* Added support for AB CompactLogix Ethernet FreeTag
* Added support for FANUC Functions                                                                                                                                                                                                                                                                                                                                                           |
| Updates to various components:<br />* Updated column name for Tag Name on Device Data tab
* Added support for slot configuration in SLC gateway
* Updated column name on DeviceHub tag column
* Updated nginx limit to import more than 10k tags to connectors
* Extended MQTT LWT payload to base64
* Optimized functionality for load/save of analytics group/map
* Updated developer access to launch containers
* Updated restore error for wrong json file upload |
| Enhancements to various components:<br />* Improved events to log application status
* Added support for mapping remote UI on Litmus Edge Manager                                                                                                                                                                                                                                                                                                                      |

### Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Fixed issue with SignAndEncrypt mode with OPC Client Subscribe Gen1 Driver&#xD;
- Fixed issue with OPC UA Client tag addition with Kepware Server&#xD;
- Fixed issue with special character, (-) in alias topic&#xD;
- Fixed issue with OPC UA Client certificate mode&#xD;
- Fixed issue with LDAP/AD user name mapping from group ID to user ID&#xD;
- Fixed issue with AD custom group mapping&#xD;
- Fixed issue with authorization limitation for developer user with OPC UA Server, Flows and Analytics&#xD;
- Fixed issue with disk space policy Management not sending appropriate warnings&#xD;
- Fixed issue with alias topic not sent with system connector&#xD;
- Fixed issue with deactivation when Edge Manager connection endpoint is lost&#xD;
- Fixed issue with memory leak on max API call with token&#xD;
- Fixed issue with disk space policy for device data collection&#xD;
- Fixed issues with display of stats data upon software upgrade&#xD;
- Fixed issue with some flows not getting imported in Analytics&#xD;
- Fixed issue with analytics template restore&#xD;
- Fixed issue with application status on deployment from catalog&#xD;
- Fixed issue with failed restore of backup |

### Deprecated Components and Features

| Description                   |
| ----------------------------- |
| - Siemens Logo Driver (Gen 2) |

### Known Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Dashboard count for flows and Analytics is not updated&#xD;
- PLC Status tag may show an error of “unexpected token” in flows&#xD;
- Integration import tags contains deleted tags from DeviceHub&#xD;
- Backup/Restore from previous system may fail for some cases&#xD;
- Deactivation does not go through when Litmus Edge Manager connection is lost&#xD;
- Applying template on same device overwrites&#xD;
- Access node in flows does not show drop-down of topic before deployment&#xD;
- Occasional TUI message with Login incorrect error&#xD;
- Wrong configurations with AD can throw UI errors
- &#xD;Marketplace Catalog list view does not allow you to deploy application&#xD;
- Browse tags does not work in OPC UA Client connecting with Prosys Server&#xD;
- Observer user role trying to view registry page gives UI error&#xD;
- Uploading larger images may cause error&#xD;
- External storage mount on boot remains unmounted&#xD;
- LDAP does not provide feedback step-by-step&#xD;
- License page does not show add-on license status if core license expired&#xD;
- Support for custom data format for MYSQL connector&#xD;
- Unhandled error with disabled user creation with API endpoint&#xD;
- Default network should be updated before deploying an application, configurations changes on network change can cause deployed applications to disappear&#xD;
- Failed retry connection for software upgrade with connection reset&#xD;
- Timeout for backup file upload is \~ 5-6 sec, this can cause issue for remote users&#xD;
- Force deletion of default connector does not remove it. Make sure to gracefully deactivate cloud activation&#xD;
- Update user/device events generates the wrong event&#xD;
- Volume of application is not removed along with the application&#xD;
- Docker image with larger size fails to upload&#xD;
- Backup of OPC UA configurations fails to restore on a different system&#xD;
- Import of a v2.6.x version backup partially fails&#xD;
- Restoring an edge device from a Litmus Edge Manager backup file fails&#xD;
- Selecting individual components without the Marketplace application for template creation fails |


[title] Litmus Edge 3.3.2
[path] Product Updates/2023/

Release Date: February 9, 2023

## Enhancements and Improvements

| Description                                                                                                                        |
| ---------------------------------------------------------------------------------------------------------------------------------- |
| ******Digital Twins**: <br />* You now have the option of selecting **Flatten Hierarchy** when creating/editing an instance.&#x20; |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ******DeviceHub****:**<br />* Fixed the following issues with the OPC UA Advanced driver:
  - Registers that were added from browsing not being in service.&#x20;
  - Poll-once not working properly in Subscription mode.&#x20;
  - Cannot browse Ignition server tags
* Fixed issue with the DNP3 Ethernet driver not reading tag values with the float(32) data type.&#x20;
* Stats data is now included for Devices in JSON Template files.&#x20;
* Fixed issue with Metadata incorrectly displaying after unchecking the **Metadata&#x20;**&#x6F;ption in a Device configuration. When you edit a Device and uncheck **Metadata**, the data is now reset.&#x20;
* Fixed the following issues after upgrading:&#x20;
  - Devices and Tags not working.
  - Data from tsdata not being stored.
* When you add a tag to the Siemens S7 driver, you can now configure a DB number greater than 255, up to a maximum of 65,535.&#x20; |
| ******API**:<br />* Fixed issue with the same key and attribute names being created and data not being captured. If multiple attributes with the same name/key are created, you can now see the value of one of them in the results.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ******System**:<br />* Fixed issue with Device Certificates not resetting properly.&#x20;
* Fixed issue with users not being able to download the DeviceHub Agent file and open source files.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

## Known Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **DeviceHub**:<br />* If you use the **Browse Tags** function and try to add a duplicate tag, an error will be generated. Duplicate tags should be skipped when adding tags through **Browse tags**.&#x20;
* If a read-only tag is created for the Modbus TCP driver and a Flow is created to write data to that tag, the "WriteRegisters" API may be called. The "WriteRegisters" API shouldn't be called to read-only tags.&#x20;
* Tags can't be added to the OPC UA DeviceHub Agent driver.&#x20;
* If you add a mount point in Litmus Edge and then add a device with the Euromap63 driver, "success=false" messages may be generated. 
* The AB CompactLogix Ethernet Free Tag driver can't poll data up to 10 ms.&#x20;
* When you toggle a network to **ON&#x20;**&#x69;n Device Discovery, the WiFi icon may not display.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **System**:<br />* ﻿Litmus Edge doesn't notify users if an activation request is rejected by Litmus Edge Manager.&#x20;
* You are able to delete roles in **System > Users&#x20;**&#x69;f it has associated groups.&#x20;
* Users can delete the System API key, which should be read-only.&#x20;
* When using VirtualBox, a "Login incorrect" message may display on the Terminal User Interface during startup.&#x20;
* If an activation with Litmus Edge Manager using a certificate signed by an unknown authority fails, attempting another activation will automatically fail.&#x20;
* The Backup/Restore feature may create a 3-byte file, which causes an error and disables auto-backup.&#x20;
* Software upgrade is not supported on VirtualBox 6.1.x; upgrade attempt may result in a corrupted, unrecoverable appliance.
* Litmus Edge docker images don't currently come with a trial license, so CA certificates can't be uploaded. 
  - Workaround: You can install CA Certificates through Litmus Edge Manager, and Litmus Edge will pick them up. 
* If the device name is the same as the one that appears in the template, the template upload fails for the devices with the same configuration. 
  - **Workaround:** Edit the device name in the template file, so that it doesn't match the one in the system. |

## Deprecated Components and Features

| Description                                                                            |
| -------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* The Mitsubishi QJ71E71 (Gen1) driver is no longer offered.&#x20; |


[title] Litmus Edge 3.2.5
[path] Product Updates/2022/

Release Date: April 26, 2022

## New Features

| Description                                                                                                       |
| ----------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* Support is now provided for Atlas Copco Torque Tool Ethernet Gen 1 driver.                  |
| **Flows Manager**:<br />* The `Warning` status is shown when Flows Manager reaches the maximum restart threshold. |

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Integration**: <br />* Outbound MQTT cc topics now also offers NATS wildcard.                                                                                                                                                                                                      |
| **System** :<br />* Licensing Server Cache now has persistence across reboot with a duration of 8 hours.
* Licensing cache are now digitally signed to prevent tampering.
* **System&#x20;**> **Support** page now is responsive to window size changes and more screen resolutions. |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* Modbus address range extended from original 0-9999 to 0-65535.
* Modbus now offers device level offset to start from either 0 or 1.
* Tag Limits associated with Licenses are now properly enforced in DeviceHub.
* Bool-type tags associated with Siemens S7 devices now displays the correct value in Flows.
* After tag name changes, tag alias topics also updates accordingly.
* For Emerson ROC800 driver-attached tags, updating these tags in the Emerson ROC800 driver device details page may result in the tag's Type/Location/Parameter value from becoming empty. This has now been fixed.
* When two generations (Gen-1 and Gen-2) of a device are connected concurrently, the metadata key in the payload .JSON file are present in both devices rather than only Gen-1. |
| **Flows Manager**:<br />* Remotely accessed Litmus Edge will now correctly open Flow Definitions from Flows Manager (previously it wasn't loading at all).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Analytics**:<br />* TensorFlow Processors are now available again in the drop down menu. However it will be available only in TensorFlow-supported CPU.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Applications:**<br />* After creating a GCR type registry, images from this registry can now be successfully pulled.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Integration**:<br />* Pubsub connectors now hides Service Account key.
* A Connector to InfluxDB and a device with a tag count greater than 0 previously collided with each other manifesting as the data not being stored, high CPU usage, and potential memory leaks. CPU consumption has been reduced and the data is now successfully stored.
* Admin users can now remove `FAILED` `default-ssl` connectors.                                                                                                                                                                                                                                                                                                                                                                                           |
| **System**:<br />* Litmus Edge Manager-signaled software updates now updates Litmus Edge properly rather than Litmus Edge raising the error software update: exit status 1.
* When restoring Litmus Edge using a Litmus Edge Manager-generated Litmus Edge backup, a 504 gateway timeout previously occasionally occurred. This error will no longer occur during restore.
* When a Litmus Edge Manager(LEM) activates a Litmus Edge instance, using LEM's remote user interface to access Integration>Default SSL will no longer display the error Http failure during parsing.                                                                                                                                                                                                                              |
| **Licensing**:<br />* Litmus Licensing Server connected to a Litmus Edge instance will now have a more reliable and smoother connection.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |

## Deprecated Components and Features

| Description                                                                                                                                    |
| ---------------------------------------------------------------------------------------------------------------------------------------------- |
| **DeviceHub**:<br />* Siemens ISO-on-TCP gen 2 no longer offers the Buffered tag type.
* Roc Plus Ethernet (Gen1) driver is no longer offered. |

## Known Issues

| Description                                                                                                                                                                                                                    |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Integration**:<br />* Adding topics to a connector while it is `CONNECTED` may show an error. Workaround: Users can stop the connector before adding a new topic.
* The Developer user cannot manage integration connectors. |
| **Analytics**:<br />* Software update from 3.0.1.0 dissolves all groups defined in the Analytics module.<br />**Workaround** : Users can Export groups in Analytics.                                                           |
| Memory leaks may occur when Litmus Edge receives more than 5 events per second.                                                                                                                                                |


[title] InfluxDB v2.x SSL Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and an InfluxDB database (version 2.x) using SSL authentication.&#x20;

:::hint{type="info"}
**Note**: The following data types and formats are not viewable in InfluxDB:

- string
- char
- JSON payloads
:::

# User Scenario

In this guide you will deploy InfluxDB from the same computer (Windows-based) running Litmus Edge and then use the DB - InfluxDB v2.x SSL connector to connect locally Litmus Edge and the database.&#x20;

# Before You Begin

You will need to set up your computer so that it can run Docker commands.&#x20;

# Step 1: Set up InfluxDB

You will first need to run the InfluxDB Docker image and then configure SSL authentication.&#x20;

## Step 1a: Run InfluxDB Docker Image

1. On your computer, open the command prompt window.&#x20;
2. Run the following command.&#x20;
   `docker run --name influxdb -p 8086:8086 influxdb:2.0.9`
   The command will create the InfluxDB container with the name "influxdb", on port 8086, and install InfluxDB version 2.0.9. If you are using a different version of InfluxDB, update the version number.&#x20;
3. Once the pulling and running of InfluxDB is complete, open a browser window and enter http\://localhost:8086 in the address window.&#x20;
   The setup screen for InfluxDB displays.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/-AE-DmvxDBy5oTN-pgRrK_influxdbinitial-user.png "InfluxDB initial setup screen")
4. Configure the details for the initial user. You will need to refer to these values when setting up the connector in Litmus Edge.&#x20;
   - **Username**
   - **Password**
   - **Initial Organization Name**
   - **Initial Bucket Name**
5. Click **Continue**.&#x20;
6. Continue setting up the database as needed.&#x20;
7. Return to the homepage of InfluxDB.&#x20;
8. Navigate to **Data&#x20;**> **Tokens**. Then, click the token name already created.&#x20;
   Details for the token display
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Q5Fk7tvFfH8I6AO9-FY8k_tokens.png "The Tokens page")
9. Click **Copy to Clipboard** and store the token somewhere securely. You will refer to this when setting up the connector in Litmus Edge.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/W_Y_npKkQcRaTnMKokMR4_copytoken.png "Token details")

## Step 1b: Configure SSL authentication

You will need to configure SSL authentication in InfluxDB and use the authentication parameters to configure the connection in Litmus Edge. See [Enable TLS encryption](https://docs.influxdata.com/influxdb/v2/admin/security/enable-tls/) to learn more.&#x20;

Now that InfluxDB is configured to your specific requirements and you've collected the parameters needed to set up the connection, you can complete the setup in Litmus Edge.&#x20;

# Step 2: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 3: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 4: Add the InfluxDB v2.x SSL Connector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - InfluxDB v2.x SSL&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **InfluxDB address**: Enter **http\://localhost:8086**.&#x20;
- **InfluxDB bucket name**: Enter the bucket name configured in the InfluxDB setup in Step 1.&#x20;
- **Organization**: Enter the organization name configured in the InfluxDB setup in Step 1.&#x20;
- **Auth token**: Paste the token copied in Step 1.&#x20;
- **Username**: Enter the username configured in the InfluxDB setup in Step 1.&#x20;
- **Password**: Enter the password configured in the InfluxDB setup in Step 1.&#x20;
- **CA Certificate**: Paste CA certificate required to access InfluxDB. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.
- **Certificate**: Paste the SSL certificate. For Litmus Edge version 3.11.0 and later, you have the option to upload the certificate.&#x20;
- **Private key**: Enter or paste the SSL private key.&#x20;
- **Insert batch size**: Enter the number of messages to be collected as a batch before inserting into the database&#x20;
- **Insert batch commit time**: Enter the time, in seconds, before the next commit, regardless of batch size. &#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 5: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/svCiXvEys-LNUn3oAx1lz_influxdb17ssl.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 6: Create Topics for Connector

You will now need to import the tags you added in Step 3 to the connector as topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 7: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

# Step 8: Verify Connection

Return to the InfluxDB browser window and explore the metrics to ensure that data is being successfully sent from Litmus Edge to to InfluxDB.&#x20;

[title] Verified VM Versions
[path] Resources/

The following VM versions have been verified. It is recommended that you use the preferred version when deploying.

| **VM**                    | **Host OS**             | **Supported Versions / Validated**                          | **Unsupported Versions** | **Preferred Versions / Links for Deployment**                       | **Comments**&#xA;                                                                                                                                                     |
| ------------------------- | ----------------------- | ----------------------------------------------------------- | ------------------------ | ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Virtualbox&#xA;&#xA;      | Windows&#xA;&#xA;       | VBox 6.1.x<br />VBox 6.0.x<br />VBox 5.2.x<br />&#xA;&#xA;  |                          | VBox 6.0.22 (released 05/15/2020)&#xA;                              | Every time you import a new Litmus Edge VM into VBox, you must go to VM Settings / Network tab and click **OK**. Without this action, the VM will fail to start.      |
| Virtualbox&#xA;&#xA;      | Linux&#xA;&#xA;         | VBox 6.1.x<br />VBox 6.0.x<br />VBox 5.2.x<br />&#xA;       |                          | VBox 6.0.22 (released 05/15/2020)&#xA;                              | Every time you import a new Litmus Edge VM into VBox, you must go to VM Settings / Network tab and click **OK**. Without this action, the VM will fail to start.&#xA; |
| VirtualBox&#xA;&#xA;      | Mac OSX                 | VBox 6.1.x<br />VBox 6.0.x<br />VBox 5.2.x<br />&#xA;       |                          | VBox 6.0.22 (released 05/15/2020)&#xA;                              | Every time you import a new Litmus Edge VM into VBox, you must go to VM Settings / Network tab and click **OK**. Without this action, the VM will fail to start.&#xA; |
| VirtualBox&#xA;&#xA;      | Mac OS BigSur&#xA;&#xA; | VBox 6.1.18&#xA;&#xA;                                       |                          | VBox 6.1.18 r142142 (Qt5.6.3)<br />(released 01/19/2021)<br />&#xA; | Every time you import a new Litmus Edge VM into VBox, you must go to VM Settings / Network tab and click **OK**. Without this action, the VM will fail to start.&#xA; |
| VMWare ESXi&#xA;&#xA;     |                         | VMWare&#xA;vSphere 7.0.3.01400<br />VMWare vSphere 6.7.0    |                          |                                                                     |                                                                                                                                                                       |
| VMWare Workstation Pro    | Windows&#xA;&#xA;       | VMWare Workstation 15.5 1 Pro 12/11/2019&#xA;&#xA;          |                          | VMWare Workstation 15.5 1 Pro 12/11/2019&#xA;&#xA;                  |                                                                                                                                                                       |
| Windows Hyper-V&#xA;&#xA; | Windows&#xA;&#xA;       | Hyper-V Manager Microsoft Corporation Version: 10.0.19041.1 |                          |                                                                     | Verified with Litmus Edge version 3.11.0                                                                                                                              |


[title] Acronym List
[path] Resources/

While many acronyms have become part of our common language, with their meanings well known to people in the industry, it can be entertaining to review the origin or decoded version of an acronym. The following list includes common acronyms found in the product documentation.

| **Acronym**      | **Decoded**                                          | **Description**                                                                                                                                                                                                                                                                                                                             |
| ---------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **ACL**          | Access Control List                                  | Lists the users and permissions for system access.                                                                                                                                                                                                                                                                                          |
| **AES**          | Advanced Encryption Standard                         | This security algorithm encrypts and decrypts data using the same encryption key. Software uses this standard to enforce privacy controls on each device and connection.                                                                                                                                                                    |
| **AMQP**         | Advanced Message Queuing Protocol                    | Open standard for business application messaging.                                                                                                                                                                                                                                                                                           |
| **BPM**          | Business Process Management                          | This business solution focuses on optimization of business processes and workflows.                                                                                                                                                                                                                                                         |
| **CDN**          | Content Delivery Network                             | Network nodes and content are located closer to the end user than with typical network configurations.                                                                                                                                                                                                                                      |
| **CIDR**         | Classless Inter-Domain Routing                       | The standard for creating unique identifiers for networks and individual devices.                                                                                                                                                                                                                                                           |
| **CNC**          | Computer Numerical Control                           | This pre-programmed sequences of commands enables automation of machine tools.                                                                                                                                                                                                                                                              |
| **CoAP**         | Constrained Application Protocol                     | Web-transfer protocol for IoT constrained nodes and networks; designed for machine-to-machine (M2M) applications.                                                                                                                                                                                                                           |
| **CRM**          | Customer Relationship Management                     | This software manages a database of interactions with customers and potential customers.                                                                                                                                                                                                                                                    |
| **CSR**          | Certificate Signing Request                          | Send this encoded file to a certificate authority for creation of an SSL certificate.                                                                                                                                                                                                                                                       |
| **DCS**          | Distributed Control System                           | A computerized control system for a process in which autonomous controllers are present in the system without a central operator supervisory control.                                                                                                                                                                                       |
| **DTC**          | Diagnostic Trouble Code                              | Engine control systems in vehicles issue DTCs for problems and failures. For example, a DTC triggers the check engine light in an automobile.                                                                                                                                                                                               |
| **DTLS**         | Datagram Transport Layer Security                    | Protocol for secure communications for datagram-based applications (UDP transport protocol).                                                                                                                                                                                                                                                |
| **ERP**          | Enterprise Resource Planning                         | This software integrates and manages core business functions/units in a shared database.                                                                                                                                                                                                                                                    |
| **ETL**          | Extract, Transform, and Load                         | This data warehousing term refers to a process of extracting data from one source, transforming the data, and then storing it in another database.                                                                                                                                                                                          |
| **FTP**          | File Transfer Protocol                               | A network protocol that is used to transfer files between a client and a server.                                                                                                                                                                                                                                                            |
| **HID**          | Human Interface Device                               | USB-connected devices, such as barcode scanners. In Litmus Edge, an HID remains disconnected because HIDs send data only when there is data to send.                                                                                                                                                                                        |
| **IoT and IIoT** | Internet of Things and Industrial Internet of Things | Communication among a large variety of devices and protocols, along with the collection of data from those devices, enables data analysis and efficient management and planning.                                                                                                                                                            |
| **IPC**          | Industrial PC                                        | PC-based computing platform for industrial applications.                                                                                                                                                                                                                                                                                    |
| **MES**&#xA;     | Manufacturing Execution System                       | This system tracks the processes, data, and outcomes–from raw materials to finished goods–of a manufacturing process. This includes such things as materials tracking, management of overall equipment effectiveness (OEE), and resource scheduling.                                                                                        |
| **MQTT**&#xA;    | Message Queuing Telemetry Transport                  | This lightweight messaging protocol uses a publish-subscribe method for connecting to sensors and devices.                                                                                                                                                                                                                                  |
| **NATS**&#xA;    | Neural Autonomic Transport System&#xA;               | This messaging platform provides a text-based publish-subscribe protocol. This NATS name compares its functions with a central nervous system.&#xA;                                                                                                                                                                                         |
| **NTP**&#xA;     | Network Time Protocol&#xA;                           | Devices, including Litmus Edge devices, use NTP for time synchronization.                                                                                                                                                                                                                                                                   |
| **OAuth**&#xA;   | Open Authorization&#xA;                              | OAuth 2.0, an open standard for authorization and authentication, can be configured in Litmus Edge Manager. Other authorization methods supported in Litmus Edge Manager, include:<br />* Query Auth (a method of signing API requests with a key)
* Header Auth (HTTP authorization header)                                                |
| **OEE**&#xA;     | Overall Equipment Effectiveness                      | The standard for improving manufacturing productivity.&#xA;                                                                                                                                                                                                                                                                                 |
| **OPC**          | Open Platform Communications                         | Standard interface used to communicate with industrial devices. Legacy solutions used this standard for accessing devices. As manufacturing systems evolved, a new interoperability standard, OPC UA, was developed by the [OPC Foundation](https://opcfoundation.org/about/what-is-opc/).                                                  |
| **OPC DA**       | Open Platform Communications Data Access             | An OPC Foundation specification that defines how real-time data can be transferred between a data source and a data sink (for example: a PLC and an HMI) without either of them having to know each other's native protocol.                                                                                                                |
| **OPC UA**       | Open Platform Communications Unified Architecture    | This machine-to-machine protocol for industrial automation supports a Service-Oriented Architecture (SOA).                                                                                                                                                                                                                                  |
| **OTA**          | Over-the-Air                                         | Over-the-Air updates facilitate device software updates. OTA refers to the methods for distributing software, configuration settings, and even updating encryption keys.                                                                                                                                                                    |
| **PaaS**         | Platform as a Service                                | Litmus offers Litmus Edge Manager, a cloud platform (PaaS) that provides connectivity with IoT systems to collect data that enables device monitoring and management.                                                                                                                                                                       |
| **PLC**          | Programmable Logic Controller                        | A specialized small computer with a built-in optimized operating system used in industrial machines and sensors.                                                                                                                                                                                                                            |
| **RBAC**         | Role-Based Access Control                            | Enables customization of access control lists, which define who can access data, based on their assigned roles.                                                                                                                                                                                                                             |
| **REST**         | Representational State Transfer                      | REST provides a web service for exchanging messages between devices. Application programming interfaces (APIs) can be used to glean essential information from JSON over HTTP (refer to [REST API with JSON](https://technologyconversations.com/2014/08/12/rest-api-with-json/)). Users can use REST APIs to develop their own interfaces. |
| **SCADA**        | Supervisory Control and Data Acquisition             | An architecture for industrial control systems that includes sensors, control relays, PLCs, computers, and applications that directly interface with managed systems. The SCADA HMI (Human-Machine Interface) enables interactivity with devices.                                                                                           |
| **SOA**          | Service-Oriented Architecture                        | This approach to building systems focuses on business processes for which services need to be developed and supported. This is a departure from the development of systems that focus on hardware, software, and networking resources.                                                                                                      |
| **SOAP**         | Simple Object Access Protocol                        | SOAP provides a web service that defines a standard communication protocol for exchanging messages between devices.                                                                                                                                                                                                                         |
| **SSH**          | Secure Shell                                         | Protocol for secure communication over a network.                                                                                                                                                                                                                                                                                           |
| **SSL**          | Secure Socket Layer                                  | Protocol for secure communication over a network.                                                                                                                                                                                                                                                                                           |
| **TFA**          | Two Factor Authentication                            | Adds an extra layer of security for user logins.                                                                                                                                                                                                                                                                                            |
| **TLS**          | Transport Layer Security                             | Protocol for secure communication over a network.                                                                                                                                                                                                                                                                                           |


[title] Set Up the DeviceHub Agent
[path] How-To-Guides/

The DeviceHub Agent acts as a proxy between an OPC Data Access (DA), also known as an OPC Classic server, and the Litmus Edge system. It allows you to search for available OPC DA Servers and provides a list of tags from the selected server. Multiple servers can be selected.

Review the following use case for connecting and configuring the DeviceHub Agent in Litmus Edge.

# Important

- To install DeviceHub Agent, your machine must support the following software versions:
  - Windows 10.0.14393
  - Windows SDK version 10.0.18362.0
  - Visual Studio 16 2019
- The DeviceHub Agent must be run on the same host as the OPC DA Server, and DCOM must be configured. For more information, see [Configure DCOM for OPC DA Connections](docId\:JEmNWgB6d_iHLSRBIeNA9).
- The DeviceHub Agent supports reading up to 5000 tags from the OPC DA server. It does not support parallel write.
- The DeviceHub Agent does not support OPC Classic Historical Data Access (HDA) or OPC Classic Alarms and Events (AE).
- It is possible to configure multiple connections to several DeviceHub Agent instances inside a Litmus Edge or multiple Litmus Edge instances using only one DeviceHub Agent application. You can create each connection using the **Add (+)&#x20;**&#x69;con.&#x20;
- The DeviceHub Agent includes options to export tags to a CSV file. The CSV file can then be used to import the tags to Litmus Edge. The status of the tags are checked periodically. Sending tags to DeviceHub is the preferred method.

# Before You Begin

Download the DeviceHub Agent EXE file from Litmus Edge by navigating to **System&#x20;**> **Support&#x20;**&#x69;n the *File Downloads* section. &#x20;

***

Setting up the DeviceHub Agent includes the following tasks:

- Step 1: Add DeviceHub Agent to DeviceHub
- Step 2: Create API Token
- Step 3: Install Matrikon OPC Explorer and Simulation and Testing Tool
- Step 4: Set up DeviceHub Agent
- Step 5: Connect the OPC DA Explorer
- Step 6: Send Tags to DeviceHub
- Step 7: View Tag Data

# Step 1: Add DeviceHub Agent to DeviceHub

**To add the DeviceHub Agent to DeviceHub:**

1. In Litmus Edge, navigate to **DeviceHub&#x20;**> **Devices**.&#x20;
2. Click the **Connect a Device** box.&#x20;
   The *Connect Device&#x20;*&#x64;ialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/atJL37pPuLGI2bM_w2ibz_adddevice.png" size="80" width="1046" height="528" caption="Connect a Device box" position="center" showCaption="true"}
3. In the **Device Type** drop-down list, select **OPCUA**.&#x20;
4. In the **Driver Name** drop-down list, select **DeviceHub Agent**.&#x20;
5. Enter a name for the device. The device name you configure is used for the *Device name* parameter in the DeviceHub Agent configuration.
6. (Optional) Select the **Enable alias topics&#xA0;**&#x63;heck box. This allows you to name the Topic ID when creating a Tag.
   - If you enable alias topics during device creation or modification, DeviceHub stops publishing to raw topics and publishes only to alias topics.
   - Litmus Edge substitutes "." (period) in aliases with "/" (forward slash).
7. Click **Add Device**.&#x20;
   The device appears in the *Devices&#x20;*&#x70;ane.&#x20;

# Step 2: Create API Token

Follow the steps to [Create an API Token](docId\:zVJ8PaIyajdPs1cOLGo5S). Copy the token and store it for later use.&#x20;

# Step 3: Install Matrikon OPC Explorer and Simulation and Testing Tool

:::hint{type="info"}
**Note**: To install these files, you may have to enable the .NET Framework 3.5. See [Microsoft documentation](https://learn.microsoft.com/en-us/dotnet/framework/install/dotnet-35-windows) on this topic to learn more.&#x20;
:::

In this use case, Matrikon Server is used. You can also use Kepware Server or Prosys Server.

**To download Matrikon OPC Explorer and Simulation and Testing Tool:&#x20;**

1. Visit the [Matrikon ](https://matrikonopc.com/)website.&#x20;
2. From the Matrikon search bar, enter **OPC Simulation Server Download**, and click **Search**.
3. Click the **OPC Simulation Server Download&#xA0;**&#x6C;ink.
4. From the download page, enter your first name, last name, and email address, and then click **Download Now**.
5. From the registration form, enter your account information, and then click **Download Now**.
   An activation email is sent from Matrikon.
6. Click the link provided in the email.
   Use your email address as your user name, and the password you provided in the form as your password for the [http://www.matrikonopc.com/portal](http://www.matrikonopc.com/portal) URL.
7. Click **Download Now**.
   The MatrikonOPCSimulation.exe file downloads to your hard drive.
8. Install the MatrikonOPCSimulation file.
9. From the Matrikon search bar, enter **MatrikonOPC Explorer Download**, and click **Search**.
10. Click the **MatrikonOPC Explorer Download&#xA0;**&#x6C;ink.
11. From the download page, click **Download Now**.
12. Install the MatrikonOPCExplorer filie.

The server configuration is by default. You can add an alias configuration. Explorer is used to connect to the OPC DA server and browse the tags.

# Step 4: Set Up DeviceHub Agent

You can now set up the DeviceHub Agent by connecting to the OPCDA server and DeviceHub in Litmus Edge.&#x20;

**To set up the DeviceHub Agent:&#x20;**

1. Open the DeviceHub Agent EXE file you downloaded.
2. From the **Main&#x20;**&#x74;ab, click the **Add&#x20;**&#x62;ox.&#x20;
   The *Add connection* dialog box appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Co0ElC-ULon1cn-EleGmI_add-connection-devicehub-agent-dialog-box-3000.png" size="80" width="528" height="452" caption="Add connection dialog box" position="center" showCaption="true"}
3. Click the **Detect&#x20;**&#x69;con.
   The servers are detected and appear in the OPCDA server drop-down list. The OPCDA host is **localhost&#xA0;**&#x62;ecause the OPC DA server is installed on the same machine as Litmus Edge.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/6M_Gmndrp9LGVFk8zb_vd_detect-icon.png" size="80" width="530" height="484" caption="Detect icon" position="center" showCaption="true"}
4. Select an option from the **OPCDA server&#xA0;**&#x64;rop-down list.
5. Configure the *Server&#x20;*&#x73;ettings section.&#x20;
   - **Host**: Enter the IP address for your Litmus Edge instance.&#x20;
   - **Port**: The port value should be the same one configured for the DeviceHub Agent device in LItmus Edge.&#x20;
   - **Device name**: Enter the device name you configured for the DeviceHub Agent device in Litmus Edge.&#x20;
   - **API key**: Paste the API key created in Step 2.&#x20;
6. Click **OK**.
   The OPC DA driver is added in the DeviceHub Agent in another tab, and the tags for the selected server are viewable in the tags box.
7. Click the **Connect&#x20;**&#x69;con.&#x20;
   The DeviceHub Agent connects to DeviceHub in Litmus Edge.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/cNwe0soYlJwpdM1si-1Ej_connect-icon.png" size="80" width="753" height="680" position="center" showCaption="false"}
8. Return to the Litmus Edge instance and navigate to **DeviceHub**.&#x20;
9. Confirm that the DeviceHub Agent tile shows a *Connected&#x20;*&#x73;tatus.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/GjP1Yy6TK3mAATexfDEJj_connected-status.png" size="60" width="419" height="341" caption="The DeviceHub device displays a Connected status" position="center" showCaption="true"}

If you need to remove a connection in the DeviceHub Agent application, select the tab for the connection you want to remove and go to **Connections&#x20;**> **Remove connection**.&#x20;

# Step 5: Connect the OPC DA Explorer

You will need to connect the OPC Explorer to the Simulation and Testing Tool.&#x20;

**To connect the OPC DA Explorer:**

1. Open the MatrikonOPC Explorer.
2. Under the **Localhost&#xA0;**&#x65;ntry in the hierarchy, click the **Matrikon.OPC.Simulation.1&#xA0;**&#x65;ntry.
   If you get the error message "Matrikon OPC explorer machine is not browsed", go to **View&#x20;**> **Options&#x20;**> **General&#x20;**&#x61;nd select the **Registry&#x20;**&#x63;heck box in the *OPC Server Browsing* section.&#x20;
3. Click the **Connect&#xA0;**&#x62;utton.
   Connection information appears in the *Server Status* section.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/sNDapxH3_XYG8RFVRYCtY_image.png" size="80" width="1093" height="767" caption="Server Status section" position="center" showCaption="true"}

# Step 6: Send Tags to DeviceHub

You can send tags from the DeviceHub Agent applicaiton directly to DeviceHub in Litmus Edge. This is the recommended method to add tags to the DeviceHub device.&#x20;

**To send tags to DeviceHub:**

1. Make sure the DeviceHub agent is disconnected from DeviceHub.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1SKC7qqTGf4gQCBrLbljx_disconnect.png" size="70" width="840" height="833" position="center" showCaption="false"}
2. Select the check box for tags you want to send. Alternatively, you can use the **Select all tag**s and **Unselect all tags** icons.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/BvjyRNpPVWa2RbeCKH_4o_select-tags-to-send-to-devicehub.png" size="70" width="840" height="833" position="center" showCaption="false"}
3. Click the **Connect&#x20;**&#x69;con to connect to DeviceHub in Litmus Edge.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/hMA5WPOwK47d1B6Y5HU9g_connect-icon.png" size="70" width="753" height="680" caption="The Connect icon" position="center" showCaption="true"}
4. Click the **CSV&#x20;**&#x69;con and select **Send Tags**.&#x20;
   A message displays that the tags were successfully sent.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/75CC5ufi19bH7deGdOomz_send-tags-icon.png" size="70" width="706" height="800" caption="The Send tags option" position="center" showCaption="true"}

You can also add tags to the DeviceHub device in the following ways:

- Use [Browse Tags](docId\:oJJP6qm8xNGDuIgG8xZdd).&#x20;
- Use the Export CSV option in the DeviceHub Agent application. Then, follow [Step 3: Upload Populated CSV File of Tags](docId:8sE7z3PmRfwL1nmzcwaLX).&#x20;



# Step 7: View Tag Data

You can use the [Flows Manager](docId\:qCWlxV4BmMR13WWIsoI89) or [Analytics](docId\:FGJKbOQwGVGgd2nuQgRo5) in Litmus Edge to view the tag data.&#x20;

**To view tag data in the Flows Manager:**

1. In Litmus Edge, navigate to **DeviceHub&#x20;**>**&#x20;Tags**.
2. Select the DeviceHub Agent device.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/gnaXnov9Z6B7nRkVJQV-Y_select-device.png" size="80" width="1588" height="646" caption="Select the DeviceHub Agent device" position="center" showCaption="true"}
3. Click the **Copy&#x20;**&#x69;con for the tag you want to view.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/ZxDutnL4DDb_UXInmTmUO_copy-icon-for-tag.png" size="80" width="1589" height="779" position="center" showCaption="false"}
4. Navigate to the **Flows Manager&#x20;**&#x61;nd create a new flow. See [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.&#x20;
5. Drag the **DataHub Subscribe** and **Debug&#xA0;**&#x6E;odes to the canvas and wire them together.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/8FImKkXONq4uHiXRX165S_nodes.png" size="80" width="835" height="410" caption="The DataHub Subscribe and Debug nodes" position="center" showCaption="true"}
6. Double-click the **DataHub Subscribe&#xA0;**&#x6E;ode.&#x20;
   - In the **Topic&#x20;**&#x66;ield, paste the tag ID you copied earlier.&#x20;
   - If needed, configure the Datahub Subscribe connection. See the "Step 3: Configure Connector Nodes" section in [Create a Flow](docId:7x0n7C4DxswTD61vpIBza) to learn more.
   - Click **Done**, and then **Deploy**.&#x20;
7. Click the **Debug&#x20;**&#x69;con.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/UKUluHffouXWWGwIByZcC_debug-icon.png" size="80" width="1589" height="532" caption="The Debug icon" position="center" showCaption="true"}
8. Drag the message window up and review the messages. A `"success": true` message confirms the connections is successful.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/q_GGrcpUi02K1Ba5tQe9B_debug-messages.png" size="80" width="1589" height="863" position="center" showCaption="false"}



**To view tag data in Analytics:**

1. In Litmus Edge, navigate to **Analytics**.&#x20;
2. Click **Add processor&#x20;**&#x61;nd select **DataHub Subscribe**.&#x20;
3. In the **Topic&#x20;**&#x66;ield, paste the tag ID you copied earlier.&#x20;
4. Click **Save**.&#x20;
5. Click the **View&#x20;**&#x69;con.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/LMiTmKGHzRxv1OclXAJfC_view-analytics-data.png" size="80" width="658" height="458" caption="The View icon" position="center" showCaption="true"}
6. Review the messages. A `"success": true` message confirms the connections is successful.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/4EsoVZ6AouSTe0PrX2oOv_review-analytics-data.png" size="80" width="1589" height="863" caption="Instance Messages" position="center" showCaption="true"}


[title] Litmus Edge 3.5.5
[path] Product Updates/2023/

Release Date: June 1, 2023

## Resolved Issues

| Description                                                                                                                                                                   |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Integration**:<br />* Fixed issue with data no longer being sent by an updated connector or any other existing connector because a topic is added to the updated connector. |
| **DeviceHub**:<br />* Fixed issue with Opcode functions (135,166, 206) not displaying all parameters in the ROC800 Ethernet driver.&#x20;                                     |

## Known Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Terminal User Interface (TUI)**:<br />* A user with the “Viewer” permission is able to access the Terminal User Interface and access all options.
* No error message displays if a user leaves the username or password field blank and clicks **Apply**.
* You may be kicked out of the TUI screen unexpectedly.
* You can’t add add a site license or add-on license through the TUI.
* You can’t successfully use the activation and deactivation function in the TUI.
* When the initial reboot sequence starts, you may be able to access the main menu and make changes before the reboot initialization finishes and the reboot occurs.
* Some fields, such as Cloud Activation URL and Docker Subnet, accept blank entries before submitting.
* When attempting Cloud Activation, there is no option to cancel the request or wait for a timeout.
* The Managed Services section may not display any options.
* If an admin user cancels the end-user license agreement (EULA) and logs in again to the TUI, they are still able to access all TUI options and make changes.
* When using VirtualBox, a "Login incorrect" message may display on the TUI during startup.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **System**:<br />* You may not be able to add a Mount Point successfully in **System** > **External Storage**.&#x20;
* The **Up** and **Down&#x20;**&#x6F;ptions may not work in **System&#x20;**> **LDAP/AD Auth**.&#x20;
* When activating Litmus Edge from Litmus Edge Manager with a node-locked license, the activation may complete successfully but an error message may display and the license may not migrate successfully.&#x20;
* Litmus Edge Manager should not be able to apply templates to Litmus Edge devices activated with a trial license.&#x20;
* When you select a time zone in **System&#x20;**> **Network&#x20;**> **Configure**, the selection in the drop-down list may display \[object Object].&#x20;
* When you try to upgrade with an invalid license key, no error message displays.&#x20;
* After activating Litmus Edge with Litmus Edge Manager, you may have to manually refresh the browser window to see the activated license.&#x20;
* The Docker version of Litmus Edge may not list events for DeviceHub, Connectors, and Flows.&#x20;
* The same license activated on different servers may display a different expiry date on each server.&#x20;
* A new XML file is created every time the OPC UA hierarchy is updated.&#x20;
* Large template files may not be restored successfully.&#x20;
* When uploading a template, the error message "License sync exceeded" may incorrectly display.&#x20;
* Errors may occur when trying to generate support bundles.&#x20;
* When you click **Reset&#x20;****Policy** in **System&#x20;**> **Policy Management**, any values entered should reset.&#x20;
* Basic authorization for an API Key created in **System&#x20;**> **Tokens&#x20;**&#x6D;ay not work for the Docker version of Litmus Edge.&#x20;<br />&#xD;                                                                                                                                                                                                                                                                                                                                                                |
| **DeviceHub**:<br />* Search doesn’t work when the DriverName parameter is used.&#x20;
* You can’t update the retention hours of a DeviceHub device with a value of 0.&#x20;
* Multiple meta data values are able to be added while only the first one is saved.&#x20;
* When more than 11 DeviceHub devices are added, some of the devices may get stuck in “Polling” status.&#x20;
* If **Only Publish on Change of Value** is selected for a tag, you subscribe to the poll-once topic of the tag in the Flows Manager, and use the inject node, only the first value will display in the debug window.&#x20;
* Tag values aren’t saved in downloaded CSV files for tags that generate JSON objects.&#x20;
* Downloaded logs may contain invalid characters.&#x20;
* CAN devices may not get detected on HPE EL300.&#x20;
* If you stop DeviceHub devices and reboot Litmus Edge, the devices may re-connect.&#x20;
* Arrays for Gen 2 drivers are not published correctly.&#x20;
* Adding an LZ register for the Mitsubishi FX5U Ethernet (Gen1) driver may cause errors.&#x20;
* The endianness sequence for the AB PLC5 Ethernet (Gen1) driver is incorrect.&#x20;
* The AB CompactLogix Ethernet FreeTag (Gen2) driver contains a spare word in write requests.&#x20;
* When using Browse Tags for the OPC UA Client Advanced driver, the **Select all** function may not work.&#x20;
* When the Siemens S7-Advanced (Gen1) driver is disconnected, the memory of the process increases over time until it is stopped by oom\_killer.&#x20;
* The OPC UA Client Advanced driver may not be able to connect to some OPC UA servers.&#x20;
* When the OPC UA Client Advanced driver is in Subscribe mode, the published timestamp value is when the client gets data from the OPC UA server, rather than the tag's sourceTimestamp value.&#x20;
* When you use Device Discovery for the BacnetIP driver and enter the eth0 broadcast address, BASpi devices won't display in the list of discovered devices.&#x20;
  - **Workaround**: Enter 0.0.0.0 in the **Network\_address** field and the BASpi device should display in the list of discovered devices. &#xD; |
| **Applications**:<br />* When you run a Docker command in **Applications&#x20;**> **Containers**, an error message may display even though the application is created.&#x20;
* After installing several Marketplace applications and then trying to download the template, an error may occur.&#x20;
* When running the InfluxDB application, the application may fail with no error message on the cause of the failure.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Integration**:<br />* If you add an inbound or outbound topic to the Google Pub/Sub connector without an SA key, the connector fails.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **Analytics**:<br />* If you add flows to the Analytics canvas, add the Database Batch Input processor, connect an external DataHub database in DataHub, and then refresh the page, an error may occur.&#x20;
* The formatting of the Tengo Script processor dialog should be indented correctly.&#x20;
* The **Export** option on the Analytics canvas may not work successfully.&#x20;
* An error may persist for the Change of Value node even after resetting Litmus Edge.&#x20;
* An error message may display after connecting a Statistical Prediction node to a Moving Average node.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **Flows Manager**:<br />* The Flows Manager should only store two rotated copies of logs and clean the rest.&#x20;
* New flows may not be displayed unless Litmus Edge is rebooted.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **Digital Twins**:<br />* Creating custom topics for instances through API should not be allowed.&#x20;
* The order of model hierarchies may not save properly.&#x20;
* Write and Poll-once topics should not be listed as options for dynamic attributes.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **UI**:<br />* The support chat text may be misaligned.&#x20;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |




[title] Platform Standards
[path] Resources/

The protocols and standards used by Litmus software comprise these categories.

### Southbound (PLC to Litmus Edge)

- ORiN device interface
- DOSA (Distributed-power Open Standards Alliance)
- OPC UA
- MTConnect open standard

### Northbound (device to cloud/database)

- MQTT (IETF)
- REST/HTTP

### Security

- Authentication (follow northbound)
- Transport Layer (SSL, TLS 1.3/1.2)
- Certificate Management (EPID)

### Data

- OPC UA


[title] Resources
[path] /


[title] PostgreSQL Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and a PostgreSQL database.&#x20;

# Video

:::Iframe{iframeHeight="0" code="<iframe width=&#x22;560&#x22; height=&#x22;315&#x22; src=&#x22;https://www.youtube.com/embed/rSsrTL7TMQc?si=kEe8bzOVin126stn&#x22; title=&#x22;YouTube video player&#x22; frameborder=&#x22;0&#x22; allow=&#x22;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#x22; allowfullscreen></iframe>"}

:::

# User Scenario

In this guide you will deploy a PostgreSQL database container from Litmus Edge and then integrate with the database using the DB-PostgreSQL Server connector. For your specific scenario you may use an external PostgreSQL Server database to set up the integration.&#x20;

For external PostgreSQL databases, refer to the following links to learn more:

- [PostgreSQL Docker Image](https://hub.docker.com/_/postgres)
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Add PostgreSQL Application

:::hint{type="info"}
**Note**: The version used in this guide for PostgreSQL is 9.6.5.
:::

**To add the PostgreSQL application:**

1. In Litmus Edge, navigate to **Applications&#x20;**> **Marketplace**.
2. Click **Marketplace List** and select **Default Marketplace Catalog**.
3. Click the **PostgreSQL&#x20;**&#x61;pplication tile.&#x20;
4. From the **Installation script version** drop-down list, select **9.6.5**.&#x20;
5. Enter a name and description for the application. &#x20;
6. Update the database name, username, and password as needed.&#x20;
7. Copy the database name, username, and password and store for reference later.&#x20;
8. Click **Launch**.&#x20;
9. Navigate to **Applications&#x20;**> **Catalog Apps**.&#x20;
   The Postgre application appears, pulls the image, and then starts the application. The  application shows as running.
10. Navigate to **Applications&#x20;**> **Containers**.&#x20;
    The postgre application Container is running.
11. Copy the IP address for the PostgreSQL application.

# Step 4: Add the DB - **PostgreSQL&#x20;**&#x43;onnector

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - PostgreSQL&#x20;**&#x70;rovider.&#x20;

Configure the following parameters.&#x20;

- **Name**: Enter a name for the connector.&#x20;
- **Hostname**: Paste the IP address you copied in Step 3. &#x20;
- **Port**: The PostgreSQL Server port. The default value is **5432**.&#x20;
- **Username**: Paste the username configured in Step 3.&#x20;
- **Password**: Paste the password configured in Step 3. &#x20;
- **Database**: Paste the database name configured configured in Step 3.&#x20;
- **Table**: Enter **devicehub**. If you are sending data to an existing table, use the corresponding name.
- **Show Mapping**: If you want to send data to a custom table, select this checkbox and unselect *Create table*. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more. To add key/value pairs for the custom table, see [Configure Key/Value Pairs](docId\:Yj_sKBPP9J_TH3_qvC1Tm).&#x20;
- **Create table**: If you want to send data to an existing table in the default format, or you want to create a new table in the default format, select this checkbox and unselect *Show Mapping*. See [Work with Tables in SQL Connectors (Create Table and Show Mapping)](docId\:Yj_sKBPP9J_TH3_qvC1Tm) to learn more.&#x20;
- **Commit timeout**: Enter the transaction commit timeout in (ms).
- **Max transaction size**: Enter the maximum number of messages before a transaction is committed, regardless of timeout parameter.&#x20;
- **Bulk insert count**: (Available for Litmus Edge version 3.11.1 and later) To enable this option, enter the number of messages to group together and send as one bulk insert statement. Enabling this option can improve how quickly data is processed when dealing with high volumes of tags.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online.  
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 5: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/SD_JUeNePkuRKODUAyRWo_postgresql.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 6: Create Topics for Connector

You will now need to import the tags created in Step 2 as topics for the PostgreSQL connector. The topics will be created as outbound topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

After adding all required topics, navigate to the Integration overview page and ensure the connector is not disabled and still shows a CONNECTED status.&#x20;

# Step 7: Enable Topics

To enable the topics, return to the *Topics* tab and click the **Enable all topics** icon.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Iq7BWYqGWueu4US73iBl3_image.png" size="80" width="1220" height="330" caption="Enable all topics icon" position="center" showCaption="true"}

# Step 8: Make PostgreSQL Queries

You can now verify that you can view data through the terminal command window.&#x20;

Update the credentials, database name, and table name to your specific configurations.&#x20;

**To make queries in the container terminal:**

1. In Litmus Edge, navigate to **Applications&#x20;**>**&#x20;Containers**.
2. Click the **Terminal&#xA0;**&#x69;con next to the PostgreSQL container.
   The PostgreSQL shell opens.
3. From the PostgreSQL container terminal, enter `psql -h localhost -U postgres`**&#xA0;**&#x61;nd press **ENTER**.
   The *psql (9.6.5)***&#xA0;**&#x76;ersion number appears.
4. Enter `\l`**&#xA0;**&#x61;nd press **ENTER**.
   The list of databases appears in the console.
5. Enter `\c postgres`**&#xA0;**&#x61;nd press **ENTER**.&#x20;
   *You are now connected to database "postgres" as user "postgres"* appears.
6. Enter `\dt` and press **ENTER**.
   The list of relations appears showing the devicehub schema.
7. Enter `\d devicehub` and press **ENTER**.
   The *public.devicehub* table appears.
8. Enter `select * from devicehub;` and press **ENTER**.
   The data for the devicehub table appears.
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HOsMXyQViXIcPsygcVFOq_applications-postgresql-table.png" size="80" width="1576" height="739" caption="PostgreSQL connector messages" position="center" showCaption="true"}


[title] Can't Read Data from RS232/485 Serial Machines
[path] Troubleshooting/DeviceHub Troubleshooting/

If your production environment has old machinery, you can collect data using RS232 or RS485 serial ports. You can set up the connection by using one of the following:

- A physical gateway on the production floor that a RS232/485 serial port
- A serial to ethernet converter such as a [Moxa box](https://www.moxa.com).&#x20;

Review the [Industrial Systems Connection Guide](docId\:x7F6RogWGUb9AiJkZ8aFr) to see what drivers can connect to serial devices using a physical gateway as the connecting device. Litmus Edge will collect data using the typical protocol of the source machine/PLC you connect.&#x20;

[title] Snowflake Integration Guide
[path] How-To-Guides/Integration Guides/

Review the following guide for setting up an integration between Litmus Edge and the Snowflake data warehouse.

# Before You Begin

You will need a Snowflake account with the **SysAdmin&#x20;**&#x70;rivilege.&#x20;

# Step 1: Add Device

Follow the steps to [Connect a Device](docId:3eyAfPpweuVmBLCEy17sq). The device will be used to store tags that will be eventually used to create outbound topics in the connector. Make sure to select the **Enable Data Store** checkbox.&#x20;

# Step 2: Add Tags

After connecting the device in Litmus Edge, you can [Add Tags](docId:8sE7z3PmRfwL1nmzcwaLX) to the device. Create tags that you want to use to create outbound topics for the connector.&#x20;

# Step 3: Create Snowflake Database

You will need to create a database in Snowflake that will be used to receive the data from Litmus Edge.&#x20;

**To create the Snowflake database:**

1. Log in to Snowflake.&#x20;
2. Navigate to **Data&#x20;**> **Databases**.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/M0NtyT0g313ZiAyVU8Sf9_snowflake-guide01.png)
3. Click **+ Database**.&#x20;
   The *New Database&#x20;*&#x64;ialog displays.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/1H5k96N7FMINlTtn6gHgl_snowflake-guide02.png)
4. Enter a name for the database. Optionally, add a comment.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/jl-jUByKlgkah59e4xfYA_snowflake-guide03.png" size="50" width="413" height="351" position="center" showCaption="false"}
5. Click **Create**.&#x20;
   The new database is created.&#x20;
6. Click the new database name, and then click **+ Schema**.&#x20;
   The *New Schema* dialog displays.&#x20;
   ![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HSr7cq_qIxVAq_iMSD1iN_snowflake-guide04.png)
7. Enter a name for the schema. Optionally, add a comment.&#x20;
   ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/JUPmtfr_hil5S_M5vLzrA_snowflake-guide05.png" size="50" width="409" height="382" position="center" caption="New Schema dialog" showCaption="true"}
8. If needed, select the checkbox for **Managed access**.&#x20;
9. Click **Create**.&#x20;
   The new schema is created.&#x20;

You can now set up the connector in Litmus Edge to send data to this new database and schema.&#x20;

# Step 4: Add the DB - Snowflake Connector&#x20;

Follow the steps to [Add a Connector](docId\:b7eMDh8AO2-NOqDHwPD7Y) and select the **DB - Snowflake** provider.

Configure the following parameters.&#x20;

- **Name**: Enter a name to identify the connector.&#x20;
- **Account**: Enter the Snowflake account ID. Refer to your Snowflake account info in the bottom-left corner of the Snowflake account page. See [Account Identifiers](https://docs.snowflake.com/en/user-guide/admin-account-identifier) to learn more.&#x20;
- **Region**: Enter the Snowflake cloud region ID. Refer to your Snowflake account info in the bottom-left corner of the Snowflake account page. See [Supported Cloud Regions](https://docs.snowflake.com/en/user-guide/intro-regions) to learn more.&#x20;
- **Username**: Enter your Snowflake username.&#x20;
- **Password**: Enter your Snowflake password.&#x20;
- **Database**: Enter the database name you configured in Step 3.&#x20;
- **Schema**: Enter the schema name you configured in Step 3.&#x20;
- **Warehouse**: Enter the warehouse name that will be used for the integration. Navigate to **Admin&#x20;**> **Warehouse&#x20;**&#x66;or your list of current warehouses. See [Virtual Warehouses](https://docs.snowflake.com/en/user-guide/warehouses) to learn more.&#x20;
- **Table**: Enter a table name where the data will be displayed. &#x20;
- **Create table**: Select this checkbox if the table name configured doesn't exist yet. A new table will be created. &#x20;
- **Commit timeout**: Enter the transaction commit timeout in (ms).
- **Max transaction size**: Enter the maximum number of messages before a transaction is committed, regardless of timeout parameter.&#x20;
- **Bulk insert count**: To buffer messages, enter a value. Bulk insert will be performed once this value is reached.&#x20;
- **Throttling limit**: The maximum number of messages per second to be processed. The default value is zero, which means that there is no limit.&#x20;
- **Persistent storage**: When enabled, this will cause messages to undergo a store-and-forward procedure. Messages will be stored within Litmus Edge when cloud providers are online. &#x20;
- **Queue Mode**: Select the queue mode as **lifo&#x20;**(last in first out) or **fifo&#x20;**(first in first out). Selecting **lifo&#x20;**&#x6D;eans that the last data entry is processed first, and selecting **fifo&#x20;**&#x6D;eans the first data entry is processed first.&#x20;

# Step 5: Enable the Connector

After adding the connector, click the toggle in the connector tile to enable it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/Ro7wR3XbzZxds5vPQHHI__snowflake.png" size="60" width="388" height="358" position="center" showCaption="false"}

If you see a *Failed&#x20;*&#x73;tatus, you can review the [Connector Logs](docId:5hctoRLhgaX3Ikh_lvi0A) and relevant error messages.&#x20;

# Step 6: Create Outbound Topics for Connector&#x20;

You will now need to import the tags you added in Step 2 to the connector as topics.&#x20;

**To create outbound topics:**

1. Click the connector tile.
   The connector *Dashboard&#x20;*&#x61;ppears.&#x20;
2. Click the **Topics&#x20;**&#x74;ab.&#x20;
3. Click the **Import from DeviceHub** tags icon.&#x20;
   The *DeviceHub Import&#x20;*&#x64;ialog box appears.

![](https://archbee-image-uploads.s3.amazonaws.com/xSuIWwMa6RnsbeD5Kdqd7-zaOGMDYbPZWYALvLBgotp-20250606-203859.png)

# Step 7: Enable Topics

Ensure the topics you imported are enabled by returning to the *Topics&#x20;*&#x74;ab and clicking the **Enable all topics** icon.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/SSUUxKZUk9bFTEPNn_6Zo/HtkW-nbWXeAvOV8ru8B1U_image.png)

# Step 8: Verify Connection in Snowflake Database

Access the Snowflake database you created to verify that data is successfully being sent.&#x20;

[title] Litmus Edge 3.2.10
[path] Product Updates/2022/

Release Date: October 7, 2022

## Resolved Issues

The following issues that existed in one or more previous releases have been resolved.

| Description                                                                                                                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Applications**:<br />* Catalog Apps will still display applications if the connection with their respective Docker container is temporarily lost. The application automatically reconnects with their respective Docker container. |




[title] Litmus Edge 3.2.1
[path] Product Updates/2022/

Release Date: January 26 2022

## New Features

| Description                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------- |
| **Custom meta tags**:<br />* Support for dynamic key/value pairs in the DeviceHub custom meta tags                              |
| **Status register:**<br />* ability to define a "default" variable for monitoring the device connection/disconnection           |
| **Support utilities:**<br />* support for IP and port check during device discovery                                             |
| **Site-license management**:<br />* Ability to activate edge devices from Litmus Edge Manager
* Server validation on connection |
| **New integrations**:<br />* Azure Event Hub connector
* Google Cloud Pub/Sub connector
* NATS Client connector                 |
| **Purging of persistent data** - ability to purge the data stored by a connector from the web UI                                |

## Enhancements and Improvements

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **System events**:<br />* System performance improvements
* Support for additional component events                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **DeviceHub drivers and UI**:<br />* The Micrologix Ethernet Gen 2 driver
* Support for browsing for the CompactLogix Gen 2 driver
* The Emerson ROC Plus driver
* The JTEKT Toyopuc CMP-Link (Ethernet) driver
* The ABB Totalflow Gen1 driver
* Table view on the DeviceHub page
* Support for string values                                                                                                                                                                                                               |
| **Analytics UI**:<br />* The search functionality
* Support for processor locking
* The Instance Table functionality
* Ability of the Analytics service to listen to analytics.command.
* Grouping improvements during re-arrange
* Support for pass-through values, which enables adding meta data from other processors                                                                                                                                                                                                    |
| **Marketplace**:<br />* The Marketplace dashboard
* The Network setting in Marketplace
* UI improvements in the various Marketplace components                                                                                                                                                                                                                                                                                                                                                                               |
| **OPC UA:&#xA0;**<br />* ability to append a manually created hierarchy to the root node                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Other**:<br />* Support for publish system events to the message broker
* A unique UUID for each system event
* Auto-refresh for certificates before expiry
* Upgrade to the Node-RED backend 1.2.9
* Links to additional support resources
* Upload options for certificates
* Ability to download the OSS license file
* Support for Throttling Limit in all MQTT based connectors
* Additional support for memory limit updates in Flows Manager
* LDAP UI f& UX improvements
* Ability to download an OSS license file |

## Resolved Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Unable to create Docker/GCP container registries&#xD;
- "Registry error" when logging to the Litmus Edge Manager Marketplace Catalog with valid credentials&#xD;
- Marketplace applications fail to launch
- Internal error on the image upload status for `tar.gz`
- Updating a device name in the UI does not update that name in the plc\_status topic
- Backup creation causes OPC UA errors
- UI does not handle requests for core license upgrade correctly
- Docker generates the "invalid\_refresh\_token" 401 error when connecting to Litmus Licensing Server
- UI makes multiple redundant Subscription API calls
- The Google Pub/Sub integration connector allows negative values in "threshold" fields
- The Name filed is filled incorrectly when adding tags by DeviceHub Agent browsing
- The dynamic fields, such as **Status Register**, appear at the top of the **Add Tag** dialog box while they have to appear at the bottom
- Authentication for a Litmus Edge browser session expires in minutes (rather than after 12 hours of inactivity)
- Online license activation generates the "Unknown license name" error
- UI freezes and enters an infinite loop with CPU utilization close to 100%
- Litmus Edge Docker endpoint failure results in "internal server" error 500 on th&#x65;**&#x20;DB Management** pane
- No API specification for license management
- License management uses gRCP (should use REST API)
- REST API Key auth v2 fails for stats and FTP components
- Litmus Edge Manager provisioning fails during the GFC Docker image activation
- Some integration connectors, such as InfluxDB, AMQP, fail to start if syslog in not available
- No REST API is available for firmware upgrades from a cloud URL
- No API specification is available for online/offline activation endpoints
- Message transfer with Siemens S7-Advanced Gen1 driver is slow when more than 1,000 tags are added |

## Deprecated Components and Features

| Description                                                                           |
| ------------------------------------------------------------------------------------- |
| **DeviceHub** dashboard with outages and stats graphs                                 |
| Support for restore of 2.6.x backup files - the upgrade path is 2.6.x > 3.1.x > 3.2.x |

## Known Issues

| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **System**:<br />* The countdown dialog does not appear at the end of the software update
* Litmus Edge activation fails if the edge device is shut down before the activation request is approved in Litmus Edge Manager
* Expired licenses use more than 35% of the CPU
* The API calls `post /auth/v2/providers/config/test` with the Advanced Directory configuration result in `Server Error 500`
* The message shown when a template deployment fails does not tell the user which components had failed
* If the device name is the same as the one that appears in the template, the template upload fails for the devices with the same configuration; the workaround is to edit the device names in the template file
* An incorrect error message is shown when an external storage mount cannot be found
* The error message shown when remote access fails is not user-friendly
* Errors shown when applying MP templates are not user-friendly
* Errors shown when an Active Directory test fails are not user-friendly
* There is a discrepancy between the memory usage values shown on the **Dashboard&#x20;**&#x61;nd on the **System&#x20;**> **Info** pane
* Software update from 3.0.1.0 dissolves all groups defined in the **Analytics** module
* InfluxDB initialization for large databases is unstable (slow, with high CPU consumption)
* Software upgrade is not supported on VirtualBox 6.1.x; upgrade attempt may result in a corrupted, unrecoverable appliance |
| **DeviceHub:**<br />* The Modbus RTU Gen2 driver doesn't connect until the Gen1 driver is added
* Incorrect events are shown after adding or uploading tags
* The message interval increases after a PLC power-cycle when using the AB CompactLogix Ethernet FreeTag Gen2 driver
* The OPC UA client does not connect to the server with the Basic256Sha256-SE security policy
* ABB Totalflow (Gen1) driver does not connect until a tag is added to the device                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Analytics**:<br />* Restoring from a backup file does not restore the device analytics
* Processors that are manually moved to the right on the canvas erroneously re-align to the left
* TensorFlow processors don't appear on the list of available processors because TensorFlow plugins fail to load                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Integration**:<br />* The Developer user cannot manage integration connectors
* The MySQL connector supports only the Litmus' own data format
* The MySQL description endpoint doesn't return the mapping description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Applications**:<br />* Changing Catalog application state ti Resume causes launch error
* Users cannot edit the `AWS_ECR` container registry due to missing credentials; the workaround is to enter the credentials every time when editing the form
* The "delete app" and "restart app" events are not always shown on the list of events
* The marketplace catalog is not included in the template if the applications belonging to that catalog are not selected when creating the template
* A registry can be removed without asking the user for an explicit confirmation
* Applications appear on the Overview pane even after their container and image had been removed; cannot be removed manually
* Docker doesn't restore the WG lemwg0 interface after a container is restarted                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **Dashboard**:<br />* Some metrics shown on the Dashboard do not match the values retrieved through an API                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Datahub**:<br />* The UI incorrectly reflects the time series database size                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **Flows** <br />* Some of the drop-down lists are not filled with the correct values until after the first deployment                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Web UI**<br />* The UI layout gets misaligned with certain combinations of screen sizes and resolutions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **API&#xA0;**<br />* The gRPC API "RequestFirmwareUpdate" doesn't retry after the connection is reset                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      