node-red-contrib-wow-ethernet-ip 1.0.0

Node-RED nodes for communicating with EtherNet/IP industrial devices (CompactLogix and MicroLogix) using the wow-another-ethernet-ip library. Read, write and monitor PLC tags in real time.

npm install node-red-contrib-wow-ethernet-ip

@keest/node-red-contrib-wow-ethernet-ip

Node-RED nodes for communicating with EtherNet/IP industrial devices — CompactLogix and MicroLogix 1400 (Allen-Bradley / Rockwell Automation).

Built on top of the wow-another-ethernet-ip library.

Node-RED Node.js License


Features

  • Device configuration node — register devices with IP, port, type and a list of tags to poll automatically
  • On Change node — observe a tag and emit a message only when its value changes (event-driven)
  • Read node — read any tag/address on demand (direct read, no polling cache)
  • Write node — write values to any tag/address
  • Auto-reconnect — automatic reconnection on connection loss
  • Configurable polling interval — set the tag reading cycle (default: 1500 ms)
  • CompactLogix buffer tuning — configure read/write cycle times to batch requests and avoid spamming the device
  • Supports atomic types (INT, DINT, REAL, etc.), strings (ASCIIString82) and arrays

Installation

Via Node-RED Palette Manager

  1. Open Node-RED
  2. Go to Menu → Manage palette → Install
  3. Search for @keest/node-red-contrib-wow-ethernet-ip
  4. Click Install

Via npm (command line)

cd ~/.node-red
npm install @keest/node-red-contrib-wow-ethernet-ip

From local folder (development)

cd ~/.node-red
npm install /path/to/node-red-contrib-wow-ethernet-ip

Restart Node-RED after installing.


Nodes

After installation, three new nodes appear in the EtherNet/IP category on the palette:

🔧 ethip-device (Configuration Node)

A configuration node that manages the connection with a physical device. It is shared between all the other nodes.

Property Description
Nome Friendly name for the device (e.g. forno)
Tipo CompactLogix (Rockwell) or MicroLogix 1400
Endereço IP Device IP address
Porta TCP port (default: 44818)
Ciclo Leitura (ms) (CompactLogix only) Minimum time between batched read requests (0–5000). Leave empty for library default
Ciclo Escrita (ms) (CompactLogix only) Minimum time between batched write requests (0–5000). Leave empty for library default
Polling (ms) Interval for automatic tag reading (default: 1500, minimum: 1)
Tags / Endereços List of tags to read automatically. Each entry has an address and an optional description

Tag address examples:

Device Type Examples
CompactLogix MINHA_TAG, STRING_NOME, MINHA_TAG[3]
MicroLogix N7:1, ST10:5, N7:33

🔵 ethip onchange

Observes a tag from the device's configured polling list and emits a message only when the value changes.

  • No input — this node has no input connector; it fires automatically
  • Select the device and pick a tag from the dropdown (populated from the device configuration)
  • Perfect for triggering flows on value changes (e.g., save to database when an operator name changes)

Output msg properties:

Property Type Description
payload number | string New value of the tag
topic string deviceName/tagAddress
tagAddress string Address that was read
tagDescription string Description from device config
deviceName string Device name
deviceType string compactlogix or micrologix
previousValue any Previous value (null on first read)
timestamp number Timestamp in milliseconds

🟢 ethip read

Performs a direct on-demand read from the device when it receives an input message.

  • The tag address can be set in the node config or sent dynamically via msg.address
  • The address does not need to be in the polling list — you can read any valid tag
  • Each invocation performs a fresh read directly on the device (not from the polling cache)

Input msg properties:

Property Type Description
address (optional) string Tag address to read. Overrides the node config

Output msg properties:

Property Type Description
payload number | string | null Value read (null on error)
topic string deviceName/tagAddress
tagAddress string Address that was read
deviceName string Device name
deviceType string compactlogix or micrologix
timestamp number Timestamp in milliseconds
error (on failure) string Error description

🟠 ethip write

Writes a value to a tag/address on the device when it receives an input message.

  • The tag address can be set in the node config or sent dynamically via msg.address
  • The value to write comes from msg.payload
  • For CompactLogix, the library automatically resolves the data type

Input msg properties:

Property Type Description
payload number | string Value to write
address (optional) string Tag address. Overrides the node config

Output msg properties:

Property Type Description
payload boolean true if successful, false otherwise
tagAddress string Address written to
deviceName string Device name
writeValue any Value that was written
timestamp number Timestamp in milliseconds
error (on failure) string Error description

Usage Example

Scenario: Monitoring a MicroLogix 1400

Imagine you have a MicroLogix 1400 controlling a furnace. You want to:

  1. Monitor the operator name (ST:3) and save it to a database whenever it changes
  2. Read the produced quantity (N7:1) on demand
  3. Write a reset command to N7:50

Step 1 — Configure the device

Create a device configuration:

  • Nome: forno
  • Tipo: MicroLogix 1400
  • IP: 192.168.1.1
  • Porta: 2232
  • Tags:
    • N7:1quantidade_produzida
    • ST:3nome_operador

Step 2 — Monitor operator name changes

  1. Drag an ethip onchange node onto the canvas
  2. Select device forno, tag nome_operador (ST:3)
  3. Connect it to a database node (e.g., MySQL, PostgreSQL)
  4. Whenever the operator name changes, the flow triggers automatically

Step 3 — Read produced quantity on demand

  1. Drag an ethip read node onto the canvas
  2. Select device forno, address N7:1
  3. Connect an inject node as input to trigger the read
  4. Connect the output to a debug node to see the value

Step 4 — Write a reset command

  1. Drag an ethip write node onto the canvas
  2. Select device forno, address N7:50
  3. Connect an inject node that sends msg.payload = 1
  4. When triggered, the value 1 is written to N7:50

Example Flow

An importable example flow is included. In Node-RED, go to Menu → Import and load the file from:

examples/basic-usage.json

Or find it in Menu → Import → Examples → @keest/node-red-contrib-wow-ethernet-ip.


Supported Devices

Device Class Used Protocol
CompactLogix (Allen-Bradley / Rockwell) CompactLogixRockwellV2 CIP over EtherNet/IP (UCMM)
MicroLogix 1400 (Allen-Bradley / Rockwell) MicroLogix1400 CIP PCCC over EtherNet/IP

CompactLogix — Supported Data Types

  • Atomic: SINT, INT, DINT, REAL, BOOL
  • Struct: ASCIIString82
  • Arrays: accessed via TAG_NAME[index]

MicroLogix 1400 — Supported Data Files

  • N (Integer)
  • ST (String)

Requirements

  • Node-RED ≥ 2.0.0
  • Node.js ≥ 14.0.0
  • Network access to the EtherNet/IP device (TCP port, typically 44818)

License

MIT


Author

Samuel Machado Rodrigues@keest


Related

Node Info

Version: 1.0.0
Updated 6 days ago
License: MIT
Rating: 0.0

Categories

Actions

Rate:

Downloads

0 in the last week

Nodes

  • ethip-device
  • ethip-onchange
  • ethip-read
  • ethip-write

Keywords

  • node-red
  • ethernet-ip
  • ethernetip
  • compactlogix
  • micrologix
  • rockwell
  • allen-bradley
  • plc
  • cip
  • industrial
  • automation
  • scada
  • iot

Maintainers