Esp8266 не отвечает на запрос от приложения для Android, созданного с помощью MIT App Inventor
Я надеюсь, что размещаю этот вопрос в правильном разделе. Я делаю проект "Умный дом" для выпускного семестра в колледже. Я использую микроконтроллер Atmega328p вместе с ESP8266 (Esp 01). Atmega328p управляет всеми датчиками и исполнительными механизмами и отправляет данные на Esp01 по последовательной связи.
Я создал веб-сервер на Esp01, к которому я планирую получить доступ, создав приложение с помощью MIT App Inventor. Мой запрос на получение имеет формат "http://192.168.43.42/4" где цифра в конце-это данные, которые я хочу отправить на сервер, а ответ, который я получаю от сервера, имеет формат "12&0&34,8", где " & " используется для разделения разных значений.
Моя проблема в том , что когда я получаю доступ к серверу из Chrome на своем ноутбуке , я получаю желаемый ответ, но когда я получаю доступ к нему с помощью приложения, я получаю сообщение об ошибке "Ошибка 1101 :Не удается найти указанный URL-адрес". Esp01 подключается к точке доступа с моего телефона, и я проверил IP, назначенный Esp01, чтобы убедиться, что мой запрос на получение верен.
Код для Esp01 в Arduino IDE находится здесь : https://gist.github.com/TheMagicSmoke/467d6227d670697464038056e22f302d
Ниже приведены блоки для приложения, созданные в App Inventor:
URL-адрес запроса GET при вводе из Chrome в ноутбуке сначала возвращает пустую страницу, но при обновлении Chrome я получаю желаемый ответ, о котором говорил ранее. И в приложении я использовал таймер , который запрашивает сервер с одним и тем же запросом GET каждые 2 секунды. Но когда я открываю приложение, ошибка продолжает появляться. Пожалуйста, предложите мне решение, я погуглил это без какого-либо успеха.
@user151016, 👍1
Обсуждение1 ответ
Лучший ответ:
Я нашел решение этой проблемы. Код, который я написал в среде IDE Arduino для Esp8266, не подходил для обработки запроса GET. Он принимал данные только как простой веб-сервер, а не как HTTP-сервер. Я публикую измененный код ниже .
https://gist.github.com/TheMagicSmoke/adaae1e4d92f258c88184c8690e68f08
поэтому я не смотрел на ваш код (первая версия). Я ожидал, что вы использовали пример WiFiWebServer, а не скетч, который ожидает данные через 10 миллисекунд после подключения, иначе это не удастся, @Juraj
- Сервер Esp8266 недоступен. Порт не открывается
- Как отправить HTTP-post данные в Node Express API с Arduino esp822 6?
- Ошибка при компиляции скетча для Arduino Uno (ld return 1)
- Существуют ли какие-либо модули Wi-Fi для Arduino или Uno, которые можно подключить к внешней антенне Wi-Fi?
- Esp8266 + Atmega328p в качестве прошивки
- Создание WebServer ip:port на модуле esp8266
- ОШИБКА: вернуть reinterpret_cast<T>(pgm_read_ptr(p));
- У меня есть код, печатающий нужные мне данные, но я не знаю, как подключить данные к IP-веб-серверу ESP8266.
Является ли MIT AppInventor чем-то, что работает локально на устройстве или компьютере в вашей сети, или чем-то, что работает где-то на веб-сайте?, @Majenko
Я отредактировал название, так как оно казалось вводящим в заблуждение. Я имел в виду, что я получаю доступ к серверу с помощью приложения для Android, созданного с помощью MIT App Inventor, который является веб-сайтом., @user151016
Мне трудно найти какую-либо конкретную информацию, но похоже, что "приложение" на вашем телефоне может быть просто интерфейсом для веб - серверов MIT, и код на самом деле работает там, а не на вашем телефоне, что означает, что код не может получить доступ к тому, что находится внутри вашей сети, - только к тем вещам, которые находятся в Интернете., @Majenko
Вы неправильно поняли. Сервер является локальным сервером, который был создан на esp8266. Приложение на моем телефоне отправляет запрос GET на этот сервер. И мой телефон, и Esp8266 находятся в одной сети Wi-Fi. Это не имеет никакого отношения к серверам в Массачусетском технологическом институте., @user151016
Нет, *ты* неправильно понял. Как я уже сказал, я не уверен, но я *думаю*, что AppInventor работает так: 1. вы разрабатываете свое приложение. 2. интерфейс отображается на вашем телефоне. 3. Взаимодействия отправляются с вашего телефона в MIT. 4. MIT выполняет код. 5. MIT пытается подключиться к вашему ESP8266. Ваш ESP8266 не подключен к Интернету, а MIT не находится в вашей локальной сети, поэтому MIT не может подключиться к нему., @Majenko
Я бы предложил использовать какую-нибудь стороннюю систему связи, такую как MQTT (если AppInventor поддерживает ее), или переключиться на реальный язык программирования, который работает непосредственно на вашем телефоне., @Majenko
Подключен ли телефон к Wi-Fi в той же сети, что и esp-01? (@Majenko, я помог здесь, на SE, с проектом с App Inventor, и не было никаких проблем с доступом к локальному esp-01), @Juraj
@Juraj "Esp01 подключается к точке доступа с моего телефона", @Majenko
вы пытались получить доступ к странице из браузера на телефоне?, @Juraj
@Majenko Приложения, созданные с помощью MIT App Inventor, запускают код локально на мобильном устройстве, а не через серверы MIT. Я в этом уверен. Спасибо, что помогли мне. Я нашел решение и опубликую его ниже в качестве ответа., @user151016
@Juraj спасибо тебе за помощь. Я нашел решение и опубликую его ниже в качестве ответа., @user151016
Можешь отправить сообщение. файл aia? Много раз заранее. Том, @tomavka