bb-eco config
Read or write device configuration
Usage
bb-eco config <device> [<key> [<value>]] [options]
Arguments
| Name | Description |
|---|---|
<device> | IP address (with an optional :port when the web server was moved off 80), MAC address, or device name |
<key> | Configuration key to filter (e.g. 'network', 'io.protocol.ascii') |
<value> | Value to set for the configuration key |
Options
| Option | Description |
|---|---|
--csv | Output in CSV format |
--json | Output in JSON format |
--timeout <timeout> | Override default timeout in milliseconds |
--verbose | Enable verbose/debug output |
-?, -h, --help | Show help and usage information |
Examples
Read a device's full configuration (an ED-549, 8-channel analogue input):
bb-eco config 192.168.1.101
identity.mac : 00:0A:4F:06:25:4D
identity.ip : 192.168.1.101
identity.model : ED-549
identity.firmwareVersion : 8.25
identity.firmwareType : T
identity.firmwareDate : 26/06/2023
identity.checkConnectivity : false
identity.dns :
identity.modbusSlaveId : 255
device.name : ED-549
device.location :
network.dhcp : true
network.webPort : 80
network.upnp : true
security.adminUsername :
security.userUsername :
security.authentication : Basic
security.resetProtection : Everybody
io.protocol.current : ASCII
io.protocol.ascii.address : 1
io.protocol.ascii.tcpPort : 9500
io.protocol.ascii.idleTimeout : 0
io.protocol.ascii.dataFormat : engineeringUnit
io.protocol.ascii.checksum : false
io.protocol.ascii.serialGateway.baudRate : 9600
io.protocol.ascii.serialGateway.commandTimeout: 200
io.protocol.modbus.respondToServerIds : 0 and 255
io.protocol.modbus.acceptAllAddresses : false
io.protocol.modbus.tcpPort : 502
io.protocol.modbus.idleTimeout : 0
io.protocol.modbus.maxConnections : 8
io.protocol.modbus.dataFormat : engineeringUnit
io.analogInputs.lines[0].line : AIn 0
io.analogInputs.lines[0].index : 0
io.analogInputs.lines[0].name : AIn 0
io.analogInputs.lines[0].enabled : false
io.analogInputs.lines[0].fullScaleRange : +/-10V
...
(Output trimmed; the full listing continues through every IO line.)
The keys are the template keys, grouped the way the device's own web page groups them. Write a single setting using the same key the read displays:
bb-eco config 192.168.1.101 device.location Panel-A
Set 'device.location' = 'Panel-A' on 192.168.1.101. Device now reports device.location: Panel-A.
Each line type has its own group, io.<group>.lines[<n>].<setting>, where <n> counts the lines of that type from 0 (DOut 0 is io.digitalOutputs.lines[0], DIn 0 is io.digitalInputs.lines[0]). Set an output's power-on state, or an input's debounce time:
bb-eco config 192.168.1.100 io.digitalOutputs.lines[0].powerOnValue 1
Set 'io.digitalOutputs.lines[0].powerOnValue' = '1' on 192.168.1.100. Device now reports io.digitalOutputs.lines[0].powerOnValue: 1.
bb-eco config 192.168.1.100 io.digitalInputs.lines[0].debounceMs 50
Set 'io.digitalInputs.lines[0].debounceMs' = '50' on 192.168.1.100. Device now reports io.digitalInputs.lines[0].debounceMs: 50.
A line's line and index name it and cannot be written. The settings for every line of a type sit beside its lines: io.digitalOutputs.polarity, io.digitalInputs.counterMode, and the quick stop's io.quickStop.line (disabled, or an input's label such as DIn 2) and io.quickStop.edge (fallingEdge or risingEdge).
On a model with I/O tunnelling the tunnel settings live under io.protocol.ascii.tunneling
(see the template format). Turn a tunnel
off, and back on with the remote device it already has:
bb-eco config 192.168.1.100 io.protocol.ascii.tunneling.enabled false
Set 'io.protocol.ascii.tunneling.enabled' = 'false' on 192.168.1.100. Device now reports io.protocol.ascii.tunneling.enabled: false.
bb-eco config 192.168.1.100 io.protocol.ascii.tunneling.enabled true
Set 'io.protocol.ascii.tunneling.enabled' = 'true' on 192.168.1.100. Device now reports io.protocol.ascii.tunneling.enabled: true.
A key that several settings end in names no single setting: tcpPort and idleTimeout are on both protocol tabs, so give the whole key (io.protocol.modbus.tcpPort).
Read the configuration as JSON, in the same shape used by template export:
bb-eco config 192.168.1.101 --json
{
"version": 6,
"family": "ED",
"compatibleModels": [
"ED-549"
],
"createdAt": "2026-10-23T00:40:43+00:00",
"identity": {
"mac": "00:0A:4F:06:25:4D",
"ip": "192.168.1.101",
"model": "ED-549",
"modelVariant": null,
"firmwareVersion": "8.25",
"firmwareType": "T",
"firmwareDate": "26/06/2023",
"checkConnectivity": false,
"dns": "",
"modbusSlaveId": 255
},
"device": {
"name": "ED-549",
"location": ""
},
"network": {
"dhcp": true,
"webPort": 80,
"upnp": true
}
}
(JSON trimmed to the first sections.)
Device name, location and IO line names are limited to 10 characters by the device firmware. Longer values are rejected before they reach the device.
Every command that takes a <device> accepts the address with a port, for a device whose web server was moved off 80 on a network without UPnP:
bb-eco config 192.168.127.24:90 device.name "Press 4"
Without the port the device is asked on the port it was last added or seen on, then on 80 and 5001.
This page is auto-generated from the live CLI help text. Do not edit by hand - re-run node scripts/gen-cli-reference.mjs after changes. Example sections are maintained in docs/cli-examples/ in the bb-eco repo.