Hallo! Ich möchte von einem Raspberry Pi auf ein anderes GNSS-RTK-Daten übertragen. Diese werden im Sekundentakt generiert und sollten ziemlich zeitnah am anderen Pi ankommen. Kurz zusammengefasst also: es sollte möglich sein, beliebige Bytes relativ schnell und zuverlässig von einem Pi auf ein anderes bekommen. Das ganze sollte in bestehenden C++ Code eingefügt werden können. Was wäre eurer Meinung nach der einfachste Weg? Vor allem ohne Firewallregeln, VPN usw.? Dachte schon an irgendwas mit Telegram oder matrix.org… Ginge das? Danke im Voraus! elpat
Da bleibt ja eigentlich nur noch ein ganz normaler TCP Socket oder UDP. UDP ist viel einfacher zu programmieren, wenn die Datenpakete klein (max.1400 Bytes) sind und ab und zu mal ein Paket verloren gehen darf. Aber bedenke, das die Kommunikation ohne VPN (bzw. anderer Verschlüsselung) leicht abgehört und manipuliert werden kann. Einer muss die IP Adresse des anderen kennen, um die Verbindung aufbauen zu können. Wenn diese sich häufig ändert, kannst du Dienste wie Dyndns nutzen. AVM hat ebenfalls so etwas für Nutzer von deren Router. Falls du IP v4 nutzt musst du im Router ein Port-Forwarding einrichten, damit dein interner Rechner von außen erreichbar wird.
Pat schrieb: > Vor allem ohne Firewallregeln, VPN usw.? In dem du einen zentralen Server im Internet einrichtest an den die Pakete gesendet werden, die dann von deinem zweiten system dort abgeholt werden. Hat den Vorteil es ist erweiterbar.
Kilo S. schrieb: > In dem du einen zentralen Server im Internet einrichtest Oder mietest. Bei AWS kostet ein MQTT-Server in der benötigten Größenordnung ~0,50€ pro Monat. Im ersten Jahr vmtl. komplett kostenlos, müsste im Startup-Kontingent liegen. Wenn du bei MQTT bleibst und keine anderen AWS-Dienste dazuklickst, bist du damit auch nicht bei Amazon gefangen, einen MQTT-Server kriegt man auch anderswo oder kann ihn ganz einfach selber betreiben.
Εrnst B. schrieb: > Oder mietest. Gleicher Gedanke auf andere Art ausgedrückt, ich dachte an einen kleinen V Server. Die gibt es auch sehr günstig. ;-) https://www.netcup.de/vserver/vps.php#v-server-details
Εrnst B. schrieb: > Oder mietest. Bei AWS kostet ein MQTT-Server in der benötigten > Größenordnung ~0,50€ pro Monat. Heißt dort "IoTCore" und den Kostenrechner findet man hier: https://calculator.aws/#/addService/IoTCore Michael
Εrnst B. schrieb: > MQTT-Server Das wäre auch mein Tipp. Den muss man nicht mal mieten, es gibt auch öffentliche MQTT-Server. https://iot4beginners.com/top-15-open-source-public-free-brokers-of-mqtt/
Die beiden Raspis befinden sich ja jeweils in einem LAN, oder? Dann verbinde doch die beiden zugehörigen Internet-Router (Fritzbox?) per VPN miteinander! Dadurch wird die IP der beiden Raspis für den jeweils anderen direkt erreichbar ... Achtung! Die beiden Netzadressen müssen unterschiedlich sein! Auf beiden Seiten z.B. 192.168.178.x (typisch Fritz) geht nicht! Was ginge wäre z.B. 192.168.178.x und 192.168.179.x ....
:
Bearbeitet durch User
Frank E. schrieb: > Dann verbinde doch die beiden zugehörigen Internet-Router (Fritzbox?) > per VPN miteinander! Wäre die einfachste Lösung, aber: Pat schrieb: > ohne Firewallregeln, VPN usw. Und dann bleibt halt nur noch ein externer Server, an den sich beide verbinden... Aber auch den Weg über VPN verbaut er sich nicht, wenn er einen MQTT-Client in seinen C++ - Code integriert. Dann läuft halt auf einem der Raspis noch ein mosquitto mit.
Pat schrieb: > Ich möchte von einem Raspberry Pi auf ein anderes GNSS-RTK-Daten > übertragen. Diese werden im Sekundentakt generiert und sollten ziemlich > zeitnah am anderen Pi ankommen. https://gpsd.gitlab.io/gpsd/index.html
Installiere auf den Nodes Tailscale. Tailscale erstellt ein VPN zwischen allen Nodes. So sind sie alle über eine private statische IP Adresse untereinander erreichbar. Der Vorteil von Tailscale ist, dass der Tunnel auch über ein NAT aufgebaut werden kann. Der Client ist für Linux, Win, Mac, IOS, Android erhältlich. Gratis bis 100 Devices. Ein neuer Node ist in 3 Minuten provisioniert.
Frank E. schrieb: > Was ginge wäre z.B. 192.168.178.x und 192.168.179.x .... Lieber nicht die 179 verwenden, die wird typischerweise für das Gastnetz verwendet.
Kommt darauf an, was du unter "zeitnah" verstehst ... Die Info-Quelle könnte ihre Infos in eine (beim Provider angelegte, übers Web erreichbare) MySQL-DB ablegen. Der "empfangende" Raspi könnte die gleiche DB einfach regelmäßig pollen (z.B im 10s-Takt) und die noch nicht als gelesen markierten Datensätze auslesen und/oder evtl. danach sogar einfach löschen ... Eine weitere Alternative: Ein Telegram-Bot! Sowohl das Senden als auch das Auslesen der letzten Meldung sind per HTTP-Request recht einfach. Dann benötigst du keine eigene Infrastruktur.
:
Bearbeitet durch User
Mario M. schrieb: > Frank E. schrieb: >> Was ginge wäre z.B. 192.168.178.x und 192.168.179.x .... > > Lieber nicht die 179 verwenden, die wird typischerweise für das Gastnetz > verwendet. Wenn du deiner FB die x.179 als Haupt-Netzadresse gibst, sucht sie sich selbst eine andere (z.B. 180) für das Gastnetz, so klug ist die Firmware schon :-)
Hallo! Danke für all eure Tipps! Am spannendsten klingt für mich Tailscale und die öffentlichen MQTT-Server. Mal sehen, was es letztendlich wird. Das Internet für die GNSS Geräte kommt meist von irgendeinem Smartphone-Hotspot oder Webcube oder was auch immer, deshalb scheiden alle Fritzbox&Co-Lösungen leider aus. Danke nochmals und schöne Grüße, elpat
Pat schrieb: > Hallo! > > Danke für all eure Tipps! kleine Seitenbemerkung, da wir nicht wissen wozu und warum. Wie zeitkritisch ist das ganze? Also das R in RTK. Wenn dir Latenzen von bis zu 1000 ms nix ausmachen, hast du Lösungsansätze. Wenn du unter 10 ms brauchst, dann sag bescheid.
Pat schrieb: > Dachte schon an irgendwas mit Telegram oder matrix.org… Ginge das? Witzigerweise ist diese Idee nicht mal die schlechteste. Kommt natürlich auf die Menge der Daten und die geforderte Latenz an. Und natürlich, ob du einen Anbieter wie Telegram in deinem Datenkanal eingebunden haben möchtest. Aber grundsätzlich ist die Telegram-API offen und gut dokumentiert. Du kannst dir zwei Bots erstellen, einen auf Pi 1 und den anderen auf Pi 2 nutzen und die Bots sich gegenseitig Nachrichten schreiben lassen. Dabei kommst du ohne VPN oder offene Ports aus, brauchst keinen öffentlich erreichbaren Host und brauchst keine Gateway-Applikation auf diesem Host. Dafür hast du aber noch einen Dritten mit im Boot. Musst du wissen ob das OK für deine Anwendung ist. In Python sind das jeweils 5 Zeilen Code oder so. In C++ vermutlich etwas mehr, aber auch machbar. Die API läuft über Web-Requests, d.h. jede Sprache die dich Requests absetzen lässt ist geeignet. Ich hab hier einen Raspi mit Webcam in Betrieb der mir regelmäßig Fotos schießt und mir täglich eine Status-Nachricht per Telegram aufs Handy schickt (Anzahl der neuen Fotos, Speicherauslastung, Uptime usw.)
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.