インターネット経由でラズベリーパイと通信する

インターネット経由でラズベリーパイと通信する

私はネットワーキングの初心者です。

Rpi-A は 3G サーフスティック経由でインターネットに接続され、Rpi-B は WiFi ホットスポット経由でインターネットに接続されています。

Rpi-A にはパブリック IP アドレスがあり、Rpi-B にはローカル/プライベート IP があることに気付きました。両方の Raspberry Pi は異なるネットワーク上にあります。

Rpi-A から Rpi-B にバイナリ データを送信したいのですが、これを実現する方法について何か提案はありますか?

更新: MQTT 接続をテストするために以下のコードを使用しました。XX.XX.XX.XX を Raspberry Pi のパブリック IP に置き換えます。それでも、このエラーが発生します ---> エラー: [Errno 10060] 接続先が一定時間後に適切に応答しなかったため、接続試行が失敗しました。または、接続されたホストが応答に失敗したため、確立された接続が失敗しました。このエラーの原因は何でしょうか? コードに何か不足している点がありますか?

import paho.mqtt.client as mqtt
import time

def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))

client = mqtt.Client()
client.on_connect = on_connect

client.connect("xx.xx.xxx.x", 1883, 60)

client.loop_start()

while True:
  time.sleep(2)
  client.publish('Due_0.72/cmd/in','hello')
  print "publish.."

答え1

RPi B を、自分で制御していないホットスポットで実行している場合は、Pi B から Pi A への逆接続 (ncat のようなものが機能するはずです) を作成し、その方法でデータを送信するか、クラウド内の OpenVPN サーバーのようなものを使用して 2 つの Pi 間でルーティングします。

Wi-Fi ホットスポット構成ポートにアクセスできる場合は、ssh などを Pi B に転送します (標準構成を使用している場合は、一般ポート 22/tcp)

答え2

RPi-B のネットワークには、NAT を使用して RPI-B がパブリック アドレス経由でインターネットに接続できるようにするルーターが必要です。

このような:

ここに画像の説明を入力してください

ルーターの設定にアクセスし、特定のポート (たとえば 22) を開き、そのポートへのすべての着信トラフィックを RPi-B の IP アドレスに転送する必要があります。

RPi-Bは、RPI-Bの組み合わせを通じてパブリックインターネットにアクセス可能になります。公共IP アドレスとポート 22。

RPi-Aから、FTPサーバーRPi-Bにデータを送信します。

関連情報