私はネットワーキングの初心者です。
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)