рабочий код для записи данных полученых с esp8266 с
Бета тест версии прошивки esp8266 0.1.1 передачу осуществляется по протоколу MajorDoMo
сам код скрипта
<?php
define ("MYSQL_HOST" ,'localhost');
define ("MYSQL_LOGIN" ,'user');
define ("MYSQL_PASSWORD",'pass');
@mysql_connect(MYSQL_HOST, MYSQL_LOGIN, MYSQL_PASSWORD)
or die("Connect SQL error!");
$db = filter_input(INPUT_GET, 'idesp', FILTER_SANITIZE_MAGIC_QUOTES);
if(!$db){
$db = 'dubmon';
}
define ("MYSQL_DATABASE",$db);
$db_name = MYSQL_DATABASE;
@mysql_select_db($db_name) or die("Select DB error!");
/**
* Create Table Query by tableName
* @param string $tableName Table name
* @return string
*/
function GetCreateTableQuery($tableName)
{
$create_table = <<<LABEL
CREATE TABLE `$tableName`
(`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
`value` char(20) COLLATE utf8_bin NOT NULL,
`date` DATETIME NOT NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE (
`id`
)) ENGINE = MYISAM;
LABEL;
return $create_table;
}
/**
* Simple validation
* @param mixed $paramValue input parameter
* @return bool
*/
function IsValidValue($paramValue)
{
if (empty($paramValue))
return false;
return true;
}
/**
* Проверка параметров на соответствие с ожидаемыми параметрами
* Чтобы не заздавать ненужных таблиц
* @param string $key Param key
* @return bool
*/
function IsValidKey($key)
{
$arrayKey = array("hostname", "idesp", "dhtt1", "dhth1", "dhtt2", "dhth2", "bmpt", "bmpp", "light", "dsw1", "dsw2", "dsw3", "dsw4", "dsw5", "dsw6", "dsw7", "dsw8", "dsw9", "freemem", "ver", "vdd", "gpiout14", "wanip", "uptime");
if (in_array($key, $arrayKey))
return true;
if (preg_match('/^dsw\d/',$key))
return true;
return false;
}
foreach(array_keys($_REQUEST) as $key)
{
if (!IsValidKey($key))
{
// название параметра не прошло проверку: переходим к следующему параметру
echo "Key: " . $key . " not valid<br />";
continue;
}
$value = $_REQUEST[$key];
if (!IsValidValue($value))
{
// Пустое значение. При вставке в таблицу произойдет ошибка т.к. поле в таблице NOT NULL
// переходим к следующему сенсору
echo "Ошибка: Значение " . $key . "пустое!<br />";
continue;
}
// формируем запрос к бд на вставку записи в таблицу
$sql="INSERT INTO `". $key . "` (`id`, `value`,`date`) VALUES (NULL,'" . $value . "', NOW());";
echo $sql . "<br />";
if($result = mysql_query($sql) === false)
{
$create_table = GetCreateTableQuery($key);
if($result = mysql_query($create_table) === false)
{
die("CREATE TABLE ERROR! - " . $key);
}
else mysql_query($sql);
}
}
?>
а также код странички для теста
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test form</title>
</head>
<body>
<div style="border:1px solid #000000;padding:0.5em;">
<h3>Тест формы получения данных с датчиков</h3>
<form action="index.php" method="post">
<label for="idesp">idesp: id устройства</label><input type="text" id="idesp" name="idesp" /><br />
<label for="hostname">hostname: имя устройства</label><input type="text" id="hostname" name="hostname" /><br />
<label for="dhtt1">dhtt1: данные с датчика DHT 1</label><input type="text" id="dhtt1" name="dhtt1" /><br />
<label for="dhth1">dhth1: данные с датчика DHT 1</label><input type="text" id="dhth1" name="dhth1" /><br />
<label for="dhtt2">dhtt2: данные с датчика DHT 2</label><input type="text" id="dhtt2" name="dhtt2" /><br />
<label for="dhth2">dhth2: данные с датчика DHT 2</label><input type="text" id="dhth2" name="dhth2" /><br />
<label for="bmpt">bmpt: данные с датчика BMP</label><input type="text" id="bmpt" name="bmpt" /><br />
<label for="bmpp">bmpp: данные с датчика BMP</label><input type="text" id="bmpp" name="bmpp" /><br />
<label for="dswX">dswX: данные с датчиков ds18b20(X -номер датчика)</label><input type="text" id="dswX" name="dswX" /><br />
<label for="dswX">dsw2: данные с датчиков ds18b20(X -номер датчика)</label><input type="text" id="dsw2" name="dsw2" /><br />
<label for="light">light: данные с датчика BH1750</label><input type="text" id="light" name="light" /><br />
<input type="submit" value="Test" />
</form>
</div>
</body>
</html>
Код полностью рабочий но перед подключением нового мудуля требуеться создать базу с именем (id) модуля