PDA

View Full Version : Aprilaire 8870 driver


zaccari
03-30-2009, 10:25 AM
Current Version: 1.5

Description:
This driver is an upgrade from the CQC shipping driver as follows.

Release Info

Version 1.0

CQC shipping versionVersion 1.1

Added TxRelays field with content of all relays
Added discrete relay boolean fields for each relayVersion 1.2

Added TxSetTime write only boolean field to set time to that of the workstation where the driver is installedVersion 1.3

Clearly mark this a -dev device to avoid other folks having problems with upgradesVersion 1.4

Fix the TxSetTime so it can be called more than one timeVersion 1.5

Add limits to the TxCurrTemp so it can be shown using the progress bars that were recently added
I will probably add the lockout features that these thermostats support at some point, such as allowing automatically returning to set temps after a period of time when a change is made on the thermostat.

This has been brewing on my system for a while now. Let me know how it works for you.

Russ...

khill
03-30-2009, 06:15 PM
Thanks Russ - you delivered as promised...

I loaded the driver and was able to set the date/time as a daily scheduled event. I also checked out the relay status via the field browser against my HVAC current operation. Initially it read G-Y1-W1-Y2-W2-B+O- (I have a single stage, fossil fuel furnace).

After the furnace called for heat and the fan was running it read G-Y1-W1+Y2-W2-B+O-. I was thinking it should have read G+Y1-W1+Y2-W2-B-O-. I'm not sure where the B+ is coming from.

I like the direction you are taking this driver......

Kerry

zaccari
03-30-2009, 07:28 PM
The G+ would be appropriate if you had a fan. My system only has G+ when the AC comes on as I have baseboard hot water. If you have warm forced air, I believe your 8870 is configured wrong. The B+ and O+ are called reversal relays that I believe are used in more sophisticated systems.

As to direction, I'm open to other possibilities. I had originally considered allowing utilization of the buttons and menus but I can't think of any real reasons why I'd want to interact with users via my 8870. I do like the idea that the 8870 will be able to undo front panel changes after a set period of time so I'm going to implement the built-in lockout features as my last addition.

Russ...

khill
03-31-2009, 05:10 PM
I do have a forced air unit (non-heat pump) and agree the B & O are not applicable to my unit. I'll have to dig a little more to find out why the B is indicating +.

As for G, when I select "Manual Fan-on" the G- changes to G+. It does not however indicate "+" when the tstat calls for heat (W+) and the fan is running.

I also would find value to an added function by which the temp setpoint that is manually adjusted at the tstat would return to a previously programmed setpoint after a given period of time (e.g. 60-90 minutes).

Can this be accomplished somehow by writing the current T#SP to a variable and then a field trigger that looks for a field change of T#SP and starts a timer that resets T#SP variable after some time?

123
03-31-2009, 06:10 PM
"B+O-" means it is in heating mode.
"B-O+" indicates it is in cooling mode.

zaccari
03-31-2009, 10:10 PM
I also would find value to an added function by which the temp setpoint that is manually adjusted at the tstat would return to a previously programmed setpoint after a given period of time (e.g. 60-90 minutes).

Can this be accomplished somehow by writing the current T#SP to a variable and then a field trigger that looks for a field change of T#SP and starts a timer that resets T#SP variable after some time?You could do it in CQC but the thermostat has it already built in. It has several options. You can totally lock out the thermostat, lock it so it resets after time or allow changes. The changes allowed can also be restricted to a maximum amount (+ or -).

Russ...

khill
04-01-2009, 06:38 PM
"B+O-" means it is in heating mode.
"B-O+" indicates it is in cooling mode.

Thanks for info. After stepping through the modes, that is exactly what happens....

khill
04-01-2009, 06:41 PM
You could do it in CQC but the thermostat has it already built in. It has several options. You can totally lock out the thermostat, lock it so it resets after time or allow changes. The changes allowed can also be restricted to a maximum amount (+ or -).

Russ...

Thanks - I didn't see the reset info in the manual. I'll check it out.

zaccari
04-01-2009, 07:41 PM
I hope to put the lockout stuffs in this weekend so the 8870 changes are done.

Russ...

khill
04-09-2009, 07:20 PM
Is the beta driver suppose to automatically unload and get replaced with the 1.0v driver every X period of time? This is happening with my setup?

jrlewis
04-09-2009, 08:17 PM
That is a symptom of the user driver having the same make/model as the driver included with cqc. The manifest for the beta driver needs to have a different make/model. Usually it is easiest to just add a -Dev or -User to the Model in the manifest.

zaccari
04-10-2009, 06:05 PM
I would have sworn I put -Beta in the manifest. I'll have to look to be sure though.

Russ...

khill
04-26-2009, 10:01 AM
I would have sworn I put -Beta in the manifest. I'll have to look to be sure though.

Russ...

I added the -beta to the manifest and the driver now stays put. I did notice that if I update the time/date via the field broswer, both time/date are reflect correct values. I created a scheduled event that runs daily with the following:

Devices::FieldWrite
P1=tstats.T1SetTime
P2=True

However, the date value does not update via the event sever....

While the field name is TxSetTime I just assumed the date field was updated at the same (there is no TxSetDate field) time.

Any thoughts?

Kerry

zaccari
04-27-2009, 07:44 AM
Odd. I'll send Dean a PM. I wouldn't think that the local date wouldn't work IF the local time does.

Russ...

Dean Roddey
04-27-2009, 10:04 AM
The code you sent me would only set the time, since you only format out the time info, right?

zaccari
04-27-2009, 03:01 PM
No, there was 2 snippets, the first one being the date set.


Msg := "SN";
Msg.AppendCard4(Index + 1, Radices.Dec);
Msg.Append(" DATE=");
// MMDDYY
TimeInfo.SetSpecial( SpecialTimes.CurTime);
TimeInfo.SetDefFmt( "%(M,2,0)%(D,2,0)%(y,2,0)");
Msg.AppendFmt( TimeInfo);

Russ...

Dean Roddey
04-27-2009, 03:17 PM
Log out the actual command string and see if it's what you expect. Perhaps the format isn't actually what you want?

zaccari
04-27-2009, 07:44 PM
Log out the actual command string and see if it's what you expect. Perhaps the format isn't actually what you want?
I'll do it if you wish, BUT, it works from in interactive click and not from a scheduled event.

Russ...

Dean Roddey
04-27-2009, 11:34 PM
Just have the scheduled event log what it's actually writing to the field. That'll point us in one direction or the other. If it looks right, we have one set of possibilities. If it looks wrong, we have another.

zaccari
07-14-2009, 08:10 AM
I posted a 1.3 that is a -dev so anyone trying this driver should be using this. It'll avoid problems of driver overlay on restart.

Russ...

zaccari
07-14-2009, 09:04 AM
Well, I know what the problem is with the SetTime variable. It is only working one time. Once it sends the time, the field variable (wasn't obvious because the field was write-only) is set to True and subsequent changes are not processed (since it is not a change). So I tried to change the variable in the BoolFldChanged method but that doesn't work either. The only way I could get the thing to work as expected (not really change this field to True and leave it) was to use ValueRejected which generates an expected error. Is there a way to not save the value (or change it) in the BoolFldChanged method? What is the intented way to handle this type of event?

Russ...

Dean Roddey
07-14-2009, 10:14 AM
If you want the callback to be called always, no matter whether the new value is the same as the old value, the field should be marked as 'write always' when it's registered. That will tell CQC to always call the driver and not try to optimize. This is always done for fields that are used as triggers as not to really cause something to be written to the device.

zaccari
07-14-2009, 06:30 PM
Thanks Dean! I never would have figured that one out without knowing it was there to find :)

Russ...

zaccari
07-19-2009, 09:27 PM
I updated the .html file for this driver to include the changes since v1.2. Enjoy.

Russ...

zaccari
08-24-2009, 10:48 AM
Is anyone using the Aprilaire 8870 driver? I'd like to submit this to Dean but I need someone else to do testing.

Russ...

MavRic
08-24-2009, 02:42 PM
I plan to start using this as soon as i get some extra serial cables.

Having the 8870's talk to ELK and then ELK to CQC is not allowing full functionality of the 8870's to shine.

khill
08-24-2009, 05:33 PM
Is anyone using the Aprilaire 8870 driver? I'd like to submit this to Dean but I need someone else to do testing.

Russ...

I have been using v1.2 for a while now with no problems. I just loaded v1.5 tonight. I'll check back in a week or so - although the great weather we're having now does'nt require any AC.

Kerry

zaccari
10-21-2009, 09:49 AM
I have been using v1.2 for a while now with no problems. I just loaded v1.5 tonight. I'll check back in a week or so - although the great weather we're having now does'nt require any AC.

KerryAny luck? I'm working on 1.6 which will allow the messages on the screen to change. I'm tracking how much the heat and/or AC are on in a day and I'd like to have that on the displays. I'm probably going to put outside temp and maybe some weather info on there too. My content doesn't really matter though as the driver will support alternating of 4 messages. The primary reason I haven't gotten to this before is that there's no way to read what the display says so you're always writing without information about what's being overwritten.

Russ...

batwater
10-22-2009, 10:08 AM
I have been running the stock driver. When you say messages on the screen do you mean the text area on the thermostat that allows messages to be displayed? Very interested in this!

Thanks!
-Ben

zaccari
10-23-2009, 01:51 PM
Yes. My intention is to allow use of the display area of the 8870. There are 4 interleaved messages.

Russ...

khill
10-31-2009, 08:53 AM
Any luck? I'm working on 1.6 which will allow the messages on the screen to change. I'm tracking how much the heat and/or AC are on in a day and I'd like to have that on the displays. I'm probably going to put outside temp and maybe some weather info on there too. My content doesn't really matter though as the driver will support alternating of 4 messages. The primary reason I haven't gotten to this before is that there's no way to read what the display says so you're always writing without information about what's being overwritten.

Russ...

Its been working just fine! No problems.

I did come across something this morning. We had a power failure at 3AM and the 8870 reset to the default date value of 01/01/01. Since I have only scheduled the time/date set once a day (just after midnight) it won't get reset until the next midnight.

If I wanted the time/date to reset immediately after power on, I'm guessing I could use a triggered event of some kind, I'm just not sure which commands to use.


Any suggestions?

Kerry

zaccari
10-31-2009, 03:19 PM
I set up a variable in the variable driver for system startup and defaulted it to False. I also set up a variable for new day that defaults to True. Then I have a timed task that runs every minute that checks the startup variable and changes the new day variable to False. I also set the new day variable to false at midnight. Finally I have a trigger on the new day variable that sets the time on the 8870. This catches both a new day and startup. I put a date/time for both of these that updates in their respective events so I can display when each happens. It really is nice to know when my master server service started up.

Russ...