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.


Awesome job, you guys! I've been a PE653 user on ST for about a year or so now (or is it 2 years?)...
Anyway, amazing to see, now that I've switched to Hubitat, that it works over here, too. Got my HE Monday, switched all my stuff over in the evenings this week, and saved the pool for last. I feared it was going to be some awful task, so I saved it for the weekend, but it literally took about a minute. :slight_smile:

THAT SAID: I have a question regarding setting automations, dashboard tiles, etc....

Since this didn't create multiple devices like ST did, there's no easy way to create individual tiles for, say, the pool light, the filter pump, the vacuum booster, etc., right? What I've done is create virtual switches for each switch and then used Rule Machine for each individual attribute. Essentially, for example,

Created a virtual switch called Pool Light

Created a Rule as below:

Is this considered best practice? I'm still getting used to some of the differences between the two platforms, and with the lack of individual devices created, this is what I could come up with.

Thanks for your help!


OK...I've found a better way. Hopefully you guys will tell me this is the way, or maybe I'll even be able to contribute by showing someone who didn't already know about this solution:

I found Virtual Device Sync, which, OH BOY, makes it simpler, and also solves some other issues I was having with my cirtual switches.

First of all, when you run it, you tell it you want to use the Pool Controller, and it says, yep, there are 5 endpoints. They look like switches...and it creates switches for you:

And then there they are in your devices:

The BIG TIME bonus about these devices is that they follow the state of the physical device. So, for example: When I turn on my Polaris booster pump, the main pool filter pump turns on as well (first, for 30 seconds), as controlled internally by the cleaner function of the PE653. With the virtual switches, there was no way for my dashboard to know that the filter pump was running. I was thinking of creating rules for the virtual switches to follow the physical ones, when I found the above. Now it's super clean and easy.

Maybe some of you are saying, "Duh." Maybe some of you are saying, "STUPID IDEA." If so, please tell me what I'm missing. And on the off chance someone is saying, "Ooh! that's better than what I was doing!", I'm happy I could help in some small way. I've also submitted some pretty nice POOL AND EQUIPMENT ICONS for hopeful inclusion in Sharptools. It would make me very happy to know that the community of PE653 developers and users are using my pool icons on their dashboards. :slight_smile:

[RELEASE] Virtual Device Sync

My story for 1.5 years. :blush:

I'm curious about your experience with the remote. I recall that pairing the PE653 to ST and the PE953 was an adventure that was one part gathering documented experiences (some from Vera users) and nine parts black magic. Did you pair it? Easy?
Can you give any tips for successful pairing?


Lol I mercifully left that part out. Yes, I did pair it. Yes, it did require that good old black magic. That wasn't included in my 1 minute figure. :joy: I THINK I could do it again quickly?

My tip is that you have to pair the 953 into Hubitat as its own thing, or the 653 will never let you link with it.

The way you get it to pair with HE is, after you have reset the controller, you put HE into zwave inclusion, and then tell the 953 to controller copy -- receive net only. That will cause HE to pair with it, and it will say successful.

It will go "out of range". At this point, you should be able to include device, and it'll be all good.

....I think. You know how it is. You're begging with it and thinking yours will never work, you have a special case, you're gonna have to unpair and redo the whole thing from the start, etc... And then it'll work on you. The basic instructions are on post #238 at the other community thread that I know you know well (I recognize your name and icon). But combine that method with my tips above, and it'll work out somehow.


@keithriley Hi, Keith. As I inch closer and closer to converting my PE653 from ST to HE, I recall that (way back) you were looking at some code to allow ST or HE to program schedules. Did that work out? Still on your roadmap?

Thanks for all your help!


I'm gonna copy this that I posted over on ST earlier. Hope no one minds:

Hey all,

So, it seems that somewhere along the way, the development for this driver (which I absolutely love) has made full use of, taken advantage of, and has flourished because of some enhancements in the 3.4 firmware. --And as such, those of us still on 3.3 are operating less-than optimally.

SIMPLY STATED: I want to upgrade my firmware. I’m familiar with the process. But the stick that’s required to do it is discontinued, and it looks like it’s expensive and rare if you can even find one online. So I’m wondering: since this is a device that you presumably will have to use ONCE for just a few minutes ever…could we possibly work out a borrow situation, or does someone have one lying around that they’d let go for cheap?

Apparently, Frank Pomeroy has retired, and Intermatic no longer will perform the flash for you (not that I want to ship my whole setup in to them anyway). In my years in such communities as these, I’ve found it common that one person who has “the thing” (like an almond router that can flash everyone’s peanut plugs to get power consumption readouts in ST, or an intermatic ZWave stick that is the only thing that can flash the firmware on a PE653/953) wants to help other fellow members out. I don’t want to beg or be presumptuous, but it never hurts to ask. :+1:

Now that I’ve asked: I’ll elaborate on my issue, for anyone who cares to continue reading: At some point, an update or two back, my internal timers on all but circuit 1 have ceased to operate the system. In my setup, I have a single speed pump on 1, a booster pump for a cleaner on 3, and a light on 4. Nothing else.
I should note that I can control all these 3 channels just fine with the remote, the buttons on the 653, and through the app. No problem. But even though I have schedules set internally in the 653 on all 3 of those circuits, only the pump on 1 will actually switch as scheduled. So, my vacuum won’t run in the mornings, and my light, which I have a rule set up to turn on every day at sunset, but which I have a 653 schedule set to turn off at 9:30, never turns off.
INTERESTINGLY: I have recently moved my PE653 over to Hubitat, and I was hoping that the fresh start, including a full reset of everything, would inspire the 653 to start working reliably again. IN FACT, after fully resetting and getting everything running right on Hubitat, I set new schedules for all 3 circuits that night…and THEY WORKED THE NEXT DAY! My pump turned on at 7 am (internal timer), my booster turned on at 8 am (internal timer), they both turned off at 11 am (internal timer), my pump turned on at 6 pm (internal timer), my light turned on at sunset (Hubitat), my light turned off at 9:30 (internal timer), and my pump turned off at 10 pm (internal timer). SUCCESS!!!..until…it has never worked again. It’s as if once the internal timers have turned off a timer on 3 and 4, it can never turn it back on again.:frowning:
–And this is exactly the same behavior I have had with both ST and Hubitat (both of which were amazingly developed by our good friend @KeithR ). As I mentioned, I’ve suspected that it has something to do with a bug in 3.3 that doesn’t much care for the way our automation controllers are doing things.

THANKS FOR THE READ, and hopefully someone wants to help a stranded 3.3er off the lonely island.:slight_smile:
My next move with my pool is to install a variable speed pump, and I really want to make sure I’m well up to date as I add features.