Library and CLI for the Hanmatek Power supply units (PSU) of the HM3xxP series.
Project description
Hanmatek HM3xxP PSU control library and CLI
Unifying library and CLI for the popular and low-cost digital lab power supplies HM305P
and
HM310P
.
The library provides an (almost) complete, easy to use interface to all known functions of the device. This project is different to the below mentioned ones, in that it provides a minimal, but complete interface to the device and also keeps the dependencies low.
This project is based on the work done in https://github.com/notkevinjohn/HM310P, which uses the
minimalmodbus
library for device communication. Other related projects were providing
useful register definition and hints:
- https://github.com/JackDoan/hm305_ctrl/tree/master/hm305
- https://github.com/hobbyquaker/hanmatek-hm310p
- https://sigrok.org/wiki/ETommens_eTM-xxxxP_Series#Protocol
Installation
pip install hanmatek-psu
If users are in the plugdev
user group, Hanmatek devices are accessible via /dev/ttyUSBx
without
privileges. Adding the following udev
rule will create a symlink /dev/ttyHM3xxP
when a Hanmatek
PSU device is plugged in via USB. This symlink is used by default by the hanmatek-cli
to find
devices:
echo 'SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyHM3xxP", MODE="0666", GROUP="plugdev"' | sudo tee "/etc/udev/rules.d/99-hanmatek.rules" > /dev/null
Usage
CLI Usage
hanmatek-cli -h
hanmatek-cli --discover # find devices
hanmatek-cli # show default device info
hanmatek-cli --device /dev/ttyUSB0 # specific device
hanmatek-cli voltage:set 3.0 # set voltage
hanmatek-cli current:set 0.1 # set current limit
hanmatek-cli output on
hanmatek-cli current # read current
hanmatek-cli power # read power
hanmatek-cli output off
hanmatek-cli --list # list all commands/registers
Library Usage
from hanmatek import HM3xxP
device = HM3xxP("/dev/ttyHM3xxP")
print(device.info())
device.write("voltage:set", 3.0)
device.write("current:set", 3.0)
device.write("output", True)
print(device.read("current"))
print(device.read("power"))
device.write("output", False)
Development
The following tools are used to provide clean and quality software, and made available through a
tox
configuration: flake8
for linting, black
for code formatting and checking, mypy
for
type checking and pytest
for unit tests. Use as:
pip install tox tox-poetry
(we're using tox-poetry
, so that tox
reads dependencies
from pyproject.toml
)
tox -a # show test environments
tox # run all
tox -e test # run unit tests
tox -e lint # run lint
tox -e type # run type checker
(we're using pyproject-flake8
, so that the flake8
configuration can live in pyproject.toml
- within tox
we then run pflake8
instead of
flake8
.)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for hanmatek_psu-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1944b9d7f393d935ca9fd2e9cbcf63575ff49900a16fd7d0ca6a407d6b90a7e8 |
|
MD5 | a34bb42f082453a2c7b05937247ffd76 |
|
BLAKE2b-256 | 88917e369cf96770cb38dde90525dae378485ab437b197733b99af59db5d3c60 |