View Source Exshome
DIY Elixir-based smart home.
system-dependencies
System dependencies
- MPV - Exshome uses it as a player. You will not be able to play any track without it.
project-goals
Project goals
- Mobile-friendly
- Extensibility
- Test coverage
- Should support different Single Board Computers
getting-started-with-development
Getting started with development
- 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.
launching-as-a-script
Launching as a script
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".
caveats
Caveats
- 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.
applications
Applications
Exshome includes simple applications. Each application has own pages.
clock-exshomeclock
Clock (ExshomeClock)
Simple clock.
player-exshomeplayer
Player (ExshomePlayer)
Allows to play music. You can upload your files or add links to the remote resources.
automation-exshomeautomation
Automation (ExshomeAutomation)
It is early WIP. Responsible for automating workflows.
security-considerations
Security considerations
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.