-
-
Notifications
You must be signed in to change notification settings - Fork 628
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
Intermatic PE653 compatibility issues, firmware dependent #4588
Comments
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as resolved.
This comment was marked as resolved.
Relevant part for thermostat discovery issue (for firmware v3.4 in this case). Slightly redacted (removed transmit stats).
|
Tentative observation about firmware v3.4 switch behavior. The PE953 remote (node 43) sends Multi Instance Cmd Encap (0x60 0x06) with COMMAND_CLASS_SWITCH_BINARY and SWITCH_BINARY_SET to turn switches on and off, successfully:
Conversely, zwave-js (node 1) sends Multi Channel Cmd Encap (0x60 0x0D) with COMMAND_CLASS_SWITCH_BINARY and SWITCH_BINARY_SET to turn switches on and off, unsuccessfully:
|
This is most likely because OZW didn't query thermostats for their supported modes, but rather relied on information in their config files. Z-Wave JS mostly relies on what the devices report. The problem here seems to be a really poor implementation of the device firmware. Problem 1: Problem 2: |
Ok, I've crafted a configuration file that supports firmware v3.4 with conditional logic by forcing the use of the MultiChannelCC v1 and disabling certain broken command classes that confuse discovery. The lifeline association on endpoint 0 also seems to work now so no more polling. I'm uncertain how to resolve the thermostat issue. I think we'll need a new compat flag for that. |
Yeah. I prefer it to be very generic though to be able to override all kinds of incorrectly reported capabilities. Can you put up a PR with the first part of the fix? |
) Some devices report their capabilities incorrectly in ways that break the normal interview process, such as by advertising an incorrectly formatted bitmap of thermostat setpoint types. This change adds a new compat flag "commandClasses.interview" that lets a device configuration file skip the interview process for a given command class and endpoint and use the provided values instead. It should be usable with any application command class. NOTE: This change is intended as an proof of concept for further discussion.
The setpoint scale may have been intentionally configured by compatibility flags at the time of the interview and there is no reason to update the existing value once the interview has completed unless it's missing somehow.
I am curious whether anybody made any headway on further integrating the Intermatic PE653 to display the temperature as well as operate a variable speed pump. |
I haven’t spent any more time on it and have been living with the broken thermostat control. Working around the firmware off-by-one encoding bug would be pretty easy with a compatibility flag but I don’t believe such a fix would be accepted by this project. I considered contributing a more general compatibility feature but it looked like it would take a lot of refactoring to implement. I have dumped the firmware of the PE653 and reverse engineered the firmware updater protocol. So another option would be to patch the bug in the firmware itself (probably only requires changing a couple of bytes). I wasn’t able to determine the correct firmware checksum encoding after a few hours though so I shelved that idea too. I don’t have a variable speed pump to experiment with so I’m not sure what’s involved with that. |
Hmmm.... that seems pretty hopeless to me from a compatibility standpoint. |
I wouldn’t say it’s hopeless. We know exactly what the problem is and we have several viable solutions. It’s just a matter of investing some effort to implement one of them to completion. |
I appreciate that and I would prefer to get the equipment running on HA with some simple automations (as opposed to buying new pool automation hardware). I saw on another github thread about executing HA service calls that caused entities to be exposed. The challenge is I would not know the "device_id" unless it as simple as '7' which is what is stated in the HA Device Info tab. |
Another compatibility issue for this device... When a variable speed pump is connected, it can be controlled using endpoints 0x10 through 0x13. Each endpoint represents one of the VSP speeds, and they accept Binary Switch commands with only one switch ever on at a time. Another endpoint (0x27) is used when the P5043ME expansion module is connected, taking Binary Switch commands to toggle Pool/Spa mode. I don't have a P5043ME so can't confirm, but this is what the history of drivers for the PE653 shows. The device doesn't advertise these endpoints at all. I'd like to be able to force discovery of these endpoints through the config file, but the only way I've gotten them to work is by manually adding them to the .jsonl files. I'm running fw3.4 on my PE653, but my understanding is that the VSP endpoints function the same for the other firmware versions. The P5043ME expansion module requires fw3.4 to function, so endpoint 0x27 wouldn't apply to earlier versions. |
@philh30 I don't remember right now if simply adding the CCs via compat flags to individual endpoints works for |
@AlCalzone Below are the compat flags I've tried, mostly all at once though there were a few intermediate steps before I had all of these in my file. I found #5540 that seemed similar with a missing endpoint and that led me down the path of editing the .jsonl files. I'm happy to experiment if you'd like me to try anything.
|
Hm, ok that would be what I suggested. Guess that needs more work from my side then. |
@philh30, I've been picking this up recently and wanted to say thank you for providing that snippet, since it got me started. Ultimately I just got things "working" on firmware 3.4 just now using only the following modification to the original device file. It goes after the commandClasses in the compat section for 3.4:
It creates 19 binary switches. Switches 1-5 still work for the circuits and 16-19 are controlling the multi-speed pump properly. I'll have to figure out if 6-15 are actually switches and, if so, what they do. And I have to figure out how to label the switches for a Multi Channel V1 interview. Using "endpoints" with "label" for each doesn't seem to work for me, like your snippet has. Regardless, I'll probably end up with a pull request for this when done. Just wanted to show some progress on an old issue. Also, I do have a P5043ME, so will try out 0x27 once I figure out if I can not have it create 39 sequential switches to do it. |
@ecammit Great that that's possible now! I admittedly haven't looked back at this since I got mine running by editing the JSON files, along with a complicated web of automations. To my knowledge, endpoints 6-15 aren't used. Maybe Intermatic reserved them for something else - supposedly the PE653 could be hooked up to a chlorinator for example - but I've never seen anyone find a use for them. Have you tried the |
Is your problem within Home Assistant (Core or Z-Wave JS Integration)?
NO, my problem is NOT within Home Assistant or the ZWave JS integration
Is your problem within ZWaveJS2MQTT?
NO, my problem is NOT within ZWaveJS2MQTT
Checklist
I have checked the troubleshooting section and my problem is not described there.
I have read the changelog and my problem was not mentioned there.
Describe the bug
The Intermatic PE653 doesn't seem to work correctly with zwave-js. The nature of the problems depends on the firmware running on the device.
Firmware v3.3:
Firmware v3.4:
I recently upgraded the firmware of my device to v3.4 since that's what's shipped from the factory these days and what I presume most other users have, with the hope of resolving the thermostat compatibility issue. I didn't want to submit compatibility fixes for the thermostat that might break behavior for users of v3.4. That said, v3.4 seems quite broken so I may revert to v3.3 after all.
(I'd be keen to know if anyone is actually using v3.4 successfully with zwave-js. FWIW, I originally had this device fully working with v3.3 and OpenZwave, including the thermostat.)
I'm going to keep investigating to determine a course of action to improve compatibility.
See also: discussion
Device information
Manufacturer: Intermatic
Model name: PE653
Node ID in your network: 42
How are you using
node-zwave-js
?zwavejs2mqtt
Docker image (latest)zwavejs2mqtt
Docker image (dev)zwavejs2mqtt
Docker manually built (please specify branches)ioBroker.zwave2
adapter (please specify version)HomeAssistant zwave_js
integration (please specify version)pkg
node-red-contrib-zwave-js
(please specify version, double click node to find out)Which branches or versions?
zwavejs2mqtt: 6.8.1
zwave-js: 9.0.7
home id: 4146670975
home hex: 0xf7292d7f
Did you change anything?
no
If yes, what did you change?
No response
Did this work before?
No, it never worked anywhere
If yes, where did it work?
No response
Attach Driver Logfile
zwavejs-pe653-discovery-with-firmware-v3.4.log
The text was updated successfully, but these errors were encountered: