Jump to content

Read Elk Thermostat Data


Morris Hansen

Recommended Posts

I am trying to troubleshoot some issues I am having with the ISY controlling my Aprilaire thermostat that is connected to my Elk. I would like to be able to read what the thermostat is currently set to. I have read the Elk protocol manual and it appears there is a command to read all the thermostat settings.

 

I see in the ISY, you can do a query of a thermostat but not clear what happens to the data. I looked at the log and it doesn't appear that anything comes back. Something is sent but it doesn't seem like it is correct. It basically shows the time in the log.

 

I am running the latest code on the Elk and the ISY. I have 3 thermostats connected to my Elk.

 

I have had this issue for a long time and just now trying to troubleshoot.

 

Here are the commands in the Elk manual:

 

 

Request Thermostat Data (tr)

08 – Length as ASCII hex

tr – Get thermostat data

NN – Thermostat 01 to 16

00 – future use

CC – Checksum

Example: 08tr0100F1 Thermostat 01, request data

 

Reply Thermostat Data (TR)

13 – Length as ASCII hex

TR – Reply with Thermostat Data

NN – Thermostat Number 01 to 16, 0 = invalid

M - ThermostatMode 0=Off,1=Heat,2=Cool,3=Auto, 4=Emergency Heat

H - ThermostatHold Hold current temperature. 0=False, 1=True

F - ThermostatFan 0=Fan Auto, 1=Fan turned on

TT – CurrentTemperature Current temperature, deg.F 0=invalid, 70=70

HH – HeatSetPoint Heat setpoint if in heat/auto mode, decimal

SS – CoolSetPoint Cool setpoint if in Cool/auto mode, decimal

UU – CurrentHumidity Current humidity, 01 to 99%, 0 = invalid

00 – future use

CC – Checksum

Example: 13TR012007

Link to comment
Share on other sites

Hi mohansen,

 

You can see all the thermostats configured by Elk in the table shown under the Elk / Thermostats tab in the ISY Admin Console. We query the thermostats and store the mode, hold, fan, temperature, cool/heat setpoints and humidity. You can also change the settings of the thermostats from that page.

Link to comment
Share on other sites

Thanks, I am aware of the various UI screens. I have various programs that change the thermostat settings during the day based on time, whether I am working from home, status of security system, day of week, etc.

 

For example, I turn down the thermostats at 9:45pm each night. On many occasions, I get up in the morning and noticed the thermostats did not get turned down properly.

 

I recently added some email notifications so I know when the programs are triggered and what triggered them. I have the emails configured to send me what I changed the temperature to. I can tell that my programs are executing at the correct time though when I walk up and look at the thermostats or query them remotely, they are not always changed.

 

So the next step in troubleshooting, I thought if I could wait a period of time after making any changes, query each of the thermostats and email me the current settings I could try and narrow down where the problem is. When I create a program to do a thermostat query, the log doesn't show anything other than the time. It would appear to me that the query is broken.

 

So my original post was how can I programmatically query the thermostat and do something (change a variable) with the response data. If I manually request the data (via telnet) from the Elk, I am able to get the data back. I figured the ISY thermostat query would parse out this data. Here is what I get from my Elk.

 

13TR011007169780000FE

13TR021006965790000F9

13TR03100605981000005

 

It shows 3 different thermostats, 01 set to 69, 02 set to 65 and 03 set to 59, all set to Heat.

 

Thanks

Link to comment
Share on other sites

So the next step in troubleshooting, I thought if I could wait a period of time after making any changes, query each of the thermostats and email me the current settings I could try and narrow down where the problem is. When I create a program to do a thermostat query, the log doesn't show anything other than the time. It would appear to me that the query is broken.

 

So my original post was how can I programmatically query the thermostat and do something (change a variable) with the response data. If I manually request the data (via telnet) from the Elk, I am able to get the data back. I figured the ISY thermostat query would parse out this data. Here is what I get from my Elk.

 

13TR011007169780000FE

13TR021006965790000F9

13TR03100605981000005

 

It shows 3 different thermostats, 01 set to 69, 02 set to 65 and 03 set to 59, all set to Heat.

 

Thanks

 

I guess I'm not quite sure what you are asking for, but here's a little clarification ...

 

ISY uses a 'tr' request to query an Elk thermostat, it then parses the returning 'TR' record and updates its internal values based on that record (for use by programs, e-mail etc.). You can see these values by using the ${elk.tstat.1.CLISPH} etc. variables in an e-mail. (http://wiki.universal-devices.com/index ... _Variables)

 

There is no way to programmatically do this somehow and have it update the ISY other than to use the existing thermostat query command in either programs, REST or SOAP. (e.g. /rest/elk/tstat/1/query)

Link to comment
Share on other sites

That helps alot. I did not know about all the elk variables plus I was not aware I could use a variable that was not listed in the email customization variable list. This works now to be able to send an email with the current thermostat settings.

 

In my HVAC programs, I set a variable per thermostat each time I make a temperature change. It would be helpful if I could add a program step where I compare what I sent to the Elk to what the Elk currently is set to. I know I can compare variables in a program but do not see where I can use the elk email customization variables in a program.

 

Am I missing something that allows me to do the above?

 

Appreciate your help.

Link to comment
Share on other sites

Query just does the actual query without returning results (in case you have a lot of thermstats and want to query them all without it returning a large payload).

 

Use rest/elk/tstat/1/get/status to return the current values for the thermostat 1. You can return the values for all the thermostats by using '0' for the thermostat id.

Link to comment
Share on other sites

I know I can compare variables in a program but do not see where I can use the elk email customization variables in a program.

Unfortunately email variables and program variables are totally separate types and cannot be compared/assigned to one another. Currently, there is no way to use the email variables directly in programs.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...