Zooz 4-in-1 sensor (aka, Vision ZP3111 Multisensor 4in1)

As an alternative to using templates, I created a separate binary_sensor and change its value with automations based on the numeric_state coming from the unit. About to put it into place, so if anyone sees anything obviously wrong, please let me know :slight_smile:

See code below. I happen to use MQTT for state, but you can do the same with an input_boolean or the variable library, or anything else:

configuration.yaml:

binary_sensor:
- platform: mqtt
  name: "PIRCloset State"
  state_topic: "hass/state/PIRCloset"
  payload_on: "on"
  payload_off: "off"
  device_class: motion

automations.yaml:

- alias: "Closet PIR - Off"
  trigger:
    platform: numeric_state
    entity_id: sensor.vision_zp3111_multisensor_4in1_alarm_level
    below: 10
    for:
      seconds: 10
  action:
   - service: mqtt.publish
     data:
       topic: hass/state/PIRCloset
       payload: 'off'
       retain: 'true'      
- alias: "Closet PIR - On"
  trigger:
    platform: numeric_state
    entity_id: sensor.vision_zp3111_multisensor_4in1_alarm_level
    above: 200
  condition:
    condition: numeric_state
    entity_id: sensor.vision_zp3111_multisensor_4in1_burglar
    below: 9
    above: 7
  action:
   - service: mqtt.publish
     data:
       topic: hass/state/PIRCloset
       payload: 'on'
       retain: 'true'          

(Note: for some reason, the forum software was having a conniption with the dashes in the above code, so I had to hand edit it to make indentation work - but I could have missed something so be careful if copying it)

ETA: Is there a less stupid way to check if burglar level is 8? numeric_state doesn’t seem to have a “equals”, at least not that I can find in the docs… I know I can use a template, but seems there should be a simpler way…

I thought I would bump this thread because of the headaches that I had with the sensor. My first attempt was unsuccessful. Only part of the entities showed up and only the Luminance entity worked. Even going trough the exclusion process was unsuccessful. My suggestion is to keep it awake during the inclusion and exclusion process. I discovered that as long as I pressed the z-wave button every 15 seconds or so, I was able to have success. On my second attempt I got everything to work. Also, the short awake period is a problem with setting the seven parameters. What I had to do is press the z-wave button once and wait for the blue flash from the LED. Then I would immediately execute the update. I do not see any way to avoid a secondary operation to get a ‘motion’ channel. I followed the sensor config from ‘mconnolly’ except that I used ‘burglar’. It worked the first time and by including it in the ‘motion’ class, H.A. puts up the motion icon and the ‘detected’/‘clear’ states.

1 Like

Hi Phillilp, I’m new and don’t quite understand how to do what you indicated above. Can you provide a code snippet to help me out? Thanks!

Hello there GrizzlyAK. You must be from Florida. :wink: After getting ALL of the channels configured, this is the code I used. It is essentially the same as Mark Connolly provided on 5/2018. By stating the device class as ‘motion’, HA automatically displays a motion icon and reports the states as ‘Detected’ and ‘Clear’.

binary_sensor:
  - platform: template
    sensors:
      motion_crawlspace:
        friendly_name: 'MotionCS'
        device_class: motion
        value_template: "{{states('sensor.zooz_zse40_4_in_1_sensor_burglar')|float > 0}}"
3 Likes

Cool! Thanks Phillip!

I’ve discovered something interesting about this sensor (Zooz ZSE40), and posted a question about it elsewhere, but since it is the topic of this discussion, wanted to ask if any other owners have experienced it. I use the sensor to trigger a counter increment, to keep track of how many times the sensor has detected motion. The sensor is in a very confined space, so there should be no false positives, and I haven’t really seen any. However, whenever I restart HA, when the zwave is doing its query stage, this particular sensor sends two to three Burglar=8 notifications in a row during that startup, which hoses my counter. When using this as a sensor alone, this wouldn’t be a problem, but it has me curious as to WHY this is happening. Zooz support has no idea, and I wonder if it is happening in the HA integration.

Would anyone who owns one of these be willing to check your OZW_Log.txt file the next time they restart HA and see if you can find a couple of Burglar=8 notifications from the node within minutes after startup and let me know?

Hi GrizzlyAK. I checked my log just before a restart. The first entry for burglar was approximately an hour after start. I reset HA and checked about a half hour later. Nothing. About two and a half hours later there was an event for burglar with an event value of 254 and status of 255. Same as previous. In my case, I believe the burglar event is showing up at a sensor wakeup. shrug

Thanks Phillip. Zooz support didn’t understand it either. What I did as a workaround was to put a condition on the automation that incremented the counter as follows:

    condition:
      condition: template
      value_template: '{{is_state("input_boolean.zwave_starting_ib","off") }}'

and I have an input boolean that I set to ON when a zwave.network_start event fires and another that turns it OFF when either a zwave.network_complete OR zwave.network_complete_some_dead event fires. This basically prevents the random burglar=8 that were appearing during zwave startup from hosing my counter.

I hate to revive this old topic I wish I could get this far, I recently reinstalled HA from scratch on my VM running through Virtual Boz. on a mac mini I have three of these devices which were really great but in the rebuild only 1 will join. Thoughy maybe some of you guys may have an insight

thks

I couldn’t get motion to fire with zwave-js-ui (zwave2mqtt) until I re-paired it with security. I have the Monoprice version of this same exact sensor. I had to force to it to pair with security (S0_Legacy) and then the motion sensor worked.