Skip to content
@home-anthill

home-anthill

Project icon by brgfx - https://www.freepik.com/free-vector/underground-ant-nest-with-red-ants_18582279.htm


ks89/home-anthill

Home Anthill

home-anthill is an IoT home automation system where ESP32 microcontrollers send sensor data (temperature, humidity, motion, air quality, light, air pressure, etc.) over MQTT. A Kubernetes-based microservice backend collects, stores, and exposes that data via REST/gRPC APIs. A React web UI and an Android mobile app let users manage their devices remotely.

Architecture

ESP32 devices
    │  MQTT (TLS)
    ▼
Mosquitto (MQTT broker)
    ├──► online-receiver ──► Redis ◄── online ◄── online-alarm ──► FCM (push)
    └──► producer ──► RabbitMQ ──► consumer ──► MongoDB (sensors DB)

api-devices (gRPC) ◄──► admission (REST/gRPC)
api-server (REST) ──► MongoDB (main DB)
    ▲
  gui (React) / app (Android)  ──  GitHub OAuth2

Firmware types

There are 3 types of ESP32 firmwares:

  • controllers — control devices like Air Conditioners (supports Beko RG52A9/BGEF and LG AKB74955603; extendable via crankyoldgit/IRremoteESP8266)
  • sensors — read temperature, humidity, light (lux), air quality, motion, air pressure
  • hybrid — both control and sense

Services

Repository Language Role
api-server Go Central REST API: homes, rooms, devices, profiles, auth
api-devices Go gRPC service: device registration + MQTT value publishing
admission Go REST + gRPC: device/sensor registration gateway
register Rust Sensor registration and data retrieval (MongoDB)
producer Rust MQTT → RabbitMQ bridge
consumer Rust RabbitMQ → MongoDB: persists sensor data
online Rust Tracks device online status in Redis; manages FCM tokens
online-receiver Rust MQTT → Redis: stores device presence with timestamps
online-alarm Rust Polls Redis for offline devices; sends FCM push notifications
gui TypeScript (React) Web dashboard: homes, devices, sensors
app Kotlin (Android) Mobile app: GitHub OAuth2, device management, FCM notifications
firmwares C++ (Arduino) ESP32 firmware: sensor, controller, thermostat variants
deployer Helm Kubernetes Helm chart for full platform deployment
mosquitto Go + Docker MQTT broker with dynamic auth entrypoint
esp32-configurator Python CLI: generates C header files from YAML config for ESP32 firmware
k8s-config-reloader Go K8s sidecar: watches ConfigMaps/Secrets, sends SIGHUP on change
docs Architecture diagrams, setup guides, API collections

Documentation

Guide Description
Local development setup Run the full stack locally with Docker
Hetzner / K8s deployment Production deployment on a K3s cluster (Hetzner)
Firmware install Flash ESP32 firmware with arduino-cli
Architecture diagrams Draw.io diagrams: register, control, sensor, notification flows
Bruno API collections Ready-to-use API request collections

Pinned Loading

  1. docs docs Public

    Shell

Repositories

Showing 10 of 19 repositories

Top languages

Loading…

Most used topics

Loading…