ESP8266 и GET запрос

Тема в разделе "Arduino & Shields", создана пользователем Кириллstrelok, 5 апр 2017.

  1. Здравствуйте, подключил esp8266 v7 к arduino. AT команды отправляю, все нормально. Теперь хочу сделать get запрос на сайт для сбора данных. Уже научился подключаться к сайту, но создавать и отправлять get запрос не получается:(. Очень нужна ваша помочь!
     
    Последнее редактирование: 7 апр 2017
  2. ИгорьК

    ИгорьК Гуру

    Меня на Гугле не забанили:

     
  3. Спасибо большое, за видео. Могли бы Вы помочь найти библиотеку ESP8266WiFi.h? Много библиотек arduino-master, а именно ESP8266WiFi.h найти не могу.
     
  4. ИгорьК

    ИгорьК Гуру

    Легко!
     
  5. ecoo

    ecoo Нерд

    Я, помню, тоже что-то с GET-запросом мучился, получилось что-то вроде (это не скетч, просто Си):

    Код (Text):

    const char DEFAULT_SERVER[] = "160.160.153.123";
    const char DEFAULT_PORT[] = "8080";
    const char DEFAULT_SETTINGS_REQUEST[] = "GET /docs/ HTTP/1.1\r\nHost: 160.160.153.123:8080\r\n\Accept: text/htmlr\nUser-Agent: Mozilla/5.0\r\nConnection: keep-alive\r\n\r\n";

    bool ESP_GetSettings()
    {
        ESP_Answer_Clear();
        printf("AT+CIPSTART=\"TCP\",\"%s\",%s\r\n", DEFAULT_SERVER, DEFAULT_PORT);

        if (DelayWithExam("CONNECT", 25))
        {
            ESP_Answer_Clear();
            printf("AT+CIPSEND=%d\r\n", sizeof(DEFAULT_SETTINGS_REQUEST) - 1);

            if (DelayWithExam("OK", 10))
            {
                ESP_Answer_Clear();
                printf("%s", DEFAULT_SETTINGS_REQUEST);

                if (DelayWithExam("json", 30))
                    return true;
                else return false;
            }
            else return false;
        }
        else return false;
    }
     
     
  6. ИгорьК

    ИгорьК Гуру

    Да, в секте Ардуино это делается сложновато...
    А так это делается у Lua:

    Код (Lua):
    http.get("http://httpbin.org/ip", nil, function(code, data)
        if (code < 0) then
          print("HTTP request failed")
        else
          print(code, data)
        end
      end)
    Или так:
    Код (C++):
    do
    host = "yandex.ru"
    curl = "GET / HTTP/1.1\r\n\r\n"
    srv = tls.createConnection()
    srv:on("receive", function(sck, c) print(c); srv:close(); srv = nil end)
    srv:on("connection", function(sck, c)
      sck:send(curl)
    end)
    srv:connect(443,host)
    end
     
  7. Всем спасибо за помощь! Уже сам нашел именно для ардуино =)