Skip to content

Repository files navigation

Nominal Instro SDK Logo

An open-source, vendor-agnostic Python library for interfacing with test equipment.

PyPI Downloads Docs SDK Community Discord

Quickstart

from instro.daq.drivers.labjack import LabJackTSeriesDriver
# from instro.daq.drivers.ni import NIDAQDriver
from instro.daq import InstroDAQ
from instro.daq.types import Direction
from instro.lib.publishers import FilePublisher

pub = FilePublisher(format="jsonl", directory="/tmp/instro/")

daq = InstroDAQ(
  name       = "myDAQ",
  driver     = LabJackTSeriesDriver(device_id="1234"),
  publishers = [pub],
  #driver    = NIDAQDriver(device_id="Dev1") # swap drivers, same code
  )
daq.open()
daq.configure_analog_channel(
    direction=Direction.INPUT, physical_channel="AIN0", alias="ch_0", range_min=0, range_max=5
)
measurement = daq.read_analog()  # written to `publishers`
print(pub.file_path.read_text())

Basic

uv add instro
pip install instro

With Additional Packages

uv add "instro[all]"
pip install "instro[all]"

Available packages:

Instrument Type Package Contents
All all All drivers in this table
DAQ daq All DAQ drivers
nidaq NI DAQ package
mccdaq Measurement Computing (MCC) package
labjack LabJack package
I2C i2c All I2C packages
aardvark TotalPhase Aardvark package
EtherNet ethernetip EtherNet/IP support
Other contrib Community-contributed drivers
unstable Experimental unstable modules

See Installation for more info.

Category Class Vendors
Power Supply InstroPSU B&K Precision (9115, 914X), EA Elektro-Automatik (PSB 10000-series), Keysight (E36100-series), Rigol (DP800-series), Siglent (SPD3303), TDK Lambda (Genesys), simulated
Multimeter InstroDMM Agilent 34401A, Keysight 34461A, Keithley 2400, Keithley 2750 (unstable), simulated
Arbitrary Waveform Generator InstroAWG Keysight (33521B), Rigol (DG1022Z)
Electronic Load InstroELoad B&K Precision (85xxB-series), EA Elektro-Automatik (PSB 10000-series)
Oscilloscope InstroScope Keysight (1200X-series), Tektronix (2-series), Siglent (SDS1000X-E)
Flow Controller InstroFlowController Alicat MC-series
DAQ InstroDAQ Keysight 34980A, NI-DAQmx, LabJack T-series, MCC USB-series, DewesoftX (unstable)
I2C I2CInterface Total Phase Aardvark
Modbus ModbusDevice Any Modbus TCP / RTU device
Motor Controller InstroMotorController VESC 6 over CAN via python-can (unstable)
EtherNet/IP EtherNetIPDevice Allen-Bradley / CompactLogix-class PLCs

See Supported devices for more info.

To work on instro itself, clone and install with uv:

git clone https://github.com/nominal-io/instro.git
cd instro
uv sync

See Contributing for more info.

License

Apache License 2.0. Third-party dependency notices and proprietary vendor runtime requirements are documented in NOTICE.