Permalink
Browse files

Merge pull request #3 from sergejey/alpha

Alpha
  • Loading branch information...
sergejey committed Jan 28, 2019
2 parents db075bc + 34c5c58 commit 3ceff4df114f740b00749a02b2cad4cea6b8e889
@@ -18,7 +18,13 @@
if ($megad->config['API_DEBUG']) {
DebMes("Request: ".$_SERVER['REQUEST_URI']. " (".$_SERVER['REMOTE_ADDR'].")",'megad');
}
$megad->processRequest();
$result = $megad->processRequest();
if ($result!='') {
echo $result;
}
if ($megad->config['API_DEBUG']) {
DebMes("Result: ".$result,'megad');
}
$db->Disconnect();
@@ -0,0 +1,19 @@
<?
/*
* Copyright (c) 2016, Andrey_B
* http://ab-log.ru
* Подробнее см. LICENSE.txt или http://www.gnu.org/licenses/
*/
/*
Скрипт для работы с датчиком атмосферного давления BMP180
Использует драйвер BMP180 и библиотеку I2C-PHP
*/
define("SCL", "8");
define("SDA", "9");
define("MD", "http://192.168.0.14/sec/?");
// Вариант реализации I2C: 1 - полностью программный; 2 - частично аппаратный (прошивка 3.43beta1 и выше)
//define("V", "2");
require_once("mod_i2c_bmp180.php");
echo get_pressure()."\n";
@@ -0,0 +1,30 @@
<?
/*
* Copyright (c) 2016, Andrey_B
* http://ab-log.ru
* Подробнее см. LICENSE.txt или http://www.gnu.org/licenses/
*/
/*
Скрипт для получения данных температуры и влажности датчика HTU21D
Использует драйвер HTU21D и библиотеку I2C-PHP
*/
define("SCL", "8");
define("SDA", "9");
define("MD", "http://192.168.0.14/sec/?");
// Вариант реализации I2C: 1 - полностью программный; 2 - частично аппаратный (прошивка 3.43beta1 и выше)
define("V", "2");
require_once("mod_i2c_htu21d.php");
$temperature = get_htu21d_temperature();
echo "Temperature: ".$temperature."\n";
$humidity = get_htu21d_humidity();
echo "Humidity: ".$humidity."\n";
$hum_compensated = $humidity + (25 - $temperature) * -0.15;
echo "Humidity (compensated): ".$hum_compensated."\n";
?>
@@ -0,0 +1,34 @@
<?
/*
* Copyright (c) 2016, Andrey_B
* http://ab-log.ru
* Подробнее см. LICENSE.txt или http://www.gnu.org/licenses/
*/
/*
Скрипт для отображение данных на дисплее OLED с контроллером SSD1306
Использует драйвер SSD1306 и библиотеку I2C-PHP
*/
define("SCL", "8");
define("SDA", "9");
define("MD", "http://192.168.0.14/sec/?");
// Вариант реализации I2C: 1 - полностью программный; 2 - частично аппаратный (прошивка 3.43beta1 и выше)
define("V", "2");
require_once("mod_i2c_ssd1306.php");
ssd1306_init();
ssd1306_clear_display();
/*** Отображение текста ***/
ssd1306_write_text("Температура: 24.62", "verdana_10", 0, 0); //
//ssd1306_write_text("22.82 ", "verdana_10", 84, 0);
ssd1306_write_text("Влажность: 47%", "verdana_10", 0, 2);
ssd1306_write_text(" ХОРОШЕГО ДНЯ!", "mistral_10", 0, 5);
/*** Отображение графики ***/
//ssd1306_draw_pic("ab_log_logo");
?>
@@ -0,0 +1,26 @@
<?
/*
* Copyright (c) 2016, Andrey_B
* http://ab-log.ru
* Подробнее см. LICENSE.txt или http://www.gnu.org/licenses/
*/
/*
Скрипт для работы с датчиком освещенности TLS2591
Использует драйвер BH1750 и библиотеку I2C-PHP
*/
define("SCL", "34");
define("SDA", "35");
define("MD", "http://192.168.0.14/sec/?");
// Вариант реализации I2C: 1 - полностью программный; 2 - частично аппаратный (прошивка 3.43beta1 и выше)
define("V", "1");
require_once("mod_i2c_tsl2591.php");
$lux = get_lux();
echo "Lux: $lux\n";
?>
@@ -0,0 +1,193 @@
<?
/*
* Copyright (c) 2016, Andrey_B
* http://ab-log.ru
* Подробнее см. LICENSE.txt или http://www.gnu.org/licenses/
*/
/*
Это драйвер для датчика атмосферного давления BMP180 для библиотеки I2C-PHP
*/
require_once("mod_i2c_lib.php");
$b5 = 0;
function hexdecs($hex)
{
// ignore non hex characters
$hex = preg_replace('/[^0-9A-Fa-f]/', '', $hex);
// converted decimal value:
$dec = hexdec($hex);
// maximum decimal value based on length of hex + 1:
// number of bits in hex number is 8 bits for each 2 hex -> max = 2^n
// use 'pow(2,n)' since '1 << n' is only for integers and therefore limited to integer size.
$max = pow(2, 4 * (strlen($hex) + (strlen($hex) % 2)));
// complement = maximum - converted hex:
$_dec = $max - $dec;
// if dec value is larger than its complement we have a negative value (first bit is set)
return $dec >= $_dec ? -$_dec : $dec;
}
function get_calibration()
{
$cal_regaddr = array("AC1" => "AA", "AC2" => "AC", "AC3" => "AE", "AC4" => "B0", "AC5" => "B2", "AC6" => "B4", "B1" => "B6", "B2" => "B8", "MB" => "BA", "MC" => "BC", "MD" => "BE" );
$cfg_data = "";
echo "Reading calibration data ";
i2c_init();
i2c_start();
foreach ( $cal_regaddr as $key => $value )
{
i2c_send("EE");
i2c_send($value);
i2c_stop();
i2c_start();
i2c_send("EF");
$msb = i2c_read();
$lsb = i2c_read(1);
if ( strlen($msb) == 1 )
$msb = "0$msb";
if ( strlen($lsb) == 1 )
$lsb = "0$lsb";
if ( $key == "AC4" || $key == "AC5" || $key == "AC6" )
{
$val = hexdec($msb);
$val = $val << 8;
$val = $val + hexdec($lsb);
}
else
$val = hexdecs($msb.$lsb);
//echo "$key => MSB: $msb; LSB: $lsb; Val: $val\n";
$cfg_data .= $val.";";
echo ".";
}
echo " done\n";
$cfg = fopen("mod_i2c_bmp180.cfg", "w");
fwrite($cfg, $cfg_data);
fclose($cfg);
}
function get_temperature()
{
global $b5;
if ( !file_exists("mod_i2c_bmp180.cfg") )
get_calibration();
$cfg = explode(";", file_get_contents("mod_i2c_bmp180.cfg"));
i2c_init();
i2c_start();
i2c_send("EE");
i2c_send("F4");
i2c_send("2E");
i2c_stop();
i2c_start();
i2c_send("EE");
i2c_send("F6");
i2c_stop();
i2c_start();
i2c_send("EF");
$msb = i2c_read();
$lsb = i2c_read(1);
i2c_stop();
if ( strlen($msb) == 1 )
$msb = "0$msb";
if ( strlen($lsb) == 1 )
$lsb = "0$lsb";
$ut = hexdec($msb.$lsb);
//echo "MSB: $msb; LSB: $lsb; UT: $ut\n";
$x1 = round(($ut - $cfg[5]) * $cfg[4] / 32768);
$x2 = round($cfg[9] * 2048 / ($x1 + $cfg[10]));
$b5 = $x1 + $x2;
$t = round(($b5 + 8) / 16);
//echo "temp: $t ($x1, $x2, $b5)\n";
return $t / 10;
}
function get_pressure()
{
global $b5;
if ( !file_exists("mod_i2c_bmp180.cfg") )
get_calibration();
$cfg = explode(";", file_get_contents("mod_i2c_bmp180.cfg"));
get_temperature();
$oss = 1;
i2c_init();
i2c_start();
i2c_send("EE");
i2c_send("F4");
i2c_send("74");
i2c_stop();
//usleep(50000);
i2c_start();
i2c_send("EE");
i2c_send("F6");
i2c_stop();
i2c_start();
i2c_send("EF");
$msb = i2c_read();
$lsb = i2c_read();
$xlsb = i2c_read(1);
i2c_stop();
if ( strlen($msb) == 1 )
$msb = "0$msb";
if ( strlen($lsb) == 1 )
$lsb = "0$lsb";
if ( strlen($xlsb) == 1 )
$xlsb = "0$xlsb";
$up = hexdec($msb.$lsb.$xlsb);
$up = $up >> (8 - $oss);
//echo "MSB: $msb; LSB: $lsb; XLSB: $xlsb; UP: $up\n";
$b6 = $b5 - 4000;
$x1 = round(($cfg[7] * ($b6 * $b6 / 4096)) / 2048);
$x2 = round($cfg[1] * $b6 / 2048);
$x3 = $x1 + $x2;
$b3 = ($cfg[0] * 4 + $x3);
$b3 = $b3 << $oss;
$b3 = round(($b3 + 2)/4);
$x1 = round($cfg[2] * $b6 / 8192);
$x2 = round(($cfg[6] * ($b6 * $b6 / 4096)) / 65536);
$x3 = round((($x1 + $x2) + 2) / 4);
$b4 = round($cfg[3] * ($x3 + 32768) / 32768);
$temp = 50000 >> $oss;
$b7 = ($up - $b3) * ($temp);
if ($b7 < 2147483648 )
$p = round(($b7 * 2) / $b4);
else
$p = round(($b7 / $b4) * 2);
$x1 = round(($p / 256) * ($p / 256));
$x1 = round(($x1 * 3038) / 65536);
$x2 = round((-7357 * $p) / 65536);
$p = round($p + ($x1 + $x2 + 3791) / 16);
$p_mm = round($p / 133.322, 2);
return ($p_mm);
//$p0 = $p / pow(1 - 70/44330, 5.255);
//$p_mm = round($p / 133.322, 2);
//$p0_mm = round($p0 / 133.322, 2);
//echo "Pa: $p; Pa_mm: $p_mm / $p0_mm\n";
}
Oops, something went wrong.

0 comments on commit 3ceff4d

Please sign in to comment.