? Zwei Pis verbinden ?

  • Hallöchen zusammen,

    ich bin neu hier und ich hoffe, dass ich mich mit meiner ersten Frage bzw. Thema nicht direkt unbeliebt mache :daumendreh2:

    Ich bin Student und habe ein Projekt am laufen, in dem ich zeigen soll, dass ich mit einem Raspberry Pi Daten annehmen, verwerten und online stellen kann.

    Da ich bis vor dem Projekt nichts von dem Pi wusste, habe ich mich zunächst eingearbeitet.
    So Kleinigkeiten, wie zum Beispiel LEDs blinken lassen, Temperaturen einlesen, etc., habe ich bereits hinbekommen.

    Nun will ich mit dem Raspberry Pi Daten von anderen Geräten annehmen können. Der Kontaktmann des Unternehmens, für die ich das machen sollen, konnte mir aber noch nicht verraten, von wem bzw. was ich die Daten bekommen. Ich geh von einem Micro-Controller aus :s

    Zum Testen habe ich einen zweiten Raspberry Pi bekommen. Der zweite dient lediglich zum Absenden irgendwelcher Werte, die ich dann mit dem ersten Pi empfangen und lesen soll. Nun habe ich bereits eine Ewigkeit mit Hilfe meines Freundes Google gesucht, aber nichts gefunden, was mir hilft. :wallbash:

    Nun die Frage an die Community:
    Kann ich überhaupt zwei Raspberry Pis miteinander kommunizieren lassen?


    :danke_ATDE: Für jeden Tipp und Hilfe wäre ich sehr dankbar :danke_ATDE:

  • Okay ;)

    Also als Versuch möchte ich nun folgendes schaffen. An dem einen Pi hab ich nen Temperatur-Sensor dran und kann auch die Temperatur einlesen.

    Diese Temperatur möchte ich nun gerne an den zweiten Pi weitergeben, um den Wert mit dem zweiten Pi online zu stellen.

    Es macht ja jetzt quasi keinen Sinn, extra einen zweiten Pi zu verwenden. Es geht einfach darum, dass das Unternehmen mir noch nicht sagen konnte, ob ich die Daten von einem Micro-Controller oder anderem bekomme. Daher dient der "Temperatur Pi" lediglich als "Datenspeicher" (ich hoffe, es ist verständlich :D )

    Für das Unternehmen ist es nämlich einfach nur wichtig, die Daten irgendwie an die Zentrale gesendet zu bekommen. Für das Online-Stellen soll halt ein Raspberry Pi dienen.

  • "Nun die Frage an die Community: Kann ich überhaupt zwei Raspberry Pis miteinander kommunizieren lassen?"

    Natürlich geht das. Sind ja im Grunde zwei vollwertige Computer und wie dbv schon schrieb, über Netzwerk geht das problemlos. Damit kannst du rein theoretisch auch mit Jedem deiner anderen Computer, PIs, Smartphones auf der Welt kommunizieren.

    In der Programmiersprache deiner Wahl sollte es eigentlich auch was zum Thema Netzwerkkommunikation geben. Daneben gibt es sicher auch noch andere, schon fertige Möglichkeiten Daten zu schicken. Die Frage ist nicht wie man Daten zwischen zwei Raspberrys austauscht, sondern wie man Daten zwischen zwei Computern bzw. Anwendungen austauscht. Die Eine Anwendung kann ja die Daten lesen senden und die andere Anwendung schreibt die Daten die ankommen in die Datenbank.

    Edited once, last by MrWagner (August 6, 2014 at 12:04 PM).

  • kreuze einfach die RxD von einem PI mit der TxD am anderen PI und umgekehrt, PI1 GND an PI2 GND nicht vergessen !
    Nullmodemkabel wäre was zum lesen.

    wenn wheezy auf beiden läuft hilft dir CuteCom, sonst im LX Terminal minicom
    http://kampis-elektroecke.de/?page_id=1682

    wenn es an einen Atmel mit 5V gehen soll brauchst du Sicherungen damit die 5V vom Atmel nicht den PI grillen:
    Atmel Atmega 8 an Raspberry Pi

    wenn es an eine echte V24 RS232 gehen soll ! brauchst du
    http://www.ebay.de/itm/0-20Max323…111954731&rt=nc
    max3232 ist wichtig, weil der auf der PI Seite mit 3,3V arbeiten kann !

    andere mit max oder ST 232 können nur mit 5V arbeiten !

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Edited once, last by jar (August 6, 2014 at 12:27 PM).

  • Für einen Datenaustausch stehen beim Raspberry ne ganze Menge Möglichkeiten zur Verfügung. Welche Du später verwenden kannst hängt nicht nur vom Raspberry, sondern hauptsächlich von dem (noch unbekannten) zweiten Gerät ab. Wenn Du 2 Raspberrys miteinander verbinden willst dann hast Du die freie Auswahl.

    Mir fallen dazu diese Möglichkeiten ein:
    - RS232-Verbindung (Auch für Kommunikation mit älteren PC's und Microcontrollern)
    - I2C-Bus (Auch für Kommunikation mit Microcontrollern und diversen anderen Sensor/Aktor-IC's)
    - Ethernet/Wlan (Auch für Kommunikation mit PC's und Smartphones)
    - GPIO mit Morsecode :D (Auch für Kommunikation mit PC's, Microcontrollern und SPS'en)
    - über diverse USB-Zusatzhardware (Auch für Kommunikation mit PC's und Smartphones)

  • Hm ... Deine Frage ist ja prinzipiell schon beantwortet.
    Mir fällt zum Datenaustausch zwischen zwei RPi ein:

    SPI, I2C, rs232, WLAN, LAN, Funk (2,4GHz, 433 MHz, ...) ...

    das Ganze in Python, PHP, Perl, C, C++, Assembler, ...

    Also such Dir was aus,
    cheers,
    -ds-

  • Vielen Dank für die vielen Antworten :thumbs1:

    Ich hatte versucht die i2c-Geschichte zu verstehen und zu testen, aber irgendwie wollte das nicht so ganz hinhauen, wie ich das wollte =( Ich weiß auch nicht.

    Werd mir mal die von Euch gepostet Sachen näher anschauen.
    Am wichtigsten ist es wohl mal endlich zu erfahren, wovon ich die Daten erhalten soll.

    :danke_ATDE:


  • Werd mir mal die von Euch gepostet Sachen näher anschauen.

    fange einfach mit dem "einfachsten" und gebräuchlichsten an, RS232

    gleiche Baudrate, erst mal reicht 9600 Bd 8N1, kein hardware Handshake und 2 Terminal Programme

    da kannst du erst mal genug Stolpersteine finden, dazu muss man nicht mit I2C SPI o.ä. anfangen, erst die Pflicht, die Kür kommt später ;)

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • oder noch "simpler" per netzwerkkabel und python
    Pi 1:

    Pi 2:


  • oder noch "simpler" per netzwerkkabel und python

    was ist daran simpel ?

    crossover oder nicht ?
    welches python 2 oder 3 ?
    Programmierkenntnisse vorhanden ? (bei dir ja, beim TO ?)

    mit RS 232 braucht er kein switch, kein crossoverkabel keine python Kenntnisse

    nur 3 Drähte !

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Edited once, last by jar (August 6, 2014 at 1:18 PM).


  • ... mir wurde gesagt es ist ein switch notwendig.
    ...


    Das könnte den Grund haben, dass der RPi Rx/Tx nicht automatisch "dreht" (also ein Crossover) wie man es mittlerweile von den GBit Schnittstellen gewohnt ist.
    Dann eben switch (hub) oder Crossover-Kabel ...

    cu,
    -ds-

  • Ich hab keine Crossoverkabel an meinem Pi, Bei mir dreht die Netzwerkkarte. Ausserdem hatte ich simpel in "" geschrieben, Und ob ich mir nun 3 Kabel ziehe, mich mit Seriellen Konsolen rumschlage (und am ende auch irgendwie automatisiert sagen muss was er senden soll) oder schaue wie ein python script starte, spielt imho eine untergeordnete Rolle


  • Ich hab keine Crossoverkabel an meinem Pi, Bei mir dreht die Netzwerkkarte.

    REM 2 PI !

    das bei dir die Netzwerkkarte dreht könnte man fast als OT werten :lol: scnr

    ich weiss immer noch nicht ob der PI wirklich drehen kann wie hier mal gesagt wurde, das ist aber für mich eine zusätzliche mögliche Fehlerquelle die ich einem Anfänger nicht raten würde ;)


    wenn er mal sowas bestellt:
    http://www.ebay.de/itm/1-Stuck-RS…=item461df6560a
    dauert aber aus China lange, schnelle gehts in D dafür teurer

    hat er die Tx Rx crossover Kabel für 2 PI gleich bei ! und später sogar an echte RS232

    evt. bietet uner User Raspiprojekt sowas an ?
    https://www.raspiprojekt.de/

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Hallo an alle!
    Ich habe derzeit ein ähnliches Problem wie Siegal; ich will nämlich zwei Raspberry Pis (nennen wir sie der Einfachkeit halber einfach a & b...) so miteinander verbinden, dass Pi a Dateien in ein Verzeichnis in einem tmpfs im Arbeitsspeicher von Pi b verlegen kann (oder sonst irgendwie Dateien Pi b zur Verfügung stellen kann, die von diesem möglichst leicht abgerufen werden können...), aber weder a noch b in der Lage sind, Dateien des jeweils anderen auszulesen, und b in keinster Weise Dateien nach a verlegen kann (da b potentiell in die Hände unliebsamer Hacker fallen könnte und es daher ungünstig wäre, wenn b Dateien a "zum Einlesen vor die Nase setzen" könnte bzw. Dateien aus a einlesen (und somit kopieren...) könnten). Um auf jeden Fall auf Nummer sicher zu gehen, sollte diese Verbindung solcherart sein, dass allein die Beschaffenheit der Hardware es b oder a nicht gestattet, anders als vorgesehen vorzugehen (also sozusagen eine Verbindung, die WIRKLICH nur in eine Richtung funktioniert). Ich habe zuerst daran gedacht, das Zeug von a nach b per Funk zu schicken, aber das wäre (dem Impuls nach zu urteilen) vermutlich erstens eine "Holzhammermethode", und zweitens weiß ich nicht, wie b komplette per Funk verschickte Dateien überhaupt annehmen/ einlesen bzw. elegant darauf zugreifen kann... und ob man komplette Dateien überhaupt per Funk verschicken kann... und ob das dann auch eine SICHERE Verbindung wäre...

    Ich wäre sehr erfreut, wenn mir da jemand sagen könnte, was da am besten geeignet wäre (es würde mir jede Menge Suchen und Durchwühlen verschiedener Möglichkeiten ersparen.)

  • Hallo RaspberryBaum,

    ich würde sowas über Socket-Server und Socket-Client machen.

    Dem Client sind die IP-Adresse und Port des Servers bekannt. Server lauscht. Client sendet eine Anfrage "Hallo - ich bin's".

    Der Server stellt dem Client eine Frage, die nur der Client richtig beantworten kann. Letztlich also irgendwas kodiertes. Wenn der Client richtig geantwortet hat, dann bleibt die Verbindung für Weiteres offen.

    Hat sich der Client nicht authentifizieren können, macht der Server zu - und sperrt ggf. die IP-Adresse des Clients (oder nach mehreren gescheiterten Versuchen.

    Auf diese Weise kannst Du davon ausgehen, dass nur Deine beiden RPi's miteinander kommunizieren und sich nichts Drittes einmogeln kann.

    Die Übertragung der Dateien erfolgt dann über FTP oder curl oder oder oder...


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Andreas skizziert das schon richtig, statt aber so etwas selbst zu frickeln (Kryptographie ist *schwer*), waere es glaube ich sinnvoller einfach eine SSH Verbindung mit einem authorized key zu benutzen. Das laeuft darauf hinaus, dass b auf a mit SSH bzw SFTP oder RSYNC zugreift, so dass die Dateien gespiegelt werden. Und a akzeptiert nur Verbindungen von b, wenn der den richtigen Schluessel hat. Und mittels der ChrootDirectory-Einstellung kannst du a anweisen, keine Verzeichnisse jenseits eines bestimmten Punktes freizugeben.

  • Danke für die guten Ratschläge. Ich habe mir die Möglichkeiten angesehen/ durchdacht und bin an folgendem Punkt hängengeblieben: Beide Ratschläge basieren auf einer Benutzung des Internets. Das ist an sich erstmal die beste Lösung, die mir zur Zeit zur Verfügung steht, ich wollte aber nochmal fragen: Gibt es auch eine Möglichkeit, das ganze mit einer "Hardware-Verbindung" zu machen? Die Idee (was ich eigentlich schon vorher hätte erwähnen sollen...) war nämlich eigentlich, a potenziell sensible Daten anzuvertrauen bzw. diese auf a zu bearbeiten und zu speichern, und für etwaige Internetzugriffe, die mit den Daten auf a erfolgen sollen (wenn Teile davon z.B. ins Netz geladen werden sollen...), b zu verwenden, diesen jedoch sozusagen von a aus "fernzusteuern". Wenn die Verbindung zwischen a und b übers Internet funktioniert, wäre das ganze irgendwie umsonst, da es letztlich dazu dienen soll, a vom Internet vollständig fernzuhalten und zugleich zu ermöglichen, Dateien, die ins Netz sollen, auf b zu bringen, von wo ich sie dann hochladen würde. Sozusagen will ich b vorschicken, sodass a sicher vor Angriffen aus dem Internet ist und höchstens b die ganze Scheiße abbekommt, da ja lediglich b ans Netz geht. Deshalb sollte die Verbindung ja auch unbedingt in Form einer Einbahn-Straße vorliegen: damit b keine Daten von a einlesen kann/ betrachten kann, die etwaige Angreifer aus dem Netz nicht in die Hände kriegen sollten, und a nichts von b einlesen kann, da b a -wenn es gehackt wird- schließlich einen Virus vor die Nase setzen könnte.

    Internet <--> b <--a

    Problem:
    Wenn a und b übers Internet kommunizieren, bringt das Ganze nichts, da a ja eigentlich gerade KEINEN Internetanschluss haben soll.

    Ich weiß, ich hätte vorher erwähnen sollen, wie ich mir das eigentlich denke. Tut mir leid. Hat trotzdem irgendjemand eine Ahnung, wie man von a Dateien nach b kriegt, OHNE a ans Netz zu lassen?
    Kann übrigens verstehen, wenn jetzt alle, die mir geantwortet haben, ziemlich wütend auf mich sind. Ich hätte meine Frage präziser erläutern müssen.
    Automatisch zusammengefügt:
    a und b lägen übrigens räumlich direkt beieinander.

  • Generell ließt sich dein Text sehr schwer da du einfach nur a oder b irgendwo so platzierst ohne Hervorhebung/Abgrenzung zum restlichen Text... Auch das fehlen von Absätzen usw erschwert das Verständnis deines Vorhabens.

    Wenn a keine Kenntnisse von b haben sollte, da a opfer von Hackern sein könnte, wäre denk ich die einfachste Möglichkeit ausschließlich b als treibende Kraft zu nutzen.

    Fraglich wäre in wiefern die beiden Pi's voneinander entfernt sind. Wenn die an verschiedenen Standorten sind und kein "Kabel" verlegt ist, kann eine Kommunikation nur über Netzwerk wie Internet oder UMTS usw erfolgen.

    Desweiteren ist fraglich um welche Art von Dateien es sich handelt - OHNE Netzwerk o.ä.. lassen sich kompilierte Dateien nur schwer übertragen, vielleicht durch Beamen aber ich glaub nicht in diesem Jahrhundert :D

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!