ESP8266 Webページなし


9

Webサーバーを作成せずにESP8266にデータを送信できますか?

ESP8266のGPIOピンにWebサーバー経由でアクセスしています。そのためのAndroidアプリを作成したいと思います。したがって、Webサーバーを作成せずに8266にデータを送信したいのですが、これは可能ですか?


Androidアプリを使用すると、同じネットワークに接続できますか?
Rohan、

回答:


8

はい、Webサーバーを使用せずにESP8266にデータを送信できますが、Webサーバーを使用したり、機能に関連するものを使用したりできます。

ESP8266は、WiFi無線とネットワークスタックを備えたかなり汎用のコンピューティングデバイスであるため、コードで記述したいと思う適切なプロトコルをほぼ実装できます。

ただし、人間が使用するためのミニチュアWebページのように見え、動作するプロトコルを実装することは非常に一般的になっています。

つまり、クライアントが接続して次のようなことをする代わりに

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}

そのようなクエリに答えるプログラムが「ウェブサーバー」である場合、それはある程度意味論的または実装固有の質問です-データとgpiosを処理するさまざまなヘルパータスクを実行するウェブサーバーである可能性があります(ページを提供するサーバーが動的にデータベースクエリからコンテンツの一部を生成する)、またはデータを処理し、HTTPの通信方法を知っている専用プログラムである可能性があります。

そしてもちろん、HTTPを使用してJSONペイロードを交換することは、多くの方法の1つにすぎません-たまたま現在人気のある方法であり、多くのWebサーバーのような概念を再利用しており、Webブラウザーの使用もある程度許可している場合がありますテスト用。


電話とESP8266が同じホームWiFiネットワークのクライアントである場合、そのようなスキームはローカルで最もよく機能する傾向があることも覚えておく価値があります。電話が「在宅」ではなく、モバイルネットワーク上にある場合、ESP8266への到達を許可するということは、ホームネットワークへの外部要求を許可することを意味します。その場合、ESP8266デバイスと電話の両方が独立して外部リレーサーバーに到達し、それらの間でメッセージを渡すプロトコルを使用するのが一般的です。MQTTは、リレーサーバーベースのアーキテクチャを備えたシステムでよく使用されるスキームの例です。


また、DELETEポートの実装についても知りたいです;-)
Arjan

1
多くのLinuxシステムでは、/ sys / class / gpioインターフェイスでGPIOを使用する前に、GPIOを「エクスポート」する必要があります。私はあなたがそれを「アンエクスポート」することができるかどうか頭の上を知りませんが、概念的にはDELETEと一致する可能性があります:-)
Chris Stratton

2

はい、カスタムTCPサーバーを作成できます。または、軽量化するには、UDPサーバーを使用します

どちらの方法でも、TCP / UDPの上に独自のアプリケーションプロトコルを定義し、アプリケーションに送信させます。また、HTTPのオーバーヘッドを節約できます。(HTTPでは、メッセージごとに約1000バイトのオーバーヘッドが発生する可能性があります!)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.