Шаг №5 – Передача данных на Web страницу

Программирование по порядку.
В этом скетче, добавляем интерфейс для передачи данных на Web страницу.

Скетч: step5-datapages

14 мыслей о “Шаг №5 – Передача данных на Web страницу”

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

    // Перезагрузка модуля по запросу вида http://192.168.0.101/restart?device=ok
    void handle_Restart() {
    String restart = HTTP.arg(“device”);
    if (restart == “ok”)
    HTTP.send(200, “text/plain”, “OK”);
    ESP.restart();
    }

    1. Полезное замечание!
      Тогда уж так:
      void handle_Restart() {
      String restart = HTTP.arg(“device”); // Получаем значение device из запроса
      if (restart == “ok”) { // Если значение равно Ок
      HTTP.send(200, “text / plain”, “Reset OK”); // Отправляем ответ Reset OK
      ESP.restart(); // перезагружаем модуль
      }
      else { // иначе
      HTTP.send(200, “text / plain”, “No Reset”); // Отправляем ответ No Reset
      }
      }

  2. А можно вместо:
    String НашаСтрока = “много-много всего”;
    …набиваем всё в НашаСтрока…

    HTTP.send(200, «text / plain», НашаСтрока); //сразу вся страница рисуется

    А можно выводить на страницу несколькими командами, типа как в сериал порт?..

    А то похоже ОЗУ не хватает, если много сгружать в НашаСтрока…

      1. в этом скетче да, в моем не помещается в строчную переменную, удобнее было бы “сбрасывать” данные кусками, не загружая всю страницу в строку.
        нашел такое, но для Эзернета:
        void setup()
        {
        Ethernet.begin(mac, ip);
        server.begin();
        }

        а потом сброс по кусочкам:
        client.print(out);
        client.print(” 100,”);
        ….
        client.stop(); //в конце (как я понял)

        а для вайфая не соображу как… но вроде можно тоже?
        (сорри за длинноту)

  3. Не понял о чем этот шаг((
    Где, собственно, “передача данных на web-страницу”? Взяли значения переменных присвоенные в скетче в лоб и просто вывели их в json-формате. В данном случае никакой разницы с plain/text из первого шага.
    Не-е-т, батенька, так не пойдет. Вы давайте-ка, получите данные введенные непосредственно в поля вэб-морды. Я подозреваю, здесь без запроса к БД уже никак не обойтись. Или, на худой конец, пошлого парсинга файла (txt? xml? csv?) с данными.

  4. Здравствуйте.

    Использую отладочную плату NodeMCU. Ваш проект выкачал непосредственно с этой страницы (http://esp8266-arduinoide.ru/step5-datapages/) и вгрузил в ESP8266 без изменений. При корневом подключении (в поисковой строке Google Chrome – 192.168.4.1) web-страница загружается, но значения всех полей остаются дефолтными:
    {{SSDP}}, {{ssid}}, {{timezone}} и т.д.

    При просмотре JSON – запроса (в поисковой строке Google Chrome – 192.168.4.1/configs.json) всё нормально:

    {“SSDP”: “SSDP-test”, “ssid”: “home”, “password”: “i12345678”, “ssidAP”: “WiFi”, “password”: “”, “ip”: “0.0.0.0”}.

    В чём может быть ошибка? Почему данные не передаются на web-страницу?

    1. это пуcтой файл json
      зайдите на веб страницу с настройками и укажите ваши значения, сохраните их тем самым заполните файл config.json

      1. Здравствуйте,Михаил. У меня в точности такая же проблема. 192.168.4.1/configs.json выдает нужные значения, но они на страницу не попадают. Я правильно понял что при таком запросе должен создаться файл configs.json с заполненными данными?
        Не совсем понял что значит заполнить его данными. Какой формат у этого файла должен быть?

  5. После прошивки, CUT HERE FOR EXCEPTION DECODER
    циклично в порту. И светодиод моргает как сумасшедший.
    Сделал декодинг, но не ясно(((
    Decoding stack results
    0x40100900: umm_init() at C:\Users\antonin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\umm_malloc\umm_malloc.cpp line 263
    0x40100b50: realloc(void*, size_t) at C:\Users\antonin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\umm_malloc\umm_malloc.cpp line 822
    0x4010027c: millis() at C:\Users\antonin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\core_esp8266_wiring.cpp line 185
    0x40100c2d: calloc(size_t, size_t) at C:\Users\antonin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\umm_malloc\umm_malloc.cpp line 902
    0x40100c2d: calloc(size_t, size_t) at C:\Users\antonin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\umm_malloc\umm_malloc.cpp line 902
    0x402018b4: getContentType(String) at C:\Users\antonin\Desktop\Step5-DataPages/FS.ino line 48
    0x40201890: getContentType(String) at C:\Users\antonin\Desktop\Step5-DataPages/FS.ino line 46
    0x401008cb: umm_malloc_core(size_t) at C:\Users\antonin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\umm_malloc\umm_malloc.cpp line 511
    0x4010028c: millis() at C:\Users\antonin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\core_esp8266_wiring.cpp line 188
    0x402011e6: std::_Function_base::_Base_manager >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) at c:\users\antonin\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include\c++\4.8.2/functional line 1893
    0x40201056: esp8266webserver::FunctionRequestHandler ::canUpload(String) at C:\Users\antonin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/detail/RequestHandlersImpl.h line 35
    0x402029cc: esp8266webserver::ESP8266WebServerTemplate ::_parseForm(WiFiClient&, String const&, unsigned int) at C:\Users\antonin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer\src/Parsing-impl.h line 413
    0x40100b85: realloc(void*, size_t) at C:\Users\antonin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\umm_malloc\umm_malloc.cpp line 829

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

    1. Разобрался. Всего то нужно было в функции (handleFileRead) заменить htm на html. Два дня мучался, и только сейчас заметил.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.