Чи можу я надіслати дані на ESP8266 без створення веб-сервера?
Я отримую доступ до штифтів GPIO ESP8266 через веб-сервер. Тепер я хочу зробити для цього додаток для Android. Тож я хочу відправити дані на 8266, не роблячи веб-сервер - чи це можливо?
Чи можу я надіслати дані на ESP8266 без створення веб-сервера?
Я отримую доступ до штифтів GPIO ESP8266 через веб-сервер. Тепер я хочу зробити для цього додаток для Android. Тож я хочу відправити дані на 8266, не роблячи веб-сервер - чи це можливо?
Відповіді:
Так, ви можете надіслати дані на 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
для порту ;-)
Так, ви можете написати спеціальний сервер TCP . Або для легшої ваги використовуйте UDP-сервер .
У будь-якому випадку, перейдіть до визначення свого власного протоколу додатка поверх TCP / UDP і дозвольте його надіслати його. І ви економите накладні витрати HTTP. (HTTP може мати близько 1000 байтів накладних витрат на повідомлення!)