This adapter reads values from CAN devices through a Technische Alternative C.M.I. JSON API endpoint and exposes them as read-only ioBroker states.
The repository is named ioBroker.ta, the npm package is iobroker.ta, and the internal ioBroker adapter ID is ta. Object IDs therefore use the namespace ta.0, for example ta.0.info.connection.
This is an unofficial, community-maintained adapter. It is neither an official ioBroker adapter nor an official adapter or official software from Technische Alternative. Product and project names are used only to describe compatibility.
The project does not include copied manufacturer documentation, manufacturer logos, ioBroker logos or other third-party brand assets. The adapter icon is a generic project asset and must not be replaced with protected logos unless the required rights are available.
- Technische Alternative C.M.I. JSON API at
/INCLUDE/api.cgi - UVR16x2 and further x2/CAN devices recognized by the C.M.I. API
- Device ID mapping currently includes UVR1611, UVR16x2, RSM610, CAN-I/O45, CAN-EZ2, CAN-MTx2, CAN-BC2, UVR65, CAN-EZ3, UVR610 and UVR67
- The C.M.I. itself is used as the gateway. Its own CAN node number should not be configured as a data node.
Version 1.x focuses only on read-only C.M.I. JSON API polling and a stable generic ioBroker state model. It does not implement C.M.I. control commands, output switching, fixed value changes, dashboards, VIS widgets or a custom web server.
host: C.M.I. hostname or IP addressport: C.M.I. HTTP/HTTPS port, default80protocol:httporhttpsusername: C.M.I. expert userpassword: C.M.I. expert password, stored as protected/encrypted native configtimeoutMs: request timeout, default10000rejectUnauthorized: reject invalid HTTPS certificatesrequestSpacingSec: global spacing between requests to the same C.M.I., minimum61, default65startupDelaySec: delay before the first pollretryDelaySec: delay after network errors or CAN busy responsesnodes: CAN nodes to query. Enter the node numbers of the controllers/devices that deliver values, for example UVR16x2, UVR610 or RSM610. Do not enter the C.M.I. own CAN node number; the C.M.I. is the gateway, not a data node for this adapter.jsonparam: C.M.I. JSON API parameter list, defaultI,O,Sg,Sd,St,SsuseDesignation: addsjsondesignation=1and uses designations forcommon.namecreateRawJson: stores the raw response below the node info channel for debugging
The C.M.I. JSON API allows only one request per minute. This adapter enforces a global request queue per adapter instance. If three nodes are enabled and requestSpacingSec is 65, each node is updated roughly every 195 seconds.
ta.0.info.connection
ta.0.info.lastUpdate
ta.0.info.lastSuccessfulUpdate
ta.0.info.lastError
ta.0.info.lastStatusCode
ta.0.info.lastStatusText
ta.0.info.effectiveNodeIntervalSec
ta.0.node_002.info.apiVersion
ta.0.node_002.info.deviceId
ta.0.node_002.info.deviceName
ta.0.node_002.info.timestamp
ta.0.node_002.input_001.value
ta.0.node_002.input_001.unitId
ta.0.node_002.input_001.ad
ta.0.node_002.input_001.designation
ta.0.node_002.output_001.value
ta.0.node_002.output_001.state
ta.0.node_002.output_001.unitId
ta.0.node_002.output_001.ad
ta.0.node_002.system_general_001.value
ta.0.node_002.logging_analog_001.value
State IDs are stable and never depend on C.M.I. designations. Designations only update common.name.
Authentication failed; C.M.I. expert credentials required: check the expert user credentials in the C.M.I.SYNTAX ERRORorNODE ERRORfor the C.M.I. own CAN node: remove or disable that node from the adapter configuration and configure only the CAN node numbers of the target controllers/devices.NODE ERROR: the configured CAN node did not answer or is not reachable through the C.M.I.DEVICE NOT SUPPORTED: the target device is not supported by this C.M.I. API response.TOO MANY REQUESTS: another client or adapter instance may be polling too quickly. IncreaserequestSpacingSec.CAN BUSY: the CAN bus is busy. The adapter waits forretryDelaySecbefore the next request.- HTTP errors: verify protocol, host, port and firewall settings.
- If the admin test connection succeeds but
ta.0.info.lastErrorreports one CAN node, check whether that node really exposes values through the C.M.I. JSON API. Other successfully polled nodes keepta.0.info.connectiontrue.
npm run lint
npm run build
npm run test:unit
npm run test:integration
npm testTests use mocked HTTP servers and fixtures under test/fixtures/. No real C.M.I. hardware or credentials are required.
The CI workflow runs linting, type checks, builds and adapter tests on Linux, Windows and macOS for the Node.js LTS versions supported by the generated ioBroker template.
There are existing ioBroker adapters and integrations around BL-NET/C.M.I. devices. This adapter deliberately focuses on the official C.M.I. JSON API and creates a generic, stable, read-only ioBroker object model for C.M.I. CAN/x2 data.
- Technische Alternative: https://www.ta.co.at/
- C.M.I. product and documentation pages: https://www.ta.co.at/x2-frei-programmierbare-regelung/cmi/
- Replace the adapter icon and show it in the README.
- Clarify that the C.M.I. is the gateway and should not be configured as a data node.
- Add explicit unofficial-project and third-party asset/copyright notes.
- Map plain C.M.I. system group names like
general,date,timeandsun. - Keep the global connection state true when at least one configured CAN node polls successfully.
- Send
jsonparamwith literal commas to avoid C.M.I.SYNTAX ERRORresponses.
- Document that the configured nodes are target CAN devices, not the C.M.I. own CAN address.
- Log C.M.I. status errors with CAN node context.
- Initial release.
MIT License. See LICENSE.
