DIY Experimental Elixir-based smart home.
- MPV - Exshome uses it as a player. You will not be able to play any track without it.
- Mobile-friendly
- Extensibility
- Test coverage
- Should support different Single Board Computers
- Designed to run in the home network (NAT)
- Install dependencies with
mix deps.get
- Setup database
mix ecto.setup
- Start Phoenix endpoint with
mix phx.server
or inside IEx withiex -S mix phx.server
. Now you can visitlocalhost:4000
from your browser.
You can use a pre-commit hook to check that CI will not fail on most frequent errors.
You will need to put it into .git/hooks/pre-commit
and make it executable (chmod +x .git/hooks/pre-commit
).
Example hook:
#!/bin/bash
MIX_ENV=test mix dialyzer || exit 1
MIX_ENV=test mix format --check-formatted || exit 1
MIX_ENV=test mix credo list --strict || exit 1
MIX_ENV=test mix coveralls --warnings-as-errors || exit 1
You can use bin/exshome
to start an application. It is an executable Elixir script. It downloads Exshome and starts the application.
You can download the latest version here:
wget https://raw.githubusercontent.com/exshome/exshome/main/bin/exshome
chmod +x exshome
./exshome
This script supports these environment variables:
EXSHOME_VERSION
- Exshome version. You can get the latest available version at hex.pmEXSHOME_HOST
- Host to listnen on, default is "0.0.0.0".EXSHOME_PORT
- Application port, default is "5000".EXSHOME_ROOT
- Path where all application data resides, default is "${HOME}/.exshome".EXSHOME_SIGNING_SALT
- LiveView specific variable. Generates a random value on each launch by default.EXSHOME_SECRET_KEY_BASE
- Secret key for Phoenix framework. Generates a random value on each launch by default.
- UNIX domain socket length is limited to about 100 bytes. Application uses these sockets to communicate with MPV. It will not work if the path is larger.
Exshome includes simple applications. Each application has own pages.
Simple clock.
Allows to play music. You can upload your files or add links to the remote resources.
It is early WIP. Responsible for automating workflows.
Right now Exshome is designed to run in a home network, so it has no auth. It can be dangerous to open it for a whole Internet.