Plugin Catalog and Common Guidance
This page provides the plugin catalog, shared concepts, typical workflows, and common configuration guidance. When configuring a plugin, first confirm the field protocol, device address, port, account, certificate, and receiving rules of the external system.
Each plugin's variable address or target-variable mapping and its plugin-specific properties are kept together in Plugin Configuration Reference. Search that page by plugin name when configuring or troubleshooting a specific plugin.
Let's look at the terminology first
This article will retain the English configuration names on the page for easier alignment with interfaces, point tables, and external system documentation. Before configuring for the first time, understand these terms according to the following on-site meanings.
| Terminology | On-site Understanding |
|---|---|
Other | No ordinary communication channel plugins. The plugin manages the connection itself, or does not require TCP, UDP, or serial channels. |
| Cron expression | Timer expression. For ordinary cycles, the millisecond value is preferred, for example, 1000 represents 1 second; Use Cron only when it needs to run at fixed times. |
| RPC writes | external system backwrite points. It is only recommended to enable control at control points where remote control is allowed on site. |
| Target Variable Attributes | An external mapping of a forwarding target to a single variable, such as the external field name, Modbus slave address, sampling policy, or write permission. |
| StreamAsync | Asynchronous Read/Write Method via Serial Port. When the serial port is stable, it remains at default; adjust according to driver requirements when blocking or untimely reads occur. |
| DTU ID / DtuId | DTU or Passthrough Terminal Number, used to distinguish which remote device is accessing. |
| Broker | servers for message systems such as MQTT, Kafka, RabbitMQ, etc., can be understood on-site as "message relay servers." |
| Topic / Routing Key / URL | The location, subject, or request address where the external system receives data must be consistent with the agreement with the other system. |
| Payload | message body, which is the actual data content sent. |
- First, select the plugin and confirm the connection method for the channel or target.
- Then fill in the plugin properties to complete configurations such as connection, authentication, timeout, cache, and upload format.
- Finally, maintain variable properties (mapping individual variables' addresses under collection or forwarding targets, write permissions, etc.), configure variable addresses, write permissions, sampling policies, or custom fields.
Troubleshooting Approach
Do not read from the beginning of this article all the way to the end when configuring on-site. First, locate the plugin according to the protocol or external system to be integrated into the project, then check the corresponding address format, plugin properties, and variable properties.
| On-site issues | Prioritize viewing |
|---|---|
| PLC or instrument not reading data | Corresponding "address format" and "plugin properties" of the collection plugin. |
| Values are clearly incorrect | Data type, data parsing order, string length, BCD, byte order conversion parameters. |
| Multiple devices share a single channel | station number, slave station address, DTU ID, channel connection method, and packaging length. |
| External systems cannot receive data | Connection parameters, Topic/URL/Table Name, upload template, and cache settings for the corresponding data forwarding plugin. |
| External systems must invert control | target and variable levels allow RPCs to write and on-site control permissions. |
| Requires historical traceability | historical data objectives, historical alarm objectives, sampling strategies, retention days, and offline caching. |
Before configuration, prepare the equipment manual, point table, communication parameters, and the upper-level system interface description and security boundaries. If you cannot determine the byte order or address format, first use Device Debugging Single Point Read Validation, then batch import the point list.
Current Plugin Scope
The current catalog contains 107 collection plugins and 15 data-forwarding plugins, for a total of 122 externally visible plugins. The Plugin Management page can filter them by vendor or ecosystem, type, status, license, and platform. The exact count can vary with the installed package and license. The tables below cover 47 common plugins and 75 additional collection plugins. Each row corresponds to one independent plugin description shown in Plugin Management; address formats and properties for common plugins are documented in detail later on this page.
Common Collection Plugins
| Plugin search name | Plugin description |
|---|---|
CanMaster | CAN and CAN FD frame transmission, filtering, and variable-mapping driver. |
ControlLogixMaster | Allen-Bradley ControlLogix EtherNet/IP tag read/write driver. |
CustomPacketMaster | Device request and response parsing with custom complete packets. |
DCONMaster | DCON ASCII industrial I/O module address read/write driver. |
Dlt645_2007Master | DL/T 645-2007 multifunction meter collection driver. |
EDPF_NTMaster | EDPF-NT UDP unsolicited-report receiver and variable-mapping driver. |
GatewayMqttCollectClient | Collects ThingsGateway data as an MQTT client. |
GatewayMqttCollectServer | Receives ThingsGateway data as an MQTT server. |
HJ212Master | HJ 212 pollution-monitoring data receiver and variable-mapping driver. |
IEC61850Master | IEC 61850 driver for MMS read/write, RCB reports, GOOSE, and SOE collection. |
InovanceMaster | Inovance PLC collection driver for Modbus and vendor-specific address models. |
KELID2008Master | KELID2008 UDP unsolicited-report receiver and variable-mapping driver. |
LKSISMaster | LKSIS UDP unsolicited-report receiver and variable-mapping driver. |
Mc1E_BinaryMaster | Mitsubishi MC 1E binary PLC address read/write driver. |
Mc3E_BinaryMaster | Mitsubishi MC 3E binary PLC address read/write driver. |
ModbusC1Master | Modbus C1 extended-protocol master address read/write driver. |
ModbusC20Master | Modbus C20 extended-protocol master with address read/write and dedicated diagnostics. |
ModbusMaster | Modbus TCP, RTU, and ASCII master collection driver. |
MqttCollectClient | Subscribes to and collects messages as an MQTT client. |
MqttCollectServer | Receives reported data as an MQTT server. |
OmronFinsMaster | Omron FINS TCP, UDP, and serial address read/write driver. |
OpcAeMaster | Windows OPC AE event subscription, condition reception, and variable-mapping driver. |
OpcDaMaster | Collection driver for Windows OPC DA servers. |
OpcUaMaster | Collection driver for OPC UA servers. |
PCCCMaster | Allen-Bradley PCCC file-table address read/write driver. |
SECSMaster | SECS/GEM HSMS messaging, transaction, and equipment-initiated message driver. |
SiemensS7Master | Collection driver for Siemens S7 PLCs. |
TIANXINMaster | TIANXIN instrument protocol address read/write driver. |
TS550Master | TS550 industrial device address read/write driver. |
USBScaner | Local USB scanner input listener and variable-update driver. |
VigorMaster | Vigor PLC address read/write driver. |
ZeroMQCollectClient | ZeroMQ subscription receiver with topic filtering and variable mapping. |
Data-Forwarding Plugins
| Plugin search name | Plugin description |
|---|---|
HisAlarmForwardTarget | Stores historical alarm records in the configured database. |
HisDataForwardTarget | Stores variable history data in the configured database. |
IEC104Slave | IEC 60870-5-104 server target for data mapping, telemetry publishing, and remote-control write-back. |
IEC61850Server | IEC 61850 server target for MMS modeling, reports, GOOSE publishing, and control write-back. |
KafkaProducer | Publishes gateway data to Apache Kafka. |
ModbusSlave | Exposes gateway data through a Modbus server or slave. |
MqttClientProducer | Publishes gateway data as an MQTT client. |
MqttServerProducer | Publishes gateway data through the built-in MQTT server. |
OpcUaServer | Exposes gateway data through an OPC UA server. |
RabbitMQProducer | Publishes gateway data to RabbitMQ. |
RealDataForwardTarget | Stores real-time variable data in the configured database. |
SyncBridge | Synchronizes runtime data between ThingsGateway Hub and Agent. |
ThingsBoardClientProducer | Forwards gateway data to ThingsBoard through MQTT. |
Webhook | Sends gateway data to generic web services through HTTP webhooks. |
ZeroMQProducer | ZeroMQ forwarding target for variables, devices, alarms, and plugin events. |
Standard Edition Addition
| Plugin search name | Plugin description |
|---|---|
Dlt645_1997Master | DL/T 645-1997 meter collection and write driver. |
Professional PLC and Controller Plugins
| Plugin search name | Plugin description |
|---|---|
Df1Master | Allen-Bradley DF1 serial file-table read/write driver. |
LogixCipMaster | Allen-Bradley Logix EtherNet/IP tag read/write driver. |
MicroCipMaster | Allen-Bradley Micro-series EtherNet/IP tag read/write driver. |
SlcEthernetMaster | Allen-Bradley SLC Ethernet file-table read/write driver. |
BeckhoffAdsMaster | Beckhoff ADS symbolic and address-based variable read/write driver. |
CimonHmiMaster | CIMON HMI Ethernet protocol variable read/write driver. |
DeltaMaster | Delta DVP and AS-series PLC address read/write driver. |
FatekProgramMaster | Fatek PLC programming-port register read/write and run-control driver. |
FujiCommandMaster | Fuji Command Setting protocol PLC address read/write driver. |
FujiSpbMaster | Fuji SPB protocol PLC address read/write driver. |
FujiSphMaster | Fuji SPH Ethernet PLC address read/write and CPU-control driver. |
GeSrtpMaster | GE SRTP PLC address read/write, status, and clock diagnostics driver. |
InovanceComputerLinkMaster | Inovance Computer Link PLC address read/write, status, and run-control driver. |
InovanceConnectedCipMaster | Inovance connected EtherNet/IP CIP tag read/write driver. |
InovanceEasyNetMaster | Inovance EasyNet PLC address read/write driver. |
KeyenceKvOldMaster | KEYENCE legacy KV PLC address read/write driver. |
KeyenceMcAsciiMaster | KEYENCE MC-compatible 3E ASCII address read/write driver. |
KeyenceMcBinaryMaster | KEYENCE MC-compatible 3E binary address read/write driver. |
KeyenceNanoMaster | KEYENCE KV Nano Upper Link address read/write and status diagnostics driver. |
LsisMaster | LSIS Cnet and Fast Ethernet PLC address read/write driver. |
MegMeetMaster | MegMeet MC-series PLC address read/write driver. |
Mc1E_AsciiMaster | Mitsubishi MC 1E ASCII PLC address read/write driver. |
Mc3E_AsciiMaster | Mitsubishi MC 3E ASCII PLC address read/write driver. |
A3CMaster | Mitsubishi A3C serial address read/write, status, and control driver. |
FxLinksMaster | Mitsubishi FX Links serial address read/write and PLC-control driver. |
FxSerialMaster | Mitsubishi FX programming-port serial address read/write and PLC-control driver. |
MitsubishiCipMaster | Mitsubishi EtherNet/IP CIP tag read/write driver. |
McR_BinaryMaster | Mitsubishi iQ-R MC binary PLC address read/write driver. |
NanjingDcsMaster | Nanjing DCS Modbus TCP driver with connection probing and leading status frames. |
OmronCipMaster | Omron unconnected EtherNet/IP CIP tag read/write driver. |
OmronConnectedCipMaster | Omron connected EtherNet/IP CIP tag read/write driver. |
OmronHostLinkMaster | Omron Host Link serial address read/write driver. |
OmronHostLinkCModeMaster | Omron Host Link C-Mode address read/write and PLC-status diagnostics driver. |
PanasonicMcMaster | Panasonic QnA-compatible MC 3E PLC address read/write driver. |
PanasonicMewtocolMaster | Panasonic Mewtocol PLC address read/write and status diagnostics driver. |
SiemensFetchWriteMaster | Siemens Fetch/Write protocol PLC address read/write driver. |
SiemensPpiMaster | Siemens S7-200 PPI serial address read/write driver. |
ToyoPucMaster | Toyo PUC computer-link address read/write, status, and command driver. |
XinJeInternalMaster | Xinje PLC internal TCP protocol 24-bit address read/write driver. |
XinJeModbusMaster | Xinje XC, XD, and XL-series mixed Modbus address read/write driver. |
YaskawaMemobusMaster | Yaskawa Memobus TCP and UDP address read/write and diagnostics driver. |
YokogawaLinkMaster | Yokogawa Link PLC address read/write, status, clock, and module-control driver. |
Professional Instrument, Sensor, and Identification Plugins
| Plugin search name | Plugin description |
|---|---|
AiBusMaster | AI-BUS instrument protocol collection driver. |
BarcodeIngressMaster | Accepts inbound TCP scanner connections and maps continuous barcode reports to variables. |
Cjt188Master | CJ/T 188 utility meter collection driver. |
Dam3601Master | DAM3601 temperature input register collection and temperature snapshot driver. |
Dlt698Master | DL/T 698 energy data collection, unsolicited reporting, and link-management driver. |
Dtsu6606Master | DTSU6606 meter register collection and electrical snapshot driver. |
EcFanMaster | EC fan speed reading, station configuration, and explicit control driver. |
KeyenceDlen1Master | KEYENCE DL-EN1 sensor command, status, and I/O operation driver. |
KeyenceSr2000Master | KEYENCE SR-2000 scanning, status, reset, and lock-control driver. |
RkcMaster | RKC temperature-controller collection driver. |
SamCardMaster | Resident ID security-module driver for card discovery, selection, and explicit reads. |
ScaleStreamMaster | Receives continuous scale output over serial or reverse TCP and maps it to variables. |
ShineInMaster | ShineIn machine-vision lighting controller read/write driver. |
TurckRfidMaster | Turck RFID tag-memory read, write, and dedicated diagnostics driver. |
VibrationStreamMaster | Receives vibration sensor real-time and peak-value reports and maps them to variables. |
DigitronCplMaster | Azbil Yamatake Digitron CPL instrument address read/write driver. |
Professional Robot, Motion, and CNC Plugins
| Plugin search name | Plugin description |
|---|---|
AbbWebApiMaster | Reads robot status, I/O, joints, and logs through ABB Robot Web Services. |
EfortRobotMaster | Efort robot operating-state and pose snapshot collection driver. |
EstunRobotMaster | Estun robot status, register, and program-control driver. |
FanucCnc0iMaster | FANUC CNC 0i status, PMC, macro-variable, and program-transfer driver. |
FanucRobotInterfaceMaster | FANUC Robot Interface bit, word, pose, and task-status collection driver. |
HyundaiTrackingMaster | Hyundai robot UDP tracking-state and position-increment control driver. |
KukaControllerTcpMaster | KUKA controller TCP variable read/write and program-control driver. |
KukaVariableProxyMaster | KUKA KRC4 variable-proxy read/write and program-control driver. |
OrientalMotorMaster | Oriental Motor EtherNet/IP cyclic I/O image read/write driver. |
YamahaRcxMaster | Yamaha RCX multiline command, robot-status, and motion-control driver. |
Yrc1000Master | Yaskawa YRC1000 text-protocol status, program, servo, and motion-control driver. |
YrcHighEthernetMaster | Yaskawa High Speed Ethernet binary UDP status, I/O, and motion-control driver. |
Professional Industry Protocol Plugins
| Plugin search name | Plugin description |
|---|---|
Iec104Master | IEC 60870-5-104 master interrogation, telemetry, clock synchronization, and remote-control driver. |
KnxMaster | KNXnet/IP tunneling group-address read/write driver. |
OpenProtocolMaster | Atlas Copco Open Protocol tightening-result, command, and unsolicited-message driver. |
SecsSerialMaster | SECS-I half-duplex transaction, multi-block reassembly, and equipment-initiated message driver. |
Full Attribute Verification in Current Version
This section checks plugin properties based on the actual exposure at the current runtime. During on-site reading, first check the "Public Attribute Group," then check the "Plugin Checklist" to see if a plugin has a dedicated field; If the table says "No page plugin property," it means the plugin does not have additional plugin attributes and still needs to maintain basic configurations such as device name, execution interval, and variable address.
Data Forwarding Group Properties
The data forwarding group is not a plugin, but it determines whether a variable enters the forwarding chain. If a variable has a value but is not forwarded, this table should be checked first.
| Configuration Items | Description |
|---|---|
| Name | Forwarding Group Display Name, Unique Within the Same System, It is recommended to reflect the scope of business, such as MES_ key points. |
| Description | Record the group's purpose, integration system, acceptor, or maintenance boundary. |
| Enable | After turning it off, none of the targets in the group will run. |
| Log level | Detail level of group logs. Joint debugging can temporarily use Debug or Trace, then return to Info after stabilization. |
| Sort | Page display order; the smaller the value, the higher it is. |
| Variable range pattern | determines the source of variables. Manual is manual selection, All is all variables, CollectDevice filter by device, CollectGroup filter by collection group. |
| For range configuration | CollectDevice, and when CollectGroup, enter the collection group name. Multiple values are separated by English commas. |
| Trigger Modes: | Change trigger by change,Interval triggered by timer, IntervalOrChange triggered by both change and timing. |
| Timed forwarding interval | Used when triggered at a scheduled time. For ordinary cycles, prioritize filling in milliseconds, for example, 1000; Use the cron expression at fixed times. |
| Online variables only | Once enabled, offline variables will not be forwarded. Do not turn it on when the last value before offline is reserved on site. |
| Batch Processing Mode | Decide how to split the batch after a single trigger, for example, not splitting the batch or splitting by data group. |
| Maximum batch | Maximum number of variables per batch. Reduce when external interface times out or the message body is too large. |
Group variable attributes only affect "how variables participate in forwarding within the group," not the target variable attributes.
| Configuration Items | Description |
|---|---|
| Variables | Variables currently included in the forwarding group. In manual range, you must first add it here for the target variable attribute to take effect. |
| Enable | When disabled, this variable does not participate in this group's forwarding. |
| Data Group | Used to split batches by business unit, such as production line, region, or equipment group. |
| Update Mode | Single-variable trigger mode, can cover group-level trigger modes. |
| Participate group trigger | After closure, this variable can still be uploaded in batches, but its own changes will not wake up the entire group. |
| Alias | Name of the external variable used during upload. When null, the original variable name is usually used. |
| Sort | Output order of variables within the group. |
Common Collection Attributes
| Attribute Group | Included Attributes | Description |
|---|---|---|
| Collection Retries | Number of failed retries, read/write duty cycle, write priority | Applicable collection plugins will display these fields. Failed retries are used for occasional timeout retrys; Read/write duty cycle controls intermittent reads when writing is heavy; Write-first is used in scenarios where control instructions need to be issued faster. |
| Foundation Universal Read/Write | Read/write timeout, pre-frame time, string inverted bytes, data parsing order | Suitable for address-based read/write drivers. Timeout and pre-frame time solve slow device or serial port spacing issues; String inversion and data parsing order are used to correct byte order. |
| Package read | Maximum package length | Control the maximum address length for a single merged read. Efficiency can be improved when there are many points; when the equipment does not support large packages, it can be reduced. |
| Modbus Packaging Rules | FC1/FC2/FC3/FC4 maximum read quantity, FC15/FC16 maximum batch write quantity | Only used on Modbus master stations. Limit the number of frames or registers according to actual function codes, replacing the old single "maximum package length." |
| DTU | DTU ID | Enter the terminal number when accessing via DTU or transparent terminal; Direct-connected devices are usually left blank. |
Collection Plugin Checklist
| Plugin | Confirmed Attributes |
|---|---|
| Memory | No page plugin attribute. Only the memory variable itself is maintained, without needing communication link attributes. |
| Modbus master station | Collection and retry, Foundation general read/write, Modbus packaging rules, DTU; Exclusive Attributes: Modbus type is used to select protocol forms such as TCP/RTU. The default station number is the slave address and can be overwritten by the station number in the variable address. |
| Siemens S7 | Collect and retry, Foundation general read/write, package read; Exclusive attributes: PLC type selected as S200/S300/S400/S1200/S1500, etc. Rack/Slot is filled in according to the PLC rack slot number, and Local TSAP is only filled in when TSAP is specified on-site. |
| DLT645-2007 | Data Acquisition Retry, Foundation General Read/Write, DTU; Exclusive attributes: The default address is a 12-bit table address, with passwords and operator codes used for writing tables or special reads. The pregress header defaults to FEFEFEFE. |
| OPC UA client | collection and retry; Exclusive attributes: connection URL, login account, login password, data change trigger conditions, security policy, name identifier, certificate, whether to use SourceTime, server data type loaded, subscription activation, update frequency, dead zone, maximum group size, heart rate rate. |
| OPC DA client | collection and retry; Exclusive attributes: OPC server IP, OPC server name, server-side time, subscription mode, detection reconnection frequency, dead zone, maximum group size, subscription update frequency. Remote DA also needs to confirm DCOM permissions. |
| MQTT acquires client | Connection type, IP address, port, WebSocket path, SSL enabled, SSL target hostname, client certificate name, CA name, allowed untrusted certificate, SSL protocol version, check certificate revocation, client ID, username, password, lifetime retention, session clear, MQTT protocol version, QoS level, detailed logs, connection timeout, check and clear time. |
| MQTT collects server | connection type, port, WebSocket path, SSL enabled, server certificate name, CA name, allowed untrusted certificate, SSL protocol version, checks certificate revocation, allows connection ID prefixes, username, password, detailed logs, checks erasure time. |
| Dedicated Gateway MQTT collection client | Fixed Topic root, remote writes, snapshot/request/offline timeouts, source/catalog/RPC/payload/rate/concurrency boundaries, one shared Broker connection, and multiple RemoteKey sources. |
| Dedicated Gateway MQTT collection server | The same fixed-protocol boundaries as Client mode, plus one listener, server certificate, and exact per-source ClientId, credentials, and optional certificate fingerprint. |
| CAN master station | Collect and retry, Foundation general read/write; Exclusive attributes: Endpoint address selects CAN adapter and channel, baud rate is arbitration segment rate, data phase baud rate is only valid for CAN FD, protocol mode selects CAN2.0/CAN FD, BRS is enabled to control data segment rate variation, internal terminal resistors are selected via bus wiring, hardware filter CANID list is used to receive only specified CAN IDs. |
| Allen-Bradley ControlLogix | Acquisition and retry, Foundation general read/write, packaged read; Exclusive properties: Slot is the CPU slot number, and Backplane indicates whether to address via the backplane. |
| Allen-Bradley PCCC | Acquisition and retry, Foundation general read/write, packaged read; No other page plugin properties; focus on verifying variable address format. |
| DCON master station | Acquisition and retry, Foundation general read/write, packaged read, DTU; Exclusive attribute: Station is a DCON station number. |
| HJ212 Master | Acquisition and retry, Foundation general read/write; No other page plugin properties; focus on verifying address format and link parameters. |
| Inovance | Collection and retry, Foundation general read/write, packaged read, DTU; Exclusive attributes: ModbusType selects the underlying Modbus mode, InovanceType selects Inovance protocol or device type, Station is the station number. |
| KELID2008 | Collection retry, Foundation general read/write; No other page plugin properties. |
| Mitsubishi 1E | Acquisition and retry, Foundation general read/write, package read; Exclusive attributes: PLCID is filled in according to the Mitsubishi 1E communication configuration. |
| Mitsubishi 3E | Acquisition and Retry, Foundation General Read/Write, Package Read; Exclusive attributes: NetWorkID, IOModuleStation, IOModuleID, PLCID are filled in according to Mitsubishi network number, station number, module number, and PLC number. |
| ModbusC1 | Acquisition and retry, Foundation general read/write, packaged read, DTU; Exclusive Attribute: ModbusType selects protocol form, Station is the station number. |
| ModbusC20 | Acquisition and retry, Foundation general read/write, packaged read, DTU; Exclusive Attribute: ModbusType selects protocol form, Station is the station number. |
| Omron FINS | Collect and retry, Foundation general read/write, package read; Exclusive attributes: ICF, GCT, DNA, DA2, SNA, SA2, SID are FINS frame addressing fields, which must match the Omron network configuration. |
| SECS | Collection and retry, Foundation general read/write, packaged read; Exclusive Attribute: DeviceID is the SECS device identifier. |
| TIANXIN | Acquisition and retry, Foundation general read/write, packaged read, DTU; Exclusive attribute: Station is the station number. |
| TS550 | Acquisition and retry, Foundation general read/write; No other page plugin properties. |
| Vigor | Collection and retry, Foundation general read/write, packaged read, DTU; Exclusive attribute: Station is the station number. |
| IEC 61850 client | collection and retry; Exclusive properties: IED IP address, IED port, ConnectTimeout (connection timeout ms), maximum package quantity, UpdateRate (update frequency ms), SCL configuration file path, enabling RCB report subscription, RCB report ID, RCB reference list, ReportBufTime, ReportIntgPd, RCB TrgOps, RCB OptFlds, RCB single-request write, ReportReservationTimeSeconds (BRCB reserved time seconds), BRCB buffer clearing, enabling GOOSE subscriptions, GOOSE control block references, GOOSE network interface ID, GOOSE APP-ID, using URCB (non-buffered reporting), IED authentication password, RequestTimeout (request timeout ms), maximum PDU size, enabling TLS encrypted connections, TLS client certificates, TLS CA certificates, TLS chain verification, TLS only allows known certificates, SOE event log configuration. Variable auxiliary attributes include object references (assistance), functional constraints (assistance), and allow writes, mainly used by importers or model generation. |
| OPC AE | collection retry; Exclusive attributes: OpcAeUrl is the AE service connection address, CheckRate is the detection reconnection period. |
| ZeroMQ collects client | connection address, socket type, binding mode, subscription theme prefix, high watermark mark, detailed logs, and check clearance time. |
| EDPF_NT | No page plugin properties. |
| LKSIS | No page plugin property. |
| USBScaner | No page plugin properties. |
Public Data Forwarding Target Attributes
| attribute group | Include attribute | Description |
|---|---|---|
| Target Basic Attributes | Name, Description, Enable, Plugin Name, Log Level, Startup Timeout, Redundancy Enabled, Redundancy Target, Redundancy Mode, Redundancy Scan Interval, Redundancy Switch Determination Script | All forwarding targets are present. If the target is not enabled or starts timed out, it will not be sent; Redundancy is only used when the primary and backup targets are clearly defined. |
| Offline Caching | Enable offline caching, maximum row count of cached files, upload slicing size, memory queue limit, filter offline data, number of concurrent uploads | Used for resending when external systems are temporarily unavailable. Key history, alarms, and platform upload suggestions are enabled; When real-time and sequencing requirements are high, cautiously increase concurrency. |
| Templates and Scripts | Detailed logs, JSON indentation formatting, JSON ignoring Null, device list upload, variable list upload, variable dictionary upload, alarm list upload, alarm dictionary upload, plugin event list upload, device topic template, variable topic template, alarm topic template, plugin event topic template, device entity script, Variable entity scripts, alarm entity scripts, plugin event entity scripts, upload template configurations | common upload targets such as MQTT, Kafka, RabbitMQ, Webhook, ZeroMQ, etc. Topics determine where to send content, while physical scripts and upload templates determine what content to publish. |
| Channel-type Target | Channel type, remote address, local bound address, SSL enabled, SSL target hostname, SSL client certificate, SSL server certificate, SSL CA certificate, Allow untrusted certificate, SSL protocol, check certificate revocation, serial port, baud rate, data bit, check bit, check bit, stop bit, DtrEnable, RtsEnable, Asynchronous flow, handshake method, serial port input buffer size, serial port output buffer size, maximum concurrency, packet cache time, connection timeout, maximum number of connections, client cleanup time, heartbeat content, heartbeat status, heartbeat time, DtuId, DtuId Hex, DtuId Hex, Dtu service type | Modbus slave, IEC104 slave, etc. For target uses that need to listen for or connect to TCP/serial/DTU. The server mode focuses on verifying the local binding address and firewall. |
| MQTT Producer Common Items | Connection Type, Port, WebSocket Path, SSL Enabled, CA Name, Allow Untrusted Certificates, SSL Protocol Version, Check Certificate Revocation, Username, Password, QoS Level, Message Retention, RPC Write Topic, History Query Topic, Data Request Topic, RPC Script | Shared by MQTT client and server producers. History Query Topic defaults to RpcHistory, used for restricted history, numerical sequences, and alarm RPCs. |
| General Variable Attributes | Data 1, Data 2, Data 3, Data 4, Data 5, Data 6, Data 7, Data 8, Data 9, Data 10 | Custom fields for a single variable under a specific target, can be used for Topic, Routing Key, URL, or upload templates. |
Data Forwarding Target Plugin Checklist
| Target plugin | Confirmed target attribute | Confirmed target variable attribute |
|---|---|---|
| Modbus slave | Basic target property, channel-type target; Exclusive attributes: Modbus type, default station number, data parsing order, string inverted byte, multi-site mode, allowing RPC writes, immediate memory write, sending latency, client permission list. | Slave variable address, data type, and allowing RPC writes. |
| MQTT client producer | target base attributes, offline cache, templates and scripts, MQTT producer common items; Exclusive attributes: IP address, SSL target hostname, client certificate name, client ID, uptime retention, session clear, MQTT protocol version. | Data 1, Data 2, Data 3, Data 4, Data 5, Data 6, Data 7, Data 8, Data 9, Data 10. Allow RPC writing. |
| MQTT server producer | target base attributes, offline cache, templates and scripts, MQTT producer common items; Exclusive attributes: server certificate name, allowed connection ID prefix. | Data 1, Data 2, Data 3, Data 4, Data 5, Data 6, Data 7, Data 8, Data 9, Data 10. Allow RPC writing. |
| ThingsBoard client producer | Target basic attributes, offline caching; Exclusive attributes: connection type, IP address, port, WebSocket path, SSL enabled, SSL target hostname, client certificate name, CA name, allowed untrusted certificate, SSL protocol version, certificate revocation for checking, client ID, username, password, uptime retention, session clearing, MQTT protocol version, QoS level, message retention, detailed log. | Allows RPC writes. |
| OPC UA server | target base attributes; Exclusive attributes: service address, name identifier, security policy, allowed RPC writes, username, password, server certificate name. | Data types and allowing RPC writes. |
| Kafka Producer | Target base attributes, offline cache, templates, and scripts; Exclusive attributes: service address, posting timeout, username, password, security protocol, SASL mechanism. | Data 1, Data 2, Data 3, Data 4, Data 5, Data 6, Data 7, Data 8, Data 9, Data 10. |
| RabbitMQ Producer | Target basic attributes, offline cache, templates, and scripts; Exclusive attributes: IP address, port, username, password, declaration queue, declaration switch, enable release acknowledgment, routing successful, switch type, publication timeout, virtual host, switch name. | Data 1, Data 2, Data 3, Data 4, Data 5, Data 6, Data 7, Data 8, Data 9, Data 10. |
| Historical Data Objectives | Basic Target Attributes and Offline Cache; Exclusive attributes: database type, custom SQL mode, sharding policy, join string, numeric historical table name, string history table name, retention days, historical table script, time zone offset, forced insert, default sampling policy, default sampling interval, default conditional expression, custom template configuration, dual-database mirroring. | Sampling strategies, sampling intervals, and conditional expressions. |
| Real-time data objectives | Basic target attributes and offline caching; Exclusive attributes: database type, join string, real-time table name, real-time table script, time zone offset. | No page target variable property. |
| Historical alarm targets | Basic target attributes and offline cache; Exclusive attributes: database type, sharding policy, join string, historical alarm table name, retention days, historical alarm table script, time zone offset, minimum alarm level, dual database mirror. | No page target variable properties. |
| Webhook | Target basic attributes, offline cache, templates, and scripts; Exclusive attributes: signature key, custom request header, message format, Timeout (request timeout seconds). The Webhook variable topic template is the request URL. | Data 1, Data 2, Data 3, Data 4, Data 5, Data 6, Data 7, Data 8, Data 9, Data 10. |
| SyncBridge | Target base properties; dedicated properties: Role, LocalPeerId, ListenUri, RemoteUri, VerifyToken, transport certificate, CA, target host, TLS, authenticated heartbeat, real-time batch/Ack limits, configuration chunks, synchronization policy, Hub concurrency, and remote RPC gate. | No page target variable properties. |
| IEC104 Slave | Basic Target Attributes and Channel Targets; Exclusive attributes: IsWithTimeInfo, Station, DeviceRpcEnable, SendDelayTime. | StartAddress, DataType, VariableRpcEnable. |
| IEC 61850 Server | Target Basic Attributes; Exclusive properties: IED name, IED port, vendor name, write allowed, CallbackResultTimeoutMs (callback timeout ms), SCL configuration file path, GOOSE network interface interface, enabling GOOSE release, reporting DataSet name, URCB name, BRCB name, report ConfRev, report TrgOps, report OptFlds, report BufTime, report IntgPd, GOOSEDataSet name, GOOSE block name, GOOSE block AppID, GOOSEConfRev, GOOSE fixed offset, GOOSE minimum time, GOOSE maximum time, GOOSE VLAN priority, GOOSE VLAN ID, GOOSE APPID, GOOSE TARGET MAC, SOE EVENT LOG CONFIGURATION, IEC 61850 VERSION, MAXIMUM NUMBER OF CONNECTIONS, ENABLED DYNAMIC DATASET, Enable file services, enable log services, report buffer size, BRCB includes ResvTms, RCB includes Owner, file service paths, enable TLS encrypted connections, TLS server certificates, TLS CA certificates, TLS chain verification, TLS only allows known certificates. | Object references, data types, allowed writes, control models, GOOSE release. |
| ZeroMQ Producer | Target basic attributes, offline cache, templates, and scripts; Exclusive attributes: connection address, socket type, binding mode, high watermark mark. | Data 1, Data 2, Data 3, Data 4, Data 5, Data 6, Data 7, Data 8, Data 9, Data 10. |
Address Data Conversion Parameters
Some collection plugins directly read the device's original bytes. In this case, you can use a semicolon (;) Add conversion parameters to specify byte order, string length, or encoding method. On the same device, different variables can use different conversion parameters.
These conversion parameters are mainly used for Byte parsing data collection plugins such as Modbus main station, Siemens S7, DLT645-2007, etc. Plugins like OPC UA, OPC DA, and MQTT usually provide data directly from the server or message content, without needing to add these byte parsing parameters to the address.
General Conversion Parameters
| Parameters | Syntax | Instructions for Use |
|---|---|---|
| Data Formats | data=ABCD,data=BADC,data=CDAB, data=DCBA | Byte order for 4-byte values. If floating-point readings show exceptionally large, very small, or abnormal positive or negative values, prioritize checking this item. |
| String length | len=N | The string variable must specify the number of bytes to read, for example, len=10. If the length is not specified, string read/write is prone to failure or excessive content may be read. |
| BCD formats | bcd=C8421,bcd=C5421,bcd=C2421, bcd=C3, bcd=Gray | Filled in when the device uses BCD encoding. If readings from electric meters or instrument-type equipment do not meet expectations, BCD format should be confirmed according to the equipment protocol. |
| Character Encoding | encoding=UTF-8,encoding=ASCII,encoding=Default, encoding=Unicode | Fill in when a string appears garbled. The actual coding of the equipment should be consistent. |
| Variable-length string | vsl=true | Used for strings with length headers, commonly found in S7 strings. After activation, the maximum length must still be specified using len=N. |
Example
40001;data=CDAB: Read the Modbus retention register and exchange parses by little-ender byte.40001;len=10;encoding=UTF-8: Read a 10-byte UTF-8 string.40001;bcd=C8421: Interpreted reading encoded according to BCD 8421.DB1.DBW0;vsl=true;len=20: Read variable-length strings in S7 data blocks, up to 20 bytes.
Plugin-specific address parameters
| Plugin | parameters | Syntax | Instructions |
|---|---|---|---|
| Modbus main site | Station number | s=N | Override default station numbers in plugin properties. When there are multiple slaves under a channel, they can be specified separately in the variable address. |
| Modbus master | write function code | w=6 or w=16 | Specify whether to write with a single register or multiple registers when writing to the keep-up register. Used when writing fails or the device only supports one type of function code. |
| Modbus master station | Read function code | f=N | Directly specify to read function code. It is only used when the field protocol has special agreements regarding the address area and function code. |
| Modbus master station | -bit index | .N | reads a bit from a register, for example 40001.3. Suitable for splitting multiple state bits within a single register. |
| Siemens S7 | Wide string | W=true | Parse as WString/Unicode string. If the regular string is garbled or incorrect, confirm whether to enable it by the PLC string type. |
Collection Plugin
Acquisition plugin is used to read data from external devices or systems such as PLCs, meters, OPC services, MQTT Brokers, and more.
Modbus Master Station
Address Format
| Address Range | Registers | Read/Write Purpose | Example |
|---|---|---|---|
00001~09999 | Coil | Read/Writable | 00001 |
10001~19999 | Discrete Input | Read-Only | 10001 |
30001~39999 | Input Registers | Read-only | 30001 |
40001~49999 | Register Retention | Readable and Writable | 40001 |
Plugin Properties
| Configuration Items | Default Value | Instructions to Fill |
|---|---|---|
| Modbus Type | Select by Page | ModbusTcp is for Ethernet Modbus TCP; ModbusRtu is for serial RTU; ModbusAscii is for Modbus ASCII. ASCII supports only SerialPort, TcpClient, and streaming TcpService channels. It does not support UdpSession, because ASCII frames depend on a continuous byte stream with : start and CRLF termination. |
| Default station number | 1 | Slave station address. If only one device is connected to a single channel, fill in the equipment station number; Multiple station numbers on the same channel can be overwritten in variable addresses using s=N. |
| Maximum number of coil bits read by FC1 | 1600 | maximum number of coil bits read per FC1 request, range 1~2000. |
| FC2 maximum read discrete input bits | 1600 | maximum number of discrete input bits read per FC2 request, range 1~2000. |
| FC3 maximum number of hold registers to read: | 100 | Number of hold registers that can be read at the highest level per FC3 request, range: 1~125. |
| FC4 maximum number of input registers to read | 100 | maximum number of input registers to be read per FC4 request, range 1~125. |
| FC15 Maximum batch write coil bits | 1968 | Maximum number of coil bits written per FC15 request, range 1~1968. |
| FC16 maximum batch write registers | 123 | maximum number of registers written per FC16 request, range 1~123. |
| Read/write timeout | 3000 milliseconds | single read/write wait time. Increase when serial, wireless, or remote networks are slow; If it is too large, fault response slows down. |
| Time before frame | 0 milliseconds | wait time before sending a packet. Some serial converters or older equipment require message spacing when setting the signal. |
| String inverted byte | Closed | String inverted by word. Try to enable when two adjacent characters in a string are reversed. |
| Data parsing order | Select | numeric byte order on site. Adjusts when floating-point or integer readings are abnormal. |
| DTU ID | Leave blank | Fill in when accessing via DTU/transhaul device and devices need to be distinguished by terminal ID; Direct-connected devices are usually left blank. |
| Number of failed retries | 3 | Number of retries after a single read/write failure. Occasional network jitter can be appropriately increased, but long-term faults should not be set too high. |
| Read/Write Duty Cycle | 3 | When writing tasks are frequent, perform several writes followed by interwoven reads to avoid prolonged write-only and non-read-only tasks. When control commands are dense, adjustments can be made according to the on-site rhythm. |
| Write Priority | Off | When Write Tasks Are Enabled and Sent First. Suitable for scenarios where control commands require faster response; Normal collection can be kept off. |
Modbus master has removed the old MaxPack(maximum package length) field. After upgrading, please open each Modbus master device one by one and check the above six rules. Do not assume that old values will be automatically mapped. If the read length of a single variable or the number of batch writes exceeds the corresponding upper limit, the system will return a validation error before constructing the packet; If the supported capacity of on-site equipment is below the protocol limit, it should continue to be lowered according to the equipment manual.
Siemens S7
Address Format
| Prefix | Area | Example | Instructions for Use |
|---|---|---|---|
I | Input Zone | I0.0,IB0,IW0, ID0 | Read input points, input bytes, input words, or enter dual characters. |
Q | output area | Q0.0,QB0,QW0, QD0 | read or write output area. |
M | Intermediate storage area | M0.0,MB0,MW0, MD0 | Read or write to the M section. |
DB | Data Block | DB1.DBX0.0, DB1.DBB0, DB1.DBW0, DB1.DBD0 | Press DB number. Address Fill in. |
AI | analog input | AI0, AIW0 | read analog input. |
AQ | analog output | AQ0, AQW0 | Read or write analog output. |
T | Timer | T0 | Read Timer. |
C | counter | C0 | read counter. |
V | S200 V Zone | V0,VB0, VW0, VD0 | S200 Common Address Area. |
S7 strings should be filled in according to the actual definition in the PLC: for fixed-length strings, use len=N; For strings with length headers, use vsl=true;len=N; For wide strings, use W=true.
Plugin Properties
| Configuration Items | Default Values | Instructions to Fill Out |
|---|---|---|
| PLC Type | Select by Page | Select S200,S200Smart,S300,S400, S1200, or S1500. If the model is selected incorrectly, connection or address resolution may fail. |
| Rack | 0 | rack number. The S7-1200/1500 typically has 0; S7-300/400 fill in according to actual hardware configuration. |
| Slot | 0 | Slot number. On site, the commonly used S7-300 CPU is 2, while the S7-1200/1500 is often 0 or configured according to device configuration. If connection fails, check rack/slot first. |
| LocalTSAP | 0 | Local TSAP. Normal connections remain at default; On-site requirements specify TSAP or, when using special gateways, fill in according to PLC communication configuration. |
| Maximum package length | 200 | Single combined read length. Efficiency can be improved when there are multiple points; Reduce when read/write timeout or when the PLC rejects a request. |
| Read/write timeout | 3000 milliseconds | Single-request wait time. For cross-segment applications, VPNs, or poor network quality, the size can be increased appropriately. |
| Time before frame | 0 milliseconds | Wait time before sending a request. Regular Ethernet connections remain by default. |
| Reverse bytes of strings | Disable | Used when string byte order is abnormal. |
| Data parsing order | Select | numeric byte order on site. Adjust when the value is read incorrectly but the address is correct. |
| Number of failed retries | 3 | Number of retries after communication failure. |
| Read/Write Duty Cycle | 3 | Control the read/write interplay rhythm when writing is frequent. |
| Write priority | Turn off | Enable when control commands need to be issued first. |
DLT645-2007
Address Format
DLT645-2007 uses 8-bit hexadecimal data identifiers as variable addresses. When specifying the meter address, add s = 12-bit meter address after the address.
| Example | Explanation |
|---|---|
02010100 | phase A voltage. |
02020100 | Phase A current. |
02030000 | instantaneous total active power. |
00000000 | Current combined total active energy. |
00010000 | Current forward total active energy. |
02010100;s=111111111111 | reads the A phase voltage at the specified 12-bit meter address. |
Plugin Properties
| Configuration Items | Default Values | Instructions for Filling |
|---|---|---|
| Default address | 111111111111 | Default meter address. If only one form is connected, it can be filled in here; When multiple tables share a channel, you can overwrite the variable address with s=.... |
| Password | Leave blank | Enter password when writing or special reading on the meter requires a password; Normal reading usually leaves blank. |
| Operator Code | Leave blank | Enter when the meter requires the operator code. |
| Preamble Message Head | FEFEFEFE | DLT645 Precursor Message. Most meters remain at default; If message resolution is abnormal, confirm according to the meter manual. |
| Read/write timeout | 3000 milliseconds | read wait time. Infrared, wireless, or serial links can be increased when the link is slow. |
| Time before frame | 0 milliseconds | wait time before sending packets. |
| String invert bytes | Disable | Used for string class data parsing exceptions. |
| Data parsing order | Select | numeric byte order on site. |
| DTU ID | Leave blank | to fill in when distinguishing terminals through DTU. |
| Number of failed retries | 3 | Number of retries after a table reading failure. |
| Read-write duty cycle | 3 | Includes read-write intermittent rhythm during writing tasks. |
| Write priority | Turn off | Enable when writing meter parameters needs to be executed first. |
OPC UA client
Address format
The OPC UA variable address should be filled with the server node identifier, for example:
ns=2;s=Channel1.Device1.Tag1ns=2;i=1001
Plugin Properties
| Configuration Items | Default Values | Instructions to Fill Out |
|---|---|---|
| Connection Url | opc.tcp://127.0.0.1:49320 | OPC UA service address. The server should actually expose opc.tcp:// host: port. |
| Log in to account | Leave blank | Fill in when the server requires username authentication. Anonymous interviews are left blank. |
| Login password | Leave blank | Fill in together with your login account. |
| Data Change Trigger Conditions | StatusValue | Subscription Trigger Conditions. Usually kept as default; If you only care about status or timestamp changes, adjust according to server requirements. |
| Security Policy | Turn Off | Use secure connections after enabling them, usually requiring a client certificate and trusting the server. Connections fail if the certificate is not trusted. |
| Name Identifier | ThingsGateway_OPC_UA_Master | Client application name, which will be displayed in the server-side audit and certificate trust lists. |
| Certificate | Leave Empty | Select Certificate Management when security policies are enabled or when the server requires a client certificate. |
| Whether to enable SourceTime | After enabling variable time, use OPC UA server time; After closure, use the gateway to receive time. If the server is not on time, it is recommended to shut it down. | |
| Load server data type | Enable | After connecting, read server node data type to facilitate variable type matching. If too many points cause slow initial connections, you can close it after confirming the type configuration is correct. |
| Activate subscription | Enable | Receive changes through subscription after activation; After turning off, it actively reads according to the collection cycle. It can be turned off when server-side subscription capacity is poor or subscription is unstable. |
| Update frequency | 1000 milliseconds | subscription update intervals. The smaller the response, the faster the response, and the higher the pressure on the server side. |
| Dead Zone | 0 | Percentage of dead zones for simulation changes. When values fluctuate slightly and frequently report, this can be set to reduce meaningless changes. |
| Maximum group size | 500 | Maximum number of nodes per subscription group. When there are many points, it is used to split subscriptions; when the server rejects large subscriptions, it is reduced. |
| Heart rate | 3000 milliseconds | maintain a session heartbeat interval with the server. If the network is unstable, the size can be increased appropriately. |
| Number of failed retries | 3 | Number of retries after a read/write failure. |
| Read/write duty cycle: | 3 | Control the read/write interplay rhythm when writing is heavy. |
| Write priority | Turn off | Enable when write instructions need to be prioritized. |
OPC DA client
Address formatting
The OPC DA variable address is filled with the server entry name, for example:
Channel1.Device1.Group1.Tag1
Plugin Properties
| Configuration Items | Default Values | Instructions to Fill |
|---|---|---|
| OPC server IP | localhost | host where the OPC DA service is located. For remote access, enter the server IP or hostname and confirm DCOM permissions. |
| OPC server name | Kepware.KEPServerEX.V6 | ProgID of OPC DA Server. The name must match the one registered on the server. |
| Server Time | Enable | After activation, use the OPC DA server timestamp; Shut down when server time is unreliable. |
| Subscription Mode | Enable | After activating, use OPC subscription to obtain changes; After turning off, read according to the collection cycle. |
| Detection reconnection frequency | 10 minutes | interval between regular checks and reconnections. When the server is frequently disconnected, it can be shortened appropriately. |
| Dead Zone | 0 | subscription dead zone percentage. Used when analog output fluctuates greatly and slightly. |
| Maximum group size | 500 | Maximum number of items per subscription group. Decrease when the server cannot handle large groups. |
| Subscription update frequency | 1000 milliseconds | subscription refresh interval. The smaller the size, the higher the real-time performance, but the greater the pressure on the server side. |
| Number of failed retries | 3 | Number of retries after a read/write failure. |
| Read/write duty cycle | 3 | Control the read/write interplay rhythm when writing is heavy. |
| Write priority | Turn off | Enable when write instructions need to be processed first. |
OPC DA depends on Windows COM/DCOM. When accessing remotely, you need to confirm Windows Firewall, DCOM permissions, account permissions, and OPC Server registration information at the same time.
MQTT Acquisition Client
Configuration Entry
Add or edit MQTT acquisition client devices in "Collection Configuration," then add variables for the device. In the variable address, fill in Topic, field path, and optional condition scripts. The conditional script needs to be created as a "Data Transformation" script in "Development Configuration→ Script Management" and compiled successfully.
Address Format
MQTT Acquisition Client can subscribe to telemetry messages from the Broker or issue control commands to the device. Variable addresses use the following fixed-order eight-segment format:
Subscribe to topics; JSONPath1||JSONPath2; Conditional scripts; Release the theme; Load mode; Retain; RPC response themes; RPC timeouts in milliseconds
| Paragraph | User Instructions |
|---|---|
| Subscribe to Topic | Telemetry MQTT Topic. Allows precise themes or MQTT wildcard themes; Must be filled in together with JSONPath or left blank at the same time. |
| Single-value field path in JSONPath | Payload. Multiple candidate paths are separated by ` |
| Conditional scripts | Optional scripts for transforming compiled data; The script only updates the variable when it returns true. |
| Release Topic | Device Control Topic; do not use + or #. Leaving the variable blank does not support MQTT release control. |
| Load mode | Json or RawString. When omitted, it is Json; Only fill in when the topic is published. |
| Retain | true or false, omitted as false. Instantaneous commands should remain false. |
| RPC response theme | optional. After entering in pairs with RPC timeout milliseconds, the gateway waits for device confirmation. |
| RPC timeout in milliseconds | 100 to 60000; Only fill in when filling out the response topic. |
Read-only variables can continue to use the first three segments, for example, vendor/device;$.data.temperature;TelemetryCondition. You can leave the first three paragraphs blank when writing only variables, for example ;;;factory/a/reboot;RawString;false. Example of a variable to read and write simultaneously is:
factory/a/status;$.power;;factory/a/command;Json;false
Control Write
After selecting the MQTT Collect device in the Variable Editor, the address area will display three areas: "Telemetry Read," "Control Write," and "RPC Receipt." When the release topic is empty, the payload mode, Retain, and receipt configuration will not be saved. When switching to read-only or write-only permissions, the system clears control or telemetry fields that are no longer allowed. QoS is uniformly controlled by device attributes and is not configured separately by variables.
| Load mode | Write expression results | Send content |
|---|---|---|
Json | Any valid JSON value | Preserve the original JSON text and publish according to UTF-8. Objects, arrays, numbers, and booleans can all be used. |
RawString | JSON string | Fetch the string content and publish it in UTF-8. For example, when writing an expression returns "REBOOT", the device receives REBOOT. |
RawString does not accept numbers, booleans, objects, arrays, or null. When mapping page values to device commands, a string should be returned in the variable's write expression. A successful release only means the MQTT client or gateway broker has accepted the message and will not change the current value; Variable values are still updated by subsequent telemetry messages.
RPC Receipt
When device confirmation is required, fill in the last level of the publishing topic and the response topic {RequestId}, for example:
Release topic: factory/a/command/{RequestId}
Response Topic: factory/a/response/{RequestId}
The gateway generates a 32-bit lowercase request ID for each write. The device obtains this identifier from the last layer of the request topic and, before timeout, publishes the following JSON to the corresponding response topic:
{
"success": true,
"message": "optional diagnostic text"
}
success must be a JSON Boolean. With true, the variable write shows that the device confirmed the operation; with false, it shows message or a fixed failure reason. The response does not need to repeat requestId in JSON because the gateway correlates it with the actual response Topic. Retained messages, incorrect response Topics, invalid JSON, or messages without a valid success value do not complete the write wait. The client publishes a command requiring confirmation only after the response Topic subscription is acknowledged. Timeouts, disconnections, service shutdown, or variable-routing reloads return an explicit failure and do not resend the control command. If a reload occurs before publication, no command is sent to the old Topic; an old response arriving after the reload does not affect the new configuration.
The following Payload is used to illustrate path syntax:
{
"data": {
"items": [
{ "value": 12.5 },
{ "value": 18.2 }
],
"temperature": 31
},
"a.b": "special"
}
| Variable address | result or purpose |
|---|---|
vendor/device;data.temperature | result is 31, so you can omit the root symbol $. |
vendor/device;$.data.temperature | result is 31. |
vendor/device;$.data.items[0].value | result is 12.5, indexed using a parenthesis array. |
vendor/device;data.items.1.value | result is 18.2, and array indexes can also be numbered in dot format. |
vendor/device;$['a.b'] | result is "special", with the attribute name containing . Use parenthesis properties. |
vendor/device;$.devs[0].d[?(@.m == 'ZP_AA01_01_VC')].v | Filters array elements and returns 233.4. |
vendor/device;$..temperature | Recursively finds properties named temperature and takes the first match in document order. |
vendor/device;$.data.items[*].value | Matches array elements and takes the first match in document order. |
| `vendor/device;$.data.temperature | |
| `vendor/device;$.data.temperature |
Field Path Rule
| Rule | Description |
|---|---|
| Root Node | $ represents the complete Payload JSON root node; The regular path can omit $. |
| Object Properties | Use data.temperature or $.data.temperature. |
| Array indexes | support items[0].value and items.0.value. The index must be an integer greater than or equal to 0. |
| Special Attribute Name | Attribute Name Contains . or ` |
| Filter expression | Use [?()] to filter array elements, for example $.items[?(@.name == 'A')].value. A logical ` |
| Wildcard | [*] matches array elements and .* matches object properties. When several nodes match, the first one in document order is used. |
| Recursive descent | $..name recursively finds properties with the given name from the root. When several nodes match, the first one in document order is used. |
| Case | First, match exactly by attribute name; Only when the exact name does not exist use a unique case-ignoring match. If the payload contains both Temperature and temperature, the path TEMPERATURE will not update due to unique matching. |
| Candidate Fields | Use `Path 1 |
| Missing Field: | If the field does not exist, the array is out of bounds, or the path format is incorrect, this variable update is skipped, and the original variable value is retained. |
| JSON null | null explicitly present in Payload are valid fields and will be updated as null values; It is not different from a field. |
One MQTT message still maps to one variable. When a filter, wildcard, or recursive-descent expression matches several nodes, the first node in JSON document order is used; multiple matches are not written as an array automatically.
Condition Script
The condition is the "Data Transformation" script, with the script's raw parameters set to full Payload JSON. Configuration steps are as follows:
- Open "Development Configuration → Script Management" and add a new "Data Transformation" script.
- In the script editor's "Input Parameters," add
TopicorMqttTopicas needed, and select "String" as the data type. - Write a script that returns the boolean value and click "Compile and Save".
- Fill the script name into the third paragraph of the variable address, for example,
vendor/device;$.data.temperature;TelemetryCondition.
The following example requires the message to come from a specified actual topic, with the payload type being telemetry:
var payload = (System.Text.Json.JsonElement)raw;
return Topic == "devices/device-01/up"
&& payload.TryGetProperty("type", out var type)
&& type.GetString() == "telemetry";
Conditional scripts run according to the following rules:
rawalways a full Payload JSON, not a single value selected by the variable field path.TopicandMqttTopicinput parameters to obtain the actual message published Topic. For example, when the variable is configured asdevices/+/up, the script can getdevices/device-01/up.- In the same message, the script for the same condition is executed only once; multiple variables can share the same condition.
- If the condition returns
false, the script name does not exist, the script throws an exception, or the return value cannot be converted to a boolean value, this message will not update the related variable and will record the warning log.
MQTT Broker forwards messages to subscription clients that do not include the original publisher ClientID, so MQTT cannot read the publisher ClientID when collecting client condition scripts. Even if you declare ClientId or MqttClientId as an input parameter, you will only get an empty string; Do not use the client's own ClientId as the publisher's identity.
devices/+/up;$.data.temperature will update messages from all matched devices to the same variable. If you need to save variables separately by device, configure an exact Topic for each device; When filtering only some devices, you can also read the actual Topic in the condition script and return true or false.
Plugin Properties
| Configuration Items | Default Values | Instructions to Fill Out |
|---|---|---|
| Connection Type | Tcp | Normal MQTT Use Tcp; When the broker provides WebSocket access, select WebSocket. |
| IP address | localhost | Broker address, where you can enter IP or domain name. |
| Port | 1883 | Broker port. The common TLS port is 8883, depending on the broker configuration. |
| WebSocket path | /mqtt | is only for WebSocket connections and must match the broker path. |
| Enable SSL | turn off | Broker when requesting TLS/WSS. After activation, continue to confirm the target hostname, certificate, and CA. |
| SSL target hostname | leave | hostname used when verifying the certificate. When connecting via IP but the certificate is issued to a domain name, fill in the domain name in the certificate. |
| Client Certificate Name | Leave | Broker When requesting bidirectional TLS, select the client certificate from Certificate Management. |
| CA Name | Leave | Select the CA certificate when you need to verify the broker's server certificate. |
| Allow untrusted certificates | enable | Can be enabled temporarily during self-signed certificate debugging; Production environments are recommended to be closed. If the certificate is not trusted after closing, it will cause connection failures. |
| SSL protocol version | None | usually remains by default; TLS handshake fails or the platform specifies the version before adjusting. |
| Check certificate revocation | Close | Enable when there are compliance requirements for certificate revocation. After enabling it, the network cannot access the revocation list, which may cause connection failures. |
| Client ID | Leave blank | Broker enters when the ClientID is fixed or the session is reserved. If left blank, it is generated by the system or handled according to the connection library rules. |
| Username | Leave blank | Broker to enter when account authentication is enabled. |
| Password | Leave | Fill in together with your username. |
| Keep Alive time | 60 seconds | MQTT Keep Alive. If the network is unstable, do not set it too small. |
| Clear sessions | Enable | After activation, each connection does not retain the old subscription status; Turn off the session when the broker needs to keep it and use a fixed client ID. |
| MQTT protocol version | V311 | is consistent with the Broker-supported version. Check this when the connection is rejected by the broker. |
| QoS Rating | AtMostOnce | AtMostOnce Low latency but possible message loss;AtLeastOnce at least delivered but may be duplicated; ExactlyOnce is the most reliable but has the highest overhead. |
| Detailed Logs | Close | Temporarily enabled when debugging Topic, authentication, certificate, or message resolution; Shut down after stable operation. |
| Connection timeout | 3000 milliseconds | wait time to establish a connection. Increase when cross-network or when broker response is slow. |
| Check the interval between | 60000 milliseconds | Periodic cleanup of connection and message status. Normal scenarios remain by default. |
MQTT Acquisition Server
The MQTT Acquisition Server connects via the gateway listening to the MQTT client, with variable address formats the same as the MQTT acquisition client.
The rules for handling server field paths, candidate fields, case sensitivity, missing fields, and condition failures are the same as in the previous section. The server can identify the publisher client based on the MQTT session receiving the message, so conditional scripts can also declare string types ClientId or MqttClientId:
in the "Input Parameters"
var payload = (System.Text.Json.JsonElement)raw;
return ClientId == "device-01"
&& payload.TryGetProperty("type", out var type)
&& type.GetString() == "telemetry";
When using devices/+/up and other wild-matched topics, the server can filter conditions by combining the actual Topic and ClientId; If each device needs independent variables, it is still recommended to configure precise Topics to avoid multiple publishers updating the same variable.
| Configuration Items | Default Values | Instructions to Fill Out |
|---|---|---|
| Connection Type | Tcp | Listen for Regular MQTT or WebSocket MQTT. |
| Port | 1883 | Gateway Local Listening Port. Before deployment, confirm that ports are not occupied and allow them according to firewall policies. |
| WebSocket path | /mqtt | WebSocket client connection path. |
| Enable SSL | Turn off | enable when the client requests TLS/WSS to connect to the gateway. |
| Server certificate name | Leave | Certificate provided to clients when the gateway acts as an MQTT server. Usually, you need to select SSL when enabling it. |
| CA Name | Leave Blank | Select CA when client certificate verification is needed. |
| Allow untrusted certificates | enable | Can be temporarily enabled during two-way certificate interchange; Production environments are recommended to be closed. |
| SSL protocol version | None | adjust when handshake failure or when security policies require a specified version. |
| Check for certificate revocation | Close | Enable when certificate revocation verification is required. |
| Allow connection to the ID prefix | leave it blank | Only allow client IDs with specified prefixes to connect. Leaving a blank means no prefix restrictions apply. |
| Username | Leave blank | Fill in when account verification is required. |
| Leave the password | blank | Fill in together with the username. |
| QoS Level | AtMostOnce | controls publishes and RPC collections use this QoS;AtMostOnce has low latency but may lose messages,AtLeastOnce at least delivered but may be duplicated, ExactlyOnce has the highest overhead. |
| Detailed Log | Disable | Temporarily enabled when the joint debugging client connects, authenticates, and messages is enabled. |
| Check the cleanup time | 60000 milliseconds | interval for periodic cleanup of connection and message status. |
Dedicated Gateway MQTT Collection Client and Server
Dedicated Gateway MQTT collection accepts only the current ThingsGateway fixed protocol. Every variable address is RemoteKey/RemoteVariableId. Client mode uses one connection to a shared Broker for multiple sources. Server mode accepts multiple sources through one listener and binds each source to an exact ClientId, independent credentials, and an optional certificate fingerprint.
Do not mix these plugins with the general MQTT collection sections above. General MQTT addresses combine Topic, JSONPath, and control Topics; dedicated addresses contain only the source key and remote variable ID. See Dedicated Gateway MQTT Collection for properties, edge-producer preparation, variable synchronization, and the dedicated debug page.
Data Forwarding Plugins
Data forwarding plugins are used to push collected data, device status, alarms, or plugin events to external systems, and can also provide server capabilities such as Modbus, OPC UA, MQTT, etc.
Modbus Slave
Plugin Properties
| Configuration Items | Default Values | Instructions for Filling |
|---|---|---|
| Modbus Type | Select by page | ModbusTcp used as TCP slave; ModbusRtu is used for serial slave stations. |
| Default station number | 1 | Default slave station number provided externally. |
| Data parsing order | Select by site | Byte order used when external main stations read and write multi-byte values. Adjust when values are reversed or floating-point abnormalities. |
| String invert bytes | Turn off | Enable when adjacent bytes are inverted when the external master station reads and writes strings. |
| Multi-site Mode | Enabled | After enabled, you can respond by multiple station numbers. If only a single site is available, it can be closed to reduce accidental access. |
| Allow RPC to write | Enable | to control whether external masters allow writing to variables under the target. After closing, all variables under the target are read-only. |
| Write memory immediately | Enable | After the external master writes, the slave memory is updated first; the master reads again and immediately sees the new value; Whether actual device control is complete still depends on the data collected side writing results. |
| Send latency | 0 milliseconds | wait time before response. Some main stations require slower response times to set up this system. |
| Client permission list | Leave | Control access by client IP in TCP server mode. Leave blank with no restrictions; After filling out the list, unmatched clients cannot access it. |
The client permission list includes "Allowed client IP" and "Whether write is allowed." Filling in * means matching all clients. When reading is only enabled, you can enter * and disable write; When only the host computer is allowed to write, configure separately according to the host computer's IP.
Modbus slave requires channel parameters to be filled simultaneously. The most common channel fields to fill in incorrectly are as follows.
| Configuration Items | Default Values | Fill in Instructions |
|---|---|---|
| Channel Type | TcpService | TcpService means the gateway listens to the port and waits for the master to connect;TcpClient means the gateway actively connects to the remote end;SerialPort represents the serial slave station; UdpSession represents a UDP session. |
| Remote address | 127.0.0.1:502 | TCP client or UDP remote address. When using TcpClient, this must be filled in; UDP scenarios should at least include one of the remote or locally bound addresses. |
| Local bound address | 0.0.0.0:502 | a TCP server or UDP local listening address. When using TcpService, it must be filled in; When other hosts need to access, use 0.0.0.0: port or the actual local IP. |
| Enable SSL/SSL server certificates | Disable / leave blank | When enabling TLS on TCP servers, server certificates must be selected; When enabling TLS on a TCP client, configure the CA, client certificate, and target hostname according to the peer requirements. |
| Allows untrusted certificates | enables | can be enabled when debugging self-signed certificates. It is recommended to close the production environment and choose a trusted CA. |
| Packet cache time | 500 milliseconds | Minimum 100 time window for packet assembly completion. Used to handle TCP packet sticking, unpacking, or serial port segmentation arrivals, not variable value caching. If the parsing half-packet or occasional packet is incomplete, the size can be increased; If the value is too large, it increases response delay. |
| Heartbeat content / Heartbeat HEX / Heartbeat time | Leave blank / Off / 60000 milliseconds | Maintain connection in TCP client mode. When the peer requires a hexadecimal heartbeat, enable Hex and fill in consecutive hexadecimal bytes. |
| DtuId / Is DtuId Hex / Dtu service type | Leave blank / Off / Default | DTU or transhaul gateway is used to identify remote terminals when accessing. When the terminal reports the text number, the text is filled in directly; Enable Hex when reporting byte numbers. |
Variable Properties
| Configuration Items | Default Values | Required | Instructions for Filling |
|---|---|---|---|
| Slave Variable Address | Leave Blank | The Modbus address is the Modbus address accessed by the external master | . Conflicts between different variable addresses must be avoided. |
| Data Type | Int16 | No | External master parses register values according to this type. When reading inverted values, incorrect precision, or incorrect boolean bits, check the data type, address, and byte order simultaneously. |
| Allow RPC writes | Enable | No | Control whether this variable allows external masters to write. Only when both the target and variable levels are enabled can the variable be written. |
MQTT Client Producer
Connection Configuration
| Configuration Items | Default Values | Instructions to Fill Out |
|---|---|---|
| Connection Type | Tcp | Normal MQTT Use Tcp; When the broker provides WebSocket access, select WebSocket. |
| IP address | localhost | broker address. |
| Port | 1883 | Broker port. |
| WebSocket path | /mqtt | WebSocket connection path. |
| Enable SSL | turn off | Broker when requesting TLS/WSS. |
| SSL target hostname | leave | blank for certificate hostname verification. If the certificate domain name does not match the connection address, fill in the certificate domain name. |
| Client Certificate Name | Leave Empty | Select when Broker requests a client certificate. |
| CA Name | Leave | Empty to verify the broker server certificate. |
| Allow untrusted certificates | Enable | Can be temporarily enabled during joint debugging of self-signed certificates; Production environments are recommended to be closed. |
| SSL protocol version | None | usually remains by default, but adjusts when handshake fails or the platform specifies the version. |
| Check Certificate Revocation | Close | Enable when certificate revocation verification is required. |
| Leave the client ID | blank | Fill in when the broker requests a fixed ClientID, session hold, or permission binding. |
| Username | Leave | Broker authentication username. |
| Password | Leave the | Broker authentication password blank. |
| Keep Alive time | 60 seconds | MQTT Keep Alive. If the network is unstable, do not set it too small. |
| Clear sessions | Enable | After opening, do not retain old sessions with each connection; When the Broker needs to hold sessions, it closes and fixes the client ID. |
| MQTT protocol version | V311 | is consistent with the version supported by Broker. |
| QoS level | AtMostOnce | upload quality level. Key data can be considered for higher QoS, but repetitive or performance overhead must be accepted. |
| Keep messages | close | After opening, the broker saves the last message, and new subscribers may immediately receive the old value. Telemetry data is generally not recommended to be enabled. |
RPC and request trigger
| Configuration items | Default values | Instructions to fill in |
|---|---|---|
| RPC Write Topic | Leave blank | Topic prefix used by external systems to write variables. With tg/rpc/write, the request topic is tg/rpc/write/<request-id>, and the response topic is tg/rpc/write/<request-id>/Response. |
| Data Request Topic | Leave Blank | After the external system sends any message to the Topic, the target triggers a data upload for devices, variables, alarms, etc. |
| RPC Script | Leave | Choose a script when you need to customize MQTT RPC request parsing, writing logic, or response content. |
Upload and Cache Configuration
| Configuration Items | Default Values | Instructions to Fill Out |
|---|---|---|
| Enable Offline Caching | Close | If the external system is unavailable or sending fails, write unsent data to the local cache and wait for retransmission. When shutting down, failed data will not be retried. |
| Maximum number of rows in a cache file | 262144 | Maximum number of rows retained in a single cache file. Exceeding the limit will clean up earlier data, not keep it indefinitely. |
| Upload shard size | 2000 | Maximum number of records retrieved from the queue or cache each time. Reduce when interface timeout, message body size is too large, or external systems process slowly. |
| Memory queue limit | 100000 | The amount of data allowed to backlog in memory. If exceeded, offline caching will be activated to prioritize disk execution; Closing the cache may discard old data. |
| Filter offline data | Turn off | Do not upload offline variable data after enabled. External systems need to cautiously enable when seeing the last value of the offline device. |
| Number of concurrent uploads | 1 | Number of tasks uploaded simultaneously for the same target. When the sequence is strict, maintain 1; After confirming the target supports concurrency, increase the scale. |
| Detailed Log | Close | Enable temporarily when linking topics, templates, scripts, or failing to send; Shut down after stable operation. |
| JSON indentation formatting | enable | message body is easy to read after enabled; After closing, the message body is smaller. |
| JSON ignores Null | enabled | does not output null fields after enablement; Turn off when the external system requires a field to be fixed. |
| Upload device list | Enable | Merge data from the same batch of devices into a list upload; Upload each item when closing. |
| Variable list upload | Enable | Merge data from the same batch of variable data into a list upload; Upload each item when closing. |
| Variable Dictionary Upload | Close | When uploading the variable list, it can be organized into a dictionary structure of "Device Name → Variable Name → Variable Data". |
| Alarm list upload | Enable | Merge alarm data from the same batch into a list upload; Upload each item when closing. |
| Alarm Dictionary Upload | Close | When uploading the alarm list, it can be organized into a dictionary structure of "Device Name → Variable Name → Alarm Data". |
| Plugin event list upload | Enable | Merge the same batch of plugin events into a list upload; Upload each item when closing. |
| Device Topic Template | Leave | Device Data Upload Topic. No device data is uploaded during idle times. |
| Variable Topic Template | ThingsGateway/Variable | Variable data upload to Topic, which can be grouped using variable or device fields. |
| Alarm Topic Template | Leave Blank | Upload Alarm Data to Topic. No alarm data is uploaded during the empty period. |
| Plugin Event Topic Template | Leave Blank | Plugin Event Upload Topic. No plugin upload event when it is empty. |
| Upload template configuration | Default template | Configure when custom message bodies are needed. The template field must be consistent with the external system agreement. |
Variable Properties
| Configuration Items | Default Values | Required | Instructions to Fill |
|---|---|---|---|
| Data1~Data10 | Leave Blank | No | Custom fields for variables under this target, can be used for Topic templates or upload templates, such as external point number, service code, area number. |
| Allow RPC writes | Enable | No | Control whether this variable allows external MQTT RPC writes. |
MQTT Server Producer
The MQTT server producer listens for the MQTT client connection by the gateway, then publishes forwarded data to the connected client.
| Configuration Items | Default Values | Instructions for Filling |
|---|---|---|
| Connection Type | Tcp | Listen for regular MQTT or WebSocket MQTT. |
| Port | 1883 | Gateway Local Listening Port. Before deployment, confirm that ports are not occupied. |
| WebSocket path: | /mqtt | WebSocket client connection path. |
| Enable SSL | Turn off | enable when the client requests TLS/WSS to connect to the gateway. |
| Server certificate name | Leave blank | Select the certificate provided by the gateway to the client when SSL is enabled. |
| CA Name | Leave | Select CA when client certificate validation is needed. |
| Allow untrusted certificates | enable | can be temporarily enabled during joint debugging of self-signed certificates; Production environments are recommended to be closed. |
| SSL protocol version | None | Adjust when handshake fails or security requirements are required. |
| Check Certificate Revocation | Close | Enable when certificate revocation verification is required. |
| Allow connection to ID prefixes | leave blank | Only allow client IDs with specified prefixes to connect. Leave blanks without prefix restrictions. |
| Leave the username | blank | to fill in when verification is required. |
| Password | Leave blank | Fill in together with the username. |
| QoS Level | AtMostOnce | . |
| Hold message | Turn off | After enabled, connected or newly subscribed clients may receive the last hold message. |
| RPC writes Topic | Leave blank | External client writes the topic prefix of the variable, and the request and response rules are consistent with the MQTT client producer. |
| Data Request Topic | Leave Blank | After the client sends any message to the Topic, a full upload is triggered. |
| RPC Script | Leave | Choose a script when you need to customize MQTT RPC request parsing, writing logic, or response content. |
variable properties are the same as those of MQTT client producers. Upload template, cache, and list/dictionary upload configurations are also filled out according to the MQTT client producer.
ThingsBoard Client Producer
The ThingsBoard client producer uploads data according to the ThingsBoard Gateway MQTT protocol and receives RPC issued by ThingsBoard. Topics are fixed by the ThingsBoard protocol, and users mainly maintain connection rights, authentication, TLS, QoS, caching, and variable write permissions.
| Configuration Items | Default Values | Instructions to fill in |
|---|---|---|
| Connection type | Tcp | is consistent with the ThingsBoard MQTT access method. |
| IP address | localhost | ThingsBoard MQTT service address. |
| Port | 1883 | ThingsBoard MQTT port; TLS access usually uses 8883, depending on platform configuration. |
| WebSocket path | /mqtt | used only when connecting via WebSocket. |
| Enable SSL | turn off | enable when using TLS, and configure certificates or CAs. |
| SSL target hostname | leave | the hostname used when proofreading the verification certificate, usually entering the domain name in the certificate. |
| Client certificate name | Leave | Select when ThingsBoard requests bidirectional TLS. |
| CA name | leave blank | to validate the ThingsBoard server certificate. |
| Allow untrusted certificates | enable | can be temporarily enabled when debugging self-signed certificates; Production environments are recommended to be closed. |
| SSL protocol version | None | usually remains by default, with adjustments made according to platform requirements if handshake fails. |
| Check Certificate Revocation | Close | Enable when certificate revocation verification is required. |
| Leave the client ID | blank | fill in when the platform requires a fixed client ID. |
| Username | Leave | ThingsBoard device credentials empty. This is usually filled in when using Access Tokens. |
| Password: | Leave blank | Enter the password when the platform requires it; Access Token mode can usually be left blank. |
| Keep Alive time | 60 seconds | MQTT Keep Alive. |
| Clear Sessions | Enable | Whether to clear sessions after each connection. |
| MQTT protocol version | V500 | is consistent with the MQTT protocol version supported by ThingsBoard. |
| QoS Rating | AtMostOnce | Upload Quality Level. When remote measurement is large, platform throughput selection must be considered. |
| Keep messages | Turn off | Telemetry data is generally not recommended. |
| Detailed Log | Temporarily enabled when | joint debugging authentication, Topic, or RPC are disabled. |
ThingsBoard targets fixed topics on the platform, does not maintain standard MQTT templates for devices, variables, alarms, plugin events, or upload template configurations. When custom payloads or grouping by business fields are needed, you should use common forwarding targets such as MQTT, Kafka, RabbitMQ, or Webhook.
Variable properties:
| Configuration Items | Default Values | Required | Instructions to fill in |
|---|---|---|---|
| Allow RPC writes | Enable | No | Control whether this variable allows ThingsBoard RPC writes. |
OPC UA Server
The OPC UA server objective is to publish gateway variables as OPC UA nodes for external OPC UA clients to read or write.
| Configuration Items | Default Values | Fill in Instructions |
|---|---|---|
| Service Address | opc.tcp://127.0.0.1:48410 | OPC UA service listening address. When multiple addresses are needed, use semicolons to separate them. For external access, the client should provide an accessible address. |
| Name Identifier | ThingsGateway_OPC_UA_Server | OPC UA server application name, which is visible when clients connect and trust certificates. |
| Security Policy | Disable | After activation, the client must connect according to the signature or encryption policy and trust the server certificate; Allow anonymous connections when closed. |
| Allow certificate login | Disable | Publishes the X509 user-certificate login policy on secure endpoints. Enable it when clients log in with user certificates and configure the corresponding user trust chain. |
| Client certificate trust mode | ManualTrustList | ManualTrustList is maintained through application/user issuer and trusted stores. SpecifiedCA trusts only client certificates issued by the selected CA. |
| Trusted client CA | Leave blank | Used only by SpecifiedCA. When selected, only application and user certificates issued by this CA are accepted. When blank, valid client certificates are trusted automatically. |
| Allow RPC writes | Enable | Control whether the OPC UA client allows write to gateway variables. It is recommended to shut down read-only production when released. |
| Historical data target | Leave blank | Enter a stable history target name (group/target) to expose OPC UA historical data reads. Leave blank to keep them closed. |
| Historical alarm target | Leave blank | Enter a target that supports historical alarm queries to expose OPC UA historical event reads. Leave blank to keep them closed. |
| Username | Leave blank | Client account authentication username. If there is no account verification, leave it blank. |
| Password | Leave | Fill in together with your username. |
| Server Certificate Name | Leave | OPC UA Server Certificate. When security policies are enabled, clients need to trust the certificate. |
| Server issuing CA | Leave blank | When the server certificate is issued by a CA, select that CA so the server sends the complete certificate chain during the handshake. |
For certificate-store upload, deletion, and trust-mode procedures, see OPC UA Server certificate stores in the debugging manual. Supported files are .cer, .crt, .der, and .pem; each file must be no larger than 1 MiB.
Variable properties:
| Configuration Items | Default Values | Required | Instructions to fill |
|---|---|---|---|
| Data Type | Object | No | The data type used by the OPC UA client when seeing and writing to this node. If the client prompts that the type does not match, it should be adjusted according to the actual value type of the variable. |
| Allow RPC write | enable | No | Only when both target and variable levels are enabled can the OPC UA client write to this variable. |
Kafka Producer
| Configuration Items | Default Values | Instructions to Fill Out |
|---|---|---|
| Service Address | 127.0.0.1:9092 | Kafka Bootstrap Address, usually entered as host: port. Multiple brokers are filled in according to the Kafka connection string agreement. |
| Release timeout | 5000 milliseconds | single release wait time. When the network is slow or the broker is busy, the size can be increased appropriately. |
| Username | Leave | SASL verified username blank. Leave SASL blank when not enabled. |
| Password | Leave | SASL authentication password. Leave SASL blank when not enabled. |
| Security protocols | Plaintext | Common non-authenticated internal network Plaintext; When enabling authentication or encryption, select according to Kafka cluster requirements. |
| SASL mechanism | Plain | must be configured with Kafka clusters, such as Plain, ScramSha256 Or ScramSha512. |
After the Kafka Topic template is expanded, it must be a topic name that the target cluster allows writing. When activating authentication, security protocols, SASL mechanisms, usernames, and passwords must be configured in groups; Only the account and password are entered but the security protocol is still Plaintext, so it usually cannot connect to clusters that enable authentication.
Variable Properties:
| Configuration Items | Default Values | Required | Instructions to Fill |
|---|---|---|---|
| Data1~Data10 | Leave Blank | No | Custom fields, can be used in Topic templates or upload templates. |
RabbitMQ Producer
| Configuration Items | Default Values | Instructions for Filling |
|---|---|---|
| IP Address | localhost | RabbitMQ service address. |
| Port | 5672 | RabbitMQ service port. |
| Username | guest | Verified username. |
| Password | guest | authentication password. |
| Declare Queue | Close | When enabled, the gateway automatically declares the queue. In production environments, if queues are uniformly created by the platform, it is recommended to close them. |
| Declare the switch | Close | After opening, the gateway automatically declares the switch. If the account does not have creation permission, it should be closed. |
| Switch Type | topic | must match the actual switch type in RabbitMQ. Common values include direct,topic,fanout, headers. |
| Enable release confirmation | Enable | Wait for the broker to return the release confirmation. Keep on when reliability requirements are high; Failure to publish after closure may not be exposed in time. |
| Requires successful routing | Enables | Requires messages to be routed at least one queue. If the Routing Key fails to hit any bindings, it will be marked as a failure. |
| Release timeout | 5000 milliseconds | Release wait time. When the broker is busy or the network is slow, the size can be increased appropriately. |
| Virtual Host | / | RabbitMQ Virtual Host. It must match the virtual host where the account permissions are held. |
| Switch Name | TG | release. Topic templates for |
variables, devices, alarms, and plugin events are used as routing keys in RabbitMQ. The Routing Key must be matched by the target queue bound rules; After enabling "Request Routing Successful," any queue that fails to match will be directly exposed as publishing failure, making it easier to troubleshoot binding rule errors.
Variable attributes:
| Configuration Items | Default Values | Required | Instructions to fill |
|---|---|---|---|
| Data1~Data10 | Leave blank | No | Custom fields, can be used in Routing Key templates or upload templates. |
Historical Data Objectives
Historical data objectives are used to write variable values into historical databases. Whether a variable is stored depends on the scope of the forwarding group, target sampling strategy, and variable attributes.
| Configuration Items | Default Values | Instructions to Fill Out |
|---|---|---|
| Database Type | SqlServer | Select the database type where the historical data is written; the connection string must match the database type. |
| Custom SQL Mode | Close | After enabling it, organize the historical table structure and write statements according to custom templates or scripts. Stay closed when you don't understand the structure of the target table. |
| Table segmentation strategy | Select by page | When historical data volume is large or retention periods are long, used to split tables by time and other strategies. |
| Connection string | Example connection string | Database connection information, including server, port, database name, account, password, and encryption policy. |
| Numeric History Table Name | historyNumberValue | The name of the historical table written to the numeric variable. |
| String history table name | historyStringValue | The name of the history table written to the string class variable. |
| Retention Days | 3650 | Historical Data Retention Period. Before setup, traceability requirements and disk capacity should be evaluated. |
| History table script | Leave blank | Custom table creation or write logic. Only used when interfacing with existing table structures or special inbound rules. |
| Time zone offset | +08:00 | Time zone offset for the time written. When deploying across time zones or unifying UTC warehousing, special confirmation is required. |
| Forced insert | Turn off | Write data upon receiving it after opening, and reduce the amount of records not according to the sampling strategy. Having many variables or short cycles can significantly increase database pressure. |
| Default sampling strategy | Change | Used when variable properties are not configured. Variable sampling is suitable for state quantities, interval sampling is suitable for trend, and conditional sampling is suitable for recording according to operating conditions. |
| Default sampling interval | Leave blank | The default sampling strategy is used when the interval is used, unit: milliseconds. |
| Default conditional expression | Leave blank | Use when the default sampling strategy is conditional; only when the expression meets the requirements is it added. |
| Custom template configuration | On-demand maintenance | Custom maintenance of field templates in SQL mode. Field names, data types, and SQL logic must match the target database. |
Redundancy and Reliability: When gateway redundancy is enabled and historical reliability is enabled, standard SQL historical data goals for SqlServer, MySQL, Sqlite, and PostgreSql support local journals, handover or reboot completion, and record unique key deduplication. QuestDB, TDengine, custom SQL patterns, and historical table scripts are not included in this mechanism; If disconnection or reboot is needed, offline cache should be enabled simultaneously and disk capacity confirmed.
Variable Properties:
| Configuration Items | Default Values | Required | Instructions for Filling |
|---|---|---|---|
| Sampling Strategy | Change | No | How the variable is stored in historical objectives. |
| Sampling interval | Leave blank | No | Used during sampling, unit: milliseconds. |
| Conditional expressions | Leave blank | No | Used for conditional sampling. It is suitable for recording history only when equipment is running, process permitted, or values meet certain conditions. |
Real-time Data Objectives
Real-time data objectives are used to write the latest values of variables to the real-time table for external systems to read the current state.
| Configuration Items | Default Values | Instructions for Filling |
|---|---|---|
| Database Type | SqlServer | Select the database type for real-time data writes. |
| Joining strings | Example join strings | Real-time library connection information. Accounts must have permission to create tables, update, and write to them. |
| Real-time table name | realValue | The table name where the latest value of the variable is stored. |
| Live Table Script | Leave Blank | Customize Live Table Structure or Select When Writing Logic. |
| Time zone offset | +08:00 | The time zone used for writing time must match the time displayed by the external system. |
When real-time performance is required, it is not advisable to set the upload shard size too large; When external databases are temporarily unavailable, offline caching can be enabled to reduce data loss.
Historical Alarm Targets
Historical alarm targets are used to save alarms and recover events, enabling alarm traceability, statistics, and export.
| Configuration Items | Default Values | Instructions for Filling |
|---|---|---|
| Database Type | SqlServer | Select the database type to be written to by historical alarms. |
| Table segmentation strategy | Select by page | Use when alarm volume is high or retention cycles are long. |
| Connection string | Example connection string | Historical alarm library connection information. |
| Historical alarm table name | historyAlarm | Save the name of the alarm event. |
| Retention Days | 3650 | Historical alarm retention cycle, must meet on-site audit or traceability requirements. |
| Historical alarm table script | Leave blank | Choose when customizing alarm table structure or writing logic. |
| Time zone offset | +08:00 | The time zone used when writing the alarm event time. |
| Minimum alarm level | 0 | Only alarms of this level and above are saved. It is desirable to keep a low level when recording all alarms. |
Redundancy Reliability: When gateway redundancy is enabled and historical reliability is enabled, standard historical alarm targets for SqlServer, MySQL, Sqlite, and PostgreSQL support local journals, swap or reboot rewrites, and record unique key deduplication. This mechanism is not included when filling out historical alarm form scripts or using other dynamic write logic; When using alarms for traceability, offline caching should be enabled simultaneously and disk capacity should be confirmed.
When using alarm data for traceability, it is recommended to enable offline caching and confirm disk space to avoid record loss caused by temporary database inavailability.
Webhook
The Webhook target sends data to an HTTP endpoint. The default variable Topic template is http://127.0.0.1:7502/ThingsGateway/Variable; for Webhooks, the Topic template is used as the final request URL.
| Configuration Items | Default Values | Instructions to Fill |
|---|---|---|
| Signature Key | Leave | Secret used in DingTalk robot add-in mode; Leave WeCom, Feishu, or regular HTTP interfaces blank when not needed. |
| Custom request headers | Leave | JSON-formatted request headers, such as {"Authorization":"Bearer token"}. Formatting errors can cause requests to fail. |
| Message format: | Raw | Raw Send default JSON or template content directly;Text Supports text messages from DingTalk, WeChat, and Feishu; Markdown Supports DingTalk and WeChat Markdown messages. |
| Request timeout | 10 seconds | HTTP request wait time. If the interface response is slow, it can be increased; if too large, it will extend the failure and retry cycle. |
When configuring a webhook, the variable, device, alarm, or plugin event Topic template should be filled in as the actual URL; Data types with empty Topics will not be uploaded. Ordinary HTTP interfaces usually use custom request headers to pass tokens; Bot endorsement only requires entering the signature key when the platform activates the add-on.
Variable attributes:
| Configuration Items | Default Values | Required | Instructions to fill |
|---|---|---|---|
| Data1~Data10 | Leave blank | No | Custom fields, can be used in URL templates or upload templates. |
SyncBridge
SyncBridge lets one HubServer aggregate configuration and real-time values from multiple EdgePublisher targets through one mutual-TLS listener.
| Configuration Items | Default Values | Instructions for Filling |
|---|---|---|
| Role | Required | Select HubServer for the Hub and EdgePublisher for each Edge. |
| LocalPeerId | Empty | Stable and unique identity of the current node. |
| ListenUri | 0.0.0.0:7777 | Hub listener endpoint. |
| RemoteUri | Empty | Hub endpoint reached by an Edge. |
| VerifyToken | Empty | Second authentication secret after TLS; no public default is provided. |
| TransportCertificateName / TransportCaCertificateName | Empty | Required current-node certificate and private CA used to verify peers. |
| TransportTargetHost | Empty | Hostname used by an Edge to verify the Hub certificate. |
| HeartbeatIntervalMs | 5000 ms | Authenticated heartbeat interval, from 1000 to 60000. |
| RealtimeFlushIntervalMs | 20 ms | Real-time value coalescing window. |
| MaxRealtimeBatchVariables / MaxRealtimeBatchBytes | 2000 / 262144 | Variable and byte limits of one real-time batch. |
| RealtimeAckTimeoutMs | 3000 ms | Timeout for the Hub application acknowledgement. |
| MaxConfigChunkBytes | 524288 | Maximum bytes in one configuration chunk. |
| ConfigSyncMode | OnChangeAndReconnect | When an Edge automatically compares configuration. |
| MaxConcurrentConfigurationSyncPeers | 4 | Hub concurrency across Edge configuration requests. |
| AllowRemoteRpc | Disabled | Bridge-wide reverse-write gate. |
SyncBridge has no target-variable properties; the forwarding-group scope determines the mirror. See SyncBridge Gateway Synchronization for certificate preparation, Hub and Edge setup, field ownership, dedicated debugging, and troubleshooting.
Upload Template Configuration
Forwarding plugins with "Upload Template Configuration" allow custom message bodies.
| Configuration Items | Default Values | Instructions for Filling |
|---|---|---|
| Variable Content Template | Leave | Variable Data Upload Template, You Can Use ${Name}, ${Value}, ${DeviceName}, ${CollectTime}, ${CollectGroup}, ${Remark1} to ${Remark5} placeholders. |
| Device Content Template | Leave Blank | Device Status Upload Template. Fill in when external systems require fixed device fields or fixed message formats. |
| Alarm content template | Leave blank | Alarm event upload template. It is recommended to retain the alarm name, level, trigger value, event time, and device information. |
| Plugin event content template | Leave blank | Plugin event upload template. Used for external notifications of plugin events such as connection, disconnection, and errors. |
Use the default JSON when the template is left blank. You can add formatters after the field, for example, ${CollectTime:long} outputs Unix millisecond timestamps, ${CollectTime:yyyy-MM-dd HH:mm:ss} outputs formatting time. Only input json output JSON array; Only input json_dict output dictionary structure; Enter dict:template content to organize dictionary results by device and variable.
templates are suitable for scenarios where external system fields are fixed, bot message formats are fixed, or both Topic and Payload need to reference variable fields. If the template placeholder is written incorrectly, the corresponding field will not get the expected value, and the external system will show a database entry failure, fields that are empty, or parsing failed.
Public Configuration Description
Collection Plugin Public Configuration
| Configuration Items | Default Values | Instructions for Filling |
|---|---|---|
| Number of failed retries | 3 | Number of retries after a single read/write failure. If network or serial port occasional jitter occurs, increase the volume appropriately; Long-term fault settings that are too high will slow down fault feedback. |
| Read/write duty cycle | 3 | When there are many write requests, perform several writes followed by interwoven reads to avoid long periods of writing only. |
| Write priority | Turn off | When there is a write task when enabled, write processing is prioritized. Suitable for scenarios where control commands need to be issued quickly. |
Data Forwarding Cache Public Configuration
| Configuration Items | Default Values | Instructions for Filling |
|---|---|---|
| Enable offline caching | turn off | write to the local cache and wait for resend if the send fails. Historical data, alarms, and key reporting recommendations are enabled. |
| Maximum row count in cached file | 262144 | Cache file retains the maximum number of rows. When external systems are unavailable for a long time, exceeding the limit will clear earlier data. |
| Upload shard size | 2000 | Maximum number of records uploaded or resent per upload. Reduce when interface timeout, database pressure is high, or message size is too large. |
| Memory queue limit | 100000 | The amount of data allowed to accumulate in memory. When the limit is exceeded, enabling offline caching will prioritize order execution; If cache is not enabled or orders cannot be placed, old data may be discarded. |
| Filter offline data | Turn off | Do not upload offline variable data after enabled. External systems need to cautiously enable when seeing the last value of the offline device. |
| Number of concurrent uploads | 1 | Number of tasks uploaded simultaneously by the same target. When the sequence is strict, maintain 1; After confirming the target supports concurrency, increase the scale. |
Variable Custom Fields
The variable attributes of the data forwarding plugin usually include "data1" to "data10". These fields do not change the variable acquisition values and are mainly used to supplement business information during external system integration, such as external point location numbers, area codes, equipment codes, process segments, or alarm groups. Fill in these fields when the Topic template, URL template, or upload template is needed; Leave it blank when not in use.