I use several different types of sensor because my “favorites” have changed over time.
The Xiaomi Motion Sensors are pretty great. If you’re in the US they are more expensive on Amazon ,$20ish, than they are from Chinese sources (gearbest, alibaba, banggood, etc), $10-15ish with 2-5 week delivery times.
These are pretty great with the xiaomi-aqara
integration. However, the integration is not as nice as others. You have to go FIND the sensor in the development pane once you pair it, and it only shows up after a Home Assistant restart. And if WiFi drops for any reason, the aqara hub can lose connection and the integration never seems to pick it back up unless you restart. Sensor names you supply in the App don’t make it to Home Assistant so that’s tedious too. If you add one sensor at a time, it’s pretty decent. I used it this way until I moved houses and wanted to readd every sensor. Then I realized adding 20 sensors one by one with Home Assistant restarts in between was going to be a pain, so I went a different route.
Zigbee2MQTT pairs pretty easily with these. Much easier than ZHA. However, in both cases, they are very picky devices when on a non-aqara-hub zigbee network. If you have other non-xiaomi devices on that same network, some don’t play well and leave the device unable to communicate.
Wyze Motion Sensors are my new go to motion sensor. They are really cheap ($5 US) and have great range (40 feet over and one floor up inside my house, 75 feet and through a brick wall outside my house). The ha-wyzesense integration isn’t the best, but it works. You pair one sensor at a time (a limit of the “hub”) and then you have to go find it in the development tab (no config flow or “devices”, just entities). If you need your dongle to be attached somewhere else in your house than you Home Assistant server, or if you need more than one dongle, then ha-gosenseapp works well via MQTT, despite the project not being updated in a year.
I also use some 433Mhz PIR sensors with OpenMQTTGateway. The range here is great. However, configuration of each sensor is a bit of the pain (watch MQTT, get the code, add an MQTT sensor manually to Home Assistant), and all the sensors I’ve found are, physically, quite large. They also only send a trigger event, there’s no on
and off
state. Low battery is undetectable on most, as well. So you either change them by the calendar, or wait until you notice they aren’t working any more and replace the batteries (about once a year). OpenMQTTGateway is a bit of a pain but, once working, it’s pretty stable. There are other options like Tasmota with either a DIY hub or a Sonoff RF Bridge.
I’ve also tried the ZWave based Zooz 4-in-1. But at $40 US it needs to be flawless to be worth 8x the cost of a Wyze Sensor, and it just isn’t. I couldn’t get it to report accurately or as often as I would like. I last tried over 2 years ago, though, so perhaps it or its competitors have gotten better. I’ve been considering giving them a shot again. Zooz products, especially the newer ones, are generally fantastic and very user focused. At $15 for a Xiaomi Motion and Light sensor, and $15 for a Xiaomi Temperature and Humidity sensor, this price point is only $10 away and quite a bit easier to set up than dealing with Xiaomi pairing. For rooms requiring more than one motion sensor, you could always use one of these and augment it with Wyze sensors for complete coverage.