View Source Exshome

CI codecov Hex Package Hex Docs

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 with iex -S mix phx.server. Now you can visit localhost: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.pm
  • EXSHOME_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

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.