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}

У певній мірі це семантичне запитання або специфічне питання, якщо програма, що відповідає на такі запити, є "веб-сервером" - це може бути веб-сервер, який виконує різні допоміжні завдання для обробки даних і gpios (настільки, наскільки сервер, що обслуговує сторінки, може динамічно генерувати частину їх вмісту з запитів до баз даних), або це може бути спеціальна програма, яка обидва стосується даних і вміє спілкуватися HTTP.

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


Варто також пам’ятати, що така схема, як правило, працює найкраще на локальному рівні, коли телефон і ESP8266 є клієнтами однієї домашньої мережі WiFi. Якщо телефон не знаходиться "вдома", або він є, але є лише в мобільній мережі, що дозволяє йому дістатися до ESP8266 - це означатиме включення зовнішніх запитів до домашньої мережі, чогось бажано уникати. У цьому випадку досить популярно використовувати протокол, коли і пристрій ESP8266, і телефон незалежно виходять на зовнішній ретрансляційний сервер, який передає повідомлення між ними. MQTT - приклад схеми, яка часто використовується для системи з архітектурою на основі ретранслятора.


Також мені цікаво реалізувати DELETEдля порту ;-)
Арджан

1
У багатьох системах Linux вам потрібно "експортувати" GPIO, перш ніж використовувати його за допомогою інтерфейсу / sys / class / gpio. Я не знаю, звідки в голові, чи зможете ви "експортувати", але концептуально це могло б відповідати DELETE :-)
Chris Stratton

2

Так, ви можете написати спеціальний сервер TCP . Або для легшої ваги використовуйте UDP-сервер .

У будь-якому випадку, перейдіть до визначення свого власного протоколу додатка поверх TCP / UDP і дозвольте його надіслати його. І ви економите накладні витрати HTTP. (HTTP може мати близько 1000 байтів накладних витрат на повідомлення!)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.