-
Notifications
You must be signed in to change notification settings - Fork 0
Home
This picture shows all components of the HomeDashboard project.
Datsources collect data or process events to generate new data. Each datasource will publish it's data to a separate queue in AWS SQS.
The Core contains interfaces and generic components which will be used by datasources.
Weather data sources fetches current weather data and a 7-days forecast from OpenWeatherMap.
Repository: https://github.com/tommzn/hdb-datasource-weather
Exchange rates are requested from a publisc API for defined currency combinations.
Repository: https://github.com/tommzn/hdb-datasource-exchangerate
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 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
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 reads messages from SQS queues and forward all of them to Kafka topics.
Repository: https://github.com/tommzn/hdb-message-agent
Each datasoure publishes it's data as an event to AWS SQS. Event structures are maintained in a central event schema repo.
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 |
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.
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.