ESP8266 Tanpa Halaman Web

9

Bisakah saya mengirim data ke ESP8266 tanpa membuat server web?

Saya mengakses pin GPIO ESP8266 melalui server web. Sekarang saya ingin membuat aplikasi Android untuk itu. Jadi saya ingin mengirim data ke 8266 tanpa membuat server web — apakah ini mungkin?

SHILADITYA DEY
sumber
Dengan menggunakan Aplikasi Android, apakah Anda akan berada di jaringan yang sama?
Rohan

Jawaban:

8

Ya, Anda dapat mengirim data ke ESP8266 tanpa menggunakan server web, tetapi Anda mungkin ingin menggunakannya, atau menggunakan sesuatu yang secara fungsional terkait dengan itu.

ESP8266 adalah perangkat komputasi dengan tujuan umum dengan radio WiFi dan tumpukan jaringan, karenanya, Anda dapat mengimplementasikan hampir semua protokol yang masuk akal yang ingin Anda uraikan dalam kode.

Namun, telah menjadi sangat populer untuk mengimplementasikan protokol yang terlihat dan bertindak seperti halaman web mini yang ditujukan untuk konsumsi manusia.

yaitu, bukannya klien Anda menghubungkan dan melakukan sesuatu seperti

GET /index.html HTTP/1.1

mungkin dikatakan

GET /gpio/15/value HTTP/1.1

Di mana URL merujuk bukan pada dokumen tertentu, tetapi pada sebagian data pada perangkat yang ingin Anda akses. Anda dapat melakukan hal serupa untuk POST,, permintaan PATCH, DELETEdll.

Kecuali jika Anda membuat halaman untuk konsumsi manusia, biasanya data yang Anda tukarkan bukan halaman HTML. Seringkali itu mungkin seperti JSON. Jadi misalnya

GET /gpio/15/value HTTP/1.1

mungkin memicu respons suka

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

Demikian pula, Anda dapat membuat titik akhir di mana klien Anda dapat menetapkan GPIO dengan mengatakan

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

Pada tingkat tertentu, semantik atau pertanyaan khusus implementasi jika program yang menjawab pertanyaan seperti itu adalah "server web" - itu bisa berupa server web yang menjalankan berbagai tugas pembantu untuk menangani data dan gpios (seperti server yang melayani laman mungkin secara dinamis menghasilkan beberapa konten mereka dari permintaan basis data), atau itu bisa berupa program khusus yang keduanya berhubungan dengan data dan tahu cara berbicara HTTP.

Dan tentu saja menggunakan HTTP untuk bertukar muatan JSON hanyalah salah satu dari banyak cara dalam melakukan sesuatu - itu hanya menjadi salah satu yang populer saat ini yang menggunakan kembali banyak konsep seperti server web, dan mungkin sedikit banyak bahkan mengizinkan penggunaan browser web untuk pengujian.


Perlu juga diingat bahwa skema semacam itu cenderung berfungsi paling baik secara lokal, ketika telepon dan ESP8266 adalah klien dari jaringan WiFi rumah yang sama. Jika telepon tidak "di rumah" atau itu, tetapi hanya pada jaringan seluler, memungkinkannya untuk mencapai ESP8266 berarti mengizinkan permintaan eksternal ke dalam jaringan rumah, sesuatu yang sebaiknya dihindari. Dalam hal itu, cukup populer untuk menggunakan protokol di mana perangkat ESP8266 dan telepon secara mandiri menjangkau ke server relay eksternal, yang meneruskan pesan di antara mereka. MQTT adalah contoh skema yang sering digunakan untuk sistem dengan arsitektur berbasis server relay.

Chris Stratton
sumber
Juga, saya ingin tahu tentang penerapan DELETEport ;-)
Arjan
1
Pada banyak sistem linux, Anda harus "mengekspor" GPIO sebelum dapat menggunakannya dengan antarmuka / sys / class / gpio. Saya tidak tahu dari atas kepala saya jika Anda dapat "tidak mengekspor" satu, tetapi secara konseptual itu bisa cocok dengan HAPUS :-)
Chris Stratton
2

Ya, Anda dapat menulis server TCP khusus . Atau, untuk bobot yang lebih ringan, gunakan server UDP .

Bagaimanapun, dapatkan mendefinisikan protokol aplikasi Anda sendiri di atas TCP / UDP, dan minta aplikasi Anda mengirimkannya. Dan Anda menghemat overhead HTTP. (HTTP dapat memiliki sekitar 1000 byte overhead per pesan!)

BraveNewCurrency
sumber