Monday 23 March 2015

Motion Sensor Shootout

Good sensors are key to any automation system; motion sensors are possibly some of the most important.  I couldn’t find a good comparison of different motion sensors when I started building my system, so I’ve gone out and bought one (or two) of pretty much every sensor I could find, and this post shares my experiences with them.

I’m not confining this post to just Z Wave motion sensors - I’ve included the Wemo wifi motion sensor as well.  If there are any sensors I’ve not included, but which you think I should, drop me a comment and I’ll see what I can do.  All these sensors have been setup inside, generally in the top corner of a room.
Belkin Wemo Motion (top), Aeon Labs Multisensor (left), Fibaro Motion Sensor (middle),
Vision Motion Sensor (right).  Banana for scale.

Aeon Labs Multi Sensor (~£45)
Aeon Labs sensor showing the
mounting (next to it is an ADT
motion sensor not reviewed here)
Perhaps the most popular Z Wave motion sensor out there.  I originally purchased two of these, as the first motion sensors for my system - therefore they bore the brunt of the steep learning curve with Z Wave, and my review may be a little jaded by this experience.  As with most (all?) Z Wave motion sensors, the device is asleep and unreachable most of the time - to configure it it needs to be woken up.

It is quite big - easily the size of the base of a pint glass.  The supplied mounting bracket means it sits quite proud of the wall, and doesn’t offer as much flexibility as other sensors.  The sensor takes 6 AAA batteries, which it is supplied with.  When fully populated with batteries, the sensor is quite heavy - my initial attempts to attach it to the wall with double sided tape had me being woken up in the middle of the night by strange noises as it fell from the wall!

Alongside motion, the sensor also measures temperature, humidity and luminance.   There is a firmware bug where these values are wrong when read from the device.  You need to configure the sensor to push the values to your controller periodically - then these values are correct.  The motion sensor has low latency in reporting detected motion to my controller (a Raspberry Pi with the Aeon Labs Z Stick and my Awesomation software).  I have found the device is quite sensitive to positioning - I wrote a whole blog post about this!

Overall this is a capable sensor, which a good price for the feature set.  It is not my favourite though.

Another review worth mentioning is http://zwaveworld.com/2014/revs/923/

Fibaro Motion Sensor (~£50)
Fibaro Motion Sensor showing the
cool mounting system.
The second sensor I purchased, and what a beauty.  By far the smallest and least obtrusive of the sensors in this test, it also feels nicer in the hand - better quality plastics, better fit and finish etc.  The mounting system is also worth mentioning; a single screw, mounts virtually flush against the wall and has complete flexibility on angle.  By far the best here in that respect.

The sensor also measures temperature and luminance (no humidity like the Aeon Labs device).  By default it will send the controller reports when these values change by a configurable threshold, but it can be configured to report them regularly.

Z Wave range on this sensor is good - it is the furthest from the controller and still functions well.  The sensor also appears to have the best latency, although this is purely subjective as I haven’t measured it accurately.

Vision Z Wave Motion Sensor (~£34)
The cheapest sensor here.  No clever mounting system; it is not possible to adjust the position the sensor is pointing in.   The sensor is very light - in the box is a large piece of double sided tape to mount it to the wall, and hasn’t fallen off yet.  The device includes a temperature sensor like the other Z Wave sensors, but not humidity or luminance.   I haven’t yet got it to work consistently, but I suspect like most Z Wave devices it just needs to be ‘healed’ a few times.

Belkin Wemo Motion (£60, with a Wemo switch)
The only mains powered, WiFi based sensor here.  Much larger than the other sensors.  I was hoping this would mean it would be easy to integrate as the device is always powered on and listening, but I’ve found it inconsistently replied to UPnP scans.  When you do finally get registered for events (which are sent as a HTTP NOTIFY back to your application), I found they come thick and fast - constantly toggling between motion and no motion.  The failure detector work I previously blogged about responded quite nicely to this.  A bigger problem is the events stop coming before the subscription timeout - and I haven’t figured out why yet.

Having the motion sensor connected to the wall wart via a thin cable is better than having the sensor on the wall wart (and down near the floor), but it does feel a bit tacky and it is hard to hide the cable.  For a device like this, I would have thought Belkin could have made the sensor itself wirelessly connect to the wall wart.

Conclusion
My favourite of these motion sensors is the Fibaro Motion Sensor.  Looks good, works well and was easy to integrate with Awesomation.  I really wanted to like the Belkin Wemo sensor, but it has too many problems to recommend.

All these sensors are integrated with my Awesomation project, and are used to control devices ranging from Hue bulbs to Z Wave switches.  In the future, I’d like to have a play with the D-Link ‘mydlink Home’ Wi-Fi Motion Sensor but I couldn’t find any python libraries to talk to it.  I guess I’ll have to write my own.