{ "$comment": "Copy this file to e2e-config.json and replace the NodeIds with the ones your Config DB publishes. Fields named `opcUaUrl` override the -OpcUaUrl parameter on test-all.ps1 per-driver. Omit a top-level key to skip that driver.", "modbus": { "endpoint": "127.0.0.1:5502", "bridgeNodeId": "ns=2;s=Modbus/HR100", "opcUaUrl": "opc.tcp://localhost:4840" }, "abcip": { "gateway": "ab://127.0.0.1/1,0", "family": "ControlLogix", "tagPath": "TestDINT", "bridgeNodeId": "ns=2;s=AbCip/TestDINT" }, "ablegacy": { "$comment": "Gated behind AB_LEGACY_TRUST_WIRE=1 — ab_server PCCC path upstream-broken, needs real SLC / MicroLogix / PLC-5 or RSEmulate 500.", "gateway": "ab://192.168.1.10/1,0", "plcType": "Slc500", "address": "N7:5", "bridgeNodeId": "ns=2;s=AbLegacy/N7_5" }, "s7": { "endpoint": "127.0.0.1:102", "cpu": "S71500", "slot": 0, "address": "DB1.DBW0", "bridgeNodeId": "ns=2;s=S7/DB1_DBW0" }, "focas": { "$comment": "Gated behind FOCAS_TRUST_WIRE=1 — no public simulator. Point at a real CNC + ensure Fwlib32.dll is on PATH.", "host": "192.168.1.20", "port": 8193, "address": "R100", "bridgeNodeId": "ns=2;s=Focas/R100" }, "twincat": { "$comment": "Gated behind TWINCAT_TRUST_WIRE=1 — needs XAR or standalone TwinCAT Router NuGet reachable at -AmsNetId.", "amsNetId": "127.0.0.1.1.1", "amsPort": 851, "symbolPath": "MAIN.iCounter", "bridgeNodeId": "ns=2;s=TwinCAT/MAIN_iCounter" }, "phase7": { "$comment": "Virtual tags + scripted alarms. The VirtualNodeId must resolve to a server-side virtual tag whose script reads the modbus InputNodeId and writes VT = input * 2. The AlarmNodeId is the ConditionId of a scripted alarm that fires when VT > 100.", "modbusEndpoint": "127.0.0.1:5502", "inputNodeId": "ns=2;s=Modbus/HR100", "virtualNodeId": "ns=2;s=Virtual/VT_DoubledHR100", "alarmNodeId": "ns=2;s=Alarm/HR100_High" } }