AndroidモバイルデバイスからRaspberryPi(Linux)にアクセスします。

AndroidモバイルデバイスからRaspberryPi(Linux)にアクセスします。

Springを使用してブラウザに「rspi_ip / light」と入力すると、常にLEDが点灯するRaspberryPiアプリケーションを作成しました。うまくいきますが、ネットワーク経由で他のAndroidアプリでこのLEDをオンにしたいと思います。ラズベリーパイと電話が同じネットワーク上にあるときに動作しますが、すべてのネットワークで開きたいです。どこからでもアクセスでき、安全に保つにはどうすればよいですか?私のルーターにはどのルールも適用したくありません。システムはプラグアンドプレイでなければなりません。ラズベリーパイをネットワークに接続し、他のアプリなしで携帯電話から接続できる必要があります(可能な場合)。

ベストアンサー1

これはMQTTの完全なユースケースのようです(HTTPに似ていますが、公開/購読機能があり、IoTプロジェクトに適しています)。装置間通信のための仲介者として使用できるサーバーであるMQTT「ブローカー」を使用する必要があります。 MQTTを調べることをお勧めします。仕組みの概要

携帯電話とRaspberry Piが互いにアクセスできるようにファイアウォール設定を構成する必要がないという点で、ngrokと同じです。パブリックインターネット経由でブローカーにアクセスする必要があります(パブリックブローカーを使用している場合はこれが保証されます)。

MQTT クライアント ライブラリはほぼすべての一般的なプログラミング言語で使用できるため、Python を使用する方が簡単になりますが、Raspberry Pi アプリケーションで Java を使用できます。汎アメリカ保健機関)。

どの言語を選択しても、Raspberry PiのプログラムはMQTTブローカーの「トピック」を「購読」します。トピックは他のデバイスから公開され、LEDに通知したい「メッセージ」が含まれています(/directive/powerStateメッセージのあるトピックなどON)。

エージェントはメッセージを管理および送信し、メッセージが転送されたかどうかを確認します。通常、ブローカーが所有するWebサイトのダッシュボードを介してアカウントを設定し、通常はデバイスをブローカーに接続するために使用できるユーザー名とパスワード(時にはAPIトークン)を生成するように要求します。 Raspberry PiのLEDプログラムに関するトピックとメッセージを投稿/購読するために、特にブローカーに「デバイス」を作成する必要があるかもしれません。次のようなより軽いものを使用するためにプロジェクトを変換することにした場合ESP8266)、ブローカーを介して生成された同じ資格情報と機器を使用できます。バラよりこのページ公共の仲介商のリストを得なさい。

あなたのWebブラウザはMQTTとは異なるプロトコルであるHTTPを使用しているため、MQTTに接続できるアプリを使用する必要があります(iOSとAndroidにはこれらのアプリが多く、Siri / Google Assistantのショートカット/統合もあります)。ブローカーのWebサイトで作成したアカウントとデバイス情報をアプリに入力すると、携帯電話で(どこでも!)ラズベリーパイのLEDを制御できます。

セキュリティに関しては、HTTP(ポート80を使用)にセキュリティバージョンがあるように(TLSを介したHTTPSはポート443を使用)、MQTT(ポート1883を使用)にもセキュリティバージョンがあります。ポート8883を使用したTLSによるセキュリティバージョン。 MQTTはネットワーク/デバイスを「ハッキング」に脆弱にしてはいけません。しかし、通常のHTTPを使用するのと同じように、安全でないMQTTを使用すると、ハッカーがより使いやすくなります。仲介者MQTTトラフィック(この可能性はほとんどありません)。

おすすめ記事