ESP8266 Ohne Webseite


9

Kann ich Daten an einen ESP8266 senden, ohne einen Webserver zu erstellen?

Ich greife über einen Webserver auf die GPIO-Pins von ESP8266 zu. Jetzt möchte ich eine Android App dafür machen. Ich möchte also Daten an den 8266 senden, ohne einen Webserver zu erstellen. Ist dies möglich?


Würden Sie sich mit einer Android-App im selben Netzwerk befinden?
Rohan

Antworten:


8

Ja, Sie können Daten an einen ESP8266 senden, ohne einen Webserver zu verwenden. Möglicherweise möchten Sie jedoch einen oder einen funktional verwandten Server verwenden.

Ein ESP8266 ist ein ziemlich Allzweckcomputergerät mit einem WiFi - Radio und Netzwerk - Stack, damit Sie können fast jedes vernünftiges Protokoll implementieren Sie in Code beschreiben kümmern.

Es ist jedoch sehr populär geworden, Protokolle zu implementieren, die ähnlich aussehen und sich wie Miniaturwebseiten verhalten, die für den menschlichen Verzehr bestimmt sind.

dh anstatt dass Ihr Client eine Verbindung herstellt und so etwas tut

GET /index.html HTTP/1.1

es könnte sagen

GET /gpio/15/value HTTP/1.1

Wenn sich die URL nicht auf ein bestimmtes Dokument bezieht, sondern auf einige Daten auf dem Gerät, auf das Sie zugreifen möchten. Dieses und ähnliche Dinge tun , für POST, PATCH, DELETEetc Anfragen.

Wenn Sie keine Seite für den menschlichen Gebrauch erstellen, sind die Daten, die Sie austauschen, normalerweise keine HTML-Seiten. Oft könnte es stattdessen so etwas wie JSON sein. So zum Beispiel

GET /gpio/15/value HTTP/1.1

könnte eine Antwort wie auslösen

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

Ebenso können Sie einen Endpunkt erstellen, an dem Ihr Client möglicherweise einen GPIO festlegt, indem Sie sagen

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

Es ist bis zu einem gewissen Grad eine semantische oder implementierungsspezifische Frage, ob das Programm, das solche Fragen beantwortet, ein "Webserver" ist - es könnte ein Webserver sein, der verschiedene Hilfsaufgaben ausführt, um mit den Daten und GPios umzugehen (ähnlich wie ein Server, der Seiten dynamisch bedient) einen Teil ihres Inhalts aus Datenbankabfragen generieren), oder es könnte sich um ein dediziertes Programm handeln, das sich sowohl mit den Daten befasst als auch weiß, wie man HTTP spricht.

Und natürlich ist die Verwendung von HTTP zum Austausch von JSON-Nutzdaten nur eine von vielen Möglichkeiten - es handelt sich zufällig um eine derzeit beliebte Methode, die viele Webserver-ähnliche Konzepte wiederverwendet und bis zu einem gewissen Grad sogar die Verwendung eines Webbrowsers zulässt zum Prüfen.


Beachten Sie auch, dass ein solches Schema in der Regel lokal am besten funktioniert, wenn das Telefon und der ESP8266 Clients desselben WLAN-Heimnetzwerks sind. Wenn das Telefon nicht "zu Hause" ist oder sich nur in einem Mobilfunknetz befindet, bedeutet das Erreichen des ESP8266, dass externe Anforderungen in das Heimnetzwerk zugelassen werden. Dies wird vorzugsweise vermieden. In diesem Fall ist es sehr beliebt, ein Protokoll zu verwenden, bei dem sowohl das ESP8266-Gerät als auch das Telefon unabhängig voneinander einen externen Relay-Server erreichen, der Nachrichten zwischen ihnen weiterleitet. MQTT ist ein Beispiel für ein Schema, das häufig für ein System mit einer Relay-Server-basierten Architektur verwendet wird.


Außerdem bin ich neugierig auf die Implementierung DELETEfür einen Port ;-)
Arjan

1
Auf vielen Linux-Systemen müssen Sie ein GPIO "exportieren", bevor Sie es mit der Schnittstelle / sys / class / gpio verwenden können. Ich weiß nicht genau, ob Sie einen "nicht exportieren" können, aber konzeptionell könnte das mit einem DELETE übereinstimmen :-)
Chris Stratton

2

Ja, Sie können einen benutzerdefinierten TCP-Server schreiben . Oder verwenden Sie für ein geringeres Gewicht einen UDP-Server .

In beiden Fällen können Sie Ihr eigenes Anwendungsprotokoll zusätzlich zu TCP / UDP definieren und von Ihrer Anwendung senden lassen. Und Sie sparen den Overhead von HTTP. (HTTP kann pro Nachricht etwa 1000 Byte Overhead haben!)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.