Joulescope
raw JSON → 1.5.0 verified Fri May 01 auth: no python
Host driver and utilities for Joulescope™ precision DC energy analyzers (JS110, JS220). Receives real-time sensor data and records to JLS files. Current version 1.5.0, requires Python ~=3.11. Releases occur a few times a year.
pip install joulescope Common errors
error ModuleNotFoundError: No module named 'pyjoulescope_driver' ↓
cause Missing USB driver package, often on fresh install.
fix
Install manually with
pip install pyjoulescope_driver or reinstall joulescope with pip install --upgrade joulescope. error joulescope.exceptions.JoulescopeError: Device not found ↓
cause No Joulescope device detected or driver not installed.
fix
Check device connection, install pyjoulescope_driver, and ensure the device is powered on. Use sudo on Linux for USB permissions.
error AttributeError: module 'joulescope' has no attribute 'Joulescope' ↓
cause Importing from the wrong submodule or outdated install.
fix
Use
from joulescope import Joulescope. Upgrade with pip install --upgrade joulescope. Warnings
breaking Dropped Python 3.10 support in v1.4.0. Python >=3.11 required. ↓
fix Upgrade Python to 3.11 or later.
breaking Removed public setter `Device.output_sampling_frequency` in v1.2.2. The setter never worked as an API and is now a protected function `_output_sampling_frequency_set`. ↓
fix Do not set output_sampling_frequency; it is managed internally.
deprecated The v0 backend (old JLS format) is deprecated and may be removed in future versions. ↓
fix Use the v1 backend (default). Avoid using v0 functions like `open_v0`.
gotcha Scan function returns a generator, not a list. Must iterate or convert to list. ↓
fix Use `list(scan())` or iterate with `for info in scan():`.
Imports
- Joulescope wrong
from joulescope.driver import Joulescopecorrectfrom joulescope import Joulescope - scan wrong
from joulescope.scanner import scancorrectfrom joulescope import scan
Quickstart
from joulescope import Joulescope, scan
import time
device = None
for info in scan():
if info['brand'] == 'Joulescope':
device = Joulescope(info['serial_number'])
break
if device is None:
print('No Joulescope device found')
else:
with device:
current = device.current()
voltage = device.voltage()
print(f'Current: {current:.3f} A, Voltage: {voltage:.3f} V')
time.sleep(1)