Close

DS18B20 and php

A project log for Raspberry Pi Home Automation

Utilizing a Raspberry Pi and some cheap components to create a $150 home automation system.

illwillillwill 05/17/2015 at 21:190 Comments

As part of the cheap home automation project I am currently working on, I needed to get some temperature sensor info to my webserver. For the brain of my project I'll be using a Raspberry Pi.

I had ordered a 5pk of DS18B20 temperature sensors so i can visualize monthly temperatures and eventually control my thermostat. In order to get the sensors working on the Pi, I needed to do a few things:

First I had to setup the pi to add OneWire support. I started by editing the boot config file with nano by running

sudo nano /boot/config.txt
I scrolled to the bottom and added the following line:
dtoverlay=w1-gpio

then pressed ctrl+x and y to confirm, then

sudo nano /etc/modules
add the following 2 lines to the bottom:
w1-gpio

w1-therm

I again press ctrl+x and y to confirm , then shutdown my pi.

I then hooked my sensors up to a 4.7k pullup resistor using the following diagram:

I booted my Pi back up and tested to see that my sensors were detected by typing the following command into the terminal:

cd /sys/bus/w1/devices

ls

cd 28-xxxx (change this to match what serial number pops up)

cat w1_slave

if all goes well you shouldn't have seen any errors and it should have outputted some gibberish like this:

The temperature is shown in the last five digits on the second line. (You need to divide this number by 1000 to get the temperature in degrees Celcius).

You finally need to have Apache2 and PHP5 installed on your Pi.

I had looked online for php code that had outputted the temperature from sensors and found that everyone had hardcoded the sensor ID's in their code , since I wanted my automation to be as painless as possible, I wrote my own php script to automatically get all the sensor ID's and then convert the output to Celsius and Fahrenheit. I have this on https://github.com/xillwillx/DS18B20

Add temp.php to /var/www/ then visit http://127.0.0.1/temp.php

Page output should look similar to this:

Sensor ID#: 28-0214640d18ff = 26 °C / 79 °F

Sensor ID#: 28-02146409b9ff = 25 °C / 77 °F

And that's it! I will be added more posts as i finish each portion of my home automation project. My goal is trying to get it all done for less than $150.

Discussions