Skip to content
Thomas Schenker edited this page Apr 4, 2023 · 13 revisions

HomeDashboard Project Documentation

General Architecture

This picture shows all components of the HomeDashboard project. General Architecture

Datasources

Datsources collect data or process events to generate new data. Each datasource will publish it's data to a separate queue in AWS SQS.

Core

The Core contains interfaces and generic components which will be used by datasources.

Weather

Weather data sources fetches current weather data and a 7-days forecast from OpenWeatherMap.

Repository: https://github.com/tommzn/hdb-datasource-weather

Exchange Rates

Exchange rates are requested from a publisc API for defined currency combinations.

Repository: https://github.com/tommzn/hdb-datasource-exchangerate

AWS Billing

AWS uploads a billing report several times a day to a defined S3 bucket. A billing calculator picks this report up, calculates total cost of current AWS usage and publish this costs as a message.

Repository: https://github.com/tommzn/hdb-datasource-awsbilling

Indoor Climate

Indoor climate date, temperature, humidity and sensor battery status, is collected sensors places in each roome. See Indoor Climate Sensors for more details about this sensors.

Repository: https://github.com/tommzn/hdb-datasource-indoorclimate

Message Forwarding

Kafka is uses as source for all renderers. Default retention time for all topics is 1 day, which means renderer can read entire topic content on startup. With this approach a separate persistence layer, like a database, is not necessary.

Message Agent

Message agent reads messages from SQS queues and forward all of them to Kafka topics.

Repository: https://github.com/tommzn/hdb-message-agent

Events

Each datasoure publishes it's data as an event to AWS SQS. Event structures are maintained in a central event schema repo.

Event Schema

Based on central events schema programming language specific data structures are generated at each change.

Language Generated Event Structures
Golang https://github.com/tommzn/hdb-events-go

Event Archiver

For archiving each message will be published to a separate archive queue as well. An archiver will pick up all messages and persist them to a S3 bucket.

Indoor Climate Sensors

For indoor climate we use Shelly H&T Plus sensors. This sensors provides a MQTT integration to send updates of measurements to a topic. Each update is consumes from a device specific topic and send to indoorclimate queue on AWS SQS.