Volux
Volux is a modular system for creating entertainment workflows with local, attached or network devices.
It's modular, extensible and both developer and end-user friendly!
Let me know what neat stuff you make with it!
🐦 Twitter
@DrTexx
📨 Email
denver.opensource@tutanota.com
My goal for Volux is to create something like IFTTT or Node-RED, but for local, attached or network devices.
Table of Contents
Installation
pip install voluxcli # for everyone
# OR
pip install volux # for developers
Demos
COMMAND | MODULES REQUIRED | DESCRIPTION |
---|---|---|
volux demo basic |
|
A simple source , transformer and destination working together. |
volux demo audio |
|
Visualize the loudness of your default recording device in the terminal. |
volux demo hue |
|
Slowly animates the hue of a LIFX device in a cycle. |
note: more complex, module-specific demos can be found in the repositories of modules themselves 🙂
Official Modules
NAME | DESCRIPTION |
---|---|
voluxaudio |
source : VoluxAudioStream
|
voluxcli |
CLI for Volux
|
voluxexamplemodule |
source : VoluxNumber
transformer : VoluxMultiply
destination : VoluxCliBar
|
voluxlight |
destination : VoluxLightLifxLan
|
About Modules
Volux modules are just Python modules, except the classes they contain are always subclasses of the following:
VoluxSource
VoluxTransformer
VoluxDestination
SUPERCLASS | DESCRIPTION | EXAMPLES |
---|---|---|
VoluxSource |
Outputs only Get information from host or network devices |
|
VoluxTransformer |
Inputs and outputs Transforms given inputs into new values or types. Hint: Chain multiple together to create data pipelines |
|
VoluxDestination |
Inputs only Control host or network devices in different ways |
|
Development
Installation
git clone https://gitlab.com/volux/volux.git
cd volux
poetry install
Building
# build 'volux' dist
pushd volux && poetry install && ./development-scripts/build.sh && popd
# build 'voluxcli' dist
pushd voluxcli && poetry install && ./development-scripts/build.sh && popd
# build 'voluxexamplemodule' dist
pushd voluxexamplemodule && poetry install && ./development-scripts/build.sh && popd
Advanced Topics
Enabling Bash Completion
NOTE: You only need to do this once. If you're unsure if you've already enable bash completion, check your ~/.bashrc
file first.
echo '' >> ~/.bashrc
echo 'eval "$(_VOLUX_COMPLETE=bash_source volux)"' >> ~/.bashrc
note: this will only work if voluxcli
is already installed
For Developers
If you're using poetry
(recommended for development), you will need to do the following every time you want to use shell completion:
poetry shell
source enable-bash-completion.sh
Explanation...
This appears to be due to poetry shell
loading ~/.bashrc
before it adds the corresponding virtualenv's [...]/bin
directory to the $PATH
.
You can test this by temporarily adding echo $PATH
to the end of your ~/.bashrc
file and then opening a virtualenv with poetry shell
.
Importantly shell completion only works if it can execute code from the voluxcli
dist (this is how click provides shell completion). Therefore if voluxcli
is inaccessible in your virtual environment when ~/.bashrc
is loaded, an error will occur and shell completion will not work.
Links
- Documentation: https://gitlab.com/volux/volux#volux
- PyPI Releases (volux): https://pypi.org/project/volux
- PyPI Releases (voluxcli): https://pypi.org/project/voluxcli
- PyPI Releases (voluxexamplemodule): https://pypi.org/project/voluxexamplemodule
- Source Code: https://gitlab.com/volux/volux
- Issue Tracker: https://gitlab.com/volux/volux/-/issues
- Twitter: @DrTexx
- Email: denver.opensource@tutanota.com