phpoc_man
Published © GPL3+

Get Temperature From Sensor and Store on PC in CSV Files

Getting temperature from sensor and store on PC via FTP.

BeginnerFull instructions provided1,110
Get Temperature From Sensor and Store on PC in CSV Files

Things used in this project

Hardware components

PHPoC Blue
PHPoC Blue
×1
DS18B20 Temperature Sensor
DIYables DS18B20 Temperature Sensor
×1
Jumper Wires
DIYables Jumper Wires
×1
Starter Kit
DIYables Starter Kit
×1

Software apps and online services

FileZilla FTP Server

Story

Read more

Schematics

phpoc_sensor_wiring_DmWuzt9Avx.png

Code

task0.php

PHP
This is the main code
<?php
if(_SERVER("REQUEST_METHOD"))
	exit; // avoid php execution via http request

include_once "lib/sd_340.php";
include_once "lib/vn_ftp.php";
include_once "lib/DS18B20.php";

define ("THRES_TIMER_ID", 1);

// change directory, makes directory if it doesn't exist
function change_dir($dir)
{
	$retb = ftp_chdir($dir);
	if($retb == TRUE) return TRUE;

	$dir_list = array();
	$dir_list = explode("/", $dir, 10);
	$cnt = count($dir_list);

	// move to root
	$retb = ftp_chdir("/");
	if($retb == FALSE) return FALSE;

	for($i = 0; $i < $cnt; $i++)
	{
		if($dir_list[$i] == "") continue;

		$retb = ftp_chdir($dir_list[$i]);
		if($retb == TRUE) continue;

		$ret = ftp_mkdir($dir_list[$i]);
		if($ret === FALSE) return FALSE;
		else
		{
			$retb = ftp_chdir($dir_list[$i]);
			if($retb == TRUE) continue;
			else return FALSE;
		}
	}

	return TRUE;
}

function loop_session()
{
	global $ftp_state;
	global $ftp_server, $ftp_port;
	global $ftp_id, $ftp_pass;
	global $ftp_cur_dir;

	if($ftp_state == 0)
	{
		$retb = ftp_connect($ftp_server, $ftp_port, 10);
		if($retb == FALSE)
		{
			echo "ftp - failed to connect to the FTP server.\r\n";
			return;
		}
		else $ftp_state = 1;
	}
	if($ftp_state == 1)
	{
		$retb = ftp_login($ftp_id, $ftp_pass);
		$ftp_cur_dir = "";
		if($retb == FALSE)
		{
			echo "ftp - login failed.\r\n";
			ftp_close();
			$ftp_state = 0;
		}

		$ftp_state = 2;
	}

	$tcp_state = ftp_cmd_session_state(); // checking ftp tcp session
	if($tcp_state == 0) $ftp_state = 0;
}

function loop_temperature()
{
	global $ftp_cur_dir, $ftp_cur_fn, $ftp_root_dir;
	global $update_interval;

	$timer = st_free_get_count(THRES_TIMER_ID);

	//if($timer < $update_interval)
		//return;

	// read temperature from sensor
	DS18B20_convert_t();
	$temp = DS18B20_read_temp();
	$temp = sprintf("%.01f", $temp);
	echo "$temp";

	$curr_time = date("Ymd-His");
	$today = substr($curr_time, 0, 8);
	if($today !== $ftp_cur_dir)
	{
		change_dir("/$ftp_root_dir");
		ftp_mkdir($today);
		change_dir("/$ftp_root_dir/$today");
		$ftp_cur_dir = $today;
	}

	$ftp_cur_fn = substr($curr_time, 0, 11) . '.csv';
	ftp_append($ftp_cur_fn, "$temp,");
	st_free_setup(THRES_TIMER_ID, "sec"); // reset timer
}

$ftp_server   = "192.168.0.3";
$ftp_port     = 1475;
$ftp_id       = "phpoc_device_2";
$ftp_pass     = "ilovephpoc";
$ftp_root_dir = "";
$ftp_state = 0;

$ftp_cur_fn = "";  // current filename
$ftp_cur_dir = ""; // current directory

$update_interval = 2; // 2 seconds

st_free_setup(THRES_TIMER_ID, "sec");
DS18B20_setup(1, 0);

while(1)
{
	loop_session();
	loop_temperature();
}

?>

phpoc-templerature-ftp.zip

PHP
This is the full source code with library
No preview (download only).

Credits

phpoc_man
62 projects • 408 followers
Contact

Comments

Please log in or sign up to comment.