Если поправить руками файл в который передаються данные с ардуины то ошибка с сайта уходит
Warning: fread(): Length parameter must be greater than 0 in /storage/ssd2/421/5620421/public_html/transfer/hum-1.php on line 4
Потому и подумал что данные с ардуины не передаються на сервер
Очевидно, что нужно заменить toInt() на toFloat()!!! - вот за такой ответ было бы Вам большое спасибо)
Странная позиция. То, как Вам ответили, показывает уважение к разумному человеку, который ошибся. Разумеется, спрашивающий разумен и сам в состоянии разобраться, но "глаз замылен", и нужен небольшой толчок, который Вам и дали. Ответ же, за который от Вас "было бы спасибо", предполагает отвечание ребёнку или идиоту. Вы действительно хотите, чтобы к Вам так относились?
ну правильно выдает -- выдает значение кнопки (вкл 1, выкл 0), если посмотрите на вебку значение должны измениться на темпер 1, тем2 323 и влажность 707. если все так, то надо коврять дальше код ардуины
получилось, даные теперь отображаються , но перестал включатель срабатывать , буфер не меняет свое состояние на 1 при включении. строки не сдвинулись вроди
delay() нужен в лучшем случае после последнего закидывания данных перед стопом, чтобы был шанс их передать. И flush() в Ethernet.h ровным счетом ничего не делает. Абсолютно. На самом нижнем уровне в функции находится одна закомментированная строчка "TODO".
И вообще - вы с этим дилеями в лупе имеете неиллюзорный шанс отреджектить половину входящих коннектов.
Добавил еще одну кнопку на сервере но не могу до конца понять как мне в коде ардуины написать , в мониторе порта результат нажатия второй кнопки отображаеться сразу следующим символом после первой
Понимаю возможно тупо написал но я только учусь
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include "DHT.h"
#define DHTPIN 7
#define DHTTYPE DHT11
#define ONE_WIRE_BUS 2
DHT dht(DHTPIN, DHTTYPE);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };
byte i, startRead, buff1 ; // новая строка
byte data_string_num =3; // номер строки данных, откуда извлекается ответ сервера (новая строка переменная )
byte a, startRead2, buff2;
byte data_string_num2 =3;
EthernetClient client;
char server[] = "KKKKKK ;//имя вашего сервера
const int led=5;
const int led1=4;
int h; // Значение температуры
int t;
void setup()
{
Serial.begin(9600);
Ethernet.begin(mac);
sensors.begin();
pinMode( led, OUTPUT);
digitalWrite(led, LOW);
pinMode( led1, OUTPUT);
digitalWrite(led1, LOW);
}
void loop()
{
h = dht.readHumidity();
t = dht.readTemperature();
sensors.requestTemperatures();
if (client.connect(server, 80))
{
client.print( "GET /add_data.php?");
client.print("temperature=");
client.print( sensors.getTempCByIndex(0) );
client.print("&");
client.print("&");
client.print("temperature1=");
client.print( sensors.getTempCByIndex(1) );
client.print("&");
client.print("&");
client.print("humidity=");
client.print(h);
client.print("&");
client.print("&");
client.println( " HTTP/1.1");
client.print( "Host: " );
client.println(server);
client.println( "Connection: close" );
client.println();
client.println();
Serial.print("hum= ");
Serial.println(h);
delay(200);
while (client.available())
{
char c = client.read();
Serial.print(c);
if (c == '\r') continue;
if (c == '\n') { // найден конец строки
if ((startRead == 0) && (i == 0)) // если строка пустая - служебный заголовок закончился
{startRead = 1; continue;} // начинаем отсчитывать строки данных
if (startRead > 0) // очередная строка данных
{startRead++; continue;}
i=0; continue;
}
i++;
if (startRead == data_string_num) { // если номер строки данных равен заданному
if ( c=='1') buff1=1; // извлекаем параметр из первого символа строки
if ( c=='0') buff1=0;
startRead++;
}
}
Serial.print("buff1 = ");
Serial.println(buff1);
client.stop();
client.flush();
delay(1000);
}
if ( buff1==1)
{
digitalWrite (led, HIGH);
}
else
{
digitalWrite(led, LOW);
}
while (client.available())
{
char c = client.read();
Serial.print(c);
if (c == '\r') continue;
if (c == '\n') { // найден конец строки
if ((startRead2 == 0) && (a == 0)) // если строка пустая - служебный заголовок закончился
{startRead2 = 1; continue;} // начинаем отсчитывать строки данных
if (startRead2 > 0) // очередная строка данных
{startRead2++; continue;}
a=0; continue;
}
a++;
if (startRead2 == data_string_num2) { // если номер строки данных равен заданному
if ( c=='2') buff2=2; // извлекаем параметр со второго символа строки
if ( c=='0') buff2=0;
startRead2++;
}
}
Serial.print("buff2 = ");
Serial.println(buff2);
client.stop();
client.flush();
delay(100);
if ( buff2==1)
{
digitalWrite (led1, HIGH);
}
else
{
digitalWrite(led1, LOW);
}
delay(100);
}
HTTP/1.1 200 OK
Date: Sun, 27 May 2018 20:19:24 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Server: awex
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Request-ID: fe2a94dd3f784bbaff51d691e240d99b
4
11 // тут значение кнопок друг за другом идут
0
buff1 = 1
buff2 = 0
hum= 39
Уважаемые форумчане, всех с наступающим Новым годом! Пусть пусть он будет лучше уходящего !
Ранее уже писал в этой ветке по своей проблеме и мне помогли тогда за что и большое спаибо.
Тогда подзабросил этот проект т.к. небыло свободного времени, вот решил вернуться все весело клацает данные с датчиков передаються.
Решил задействовать в пилотной експлуатации и столкнулся с такой проблемой, состояние реле самопроизвольно меняеться на высокий уровень и больше arduino не реагирует на кнопки в браузере. Помагает только рестарт.
Закономерности когда она перестает реагировать не наблюдаю, как правило через час может перестать а когда и больше.
Заметил что только при длительной работе перестает выводиться служебный заголовок, и насколько понял после этого перестает ардуино реагировать
Хотя при проверке реакции нули (последняя строка) успешно меняют свой статус на 1 1 (в зависимости какое положение тумблера на страничке, две кнопки на страничке)
Notice: Undefined index: temperature in /storage/ssd2/421/5620421/public_html/add_data.php on line 3
Notice: Undefined index: humidity in /storage/ssd2/421/5620421/public_html/add_data.php on line 9
Notice: Undefined index: temperature1 in /storage/ssd2/421/5620421/public_html/add_data.php on line 15
00
Прошу по возможности подсказать почему дуня отказывается реагировать на запросы ?
Заранее всем благодарен
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include "DHT.h"
#define DHTPIN 7
#define DHTTYPE DHT11
#define ONE_WIRE_BUS 17
DHT dht(DHTPIN, DHTTYPE);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };
byte i, startRead, buff ; // новая строка
byte data_string_num =3; // номер строки данных, откуда извлекается ответ сервера (новая строка переменная )
EthernetClient client;
char server[] = "ХХХХХХХХХХХХХХХХХХ.com" ;
const int led=5;
int h; // Значение температуры
int t;
void setup()
{
Serial.begin(9600);
Ethernet.begin(mac);
sensors.begin();
pinMode( led, OUTPUT);
digitalWrite(led, LOW);
}
void loop()
{
h = dht.readHumidity();
t = dht.readTemperature();
sensors.requestTemperatures();
if (client.connect(server, 80))
{
client.print( "GET /add_data.php?");
client.print("temperature=");
client.print( sensors.getTempCByIndex(0) );
client.print("&");
client.print("&");
client.print("temperature1=");
client.print( sensors.getTempCByIndex(1) );
client.print("&");
client.print("&");
client.print("humidity=");
client.print(h);
client.print("&");
client.print("&");
client.println( " HTTP/1.1");
client.print( "Host: " );
client.println(server);
client.println( "Connection: close" );
client.println();
client.println();
Serial.print("hum= ");
Serial.println(h);
delay(200);
while (client.available())
{
char c = client.read();
Serial.print(c);
if (c == '\r') continue;
if (c == '\n') { // найден конец строки
if ((startRead == 0) && (i == 0)) // если строка пустая - служебный заголовок закончился
{startRead = 1; continue;} // начинаем отсчитывать строки данных
if (startRead > 0) // очередная строка данных
{startRead++; continue;}
i=0; continue;
}
i++;
if (startRead == data_string_num) { // если номер строки данных равен заданному
if ( c=='1') buff=1; // извлекаем параметр из первого символа строки
if ( c=='0') buff=0;
startRead++;
}
}
Serial.print("buff = ");
Serial.println(buff);
client.stop();
client.flush();
delay(1000);
}
if ( buff==1)
{
digitalWrite (led, HIGH);
}
else
{
digitalWrite(led, LOW);
}
delay(100);
}
Спасибо, за подсказку, у меня ардуино мега 2560 и шилд питаються от юсб входа импульсной зарядкой от телефона на 700ма. Попробую запитать от другого разьема 7-12вольт. По результатам отпишусь
Запитал плату мега 2560 и шилд от внешнего блока 12вольт но результата не получил, наоборот еще больше глюков ( Буду читаь форум и попробую может золотую середину 7 вольт
Запитал плату мега 2560 и шилд от внешнего блока 12вольт но результата не получил, наоборот еще больше глюков ( Буду читаь форум и попробую может золотую середину 7 вольт
Спасибо за комментарий, буду смотреть, я можно сказать ” чайник " в этом деле, потому пока не совсем понимаю занулить, всмысле флеш если прошел первый конект?
Ну вот и все, дописывай что должно происходить при buff=0 и 1, и по задержке отпиши что получиться
aleksandr777
b 707
большое Вам человеческое спасибо и плюс в карму за терпение и потраченое время
По задержке секунд 5 на включение и 20 на выключение
Получилось. Можно спокойно ложиться спать ) останеться настроить частоту обновления хотя это не критично.
Пока настраивал перелопатил кучу инфо и так понял что все таки это не лучший вариант реализации MQTT более продвинут
Каково Ваше мнение как экспертов ?
Если еще актуально, по совету b707 можно сделать еще так:
в файле index.php поменяйте строчки:
задержка должна уйти
благодарю
попробую еще так сделать
Решил добавить еще показания датчика влажности DHT 11 серверную часть сделал в вот код ардуино не отправляет инфо на сервер
Где-то косяк в коде ардуино Сериал выдает такое сообщение
Может сможете натолкныть на мысль
Для проверки сервера используйте браузер
твойсервер/add_data.php?temperature=1&&temperature1=1
Ток поправьте в зависимости от того что серверу шлете
риал выдает такое сообщение
Читать умеете? Сообщение о неопределённом индексе в php, а косяк почему-то в ардуино.
может подскажет кто...
шлем в ардуину
нужно выловить {21.2/22.5/555.6}, ловим следующим образом:
по итогу возвращает целые числа. как сделать чтоб возвращала дробные числа?
Очевидно, что нужно заменить toInt() на что-то более подходящее задаче.
Если поправить руками файл в который передаються данные с ардуины то ошибка с сайта уходит
Warning: fread(): Length parameter must be greater than 0 in /storage/ssd2/421/5620421/public_html/transfer/hum-1.php on line 4
Потому и подумал что данные с ардуины не передаються на сервер
ошибка PHP, в ответе указаны и строки в каких ошибка.
для приема add_data
для вывода на индекс файл hum-1.php
проверте создался ли текстовый файл
ну и в индексе тоже поправить надо....
Очевидно, что нужно заменить toInt() на что-то более подходящее задаче.
Очевидно, что нужно заменить toInt() на toFloat()!!! - вот за такой ответ было бы Вам большое спасибо)
Очевидно, что нужно заменить toInt() на toFloat()!!! - вот за такой ответ было бы Вам большое спасибо)
Странная позиция. То, как Вам ответили, показывает уважение к разумному человеку, который ошибся. Разумеется, спрашивающий разумен и сам в состоянии разобраться, но "глаз замылен", и нужен небольшой толчок, который Вам и дали. Ответ же, за который от Вас "было бы спасибо", предполагает отвечание ребёнку или идиоту. Вы действительно хотите, чтобы к Вам так относились?
[quote=aleksandr777]
для приема add_data
Спасибо Я использую такой файл
вот файл трансфер
для приема add_data
для вывода на индекс файл hum-1.php
проверте создался ли текстовый файл
ну и в индексе тоже поправить надо....
была ошибка выше поправил на humidity
и в ардуине бы сформировать 1 строку с гет запросом на сервер со всеми параметрами, а не слать 2 отдельных запроса
хотя и с 2 запросами должно работать
transfer
index
файл создаеться in-3
держи рабочий серв:
add_data
transfer/hum.php
index
для проверки в браузер http://твой сервер/add_data.php?tem=1&&hum=707=&&tem1=323
aleksandr, Вы мега человек ) Благодарю. Я не совсем понимаю по какому принципу мы присваиваем цифру вот тут $the date ?
не нужна там цифра, по запарке ткнул. заработало?
держи рабочий серв:
для проверки в браузер http://твой сервер/add_data.php?tem=1&&hum=707=&&tem1=323
Выдает "0"
по ссылке выше
в сериале срока не пропала эта строка
http://твой сервер/add_data.php?temperature=1&&humidity=707=&&temperature1=323 а так что выдает
выдает - 1
ну правильно выдает -- выдает значение кнопки (вкл 1, выкл 0), если посмотрите на вебку значение должны измениться на темпер 1, тем2 323 и влажность 707. если все так, то надо коврять дальше код ардуины
залей этот скетч ток сервер поправь
вот сейчас это и пытаюсь делать
переделал код теперь ошибка <br />
<b>Notice</b>: Undefined index: humidity in <b>/storage/ssd2/421/5620421/public_html/add_data.php</b> on line <b>9</b><br />не вылазит
И в созданый файл записались данные но на страничке их нет
Вот такое в мониторе порта
чет не понял
вот сейчас это и пытаюсь делать
переделал код теперь ошибка <br />
<b>Notice</b>: Undefined index: humidity in <b>/storage/ssd2/421/5620421/public_html/add_data.php</b> on line <b>9</b><br />не вылазит
есть ошибка или нет
контроль трезвости не прошел , сплю уже на ходу ))
ошибки в порте нет данные передаються и записываються в блокнот in-3
но на сайте пусто
получилось, даные теперь отображаються , но перестал включатель срабатывать , буфер не меняет свое состояние на 1 при включении. строки не сдвинулись вроди
Если еще актуально, по совету b707 можно сделать еще так:
в файле index.php поменяйте строчки:
задержка должна уйти
Если еще актуально, по совету b707 можно сделать еще так:
в файле index.php поменяйте строчки:
задержка должна уйти
Не работает ( в файле запись происходит но светодиод не загораеться
+ нужно обновить файл трансфер положения он офф
С таким кодом в порте только буфер и тоже его значение не меняеться при переключении
71 строчку удали,
073
while
(client.available())
074
{
075
char
c = client.read();
076
Serial
.print(c);
}}}
077
078
И смотри что получаешь в ответ...
Зачем вы делаете delay() после client.stop()?
delay() нужен в лучшем случае после последнего закидывания данных перед стопом, чтобы был шанс их передать. И flush() в Ethernet.h ровным счетом ничего не делает. Абсолютно. На самом нижнем уровне в функции находится одна закомментированная строчка "TODO".
И вообще - вы с этим дилеями в лупе имеете неиллюзорный шанс отреджектить половину входящих коннектов.
073
while
(client.available())
074
{
075
char
c = client.read();
076
Serial
.print(c);
}}}
077
078
удалил delay
код ардуины
Я хз чем еще помоч....
переписал заново код ардуины и перезалил файлы на серв и все заработало
Добавил еще одну кнопку на сервере но не могу до конца понять как мне в коде ардуины написать , в мониторе порта результат нажатия второй кнопки отображаеться сразу следующим символом после первой
Понимаю возможно тупо написал но я только учусь
buff2 не принимает значение 1
Уважаемые форумчане, всех с наступающим Новым годом! Пусть пусть он будет лучше уходящего !
Ранее уже писал в этой ветке по своей проблеме и мне помогли тогда за что и большое спаибо.
Тогда подзабросил этот проект т.к. небыло свободного времени, вот решил вернуться все весело клацает данные с датчиков передаються.
Решил задействовать в пилотной експлуатации и столкнулся с такой проблемой, состояние реле самопроизвольно меняеться на высокий уровень и больше arduino не реагирует на кнопки в браузере. Помагает только рестарт.
Закономерности когда она перестает реагировать не наблюдаю, как правило через час может перестать а когда и больше.
Заметил что только при длительной работе перестает выводиться служебный заголовок, и насколько понял после этого перестает ардуино реагировать
Хотя при проверке реакции нули (последняя строка) успешно меняют свой статус на 1 1 (в зависимости какое положение тумблера на страничке, две кнопки на страничке)
Notice: Undefined index: temperature in /storage/ssd2/421/5620421/public_html/add_data.php on line 3
Notice: Undefined index: humidity in /storage/ssd2/421/5620421/public_html/add_data.php on line 9
Notice: Undefined index: temperature1 in /storage/ssd2/421/5620421/public_html/add_data.php on line 15
00
Прошу по возможности подсказать почему дуня отказывается реагировать на запросы ?
Заранее всем благодарен
В дополнение в мониторе порта наблюдаю следующее:
Когда все ок идет такого вормата вывод
Когда ардуина зависает значение buff становится 0 и больше не реагирует на нажатие кнопки на странице
Изменния происходя только в строке которая обведена краснім при єтом буфер больше не меняет свое значение. до передергивания
99% - проблемы с питанием. Здесь по форуму поиском поройтесь, тем много было.
Спасибо, за подсказку, у меня ардуино мега 2560 и шилд питаються от юсб входа импульсной зарядкой от телефона на 700ма. Попробую запитать от другого разьема 7-12вольт. По результатам отпишусь
Запитал плату мега 2560 и шилд от внешнего блока 12вольт но результата не получил, наоборот еще больше глюков ( Буду читаь форум и попробую может золотую середину 7 вольт
Схема чего именно, блока питания или включения всей схемы ? Блок питания импульсный 12 вольт
Так схема-то ладно. В коде все завязано на переменную startRead, которая нигде не нулится после первого коннекта (во всяком случае я не вижу).
Спасибо за комментарий, буду смотреть, я можно сказать ” чайник " в этом деле, потому пока не совсем понимаю занулить, всмысле флеш если прошел первый конект?
В смысле - значение переменной. Но, если вы не понимаете что это за переменная и зачем она...
Типа такого ? Или то чтоя написал это бред? Спасибо за подсказки