Z-Wave Multi Channel (PE653)

I could probably be more helpful if I had the device to test with and I had any programming experience. I’m mostly a “copy/paste/test/beg” troubleshooter.

#welcometotheclub

Here is the thing: I’ve done nothing with the command quicksetspa. If I hit the button that says quicksetspa (which should control the temperature) the following log appears:

[dev:257](http://192.168.7.201/logs#dev257)2018-03-22 20:40:57.430:debugsetSpaSetpointInternal degrees=null

This makes sense because I did not input a value because (going back a few threads) there was no method to put in a value unless I amend the command to input a value.

If I do that… any number I input results in a differing error message.

Going back to the ST boards… maybe I can get someone (ie. Keith) to post logs of what happens when he moves the temp slider.

Oddly enough if I go into RM and create a custom command to quicksetpool = 15 I get the following log, but nothing happens… (I also tried it with 90)

[dev:257](http://192.168.7.201/logs#dev257)2018-03-22 21:00:14.432:debug<<<<< dly:1000/1000 <<<<< Event: [:]

[dev:257](http://192.168.7.201/logs#dev257)2018-03-22 21:00:14.430:debug>>>>> ThermostatSetpointReport(precision:null, scale:null, scaledValue:null, setpointType:null, size:null, value:null) - description:zw device: 38, command: 4303, payload: 01 09 27

[dev:257](http://192.168.7.201/logs#dev257)2018-03-22 21:00:11.281:debug<<<<< dly:1000/1000 <<<<< Event: [value:72, unit:F, name:temperature]

[dev:257](http://192.168.7.201/logs#dev257)2018-03-22 21:00:11.279:debug>>>>> SensorMultilevelReport(precision:0, scale:1, sensorType:1, sensorValue:[72], size:1) - description:zw device: 38, command: 3105, payload: 01 09 48

[dev:257](http://192.168.7.201/logs#dev257)2018-03-22 21:00:11.251:debug<<<<< dly:3000/1000 <<<<< Dev cmd: ThermostatSetpointSet(precision:1, scale:0, scaledValue:15, setpointType:1, size:null, value:null) --> 4301, delay 3000 <<<<< Dev cmd: ThermostatSetpointGet(setpointType:1) --> 430201

[dev:257](http://192.168.7.201/logs#dev257)2018-03-22 21:00:11.244:debugsetPoolSetpointInternal degrees=15.0

Well now we're on to something, seems we aren't returning any data in that zwave command.
I shall have a look at that.

3 Likes

I can always count on ST to incentivize me to jump ship. While I was twiddling my thumbs, ST lost contact with my PE653, so I guess it’s time to do it. My biggest concern is losing the PE953 remote’s control of the system. @justin.bennett - have you made any progress with your remote (understand you’re still fighting the basic connection)?

So I have gotten the PE653 completely paired with the exception of the ability to change the temperature which @mike.maxwell seems to be looking at.

From my recollection in ST, Keith had tremendous difficult with this as well the the method to change temperature took him several tries.

However, the device otherwise functions as expected. I have created simple rules to turn on/off my pump at prescribed times and I turn on the pool light an hour before sunset with hubitat with on problems.

As to your question about the PE953 remote, I have not yet tried this as (alas) I did not take notes on how I did this with ST. That being said, in ST my main focus was: (i) automating the pool pump (and I had pretty sick automation) and; (ii) creating an automation so a user could ask Alexa/Siri to “turn on the pool heater” or “turn on the spa” as these automations were very cumbersome (even with the remote).

Notwithstanding others in the hubitat community that may have this device (as there might be more than 2), the device works and assuming the temperature issue gets sorted out the device will be just as powerful as ST but on the LAN so more reliable.

PS - I speak to reliability because NOTHING could possibly be more frustrating than to “turn on a pool heater” only to find out several hours later the ST cloud did not execute the automation and cold pool for the kids.

I had copious notes. I rarely print anything, but I remember being so confused that I printed out pages of internet advice. I vaguely recall that, back in the day, there were a lot of Vera users figuring this out. The steps to include the remote were especially cumbersome. Thanks for all your initiative.

Anything? Love to turn the pool heater on for the weekend!

It didn’t make the cutoff for the current release, will be in the next one.

1 Like

An entire firmware update was dedicated to me. I’m kidding of course but that’s awesome!

3 Likes

After the firmware update I ran a RM Command to quicksetpool(90) and this is the log. The thermostat on the heater did not change.

I don’t know whether this is firmware related or code related. Any help would be appreciated.

looks to be code related, setPoolSetpointinternal is a method in the driver, it wants a number and appears to be getting a string

I think the issue appears at line 1501 which I cannot figure (of course).

If anyone has any thoughts… I’m stuck but sooooo close.

SO i cleared one issue (I think). The driver was casting items as Double whereas HE only understood the cast as Integer.

Now I am stuck at an error at line 1501... here is the message and the code.

1 Like

Good Morning,

Can someone give @keithriley the ability to reply on this board. He’s not yet an owner but helping with the port of this driver.

This is the paste from his response on the ST forum and I would like someone at support to take a look as it may be a more technical issue than just the code within the driver.

This is a very strange error. I will provide some explanation so that hopefully it will allow the support folks a trail to follow.

The “delayBetweenLog” method is just a souped up version of delayBetween. The idea is that various DTH commands often need to send multiple commands and multiple events. As always this is accomplished by returning a List of objects as the return parameter from the command. The PE653 Z-Wave device is very time sensitive so you have to be careful not to overrun it. Consequently you need delay statements between the commands. My version still provides this basic functionality but also provides a common logging framework so that uniform log messages are always provided. To achieve this, the delayBetweenLog method must parse the List and take different log specific action depending on the type of each item in the List.

In the particular case that Justin is executing a command method to set the heater thermostat and follow this with a query to get the current setting (quickSetPool --> setPoolSetpointInternal). Within the Internal method a fresh List is constructed and two ZWave commands are appended to the List:
cmds << zwave.thermostatSetpointV1.thermostatSetpointSet(setpointType: 1, scale: deviceScale, precision: p, scaledValue: convertedDegrees)
cmds << zwave.thermostatSetpointV1.thermostatSetpointGet(setpointType: 1)

The List is then returned to the caller:
def List quickSetPool(degrees) {delayBetweenLog(setPoolSetpointInternal(degrees), 3000)}
but when delayBetweenLog is called with this list, as it iterates through the List, the first item off the List cannot even be printed. The log-trace at line 1470 is simply trying to do a print on the item, yet this is causing the strange error: “Cannot invoke method and() on a null object on line 1470”.

This implies that one (the first) of the commands did not generate the required ZWave command but returned null instead.

I would take a very close look at: zwave.thermostatSetpointV1.thermostatSetpointSet()

Justin, I could add code to protect against a null item in the List so that no error is generated, but that won’t help in the least because you still are not going to get the thermostat set since the creation of this command seems to be the issue.

Please? @bobbyD

1 Like

currently this command requires the size parameter, which is missing from the above.
size is the number of bytes required to render scaledValue, I'll see what I can do about calculating that if it's not included.

YOU WOULD BE MY HERO! YOU CAN COME AND USE THE POOL ANYTIME IF YOU CAN HELP ME OUT! THANK YOU AGAIN TO PAYING ATTENTION TO MY RANTING.

Please let me know to what extent you would like to test.

1 Like

Any progress? Summer is a comin!