The commonly available remote temperature/humidity sensors sold by Oregon Scientific and others to supply outside weather readings to their indoor weather stations all tend to broadcast their readings using a 433 MHz transmitter, sent with a protocol that was reverse-engineered long ago. They typically broadcast readings about once a minute (every 30-90 seconds, depending on design), and run for many months on (typically) a pair of AAA batteries. I've got three of them feeding data into my home-brewed weather display, that have been running continuously for the past year (with a few battery changes along the way).
I'm reading mine with a WxShield
board connected to an Arduino Uno (in turn connected to a Pi Zero W which massages the data into human readable format and publishes it to an in-house MQTT broker - several Pi's with connected touchscreens subscribe to the MQTT data and update their displays continuously, 24/7). The WxShield may no longer be available (I see "sold out" on the site but haven't inquired further). But there are a number of similar projects out there to receive the necessary 433MHz broadcasts on the Pi, if you want to go that way.
The advantage in this approach being, once you get the back-end set up, you can buy off-the-shelf sensors where the manufacturer has already paid some attention to accuracy, battery life, and custom-molded plastic housings that are at least somewhat suitable for outside use. And if they fail, you can order replacements from Amazon (or possibly buy them locally).
Though I have been looking into the possibility of making my own sensors, using ESP8266's (or similar), reading from Sensirion SHT31's (or the more accurate 35's, but Adafruit has a nice breakout board for the SHT31
, as well as for many other sensors
). The disadvantage is I'd likely have to run these off large Li-ion batteries (and swap them out weekly or monthly for recharging), but the upside is they could connect to my MQTT broker directly, over WiFi, and publish their readings with no middleman.