I thought people might be amused, and might even want to duplicate, this little widget I created for monitoring the performance of my new HVAC system. I've got a pretty high-end Honeywell 8000-series thermostat, but it won't do all that I wish.
It's a little circuit board, containing an Arduino processor.
You mount it somewhere near the air handler, and connect the thermostat wires to it. (I'm such a geek that I actually put in a junction box for the thermostat wires, with cables to/from thermostat, outdoor unit, air handler, and to this thing - with this bolted onto the junction box's cover).
My system is a heat pump with a two-stage compressor and one-stage of electric backup heat (heat strips) - hence the set of thermostat signals I'm monitoring. This can be modified for other type systems, by adding or substracting "channels".
Each thermostat signals goes into a little optocoupler and a 10K resistor, so the load on the thermostat signals is only 2-3ma. I also power the Arduino from the 'R' signal using a high-efficiency DC-to-DC converter, so the load on the 'R' signal is 150ma or so; since the 24vac transformer is usually rated at 40VA, this load seems acceptable (and doesn't appear to cause any problems). Alternatively one could provide a separate 5vdc supply from a wall wart.
Connection to the circuit board is via wifi. This nifty Arduino, actually an Adafruit Feather HUZZAH32, has built-in wifi (and Bluetooth, but I find wifi easier to work with).
My usual connection is via a smartphone app, which I wrote using MIT App Inventor. It has 3 screens, that look like this:
The leftmost screen is the primary one and shows the percentage of time the system has been in each state for a preceding amount of time; the slider at the top allows you to adjust the amount of time, and the button to the left of it allows you to toggle the slider scale among minutes, hours, or days. Tapping on any of the colored bars in the graph explicitly displays its percentage. There's a corresponding bar graph for heating modes, which of course has many more possible states. The very top shows the current system state.
The "events" screen just shows the system transitions. And the "setup" screen is pretty self-explanatory.
You can also interact with the Arduino via ASCII serial communication over the wifi connection. I do this using a perlscript running in Terminal under MacOS. (I'm sure there's a comparable way for Windows). This allows explicitly issuing commands to the Arduino (which is how the back-end of the smartphone app works). This is mainly for debug, but there is one such command that is pretty interesting, because it allows printing out a table of system states for up to 90 previous days (this info is stored in flash memory, so not lost during power outages). I paste this output into an Excel spreadsheet, so I have a database (with 2 second resolution) of system state info for all time. Pretty useful for deciding if filter should be changed, for example.
If anyone is interested, I can provide circuit diagrams, parts list (I'd say $50-100 worth of parts, including the Arduino), and my smartphone app. I'd also welcome any suggestions for improvement.
It's a little circuit board, containing an Arduino processor.
You mount it somewhere near the air handler, and connect the thermostat wires to it. (I'm such a geek that I actually put in a junction box for the thermostat wires, with cables to/from thermostat, outdoor unit, air handler, and to this thing - with this bolted onto the junction box's cover).
My system is a heat pump with a two-stage compressor and one-stage of electric backup heat (heat strips) - hence the set of thermostat signals I'm monitoring. This can be modified for other type systems, by adding or substracting "channels".
Each thermostat signals goes into a little optocoupler and a 10K resistor, so the load on the thermostat signals is only 2-3ma. I also power the Arduino from the 'R' signal using a high-efficiency DC-to-DC converter, so the load on the 'R' signal is 150ma or so; since the 24vac transformer is usually rated at 40VA, this load seems acceptable (and doesn't appear to cause any problems). Alternatively one could provide a separate 5vdc supply from a wall wart.
Connection to the circuit board is via wifi. This nifty Arduino, actually an Adafruit Feather HUZZAH32, has built-in wifi (and Bluetooth, but I find wifi easier to work with).
My usual connection is via a smartphone app, which I wrote using MIT App Inventor. It has 3 screens, that look like this:
The leftmost screen is the primary one and shows the percentage of time the system has been in each state for a preceding amount of time; the slider at the top allows you to adjust the amount of time, and the button to the left of it allows you to toggle the slider scale among minutes, hours, or days. Tapping on any of the colored bars in the graph explicitly displays its percentage. There's a corresponding bar graph for heating modes, which of course has many more possible states. The very top shows the current system state.
The "events" screen just shows the system transitions. And the "setup" screen is pretty self-explanatory.
You can also interact with the Arduino via ASCII serial communication over the wifi connection. I do this using a perlscript running in Terminal under MacOS. (I'm sure there's a comparable way for Windows). This allows explicitly issuing commands to the Arduino (which is how the back-end of the smartphone app works). This is mainly for debug, but there is one such command that is pretty interesting, because it allows printing out a table of system states for up to 90 previous days (this info is stored in flash memory, so not lost during power outages). I paste this output into an Excel spreadsheet, so I have a database (with 2 second resolution) of system state info for all time. Pretty useful for deciding if filter should be changed, for example.
If anyone is interested, I can provide circuit diagrams, parts list (I'd say $50-100 worth of parts, including the Arduino), and my smartphone app. I'd also welcome any suggestions for improvement.