Giter Club home page Giter Club logo

earthship's Introduction

Earthship

Collecting smart home data and serving it through a web frontend. Also providing some forecasts based on external influences and prior values.

Data Sources

This is a work in progress, but these are the data sources that come to mind first.

  1. SMA API for solar panel output
  2. Xcel SDK for utilities usage (power, gas)
  3. Nest API for house temperature, AC/heat usage
  4. Rachio API for sprinkler usage
  5. Some smart water meter (Flume makes one and has an API) to monitor overall water usage.
  6. Cistern level monitoring on the rainwater tanks.
  7. Some weather API (maybe just piggyback forecast data from Nest or Rachio?) for temp, sunlight, precipitation.
  8. Others in the future? Would love to categorize water usage.

The MVP will collect SMA, Nest, and Rachio usage.

System Design

  • Cron jobs to pull data from APIs and write to a relational database. These jobs run for each API independently in case they have different rate limits or data availability. Each job hits the API for all available data and writes it to one or more tables (this database will be suitably normalized). The exact design of the database will depend on what data are available, so I don't have a great idea yet.
  • Cron job to train forecasts of every deliverable metric with enough data.
  • Manual backfill job to fill missing data (useful for cold start or API outages).
  • Backend to serve deliverables and predictions through an API.
  • Frontend to display a web page with a dashboard of all deliverables. Clicking on one opens a detailed page for just that deliverable.

Languages

The cron jobs can be written in any language. I would like to experiment with something I don't already know. The model training will be written in python. The backend can be written in any language with a good API framework. again I would like to experiment with something new. The frontend will be TS/react because I am not a web dev and that is the only frontend language I know.

Cloud design

Regardless of how this program is hosted, I am going to have a raspberry pi with a display panel in the house permanently loaded to the frontend UI. I will do this in AWS initially and pay attention to the cost. If the cost is too high, then I will run this entirely from the pi. The initial AWS architecture will run the cron jobs as lambdas triggered by cron cloudwatch events. The database will be an RDS instance, and the backend will be run with API gateway. The frontend will be hosted the same way as my personal website, which is hosted using route 53 and amplify.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.