Z-Wave Multi Channel (PE653)

@keithriley have you heard about the device not working with the latest FW update?

@mike.maxwell, I understand your explanation of the optimization, but I don’t get the connection to the “missingMethod” exception being thrown. Near as I can tell, this occurs after the command has returned and is somewhere in Hubitat while parsing the command list. I would think this code should protect itself from the type mismatch that seems to be occurring.

The only thing the slightest bit unusual I can think of in my command list is that I include HubAction commands directly in order to create the ManufacturerProprietary command class, which is required to control this device.

@JDogg016, one thing that Mike might prefer is to add another debug statement near the end of delayBetween that just dumps the actual response list (in addition to the formatted debug that we have now). If that is not clear let me know and I can give you the actual code and location to insert it.

I did purchase a Hubitat and have it fired up but have not yet moved my PE653 over to it.

1 Like

Please give me detailed instructions and thank you.

Happy Saturday!!

I’m away from home this morning but i’ll Definitely send you the details later today.

:point_up:

Keith, when you do move it, it would be a great help to me if you will document the unpair/pair steps. I've still not recovered from the trauma of pairing the PE653/PE953 to ST for years ago. Thank you!

@JDogg016, Scroll all the way to the bottom of the DTH and insert the [log.debug "delayBetween=$evts"] line where you see it below (9 lines from the bottom):

if (evts) {
        if (debugLevel >= "0") {
            log.debug "<<<<< rspFlg=${responseFlg} dly:$dly/${DELAY}${evtStr}${devStr}"
        }
		log.debug "delayBetween=$evts"
		evts
    } else {
        if (debugLevel > "5") {
            log.debug "<<<<< rspFlg=${responseFlg} dly:$dly/${DELAY} No Commands or Events"
        }
    	null
    }
}
1 Like

Inserted the language and tried to turn on2, on5 and vsp4

[dev:257](http://192.168.7.201/logs#dev257)2018-10-01 19:32:38.994:errorgroovy.lang.MissingMethodException: No signature of method: hubitat.device.HubAction.startsWith() is applicable for argument types: (java.lang.String) values: [delay] (setVSPSpeed4)

[dev:257](http://192.168.7.201/logs#dev257)2018-10-01 19:32:38.918:debugdelayBetween=[6006250113FF, delay 1500, 910005400102870301, delay 1500, 910005400101830101]

[dev:257](http://192.168.7.201/logs#dev257)2018-10-01 19:32:38.903:debug&lt;&lt;&lt;&lt;&lt; rspFlg=false dly:1500/1500 &lt;&lt;&lt;&lt;&lt; Dev cmd: MultiInstanceCmdEncap(command:1, commandClass:37, instance:19, parameter:[255]) --&gt; 6006250113FF, delay 1500 &lt;&lt;&lt;&lt;&lt; HubAction: 910005400102870301, delay 1500 &lt;&lt;&lt;&lt;&lt; HubAction: 910005400101830101

[dev:257](http://192.168.7.201/logs#dev257)2018-10-01 19:32:38.896:debug+++++ setVSPSpeedInternal() speed=4

[dev:257](http://192.168.7.201/logs#dev257)2018-10-01 19:32:36.120:errorgroovy.lang.MissingMethodException: No signature of method: hubitat.device.HubAction.startsWith() is applicable for argument types: (java.lang.String) values: [delay] (on2)

[dev:257](http://192.168.7.201/logs#dev257)2018-10-01 19:32:36.046:debugdelayBetween=[6006250102FF, delay 1500, 910005400102870301, delay 1500, 910005400101830101]

[dev:257](http://192.168.7.201/logs#dev257)2018-10-01 19:32:36.044:debug&lt;&lt;&lt;&lt;&lt; rspFlg=false dly:1500/1500 &lt;&lt;&lt;&lt;&lt; Dev cmd: MultiInstanceCmdEncap(command:1, commandClass:37, instance:2, parameter:[255]) --&gt; 6006250102FF, delay 1500 &lt;&lt;&lt;&lt;&lt; HubAction: 910005400102870301, delay 1500 &lt;&lt;&lt;&lt;&lt; HubAction: 910005400101830101

[dev:257](http://192.168.7.201/logs#dev257)2018-10-01 19:32:35.282:errorgroovy.lang.MissingMethodException: No signature of method: hubitat.device.HubAction.startsWith() is applicable for argument types: (java.lang.String) values: [delay] (on5)

[dev:257](http://192.168.7.201/logs#dev257)2018-10-01 19:32:35.219:debugdelayBetween=[6006250105FF, delay 1500, 910005400102870301, delay 1500, 910005400101830101]

[dev:257](http://192.168.7.201/logs#dev257)2018-10-01 19:32:35.217:debug&lt;&lt;&lt;&lt;&lt; rspFlg=false dly:1500/1500 &lt;&lt;&lt;&lt;&lt; Dev cmd: MultiInstanceCmdEncap(command:1, commandClass:37, instance:5, parameter:[255]) --&gt; 6006250105FF, delay 1500 &lt;&lt;&lt;&lt;&lt; HubAction: 910005400102870301, delay 1500 &lt;&lt;&lt;&lt;&lt; HubAction: 910005400101830101

We do not currently handle mixing HubActions with String commands and HubAction delay does not work at all. I would recommend changing those lines using HubAction to just return a String instead.

ie this:

	def cmds =[
		new hubitat.device.HubAction("910005400102870301"),
		new hubitat.device.HubAction("910005400101830101"),
//		new hubitat.device.HubAction("91000541010100"),
	]

becomes this:

	def cmds =[
		"910005400102870301",
		"910005400101830101"
//		"91000541010100",
	]

@keithriley Just realized I did not reply to the prior thread personally to you so you may not have seen it.

FWIW, @CAL.hub, I just unlinked from SmartThings and switched my PE653 over to Hubitat.
Steps were:

  • delete all devices
  • navigate (I used the ios App):
    More icon > Home> Gear Icon > Z Wave Utilities > General Exclusion

or just search for 'smart things general exclusion'.

Then, it paired trivially!

@keithriley Hi, we've emailed a little bit - I've finally taken the plunge and moved over to Hubitat, with your 3.06 driver. I'm a professional software developer and while currently Groovy-ignorant, I'm looking forward to helping out here.

If you had even half an hour to give me a general tour, I can start helping out here. DM me if you'd like.

Thanks for all your great work here, I'm so glad to see the back side of SmartThings!

Thanks @chuck.schwer - I haven't seen a response from @keithriley yet, but if I understand correctly:

the refreshCmds should all be failing with them as HubActions?

The problem is the mix.. its returning an array with some being HubActions and some being Strings. For Zigbee and ZWave, the best way to do it is to use Strings for all the commands.

1 Like

Makes sense, given how Groovy dispatches methods! I can make that change. Thanks!

Thank you. Did you also pair the the PE953 remote?

No - mine went mad and started sending spurious signals, so I took it out behind the woodshed and put it down. I've replaced it entirely with my phone and, once I get this working, Siri control!

I would expect you could pair it as a 'secondary controller' - or maybe even pair it to the Hubitat itself, and use it to control arbitrary scenes (I'm not sure). But I found it a clumsy control and decided not to bother.

Thanks @chuck.schwer - by standardizing on strings, I've gotten this to start working somewhat. It begins to report information and poll the 653 successfully.

I'm finding that even though I have the erocm123 / Switch Child Device installed (and used successfully by another device), I'm getting this, which occurs when the devObj is null.

dev:1292018-10-04 20:23:50.425:warnCME: CAN'T FIND CHILD DEVICE: 06-ep5:switch5
dev:1292018-10-04 20:23:50.406:warnCME: CAN'T FIND CHILD DEVICE: 06-ep4:switch4
dev:1292018-10-04 20:23:50.401:warnCME: CAN'T FIND CHILD DEVICE: 06-ep3:switch3
dev:1292018-10-04 20:23:50.395:warnCME: CAN'T FIND CHILD DEVICE: 06-ep2:switch2
dev:1292018-10-04 20:23:50.382:warnCME: CAN'T FIND CHILD DEVICE: 06-ep1:switch1

The first time I paired the iNovelli switch, I had to power cycle it a few times to get it to 'find' the child objects. But this time, that's not working. I'm going to keep banging at this code, hoping to understand it better, but I'd love any suggestions!

Update: I uncommented the code and forced it to run updated. I also updated the namespace for the erocm123 driver - it's now iNovelli in his repo. Success! Or at least they are created. Updates still fail in createMultipleEvents, saying no update is necessary.

I've realized I have firmware 3.3, which makes me apprehensive - am I doomed? Or worse, doomed to have to mail it to Intermatic?

@CAL.hub, I paired the PE953 remote. I am on version 3.4 of the firmware. I started trying to document exactly what I did, but there was some trial and error involved and I can't say exactly what steps ended up working. It was some variation of old procedures from the MiCasaVerde and ST forums. It was basically copying the config from the primary controller, but it wasn't exactly intuitive and took me a few attempts.
I'm sure you will figure it out. If you get stuck, I will do what I can to help. It is possible, and if I have to do it again, I will make sure I take good notes next time.

1 Like

Thanks @chuck.schwer. I've made your suggested changes in a pull request at: Correct HubAction Strings & by tooluser · Pull Request #1 · HubitatCommunity/hubitat-zwavemultichannel-pe653 · GitHub

I've also started to make some other changes, like trying to switch to the new namespace for the child switches.

I'm currently not getting any child switches to work, though, and I'm wondering about the firmware. I'm on 3.3. Has anyone with v3.3 gotten this to work, even intermittently? I'm finding it reports the temperature and switch state, but never sends updates properly.

Here's the text of the PR as it is right now. I would love some commentary from anyone (eg @keithriley ) who knows what's going on!


Purpose

The DTH is currently not working AFAICT. Take some advice from various people in the thread to attempt a fix.

Implementation Details

  • Per @chuck.schwer, don't mix String s and HubAction s. Standardize here on Strings.
    • (I'd love to constant-ize these strings, but I don't know what they mean)
  • Standardize logging by using log levels rather than conditionals
    • This may not be working, so I may introduce a _log method to DRY up that behavior
  • Make SmartThings/Hubitat condition code-based so no code need be commented out
  • May attempt to upgrade to new namespace for the child switches ( iNovelli )
  • Attempt to simplify child-creation code and move to initialize

Can you say more about why this is necessary for control? I've tried switching to all strings as suggested, and a number of things began working better, but I still can't set any values - I'm wondering if this is part of the reason, though I don't follow why.

With them there, I still see this same failure when clicking "On2". (Note I changed it to call setAndGet, so there are two commands.) The parameter in the setChanState value as generated is null, which seems wrong. (The command class for the set is is 32 (0x20), which the documentation says is for 'basic' - should this be (0x25), 37, for switch, like the get?)

dev:1302018-10-06 21:17:17.294:debug----- cmds: [
    MultiInstanceCmdEncap(command:1, commandClass:32, instance:2, parameter:[null]),
    MultiInstanceCmdEncap(command:2, commandClass:37, instance:2, parameter:[])
]
dev:1302018-10-06 21:17:17.292:trace----- getChanState command: MultiInstanceCmdEncap(command:2, commandClass:37, instance:2, parameter:[])
dev:1302018-10-06 21:17:17.285:debug+++++ getChanState(2)
dev:1302018-10-06 21:17:17.283:trace----- setChanState command: MultiInstanceCmdEncap(command:1, commandClass:32, instance:2, parameter:[null])
dev:1302018-10-06 21:17:17.281:trace+++++ setChanState(2, 255)