Skip to main content

Home/Commercial SCADA-like automation system

Project description

Kaithem Automation

AI generated banner of a tavern

Linux Python Ten Year Project Offline First GPLv3 Badge Single Board Computer badge Pytest Ruff Ruff

Amidst the mists and fiercest frosts,
with stoutest wrists and loudest boasts,
He thrusts his fists against the posts,
And still insists he sees the ghosts.

Kaithem is Linux home/commercial automation server written in pure Python(3.10 and up). Resource usage is low enough to run well on the Raspberry Pi from an SD card

You automate things by directly writing python and HTML via a web IDE, or by using the built-in Chandler module, which is a full web-based lighting aud audio control board with a visual programming language.

Screenshots 🏕️

Cues List Preset Selector Audio Mixer Logic Editor Device Page

See the barrel.css demo for more themes

Installation 🌲

The careful text-books measure
(Let all who build beware!)
The load, the shock, the pressure
Material can bear.

Installing UV

First you'll need to get pipx and uv, if you haven't yet. In the future, pipx will likely not be needed at all, for now this seems to be the most convenient way to get uv.

sudo apt install pipx
# This may prompt you to log out and log back in
python3 -m pipx ensurepath
pipx install uv

# You may need to log out and log back to make uv available
uv tool update-shell

Installing Kaithem itself

Next you can just install it right from PyPi!

uv tool install --force kaithem

kaithem-scripts root-install-system-dependencies

To get the latest dev version, do this instead. You probably don't want this.

uv tool install --force --from git+https://github.com/EternityForest/KaithemAutomation kaithem

System Configuration 🛠️

So, when the buckled girder
Lets down the grinding span,
The blame of loss, or murder,
Is laid upon the man.
Not on the Stuff — the Man!

kaithem-scripts provides some helpful utilities to set up the system.

Scripts starting with . will do sudo by themselves, you call them as your normal user, and sudo will prompt you if needed. This is because running uv/pipx scripts directly with root would need extra setup.

# Launch at startup
kaithem-scripts user-start-kaithem-at-boot

# Currently, most distros don't have pipewire JACK enabled by default, which
# is needed for the audio mixing features.
kaithem-scripts root-use-pipewire-jack
kaithem-scripts user-restart-pipewire


# This activates a maxvolume service, which sets volume to full at boot.
kaithem-scripts user-max-volume-at-boot

# Linux by default has a LOT of stuff that writes
# excessively to the SD card. On a raspberry pi this
# Should make the system much more reliable without
# making anything work differently, except for putting logs in RAM
kaithem-scripts root-install-sd-protection

# Sets up a collection of misc tweaks that are recommended for kaithem.
kaithem-scripts root-install-raspios-linux-tweaks

# Installs Mosquitto and sets it up to allow anonymous clients.
kaithem-scripts root-enable-anon-mqtt

# Installs Mosquitto and sets it up to allow anonymous clients.
kaithem-scripts root-uninstall-bloatware

# Set up the Pi to display the Kaithem homepage(Can configure redirect in settings)
# On boot in a fullscreen kiosk, under the default user.

# Should work on non-pi systems that use lightdm too.
# Note this reconfgures lots of stuff and can't be undone except manually.
kaithem-scripts root-install-kiosk

# Sets sudo to passwordless by creating a /etc/sudoers.d/sudo-nopasswd file
# 0.89.0+ only
kaithem-scripts root-enable-passwordless-sudo

Matter Support

Kaithem has experimental support for the Matter protocol, if the python matter server is running. Use this command to set it up with Docker:

kaithem-scripts root-setup-matter-server

Then add a MatterControllerClient device via the UI. All commisioned devices will be auto-added as subdevices.

Manual dev install 🖐️

Info for devs here on the wiki (https://github.com/EternityForest/KaithemAutomation/wiki/Development)

Build dependencies

Dashbeard(https://github.com/EternityForest/Dashbeard) must be cloned into the same folder you cloned this repo into.

Setup

uv sync

# Need to set up Rust if you don't already have everything
# All Rust code currently compiles to .wasm
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add wasm32-unknown-unknown

# Need install deps to build the frontend with npm
npm install

make build

Recent Changes 🕗

AI generated banner of a water snake

Good men, the last wave by, crying how bright
Their frail deeds might have danced in a green bay,
Rage, rage against the dying of the light.

(See Full Changelog)

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

kaithem-0.96.0.tar.gz (13.5 MB view details)

Uploaded Source

Built Distribution

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

kaithem-0.96.0-py3-none-any.whl (9.9 MB view details)

Uploaded Python 3

File details

Details for the file kaithem-0.96.0.tar.gz.

File metadata

  • Download URL: kaithem-0.96.0.tar.gz
  • Upload date:
  • Size: 13.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for kaithem-0.96.0.tar.gz
Algorithm Hash digest
SHA256 96f56df68d11128a478b8a5242dcfd0b63869993b7bcd9bc168109343c8b525d
MD5 93a3d7cc7791f172d08bc1d1f1c45446
BLAKE2b-256 c5eae68f87e9a6466f94dad05f47b6f10fa13d718cd7921670e6b7b0e4781a7a

See more details on using hashes here.

File details

Details for the file kaithem-0.96.0-py3-none-any.whl.

File metadata

  • Download URL: kaithem-0.96.0-py3-none-any.whl
  • Upload date:
  • Size: 9.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for kaithem-0.96.0-py3-none-any.whl
Algorithm Hash digest
SHA256 85b6c24f663fd858cf28a5a74d403bae27cc049df6bc55544e237dbaac50d347
MD5 90cd35514f18183ffbc657f71c7bff9b
BLAKE2b-256 32c32c0ce933a32d17239c7c7e5ca72d6a29507ed77345d4bbd025e74d97eab4

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