Arduino WebClient - Локальный сервер

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Доброго времени суток, уважаемые форумчане

Знаю что такой вопрос уже поднимался на данном форуме, но проблему решить не удалось...Помогите реализовать веб клиент на базе ардуино и локальный сервер...

Проблема в том, что никак не получается вывести отправленные методом Get на сервер данные...

Скетч ардуино: 

#include <SPI.h>
#include <Ethernet.h>
#include "DHT.h"
 
//Константы
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Мак адрес
 
EthernetClient client;
 
//Переменные
unsigned long int timeConn = millis();      // Частота отправки данных о t/h на сервер
float h;                                    // Значение температуры
float t;                                    // Значение влажности
char server[] = "127,0,0,1";
 
/*--------------------------------------------------------------
 Необходимые настройки
 --------------------------------------------------------------*/
void setup()
{
  //Старт
  Serial.begin(9600);
  Ethernet.begin(mac);
  dht.begin();
}
/*--------------------------------------------------------------
 Основное тело программы
 --------------------------------------------------------------*/
void loop()
{
  h = dht.readHumidity();
  t = dht.readTemperature();
  if (millis() - timeConn > 2000) {
    sendData(t,h);
    timeConn = millis();
    Serial.println("CONNECT SERVER: Send temp/hum");
  }
}
/*--------------------------------------------------------------
 Функция отправляет данные о температуре и влажности на 
 WEB сервер.
 --------------------------------------------------------------*/
void sendData(float t, float h) {
  client.connect(server, 80);
  client.print( "GET /index.php?");
  client.print("t=");
  client.print(t);
  client.print("&");
  client.print("h=");
  client.print(h);
  client.println(" HTTP/1.1");
  client.print( "Host: " );
  client.println(server);
  client.println( "Connection: close" );
  client.println();
  client.println();
  client.stop();
  client.flush();
/* Для тестирование текст запроса вывел в сериал порт */
  Serial.print( "GET /index.php?");
  Serial.print("t=");
  Serial.print(t);
  Serial.print("&");
  Serial.print("h=");
  Serial.print(h);
  Serial.println(" HTTP/1.1");
  Serial.print( "Host: " );
  Serial.println(server);
  Serial.println( "Connection: close" );
}

Ардуино с шилдом подключена к LAN на ноуте. На винде 7 стоит Open Server там лежит папка с сайтом home.ru и внутри файлик с таким содержанием: 

<?php
ini_set("display_errors",1);
error_reporting(E_ALL);
?>
<html>
 
<head>
<title>Mysite</title>
</head>
 
<body>
Hello  
<?php
ini_set("display_errors",1);
error_reporting(E_ALL);
 
$temp = $_GET['t'];
$hum = $_GET['h'];
 
echo $temp;
?>
 
 
</body>
</html>

Когда перехожу на сам сайт выдает такие ошибки: 



Notice: Undefined index: t in C:\OpenServer\domains\home.ru\index.php on line 17



Notice: Undefined index: h in C:\OpenServer\domains\home.ru\index.php on line 18





Понятно, что не приходят данные t и h... Помогите понять почему и как это исправить...



Монитор порта arduinoIDE выдает все как положено : 



CONNECT SERVER: Send temp/hum

GET /index.php?t=0.00&h=0.00 HTTP/1.1

Host: 127,0,0,1

Connection: close



Очень надеюсь на вашу помощь!

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

127.0.0.1 это адрес самого себя

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

127.0.0.1 это адрес самого себя

А какой IP тогда ставить? Ноутбука? 

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

IP адрес вашего сервера, откуда я знаю где он у вас там крутится ) Если на ноутбуке, то ноутбука

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

IP адрес вашего сервера, откуда я знаю где он у вас там крутится ) Если на ноутбуке, то ноутбука

Сервер стоит на ноутбуке.  Заменил IP на адрес ноута: 

//Переменные
unsigned long int timeConn = millis();      // Частота отправки данных о t/h на сервер
float h;                                    // Значение температуры
float t;                                    // Значение влажности
char server[] = "192,168,1,3";

Все равно на сервер не приходят данные..

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

IP адрес пишется через точки

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015
//IPAddress server(74,125,232,128);  // numeric IP for Google (no DNS)
char server[] = "www.google.com";    // name address for Google (using DNS)
sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

IP адрес пишется через точки

Заменил запятые наточки.ничего не изменилось..

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Откройте стандартный пример который с iDE идет, пример называется WebClient там все есть. Если нет днс подключайтесь по IP но правильно задав его как в #6

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Плюс GET запрос лучше одной строкой давать, заранее сформировать и послать.

Плюс если DHCP нет, при инициализации надо и мак и айпи передавать.

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

Откройте стандартный пример который с iDE идет, пример называется WebClient там все есть. Если нет днс подключайтесь по IP но правильно задав его как в #6

Заменил как в примере на 

IPAddress server(192,168,1,3);
 

Все равно все та же ошибка

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

Плюс GET запрос лучше одной строкой давать, заранее сформировать и послать.

Плюс если DHCP нет, при инициализации надо и мак и айпи передавать.

 

Запустил пример dhcpadresssprinter, в монитор порта не выводится IP адресс ардуинки...напомню что ардуино подключено к LAn порту ноутбука

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Ну а кто ей должен адрес выдать то если подключено напрямую... Адрес явно задавайте. Потом с компа пробуйте пингуйте. Если сетевуха не древняя то разберется с любым кабелем иначе может кросс-кабель понадобиться. В общем учите матчасть для начала.

перейдите на своем ноуте по адресу 192.168.1.3\\index.php?t=10.0&h=32  посмотрите что будет в итоге

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

Ну а кто ей должен адрес выдать то если подключено напрямую... Адрес явно задавайте. Потом с компа пробуйте пингуйте. Если сетевуха не древняя то разберется с любым кабелем иначе может кросс-кабель понадобиться. В общем учите матчасть для начала.

перейдите на своем ноуте по адресу 192.168.1.3\\index.php?t=10.0&h=32  посмотрите что будет в итоге

Не удается получить доступ к сайту Сайт 192.168.1.3 не позволяет установить соединение. Выполните поиск по запросу index в Google ERR_CONNECTION_REFUSED

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

localhost/index.php?t=10.0&h=32

?

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

del

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

localhost/index.php?t=10.0&h=32

?

 

Object not found!

The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.

If you think this is a server error, please contact the webmaster.

Error 404

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Ну у вас и вэбсервер не настроен даже, он вообще запущен? Решайте поэтапно задачу. Добейтесь чтобы ардуинка пинговалась с ноутбука. Далее разберитесь со своим сервером, ну а потом уже можно соединять все воедино

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

Ну у вас и вэбсервер не настроен даже, он вообще запущен? Решайте поэтапно задачу. Добейтесь чтобы ардуинка пинговалась с ноутбука. Далее разберитесь со своим сервером, ну а потом уже можно соединять все воедино

Обнаружил что не был установлен драйвер для LAN на машине, установил, теперь ардуино определяется в сетевых устройствах как неопознанное устройство. 

В настройках этого подключения задал ip для устройства 192.168.1.17 маска подсети 255,255,255,0 и адрес шлюза 192,168,1,3 ( IP ноутбука) 

Теперь ардуина пингуется по адресу 192,168,1,17 . 

А как настроить веб сервер? у меня стоит Open server 5.2.2

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Ну это уже в профильные форумы, обычно есть файл конфигурации где все прописывается. Как минимум поробуйте запустить его и перейти по адресу home.ru

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

Ну это уже в профильные форумы, обычно есть файл конфигурации где все прописывается. Как минимум поробуйте запустить его и перейти по адресу home.ru


По адресу home.ru переходит, я так понимаю надо как то закрепить за этим адресом ip?

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

за ним уже поидее закреплен адрес, адрес вашего ноута. Можно попробовать с ардуины обратиться по символьному имени home.ru

char server[] = "www.home.ru";    //

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

но у вас там и пхп скрипт странный, поидее он должен складывать данные в базу данных, а в том виде что у вас данные переданные ардуиной потеряются при следующем вызове index.php. Хотя я пхп последний раз видел давно но думаю что так. А так вы в браузере набираете home.ru и выполняется тот же самый GET только без параметров

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Так по home.ru/index.php?t=10.0&h=32.0 что в браузере видите?

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

Так по home.ru/index.php?t=10.0&h=32.0 что в браузере видите?


К сожалению сейчас на работу ушел, попробую только вечером около 19.00 по МСК, буду очень признателен если Вы будете онлайн

Есть логика в том что данные должны заноситься в базу, попробую сделать вот так

<?php
define(DB_HOST, "localhost");
define(DB_NAME, "db_name"); //название базы
define(DB_USER, "username"); //имя пользователя базы
define(DB_PASS, "pass"); //пароль пользователя базы

$link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if(!$link) die ("Невозможно подключиться к базе данных!");
mysql_select_db(DB_NAME);

$temp=$_GET["t"];
$hum=$_GET["h"];

$query = "INSERT INTO `temp_room1` (`time`, `temp`, `hum`)
VALUES ('".time()."', '".$temp."','".$hum."')";
/*
temp_room1 - название таблицы в базе
time, temp, hum - поля в таблице
*/

if(!mysql_query($query))
echo "ошибка при записи в БД!";
mysql_close($link);
?>

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Ну и лучше сделать отдельный скрипт для приема данных от ардуины, разбора и сохранения в базу. Тогда для добавления данных в базу данных, ардуино будет выполнять GET к скрипту скажем arduparser.php а index.php уже будет просто так называемой web-мордой для отображения информации.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

sava4aev пишет:

А как настроить веб сервер? у меня стоит Open server 5.2.2

Лучше использовать более распространённые, по ним информации гораздо больше: nginx или Apache.

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Jeka_M пишет:

sava4aev пишет:

А как настроить веб сервер? у меня стоит Open server 5.2.2

Лучше использовать более распространённые, по ним информации гораздо больше: nginx или Apache.


Он основан тоже на апаче

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

Ну и лучше сделать отдельный скрипт для приема данных от ардуины, разбора и сохранения в базу. Тогда для добавления данных в базу данных, ардуино будет выполнять GET к скрипту скажем arduparser.php а index.php уже будет просто так называемой web-мордой для отображения информации.

Сделал страничку parser.php

<?php

ini_set("display_errors",1);
error_reporting(E_ALL);

define(DB_HOST, "localhost");
define(DB_NAME, "home"); //название базы
define(DB_USER, "alex"); //имя пользователя базы
define(DB_PASS, "Mc19bR73"); //пароль пользователя базы

$link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if(!$link) die ("Невозможно подключиться к базе данных!");
mysql_select_db(DB_NAME);

$temp=$_GET["t"];
$hum=$_GET["h"];

$query = "INSERT INTO `room` (`time`, `temp`, `hum`)
VALUES ('".time()."', '".$temp."','".$hum."')";
/*
room - название таблицы в базе
time, temp, hum - поля в таблице
*/

if(!mysql_query($query))
echo "ошибка при записи в БД!";
mysql_close($link);
?>

Теперь по запросу  home.ru/parser.php?t=10.0&h=32.0 в базу данных заносятся значения 10 и 32 соответственно, значит скрипт работает.

Однако при подключении ардуины к ноутбуку все равно данные в таблицу не добавляются.  

#include <SPI.h>
#include <Ethernet.h>
#include "DHT.h"
 
//Константы
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Мак адрес
 
EthernetClient client;
 
//Переменные
unsigned long int timeConn = millis();      // Частота отправки данных о t/h на сервер
float h;                                    // Значение температуры
float t;                                    // Значение влажности
IPAddress server(192,168,1,3);
 
/*--------------------------------------------------------------
 Необходимые настройки
 --------------------------------------------------------------*/
void setup()
{
  //Старт
  Serial.begin(9600);
  Ethernet.begin(mac);
  dht.begin();
}
/*--------------------------------------------------------------
 Основное тело программы
 --------------------------------------------------------------*/
void loop()
{
  h = dht.readHumidity();
  t = dht.readTemperature();
  if (millis() - timeConn > 2000) {
    sendData(t,h);
    timeConn = millis();
    Serial.println("CONNECT SERVER: Send temp/hum");
  }
}
/*--------------------------------------------------------------
 Функция отправляет данные о температуре и влажности на 
 WEB сервер.
 --------------------------------------------------------------*/
void sendData(float t, float h) {
  client.connect(server, 80);
  client.print( "GET /parser.php?");
  client.print("t=");
  client.print(t);
  client.print("&");
  client.print("h=");
  client.print(h);
  client.println(" HTTP/1.1");
  client.print( "Host: " );
  client.println(server);
  client.println( "Connection: close" );
  client.println();
  client.println();
  client.stop();
  client.flush();
/* Для тестирование текст запроса вывел в сериал порт */
  Serial.print( "GET /parser.php?");
  Serial.print("t=");
  Serial.print(t);
  Serial.print("&");
  Serial.print("h=");
  Serial.print(h);
  Serial.println(" HTTP/1.1");
  Serial.print( "Host: " );
  Serial.println(server);
  Serial.println( "Connection: close" );
}

 

 

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Покопался в настройках сервера, теперь по IP моего ПК 192.168.1.3 можно попасть на home.ru на локальном сервере и запрос 192.168.1.3\\parser.php?t=10.0&h=32 проходит отлично, данные в БД добавляются.  но все равно не приходят данные от ардуно... 

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Чувакиии на помоооощь!!!! 

Что то получилось, но опять же криво да косо... Когда запускаю ардуино теперь мне приходят переменные t и h, но....они пустые. Запись в БД ведется. Помогите понять где ошибка уже мозг взрывается 0_о

sketch

#include <SPI.h>
#include <Ethernet.h>
#include "DHT.h"
 
//Константы
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Мак адрес
 
EthernetClient client;
 
//Переменные
unsigned long int timeConn = millis();      // Частота отправки данных о t/h на сервер
float h;                                    // Значение температуры
float t;                                    // Значение влажности
IPAddress server(192,168,1,2);
   

/*--------------------------------------------------------------
 Необходимые настройки
 --------------------------------------------------------------*/
void setup()
{
  //Старт
  Serial.begin(9600);
  Ethernet.begin(mac);
  dht.begin();

}
/*--------------------------------------------------------------
 Основное тело программы
 --------------------------------------------------------------*/
void loop()
{
  h = dht.readHumidity();
  t = dht.readTemperature();
  if (millis() - timeConn > 2000) {
    sendData(t,h);
    timeConn = millis();
    Serial.println("CONNECT SERVER: Send temp/hum");
  }
}
/*--------------------------------------------------------------
 Функция отправляет данные о температуре и влажности на 
 WEB сервер.
 --------------------------------------------------------------*/
void sendData(float t, float h) {
  client.connect(server, 80);
  client.print( "GET /parser.php? ");
  client.print("t=");
  client.print(t);
  client.print("&");
  client.print("h=");
  client.print(h);
  client.println(" HTTP/1.1");
  client.print( "Host: " );
  client.println(server);
  client.println( "Connection: close" );
  client.println();
  client.println();
  client.stop();
  client.flush();
}

parser.php

<?php

ini_set("display_errors",1);
error_reporting(E_ALL);

$db_host = "192.168.1.2";
$db_user = "alex";
$db_pass = "Mc19bR73";
$db_name = "home";

define('DB_HOST',$db_host);
define('DB_USER',$db_user);
define('DB_PASS',$db_pass);
define('DB_NAME',$db_name);

$link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if(!$link) die ("Невозможно подключиться к базе данных!");
mysql_select_db(DB_NAME);

$temp=$_GET["t"];
$hum=$_GET["h"];

$query = "INSERT INTO `room` (`time`, `temp`, `hum`)
VALUES ('".time()."', '".$temp."','".$hum."')";
/*
room - название таблицы в базе
time, temp, hum - поля в таблице
*/

if(!mysql_query($query))
echo "ошибка при записи в БД!";
mysql_close($link);
?>

--

-- Структура таблицы `room`
--
 
CREATE TABLE IF NOT EXISTS `room` (
  `id` int(6) NOT NULL,
  `time` date NOT NULL,
  `temp` varchar(255) NOT NULL,
  `hum` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
Сразу говорю что датчик подключен и нормально функционирует проверял добавлением вот этого в конце:
/* Для тестирование текст запроса вывел в сериал порт */
  Serial.print( "GET /index.php?");
  Serial.print("t=");
  Serial.print(t);
  Serial.print("&");
  Serial.print("h=");
  Serial.print(h);
  Serial.println(" HTTP/1.1");
  Serial.print( "Host: " );
  Serial.println(server);
  Serial.println( "Connection: close" );

 
Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Ну что тут сказать, во-первых по базе: id лучше делать автоинкрементным. Поле тайм типа timestamp ну и температура и влажность так-то float и к тому же они могут быть нулями.

client.print( "GET /parser.php? "); в этой строке попробуйте сразу весь запрос отправить одной строкой как с компа делали и говорили что работает.

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

Ну что тут сказать, во-первых по базе: id лучше делать автоинкрементным. Поле тайм типа timestamp ну и температура и влажность так-то float и к тому же они могут быть нулями.

client.print( "GET /parser.php? "); в этой строке попробуйте сразу весь запрос отправить одной строкой как с компа делали и говорили что работает.

client.print( "GET /parser.php?t=10.0&h=32 "); 

вставляет в базу данных записи 10 и 32 соответственно

 

БД изменил: 

--
-- Структура таблицы `room`
--
 
CREATE TABLE IF NOT EXISTS `room` (
  `id` mediumint(9) NOT NULL,
  `time` date NOT NULL,
  `temp` float NOT NULL,
  `hum` float NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Ну вот и отлично, а что еще не работает?

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

Ну вот и отлично, а что еще не работает?

Данные с датчика так и не передаются...

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Раз так работает: client.print( "GET /parser.php?t=10.0&h=32 "); то сформуруйте единый get запрос, а не шлите данные отдельными принтами и все будет работать

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

Раз так работает: client.print( "GET /parser.php?t=10.0&h=32 "); то сформуруйте единый get запрос, а не шлите данные отдельными принтами и все будет работать

А как будет правильно? client.print( "GET /parser.php?t=?&h=?");  вот так?

 

Вообще не знаю как это делается ахах

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Ну вот самое простое, правда стринг много памяти жрет, но я думаю вам это не критично

  String get_query;
  float tmp = 10.23;
  float hyd = 32.5;
  get_query = "GET /parser.php?t=";
  get_query.concat(tmp);
  get_query = get_query + "&h=";
  get_query.concat(hyd);
  client.println(get_query);

 

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Что то не получается( 

 
 
exit status 1
'get_query' does not name a type
 
 
Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

А я тестил на обычном сериале, он похоже стринг нормально разбирает а этой библиотеки именно string (с маленькой буквы надо) надо пробовать toCharArray тогда должно понять

UPD: хотя сейчас вот попробовал все нормально компилируется. String с большой буквы написан?

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Да, с большой, попробую вечером на tochararray поменять

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

У меня ваш код со вставленным моим нормально компилируется без всяких toCharArray

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

А скиньте как у вас получился мой код с вашими добавками, посмотрю, может что то не так сделал

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Ну вот как-то так, все компилируется без ошибок. DHT закомментировал, потому что в той иде что под рукой нет библиотеки DHT

#include <SPI.h>
#include <Ethernet.h>
//#include "DHT.h"
 
//Константы
//#define DHTPIN 2
//#define DHTTYPE DHT11
//DHT dht(DHTPIN, DHTTYPE);
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Мак адрес
 
EthernetClient client;
 
//Переменные
unsigned long int timeConn = millis();      // Частота отправки данных о t/h на сервер
float h;                                    // Значение температуры
float t;                                    // Значение влажности
IPAddress server(192,168,1,2);
   

/*--------------------------------------------------------------
 Необходимые настройки
 --------------------------------------------------------------*/
void setup()
{
  //Старт
  Serial.begin(9600);
  Ethernet.begin(mac);
  //dht.begin();

}
/*--------------------------------------------------------------
 Основное тело программы
 --------------------------------------------------------------*/
void loop()
{
  //h = dht.readHumidity();
  //t = dht.readTemperature();
  h = 35.5;
  t = 36.6;
  if (millis() - timeConn > 2000) {
    sendData(t,h);
    timeConn = millis();
    Serial.println("CONNECT SERVER: Send temp/hum");
  }
}
/*--------------------------------------------------------------
 Функция отправляет данные о температуре и влажности на 
  WEB сервер.
 --------------------------------------------------------------*/
void sendData(float t, float h) {
  client.connect(server, 80);
  String get_query;
  get_query = "GET /parser.php?t=";
  get_query.concat(t);
  get_query = get_query + "&h=";
  get_query.concat(h);
  client.println(get_query);
  client.println(" HTTP/1.1");
  client.print( "Host: " );
  client.println(server);
  client.println( "Connection: close" );
  client.println();
  client.println();
  client.stop();
  client.flush();
}

 

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

А я вставлял ваш код в то место где объявляли переменные t и. h , а client.println(get_query); в void sendData, может поэтому у меня ошибки такие...

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Ну да, области видимости переменных никто не отменял :)

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Мой косяк, вечером попробую, отпишусь)

sava4aev
sava4aev аватар
Offline
Зарегистрирован: 12.06.2017

Penni пишет:

Ну да, области видимости переменных никто не отменял :)

Добрался наконец то до ноутбука...Залил скетч, с небольшими изменениями:

String get_query;
  get_query = "GET /parser.php?t=";
  get_query.concat(t);
  get_query = get_query + "&h=";
  get_query.concat(h);
  get_query = get_query + " HTTP/1.1";
  client.println(get_query);

Вот так все работает! Спасибо! радости нет предела! 

aleksandr777
Offline
Зарегистрирован: 04.01.2018

C базой разобрались? если нет пишите подскажу