[OBSOLETE]Intermatic PE653 Pool Control System

Is the Configure icon supposed to do anything? It doesn’t open any information for me. Also, I’m not sure the Refresh button is doing anything either.

@KeithR, you are the man! I waited until end of season, so if something went sideways I wasn’t completely screwed. I upgraded to 3.4, and got everything back online. I now have Pool/Spa control!

Here are my notes. Upon installing the Multichannel control, I only get 5 end points. I wiped the ST several times and tried different order of install, but have only succeeded in getting 5. Can’t figure out what I could be doing wrong. When I first opened the app, all switches appeared ‘on’. After cycling off-on-off seemed to be OK. VSP4 is always on. Not sure why that is, need to look at the logs. VSP1-3 work as expected, but have no effect on VSP4.

Like you, temperature setting doesn’t work. It is a bummer, because I did use this with @bigpunk6’s app. But getting pool/spa is the big win here. I will take it.

The poll event is unreliable for me, so I will put the pollster app on, sames as before.

Next up, figure out how to get my Amazon Echo to turn the spa on, report on whether it is on, and report temperature. That is my concern with not getting your Switch Endpoint 6, as I think that is what I need for the Echo. I find it strange that the thermostat control can’t report the temperature, just set it (using Echo). So that will be some experimentation.

I set my remote up as the secondary controller. Only annoyance there is in 3.4 I get the extra ‘set scene’ screen, which I have no use for. If anyone knows how to get rid of it, I would be grateful.

Thank you, BigPunk, and everyone on the forum. I was almost hopeless that I would get this far.

Matt, the configure and refresh buttons have essentially the same semantics as they did from the bigpunk6 code, although I’ve adjusted the details.

Configure takes the parameters from the settings screens (pump type, pool/spa, etc) and sends them to the pool controller. This is normally not necessary because the settings screens do this as you change them anyway. This is an “active” button in the sense that it does write commands to the device.

Refresh reads many parameters and status values from the device including the state of the switches as well as temperature. This is a “passive” button because it only reads from the device. I often use this button if someone has. Been using the Intermatic remote as this causes the ST app get get out of sync, and because I’ve been unable to get the poll() function to call refresh() periodically. Any time you question the switch or VSP states or the temperature, press refresh.

Let me know if you have any other questions.

Barrett, good to hear from you! I’ll make a more detailed reply soon but the good news is that I’'m having success testing a fix for the temperature control on v3.4. I’ll plan an update soon.

1 Like

Yea! That was going to be my next question. :slight_smile:

Hello @KeithR!

Just wanted to ping you in case, you had success with this temperature Control Fix, you talked about. Just faced it, using your device handler, which is by the way awesome, great job man.

I’ve read through the entire thread and I have a question.I’m currently looking at a way to automate 5 circuits, 2 of which are 220v (2 pool pumps, the remaining 3 are lights and a valve to a water slide). I would also like to check the pool temperature, but have no heater to adjust.

Is the PE653 a good option to make this work, or is something like the CA3750 better suited for what I am trying to do? It seems like there is quite a bit of work to get the PE653 up an running within ST?

Thanks to everyone who has put in the effort to get the PE653 working though, what an amazing job!

The question would be if you have variable speed pumps or standard. if they are variable I would say the PE653 for sure just make sure you dont get the 3.4 firmware. it has major problems with Smartthings and Vera.

No variable speed pumps, just simply on and off is all i’m really trying to accomplish for a few different devices. The reason I was looking at the PE653 mainly had to do with it having its own remote control and a water temperature sensor.

However, I would be willing to overlook both of those perks for an easier ST integration.

In regards to the 3.4 firmware for the PE653, it looks like @KeithR most recent code seems to work with 3.4?

These issues with 3.4 firmware comes from myself owning it, and working with 3rd teir Smartthings Support and Intermatic. If you contact intermatic they know of this issue and its all over the vera forums.

I just installed my PE653 and I’m about to start working on getting this integrated into ST. Right now the PE653 is working with the controller, but on my first attempt to pair the PE653 to ST, i could not find the device; I believe this may be due to the distance between hub and controller (about 40 feet) so I’m going to try and move that closer and try again, however I just want to make sure I’m doing this correctly:

  1. Create custom device handler, copy and paste in @KeithR code from github and publish the device handler
  2. Put the PE953 (remote) into learning mode and reset device
  3. Put PE953 into learning mode and reset controller
  4. press include button on the PE653 (device) to put it into pairing mode
  5. open ST app and “add a thing” to look for new devices

At this point the PE653 should show up as a zwave device too add to ST correct? Or am I doing something wrong?

Thanks!

What is the firmware version of the PE653?

I’m not actually sure how to check. Ill try to find out soon.

As of right now, I have the PE653 and the PE953 paired to ST.

The PE653 will respond to both the ST command and the 953, however with ST, regardless of which switch i turn on, the only switch that will activate is the pump (or switch1 on the circuit).

Also, PE653 will only respond to ST if the hub is in LOS, which is doing to be a problem. There is a zwave switch within a couple feet of the PE653 and it will not relay commands. It will only work if ST is within Line of sight.

OK got the device handler updated.

Getting some error logs.

9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:14:48 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 4, parameter: []) --> 6006042502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:14:48 PM: warn ep Cmd not recognized: 320100
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:14:48 PM: debug … encap() cmd:SwitchBinaryGet() endpoint:4
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:14:48 PM: debug +++++ epCmd: ep:4 cmds:2002,delay 1000,320100
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:14:46 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 3, parameter: []) --> 6006032502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:14:46 PM: warn ep Cmd not recognized: 320100
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:14:46 PM: debug … encap() cmd:SwitchBinaryGet() endpoint:3
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:14:46 PM: debug +++++ epCmd: ep:3 cmds:2002,delay 1000,320100
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:13:46 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 1, parameter: []) --> 6006012502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:13:46 PM: warn ep Cmd not recognized: 320100
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:13:46 PM: debug … encap() cmd:SwitchBinaryGet() endpoint:1
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:13:46 PM: debug +++++ epCmd: ep:1 cmds:2002,delay 1000,320100
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:13:14 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 2, parameter: []) --> 6006022502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:13:14 PM: warn ep Cmd not recognized: 320100
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:13:14 PM: debug … encap() cmd:SwitchBinaryGet() endpoint:2
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:13:14 PM: debug +++++ epCmd: ep:2 cmds:2002,delay 1000,320100
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:50 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 1, commandClass: 37, instance: 1, parameter: [0]) --> 600601250100, delay 1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 1, parameter: []) --> 6006012502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:50 PM: debug +++++ offMulti(1)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:44 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 5, parameter: []) --> 6006052502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:44 PM: warn ep Cmd not recognized: 320100
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:44 PM: debug … encap() cmd:SwitchBinaryGet() endpoint:5
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:44 PM: debug +++++ epCmd: ep:5 cmds:2002,delay 1000,320100
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:32 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 1, commandClass: 37, instance: 1, parameter: [255]) --> 6006012501FF, delay 1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 1, parameter: []) --> 6006012502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:32 PM: debug +++++ onMulti(1)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:30 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: ThermostatSetpointSet(precision: 1, reserved01: 0, scale: 1, scaledValue: 40, setpointType: 1, size: 2, value: [1, 144]) --> 4301012A0190, delay 1000
<<<<< Dev cmd: ThermostatSetpointGet(reserved01: 0, setpointType: 1) --> 430201
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:30 PM: trace setPoolSetpoint(40.0, 1000)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:30 PM: debug quickSetPool 40
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:28 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: ThermostatSetpointSet(precision: 1, reserved01: 0, scale: 1, scaledValue: 70, setpointType: 1, size: 2, value: [2, 188]) --> 4301012A02BC, delay 1000
<<<<< Dev cmd: ThermostatSetpointGet(reserved01: 0, setpointType: 1) --> 430201
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:28 PM: trace setPoolSetpoint(70.0, 1000)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:28 PM: debug quickSetPool 70
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:25 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 1, commandClass: 37, instance: 5, parameter: [0]) --> 600605250100, delay 1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 5, parameter: []) --> 6006052502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:25 PM: debug +++++ offMulti(5)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:24 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 1, commandClass: 37, instance: 4, parameter: [0]) --> 600604250100, delay 1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 4, parameter: []) --> 6006042502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:23 PM: debug +++++ offMulti(4)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:19 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 1, commandClass: 37, instance: 3, parameter: [0]) --> 600603250100, delay 1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 3, parameter: []) --> 6006032502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:19 PM: debug +++++ offMulti(3)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:17 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 1, commandClass: 37, instance: 2, parameter: [0]) --> 600602250100, delay 1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 2, parameter: []) --> 6006022502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:17 PM: debug +++++ offMulti(2)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:16 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 1, commandClass: 37, instance: 1, parameter: [0]) --> 600601250100, delay 1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 1, parameter: []) --> 6006012502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:16 PM: debug +++++ offMulti(1)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:12 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: ConfigurationSet(configurationValue: [255, 255, 255, 255], defaultValue: false, parameterNumber: 21, reserved11: 0, size: 4) --> 70041504FFFFFFFF
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:12 PM: debug <<<<< Event: [name:poolSpaMode, value:pool, isStateChange:true, displayed:true, descriptionText:(poolSpaMode set to pool), linkText:PE653]
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:12 PM: trace CME: CANT’T FIND INSTANCE: 6 enabledEndpoints:[1, 2, 3, 4, 5]
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:12 PM: debug … createMultipleEvents( instance:6, cmdClass:37, cmdVal:3, externalParm:0, myParm:pool)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:12 PM: debug … sendMultipleEvents( instance:6, cmdClass:37, cmdVal:3, externalParm:0, myParm:pool)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:12:12 PM: debug +++++ setPoolMode
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:59 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: ConfigurationSet(configurationValue: [1, 0, 159, 5], defaultValue: false, parameterNumber: 21, reserved11: 0, size: 4) --> 7004150401009F05
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:59 PM: debug <<<<< Event: [name:poolSpaMode, value:spa, isStateChange:true, displayed:true, descriptionText:(poolSpaMode set to spa), linkText:PE653]
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:59 PM: trace CME: CANT’T FIND INSTANCE: 6 enabledEndpoints:[1, 2, 3, 4, 5]
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:59 PM: debug … createMultipleEvents( instance:6, cmdClass:37, cmdVal:3, externalParm:255, myParm:spa)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:59 PM: debug … sendMultipleEvents( instance:6, cmdClass:37, cmdVal:3, externalParm:255, myParm:spa)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:59 PM: debug +++++ setSpaMode
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:56 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: ConfigurationSet(configurationValue: [255, 255, 255, 255], defaultValue: false, parameterNumber: 21, reserved11: 0, size: 4) --> 70041504FFFFFFFF
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:56 PM: debug <<<<< Event: [name:poolSpaMode, value:pool, isStateChange:true, displayed:true, descriptionText:(poolSpaMode set to pool), linkText:PE653]
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:56 PM: trace CME: CANT’T FIND INSTANCE: 6 enabledEndpoints:[1, 2, 3, 4, 5]
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:56 PM: debug … createMultipleEvents( instance:6, cmdClass:37, cmdVal:3, externalParm:0, myParm:pool)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:56 PM: debug … sendMultipleEvents( instance:6, cmdClass:37, cmdVal:3, externalParm:0, myParm:pool)
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:56 PM: debug +++++ setPoolMode
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:52 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 1, commandClass: 37, instance: 5, parameter: [0]) --> 600605250100, delay 1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 5, parameter: []) --> 6006052502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:52 PM: debug … encap() cmd:SwitchBinaryGet() endpoint:5
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:52 PM: debug … encap() cmd:SwitchBinarySet(switchValue: 0) endpoint:5
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:52 PM: debug +++++ epCmd: ep:5 cmds:200100,delay 5000,2502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:50 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 1, commandClass: 37, instance: 4, parameter: [0]) --> 600604250100, delay 1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 4, parameter: []) --> 6006042502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:50 PM: debug … encap() cmd:SwitchBinaryGet() endpoint:4
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:50 PM: debug … encap() cmd:SwitchBinarySet(switchValue: 0) endpoint:4
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:50 PM: debug +++++ epCmd: ep:4 cmds:200100,delay 5000,2502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:49 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 1, commandClass: 37, instance: 3, parameter: [0]) --> 600603250100, delay 1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 3, parameter: []) --> 6006032502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:49 PM: debug … encap() cmd:SwitchBinaryGet() endpoint:3
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:49 PM: debug … encap() cmd:SwitchBinarySet(switchValue: 0) endpoint:3
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:49 PM: debug +++++ epCmd: ep:3 cmds:200100,delay 5000,2502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:49 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 1, commandClass: 37, instance: 2, parameter: [0]) --> 600602250100, delay 1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 2, parameter: []) --> 6006022502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:49 PM: debug … encap() cmd:SwitchBinaryGet() endpoint:2
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:49 PM: debug … encap() cmd:SwitchBinarySet(switchValue: 0) endpoint:2
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:49 PM: debug +++++ epCmd: ep:2 cmds:200100,delay 5000,2502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:48 PM: debug <<<<< dly:1000/1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 1, commandClass: 37, instance: 1, parameter: [0]) --> 600601250100, delay 1000
<<<<< Dev cmd: MultiInstanceCmdEncap(command: 2, commandClass: 37, instance: 1, parameter: []) --> 6006012502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:48 PM: debug … encap() cmd:SwitchBinaryGet() endpoint:1
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:48 PM: debug … encap() cmd:SwitchBinarySet(switchValue: 0) endpoint:1
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:11:48 PM: debug +++++ epCmd: ep:1 cmds:200100,delay 5000,2502
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:10:12 PM: error java.lang.NullPointerException: Cannot invoke method toInteger() on null object @ line 916
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:10:12 PM: debug +++++ configure() null
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:09:56 PM: error java.lang.NullPointerException: Cannot invoke method toInteger() on null object @ line 916
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:09:56 PM: debug +++++ configure() null
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:09:54 PM: error java.lang.NullPointerException: Cannot invoke method toInteger() on null object @ line 916
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:09:54 PM: debug +++++ configure() null
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:09:50 PM: error java.lang.NullPointerException: Cannot invoke method toInteger() on null object @ line 916
9a22a5ee-5f4e-4917-82e6-db8d7571503b 3:09:50 PM: debug +++++ configure() null

Reinstalled Multi Channel and put the hub back in Line of Sight of the PE653 and everything seems to function. I am not getting a temperature reading, but thats something that isn’t a big deal atm.

The code is working, i just need to figure out how to fix this weird LOS issue with just the PE653.

1 Like

I had to relocate the antenna on the PE653 about 40 feet away, but that seemed to solve my LOS issue w/ the ST hub.

Looks like everything is working, including pool temperature.

Super stoked to have complete control of the pool now! Thanks for everyone’s support in this effort!

I just noticed that the temperature is not updating. I was playing around with the water temperature offset and it finally updated, but despite repeated attempts to replicate it, I was unable to do so. Any ideas? I can post some debug logs if need be.

Thanks!

@KeithR Any luck with your code update?

Guys!!! So sorry for the absence. I actually moved and (over the past 5 months) re-setting everything up. I actually sold my PE653 and just bought a new one to re-integrate into ST.

  1. I had to re-learn this a bit but I went into ST and updated my code to your latest version;
  2. I then installed the multichannel app.
  3. I do have access to the device but I notice a few things: (a) my multi-channel smart app no longer creates any separate switches as devices (that may affect my ability to use CoRE; (b) it seems that all the buttons within the device work as they should but they take a really long time to respond (ie. 30 seconds) and I receive the following logs when hitting any button.

My heater goes in tomorrow so I will update you all on how that works then.

What firmware is running?