My goal of this project was to track the temperature in different rooms in my house using multiple temperature sensors to send the data back to a raspberry pi and have the data stored historically so I could display it in charts and send alerts. As a follow up to my wireless power outlet project, I wanted to use the 433mhz receiver. I came across some wireless temperature sensors that work over 433mhz. These temperature sensors are great because they are cheap, well built, battery powered and outdoor resistant. I was surprised at how difficult it is to decode the signal coming from the temperature sensors.
After a lot of searching, I came across a great post on reverse engineering temperature sensors. The code in this article helped tremendously. I was able to get the temperature readings for the AcuRite 606TX Wireless Temperature Sensor. The next part was to store the temperature readings. I decided to use a sqlite database since it would be easy to use in php. Finally, I wrote a simple php file to read the sqlite database and display the temperature readings in a line chart.
So with everything working, I ran into a major problem that I haven’t been able to resolve. Currently, the receiver only works from at a max of 10 feet. Obviously, this will not work. I’ve tried different receivers and antennas with no success. I’m hoping someone will have a suggestion on boosting the receiver strength so it will work over 150 feet.
Updated 3/4/2018: After a suggestion to switch to a 433mhz Superheterodyne Receiver, I have been able to successfully receive the signal around 100 ft away. Thanks for everyone’s help and suggestions! I’ve updated the guide to link to the correct parts.
- Connect wires to Rf receiver chip(wiring diagram). See this article for more info on gpio pins.
- Install Rasbian on Raspberry Pi
- Install Wiring Pi
- Install Apache and PHP on the Raspberry Pi
- Install php sqlite3: sudo apt-get install php5-sqlite
- Clone web files
- Install git: sudo apt-get install git
- Then type: sudo git clone https://github.com/timleland/temperaturesensor.git /var/www/html/temperaturesensor
- You should now be able to capture the temperature readings from the command line.
- Change to the directory: cd /var/www/html/temperaturesensor
- Then type: sudo ./capture
- Browse to Raspberry Pi ip address: http://<your-pi-ip>/temperaturesensor/
- You should see a graph with the temperature readings
- AcuRite 606TX sends updates every 30 seconds
- Gpio 21/27 is wiringPi pin 2. To use a different pin, edit this line.
- Command to compile capture.cpp: sudo c++ -std=c++0x capture.cpp -o capture -lwiringPi -lsqlite3
Let me know if you have any questions in the comments below.
Thanks for reading. Make sure you follow me on Twitter to stay up to date on the progress of my side projects T.LY, Weather Extension, and Link Shortener Extension. If you are interested in the tech I use daily, check out my uses page.