웹 페이지가없는 ESP8266


9

웹 서버를 만들지 않고 ESP8266에 데이터를 보낼 수 있습니까?

웹 서버를 통해 ESP8266의 GPIO 핀에 액세스하고 있습니다. 이제 Android 앱을 만들고 싶습니다. 따라서 웹 서버를 만들지 않고 8266으로 데이터를 보내려고합니다. 이것이 가능합니까?


Android 앱을 사용하면 같은 네트워크에 있습니까?
Rohan

답변:


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}

그러한 질의에 응답하는 프로그램이 "웹 서버"라면 그것은 어느 정도 의미 론적 또는 구현 특정 질문이다-그것은 웹 서버가 될 수있다. 데이터베이스 쿼리에서 일부 컨텐츠를 생성하거나 데이터를 처리하고 HTTP를 말하는 방법을 알고있는 전용 프로그램 일 수 있습니다.

물론 HTTP를 사용하여 JSON 페이로드를 교환하는 것은 여러 가지 방법 중 하나 일뿐입니다. 현재 많은 웹 서버와 같은 개념을 재사용하고 웹 브라우저의 사용을 어느 정도 허용하는 현재 인기있는 방법 일뿐입니다 시험용.


전화와 ESP8266이 동일한 홈 WiFi 네트워크의 클라이언트 인 경우 이러한 구성표가 로컬에서 가장 잘 작동하는 경향이 있다는 점도 명심해야합니다. 전화가 "집에 있지"않았지만 모바일 네트워크에만있는 경우 ESP8266에 도달하도록 허용하면 외부 요청을 홈 네트워크에 허용하는 것이 바람직합니다. 이 경우 ESP8266 장치와 전화가 외부 릴레이 서버에 독립적으로 연결되어 그들 사이에 메시지를 전달하는 프로토콜을 사용하는 것이 매우 인기가 있습니다. MQTT는 릴레이 서버 기반 아키텍처가있는 시스템에 자주 사용되는 체계의 예입니다.


또한 DELETE포트 구현 에 대해 궁금합니다. ;-)
Arjan

1
많은 리눅스 시스템에서는 / sys / class / gpio 인터페이스와 함께 사용하기 전에 GPIO를 "내보내기"해야합니다. 나는 "내보내기"할 수 있다면 내 머리 꼭대기를 모르지만 개념적으로 DELETE와 일치 할 수 있습니다 :-)
Chris Stratton

2

예, 사용자 정의 TCP 서버를 작성할 수 있습니다 . 또는 더 가벼운 무게의 경우 UDP 서버를 사용하십시오 .

어느 쪽이든, TCP / UDP 위에 자신의 응용 프로그램 프로토콜을 정의하고 응용 프로그램이 보내도록하십시오. 그리고 당신은 HTTP의 오버 헤드를 절약 할 수 있습니다. (HTTP는 메시지 당 약 1000 바이트의 오버 헤드를 가질 수 있습니다!)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.