mbtown01 / frosti Goto Github PK
View Code? Open in Web Editor NEW"Financially Reactive Open Source Thermostat Initiative" (FROSTI), a RaspberryPi-based hardware+software solution
Home Page: https://mbtown01.github.io/frosti/
"Financially Reactive Open Source Thermostat Initiative" (FROSTI), a RaspberryPi-based hardware+software solution
Home Page: https://mbtown01.github.io/frosti/
Currently, the FROSTI device has a database and stores all of it's state and configuration there.
To build a more resilient device, we need to make the SD card completely read-only. To do this, we need to at a high level:
If done well, the back-end API could be on the web of hosted locally. 1st pass would just include pushing measurements so if FROSTI reboots it can pick up where it left off, even with historic data.
We can also potentially leverage the on-board EEPROM for storing things like
Currently, we're pulling the entire window to get things like 'current temperature'. The scalar values need to have a static window of the past say 5 minutes... If the data isn't there, then something else is wrong.
Need to tie relays back to GPIO inputs to track their state (either replacing or putting in-line w/ the LEDs we're currently using)
Could pump this directly into influx from a separate daemon process
Should do this in the ThermostatService for consistency
Use case here is for setup where the main software isn't running, but we'd like to alert the user to what's going on. With the CLI, we can issue images to the display and operate the lights. Ideas were:
It may make sense to create a daemon service that owns both the LED ring and the epaper display (or maybe two daemons). With a simple API bound only to the local host, this daemon could run independently of the main logic and start early. This lets us do things like....
How does someone get started w/ the thermostat?? From imaging an SD card all the way to getting on the Wi-Fi network
This should effectively replace the terminal-based version of the user interface. Even for a developer experience, the UI could be exposed via a simple python window or even an HTML page w/ some kind of refresh
Focus on initial configuration and schedule design
Need to understand how frequently the watchdog timer is playing a role
Dash integration for a simple single-page app for configuration/setup
Guiding principles:
Should expose the following:
Watching the log, system kept saying price update was in 120 seconds (2 minutes) but said it every 5 minutes.
Currently, if a schedule is configured, it seems the thermostat will follow it even if it's in 'COOL' mode.
Maybe pick 4 and have 16 versions available??
I'm pretty sure the Pi is looking for a hi->low edge. A power dip could cause enough of a voltage drop at the pi for this to look like a button press. Maybe simply looking for low->hi edges would be a better solution here.
We are creating the SD card to have a read-only partition (hopefully to avoid "bricking"), so we should allow the user to drop a backup to their local machine and later restore it after FROSTI comes back online and re-creates /var.
thermostat
grid
power
curtailment
utilization
market
spot price
cost
bill
price
financial
open hardware, open source
warns / informs of power $$
What does it do??
Ideas:
Seems to occur when the thermostat board closes a relay for AC or HEAT. Solution could be as easy as some power filtering capacitors on the board
Good write-up of how to do this mostly with systemd and some python below:
https://www.medo64.com/2019/01/systemd-watchdog-for-any-service/
Installation process should include an influx docker image so the local process can direct data here instead of somewhere off-board. Can also be used to log as events occur and not at a specific time interval. Would need to have some kind of data warehousing scheme to only keep x days/weeks/months/years of data.
Starting from cooling, moving to 'heat' mode and make the target super high. Thermostat never seems to change out of cooling.
Combined with alerting, a health-check module could look at past trends and see whether the AC system is performing like it has previously.
Would probably want to combine this w/ a weather station as close to your home as possible so we can correlate outdoor/indoor temperatures.
Could potentially detect poor performance, but should be relatively easy to check for NO performance!
Need to eliminate the noise. For production, need to rely on syslog.
Item used to track feature requests for board v5
Currently, we're using postgres locally on the RPi to store data. This was already a fairly heavy solution, but if we want FROSTI to be as rugged as possible, frequent use of the local SD card as the backing store for Postgres is a weak spot.
If we can cache updates locally and then push data to Azure at some frequency, it would essentially eliminate the need for the local SD card to be anything but readonly.
Need to talk w/ some cloud folks on the right first steps here. A cloud-based DB with an API frontend may be ideal, but I'm sure there are lots of other ways.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.