ESP8266 Web Sayfası Olmadan


9

Web sunucusu oluşturmadan ESP8266'ya veri gönderebilir miyim?

Bir web sunucusu üzerinden ESP8266'nın GPIO pinlerine erişiyorum. Şimdi bunun için bir Android uygulaması yapmak istiyorum. Bu yüzden bir web sunucusu yapmadan 8266'ya veri göndermek istiyorum - bu mümkün mü?


Bir Android Uygulaması kullanarak aynı ağda olur muydunuz?
Rohan

Yanıtlar:


8

Evet, bir web sunucusu kullanmadan ESP8266'ya veri gönderebilirsiniz, ancak bir tane kullanmak veya biriyle işlevsel olarak ilgili bir şey kullanmak isteyebilirsiniz.

Bir ESP8266 dolayısıyla, WiFi radyo ve bir ağ yığını ile oldukça genel amaçlı hesaplama cihazı olan edebilir kodda tarif etmek bakım makul protokolü hakkında sadece uygulamak.

Bununla birlikte, insan tüketimine yönelik minyatür web sayfalarına çok benzeyen ve hareket eden protokollerin uygulanması oldukça popüler hale gelmiştir.

yani, müşterinizin bağlantı kurması ve bunun gibi bir şey yapması yerine,

GET /index.html HTTP/1.1

söyleyebilir

GET /gpio/15/value HTTP/1.1

URL, belirli bir dokümana değil, cihazdaki erişmek istediğiniz bir veri parçasına karşılık gelir. Aşağıdakiler için benzer şeyler yapabilirsiniz POST, PATCH, DELETEvb istekleri.

İnsan tüketimi için bir sayfa oluşturmadığınız sürece, alıp verdiğiniz veriler HTML sayfaları olmaz. Genellikle bunun yerine JSON gibi bir şey olabilir. Yani mesela

GET /gpio/15/value HTTP/1.1

gibi bir yanıtı tetikleyebilir

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

Benzer şekilde, müşterinizin GPIO ayarlayabileceği bir uç nokta yapabilirsiniz.

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

Bu tür sorguları yanıtlayan program bir "web sunucusu" ise, bir dereceye kadar anlamsal veya uygulamaya özgü bir sorudur - veriler ve gpios'larla başa çıkmak için çeşitli yardımcı görevleri çalıştıran bir web sunucusu olabilir (sayfaların sunulduğu bir sunucunun dinamik olarak içeriklerinin bir kısmını veritabanı sorgularından oluşturabilir) veya hem verilerle ilgilenen hem de HTTP'nin nasıl konuşulacağını bilen özel bir program olabilir.

Ve elbette, JSON yüklerini değiştirmek için HTTP kullanmak, işleri yapmanın birçok yolundan sadece biridir - sadece web sunucusu benzeri kavramları yeniden kullanan ve bir dereceye kadar bir web tarayıcısının kullanımına izin verebilecek olan şu anda popüler olanıdır. test için.


Ayrıca, telefon ve ESP8266 aynı ev WiFi ağının istemcileri olduğunda, böyle bir şemanın en iyi yerel olarak çalışma eğiliminde olduğunu unutmayın. Telefon "evde" değilse veya sadece mobil bir şebekedeyse, ESP8266'ya ulaşmasına izin vermek, ev ağına harici isteklere izin vermek anlamına gelir, tercihen bir şey kaçınılmalıdır. Bu durumda, hem ESP8266 cihazının hem de telefonun bağımsız olarak aralarında mesaj ileten harici bir röle sunucusuna ulaştığı bir protokol kullanmak oldukça popülerdir. MQTT, geçiş sunucusu tabanlı bir mimariye sahip bir sistem için sıklıkla kullanılan bir şema örneğidir.


Ayrıca, DELETEbir liman için uygulama merak ediyorum ;-)
Arjan

1
Birçok linux sisteminde GPIO'yu / sys / class / gpio arabirimi ile kullanabilmeniz için önce "dışa aktarmanız" gerekir. Ben bir "unexport" Eğer kafamın üst kapalı bilmiyorum, ama kavramsal olarak bu bir DELETE maç olabilir :-)
Chris Stratton

2

Evet, özel bir TCP sunucusu yazabilirsiniz . Veya daha hafif ağırlık için bir UDP sunucusu kullanın .

Her iki durumda da, TCP / UDP'nin üstünde kendi uygulama protokolünüzü tanımlayın ve uygulamanızın göndermesini sağlayın. Ve HTTP yükü üzerinden tasarruf edersiniz. (HTTP, ileti başına yaklaşık 1000 bayt ek yüke sahip olabilir!)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.