Houseflow is open source home automation system, it lets you configure various devices like lights, switches, gates, sensors, and much more.
- Fast, written with high-performance languague, Rust.
- Integration with Google Home
- Configurable from config files.
- CLI Client
- Easy to use(issues with #ux label)
- ESP8266 Support
- ESP32 Support(issue #161)
Houseflow server is splitted into few parts.
- Auth, responsible for handling user logging in, refreshing access tokens.
- OAuth2, handles OAuth2 requests from Google, used for integration with Google Home.
- Fulfillment. Handles all device related requests from users, such as EXECUTE, QUERY, or SYNC. Supports multiple clients, see Client. Uses Lighthouse to send the requests.
- Lighthouse. A websocket server which connects with embedded devices.
Houseflow is designed to have many clients. At the moment only 2 clients are supported.
- CLI app, located at
cli/
- Google Home
Written using Arduino framework and PlatformIO.
Supported via the devices/virtual/
crate.
Houseflow exposes many crates. Here's a brief overview of what they're for.
houseflow-api
. API for communicating withhouseflow-server
.houseflow-cli
. CLI Interface for communicating withhouseflow-server
. Useshouseflow-api
under the hood.houseflow-config
. Type definitions of Houseflow configuration files, and utilities for reading them.houseflow-db
. Database interface & implementations, currently supported is SQLite. It's used only for storing users and admins.houseflow-device
. Blocks for building embedded devices.google-smart-home
. Google Smart Home type definitions, they match with the official source.houseflow-server
. Houseflow server, can be used as a library or as a binary.houseflow-types
. Type definitions for Houseflow, such as Devices, Users, Tokens and etc.
Contributors are very welcome! No contribution is too small and all contributions are valued.
Get in touch with me on Matrix @gbaranski:matrix.org, or via email root@gbaranski.com.