Philio PSR04 Smart Color Button (Z-Wave)

I’ve just bought a Philio PSR04 Smart Button which is a Z-Wave device. I’ve managed to add a Thing for the device and it is present in the database of Z-Wave devices, but the only channels listed are for Battery Level and Scene Number. The button also has a dimmer function which I can’t figure out how to set up.

In the documentation for the button it says it supports 2 association groups. Group 1 is for reporting the battery level and this was already set to the controller. Group 2 is for reporting the dimmer value via a Basic Set command, this was blank by default.

I set group 2 to point at the controller using HABmin and I can now see the dimmer values being reported in the OpenHAB log. I’m not sure how I can link these incoming values to an Item without a channel. Does the Z-Wave binding need changing to fully support this device? Or do I just need to make a configuration change somewhere?

Would you mind takeing a couple of pictures and posting a small review of the button?
Is it much use with a main controler?

Yes - it looks like it’s been configured to support the scene use of this device - not the multi level sensor - can you post the XML file for this device please (it should be in the userdata/zwave folder).

Here’s the XML file: node4.xml (8.3 KB)

Here’s a relevant section of the log file when I change the position of the button (after I added the controller to the 2nd association group):

16:35:31.996 [DEBUG] [WaveSerialHandler$ZWaveReceiveThread] - Receive Message = 01 09 00 04 00 04 03 20 01 53 87
16:35:31.998 [DEBUG] [ve.internal.protocol.ZWaveController] - Receive queue TAKE: Length=0
16:35:31.998 [DEBUG] [wave.internal.protocol.SerialMessage] - Assembled message buffer = 01 09 00 04 00 04 03 20 01 53 87
16:35:31.999 [DEBUG] [ve.internal.protocol.ZWaveController] - Process Message = 01 09 00 04 00 04 03 20 01 53 87
16:35:32.000 [DEBUG] [ve.internal.protocol.ZWaveController] - Message: class=ApplicationCommandHandler[0x04], type=Request[0x00], priority=High, dest=255, callback=0, payload=00 04 03 20 01 53
16:35:32.001 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 4: Application Command Request (ALIVE:DETAILS)
16:35:32.002 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 4: Incoming command class BASIC
16:35:32.002 [DEBUG] [.commandclass.ZWaveBasicCommandClass] - NODE 4: Received Basic Request
16:35:32.002 [DEBUG] [.commandclass.ZWaveBasicCommandClass] - NODE 4: Basic Set sent to the controller will be processed as Basic Report
16:35:32.003 [DEBUG] [.commandclass.ZWaveBasicCommandClass] - NODE 4: Basic report, value = 0x53
16:35:32.003 [DEBUG] [ve.internal.protocol.ZWaveController] - Notifying event listeners: ZWaveCommandClassValueEvent
16:35:32.004 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 4: Got an event from Z-Wave network: ZWaveCommandClassValueEvent
16:35:32.005 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 4: Got a value event from Z-Wave network, endpoint = 0, command class = BASIC, value = 83

The values is sends are in the range 0 (off/min) to 99 (on/max) and it looks like you can configure it to use a different min/max range if you like (though always within the bounds 0-99).

@Spaceman_Spiff Here are some pictures and a short review:




The button is approximately 5cm diameter and consists of two components: a magnetic backplate (also supplied with screws and sticky pads) and the button itself that attaches magnetically to the backplate. I have mounted it to a (hopefully not too hot!) part of a radiator using the magnet.

The button contains a rechargeable battery and micro USB port for charging. Battery status is reported over zwave.

In the centre of the button is a touch sensitive area (the concave part), this beeps when you touch it and acts as an on/off switch. The on/off switch works when the button is horizontal or vertical.

When in a vertical position and switched on, the button acts as a dimmer when rotated inside the top half. The 9 o’clock position is the minimum value and 3 o’clock is maximum. Any position in the lower left quadrant sends the minimum value, and any position in the lower right sends the maximum value. Whilst you are turning it, it illuminates in a colour ranging from blue to red depending on the position. The position/dimmer value is only sent 1 second after you stop turning it, I guess this is to save on battery usage.

There are a few things I haven’t described, it sends a scene number (which I couldn’t make sense of) when you turn it off/on and there is a timer function. For more information, see the product sheet.

I find the beep when you switch it on or off to be slightly annoying, and there doesn’t seem to be a way to disable that. I will probably end up leaving it on and just turn it to the lower left quadrant when I want my lights to be off. I’m also worried that the lack of instant feedback (the 1 second delay) may be a bit strange but I’ll have to wait for Chris to work his magic before being able to report back on that.

I’m only just getting into smart home stuff, so I’m not sure what you mean by “Is it much use with a main controler?”.

Hi didroe,
thank you for you blazing fast reply and you pictures!
What I was wondering is if the central controler (in your case openhab) does receive the dimming commands.
Can this be achieved by assigning it to the Group 2?

Yes, assigning the controller to group 2 seems to cause it to receive the dimmer values via a Basic Set command.

Would you mind sharing your items? I can’t seem to get the value of the basic set.

I don’t have an item set up for it yet because there’s no channel exposed for the dimmer value. That’s why I created this thread, to see what needed to be done to fully support the device. So far I added the thing, set group 2 to be the controller and saw it receiving the value in the log (when set to debug log-level). We need to wait for @chris to find the time to update the definition of the device to expose the value as a channel.

This would be really nice.
I bought one because of your pictures and I really like it. Unfortunately the following items don’t work:

Number	PSR04_Number	 "PSR04 Pos [%d]"	{zwave="33:command=BASIC,respond_to_basic=true"}
Number	PSR04_Number0    "PSR04 Pos [%d]"	{zwave="33:command=SWITCH_MULTILEVEL,respond_to_basic=true"}
Number	PSR04_Number1    "PSR04 Pos [%d]"	{zwave="33:command=SENSOR_MULTILEVEL,respond_to_basic=true"}

I am using the cloudbees snapshot (OH1) from today.
@chris:
It would be really nice of you to implement something to get the sent basic value. :slight_smile:

For oh1 if you want to use basic command class then you need to use command=BASIC, not SWITCH_MULTILEVEL.

For oh2 I need to add the channel. Internet access has not been good the past few days - sorry.

That’s what I did (first item). But I do not get any updates. :frowning:

I would remove the respond_to_basic - this might cause a problem, and certainly doesn’t make any sense. Otherwise you should check the debug logs.

That’s how I started. To create some logs I switched back to this config (Binding Version 1.9.0.201701130210):

Number	PSR04_Number	"PSR04 Pos [%d]"			{zwave="33:command=BASIC"}
Number	PSR04_Scene	"PSR04 CentralScene [%d]"		{zwave="33:command=CENTRAL_SCENE"}

I first longpress the button, then turn it, then longpress it again. Longpress sends the CentralScene, Turning sends the Basic Set.

2017-01-16 20:34:22.687 [DEBUG] [ApplicationCommandMessageClass:41  ]- NODE 33: Application Command Request (ALIVE:PING)
2017-01-16 20:34:22.688 [DEBUG] [ApplicationCommandMessageClass:146 ]- NODE 33: Incoming command class CENTRAL_SCENE (0x5b)
2017-01-16 20:34:22.688 [DEBUG] [.ZWaveCentralSceneCommandClass:77  ]- NODE 33: Received central scene command (v1)
2017-01-16 20:34:22.689 [DEBUG] [.ZWaveCentralSceneCommandClass:84  ]- NODE 33: Received scene 1 ; key 2
2017-01-16 20:34:22.689 [DEBUG] [b.z.i.protocol.ZWaveController:668 ]- NODE 33: Notifying event listeners: ZWaveCommandClassValueEvent
2017-01-16 20:34:22.691 [DEBUG] [.z.internal.ZWaveActiveBinding:472 ]- NODE 33: Got a value event from Z-Wave network, endpoint = 0, command class = CENTRAL_SCENE, value = {key=2, scene=1}
2017-01-16 20:34:22.705 [DEBUG] [ApplicationCommandMessageClass:41  ]- NODE 33: Application Command Request (ALIVE:PING)
2017-01-16 20:34:22.706 [DEBUG] [ApplicationCommandMessageClass:146 ]- NODE 33: Incoming command class BASIC (0x20)
2017-01-16 20:34:22.709 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:73  ]- NODE 33: Received Basic Request
2017-01-16 20:34:22.714 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:77  ]- NODE 33: Basic Set sent to the controller will be processed as Basic Report
2017-01-16 20:34:22.715 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:106 ]- NODE 33: Basic report, value = 0x00
2017-01-16 20:34:22.716 [DEBUG] [b.z.i.protocol.ZWaveController:668 ]- NODE 33: Notifying event listeners: ZWaveCommandClassValueEvent
2017-01-16 20:34:22.719 [DEBUG] [.z.internal.ZWaveActiveBinding:472 ]- NODE 33: Got a value event from Z-Wave network, endpoint = 0, command class = BASIC, value = 0
2017-01-16 20:34:23.096 [DEBUG] [ApplicationCommandMessageClass:41  ]- NODE 33: Application Command Request (ALIVE:PING)
2017-01-16 20:34:23.097 [DEBUG] [ApplicationCommandMessageClass:146 ]- NODE 33: Incoming command class CENTRAL_SCENE (0x5b)
2017-01-16 20:34:23.098 [DEBUG] [.ZWaveCentralSceneCommandClass:77  ]- NODE 33: Received central scene command (v1)
2017-01-16 20:34:23.099 [DEBUG] [.ZWaveCentralSceneCommandClass:84  ]- NODE 33: Received scene 1 ; key 1
2017-01-16 20:34:23.099 [DEBUG] [b.z.i.protocol.ZWaveController:668 ]- NODE 33: Notifying event listeners: ZWaveCommandClassValueEvent
2017-01-16 20:34:23.101 [DEBUG] [.z.internal.ZWaveActiveBinding:472 ]- NODE 33: Got a value event from Z-Wave network, endpoint = 0, command class = CENTRAL_SCENE, value = {key=1, scene=1}
2017-01-16 20:34:33.840 [DEBUG] [ApplicationCommandMessageClass:41  ]- NODE 33: Application Command Request (ALIVE:PING)
2017-01-16 20:34:33.841 [DEBUG] [ApplicationCommandMessageClass:146 ]- NODE 33: Incoming command class CENTRAL_SCENE (0x5b)
2017-01-16 20:34:33.842 [DEBUG] [.ZWaveCentralSceneCommandClass:77  ]- NODE 33: Received central scene command (v1)
2017-01-16 20:34:33.843 [DEBUG] [.ZWaveCentralSceneCommandClass:84  ]- NODE 33: Received scene 1 ; key 0
2017-01-16 20:34:33.845 [DEBUG] [b.z.i.protocol.ZWaveController:668 ]- NODE 33: Notifying event listeners: ZWaveCommandClassValueEvent
2017-01-16 20:34:33.846 [DEBUG] [.z.internal.ZWaveActiveBinding:472 ]- NODE 33: Got a value event from Z-Wave network, endpoint = 0, command class = CENTRAL_SCENE, value = {key=0, scene=1}
2017-01-16 20:34:33.858 [DEBUG] [ApplicationCommandMessageClass:41  ]- NODE 33: Application Command Request (ALIVE:PING)
2017-01-16 20:34:33.859 [DEBUG] [ApplicationCommandMessageClass:146 ]- NODE 33: Incoming command class BASIC (0x20)
2017-01-16 20:34:33.860 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:73  ]- NODE 33: Received Basic Request
2017-01-16 20:34:33.861 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:77  ]- NODE 33: Basic Set sent to the controller will be processed as Basic Report
2017-01-16 20:34:33.862 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:106 ]- NODE 33: Basic report, value = 0x34
2017-01-16 20:34:33.863 [DEBUG] [b.z.i.protocol.ZWaveController:668 ]- NODE 33: Notifying event listeners: ZWaveCommandClassValueEvent
2017-01-16 20:34:33.865 [DEBUG] [.z.internal.ZWaveActiveBinding:472 ]- NODE 33: Got a value event from Z-Wave network, endpoint = 0, command class = BASIC, value = 52
2017-01-16 20:34:38.975 [DEBUG] [ApplicationCommandMessageClass:41  ]- NODE 33: Application Command Request (ALIVE:PING)
2017-01-16 20:34:38.976 [DEBUG] [ApplicationCommandMessageClass:146 ]- NODE 33: Incoming command class BASIC (0x20)
2017-01-16 20:34:38.977 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:73  ]- NODE 33: Received Basic Request
2017-01-16 20:34:38.978 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:77  ]- NODE 33: Basic Set sent to the controller will be processed as Basic Report
2017-01-16 20:34:38.979 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:106 ]- NODE 33: Basic report, value = 0x08
2017-01-16 20:34:38.980 [DEBUG] [b.z.i.protocol.ZWaveController:668 ]- NODE 33: Notifying event listeners: ZWaveCommandClassValueEvent
2017-01-16 20:34:38.982 [DEBUG] [.z.internal.ZWaveActiveBinding:472 ]- NODE 33: Got a value event from Z-Wave network, endpoint = 0, command class = BASIC, value = 8
2017-01-16 20:34:43.073 [DEBUG] [ApplicationCommandMessageClass:41  ]- NODE 33: Application Command Request (ALIVE:PING)
2017-01-16 20:34:43.075 [DEBUG] [ApplicationCommandMessageClass:146 ]- NODE 33: Incoming command class BASIC (0x20)
2017-01-16 20:34:43.076 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:73  ]- NODE 33: Received Basic Request
2017-01-16 20:34:43.077 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:77  ]- NODE 33: Basic Set sent to the controller will be processed as Basic Report
2017-01-16 20:34:43.078 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:106 ]- NODE 33: Basic report, value = 0x50
2017-01-16 20:34:43.079 [DEBUG] [b.z.i.protocol.ZWaveController:668 ]- NODE 33: Notifying event listeners: ZWaveCommandClassValueEvent
2017-01-16 20:34:43.080 [DEBUG] [.z.internal.ZWaveActiveBinding:472 ]- NODE 33: Got a value event from Z-Wave network, endpoint = 0, command class = BASIC, value = 80
2017-01-16 20:34:49.333 [DEBUG] [ApplicationCommandMessageClass:41  ]- NODE 33: Application Command Request (ALIVE:PING)
2017-01-16 20:34:49.334 [DEBUG] [ApplicationCommandMessageClass:146 ]- NODE 33: Incoming command class CENTRAL_SCENE (0x5b)
2017-01-16 20:34:49.336 [DEBUG] [.ZWaveCentralSceneCommandClass:77  ]- NODE 33: Received central scene command (v1)
2017-01-16 20:34:49.337 [DEBUG] [.ZWaveCentralSceneCommandClass:84  ]- NODE 33: Received scene 1 ; key 2
2017-01-16 20:34:49.337 [DEBUG] [b.z.i.protocol.ZWaveController:668 ]- NODE 33: Notifying event listeners: ZWaveCommandClassValueEvent
2017-01-16 20:34:49.339 [DEBUG] [.z.internal.ZWaveActiveBinding:472 ]- NODE 33: Got a value event from Z-Wave network, endpoint = 0, command class = CENTRAL_SCENE, value = {key=2, scene=1}
2017-01-16 20:34:49.351 [DEBUG] [ApplicationCommandMessageClass:41  ]- NODE 33: Application Command Request (ALIVE:PING)
2017-01-16 20:34:49.352 [DEBUG] [ApplicationCommandMessageClass:146 ]- NODE 33: Incoming command class BASIC (0x20)
2017-01-16 20:34:49.353 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:73  ]- NODE 33: Received Basic Request
2017-01-16 20:34:49.354 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:77  ]- NODE 33: Basic Set sent to the controller will be processed as Basic Report
2017-01-16 20:34:49.355 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:106 ]- NODE 33: Basic report, value = 0x00
2017-01-16 20:34:49.357 [DEBUG] [b.z.i.protocol.ZWaveController:668 ]- NODE 33: Notifying event listeners: ZWaveCommandClassValueEvent
2017-01-16 20:34:49.360 [DEBUG] [.z.internal.ZWaveActiveBinding:472 ]- NODE 33: Got a value event from Z-Wave network, endpoint = 0, command class = BASIC, value = 0
2017-01-16 20:34:49.539 [DEBUG] [ApplicationCommandMessageClass:41  ]- NODE 33: Application Command Request (ALIVE:PING)
2017-01-16 20:34:49.541 [DEBUG] [ApplicationCommandMessageClass:146 ]- NODE 33: Incoming command class CENTRAL_SCENE (0x5b)
2017-01-16 20:34:49.542 [DEBUG] [.ZWaveCentralSceneCommandClass:77  ]- NODE 33: Received central scene command (v1)
2017-01-16 20:34:49.543 [DEBUG] [.ZWaveCentralSceneCommandClass:84  ]- NODE 33: Received scene 1 ; key 1
2017-01-16 20:34:49.544 [DEBUG] [b.z.i.protocol.ZWaveController:668 ]- NODE 33: Notifying event listeners: ZWaveCommandClassValueEvent
2017-01-16 20:34:49.546 [DEBUG] [.z.internal.ZWaveActiveBinding:472 ]- NODE 33: Got a value event from Z-Wave network, endpoint = 0, command class = CENTRAL_SCENE, value = {key=1, scene=1}

Unforunately only the central scene causes an item update:

2017-01-16 20:34:22 - PSR04_Scene state updated to 1
2017-01-16 20:34:23 - PSR04_Scene state updated to 1
2017-01-16 20:34:33 - PSR04_Scene state updated to 1
2017-01-16 20:34:49 - PSR04_Scene state updated to 1
2017-01-16 20:34:49 - PSR04_Scene state updated to 1

As you can see my item seems to be defined correctly, because it shows up in the log:

2017-01-16 20:34:33.865 [DEBUG] [.z.internal.ZWaveActiveBinding:472 ]- NODE 33: Got a value event from Z-Wave network, endpoint = 0, command class = BASIC, value = 52

Unfortunately it does not cause an Update. What shall I do?

@chris:
Can I provide you any further information so you can give me a hint where to look?

Sorry - I’m not sure. It looks like it’s working as best as I can tell from the log. If it hadn’t processed the message you would have seen a log entry “No item bound for event” and I don’t see this.[quote=“Spaceman_Spiff, post:14, topic:19760”]
As you can see my item seems to be defined correctly, because it shows up in the log:
[/quote]

I don’t think this means that the item is dfined correctly - this is a low level message saying that we recieved an event from the zwave network (ie we received the packet) - it doesn’t mean the item is correct or it’s been processed. The absense of the “no item bound” though probably does mean it’s ok, but I don’t know why you aren’t seeing any update. Looking through the code, it’s almost impossible that it hasn’t been processed - if I follow the code through, any error should either result in the “no item bound” error, or, an error saying “no converter found” - or - it should update the value.

The log you’ve provided appears to be filtered by the NODE 33 - the “no converter found” error does not have this on the log, so I would check the log again…

Yes - you are completely right. the log was filtered by NODE 33.
I checked the logs and there it is:

`2017-01-23 18:07:34.450 [DEBUG] [WaveController$ZWaveSendThread:1430]- NODE 32: Response processed for callback id 126 after 35ms/4354ms.
2017-01-23 18:07:36.641 [DEBUG] [eController$ZWaveReceiveThread:1601]- Receive Message = 01 09 00 04 00 21 03 20 01 3C CD 
2017-01-23 18:07:36.642 [DEBUG] [eController$ZWaveReceiveThread:1517]- Receive queue ADD: Length=1
2017-01-23 18:07:36.642 [DEBUG] [b.z.i.protocol.ZWaveController:1244]- Receive queue TAKE: Length=0
2017-01-23 18:07:36.643 [DEBUG] [o.b.z.i.protocol.SerialMessage:255 ]- Assembled message buffer = 01 09 00 04 00 21 03 20 01 3C CD 
2017-01-23 18:07:36.643 [DEBUG] [b.z.i.protocol.ZWaveController:1245]- Process Message = 01 09 00 04 00 21 03 20 01 3C CD 
2017-01-23 18:07:36.644 [DEBUG] [b.z.i.protocol.ZWaveController:200 ]- Message: class = ApplicationCommandHandler (0x04), type = Request (0x00), payload = 00 21 03 20 01 3C , callbackid = 0
2017-01-23 18:07:36.644 [DEBUG] [ApplicationCommandMessageClass:41  ]- NODE 33: Application Command Request (ALIVE:DONE)
2017-01-23 18:07:36.645 [DEBUG] [ApplicationCommandMessageClass:146 ]- NODE 33: Incoming command class BASIC (0x20)
2017-01-23 18:07:36.645 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:73  ]- NODE 33: Received Basic Request
2017-01-23 18:07:36.645 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:77  ]- NODE 33: Basic Set sent to the controller will be processed as Basic Report
2017-01-23 18:07:36.645 [DEBUG] [z.i.p.c.ZWaveBasicCommandClass:106 ]- NODE 33: Basic report, value = 0x3C
2017-01-23 18:07:36.646 [DEBUG] [b.z.i.protocol.ZWaveController:668 ]- NODE 33: Notifying event listeners: ZWaveCommandClassValueEvent
2017-01-23 18:07:36.646 [DEBUG] [.z.internal.ZWaveActiveBinding:455 ]- ZwaveIncomingEvent
2017-01-23 18:07:36.646 [DEBUG] [.z.internal.ZWaveActiveBinding:472 ]- NODE 33: Got a value event from Z-Wave network, endpoint = 0, command class = BASIC, value = 60
2017-01-23 18:07:36.647 [WARN ] [.o.b.z.i.c.ZWaveBasicConverter:90  ]- No converter found for item = PSR04_Number, node = 33 endpoint = 0, ignoring event

It says No converter found for item = PSR04_Number, node = 33 endpoint = 0, ignoring event.
How can I define a converter?

You can’t. The converters are defined in the binding. There is a converter defined for integer to number type so I’m not sure why it’s not picked up as it should be the same as the dimmer converters…

That was my guess, too.
I defined another item:

Number	PSR04_Number	"PSR04 Pos [%d]"		{zwave="33:command=BASIC"}
Dimmer	PSR04_Dimmer	"PSR04 Pos [%d]"		{zwave="33:command=BASIC"}

and guess what:

2017-01-24 17:44:38 - PSR04_Dimmer state updated to 79
2017-01-24 17:44:44 - PSR04_Dimmer state updated to 51

You seem to have implemented the converter for the Dimmer, but not for the Number.

Hi chris.
Could you please add the missing channels for oh2?
Do you need any information?
thx!