Z-Wave Multi Channel (PE653)


Sorry, I don't have a VSP so I'm not seeing this issue.


Howdy @ethelredkent. It may help. I have also observed inconsistencies with creating the children. The link below has a 'recreate children' button that can force the issue usefully.

I've created a new driver at Release Hubitat proprietary event bug handling · HubitatCommunity/hubitat-zwavemultichannel-pe653 · GitHub

It fixes the "java.lang.NumberFormatException: For input string: ",I"" problem, thanks to @keithriley

I've been considering rewriting it to have one. There are a lot of app-like features in the driver.
I've also been experimenting with making the thermostat behavior a child, which would allow yet more automation with standard off-the-rack automation tools rather than the custom 'modes' and timers built in.

@jpoeppelman1 I am heavily disappointed with this Intermatic device, and wish I had just built my own relay-based system. Intermatic is not enthusiastic to support it; it relies on proprietary commands; this driver is very complex as a result. That said, it does work.

@JMack89427 you may want to check out 3.1.1.
NB: This is distinct from @keithriley 's version. Keith did the heavy lifting of getting all the hardware and proprietary stuff sorted. I've taken his driver and begun experimenting with it. My version logs more heavily, for one thing.

My next project will probably be trying to break out the thermostats into their own objects, so we can get rid of the 'set temperature' and 'mode' stuff, which makes a tangle. Those child objects were completely failing to work (unlike switches, which do), when I last tried.

@JMack89427 If you are still trying to get a rule set up, I suggest you check out 'hubipoll' rather than rule machine for this purpose. Hitting poll with that is enough to get numbers.


I had a method missing; 3.1.2 is here:


@JDogg016, I've created a version that I think'll send something to the VSP. I don't have one, so I wasn't sure I was supporting it in the refactor. I suspect there may be some more steps, but you can try this version on a branch if you like.

I'm running it myself, so if it works for both of us, I'll promote it to 3.1.4 and we can keep going on the VSP. Be sure to DM me - in fact, DM me for my real email if you like - because I'm traveling.

Note: This is NOT the head version to use for most people. Only use this version if you have the VSP and are having issues. Otherwise, stick with 3.1.2, just above.


Running 3.1.4 and turning on switch 10 (ep 10) returns the following log:

[dev:257]( 12:44:04.704 pm [error]( Cannot cast object '38-ep10' with class 'java.lang.String' to class 'java.lang.Short' on line 1675 (childOn)

[dev:257]( 12:44:04.622 pm [debug]( setChanState(38-ep10, 255)

[dev:257]( 12:44:04.620 pm [debug]( called in parent: dni=38-ep10


Hi Joshua,
Thanks for this, much appreciated. I installed the new driver but it did not help. At one point I was getting a pool tmp and could turn OFF but not ON the master switch. Nothing works now and I am getting these errors:

dev:2252019-06-15 07:53:31.541 errorjava.lang.NullPointerException: Cannot invoke method split() on null object on line 1890 (childOff)
dev:2252019-06-15 07:51:33.812 errorjava.lang.NullPointerException: Cannot invoke method split() on null object on line 1890 (childOn)
dev:2252019-06-15 07:35:10.715 errorjava.lang.NumberFormatException: For input string: "null" on line 1774 (quickSetPool)
dev:2252019-06-15 07:35:00.665 errorjava.lang.NullPointerException: Cannot invoke method format() on null object on line 1942 (setClock)
dev:2252019-06-15 07:32:47.273 errorjava.lang.NullPointerException: Cannot invoke method split() on null object on line 1890 (childOn)
dev:2252019-06-15 07:31:09.619 errorjava.lang.NullPointerException: Cannot invoke method toJson() on null object on line 888 (parse)
dev:2252019-06-15 07:31:08.415 errorjava.lang.NullPointerException: Cannot invoke method toJson() on null object on line 888 (parse)
dev:2252019-06-15 07:02:25.198 errorjava.lang.NullPointerException: Cannot invoke method format() on null object on line 1942 (setClock)

State Variables

  • VersionInfo : Versions: Firmware v3.1 DTH: Ver 3.1.2 zWaveLibraryType: 6 zWaveProtocol: v2.78
  • ManufacturerInfo : ManufacturerInfo: manufacturerId: 5, manufacturerName: Intermatic, productId: 1619, productTypeId: 20549
  • precision : 1
  • schedules : []
  • lightCircuitsList : []
  • scale : 1
  • manProp1 : [5, 64, 2, 1, -124, 0, 0, 0, 0, 1, 69, 0, 0, 16, 40, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0]
  • poolSetpointTemp : 0
  • spaSetpointTemp : 0

Regards Bruce


Bruce, regarding the specific code issue above i’ll Leave that to @joshua to respond, but I couldn’t help noticing that you are on Intermatic firmware version 3.1, which is quite old and they made numerous changes getting to v3.4. I don’t think you’ll ever get complete satisfaction on that version even if you do get partial success. I strongly recommend that you upgrade to v3.4. It is not difficult.

Best of luck!


Hi Keith,
I looked at doing that but the process looked pretty daunting to me. The instructions I have seen require a Windows XP machine for example. I don't even have a Windows machine let alone an XP although I probably could borrow a newer machine if I have too.
I actually wrote to Intermatic and asked them if they had an upgrade process for a 21st century computer. They said no but did offer to do it for me. I considered that but I am in Canada and would have to go through customs BS. They also said I had to send the entire PE653 which means electrical work and being without any kind of controller for some time.
Maybe it's easier than it looks and I will certainly try it as a last resort when I get some time.
My needs are very simple, I just want to read the temperature and operate 3 switches. I was hoping to accomplish this without going down the upgrade road.
Cheers Bruce


Check this out, @JDogg016 - 3.1.4a - I had a simple bug. It got me too.

Still very investigatory, because I have so little idea how the VSP even works. But if it's just presenting as channels, maybe this'll fly!

@ethelredkent I have to say - as with so many things, @keithriley is probably correct that you'll be frustrated in the long run with 3.1. I would probably have set fire to my house by now if I had to work with that additional complexity. That said, if your needs are very simple, you may get success? (Of course if your needs are very simple, you can get there with some relays. . . .)

The error you're getting suggests (showing the lines before the errors would help - and if you put them inside a 'code' block, they're easier to read/scroll) that the driver version is sending totally different information around that can't even be parsed. It's not impossible to address it, but it would take a lot of details. Keith may know more than I, but IIRC, 3.1 was known to really obscure a lot of information.


Fair enough Joshua, I will wait until either I can borrow an XP laptop or I will send the Unit back to Intermatic at the end of the season for an upgrade.
I was thinking along those lines after Keith's reply.
So it is likely getting and therefore parsing the wrong information because of 3.1. This is a bit strange because using the older driver I was able to read the temperature and operate one switch.
But, I agree it is pointless to try to maintain too many versions and don't want to put you to a lot of useless work.
Perversely I came from the Vera world where, as I understand it, Intermatic said that 3.1 was the only version that would work properly with Vera.
Many thanks for trying.
Regards Bruce


The fact that they expect people to even possibly have Windows XP around is a great example of what we're dealing with here. . . .

I'm happy to give it a try, usually these things just need some tweak or another. My version of the driver logs a ton of information - you can DM me for my email if you like, and send me a bunch of info, and we'll see.


Thanks Joshua. I will do that.


@joshua, here are a few basics about VSPs on the 653. Yes, the VSP is a series of 4 switches but there are a few caveats: these 4 switches (multi-channel instances) are not contiguous with the 5 basic 653 switches, they are 16-19 (0x10 - 0x13). They other thing is that they work like radio buttons, turning on any of the four Automatically turns off the any other speed previously set. Turning off the the speed that is on will turn the pump off completely.

The DTH maps the child devices 7-10 to these 4 instances (16-19). As was correctly mentioned above l, child 10 corresponds to VSP speed 4.

There is also logic that parses the ManufacturersProprietary response type 84 to decode which VSP speed is currently on, if any. This last bit is just to complete the picture as The sensing should not be an issue.

The issues we’ve had with VSP have mostly been related to Hubitat challenges with the MultiChannel processing and child device issues. Hope this helps.


Does it ever! Thank you, this is brilliant! Organized and concise. I was puzzling it out from the code and this helps a ton. Thank you @keithriley !

I've gotten some odd 84 events for the first time - non-parseable. They don't seem to be meaningful, and they are rare. I figured the manufacturer-proprietary changes flushed them out. I just wrapped them for now but will see if they add anything.