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 hid-usb-relay

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.1.tar.gz (222.5 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.1-py3-none-any.whl (227.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hid_usb_relay-26.1.1.tar.gz
  • Upload date:
  • Size: 222.5 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.1.tar.gz
Algorithm Hash digest
SHA256 7dbbb4d2402faa36eadb7e23a169d5eb2427f2806264525e0bed661a99e0ec37
MD5 b36335a6b69ee804b82f648e6487a04f
BLAKE2b-256 a4fe7389b894433101793b5ac5de3a430d4b3fdc3d7720560829192adc61adce

See more details on using hashes here.

File details

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

File metadata

  • Download URL: hid_usb_relay-26.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 83e65045a0ead21cad642bb27e3072e75ef30b5dca8d3a618171681229102963
MD5 192e721894319b465f8313448572b744
BLAKE2b-256 95d30428e41d6607ce84de4431e1d3e57fa184d07743dfbc8e06853814f2da14

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