Philio output explanation

Anyone using philio sensors? I have some philio 4-in-1 sensor and I’m trying to figure out the PIR output. But the only output I understand is the door open/close resp. 22/23 values.

Any explanation or examples for HASS regarding the PIR output is very appreciated?

Anyone uses this zwave sensor: philio pst-02-a ?

I can’t get PIR working. :frowning2:

I have this sensor and I have too been fighting with it to get it to work.

I tried changing the output to binary report but that did not help.

However you need to change the value of configure entry 7 “Customer Function”. Bit 1 (when counting from 0) needs to be set. In my case, I changed the default value 4 to 6. This will make the sensor send an explicit new value when the PIR sensor turns off.

With this in place you will get information from the magnet sensor as “Access control”, with value 23 meaning door closed, and 22 meaning door open.

“Burglar” will show 8 when PIR motion is detected, 3 when the tamper switch is activated, and 254 when PIR/tamper is off.

Note that the off command seems to be sent just after a hardcoded amount of time. If the tamper alert has been triggered, it will show as off (254) after a while even though the switch is still in tamper/test mode. If you care about security you should probably count a triggered tamper alert as never disappearing until explicitly cleared, and not trust any other values from this sensor until it has been checked.

I have added the following virtual binary sensors to make sense of this:

binary_sensor:
  - platform: template
    sensors:

      door_magnet:
        value_template: '{{ is_state("sensor.doorsensor_access_control_6_9", "23") }}'
        entity_id: sensor.doorsensor_access_control_6_9

      door_motion:
        value_template: '{{ is_state("sensor.doorsensor_burglar_6_10", "8") }}'
        entity_id: sensor.doorsensor_burglar_6_10

      door_tamper:
        value_template: '{{ is_state("sensor.doorsensor_burglar_6_10", "3") }}'
        entity_id: sensor.doorsensor_burglar_6_10
6 Likes

Dear Magicus,
could you do me a favor and write me shortly what configuration you’ve set in the Z-wave panel?
I’m especially interested in the Operation Mode and the Multi-Sensor function switch node config options.

Thanks in advance!
Regards:
Botond

Thank you very much for your help. I thought I’d have to get other sensors. Followed your instructions and all works perfect.

Hi @magicus
I am also trying to figure this out for my Philio 3 in 1 temp, luminance and motion sensor. My motion detector doesn’t report motion, although the other two sensors work fine. Unfortunately I don’t fully understand your fix and how I can change the configuration of the sensor that you mention. Could you provide some further info?

Thank you!
Tomas

Hi everyone,

I’m also stuck trying to configure the philio 4in1.

I understand that @magicus doesnt have the sensor in binary mode. This way all those values are updated but imho it seems a bit unreliable because the same sensor is update for pir and door. So it’s hard to know when the specific event was cleared.

I have my sensor in binary report (5. Operation mode: 8, 6.multifunction switch: 0, 7.customer function 22) and home assistant created one binary sensor which is working fine for pir.

However the opening sensor is missing. My understanding looking at zwcfg*.xml is that there’s a binary sensor section with multiple sensormap entries. Shouldn’t home assistant created a binary sensor for each one?

Looking at openzwave logs i see the sensorbinary reports coming for pir and opening.

Opening example: (not updated anywhere in homeassistant)
09:10:04.664 Info, Node010, Received SensorBinary report: Sensor:10 State=On

Motion/pir example: (updates binary_sensor)
2017-10-01 09:10:21.005 Info, Node010, Received SensorBinary report: Sensor:12 State=Off

Should we open a bug to get this fixed or is it just a conifguration issue? I’m a bit of a noob and although I’ve already spent a lot of time trying to figure it out I’m still not sure. If any dev could chime in it would be great!

Cheers

A little more info from the logs I have:

 2017-10-02 16:58:20.424 Info, Node010, Received SensorBinary report: Sensor:10 State=Off
 2017-10-02 16:58:20.424 Detail, Node010, Refreshed Value: old value=true, new value=false, type=bool
 2017-10-02 16:58:20.424 Detail, Node010, Changes to this value are not verified
 2017-10-02 16:58:20.424 Detail, Node010, Notification: ValueChanged

 SIGNAL ***** ValueChanged
 2017-10-02 16:58:20.429 Warning, Exception: Manager.cpp:2499 - 102 - ValueID passed to GetValueFloatPrecision is not a Decimal Value
 2017-10-02 16:58:20.429 Warning, Exception: Manager.cpp:2499 - 102 - ValueID passed to GetValueFloatPrecision is not a Decimal Value
 {'command_class': 48,
  'data': False,
  'data_as_string': False,
  'data_items': 'Read only',
  'genre': 'User',
  'help': '',
  'home_id': xxxxx,
  'id_on_network': 'xxxx.10.30.1.0',
  'index': 0,
  'instance': 1,
  'is_polled': False,
  'is_read_only': True,
  'is_set': True,
  'is_write_only': False,
  'kvals': {},
  'label': 'Sensor',
  'last_update': None,
  'max': 0,
  'min': 0,
  'network': <openzwave.network.ZWaveNetwork object at 0x7f00f417d2b0>,
  'node': <openzwave.node.ZWaveNode object at 0x7f00a88d5080>,
  'object_id': 72057594210680832,
  'outdated': True,
  'parent_id': 10,
  'poll_intensity': 0,
  'precision': None,
  'type': 'Bool',
  'units': '',
  'use_cache': True,
  'value_id': 72057594210680832}


 SIGNAL ***** Value
 2017-10-02 16:58:28.213 Info, Node010, Received SensorBinary report: Sensor:12 State=Off
 2017-10-02 16:58:28.213 Detail, Node010, Refreshed Value: old value=false, new value=false, type=bool
 2017-10-02 16:58:28.213 Detail, Node010, Changes to this value are not verified
 2017-10-02 16:58:28.214 Detail, Node010, Notification: ValueChanged

 SIGNAL ***** ValueChanged
 2017-10-02 16:58:28.218 Warning, Exception: Manager.cpp:2499 - 102 - ValueID passed to GetValueFloatPrecision is not a Decimal Value
 2017-10-02 16:58:28.218 Warning, Exception: Manager.cpp:2499 - 102 - ValueID passed to GetValueFloatPrecision is not a Decimal Value
 {'command_class': 48,
  'data': False,
  'data_as_string': False,
  'data_items': 'Read only',
  'genre': 'User',
  'help': '',
  'home_id': xxxxx,
  'id_on_network': 'xxxx.10.30.1.0',
  'index': 0,
  'instance': 1,
  'is_polled': False,
  'is_read_only': True,
  'is_set': True,
  'is_write_only': False,
  'kvals': {},
  'label': 'Sensor',
  'last_update': None,
  'max': 0,
  'min': 0,
  'network': <openzwave.network.ZWaveNetwork object at 0x7f00f417d2b0>,
  'node': <openzwave.node.ZWaveNode object at 0x7f00a88d5080>,
  'object_id': 72057594210680832,
  'outdated': True,
  'parent_id': 10,
  'poll_intensity': 0,
  'precision': None,
  'type': 'Bool',
  'units': '',
  'use_cache': True,
  'value_id': 72057594210680832}


 SIGNAL ***** Value

I have the PHILIO 4 in 1 multisensor and I’m using it in Home Assistant 0.53.

Here are the sensors I have identified so far.
(I have renamed my node to “kitchen”).

Motion detector
binary_sensor.kitchen_sensor

Luminance (reporting in %, don’t know why):
sensor.kitchen_luminance

Temperature:
sensor.kitchen_temperature

I have not found any way to:

  • Arm or disarm a unit.
  • Tell if a door/window is open.

These are the rest of the sensors you will find in “states”.
I don’t know what they’re used for:

sensor.kitchen_alarm_level
sensor.kitchen_alarm_type
sensor.kitchen_burglar
sensor.kitchen_sourcenodeid

When first set up you should see the following: (renamed the node entrance)

sensor.entrance_node_access_control
sensor.entrance_node_alarm_level
sensor.entrance_node_alarm_type
sensor.entrance_node_burglar
sensor.entrance_node_dew_point
sensor.entrance_node_general
sensor.entrance_node_luminance
sensor.entrance_node_sourcenodeid
sensor.entrance_node_temperature

Access control is the door/window reading
Burglar is motion reading

You van the create your binary sensors with the template sensor

Hello @juan11perez and thanks for your reply.

Just to make sure we’re talking about the same device: https://www.uk-automation.co.uk/z-wave-multisensor-4-in-1-sensor-by-philio-tech/

Same product

1 Like

Hi everyone, sorry for not being so active here. I’ll try again to describe what I did.

First, I did not get binary mode working. On the other hand, using notification mode, I get full functionality, so I don’t see the problem.

Second, the sensor by default does NOT send an “off” signal after PIR detection has been raised. This does not play well with HA. This behavior is configurable and must be fixed.

Fix both of these by setting config option “7: Customer Function” to 2. (Or possibly 6, to enable “super PIR” whatever that is. For my own part, the PIR was too sensitive so I turned it off.)

Note that setting configuration options on battery powered z-wave options is no game. :frowning: They can only be pushed to the device once per 24 hours or so, when it is in it’s short “awake” mode. Until then, they are just queued by the z-wave driver, so the change does not “take”. Fixing this really drove me mad. I resorted to shutting down HA, starting up the ozwcp (control panel), and removing the sensor from it’s housing. This triggers some kind of “2 minutes awake” mode or something like that, which increases the chance that the config will be sent immediately. I repeated the config change a couple of times in ozwcp, and restarted the control panel and re-checked, until it claimed that the new value was indeed “2”. Then it seemed to have stuck properly, and ever since the unit has worked.

Once this configuration was in place, I tested out how it reacted to the various sensors:

  • magnet (open/close)
  • PIR (motion)
  • tamper (anti-theft, cover being opened)

I captured these behaviors in the following virtual sensors:

binary_sensor:
  - platform: template
    sensors:
      door_open:
        friendly_name: 'Door open'
        value_template: '{{ is_state("sensor.doorsensor_access_control", "22") }}'
        device_class: opening
        entity_id: sensor.doorsensor_access_control

      door_motion:
        friendly_name: 'Door motion detected'
        value_template: '{{ is_state("sensor.doorsensor_burglar", "8") }}'
        device_class: motion
        entity_id: sensor.doorsensor_burglar

      door_tamper:
        friendly_name: 'Door tamper alert'
        value_template: '{{ is_state("sensor.doorsensor_burglar", "3") }}'
        device_class: safety
        entity_id: sensor.doorsensor_burglar

Here’s full data on my unit, as retrieved from the log when pressing “PRINT NODE” in the Z-Wave Node Management in HA: https://gist.github.com/magicus/c2d1f76a580ff4b20c4d9b86bb4af0b6

And here are the numeric values for all my configuration options. Most are default, some are modified. I believe the only changes I made that are needed for functionality is the one in 7.

config 2: 255
config 3: 12
config 4: 99
config 5: 0
config 6: 4
config 7: 2
config 8: 3
config 9: 4
config 10: 12
config 11: 12
config 12: 12
config 13: 12
config 20: 30
config 21: 1
config 22: 10

1 Like

Hello @magicus and thanks a lot for your thorough explanation in this issue. That will sure help a lot.

I still have some questions in order to be able to repeat the procedure you’re describing. Perhaps this is documented somewhere.

In Home Assistant 0.52 and above, using the built in Z-wave control panel:

  1. How do you set the notification mode, binary mode and so on?

  2. How did you get the information you linked to above?

  3. …and how do you use that information.

  4. In your code example above, you are using the number 22 in this code:
    value_template: '{{ is_state("sensor.doorsensor_access_control", "22") }}'
    Where did you get the number “22”?

i am asking this in order to better understand and perhaps to help others in the future.

I can answer a couple of those questions.

For the first:

  • Go to configuration - Z-Wave
  • Scroll down to Z-Wave node management.
  • Select your node
  • Now scroll to node config options
  • Select the config parameter from the drop down list
  • Enter the new value
  • You may now need to wake the device - this varies from device to device, but for the Philio, remove the cover and press the tamper switch to wake it for 10 seconds.
  • Press set config parameter.

The values are in the manual that should have come with the sensor.

For your last question, this is just from the spec for Z-Wave:

zwave-spec

So hex 16 - 22 in decimal - is just the code for the door being open.

I’m still having trouble myself. I’ve managed to change the config parameters but my sensor still seems to be stuck on “8” (i.e. motion detected). I’m going to have a proper look at it over the weekend.

i magicus can i ask you a question… i follow your instruction but if i set the parameter 7 to 2 work fine the pir sensor but don’t work door sensor… any idea thanks