# NI-9477 digital output module Flowchem supports the National Instruments NI-9477 C Series module when it is installed in a CompactDAQ chassis such as the cDAQ-9171. The NI-9477 is exposed as a 32-channel relay-style component named `relay`. ```{note} The NI-9477 is a sinking digital output module. In Flowchem, `power-on` means that the output line is active/sinking current. It does not mean the module sources voltage to the connected load. ``` ## Installation Install the NI-DAQmx driver from NI and confirm the chassis and module are visible in NI MAX. Then install Flowchem with the NI extra: ```shell python -m pip install "flowchem[ni]" ``` For local development from this repository: ```shell python -m pip install -e ".[ni]" ``` ## Configuration If there is exactly one NI-9477 visible to NI-DAQmx, `module` may be omitted. Otherwise, set it to the NI MAX module name, for example `cDAQ1Mod1` or `Dev1`. ```toml [device.ni_outputs] type = "NI9477" module = "cDAQ1Mod1" reset_outputs_on_initialize = true ``` By default, Flowchem writes all 32 outputs OFF during initialization so the cached output state is known. Set `reset_outputs_on_initialize = false` if startup must not modify the hardware state. ## Relay API The component is available as `device_name/relay`, for example `ni_outputs/relay`. * `PUT /power-on?channel=1` activates one output. * `PUT /power-off?channel=1` deactivates one output. * `GET /is-on?channel=1` returns whether one output is active. * `PUT /multiple_channel?values=101` sets outputs from a compact state string; missing channels are padded OFF. * `GET /channel_set_point?channel=1` returns `1` or `0` for one output. * `GET /channels_set_point` returns all 32 cached output states. Flowchem channels are numbered `1` to `32`, mapped to NI physical lines `line0` to `line31`. ## Controlling a solenoid valve The NI relay component can be used as a `support_platform` for a BioChem solenoid valve: ```toml [device.ni_outputs] type = "NI9477" module = "cDAQ1Mod1" [device.valve_1] type = "BioChemSolenoidValve" support_platform = "ni_outputs/relay" channel = 1 normally_open = false ``` The `channel` value selects which NI-9477 output line drives the valve.