Node-RED nodes for communicating with Riedel RRCS (Remote and Routing Control System) intercom systems.
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.
cd ~/.node-red
npm install node-red-contrib-riedel-rrcscd ~/.node-red
git clone https://github.com/DHPKE/node-red-rrcs.git
cd node-red-rrcs
npm installThen restart Node-RED.
First, create an RRCS configuration node:
- Add any RRCS client or server node to your flow
- Click the pencil icon next to the RRCS Config field
- Enter your RRCS system's IP address and port (default: 3000)
- Click Add
This configuration is shared across all RRCS nodes.
The RRCS client node allows you to query and control your RRCS system.
System Information:
getVersion: Get RRCS versiongetState: Get RRCS stateisConnectedToArtist: Check Artist connection status
Objects and Ports:
getObjects: Get all objectsgetAllPorts: Get all portsgetObjectProperties: Get properties of a specific object (requires objectId)
Crosspoints:
getAllActiveXps: Get all active crosspointsgetXpStatus: 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 sourcesgetAllIFBs: Get all IFBs
Trunking:
getAllActivePortClones: Get active port clonesgetAllTrunkPorts: Get trunk portsgetTrunklineSetup: Get trunkline setup (requires objectId)getTrunklineActivity: Get trunkline activity (requires objectId)
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 };The node has two outputs:
- Success:
msg.payloadcontains the result from RRCS - Error:
msg.payloadcontains error information
// Inject node to trigger
msg.payload = {};
return msg;
// Connected to RRCS Client (getVersion)
// Output shows version informationThe RRCS server node receives event notifications from your RRCS system.
- 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
The node can receive the following event types:
GetAlive: Heartbeat/keepaliveCrosspointChange: Crosspoint state changedSendString: String message receivedSendStringOff: String message clearedGpInputChange: GPIO input changedLogicSourceChange: Logic source changedConfigurationChange: Configuration changedUpstreamFailed/Cleared: Upstream connection statusDownstreamFailed/Cleared: Downstream connection statusNodeControllerFailed: Node controller failedNodeControllerReboot: Node controller rebootedClientFailed/Cleared: Client connection statusPortInactive/Active: Port status changedConnectArtistRestored/Failed: Artist connection statusGatewayShutdown: Gateway shutting down
Each event generates a message with:
msg.topic: Event type (e.g., "CrosspointChange")msg.payload: Event parameters from RRCSmsg.timestamp: When the event was received
// Function node to process events
if (msg.topic === 'CrosspointChange') {
node.warn('Crosspoint changed: ' + JSON.stringify(msg.payload));
}
return msg;See the examples directory for sample flows.
-
Query RRCS Version:
- Inject node → RRCS Client (getVersion) → Debug
-
Monitor Crosspoint Changes:
- RRCS Server (filter: CrosspointChange) → Function → Debug
-
Get Object Properties:
- Inject (with objectId) → RRCS Client (getObjectProperties) → Debug
homematic-xmlrpc: XML-RPC client/server libraryxml2js: XML parser
All RRCS communication uses XML-RPC protocol. The nodes handle:
- Transaction keys (automatically added)
- Connection management
- Error handling
- Event registration
- 🟢 Green dot: Connected/Success
- 🔵 Blue dot: Processing request
- 🟡 Yellow ring: Idle
- 🔴 Red ring: Error/Disconnected
- Verify RRCS IP address and port
- Check network connectivity
- Ensure RRCS is accessible from Node-RED server
- Check firewall rules
- 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
Enable Node-RED debug logging to see detailed RRCS communication:
node-red -vnode-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
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE file for details.
Based on jlommori/riedel_rrcs by jlommori.
For issues and questions:
- GitHub Issues: https://github.com/DHPKE/node-red-rrcs/issues
- Node-RED Forum: https://discourse.nodered.org/
- jlommori/riedel_rrcs: Original RRCS library
- Node-RED: Flow-based programming for IoT
- Initial release
- RRCS configuration node
- RRCS client node with all methods
- RRCS server node with event handling
- Complete documentation and examples