npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

node-red-contrib-ta-cmi-coe

v1.1.3

Published

Node-RED nodes for TA CMI CoE (CAN over Ethernet)

Downloads

480

Readme

node-red-contrib-ta-cmi-coe

🇩🇪 README Deutsche Version

Platform Release Downloads CommitDate License Languages

Node-RED library for reading and writing values ​​to Technische Alternative CMI via CAN over Ethernet (CoE).

Functionality

  • CoE Input Node: Receives individual analog and digital values ​​from the CMI
  • CoE Output Node: Sends individual values ​​to the CMI/controller
  • CoE Monitor: Receives and monitors packets from all sources
  • Support for CoE versions 1 & 2
  • Automatic conversion of analog values ​​based on Unit ID
  • Support for TA-defined measurement parameters
  • Configuration of sending condition & interval

BuyMeCoffee


Installation

Via Node-RED Palette Manager (recommended)

  1. Open Node-RED
  2. Menu → Manage palette → Install
  3. Search for node-red-contrib-ta-cmi-coe
  4. Install the package

Manual Installation

cd ~/.node-red
npm install node-red-contrib-ta-cmi-coe

Local Development Environment

cd ~/.node-red
git clone https://github.com/mayflo/node-red-contrib-ta-cmi-coe.git
cd node-red-contrib-ta-cmi-coe
npm link
cd ~/.node-red
npm link node-red-contrib-ta-cmi-coe

Restart Node-RED.

Prerequisites

  • CMI from Technische Alternative with firmware 1.39.1 or higher
  • The CoE version used is configured on the CMI (Settings > CAN > CoE).
  • For receive: CoE outputs must be configured on the CMI (Settings > Outputs > CoE).
  • For transmit: CAN inputs must be configured on the controller.
  • To receive messages, the CMIs used require a fixed IP address.
  • Communication takes place via UDP ports, which must be opened on the Node-RED host (CoE V1 Port 5441 / CoE V2 Port 5442).

Supported Devices

The library was developed and tested for the UVR610, but it works with all devices connected via the CMI's CAN bus:

  • UVR16x2
  • UVR1611
  • UVR61-3
  • X2 Controller
  • Other CAN bus devices from Technische Alternative

Quick Start

1. Create a CMI Configuration Node

First, create a CMI configuration:

  • Open any node for editing
  • Click the plus sign next to "CMI Config" → "Add new node..."
  • IP Range: IP address range of the UDP port (0.0.0.0 = all interfaces, 127.0.0.1 (local network)
  • CMI Address: (Fixed) IP address of the CMI
  • CoE Version: CoE V1/V2 (see CMI Settings → CAN)

2. Configure the CMI

For receiving from the CMI (CoE Input):

On the CMI under Settings → Outputs → CoE:

  • Input: CAN bus input (e.g., CAN 1)
  • IP: IP address of Node-RED
  • Node: Node Number of the input node
  • Network Output: Number of the output (1-32 in CoE V1 / 1-64 in CoE V2)
  • Sending Conditions: Suppression of small & frequent changes, interval for repeated sending (as required)

For sending to the CMI (CoE Output):

On the controller: Configure the CAN input

  • Node: Value from the "Node Number" of the output node
  • Output Number: Number of the output (1-32 in CoE V1 / 1-64 in CoE V2)
  • Measured Unit: "Automatic" for Node-RED Unit

Node Types

CoE Input Node

Receives values ​​from the CMI.

Output Message:

{
    payload: 22.5,                    // The value
    topic: "coe/10/analog/1",         // Format: coe/{node}/{type}/{output}
    coe: {
        sourceIP: "192.168.1.100",    // IP of the CMI
        nodeNumber: 10,               // CAN Node Number
        dataType: "analog",           // Data Type
        blockNumber: 1,               // CoE Block Number (only V1)
        outputNumber: 1,              // Network Output
        state: 22.5,                  // Value or Digital State
        unit: 1,                      // Unit ID (z.B. 1 = °C)
        unitName: "Temperature °C",   // Unit name
        unitSymbol: "°C°",            // Unit symbol
        timestamp: 2026-01-08T11:04   // Reception Time
    }
}

CoE Output Node

Sends individual values ​​to the CMI.

Input Message:

// Simple:
msg.payload = 22.5;

// With own unit:
msg.payload = 22.5;
msg.coe = { unit: 1 };  // Overrides config

Troubleshooting

Not receiving any data

  1. Check CMI CoE outputs: Check if IP address and port are correct
  2. Local IP: Try the maximum receive range with Local IP = 0.0.0.0 (all) (especially for Docker environments)
  3. Firewall: Check if ports 5441/UDP (CoE V1) or 5442/UDP (CoE V2) are open in the firewall
  4. Node Number: Check if it matches the CMI configuration
  5. Enable Debug: Activate "Receive All" and check the debug output

Sending not working

  1. Is the CMI reachable? Ping the CMI IP address
  2. CAN input on controller: Check if node number and output number are correct
  3. Timeout on controller? Use the "Send all outputs" interval

Multiple CMIs

  • Different node numbers must be used.

Incorrect values

  • Values ​​too large: CAN bus V1 is limited to ±32,767 (dimensionless)
  • Incorrect unit: Some units (working number, Euro) have limitations
  • Decimal places: Check if the correct unit ID is being used

Known limitations

  1. Max. value range: CAN bus version 1 is limited to ±32,767 (use V2 for a larger value range)
  2. No acknowledgment: CoE does not provide confirmation (fire-and-forget)
  3. The CMI functions as a gateway: Values ​​are transmitted from the CMI via CoE, but cannot be sent directly to the CMI. The values ​​are forwarded from the CMI to the CAN bus and read by the controllers.

Extended Usage

Custom Unit Conversion

// In Function Node before output:
const rawValue = msg.payload * 100;  // 2 decimal places
msg.payload = rawValue;
msg.coe = { unit: 0 };  // dimensionless
return msg;

License

Published under the Apache 2.0 License

  • ✅ Private and commercial use
  • ⚠️ No liability for damages resulting from use

Credits

Based on the protocol understanding and documentation of:

Support

Author

Author


Note: This library was developed in my free time. Support is provided as it becomes available. 😊