instro is an open-source Python library for scripting and automating test equipment (power supplies, multimeters, electronic loads, DAQs, and more) from one unified, typed API. Code against an instrument category once, then swap vendors with a single configuration change. When you want to capture the data, attach a publisher to stream it to a file, Nominal, or a destination of your own.
Start here
Quickstart
Drive a simulated power supply end-to-end in about five minutes. No hardware required.
Overview
Understand the architecture, key concepts, and design philosophy.
Installation
Install from PyPI with
pip or uv, plus the optional vendor extras you need.Examples
Browse runnable examples for every instrument category.
Supported instruments
Power supplies
InstroPSU: B&K Precision, Keysight, Rigol, Siglent, and TDK Lambda.Electronic loads
InstroELoad: B&K Precision 85xx series via SCPI/VISA.Digital multimeters
InstroDMM: Agilent/HP/Keysight 34401A, Keithley 2400, and more.Oscilloscopes
InstroScope: Keysight 1200X, Tektronix 2-series, and Siglent SDS1000X-E.Data acquisition
InstroDAQ: National Instruments, LabJack T-Series, Keysight 34980A.I2C
I2CInterface: Total Phase Aardvark with declarative system definitions.Modbus
ModbusDevice: any Modbus TCP or RTU device.EtherNet/IP
EtherNetIPDevice: Allen-Bradley and CompactLogix-class PLCs.Custom instruments
Build a new instrument type or vendor driver against
Instrument.Publishing data
Publishers
Stream measurements to Nominal Core, Nominal Connect, or a local file with a single line of configuration.