Skip to content

Litmus Edge to EMQX Neuron Migration Guide

Overview

  • Migration goal: Convert acquisition configuration from Litmus Edge (V4.0 and above) into a configuration that EMQX Neuron can import.

  • Conversion method: Use the online configuration conversion tool provided on the EMQ website.

Supported protocols for conversion

Litmus Edge protocolSupportedNotes
Modbus RTU over TCPYes
Modbus RTUYes
Modbus ASCIIYes
OPC UA Client (Gen1)Yes
OPC UA Client Poll (Gen2)Yes
Allen-Bradley DF1Yes
Omron FINS TCPYes
Omron FINS UDPYes
Omron Hostlink C-ModeYes
Siemens S7 / S7 AdvancedYes
BACnet/IPYes

TIP

Protocols not listed are not supported for conversion for now.

How to export configuration from Litmus Edge

Follow these steps to export configuration in Litmus Edge.

  • Log in to the Litmus Edge admin UI and open System/Device Management

  • Under Devices, select the device to migrate

litmus-edge-export

  • Download the template and choose Plain Text as the format

The export must include structures that can be mapped, such as device (Device), registers/tags (Register), and so on; the exact fields follow what Litmus Edge exports.

Official conversion tool

Upload and convert

Conversion failure scenarios

When you download the EMQX Neuron configuration JSON, devices and tags that were not converted successfully (e.g. unsupported drivers) are automatically excluded; the file only contains successfully converted devices and their tags.

After expanding a device, you can see the detailed reasons for conversion failures:

Tag nameTypeAddressStatusFailure reason
outputuint64uint64H:0OK-
inputstringstringI:0FailedString length exceeded

Import and verify on the EMQX Neuron side

  • Ensure EMQX Neuron and Litmus Edge are on the same network so that EMQX Neuron can reach the devices that Litmus Edge was collecting from.

  • Log in to the EMQX Neuron Dashboard.

  • On the South Devices page under the data acquisition module, click Import.

  • Check the connection status of the imported drivers and ensure connections succeed.

  • On the Data Monitoring page, verify that acquisition data looks normal.

Detailed description of conversion protocols

Grouping strategy

EMQX Neuron supports multiple acquisition groups under a single driver; each group can have its own acquisition interval. Tags under a group cannot have individual acquisition intervals.

On the Litmus Edge side there is no group concept that fully matches EMQX Neuron; registers under a device are a flat list. This conversion tool: puts all tags under each device into one group named default; that group’s acquisition interval is the minimum pollingInterval among all tags on that device. If you need multiple groups in production, manually adjust groups and acquisition rates in EMQX Neuron.

Special notes on supported conversion protocols

1. Protocol name: Modbus TCP

  • Device mapping
Litmus Edge fieldEMQX Neuron fieldDescription
Dev.namenameDevice node name
Fixed valueplugin: "Modbus TCP"Plugin name
settings.networkAddressparams.hostIP address
settings.networkPortparams.portPort
settings.stationIdslave_id in tag addressSlave ID
settings["Zero-Based Addressing"]params.address_base"1" → base_0(0); "0" → base_1(1)
Fixed valueparams.connection_mode: 0Client mode
Fixed valueparams.timeout: 3000Connection timeout (ms, subject to product)
Fixed valueparams.interval: 20Send interval (subject to product)
  • Register area mapping (Litmus Edge Register.name prefix → EMQX Neuron area code)
Litmus Edge name prefixEMQX Neuron area codeMeaning
C0Coil
D1Discrete Input
I, I_bit, I_String3Input Register
H, H_bit, H_String4Hold Register
  • Data type mapping (Litmus Edge value_type → EMQX Neuron type)
Litmus Edge value_typeEMQX Neuron typeValue
bitNEU_TYPE_BIT11
int16NEU_TYPE_INT163
uint16NEU_TYPE_UINT164
int32NEU_TYPE_INT325
uint32NEU_TYPE_UINT326
int64NEU_TYPE_INT647
uint64NEU_TYPE_UINT648
float32NEU_TYPE_FLOAT9
float64NEU_TYPE_DOUBLE10
wordNEU_TYPE_UINT164
stringNEU_TYPE_STRING13
  • Read/write attributes (area → EMQX Neuron attribute)
Litmus Edge areaEMQX Neuron attributeDescription
Coil (C)3 (Read+Write)Read/write
Discrete Input (D)1 (Read)Read-only
Hold Register (H)3 (Read+Write)Read/write
Input Register (I)1 (Read)Read-only
Hold Register Bit (H_bit)1 (Read)EMQX Neuron does not support register bit writes
Input Register Bit (I_bit)1 (Read)Read-only
  • Byte order (4-byte)
Litmus Edge endiannessEMQX Neuron 4-byte (endianess)EMQX Neuron address suffix
"AB CD"ABCD (1)#BB / no suffix
"BA DC"BADC (2)#LB
"CD AB"CDAB (4)#BL
"DC BA"DCBA (3)#LL
  • Byte order (8-byte)
Litmus Edge endiannessEMQX Neuron 8-byte
"AB CD"LL (1)
"BA DC"LB (2)
"DC BA"BB (3)
"CD AB"BL (4)
  • Tag address format and addressing rules

EMQX Neuron Modbus TCP address format: {slave_id}!{area_code}{address}

  1. Ordinary numeric values: 1!40000 (slave_id=1, Hold Register, address=0)

  2. String: 1!40000.55H (example: 55-byte string at address 0)

  3. Register bit: 1!40000.0 (bit 0 of Hold Register at address 0)

Relationship to Litmus Edge settings["Zero-Based Addressing"]:

  1. "1" (zero-based) → EMQX Neuron address_base = 0; use the address as-is

  2. "0" (one-based) → EMQX Neuron address_base = 1; add 1 to the address

Mapping to Litmus Edge fields: The tables above are what the migration tool uses; if Litmus Edge export fields change, follow the tool release notes.