Tracking runtime of HVAC


#1

I haven’t dipped my toe in the waters of fuel streams yet, but perhaps the time has come.

I have Trane XL824 thermostats and use the devicehandler from the ST community. The Nexia app (which SUCKS btw) has a beta feature of tracking runtimes. So it has missed a couple of days (and being NC, pretty sure the AC ran this week) and then yesterday, it tells.me that the downstairs AC ran 42 hours. Yep. 42 hours.

Since I automate the temp change with webcore, I’m coming templating automating the runtime portion.

Question now is, how would I go about this? The way I see it, I have four basic tstat calls:
Heat
Cool
Fan circulate
Backup heat

I doubt I’ll be able to get as granular as telling which stage the heat pumps run in because I’m fairly certain the device handler is not that granular.


#2

Just a thought… I use an Aeon energy monitor to track the power usage of my ground source heat pump and determine the running state. I have the power meter clamps in the main breaker box on the circuit that runs to the heat pump subpanel.

The power levels will be discrete enough to differentiate off, circulate, stage 1, stage 2, backup heat. Your thermostat setting can then determine whether the system is heating/cooling.

The Aeon HEM v1 is not extremely precise especially for inductive loads but it is usually available for $20 or less and perfectly capable for this type of use. You can install a custom device handler for faster reporting and access to individual clamps (one HEM can track two circuits).

You can probably make something work without a power meter, just my 2¢ saying that it is very useful if you have access to the main panel, a subpanel to avoid tracking several circuits independently, and the ability to set it up.


#3

I actually have a gen5 HEM but I have a couple of other loads that are similar that make it hard to sort out unfortunately.


#4

Ah yeah, unless you have meters on individual circuits they’re not really useful for something like this. You’re correct that you may not be able to differentiate the heat pump stage from the tstat device handler but you should be able to see whether it is heating, cooling, or circulating.

I can’t find where it was posted but I know that @ady624 had a great piston for tracking runtime that you may be able to adapt (from when arrays and monospace were added).

You could start with something based on the pseudocode below to track the total running time for a single day. It assumes there is some property called cooling with a value of true or false. Ady’s piston rolls that time over at midnight to accumulate runtime for the current week and month then displays it in a nice table that you can see on the dashboard.

datetime coolingStart;
datetime coolingToday;

if 
    tstat's cooling changes
then
    // Add the current cycle runtime when cooling stops
    set variable coolingToday = coolingToday + ([tstat cooling] || coolingStart == 0 ? 0 : $now - coolingStart)
    // Set the start time when cooling begins and reset to 0 when not cooling
    set variable coolingStart = [tstat cooling] ? $now : 0
end if 
if
    time happens at midnight
then
    set coolingToday = 0
    set coolingStart = coolingStart ? $now : 0
end if

That coolingToday value could be displayed in the piston state or elsewhere with formatDuration(coolingStart, false, 'm') to show runtime in minutes. More about formatDuration


#5

I have that piston from him. Restore code

ngkv