ESP8266 чтение с веб сервера

Тема в разделе "ESP8266, ESP32", создана пользователем Augan, 7 ноя 2017.

  1. Augan

    Augan Нуб

    Добрый день, друзья! Хотел управлять светодиодом через браузер с помощью ESP8266. Но client.read() читает совсем другие значения 72. А на сервере только два значения 1 или 2. Помогите пожалуйста! Может кто-нибудь сталкивался с этим

    Код (C++):
    #include <ESP8266WiFi.h>

    int ledPin = 2;
    int buff=0;                                
    const char* ssid = "DOMM_KZ";
    const char* password = "";
    const char* host = "shdomm.000webhostapp.com";

    WiFiClient client;
    void setup() {
      Serial.begin(9600);
      WiFi.mode(WIFI_STA);
      WiFi.begin(ssid, password);
      pinMode(ledPin, OUTPUT);
      digitalWrite(ledPin, HIGH);
      while (WiFi.status() != WL_CONNECTED)
      {
        delay(500);
      }
    }
    void loop()
    {
      Serial.println("=================================");
      WiFiClient client;
      if (client.connect(host, 80))
          {
        Serial.println("Connected");
        client.print( "GET /add_data.php?");
        client.println( " HTTP/1.1");
        client.print( "Host:" );
        client.println(host);
        client.println( "Connection: close" );
            client.println();
            client.println();

       delay(1000);  
          while (client.available() > 0)
            {
            int c = client.read();
            //client.flush();
            Serial.println("Request from browser: ");
            Serial.println(c);
              if ( c== '1')
              {
                buff=1;
              }
              else if ( c== '2')
              {
                buff=0;
              }
            }
          client.stop();
          client.flush();
          delay(100);
     
          }
       else
          {
           client.stop();
           delay(1000);
           client.connect(host, 80);
          }

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

    }
     

    Вложения:

    • gdgd.png
      gdgd.png
      Размер файла:
      35,1 КБ
      Просмотров:
      678
  2. DIYMan

    DIYMan Guest

    72 - это код буквы H, первой буквы HTTP-ответа: "HTTP/1.0 200 OK" - всё работает корректно.

    Вы используете протокол HTTP - будьте добры ему следовать.
     
  3. Augan

    Augan Нуб

    Как мне это исправить тогда?
    Спасибо заранее
     
  4. Augan

    Augan Нуб

    Как мне это испаврить тогда?
    Спасибо заранее
     
  5. DIYMan

    DIYMan Guest

    Читать спецификацию протокола HTTP и начать понимать, как происходит общение по этому протоколу. Вы посылаете запрос GET, и должны хотя бы приблизительно представлять, что вернёт вам сервер в ответ на этот запрос. А вернёт он многабукаф, подробности - в HTTP RFC.
     
  6. Augan

    Augan Нуб

    Спасибо за советы
     
  7. rkit

    rkit Гуру

    Возьмите готовую библиотеку httpclient и не читайте больше источников, которые посоветовали вам вручную писать HTTP.
     
  8. Augan

    Augan Нуб

    httpclient это библиотека для esp8266 или для ethernet ?
     
  9. DIYMan

    DIYMan Guest

    А посмотреть в интернете, не? Ну в первых же ссылках в гугле по запросу "httpclient arduino" ;)

    Там чуть выше неадекватный местный тролль написал какую-то очередную дичь, не знаю, о чём он, т.к. в игноре, но предположу, что это он вам посоветовал библиотеку httpclient и как-то прошёлся ещё и по мне - у него в крови полить ядом кого-нибудь, не обращайте внимания ;)

    По поводу библиотек скажу лишь - можно использовать и их, не вопрос. Но тогда - уж лучше полностью переделать ваш код, т.к. раз вы сами РУЧКАМИ формируете HTTP-запрос, то я вам и отвечал в том разрезе, что вы должны понимать, как это работает, и РУЧКАМИ разобрать HTTP-ответ от сервера - там не бином Ньютона, в первом приближении.

    Если вам этого не нужно, вы не хотите разбираться, как и что работает на уровне протоколов - любая подходящая библиотека в помощь, готового кода сейчас валом на гитхабе, надо только чуть-чуть поискать. Только, опять же, ключевое - ВАМ поискать, а не за вас чтоб искали ;) Пока же вы задаёте вопросы, которые говорят о том, что вы совершенно не хотите сделать над собой усилие и поискать ответ на заданный вами же вопрос выше - в том же гугле. Это несложно, пробуйте ;)
     
    БАРМАТОГРАФ нравится это.
  10. rkit

    rkit Гуру

    И для esp8266, и для ethernet , и для чего угодно. Наберите в гугле и будет вам счастье.

    На личности я никогда не перехожу. Я всего лишь дал практический совет как отличить хороший источник от плохого. Советую вам научиться не воспринимать любую поправку как личную атаку. Сбережете много нервов.
     
  11. Augan

    Augan Нуб

    Спасибо всем за советы! Разобрался с этой проблемой