Earth Notes: Open-Source Thermostatic Radiator Valve (OpenTRV)
OpenTRV sets out to make it easy to save lots of energy by only heating rooms that you're using, and by no longer trying to use a single thermostat to get your whole house comfortable.
Heating accounts for around 60% of UK domestic energy use and 60% of people admit to heating unoccupied rooms. [p2 DECC 2012 2323, p33 DECC 2012 6918]
OpenTRV also allows a simple schedule to be set (no complex displays though!) and tries to anticipate when you'll need heating to improve comfort while boosting efficiency.
OpenTRV is designed to be simple to (retro-)fit to existing UK housing stock with radiator central heating.
Here are some key design principles behind OpenTRV:
- OpenTRV's primary target is UK housing stock already standing, with poor thermal efficiency, and gas-fired central heating with radiators, for which it aims to cut space-heating carbon footprint by 50%, and in many cases repay its cost in a single heating season.
- Basic OpenTRV systems should be cheap (quick payback, 10+ year life) and simple to retrofit by end-users.
- OpenTRV should not require the Internet or smartphones to operate; it should be possible to do basic operations with a simple UI physically at the radiator or its associated control unit.
- OpenTRV systems should gracefully degrade.
- OpenTRV intends to produce permissively-licensed free open reference designs suitable for large manufacturers to produce at low cost.
- OpenTRV intends to keep some or all of its designs suitable for computer / electronics / DIY enthusiasts to tinker with and extend.
- OpenTRV aims to minimise end-user costs by promoting WiFi levels of compatibility, allowing mix-and-match systems to be assembled and upgraded.
- OpenTRV aims to interoperate with such existing systems as OpenEnergyMonitor, X-10/HomeEasy/etc, and to interconnect with home automation systems and give users easy access to sensor data (etc) if they want it, while keeping an eye to privacy and security.
Scratching That Itch
Open source projects are said to work best when they really scratch an itch, ie fullfil a requirement or deal with an irritation, that nothing else works for.
As of the start of 2013 I had been trying to put together some electronic/programmable thermostatic radiator values/controls (TRV/PRC) that can follow a temperature programme against time (chronostat), individually call for heat (ie fire up) the central heating boiler when not meeting targets, and that have an occupancy sensor that can drop the target temperature a couple of degrees when a room is (unexpectedly) not occupied (or at least has no active awake human in it).
Why? At the October 2012 DECC smart heating workshop that I presented at there was wide agreement that the ability to retrofit soft heating zones to existing radiator central heating systems would likely be a good thing with a lot of potential to save heating un occupied spaces, and set appropriate heating levels in occupied areas too, with the potential for a lot of energy savings for little physical upheaval. That implies thermostats per heating zone, possibly even per room, controlling local TRVs to regulate temperature and able to bring on the boiler ("call for heat" or "boiler interlock" are common terms) if any zone needs heat to meet target. Modern building regs in England require at least two zones; this proposal is finer-grained.
In any case, this seemed hard to do, especially the occupancy sensing, and even a couple of major well known manufacturers that I've been talking to that that offered to lend me kit to test or tell me their hardware protocols, have not yet managed to do so.
There seems to be little that operates satisfactorily with fully-open protocols (sometimes a subset of functionality is available, but not enough, or not reliably) so that, for example, I could couple the system with a home automation system or my server or whatever.
The primary aim of the OpenTRV project is to have an unencumbered open design from boiler to rad of which pieces can be substituted at will, eg if cheaper. Licensing is permissive so that existing manufacturers can use our designs, and also so that "makers"/DIYers can use the tech easily.
And all of this is to try to make it easy and cheap and pleasant for everyone to save carbon emissions from heating: I think most people in the UK could halve theirs without hardship, and the UK has crappy housing stock and will for many years to come.
As of autumn 2013 we had working PICAXE and Arduino/AVR implementations, with REV1 and REV2 boxed instances of the AVR solutions deployed in multiple households for testing over winter 2013--2014.
News and Project Updates
See also the OpenTRV project update archive.
- 20170202: IoT Tech Expo Special podcast featuring an OpenTRV interview.
- 20170117: Case Study: IoT and Security – Who Needs Either? "[OpenTRV's] method is consistent with the founding values of IoTSF and what we consider to be best practice at the highest level, namely; a security-first approach, right-sized for the application and resilient over its life-cycle."
- 20161210: TRV1.5 20161211-RC3b release, with enhanced setbacks to be able to hit 30% savings against real data.
- 20160524: OTWiki on GitHub.
- 20161116: Scoping review of heating controls reveals amongst other things "zonal control reduced gas consumption by c12% compared to a Building Regulations compliant system".
- 20160523: Indie Manufacturing (January) interview.
- 20160218: Interoperability Hack Day with OEM and others c/o BCS in London, and also see collaboration repo at GitHub.
- 20160229: Going Green in Electronics
- 20160218: London’s First LoRa Base Station: "Peter Karney, Head of Product Innovation at the Digital Catapult, blogs about London’s first LoRa base station being installed on the roof of the Digital Catapult Centre and what benefits it will offer for IoT innovation. Working in close partnership with OpenTRV (one of IoTUK’s Showcase companies) the Digital Catapult has installed and made available to all, a LoRa base station in Central London. LoRa stands for Long Range Radio, and is one of the new radio technologies targeted for M2M and IoT networks."
- 20160218: LoRa driving IoT projects from London base: "We at OpenTRV like to think of this as the missing link in the evolution of the Internet of Things," he said. "Low cost sensors, simplified deployment, cloud based analytics and now free connectivity have reached the point where the combination is so cost effective that the business case moves into the no-brainer category."
- 20160102: The 10 hottest IoT start-ups to watch in 2016.
- 20150930: Speaking at Wuthering Bytes about Health, wealth and buses: IoT and carbon.
- 20150824: Maker Monday interview.
- 20150807: OpenTRV is happy to announce an initial tranche of angel funding to help get manufacturing underway this winter!
- 20150806: refactored radio functionality released today including OTRadioLink V0.7 with interrupt-driven RX and OTProtocolCC V0.3 simple central-control 2-way protocol (CC1).
- 20150723: "Running a tight ship in the digital age" Guardian 'roundtable' discussion including OpenTRV.
- 20150520: finalists for Interop London’s Tech Startup 10!
- 20150327: RS DesignSpark piece from heating to buses via IoT!
- 20150324: at the Shell Enterprise Conference today.
- 20150312: fabulous bit of inventive measurement by someone in the OpenTRV trial as we tried to track down the cause of some boiler short cycling: Results of Monitoring a Vaillant ecoMAX pro 18E Boiler.
- 20150219: OSHUG38 — Scratching the itch: saving the planet, Damon Hart-Davis.
- 20150219: Quantimetrica is going to Embedded World with one of our boards (PDF); we're really looking forward to further dev work with them and their clever voice tech!
- 20150116: Ooooh, apparent first bad (binary) data frame/point to get past the (7-bit) CRC and other checks; claimed room at ~99C at 19:20 for one data point in the binary stream only! From at least 150k binary data frames received. I did check that the unit was not on fire.
- 20150105: first code snapshot uploaded onto very first REV7 board (README) along with correct complaint about RFM23B not being fitted causing panic() as designed.
- 20141123: V0.0.6 of server now logs JSON-format frames; these are sent CRC protected from leaf nodes.
- 20141120: Mike's Tiny Home Area Network Stack!
- 20141119: final pitch for IoT Launchpad to Innovate UK today.
- 20141113: successful preliminary integration with Quantimetrica voice detector for an additional strand of occupancy sensing.
- 20141027: Mark talking about Climate-KIC whose accelerator program we are in.
- 20140519: OpenTRV modules with or without a radiator to control can now be allowed to transmit stats information to be logged centrally such as for this plot of temperatures inside and outside (4o) DHD's house.
- 20140327: OpenTRV doing its magic in Bruno's home.
- 20140218: Have initial code to communicate between a laptop/PC/server and an OpenTRV CLI over serial (using the RXTX lib), to interact with the unit and to gather stats (eg see Linux script.
- 20140202: OpenTRV talk at FOSDEM: slides .odp and other formats, 25m video silent for the first 3m:40 then low quality audio until 8m (smaller .ogv version), Q&A afterwards, addressing OpenTRV.
- 20131222: First boiler control unit install (at BG's house, also his photo).
- 20131216: Did first (pre-trial) install today, and Mark H gave a talk at CleanWeb.
- 20131212: First of batch of REV1 30 boards from PM Services correctly running and fitted into latest box revision today!
- 20131026: Bruno slaved over a 4-layer box design (OpenSCAD source); view and bottom three layers as printed with main REV1 board in place.
- 20130926: OpenTRV won third place at Connecting Homes; OpenTRV Connecting Homes Press Release; the British Gas Connecting Homes competition (pitch event and showcase for 25 startups in the home energy sector); my pitch/presentation.
- 20130722: District heating DHW controlled by OpenTRV V0.9 saves ~1/3rd of energy consumption (down from ~0.23GJ/fortnight to ~0.14GJ/fortnight) by reducing tank losses overnight (thus large temperature drops to as low as ~35°C when not needed: OpenTRV target/max is 53°C while old Danfoss analogue maintained ~47°C). Note that in this graph old analogue stat was refitted ~June 25th for fortnight repeat test, the first half is OpenTRV. See a typical daily temperature curve too; the tank is heated from ~8am--10am. If hot water is needed earlier Bo sets his alarm from an hour before and presses the WARM button to bring the system up to temperature early.
- 20130702: First cut (revision 0) of V0.2-Arduino PCB ordered from iTEADStudio, get .ZIP snapshot bundle of Eagle and Gerber files.
- 20130522: Have FHT8V TX working from V0.2-Arduino (see snapshot) with minimum/idle current still ~3uA@2.6V and a calculated mean of 23uA+ in 'frost' mode assuming 0.1% RFM22 duty cycle for TX, maybe double that in 'warm' mode with LEDs flashing and doubled TX for robustness; well within power budget for 1 (100uA) or 2 (50uA) year operation from NiMH AA hybrids I think.
- 20130510: PICAXE code tagged at V0.1-operational.
- 20130416: Optiboot V5.0 bootloader for ATmega328P running at 1MHz from internal clock suitable for 2xAA power-efficient operation. (README boards.txt content for Arduino 1.0.3 IDE bootloader .hex example low-power blink sketch all as one ZIP file.) IDE 1.6.x boards.txt extension.
- 20130410: Five populated V0.09 PICAXE boards!
- 20130404: Mike populated (and tested) the first V0.09 board!
- 20130311: Hurrah! First PCB design (600dpi PNG) shipped to fab (and components to populate 7 boards ordered). Mike and Bo have been labouring like slaves for this; many thanks! Simple diagnostic code (and README) to test a board for gross faults.
- 20130226: TRV node is controlling local TRV and boiler; soft-zoning ahoy!
- 20130214: Controlling boiler directly and TRV via radio for first soft zone prototype! (r327)
Basic Operation (V0.09, V0.1, V0.2, V1.x)
The V0.2 design (as the V0.09 design also) works as follows:
- Each radiator is fitted by the user with a Conrad FHT8V wireless radiator valve in place of the existing TRV head (eg hand unscrew old TRV head, screw FHT8V on, no plumbing required)
- The OpenTRV unit containing temperature sensor and user controls sits somewhere near the radiator in the room and controls the FHT8V over wireless (868MHz ISM band) to regulate the room/zone temperature as desired.
- An OpenTRV unit near the boiler listens out for the other OpenTRV units opening their local wireless valves, and if any are open, turns on the boiler, thus providing full soft zoning, ie without plumbing changes. (This OpenTRV unit can also control a local radiator for cost efficiency in a small system.)
The V1.x all-in-one design replaces the valve head, contains the controls and temperature sensor, and can transmit (securely) to the boiler controller and Internet gateway.
OpenTRV will work better if it can interoperate easily with other open and proprietary systems in the heating and monitoring area, eg Open Energy Monitor and various home-automation (HA) systems.
OpenTRV was conceived for the typical UK combination of gas boiler plus radiators plus limited heating controls.
Bo H as of 2013/05 is using (PICAXE V0.1) OpenTRV to control his domestic hot water (DHW), and hopes to control his radiators too, that get their heat from the local district heating system, which is partly why he joined in with such gusto getting our first PCB layout together! (With the TRV slew rate turned right down, it seems to be working well for him at V0.1-operational tag with tweaks, saving ~33% but not keeping water hot pointlessly overnight.)
General Cheap/Open Sensor and IoT Platform
If we have this right then we can save people a lot of work redeveloping their own easy-to-program low-power reliable sensor platform.
This is an attempt to define some commonly-used terms in OpenTRV to avoid confusion: please send in corrections as needed!
A wiki superset is also available.
- (TRV) valve (base/body)
- Plumbed into a radiator's flow or return pipework to allow automatic regulation of flow of water through the radiator and thus heat into the room. For UK installations the control pin is typically vertical. See two freestanding valve bases.
- (TRV) valve head
- Part that screws on to (usually vertical in UK) TRV valve base to drive the pin and regulate the flow of water and thus heat. In this simplest case this is a purely mechanical component using a wax that expands/contracts in response to room air temperature to regulate room temperature. This part can be replaced by the end user, eg with a wireless radiator valve to make a 'smarter' zoned heating system. See two valve heads.
OpenTRV and associated/halo projects are all about interoperability and to that end we will use or create 'standards' where necessary.
From REV1 of the V0.2 OpenTRV PCB (and REV0 of DD1), we have settled on a main PCB size of 50mm by 50mm with 3mm (M3) mounting holes inset 1mm from each edge at the corners. Standard PCB thickness is 1.6mm. This is in part at least to enable a standard box/enclosure design to be adopted across all units. See for example this from the SVN repository.
All OpenTRV software and hardware designs are licensed permissively, specifically to encourage manufacturers to incorporate elements they find useful to encourage wide adoption, along with research and hobby/DIY use.
As of March 2013 everything was covered by an Apache 2.0 licence. All new hardware design elements thereafter will be under the Solderpad licence which better addresses some of the non-code IP issues. Note that Solderpad-licenced elements can be treated as if licensed under Apache 2.0 if preferred, as the latter is OSI approved.
DHD2013/04/17: broad licensing policy after discussion with Andrew Katz, a lawyer involved with the creation of the Solderpad (0.51) licence, a variant of Apache 2.0 that deals with some of the legal/IP issues beyond copyright and patents that Apache addresses:
- All code (including the generation scripts for 3D shapes): Apache licence.
- Schematics: Solderpad licence (eg paste the text into the schematic like we already have with V0.09 and the Apache licence).
- PCB: Solderpad licence by putting short text eg "Solderpad licence [URL]" linking to the licence text on the PCB legend.
- Generated 3D files (ie output of scripts): disclaim rights, eg add something to the output to the effect "we believe we retain no rights in this, but you may choose to regard this as licensed under Solderpad/Apache if you wish".