Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ACCVWF1 reports wrong state on local API #46

Closed
murphysprings opened this issue Feb 5, 2023 · 4 comments
Closed

ACCVWF1 reports wrong state on local API #46

murphysprings opened this issue Feb 5, 2023 · 4 comments

Comments

@murphysprings
Copy link

I've got a ACCVWF1 connected to a Voyager 3800. Yes - it's not a ColorTouch, but this Python library works great! Except for one bug in the Venstar ACCVWF1 firmware:

The ACCVWF1 wifi module reports the wrong 'state' - it reports state 2 when it is heating, and state 1 when it is cooling. The thermostat screen indicates heating, the system is providing warm air. But the API response definitions in the documentation are the other way around. (Meanwhile - my ColorTouch reports correctly on the system it's using). Even the Skyport Portal shows heating, while the local API reports state 2 (cooling).

I've asked VenStar if there is a firmware update available; no response. Meanwhile, figured I would report it as a possible issue to be coded around here (because I wouldn't be surprised if they coded around it in the Skyport portal code!)

The response to http:/// is:

{
    "api_ver": 7,
    "type": "residential",
    "model": "VYG-3800",
    "firmware": "2.22.19"
}

The response to the /INFO when the system is heating is this, which shows State 2, but the value for state when heating should be 1:

{
    "name": "UPSTAIRS",
    "mode": 3,
    "state": 2,
    "fan": 0,
    "fanstate": 1,
    "tempunits": 0,
    "schedule": 1,
    "schedulepart": 0,
    "away": 0,
    "spacetemp": 66,
    "heattemp": 68,
    "cooltemp": 73,
    "cooltempmin": 70,
    "cooltempmax": 99,
    "heattempmin": 36,
    "heattempmax": 74,
    "setpointdelta": 2,
    "activestage": 2,
    "hum_active": 1,
    "hum": 0,
    "hum_setpoint": 0,
    "dehum_setpoint": 99,
    "availablemodes": 0
}
@hpeyerl
Copy link
Owner

hpeyerl commented Feb 12, 2023

Can you try playing with this and let me know if it works or fix it if it doesn't? I haven't tested it or even tried running it.

https://github.com/hpeyerl/venstar_colortouch/tree/46_ACCVWF1_vyg-3800_wrong_state

@murphysprings
Copy link
Author

Thanks @hpeyerl
I gave that a try, and it's still reporting state as '2' for COOLING. I thought your workaround fix for the issue would work, but it isn't, and I'm scratching my head.

For testing, I added print("Current state is {s}".format(s=ct.get_info("state"))) to the main.py. The output I got (edited for brevity) is:

python venstarcolortouch 192.168.33.11
Testing with IP: 192.168.33.11
logging in...
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): 192.168.33.11:80
DEBUG:urllib3.connectionpool:http://192.168.33.11:80 "GET / HTTP/1.1" 200 74
DEBUG:root:api_ver: 7
Login successful. API: 7 Type: residential
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): 192.168.33.11:80
DEBUG:urllib3.connectionpool:http://192.168.33.11:80 "GET /query/info HTTP/1.1" 200 336
WARNING:root:Unknown thermostat model VYG-3800, inferring API tempunits of Fahrenheit
Was able to get info:{'name': 'UPSTAIRS', 'mode': 3, 'state': 2, 'fan': 0, 'fanstate': 1, 'tempunits': 0, 'schedule': 1, 'schedulepart': 0, 'away': 0, 'spacetemp': 69, 'heattemp': 70, 'cooltemp': 79, 'cooltempmin': 70, 'cooltempmax': 99, 'heattempmin': 36, 'heattempmax': 74, 'setpointdelta': 2, 'activestage': 2, 'hum_active': 1, 'hum': 0, 'hum_setpoint': 0, 'dehum_setpoint': 99, 'availablemodes': 0}
Name is UPSTAIRS
Fan is 0
Heat setpoint is 70
Cool setpoint is 79
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): 192.168.33.11:80
DEBUG:urllib3.connectionpool:http://192.168.33.11:80 "GET /query/runtimes HTTP/1.1" 200 129
Runtimes: [{'ts': 1676201163, 'cool1': 0, 'cool2': 0, 'heat1': 57, 'heat2': 38, 'aux1': 0, 'aux2': 0, 'fc': 0, 'dualfuel': 0, 'uv': 0, 'hum': 0}]
API Version is 7
Thermostat Type is residential
Current state is 2

So it's reporting heating runtimes (only heating today) under heating, which is great. But the state is still wrong.

To fully address it in code would also require updating the set_mode routine too, and that's really getting into a lot of workaround for what is a bug in the Venstar Wi-Fi module firmware.

I reported it to Venstar tech support. They have benched it on their side and supposedly it works fine. They confirmed the firmware version (2.22) is the latest for the wi-fi module, and confirmed we should be seeing 'state': 1 A reset of my thermostat and wifi module to defaults didn't resolve it.

I appreciate you taking a look at this. Since I've got Venstar support looking at it, let's see if we can get them to fix their bug (or my particular issue since they can't replicate it) instead of making a bunch of workaround changes to accommodate this.

I will update this issue once I get farther with their support.

@murphysprings
Copy link
Author

Venstar support said they have replicated the issue, and are working on a firmware fix. The firmware fix is pushed automatically to the Wi-Fi module if the system is connected to the Skyport portal.

I'll close this as an open issue, and will comment again when I hear that the firmware gets pushed.

@murphysprings
Copy link
Author

Checked with new firmware 2.23.19 on the Voyager 3800, and it still reports the wrong state. I've emailed Venstar tech support to let them know they still have an issue with their thermostat.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants