// ED range (Ethernet Remote IO): complete reference template, every key explained. // // Template version 6 groups the settings the way the device's own web page groups them: // the Device page, the Network page, then the Protocol page (io.protocol) and one group per // line type (io.digitalOutputs, io.digitalInputs, io.analogInputs, ...). Each line-type group // holds the settings that act on every line of that type, then its lines. A model's export // has only the groups its page shows. This file lists every group of every model at once; // the comment on each key names the heading and label it has on the device's page. // // Values shown are the FACTORY DEFAULTS where the device defines one; otherwise a typical // value. Ranges are what the device accepts. Choices are written as words (the page's own // option text is accepted too), line states as 1 / 0, check boxes as true / false. // // A missing key, or a missing group, means "don't touch": BB-Eco leaves that setting as it // is on the device. This file is documentation: `bb-eco template apply` reads strict JSON, // so strip the comments (or copy the shape) before using it. { // ---- Envelope: what the file is ---- "version": 6, // Template version. Optional: leave it out and the current version // is assumed. A file from an earlier BB-Eco is refused (re-export it // from the device); a file from a newer BB-Eco is refused until you update. "family": "ED", // "ED" | "ES" | "BB". Apply refuses a device of another family. "compatibleModels": ["ED-588"], // Optional allow-list of models; leave it out for any model of the family. // Naming the models also lets `template validate` check each line's // number offline. "description": "Reference template: every ED key with defaults and ranges", "createdAt": "2026-10-22T00:00:00Z", // ---- identity: read-only, never applied and never compared ---- // `bb-eco config` shows it as part of the device readout; `template export` leaves it out. "identity": { "mac": "00:0A:4F:05:E9:C1", "ip": "192.168.1.100", // The address the device answered on. "model": "ED-588", "modelVariant": null, "firmwareVersion": "8.33", "firmwareType": "T", "firmwareDate": "11/12/2023", "checkConnectivity": false, // Reported by the device; not a setting. "dns": "0.0.0.0", // The DNS server the device reports; not a setting. "modbusSlaveId": 255 // The Modbus address the device reports; Modbus TCP does not use it. }, // ---- device: the device's home page ---- "device": { "name": "ED-588", // "Device Name", at most 10 characters. Factory: the model number. "location": "" // "Location", at most 10 characters. Factory: empty. }, // ---- network: the Network page (applied last: an address change can drop the connection) ---- "network": { "dhcp": true, // "DHCP": true, or false for a static address. Factory: true. "staticIp": "192.168.127.254", // "IP Address". Never exported (an address belongs to one device); // applied only when you add it to a template. Leave it out to keep the // device's current address. "subnet": "255.255.255.0", // "Subnet Mask". Exported under static addressing only: under DHCP it // comes from the DHCP server. "gateway": "0.0.0.0", // "Gateway Address". 0.0.0.0 = no gateway. Exported as subnet is. "webPort": 80, // "Web Server Port", 1–65535. Factory: 80. "upnp": true // "UPnP". Factory: true. }, // security: credentials and access control, as in the ES reference template. Left out of an // export unless asked for; null = don't touch. "security": null, // ---- io: the Protocol page and the IO Lines page ---- // Changing protocol settings restarts the device; expect a short loss of IO connectivity. "io": { // -- The Protocol page -- "protocol": { "current": "ASCII", // "Current Protocol": "ASCII" (factory) | "Modbus". Only the current // protocol answers; each protocol keeps its own settings. // "ASCII Protocol Settings", in the page's order. "ascii": { "address": 1, // "Device Address", 1–255. Factory: 1. "tcpPort": 9500, // "TCP Port", 1–65535. Factory: 9500. "idleTimeout": 0, // "Idle Timeout", seconds, 0–65535. 0 = no timeout. "dataFormat": "engineeringUnit", // "Data Format", analogue and temperature models only: // ED-549, ED-560: engineeringUnit | percentOfFullScale | hexadecimal // ED-593: celsius | fahrenheit | kelvin | millivolts // ED-582: celsius | fahrenheit | kelvin | ohms // Temperature models measure in the data format of the current protocol. // Analogue output values (below) are written in this format, so a // template that sets output values carries it too. "checksum": false, // "Checksum". Factory: false. // "Serial Gateway Settings": models with an RS-485 serial gateway. ASCII commands for another // device address are passed to the RS-485 port. "serialGateway": { "baudRate": 9600, // "Baud Rate": 1200 | 2400 | 4800 | 9600 (factory) | 19200 | 38400 | // 57600 | 115200. "commandTimeout": 200 // "Command Timeout", milliseconds, 0–50000. Factory: 200. }, // "I/O Tunneling" (ED-516, ED-527, ED-538, ED-588): this device connects to a remote device // and mirrors its digital inputs onto the remote device's outputs. Set it up on the device // that connects; the remote device needs the ASCII protocol and matching addresses. "tunneling": { "enabled": false, // "Enable". Factory: false. "remoteIp": "192.168.0.0", // "Remote IP Address": the remote device. An enabled tunnel needs a // real address. "remoteAsciiPort": 9500, // "Remote ASCII Device TCP Port", 1–65535: the remote device's // io.protocol.ascii.tcpPort. Factory: 9500. "remoteAsciiAddress": 1, // "Remote ASCII Device Address", 1–255. Must equal the remote device's // io.protocol.ascii.address, and the remote device's must equal this // device's. Factory: 1. "safeModeOnDisconnect": true // "Set to Safe Mode When Disconnected": outputs go to their safe // values when the tunnel drops. Factory: true. } }, // "Modbus TCP Settings", in the page's order. "modbus": { "respondToServerIds": "0 and 255", // "0 and 255" (factory) | "0-247 and 255". "acceptAllAddresses": false, // "Accept All Register/ Coil/ Input Addresses". Factory: false. "tcpPort": 502, // "TCP Port", 1–65535. Factory: 502. "idleTimeout": 0, // "Idle Timeout", seconds, 0–65535. 0 = no timeout. "maxConnections": 8, // "Max. Connections", 1–8. Factory: 8. "dataFormat": "engineeringUnit" // "Data Format", analogue and temperature models: as the ASCII // data format, without percentOfFullScale on the ED-549 and ED-560. } }, // -- One group per line type: the settings for every line of the type, then the lines -- // Each line is named by its page label ("line") and its ASCII line number ("index"). An export // writes both; a template you write needs one of them, and when it has both they must agree. // Outputs and analogue lines are numbered from 0. Digital inputs follow the outputs: on a model // with outputs, DIn 0 is line 8 (ED-588, ED-038); on the input-only ED-516 it is line 0. // A template can list only the lines it changes. // Digital outputs, relays included ("RL 0" on a relay model). "digitalOutputs": { "polarity": "activeHigh", // "Output Polarity" (on the ASCII Protocol tab; applies in every // protocol): activeHigh = "1 = ON" (factory) | activeLow = "0 = ON". "lines": [ { "line": "DOut 0", // The line's label on the page. Identifies the line; never written. "index": 0, // The line's ASCII line number. Identifies the line; never written. "powerOnValue": 0, // "Power-On Value": 1 (ON) | 0 (OFF). Factory: 0. "safeValue": 0, // "Safe Value": the state when the network connection is lost. "quickStopValue": 0 // "Quick Stop Value": the state when the quick stop fires. Models // with a quick stop. } ] }, // Digital inputs. "digitalInputs": { "polarity": "activeHigh", // "Input Polarity": activeHigh = "High = 1" (factory) | activeLow = "Low = 1". "counterUpdateDirection": "fallingEdge", // "Counter Update Direction": fallingEdge (factory) | risingEdge. "counterMode": "16bit", // "Counter Mode": 16bit (factory) | 32bit. "lines": [ { "line": "DIn 0", // Page label. Digital lines keep their names. "index": 8, // ASCII line number: 8 on a model with outputs. "debounceMs": 0 // "Debounce Time(ms)", 0–9999, on models with debounce. Factory: 0. } ] }, // The quick stop: models with both digital inputs and outputs. The page reads // "Please Select Quick Stop IO Line [DIn 0] when [Falling Edge]". "quickStop": { "line": "disabled", // "Quick Stop IO Line": disabled (factory) or an input's label, "DIn 0". "edge": "fallingEdge" // "Quick Stop Edge": fallingEdge (factory) | risingEdge. }, // Analogue inputs (ED-549). "analogInputs": { "lines": [ { "line": "AIn 0", "index": 0, "name": "AIn 0", // "Name", at most 10 characters. "enabled": true, // "Enabled". "fullScaleRange": "+/-10V" // "Full Scale Range": +/-10V | +/-5V | +/-2.5V | +/-1V | +/-500mV | // +/-250mV | +/-150mV | +/-75mV | +/-20mA | +0 to 20mA | +4 to 20mA. // The page's ± sign is accepted. } ] }, // Analogue outputs (ED-560). "analogOutputs": { "lines": [ { "line": "AOut 0", "index": 0, "name": "AOut 0", // "Name", at most 10 characters. "fullScaleRange": "0 to 20mA", // "Full Scale Range": 0 to 10V | 0 to 20mA | 4 to 20mA. "powerOnValue": "+00.000", // "Power-On Value", in the ASCII data format: a signed number within the // range in engineeringUnit (0 to 20 here), 0 to 100 in // percentOfFullScale, four hex digits (0000 to 0FFF) in hexadecimal. "safeValue": "+00.000" // "Safe Value", as powerOnValue. } ] }, // RTD inputs (ED-582). "rtdInputs": { "lines": [ { "line": "RTD 0", "index": 0, "name": "RTD 0", // "Name", at most 10 characters. "enabled": true, // "Enabled". "rtdType": "Pt100-385", // "RTD Type": Pt100-385 | Pt100-3911 | Pt100-3916 | Pt100-3926 | // Pt1000-385 | Pt1000-3911 | Pt1000-3916 | Pt1000-3926 | Pt1000-375 | // Ni120-672. "connection": "4-wire" // "Connection": 4-wire (factory) | 3-wire | 2-wire. } ] }, // Thermocouple inputs (ED-593): the settings for every thermocouple, then the lines. "thermocoupleInputs": { "openWireDetection": true, // "Enable Open-Wire Detection". Factory: true. "coldJunctionCompensation": true, // "Enable Cold Junction Compensation". Factory: true. "manualOffset": 0.00, // "T manual offset", added to every reading, in manualOffsetUnit: // -99.99 to +99.99 (celsius, kelvin) or -179.96 to +179.96 // (fahrenheit). Factory: 0. "manualOffsetUnit": "celsius", // The offset's unit: celsius | fahrenheit | kelvin. "lines": [ { "line": "TC 0", "index": 0, "name": "TC 0", // "Name", at most 10 characters. "enabled": true, // "Enabled". "thermocoupleType": "K" // "TC Type": J | K | T | E | R | S | B | N. } ] } }, // serialPorts: ED models with a Serial Port page of their own (ED-204, ED-004) export it here, // in the same shape as the ES reference template. "serialPorts": null }