php try new Temperature get devices list devices t- getDeviceList get

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
try {
$t = new Temperature();
// get devices list
$devices = $t->getDeviceList();
// get data from first device
$temperature = $t->getData($devices[0]);
// add row to spreadsheet
$row = array(
'datetime'=>date("Y-m-d H:i:s"),
'temperature'=>$temperature
);
if( !is_file($devices)) {
$fp = fopen($devices, "w"); // ("r" - считывать "w" - создавать "a" - добавлять к тексту)
}
else {
$fp = fopen($devices, "a"); // ("r" - считывать "w" - создавать "a" - добавлять к тексту)
};
fwrite($fp, $row); // записываем json в наш файл
fclose ($fp); // закрываем файл
// $service->insertRow($row, GDATA_SPREADSHEET_KEY, GDATA_WORKSHEET_ID);
} catch (Exception $e) {
die( $e->getMessage() );
}
/**
* DS18B20 Raspberry Pi
*
* @author Eugene Pikalov
*
*/
class Temperature
{
private $_devicePath='/sys/bus/w1/devices/w1_bus_master1/';
public function getDeviceList()
{
$filename = $this->_devicePath.'w1_master_slaves';
if(file_exists($filename) and $fp = fopen($filename, 'r'))
{
$list = fread($fp, 100);
if($list)
{
$list = trim($list);
return explode("\n", $list);
}
}
else
{
throw Exception('Device list no available');
}
}
public function getData($deviceId)
{
$filename = $this->_devicePath.'/'.$deviceId.'/'.'w1_slave';
if(file_exists($filename) and $fp = fopen($filename, 'r'))
{
$data = fread($fp, 100);
if($data)
{
/**
6f 01 4b 46 7f ff 01 10 67 : crc=67 YES
6f 01 4b 46 7f ff 01 10 67 t=22937
*/
if(preg_match("'t=(\d+)'", $data, $result))
{
return ($result[1]/1000);
}
else
{
throw Exception("Device $deviceId data error");
}
}
}
else
{
throw Exception("Device $deviceId no available");
}
}
}