ESP8266 không có trang web


9

Tôi có thể gửi dữ liệu tới ESP8266 mà không cần tạo máy chủ web không?

Tôi đang truy cập các chân GPIO của ESP8266 thông qua một máy chủ web. Bây giờ tôi muốn tạo một ứng dụng Android cho điều đó. Vì vậy, tôi muốn gửi dữ liệu tới 8266 mà không cần tạo máy chủ web. Điều này có khả thi không?


Bằng cách sử dụng Ứng dụng Android, bạn có ở cùng một mạng không?
Rohan

Câu trả lời:


8

Có, bạn có thể gửi dữ liệu tới ESP8266 mà không cần sử dụng máy chủ web, nhưng bạn có thể muốn sử dụng một hoặc sử dụng một cái gì đó có chức năng liên quan đến một.

ESP8266 là một thiết bị điện toán có mục đích khá chung với radio WiFi và ngăn xếp mạng, do đó, bạn có thể thực hiện bất kỳ giao thức hợp lý nào bạn quan tâm để mô tả bằng mã.

Tuy nhiên, nó đã trở nên khá phổ biến để thực hiện các giao thức trông và hoạt động giống như các trang web thu nhỏ dành cho tiêu dùng của con người.

tức là, thay vì khách hàng của bạn kết nối và làm một cái gì đó như

GET /index.html HTTP/1.1

nó có thể nói

GET /gpio/15/value HTTP/1.1

Trong đó URL không chỉ đến một tài liệu cụ thể mà là một số dữ liệu trên thiết bị bạn muốn truy cập. Bạn có thể làm điều tương tự cho POST, PATCH, DELETEvv yêu cầu.

Trừ khi bạn đang xây dựng một trang dành cho con người, thông thường dữ liệu bạn trao đổi sẽ không phải là các trang HTML. Thường thì nó có thể là một cái gì đó giống như JSON thay thế. Ví dụ

GET /gpio/15/value HTTP/1.1

có thể kích hoạt một phản ứng như

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

Tương tự, bạn có thể tạo một điểm cuối nơi khách hàng của bạn có thể đặt GPIO bằng cách nói

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

Ở một mức độ nào đó là một câu hỏi cụ thể về ngữ nghĩa hoặc cụ thể nếu chương trình trả lời các truy vấn đó là "máy chủ web" - đó có thể là một máy chủ web chạy các tác vụ trợ giúp khác nhau để xử lý dữ liệu và gpios (giống như các máy chủ phục vụ các trang có thể tự động tạo ra một số nội dung của họ từ các truy vấn cơ sở dữ liệu) hoặc đó có thể là một chương trình chuyên dụng vừa xử lý dữ liệu vừa biết cách nói chuyện HTTP.

Và tất nhiên, sử dụng HTTP để trao đổi tải trọng JSON chỉ là một trong nhiều cách thực hiện - nó thực sự là một cách phổ biến hiện đang sử dụng lại nhiều khái niệm giống như máy chủ web và thậm chí có thể cho phép sử dụng trình duyệt web để thử nghiệm.


Cũng đáng lưu ý rằng một sơ đồ như vậy có xu hướng hoạt động tốt nhất tại địa phương, khi điện thoại và ESP8266 là máy khách của cùng một mạng WiFi gia đình. Nếu điện thoại không "ở nhà" hoặc là vậy, nhưng chỉ trên một mạng di động, cho phép nó đạt tới ESP8266 có nghĩa là cho phép các yêu cầu bên ngoài vào mạng gia đình, tốt nhất nên tránh. Trong trường hợp đó, nó khá phổ biến để sử dụng một giao thức trong đó cả thiết bị ESP8266 và điện thoại tiếp cận độc lập với một máy chủ chuyển tiếp bên ngoài, truyền các tin nhắn giữa chúng. MQTT là một ví dụ về sơ đồ thường được sử dụng cho một hệ thống có kiến ​​trúc dựa trên máy chủ chuyển tiếp.


Ngoài ra, tôi tò mò về việc triển khai DELETEmột cổng ;-)
Arjan

1
Trên nhiều hệ thống linux, bạn phải "xuất" GPIO trước khi có thể sử dụng nó với giao diện / sys / class / gpio. Tôi không biết trên đỉnh đầu của mình nếu bạn có thể "không thể hiện" một cái, nhưng về mặt khái niệm có thể khớp với XÓA :-)
Chris Stratton

2

Có, bạn có thể viết một máy chủ TCP tùy chỉnh . Hoặc, để có trọng lượng nhẹ hơn, hãy sử dụng máy chủ UDP .

Dù bằng cách nào, hãy xác định giao thức ứng dụng của riêng bạn trên đầu TCP / UDP và yêu cầu ứng dụng của bạn gửi nó. Và bạn tiết kiệm chi phí hoạt động của HTTP. (HTTP có thể có khoảng 1000 byte phí trên mỗi tin nhắn!)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.