Adding new input and output types

I just discovered Node-RED and think it might be a very interesting add to another open source project, or vice versa. Are the input and output types extensible? Would it be practical to add a new input type that can receive data from a new data source? I can do it building on the available primitives. But I already have multiple libraries available to accelerate integration. In C, C++, Javascript (browser and Node), and Python.

The javascript API for telemetry subscription takes a json object, and a callback. The json object contains an array of string identifiers for each telemetry item. It also contains functions to retrieve metadata like detailed description and units. It then calls the callback when the data is updated.

The javascript API for commanding takes a json object with the string identifier of the command, and an array of objects defining values for any command arguments. It also contains functions to retrieve the command metadata (arguments).

I can recreate this API with the primitives given, but with thousands of telemetry items and commands, it would at least need a layer of abstraction. It would be great if users could just drag an input node, and enter an identifier in the properties. Maybe even let the user query the database for identifiers at runtime.

Hi @mbenson, the main way Node-RED is extended is by creating new nodes for the palette. There are over 1400 nodes created by the community and available from flows.nodered.org.

There’s more information about how to create your own nodes in the documentation - https://nodered.org/docs/creating-nodes/

Nick