Aprilaire Thermostat 8800 any MODBUS experts?

I had downloaded and installed 0.5.2 but the device is still Unknown. Here are the logs

EDT: Actually, it became available but I needed to change the Operation for it to initiate. Some of the other entries are still Unavailable. Not sure if that’s related

2023-03-15 22:06:44.639 DEBUG (MainThread) [custom_components.aprilaire] Manually updated aprilaire data
2023-03-15 22:06:44.650 DEBUG (MainThread) [custom_components.aprilaire] Manually updated aprilaire data
2023-03-15 22:06:44.651 DEBUG (MainThread) [custom_components.aprilaire] Manually updated aprilaire data
2023-03-15 22:06:44.681 INFO (MainThread) [custom_components.aprilaire] Aprilaire connection made
2023-03-15 22:06:44.682 DEBUG (MainThread) [custom_components.aprilaire] Manually updated aprilaire data
2023-03-15 22:06:46.683 DEBUG (MainThread) [custom_components.aprilaire] Queuing data, sequence=1, action=Action.READ_REQUEST, functional_domain=FunctionalDomain.IDENTIFICATION, attribute=2
2023-03-15 22:06:46.683 DEBUG (MainThread) [custom_components.aprilaire] Queuing data, sequence=2, action=Action.READ_REQUEST, functional_domain=FunctionalDomain.CONTROL, attribute=7
2023-03-15 22:06:46.683 DEBUG (MainThread) [custom_components.aprilaire] Queuing data, sequence=3, action=Action.READ_REQUEST, functional_domain=FunctionalDomain.CONTROL, attribute=1
2023-03-15 22:06:46.683 DEBUG (MainThread) [custom_components.aprilaire] Queuing data, sequence=4, action=Action.READ_REQUEST, functional_domain=FunctionalDomain.SENSORS, attribute=2
2023-03-15 22:06:46.683 DEBUG (MainThread) [custom_components.aprilaire] Queuing data, sequence=5, action=Action.READ_REQUEST, functional_domain=FunctionalDomain.IDENTIFICATION, attribute=5
2023-03-15 22:06:46.683 DEBUG (MainThread) [custom_components.aprilaire] Queuing data, sequence=6, action=Action.WRITE, functional_domain=FunctionalDomain.STATUS, attribute=1
2023-03-15 22:06:46.683 DEBUG (MainThread) [custom_components.aprilaire] Queuing data, sequence=7, action=Action.WRITE, functional_domain=FunctionalDomain.STATUS, attribute=2
2023-03-15 22:06:46.687 INFO (MainThread) [custom_components.aprilaire] Sent data: 01 01 00 03 02 08 02 fb
2023-03-15 22:06:46.688 INFO (MainThread) [custom_components.aprilaire] Sent data: 01 02 00 03 02 02 07 19
2023-03-15 22:06:46.689 INFO (MainThread) [custom_components.aprilaire] Sent data: 01 03 00 03 02 02 01 e8
2023-03-15 22:06:46.689 INFO (MainThread) [custom_components.aprilaire] Sent data: 01 04 00 03 02 05 02 81
2023-03-15 22:06:46.689 INFO (MainThread) [custom_components.aprilaire] Sent data: 01 05 00 03 02 08 05 01
2023-03-15 22:06:46.691 INFO (MainThread) [custom_components.aprilaire] Sent data: 01 06 00 20 01 07 01 01 00 00 00 00 01 00 00 00 00 01 00 00 00 01 00 00 00 00 00 01 00 01 00 01 01 01 00 00 6f
2023-03-15 22:06:46.691 INFO (MainThread) [custom_components.aprilaire] Sent data: 01 07 00 04 01 07 02 01 3b
2023-03-15 22:06:46.697 INFO (MainThread) [custom_components.aprilaire] Aprilaire data received 01 03 00 02 06 03 96
2023-03-15 22:06:46.697 DEBUG (MainThread) [custom_components.aprilaire] Received data, action=Action.NACK, functional_domain=FunctionalDomain.NACK, attribute=0
2023-03-15 22:06:46.698 ERROR (MainThread) [custom_components.aprilaire] Received NACK for attribute 3
2023-03-15 22:06:46.704 INFO (MainThread) [custom_components.aprilaire] Aprilaire data received 01 05 00 02 06 03 1e 01 06 00 02 06 03 5a 01 07 00 02 06 03 89 01 01 00 11 03 08 02 b4 82 55 50 93 6d 01 49 02 01 02 0d 04 0e 51
2023-03-15 22:06:46.704 DEBUG (MainThread) [custom_components.aprilaire] Received data, action=Action.NACK, functional_domain=FunctionalDomain.NACK, attribute=0
2023-03-15 22:06:46.705 ERROR (MainThread) [custom_components.aprilaire] Received NACK for attribute 3
2023-03-15 22:06:46.707 DEBUG (MainThread) [custom_components.aprilaire] Received data, action=Action.NACK, functional_domain=FunctionalDomain.NACK, attribute=0
2023-03-15 22:06:46.708 ERROR (MainThread) [custom_components.aprilaire] Received NACK for attribute 3
2023-03-15 22:06:46.710 DEBUG (MainThread) [custom_components.aprilaire] Received data, action=Action.NACK, functional_domain=FunctionalDomain.NACK, attribute=0
2023-03-15 22:06:46.710 ERROR (MainThread) [custom_components.aprilaire] Received NACK for attribute 3
2023-03-15 22:06:46.712 DEBUG (MainThread) [custom_components.aprilaire] Received data, action=Action.READ_RESPONSE, functional_domain=FunctionalDomain.IDENTIFICATION, attribute=2
2023-03-15 22:06:46.714 DEBUG (MainThread) [custom_components.aprilaire] Manually updated aprilaire data
2023-03-15 22:06:46.715 INFO (MainThread) [custom_components.aprilaire] Aprilaire data received 01 02 00 08 03 02 07 04 01 00 00 00 ef
2023-03-15 22:06:46.715 DEBUG (MainThread) [custom_components.aprilaire] Received data, action=Action.READ_RESPONSE, functional_domain=FunctionalDomain.CONTROL, attribute=7
2023-03-15 22:06:46.716 DEBUG (MainThread) [custom_components.aprilaire] Manually updated aprilaire data

You’re getting so many NACKs, I would recommend restarting the thermostat if you didn’t already.

I reset it. The actions are working as I need it, I really appreciate your help!

Great! Glad I could help! Thank you for providing the diagnostic information.

Are these two full thermostats or a thermostat and support module combo like seen here?

My two story house has an 8920W on the main floor (that @chamberlain2007 's integration works great with, thanks loads!!) and an 8476W on the second floor. Anyone have any thoughts on how to get the 8476W hooked up to Home Assistant?

As far as I can tell by the docs, both the 8920W and 8476W should be supported. They would both need to be connected to the network, and you would then just add the integration once per thermostat specifying each one’s IP. So the integration would be added twice and there would be two separate HA devices.

I tried to adding the integration again, specifying the IP of the 8476W but I get “An unknown error occurred”. I tried both port 7000 and 8000. I know on the 8920W I had to go into the contractor menu and enable automation mode but I don’t know if the same needs to be done on the 8476W (or if that’s even an option). Enabling debug logging gives “[Errno 111] Connect call failed (‘192.168.0.22’, 7000)” and “[Errno 111] Connect call failed (‘192.168.0.22’, 8000)”. Which I believe supports the thought that automation mode isn’t enabled.

Ya, definitely looks like it’s not in Home Automation mode. I tried to look up the installers guide and didn’t see anything in there about it, and I don’t see any other info.

My recommendation would be to email Aprilaire and just ask how to turn on Home Automation mode on your model.

I emailed Aprilaire as you suggested. Turns out I was wrong about the model numbers of both my thermostats. Guess that’ll happen when you’re just guessing based on the pictures on the manufacturer’s website since the model number isn’t anywhere on the thermostat or in the app. Once I had the right model numbers, a quick search for the installation guide provided the instructions to enable automation mode for the second thermostat. Everything is working great now. Thanks again for all your work on this, @chamberlain2007 !!

Great news! Glad it’s working!

For future troubleshooting/documentation would you mind sharing what your model numbers are and the steps you had to do?

I am running the 8840 on the first floor and the 8810 on the second floor. Instructions for enabling Automation Mode on the 8810 are in the Installation Guide (https://jacksonsystems.com/wp-content/uploads/2022/03/Aprilaire_8810_Installation_Guide.pdf). The short version is press Mode until system is Off, hold Mode and Up for 3 seconds until screen shows 00 in center and 00 in the top right. The big 00 is the setting you’re on, the smaller is the value of that setting. Big 00 is Automation Mode, with little 00 being Aprilaire Cloud and little 01 the Automation System. Automation System is necessary to get the thermostat to show up in Home Assistant. The 8810 also uses port 8000.

Hi, new to the thread.

Turns out Aprilaire makes a non home automation thermostat named 8920W which doesn’t have an option to turn on Automation mode in the Contractor settings.

Both 8840 & 8920W look similar. That’s what the Aprilaire support person told me.
Did anyone really configure the 8920W model or because both of them looks similar it seems to be the case ?

1 Like

I’ve spent the last hour and a half trying to follow this thread and troubleshoot before I finally get to your post and see that I’ve also got the 8920W (I think, anyway) and that’s why I can’t find the Automation setting…

@scotscotmcc
I’m trying to mitigate that problem of not having home automation in contractor settings by making sure I connect Alexa & Google assistant to Home Assistant to change temperature or modes for Aprilaire thermostat and for reading values of thermostat. I have been notified that we can’t parse the response of any Alexa | Google assistant if asked with a question of “Hey Google, what is the thermostat temperature?”.

So in order to read whole house temperatures, I’m gonna either try to utilize my 5 Alexa Echos with inbuilt temperature sensor or buy Temp, humidity Zigbee sensor for easy connectivity to the Home assistant to display that value on a Generic Thermostat widget.

That’s my plan for this weekend. :stuck_out_tongue:

Partly was able to create a generic thermostat for Aprilaire 8940 by connecting Google Assistant SDK.

So now have a slight problem of how to create custom thermostat UI with buttons to call specific scripts which internally communicates with Google Assistant API.
New question posted here

Thanks again for all the great work and amazing progress!
I have 7 of the 8820 thermostats and 6 of them seem very solid, but one looses connection to HA and Wifi every so often.

I am getting the below error. All 7 thermostats are centrally in the located in the garage with wired remote thermostats. There is an access point in the garage also. At times I can ping the thermostat but it shows disconnected in HA. Most of the time unplugging the re-plugging the thermostat or messing with the wifi settings will resolve it.

This error originated from a custom integration.
Logger: custom_components.aprilaire
Source: runner.py:179
Integration: Aprilaire (documentation, issues)
First occurred: April 13, 2023 at 1:59:20 PM (120 occurrences)
Last logged: 9:02:30 AM

Received NACK for attribute 7
Received NACK for attribute 3

Thanks

Glad you’re having success (partially).

The Wi-Fi connection on the thermostats is extremely flaky in general, so I wouldn’t rule out something related to that. If you’re using a router than can do this, I would make sure when that happens that the Wi-Fi settings (2g vs 5g, which AP, etc) is as expected. Could be that you just need to adjust some settings.

If that’s not the case, it’s tricky to get diagnostics. Those NACKs are good but in the protocol it’s not possible to correlate back to the failed request. If it’s showing unavailable that most likely means that it didn’t get a response on the identification call.

if you turn on debug logging for the component (I believe there is a description of that in this thread), and send the previous couple of minutes before an issue, I can have a closer look.

FYI folks, the latest Beta release on HACS has support for humidifier/dehumidifier, air cleaning and fresh air ventilation. If anyone has these devices and would like to install the Beta and provide feedback, that would be much appreciated!

3 Likes

Yes, I think you are correct,. it is probably due to a flaky wifi connection. After playing with it for a while it connected again and the 7 thermostats have been mostly reliable. Generally, I only have connection problems with one or two thermostats after a restart of HA. The rest of the time they are fine and don’t randomly disconnect.