Another alternative are the really cheap non-standard wireless sensors using some ISM band or another allowed band for short range devices, coupled with a generic USB-connected receiver. There are nice software defined radio solutions based on the RTL2832U DVB chips, and this is also packaged for OpenWrt: https://openwrt.org/packages/pkgdata/rtl_433
I am using a stick like this as a receiver (on a Debian PC, but it should work with a powerful enough OpenWrt router too) : https://www.ebay.com/p/11021080395
and a couple of "Digoo DG-R8H Outdoor Sensors". Sorry, the exact eBay item seems to have gone since I bought them in 2017. These are powered by two AAA batteries, which lasts a very long time. I am guessing 6-12 months. Haven't really counted. The sensors will transmit temperature+humidity measurements approximately once a minute.
The JSON dump from rtl_433 for one of these sensors looks like this:
"humidity" : 29,
"id" : 28,
"temperature_C" : 31.8,
"battery" : "LOW",
"time" : "2020-08-19 12:42:24",
"model" : "Nexus Temperature/Humidity",
"channel" : 3
As you can see: the temperature in this room is really high now, and it is about time I changed batteries. The sensors usually work for weeks or months after the status changes to "LOW", but the measurement frequency decreases, And the selected channel tends to drift. There are no high quality crystals here
BTW, wrt the channel: These sensors have a swicth to select one out of three "channels". Useful as a way to separate different sensors from each other. But as you can see they also have an "id", which can be used for the same purpose. I believe this is randomly generated on power-on, so it is stable at least until you cahnge batteries.
I also have a slightly different sensor, without the humidity sensor and the channel switch. This was bought as part of an indoor/outdoor thermometer with a wireless outdoor sensor. It shows up as
"id" : 182,
"battery" : "OK",
"time" : "2020-08-19 12:50:30",
"model" : "Nexus Temperature",
"channel" : 1,
"temperature_C" : 22
The beauty is that the indoor display unit and the rtl_433 receiver obviously both can receive these sensor data simultaneaously. They just listen for sensors transmitting. I assume the display is locked to that specific sensor ID. It appears to be fixed to 182.