Apache Web Server ve DS18B20 ile Temperature Monitor

Kurulum işlemi tamamlandığında son yaptığınız komutla birlikte pi klasörüne www kısayolu eklenecektir. İçerisinde demo web sayfası bulunmaktadır index.html. Ben bu sayfayı değiştirmeyeceğim başka bir html hazırlayacağım.

Şimdi ise raspi-config den 1-wire donanımını açalım

  • sudo raspi-config

DS18B20 sıcaklık sensörümüzü aşağıdaki gibi GPIO4 e bağlantısını yapıp Raspberry e bağlayınız.

Bağlantıyı yaptıktan sonra klasörden DS18B20 nin bağlı olup olmadığına bakalım

  • ls /sys/devices/w1_bus_master1

çıkan listede 28-…. bir kod var ise DS nin rom kodudur ve bağlanmıştır.

 

 

Manuel olarak okuma yaptıralım.

  • cat /sys/devices/w1_bus_master1/28-xxxxxxxxx/w1_slave

Web server ve DS18B20 hazır, gelelim PHP ile yapacağımız sayfaya. İlk önce PHP ile yukarıda açtığımız dosyayı okuyup içerisinden sıcaklık değerini pars edip 1000 e böldük mü istediğimiz ondalıklı değeri yazdıracağız. Sudo nano ile ds_temp.php dosyamızı hazırlayalım.

  • sudo nano /home/pi/www/html/ds_temp.php

içerisine aşağıdaki kodu yazalım.

<?php
$dosya_yol = ‘/sys/devices/w1_bus_master1/28-xxxxxxxxx/w1_slave’;
$dosya = fopen($dosya_yol, ‘r’);
$icerik = fread($dosya, filesize($dosya_yol));
$temp = explode(‘=’, $icerik);
$temp = number_format($temp[2]/ 1000, 3, ‘,’, ”);
echo $temp . ” °C”;
fclose($dosya);
?>
Tarayıcımızdan bu sayfayı açtığımızda sıcaklık değerini ekranda görmüş olacağız. Tabi bu hali çok basit ve sade oldu. Biz bunu bir html sayfası içinde çağırsak ve bu işlem sürekli olursa birazda görsellik katsak dahada güzel olacak.

 

Bunun için ajax kullanacağız. html sayfasında bir ID tanımlayıp oraya php sayfasını her saniye yazdırdık mı istediğimiz özellik olacak. Aşağıda HTML kodunu veriyorum. Sudo nano ile temp.html olarak kaydedelim.

 

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>

<head>
<meta content=”tr” http-equiv=”Content-Language” />
<meta content=”text/html; charset=utf-8″ http-equiv=”Content-Type” />
<title>RaspberryPi ve DS18B20 ile Termometre</title>

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js”>
</script>

<script>
$(document).ready(function(){
setInterval(function(){
$(“#screen”).load(‘ds_temp.php’)
}, 1000);
});
</script>

<style type=”text/css”>
.auto-style2 {
background-image: url(‘http://roboturka.com/wp-content/uploads/bulut.png’);
}
.auto-style3 {
text-align: center;
font-family: Tahoma;
font-size: x-large;
color: #F1DFDF;
}
.auto-style4 {
text-align: center;
font-family: Tahoma;
font-size: xx-large;
color: #F1DFDF;
}
</style>

</head>

<body>

<table class=”auto-style2″ style=”width: 388px; height: 324px”>
<tr>
<td class=”auto-style3″ style=”height: 31px” valign=”top”><strong>
RaspberryPi ve<br />
DS18B20 ile Termometre</strong></td>
</tr>
<tr>
<td class=”auto-style4″ style=”height: 31px” valign=”bottom”><strong>
<div id = “screen”></strong></div></td>

</tr>
</table>

</body>

</html>

 

Şimdi temp.html sayfasını açtığımızda her 1 saniyede bir sensör okunup ekran güncellenecektir.

İsterseniz modeminizden port yönlendirmesi yapıp sıcaklık değerini dışarıdan da takip edebilirsiniz.

Bir sonraki yazımda görüşmek üzere;

Kolay gelsin.

2 thoughts on “Apache Web Server ve DS18B20 ile Temperature Monitor

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.