Metadata-Version: 2.4
Name: psucontrol
Version: 0.7.1
Summary: An application for controlling a Velleman LABPS3005D bench PSU and any compatible ones.
License-Expression: BSD-3-Clause
License-File: LICENSE
Author: Nita Vesa
Author-email: nita.vesa@outlook.com
Requires-Python: >=3.10,<3.15
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: indicatorlabel (>=0.9.1,<=1.0.0)
Requires-Dist: lcdlabel (>=0.8.1,<=1.0.0)
Requires-Dist: pyserial (>=3.5,<4.0)
Requires-Dist: pyside6 (>=6.10.0,<7.0.0)
Requires-Dist: rich (>=15.0.0,<16.0.0)
Requires-Dist: textual (>=8.2.3,<9.0.0)
Requires-Dist: xdg-base-dirs (>=6.0.2,<7.0.0)
Description-Content-Type: text/markdown

# PSUcontrol

This is an application for controlling a Velleman LABPS3005D bench PSU and any compatible ones.

The project is still a work-in-progress and has only been tested with the aforementioned Velleman. That said, the basics do work fine for me.

![PSUcontrol Example](extra/psucontrol_gui.gif)

## CAVEATS

These PSUs tend to be buggy in multiple different ways and I have seen some mentions online about some of them just randomly having far longer delays in responding to commands than usual. The Velleman I have is missing e.g. the ability to control the audible beeps and the ability to lock/unlock the physical controls despite the protocol documentation saying otherwise. Without the ability to upgrade their firmwares this project is entirely YMMV and no guarantees are given.

## INSTALLATION

The recommended approach:

```bash
pipx install psucontrol
```

([If you are not familiar with pipx, take a look here](https://pipx.pypa.io/stable/))

You can also grab one of the binary releases from the Releases-section but they are rather large because they bundle an entire Python-environment inside. Do also note that the Windows Defender is practically guaranteed to falsely flag the .exe-files as containing viruses -- this is a false positive but there is really not much I can do about it.

## DEVELOPMENT

Install `poetry`. I, again, recommend `pipx` for this.

To modify the GUI:

```bash
git clone --recurse-submodules https://github.com/WereCatf/psucontrol
cd psucontrol
export PYSIDE_DESIGNER_PLUGINS="external/indicatorlabel;external/lcdlabel"
poetry install
poetry run pyside6-designer
```

If you have made any GUI or resource-file changes, you can rebuild the relevant files with:

```bash
cd psucontrol # If not already in there
poetry run pyside6-project build
# There is seemingly no way of making either pyside6-project or pyside6-uic to correctly generate the imports
# so we have to always fix the imports, or at least I have not found a way to do this automatically.
sed -i 's/^import rc_/import psucontrol.rc_/g' src/psucontrol/*.py
```

If you don't plan to touch the GUI-stuff, you can just do:

```bash
git clone --recurse-submodules https://github.com/WereCatf/psucontrol
cd psucontrol
poetry install
```

## TODO

- Fill out this README more
- Implement the memory-buttons functionality
- Add toggleable graphing
- CLI-interface
- TUI-interface
- Maybe see about dumping the firmware (with Chipwhisperer?)
- Add support for more PSUs?
- Add support for multiple channels?

## License

This project is licensed under the BSD 3-Clause License - see the [LICENSE](LICENSE) file for details.
The project uses the Noto Sans-font - see the [LICENSE](OFL.txt) file for details.

