Skip to content

DHPKE/NODERED-RRCS-Bridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

node-red-contrib-riedel-rrcs

Node-RED nodes for communicating with Riedel RRCS (Remote and Routing Control System) intercom systems.

Overview

This package provides three nodes for Node-RED to interact with Riedel Artist/RRCS systems:

  • rrcs-config: Configuration node for RRCS connection settings
  • rrcs-client: Execute RRCS client operations (queries and commands)
  • rrcs-server: Receive RRCS event notifications

Based on the jlommori/riedel_rrcs implementation.

Installation

From npm (when published)

cd ~/.node-red
npm install node-red-contrib-riedel-rrcs

From source

cd ~/.node-red
git clone https://github.com/DHPKE/node-red-rrcs.git
cd node-red-rrcs
npm install

Then restart Node-RED.

Usage

Configuration Node (rrcs-config)

First, create an RRCS configuration node:

  1. Add any RRCS client or server node to your flow
  2. Click the pencil icon next to the RRCS Config field
  3. Enter your RRCS system's IP address and port (default: 3000)
  4. Click Add

This configuration is shared across all RRCS nodes.

RRCS Client Node

The RRCS client node allows you to query and control your RRCS system.

Available Methods

System Information:

  • getVersion: Get RRCS version
  • getState: Get RRCS state
  • isConnectedToArtist: Check Artist connection status

Objects and Ports:

  • getObjects: Get all objects
  • getAllPorts: Get all ports
  • getObjectProperties: Get properties of a specific object (requires objectId)

Crosspoints:

  • getAllActiveXps: Get all active crosspoints
  • getXpStatus: Get crosspoint status (requires objectId)
  • getXpVolume: Get crosspoint volume (requires objectId)

Gain Control:

  • getInputGain: Get input gain (requires objectId)
  • getOutputGain: Get output gain (requires objectId)

GPIO:

  • getGPInputStatus: Get GPIO input status (requires objectId)
  • getGPOutputStatus: Get GPIO output status (requires objectId)

Logic and IFB:

  • getLogicSources: Get logic sources
  • getAllIFBs: Get all IFBs

Trunking:

  • getAllActivePortClones: Get active port clones
  • getAllTrunkPorts: Get trunk ports
  • getTrunklineSetup: Get trunkline setup (requires objectId)
  • getTrunklineActivity: Get trunkline activity (requires objectId)

Input

For methods without parameters, send any message to trigger the request.

For methods requiring parameters (like objectId), send the parameter in msg.payload:

// Single parameter
msg.payload = 123; // objectId

// Or as an object
msg.payload = { objectId: 123 };

Output

The node has two outputs:

  1. Success: msg.payload contains the result from RRCS
  2. Error: msg.payload contains error information

Example Flow

// Inject node to trigger
msg.payload = {};
return msg;

// Connected to RRCS Client (getVersion)
// Output shows version information

RRCS Server Node

The RRCS server node receives event notifications from your RRCS system.

Configuration

  • Server Host: IP address to bind to (default: 0.0.0.0 for all interfaces)
  • Server Port: Port for XML-RPC server (default: 7000)
  • Event Filter: Choose "All Events" or select specific events to monitor

Events

The node can receive the following event types:

  • GetAlive: Heartbeat/keepalive
  • CrosspointChange: Crosspoint state changed
  • SendString: String message received
  • SendStringOff: String message cleared
  • GpInputChange: GPIO input changed
  • LogicSourceChange: Logic source changed
  • ConfigurationChange: Configuration changed
  • UpstreamFailed/Cleared: Upstream connection status
  • DownstreamFailed/Cleared: Downstream connection status
  • NodeControllerFailed: Node controller failed
  • NodeControllerReboot: Node controller rebooted
  • ClientFailed/Cleared: Client connection status
  • PortInactive/Active: Port status changed
  • ConnectArtistRestored/Failed: Artist connection status
  • GatewayShutdown: Gateway shutting down

Output

Each event generates a message with:

  • msg.topic: Event type (e.g., "CrosspointChange")
  • msg.payload: Event parameters from RRCS
  • msg.timestamp: When the event was received

Example

// Function node to process events
if (msg.topic === 'CrosspointChange') {
    node.warn('Crosspoint changed: ' + JSON.stringify(msg.payload));
}
return msg;

Example Flows

See the examples directory for sample flows.

Basic Example

  1. Query RRCS Version:

    • Inject node → RRCS Client (getVersion) → Debug
  2. Monitor Crosspoint Changes:

    • RRCS Server (filter: CrosspointChange) → Function → Debug
  3. Get Object Properties:

    • Inject (with objectId) → RRCS Client (getObjectProperties) → Debug

Technical Details

Dependencies

  • homematic-xmlrpc: XML-RPC client/server library
  • xml2js: XML parser

XML-RPC Communication

All RRCS communication uses XML-RPC protocol. The nodes handle:

  • Transaction keys (automatically added)
  • Connection management
  • Error handling
  • Event registration

Node Status Indicators

  • 🟢 Green dot: Connected/Success
  • 🔵 Blue dot: Processing request
  • 🟡 Yellow ring: Idle
  • 🔴 Red ring: Error/Disconnected

Troubleshooting

Connection Issues

  • Verify RRCS IP address and port
  • Check network connectivity
  • Ensure RRCS is accessible from Node-RED server
  • Check firewall rules

Server Events Not Received

  • Verify server host and port configuration
  • Ensure RRCS can reach the server (network routing)
  • Check that RegisterURL call succeeds (see Node-RED logs)
  • Verify event filter settings

Debug Logging

Enable Node-RED debug logging to see detailed RRCS communication:

node-red -v

Development

Project Structure

node-red-contrib-riedel-rrcs/
├── nodes/
│   ├── rrcs-config.js      # Configuration node
│   ├── rrcs-config.html    # Configuration UI
│   ├── rrcs-client.js      # Client node
│   ├── rrcs-client.html    # Client UI
│   ├── rrcs-server.js      # Server node
│   └── rrcs-server.html    # Server UI
├── examples/
│   └── basic-flow.json     # Example flows
├── package.json
├── README.md
└── LICENSE

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

License

MIT License - see LICENSE file for details.

Credits

Based on jlommori/riedel_rrcs by jlommori.

Support

For issues and questions:

Related Projects

Changelog

1.0.0 (2025-01-13)

  • Initial release
  • RRCS configuration node
  • RRCS client node with all methods
  • RRCS server node with event handling
  • Complete documentation and examples

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors