ESP8266 без веб-страницы

9

Могу ли я отправить данные на ESP8266 без создания веб-сервера?

Я получаю доступ к выводам GPIO ESP8266 через веб-сервер. Теперь я хочу сделать приложение для Android для этого. Поэтому я хочу отправить данные на 8266 без создания веб-сервера - возможно ли это?

ШИЛАДИТЯ ДЕЙ
источник
Используя приложение для Android, вы были бы в той же сети?
Рохан

Ответы:

8

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

ESP8266 - это довольно универсальное вычислительное устройство с WiFi-радио и сетевым стеком, следовательно, вы можете реализовать практически любой разумный протокол, который вы хотите описать в коде.

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

то есть вместо того, чтобы ваш клиент подключался и делал что-то вроде

GET /index.html HTTP/1.1

это может сказать

GET /gpio/15/value HTTP/1.1

Где URL относится не к конкретному документу, а к некоторому фрагменту данных на устройстве, к которому вы хотите получить доступ. Вы можете сделать то же самое для POST, PATCH, и DELETEт.д. запросов.

Если вы не создаете страницу для потребления человеком, обычно данные, которыми вы обмениваетесь, не будут HTML-страницами. Часто это может быть что-то вроде JSON. Так например

GET /gpio/15/value HTTP/1.1

может вызвать ответ как

{"gpio": 15, "direction": "in", "value": 0}

Точно так же вы можете сделать конечную точку, где ваш клиент может установить GPIO, сказав

POST /gpio/15 HTTP/1.1
{"direction": "out", "value": 1}

Это в некоторой степени семантический или специфический для реализации вопрос, если программа, отвечающая на такие запросы, является «веб-сервером» - это может быть веб-сервер, который выполняет различные вспомогательные задачи для работы с данными и gpi (во многом динамически сервер, обслуживающий страницы) генерировать часть своего контента из запросов к базе данных), или это может быть специальная программа, которая одновременно работает с данными и знает, как общаться по HTTP.

И, конечно, использование HTTP для обмена полезными нагрузками JSON - это только один из многих способов сделать что-то - просто он в настоящее время является популярным, который повторно использует многие концепции, подобные веб-серверу, и может в некоторой степени даже разрешить использование веб-браузера. для тестирования.


Также стоит помнить, что такая схема лучше всего работает локально, когда телефон и ESP8266 являются клиентами одной домашней WiFi-сети. Если телефон не «дома» или есть, но находится только в мобильной сети, то, чтобы телефон достигал ESP8266, это означало бы разрешение внешних запросов в домашнюю сеть, чего желательно избегать. В этом случае довольно популярно использовать протокол, когда устройство ESP8266 и телефон независимо обращаются к внешнему серверу ретрансляции, который передает сообщения между ними. MQTT является примером схемы, часто используемой для системы с архитектурой ретрансляции на сервере.

Крис Страттон
источник
Кроме того, мне интересно реализовать DELETEпорт ;-)
Арьян
1
Во многих системах Linux вам нужно «экспортировать» GPIO, прежде чем вы сможете использовать его с интерфейсом / sys / class / gpio. Я не знаю по макушке, если вы можете «неэкспортировать» один, но концептуально это могло бы соответствовать УДАЛЕНИЮ :-)
Крис Страттон
2

Да, вы можете написать собственный TCP-сервер . Или, для более легкого веса, используйте сервер UDP .

В любом случае, вам нужно определить собственный протокол приложения поверх TCP / UDP, и ваше приложение отправит его. И вы экономите на накладных расходах HTTP. (HTTP может иметь около 1000 байтов на каждое сообщение!)

BraveNewCurrency
источник