Xkeys rotary node for Node-RED using DCD Protocol
This is another of a group of Node-RED nodes which enable access to X-keys physical devices using the Dynamic Control Data Protocol (DCDP).
Dedicated Node-RED nodes for each X-key event of interest (button, jog, joystick, etc.) communicate, using MQTT, with a lightweight DCDP server, whose sole purpose is to mediate access to any physically attached X-keys devices.
This _xkeys\_rotary_ node encapsulates rotary events from any or specific X-keys devices.
This node requires at least version 0.1.1 of _dcdp-server_ to be running. Please follow the instructions at the _dcdp-server_ development repository to install it or, to upgrade an existing installation, see the _dcdp-server_ upgrade instructions.
The _node-red-contrib-xkeys\_rotary_ node itself is best installed from Node-RED's Palette manager. Go to the Palette manager's Install tab and search for _node-red-contrib-xkeys\_rotary_; then Install it once found. If not found, press the _Refresh module list_ button (two semicircular arrows) and search again.
When installed, a new _xk rotary_ will be found in the palette tab in a dedicated _Xkeys_ category.
The full msg.payload of the _xkeys\_rotary_ node is as follows:
```
{ device: NAME, vendor_id: VID, product_id: PID, unit_id: UID, control_id: INDEX, value: VALUE }
where
- NAME is an abbreviated name of the source device
- VID is the Vendor ID of the source device
- PID is the Product ID of the source device
- UID is the Unit ID of the source device, typically 0 from the factory but assignable 0-255
- INDEX is the controller number (in case a device has multiple rotary controls)
- VALUE is the value generated by the device
When configuring the node, a drop down list of possible devices shoud be available. If not, instead displaying just a note to Press Deploy button to see device list, first follow that advice. If that is unsuccessful (still no list of possible devices), then check the status of the dcdp-server by running the command sudo systemctl status dcdp-server in a terminal. Typical output of a normally running dcdp-server will be:``
pi@pi3b:~ $ sudo systemctl status dcdp-server
ā dcdp-server.service - Run dcdp-server as background service
Loaded: loaded (/etc/systemd/system/dcdp-server.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-07-11 09:31:55 AEST; 23h ago`
whereas a non-running dcdp-server will show something like:`
pi@pi3b:~ $ sudo systemctl status dcdp-server
ā dcdp-server.service - Run dcdp-server as background service
Loaded: loaded (/etc/systemd/system/dcdp-server.service; enabled; vendor preset: enabled)
Active: failed (Result: timeout) since Fri 2022-07-05 08:41:37 AEST; 19s agosudo systemctl restart dcdp-server`
If necessary, (re)start the dcdp-server with