webCliebt на ардуино

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

Всем здравствуйте)
Будьте добры, подскажите не знающему:
1. Возможно ли из ардуино сделать такой клиент, чтобы одна функция отвечала за передачу данных на сервер, потом она останавливалась примерно на час. А другая функция постоянно ждала ответа от сервера?

b707
Offline
Зарегистрирован: 26.05.2017

sava4aev пишет:
А другая функция постоянно ждала ответа от сервера?

"Постоянно" - это как? Если это "ответ", то он должен приходить в ответ на запрос и ждать его "постоянно" не нужно, он либо приходит сразу (в течении нескольких секунд), либо не приходит никогда.

А если сервер что-то посылает вашей ардуине по сврей иннициативе - то это уже не ответ, а запрос, и тогда сервер и клиент меняются местами.

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

Напишу по другому. Одна функция отправляет на сервер данные о температуре раз в сутки. Другая функция отправляет запрос на сервер и принимает ответ и включает либо отключает светодиод. Как это реализовать?

b707
Offline
Зарегистрирован: 26.05.2017

Это делается через HTTP-запросы. Как отправить запрос - посмотрите примеры к Вебклиенту.

Формат запроса зависит от сервера, на Народмоне один формат, на Thingspeek - другой. В хелпе к серверу обычно подробно расписано, как это делать, например : http://community.thingspeak.com/tutorials/arduino/send-data-to-thingspea...

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

Это все понятно. У меня сейчас отправка данных о температуре и принятие ответа сервера написано в одну функции все это работает, но если я включаю mills () это все останавливается. Соответстаенно я не смогу вкл лампочку пока не пройдут сутки
Задача чтобы разделить эту функцию на две части

b707
Offline
Зарегистрирован: 26.05.2017

sava4aev пишет:
Это все понятно. У меня сейчас отправка данных о температуре и принятие ответа сервера написано в одну функции все это работает, но если я включаю mills () это все останавливается. Соответстаенно я не смогу вкл лампочку пока не пройдут сутки Задача чтобы разделить эту функцию на две части

выкладывайте скетч, без этого какой смысл обсуждать?

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

b707 пишет:

sava4aev пишет:
Это все понятно. У меня сейчас отправка данных о температуре и принятие ответа сервера написано в одну функции все это работает, но если я включаю mills () это все останавливается. Соответстаенно я не смогу вкл лампочку пока не пройдут сутки Задача чтобы разделить эту функцию на две части

выкладывайте скетч, без этого какой смысл обсуждать?

void sendData(float t, float h) {
      if (client.connect(server, 80)) 
{
  client.connect(server, 80);
  String get_query;
  get_query = "GET /parser.php?p=";
  get_query.concat(p);
  get_query = get_query + "&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);
  client.print( "Host: " );
  client.println(server);
  client.println( "Connection: close" );
  client.println();
  client.println();
 delay(200);
    
      while (client.available())
 {
      char c = client.read();
        if ( c=='1')
        {
        buff=1;
        }
        if ( c=='0')
        {
         buff=0;
        }
      } 
      client.stop();
      client.flush();
     
  }
  else 
  {
   client.stop();
  
   client.connect(server, 80);
  }

  if ( buff==1)
        {
        digitalWrite (LED, HIGH);
        }
        else
        {
          digitalWrite(LED, LOW);
        }
  delay(500);
  }

Вот эта функция..

И еще вопрос сразу , я не пойму никак почему у меня лампочка мигает , если убрать delay вообще то она даже не загорится -_-

b707
Offline
Зарегистрирован: 26.05.2017

и что дальше? Где тут миллис, что тут не работает - нужно догадаться? Поймите, правильно заданный вопрос - две трети ответа.

Если эта функция работает - что на нее смотреть? Вам же ее нужно изменить с помощью миллис? - пробовали?  если да, показывайте.

И желательно законченный скетч, а не отдельную функцию. Если у вас там что-то "секретное" - соберите тестовую программу только с нужными частями, но выложенный код должен компилироваться.

 

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

Забыл что написал на форум, увлекся ахах, решил проблему, спасибо)