Skip to main content

hid based usb relay package

Project description

hid_usb_relay

A Python package for controlling HID USB relay devices with an API, CLI, or desktop GUI.

Installation

Install from the repository root:

pip install .

Or install in editable mode during development:

pip install -e .

Command line entry points

Once installed, use one of the provided console scripts:

  • hid-usb-relay-cli — run the command-line relay interface
  • hid-usb-relay-gui — launch the Dear PyGui desktop UI
  • hid-usb-relay-api — start the FastAPI server on 0.0.0.0:9400

CLI usage

hid-usb-relay-cli devices
hid-usb-relay-cli state 1
hid-usb-relay-cli status all
hid-usb-relay-cli control 1 on
hid-usb-relay-cli control all off

The CLI commands are:

  • devices — list connected relay devices
  • state / status — read the current relay state
  • control — set a relay state to on or off

Optional device selection is supported with --relay-id:

hid-usb-relay-cli control 1 on --relay-id DEVICE_ID

API usage

Start the API server:

hid-usb-relay-api

The server listens by default on 0.0.0.0:9400.

API endpoints

Root endpoints:

  • GET / — API information
  • GET /health — health check and connected device count

Relay endpoints:

  • GET /api/v1/devices — list connected devices
  • GET /api/v1/relay/control?relay_number=1&relay_state=on — change relay state
  • POST /api/v1/relay/control — change relay state with JSON payload
  • GET /api/v1/relay/state?relay_number=1 — read relay state
  • POST /api/v1/relay/state — read relay state with JSON payload

Example requests

curl "http://127.0.0.1:9400/health"

curl "http://127.0.0.1:9400/api/v1/devices"

curl "http://127.0.0.1:9400/api/v1/relay/control?relay_number=1&relay_state=on"

curl -X POST "http://127.0.0.1:9400/api/v1/relay/control" \
  -H "Content-Type: application/json" \
  -d '{"relay_number":"1","relay_state":"off"}'

curl "http://127.0.0.1:9400/api/v1/relay/state?relay_number=1"

curl -X POST "http://127.0.0.1:9400/api/v1/relay/state" \
  -H "Content-Type: application/json" \
  -d '{"relay_number":"1"}'

GUI usage

Run the desktop application:

hid-usb-relay-gui

This opens a simple Dear PyGui window for scanning devices, selecting a relay, and toggling relay state.

Python usage

Import the package in your own Python code:

from hid_usb_relay.usb_relay import USBRelayDevice, RelayState, RelayError, RelayService, enumerate_devices

# List devices
print(enumerate_devices())

# Read relay state
service = RelayService()
result = service.get_state(None, "1")
print(result.relay_state)

# Set relay state
result = service.set_and_get_relay_state(None, "1", "on")
print(result.relay_state)

Notes

  • The package uses platform-specific executables from src/hid_usb_relay/hid_usb_relay_bin.
  • If you do not install the console scripts, you can still import and use hid_usb_relay.api, hid_usb_relay.cli, and hid_usb_relay.gui directly.

Source manual

For more documentation, see the source manual.

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

hid_usb_relay-26.1.0.tar.gz (222.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hid_usb_relay-26.1.0-py3-none-any.whl (227.6 kB view details)

Uploaded Python 3

File details

Details for the file hid_usb_relay-26.1.0.tar.gz.

File metadata

  • Download URL: hid_usb_relay-26.1.0.tar.gz
  • Upload date:
  • Size: 222.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for hid_usb_relay-26.1.0.tar.gz
Algorithm Hash digest
SHA256 a056d1c022c0a6d5ba223dc0ebfeef9c5b1a8ca7054d357aa6cf1c04e2083600
MD5 17b7845c0c14108cb0667b34cd5ed0f3
BLAKE2b-256 a9cb493203bc2609297aea12fd557d6c4c776f51378b21c71c24c662db32cbf8

See more details on using hashes here.

File details

Details for the file hid_usb_relay-26.1.0-py3-none-any.whl.

File metadata

  • Download URL: hid_usb_relay-26.1.0-py3-none-any.whl
  • Upload date:
  • Size: 227.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for hid_usb_relay-26.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0b6adbe5d9ad979851a59e77b32c8685c63f92f0fb6f3f3bb73f9fc8cc360770
MD5 687c7d07a048335a272f4171ff996371
BLAKE2b-256 117a5fea84918722a7298fbf946204dcf7a630454e61493d5c0b17a026e66663

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page