I've been building something that got a bit out of hand... as it goes

Its a VISA-based automation framework for lab instruments and wanted to share it with the community for some feedback/requests to improve it.
The problem: I have several desks with different brands of equipment. VISA/SCPI is supposed to be cross-compatible but in reality that's hardly the case aside from *IDN and the basics. On top of that, I teach a class and it's often a hassle to tell students "No you
FIRST have to install NI-VISA
BEFORE installing IOsuite!" So this is my attempt at a cross-compatible abstraction layer that allows you to control your equipment from the same place without making any adjustments. No bulky downloads, no bloatware, no bickering about licenses, ... just Python

. Also, it contains a set of pre-made tests you can run using any equipment you might have connected. Works from CLI for the basics, but the GUI is overall a nicer experience. (I kept the CLI because its fairly quick in spotting which devices are connected)
A short AI generated description:
What it is open-EE-workbench is a free, open-source GUI and scripting framework for automating electronic test
equipment — oscilloscopes, power supplies, AWGs, DMMs, SMUs, and electronic loads. It runs on Windows,
Linux, and macOS. No vendor software required.
It's built on PyVISA/PyVISA-py, so it works with USB, Ethernet, and serial instruments without needing
proprietary drivers.
What it can do The GUI has four main areas:
- Workbench — live instrument control in one view. Connect your bench, and you get cards for each
instrument with real-time controls and readback. Save/load/reset instrument state snapshots.
- Automation — ready-made parametric tests: DC sweep (single, simultaneous, nested), PSU interrupt
transient capture, AC frequency sweep (Bode magnitude), DMM logger, and waveform analysis.
- Plot Specific — tests that produce standard datasheet-style curves directly: Static Characteristic (IV
curves) and Transfer Characteristic for BJT/FET devices, with a live canvas during the sweep.
- Sandbox — a no-code pipeline editor where you define sweep loops and actions (Set, Measure, Wait, Wait
for State) across any combination of instruments. Build custom parametric tests without writing Python.
There are also standalone CLI scripts for screenshots, sweeps, and waveform analysis that work without the
GUI.
Instrument coverage The SCPI command database (eewBackbone) currently covers 69 families across 15 vendors, including Keysight,
Rigol, Rohde & Schwarz, Tektronix, Siglent, Agilent, GW Instek, Korad, BK Precision, AIM-TTI, Fluke,
Hantek, OWON, and Keithley.
Adding a new instrument is a single JSON entry — no code changes needed.
Where to get it https://github.com/kerstensrobin/open-EE-workbench The wiki has setup instructions, parameter references, and screenshots:
https://github.com/kerstensrobin/open-EE-workbench/wiki Why I'm posting Two reasons:
1. If you try it and something doesn't work — wrong measurements, instrument not recognised, a command that
fails — I'd like to hear about it. Right now it works fairly well across the devices I have access to, but it will be a community effort to make it REALLY compatible with many devices.
2. If your instrument isn't in the database, feel free to open an issue or reply here with the make/model
(and *IDN? response if you have it). Adding support is straightforward and I'm happy to do it. There is a dedicated button that opens a Github issue and fills in some stuff already.
It's very much a work in progress, but it's been stable enough to use daily and I wanted to get it in front of people who might find it useful.
Devices I have already been able to confirm:
Rigol DS1054Z DHO804
Keysight DSOX1204, EDU36311A, EDU33212A, EDUX1052, EDU34450A
Agilent 33220A
Keithley 2231A
Korad KA3005P
Tektronix TBS1000C TDS2012B TDS2012C
And I've scraped many more programming manuals for commands, but experience taught me mileage may vary on the commands acquired by scraping.
Don't really know what to expect when other start using this. But I like it, so I thaught I'd share it and potentially help some others
