Part1: Environment Setup

Part2: Monitering Temperature with Xtrinsic Sensor

Part3: Capture sensor data to database 

Part4: Remote datalogger   <-- You are here


Okay most of the core activity related to this blog series has been done .


Lets try some php + mysql stuff to display our data collected earlier.


In blog 1 we have setup the apache,mysql,php.

so we got a server, database and webpage development tool ready .


We will create file to store currently read temperature:

# touch /var/www/sensor.txt


Now something should update this file with current temperature.


modifying xtrinsic_mysql.c by adding below code.


xtrinsic_mysql.c  -> xtrinsic_current_temp.c

//define a char buffer

char buf1[200];


//capture current temp to a file

sprintf(buf1, "echo %d > /var/www/sensor.txt",t_m);


Complete code available in attachment :


Compiling and execute the above code :

# gcc xtrinsic_current_temp.c -o  xtrinsic_current_temp  -std=c99 $(mysql_config --cflags --libs)

# ./xtrinsic_current_temp

Next we will try to pull data from sensor.txt to our webpage

will use php to display current temperature.


<meta http-equiv='refresh' content='1;url='current_temper.php'>

if (array_key_exists("sensor",$_GET )) {
    $temper = $_GET["sensor"];
    fwrite($file, $temper);
    echo $temper;
} else {
    $temper = file_get_contents("sensor.txt");
    echo $temper;


In Line2 we have added a 1s refresh to get automatic  temperature updates.


we will run in browser.





so the current temperature is getting updated.


You need to download the "current_temper.php" and "line_graph" and "pChart.tar" to "/var/www" directory.

all available in the attachments.


pChart is a php library used to create graphs,charts and pictures and other cool stuff.


Let plot a line graph with temperature and time in Vertical & Horizontal axis.




define("PCHART_PATH", "/var/www/pChart");
set_include_path(get_include_path() . PATH_SEPARATOR . PCHART_PATH);
require_once "class/pDraw.class.php";
require_once "class/pImage.class.php";
require_once "class/pData.class.php";

// Connect to MySQL
$db = mysql_connect( 'localhost', 'root', 'root' );
if ( !$db ) {
  die( 'Could not connect: ' . mysql_error() );

// Select the data base
$db = mysql_select_db( 'db1', $db );
if ( !$db ) {
  die ( 'Error selecting database \'test\' : ' . mysql_error() );

// Fetch the data
$query = "SELECT temperature,time FROM sensordata";
#$query = SELECT * FROM sensordata WHERE time1 >= NOW() - INTERVAL 20 MINUTE;

$result = mysql_query( $query );

// All good?
if ( !$result ) {
  // Nope
  $message  = 'Invalid query: ' . mysql_error() . "\n";
  $message .= 'Whole query: ' . $query;
  die( $message );

$myData = new pData();

// Print out rows
while ( $row = mysql_fetch_array( $result ) ) {
$temperature = $row["temperature"];
$time        = $row["time"];



#$myData->setSerieOnAxis("temperature", 1);
$myData->setAxisUnit(0," C");

// specify colors
$myData->setPalette("temperature",array("R" => 240, "G" => 16, "B" => 16, "Alpha" => 100));

// define image object
$myGraph = new pImage(900,400, $myData);

//create a rectangle box
$box_Settings = array("R"=>225, "G"=>227, "B"=>226, "Dash"=>1, "DashR"=>190, "DashG"=>203, "DashB"=>107);

"FontName" => PCHART_PATH . "/fonts/verdana.ttf",
"FontSize" => 5));

$myGraph->drawText(350,47," Riotboard Temperature Graph",array("FontSize"=>20,"Align"=>TEXT_ALIGN_BOTTOMMIDDLE));

// output line chart
header("Content-Type: image/png");

// Close the connection




lets try in browser to get some updates:



you will something as below.


So we got a nice graph .

The temperature can be accessed remotely from any browser, for this Riotboard has to be given a public IP and accessed over internet.

Incase you get some thing like this



we need a php gd library (graphics library for php)

# sudo apt-get install php5-gd


Restart apache to load newly installed modules.

# /etc/init.d/apache2 restart          


# apache2ctl restart



with this we got a simple temperature monitoring system.