
# Aquamaniac Home Control System (AqHCS)

## Overview

Home automation/control system consists of multiple parts:
- nodes
  - decentralized, nodes just broadcast measured data over a two-wire
    communication network (clock/data), addresses are auto-assigned, no prior 
    setup necessary, no central bottleneck or single point of failure
  - node types
    - environmental measuring (temperature, humidty, CO2 and others)
    - motion detection, door/window sensors
    - LED strip controllers
  - small PCBs based on AVR microcontrollers
    - AtTiny84
    - AtTiny85
    - AtTiny841
    - AtMega644
  - modular operating system written in AVR assembler
  - event-driven GUI
  - driver modules for busses:
    - one-wire bus
    - two-wire-bus
    - SPI bus
    - UART
  - driver modules for devices/sensors:
    - DS18b20  sensors for temperature measurement
    - SI7021   sensors for temperature and humidity measurement
    - SGP_30   sensors for air quality measurement
    - ccs811   sensors for air quality measurement
    - SK6812   LED driver
    - I2C displays (work-in-progress)
    - SPI displays (work-in-progress)

- applications
  - aqhome-data
    - TCP data service receiving sensor data
  - aqhome-nodes
    - service receiving sensor data via inter-node bus from nodes
      and forwarding that data to aqhome-data
  - aqhome-mqttlog
    - service exchanging data between aqhome-data service and a
      mqtt server
  - aqhome-react
    - service reacting to data received by aqhome-data (home automation service)
  - aqhome-tool
    - tool to manipulate aqhome-data (e.g. edit devices and values,
      add data points, create graphs from aqhome-data)
    - tool to flash firmware for nodes, list nodes
  - aqhome-cgi
    - HTTP service for user interaction with aqhome-data

