ESP8266不带网页


9

是否可以在不创建Web服务器的情况下将数据发送到ESP8266?

我正在通过Web服务器访问ESP8266的GPIO引脚。现在,我想为此制作一个Android应用程序。因此,我想在不使用Web服务器的情况下将数据发送到8266,这可能吗?


通过使用Android App,您是否会在同一网络上?
罗汉

Answers:


8

是的,您可以在不使用Web服务器的情况下将数据发送到ESP8266,但您可能要使用其中一个,或使用与之相关的功能。

ESP8266是具有WiFi无线电和网络堆栈的相当通用的计算设备,因此,您可以实现几乎所有您想在代码中描述的合理协议。

但是,实现外观和行为很像供人类消费的微型网页的协议已变得非常流行。

即,而不是您的客户端连接并做类似的事情

GET /index.html HTTP/1.1

它可能会说

GET /gpio/15/value HTTP/1.1

该URL不是指特定文档,而是指您要访问的设备上的某些数据。你可以做类似的事情POSTPATCHDELETE等请求。

除非您要构建供人类使用的页面,否则通常交换的数据将不是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}

如果回答此类查询的程序是“ Web服务器”,则在某种程度上是语义或实现特定的问题-它可以是运行各种帮助程序任务以处理数据和gpios的Web服务器(就像服务页面的服务器可能会动态通过数据库查询生成其某些内容),或者它可以是专用程序,既处理数据又知道如何使用HTTP。

当然,使用HTTP交换JSON负载只是多种处理方式中的一种-它恰好是当前流行的一种,它重用了许多类似于Web服务器的概念,甚至在一定程度上甚至允许使用Web浏览器用于检测。


还需要记住的是,当电话和ESP8266是同一家庭WiFi网络的客户端时,这种方案通常在本地最有效。如果电话不是“在家”,或者只是在移动网络上,允许它到达ESP8266意味着允许外部请求进入家庭网络,最好避免这种情况。在这种情况下,使用一种协议非常普遍,其中ESP8266设备和电话都独立地连接到外部中继服务器,该服务器在它们之间传递消息。MQTT是通常用于具有基于中继服务器的体系结构的系统的方案示例。


另外,我很好奇DELETE港口的实施;-)
Arjan

1
在许多Linux系统上,必须先“导出” GPIO,然后才能将其用于/ sys / class / gpio接口。我不知道是否可以“取消导出”,但从概念上讲,可以匹配DELETE :-)
Chris Stratton

2

是的,您可以编写一个自定义的TCP服务器。或者,为减轻重量,请使用UDP服务器

无论哪种方式,都可以在TCP / UDP之上定义自己的应用程序协议,然后让应用程序发送它。而且您节省了HTTP的开销。(HTTP每条消息可能有大约1000字节的开销!)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.