-
Notifications
You must be signed in to change notification settings - Fork 2
HotPi Head Unit
HotPi's head unit is a carrier board that holds a Raspberry Pi motherboard plus a bank of I/O channels. The head unit acts as the primary controller for the entire system, and provides both a simple on-device status display (plus three buttons for critical functions) as well as a mobile-friendly Web interface for complete control over the system.
HotPi can be modified to serve as a full heating/cooling controller, but its primary function is to manage heat. It manages a series of heat source to serve a collection of "zones" (areas that require heat) and their priorities (the order in which they should be heated).
One of HotPi's original design functions was to make wood boilers and other alternative energy sources (such as solar panels) as efficient as possible. It prioritizes the use of heat sources based on availability and expected contribution to the system. For example, a full-featured system with a wood boiler, solar panels, and hot-water storage tank might be configured to heat from solar first, then wood, then storage.
Unlike traditional 1-setting thermostats, HotPi is designed to heat zones in priority order to minimum, ideal, and maximum temperatures. Heat sources may be flagged as "consume if available," which would be set on a wood boiler or solar panel, but not on a storage tank.
When heat is required, zones will first be heated to their minimum temperatures with no priority between them. They will then be heated to their ideal temperatures in priority order. If "consume" heat sources are still available (hot), zones will then be heated to their maximum temperatures in priority order. This allows usable heat to be "dumped" into the house before it is wasted (by either not consuming solar when it is available, or up the chimney from a damped wood fire).
A heat storage tank is served by making it both the lowest priority heat source and the lowest priority heat zone. This means the house will be heated as much as possible first, and then any remaining "extra" heat will go to storage. When heating, solar or wood sources will be used up first before drawing from storage. HotPi is smart enough to not run sources when they are too cold to be useful. It can also be configured to deal with overheat situations, "dumping" heat to the house or storage even when it is not wanted (to cope with an overheating boiler, for instance).
Future versions of the system will be even smarter. For example, if a weather forecast predicts high solar contribution to the system, HotPi might use lower set-points for heat zones. Sunny, warm days "feel" warmer to the occupants, so HotPi might be able to heat the house less and store more of the solar contribution for overnight or the next (cooler) day. (It is also not necessary to heat zones to their maximums if the sun is shining.)
Another example is domestic hot water, which requires rapid heating although to a low temperature to be usable. It might be preferable to reserve some overnight wood-boiler capacity near the end of a burn to pre-heat water for morning showers rather than dumping the final 20% into storage. Or HotPi might be programmed to anticipate zone demand schedules, such as in-floor radiant loops in bathrooms and similar areas which only need to run at certain hours.
HotPi runs several software components to do its work. Some of these are optional. All of the names are hokey:
- Baker - Master control, uses sensor data and rules to make control decisions (C).
- Window - Mobile-friendly Web-based front-end (PHP)
- Harvest - Collect data from temperature and other sensors and store them in a database (C).
- Filling - Translate zone control commands and I/O to and from RS-485 (C).
- Crust - Runs on the zone controller itself, the counterpart to filling (AVR C).
- Honeybee - Translate Honeywell EnviraCom aquastat messages into a usable format (C).
As you can see, many of the components are written in C. This was done more to minimize memory usage than for performance (the Raspberry Pi has limited RAM, and we wanted to reserve it for MySQL/Apache).
TODO: Increase size of LED connector holes on relay board, move + to other side of jack. TODO: Move top-middle and top-right main board holes 1/8" left.