Skip to main content

Epomakercontroller

Project description

Epomakercontroller

PyPI

A CLI tool to interact with an Epomaker RT100 keyboard that comes with a small screen attached. Some features will probably also work with the TH80.

This project is still very rough around the edges!

NOTE!!!: This currently only works over the USB connection!

Features

  • Upload images to the RT100 screen
  • Send arbitrary numbers to the CPU and Temeprature displays on the screen
  • Set RGB patterns on the keyboard
  • Set individual key colours
  • Start a daemon to continuously update the CPU and temperature on the screen

Requirements

I am using poetry v1.7.1

Installation

I suggest using conda or a python virtual env, tested on python 3.10 and 3.12:

Epomakercontroller package is available on PyPi

$ python3.10 -m venv epomaker
$ source epomaker/bin/activate
$ pip install EpomakerController

You can also install Epomakercontroller via poetry

$ sudo apt install poetry
$ git clone https://github.com/strodgers/epomaker-controller
$ cd epomaker-controller
$ python3.10 -m venv epomaker
$ source epomaker/bin/activate
$ poetry install

Usage

$ epomakercontroller
Usage: epomakercontroller [OPTIONS] COMMAND [ARGS]...

  A simple CLI for the EpomakerController.

Options:
  --help  Show this message and exit.

Commands:
  cycle-light-modes  Cycle through the light modes.
  dev                Various dev tools.
  list-temp-devices  List available temperature devices.
  send-cpu           Send CPU usage percentage to the Epomaker screen.
  send-temperature   Send temperature to the Epomaker screen.
  send-time          Send the current time to the Epomaker device.
  set-rgb-all-keys   Set RGB colour for all keys.
  start-daemon       Start a daemon to update the CPU usage and...
  upload-image       Upload an image to the Epomaker device.

The temperature on the Epomaker screen is supposed to be for the weather, but I thought it was more useful to display the temperature of some device on the host machine. You will need to find out the label used by a sensor on your machine, which you can do by:

$ epomakercontroller list-temp-devices

Temperature key: nvme
  Label: Composite
  Current: 35.85°C
  High: 82.85°C
  Critical: 89.85°C
  Label: Composite
  Current: 44.85°C
  High: 82.85°C
  Critical: 89.85°C

Temperature key: amdgpu
  Label: edge
  Current: 40.0°C
  High: N/A°C
  Critical: N/A°C

Temperature key: k10temp
  Label: Tctl
  Current: 44.5°C
  High: N/A°C
  Critical: N/A°C
  Label: Tccd1
  Current: 39.0°C
  High: N/A°C
  Critical: N/A°C

Temperature key: mt7921_phy0
  Label: N/A
  Current: 28.0°C
  High: N/A°C
  Critical: N/A°C

Then you can start the daemon with the corresponding label, eg:

epomakercontroller start-daemon k10temp

Alternatively leave the label blank to disable and only do CPU usage:

epomakercontroller start-daemon

The daemon will also update the date and time once when it starts

Note about interface numbers

I only have my own keyboard to go by, but as far as I can tell there are 3 available HID interfaces available when the keyboard is plugged in over USB. All 3 of them will work with this controller HOWEVER using interface 0 interferes with regular usage of the keyboard (eg typing).

I have found interface 1 to be the best to use, but some commands take an option for you to set the interface number manually if you need to eg:

epomakercontroller start-daemon --interface 2

You can also print all the available information about the connected keyboard using the 'dev' command. Here is an example of the output from my own keyboard:

epomakercontroller dev print_all_info
Printing all available information about the connected keyboard.
WARNING: If this program errors out or you cancel early, the keyboard
              may become unresponsive. It should work fine again if you unplug and plug
               it back in!
[{'interface_number': 0,
  'manufacturer_string': 'ROYUAN',
  'path': b'5-2.3:1.0',
  'product_id': 16400,
  'product_string': 'RT100 Wired',
  'release_number': 1281,
  'serial_number': '',
  'usage': 0,
  'usage_page': 0,
  'vendor_id': 12625},
 {'interface_number': 1,
  'manufacturer_string': 'ROYUAN',
  'path': b'5-2.3:1.1',
  'product_id': 16400,
  'product_string': 'RT100 Wired',
  'release_number': 1281,
  'serial_number': '',
  'usage': 0,
  'usage_page': 0,
  'vendor_id': 12625},
 {'interface_number': 2,
  'manufacturer_string': 'ROYUAN',
  'path': b'5-2.3:1.2',
  'product_id': 16400,
  'product_string': 'RT100 Wired',
  'release_number': 1281,
  'serial_number': '',
  'usage': 0,
  'usage_page': 0,
  'vendor_id': 12625}]

TODO

  • Support bluetooth/2.4Ghz
  • Upload GIFs
  • Macros

Contributing

Contributions are very welcome.

License

Distributed under the terms of the MIT license, Epomakercontroller is free and open source software.

Issues

If you encounter any problems, please [file an issue] along with a detailed description.

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

epomakercontroller-0.0.3.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

epomakercontroller-0.0.3-py3-none-any.whl (22.9 kB view details)

Uploaded Python 3

File details

Details for the file epomakercontroller-0.0.3.tar.gz.

File metadata

  • Download URL: epomakercontroller-0.0.3.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for epomakercontroller-0.0.3.tar.gz
Algorithm Hash digest
SHA256 977972e334e1196e7a89a84077f1413ee1ace253ff4de1cfb5f53aede9c4d0f9
MD5 cce722985a4830b513b6b0cc2ec1624c
BLAKE2b-256 ba250a9a54a55d4226c1ca829853b962fb86c1b092d28d48c023c86559a7fe99

See more details on using hashes here.

File details

Details for the file epomakercontroller-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for epomakercontroller-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d328b5093684d1130d01a80be067451161875f114d583fa39027f7ecfc45d303
MD5 903b60e245e0e22f5ed33fa5b2ba0980
BLAKE2b-256 80fef7b97847f95b10aa987c7c1da95eed9017e0f57033fa5807916bdc82d950

See more details on using hashes here.

Supported by

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