qwandor / houseflow

Home automation platform for microcontrollers(including ESP8266/ESP32), Raspberry Pi, and others. Made with Rust and C++.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Houseflow

build lines-of-code

Houseflow is open source home automation system, it lets you configure various devices like lights, switches, gates, sensors, and much more.

Features

  • 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)

Architecture

Server

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.

Client

Houseflow is designed to have many clients. At the moment only 2 clients are supported.

Device

ESP8266/ESP32

Written using Arduino framework and PlatformIO.

Raspberry Pi

Supported via the devices/virtual/ crate.

Crates

Houseflow exposes many crates. Here's a brief overview of what they're for.

  • houseflow-api. API for communicating with houseflow-server.
  • houseflow-cli. CLI Interface for communicating with houseflow-server. Uses houseflow-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.

Contributing

Contributors are very welcome! No contribution is too small and all contributions are valued.

Getting help

Get in touch with me on Matrix @gbaranski:matrix.org, or via email root@gbaranski.com.

About

Home automation platform for microcontrollers(including ESP8266/ESP32), Raspberry Pi, and others. Made with Rust and C++.

License:GNU General Public License v3.0


Languages

Language:Rust 94.8%Language:C++ 3.6%Language:HTML 0.7%Language:Python 0.6%Language:Dockerfile 0.3%