Komunikation zwischen 2 pis

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi,
    Wenn ihr die Aufgabe hättet zwischen mehreren pi's Informationen auszutauschen, am besten über Lan, wie würdet ihr das angehen. Gibt es dafür in python ein modul oder ätwas ähnliches?

  • Linux is like a wigwam: No windows, no gates, but there is an Apache inside dancing Samba.


    Äh ... Sieht hier jemand den Wald vor lauter Bäumen nicht? Am einfachsten ist es über Samba.


    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.

  • Momentan gehts nur um einen simplen Binärzustand. Ein pi bekommt über einen Schalter ein signal, ändert in einer .txt den wert von 0 auf 1. Dann soll ein Signal über Lan zum anderen pi gehen der ebenso in einer .txt den zustand von 0 auf 1 ändert. Soll aber auch erweiterbar sein mit mehreren pi's

    (Hintergrund eine Haussteuerung mit mehreren pi's die untereinander komunizieren)

    mfg

    Einmal editiert, zuletzt von icefoto (29. Mai 2014 um 19:04)

  • @ Andreas
    das ganze soll automatisch passieren über python. ich dachte mir zuerst auch das es über samba das einfachste wäre. leider seint es aber keine standard funktion von Samba zu geben. In einem anderen Beitrag habe ich son mal gefragt wie das mit samba funktioniert. Daher bin ich mir nicht sicher ob es die beste Lösung ist, da dort steht ugly hack.

    mfg

  • Hallo Icefoto,

    dann bleibe ich trotzdem bei Samba.

    Ich würde auf allen beteiligten Raspberry Pi's Samba konfigurieren und einen gemeinsamen Netzwerkspeicher spendieren. Dort speichert jeder Pi in einem Verzeichnis alle ihn betreffenden Zustandsänderungen ab. Jeder andere Pi, der sich dafür interessiert schaut dort nach, ob irgendwas passiert ist, auf das er reagieren sollte.


    Der Vorteil dieser Lösung Deiner Aufgabenstellung liegt darin, dass Du eine "Zentrale" hast, in der alle Zustände bzw. Zustandsänderungen zusammenlaufen und z.B. von einem der Raspberry Pi angezeigt werden. Dies dient als Monitor (im Sinne Überwachungsinstrument), mit dessen Hilfe Du überwachen kannst, ob alle Zustandsänderungen korrekt erkannt und entsprechend beabsichtigte Aktionen erfolgen.

    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.


  • Das ist ja auch so geplant. Ein pi spielt den Server und alle anderen schauen ob sich was geändert hat, bzw ändern was.

    Dann habe ich das richtig verstanden.


    um über samba was zu ändern mit python kenne ich nur diese lösung
    https://pypi.python.org/pypi/PySmbClient/0.1.1

    oder gibs da noch andere?

    Python gehört zu den vielen Sprachen, mit denen es möglich sein soll, Dateien mit definiertem Inhalt an eine vorgegebene Stelle (Pfad) abzulegen. Das hat mit Samba gar nichts zu tun. Samba unterstützt nur das Speichern auf Lokationen, die außerhalb des eigenen Rechenknechtes liegen.


    Hmmm ... den ganzen Overhead von Samba nur um die eine oder andere Datei zu ändern?
    Da tät es imho ein scp auch ... und das noch resourcenschonender.

    cu,
    -ds-

    Hi Dreamshader,

    oder über scp, das stimmt. Meines Wissens ist Samba in einer standardmäßigen Raspbian-Wheezy Installation eh vorhanden. Es muss nur geringfügig konfiguriert werden. Zumindest habe ich das so gemacht, als hier plötzlich ein zweiter Raspberry Pi aufgetaucht ist (ich bekomme die Teile ja immer noch geschenkt: "Mach' mal was damit!").

    Eigentlich ist es egal, wie man die Dateien irgendwohin schaufelt. Welche Lösung die bessere ist, muss wohl Icefoto entscheiden.

    - Über scp muss jeder im Projekt beteiligte Raspberry Pi "wissen" , welcher andere Pi von einer Zustandsänderung informiert werden muss. Das stelle ich mir vom Wartungs- und Erweiterungsaufwand relativ hoch vor. Ab einer bestimmten Anzahl der beteiligten Pi's dürfte dies in einem Chaos-ähnlichen Zustand enden. Bei zwei oder drei Pi's ist das Ganze noch trivial.
    ... Äh ... Moment, außer jeder Pi schickt einem "zentralen Server-Pi" alle Zustandsänderungen - und dieser eine "entscheidet", welcher andere Pi von Zustandsänderungen zu informieren ist. Dann könnte eine Erweiterung des Systems über Konfigurationsdateien erfolgen.

    - Wenn alle Pi's über Samba kommunizieren, führt das zum gleichen Ergebnis. Alle Pi's speichern irgendwo ab. Einer überwacht die Änderungen und informiert einzelne andere darüber.

    Eigentlich ist es egal, scp oder Samba...

    ...Bei scp tanzt halt kein Apache im Wigwam...

    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.

    Einmal editiert, zuletzt von Andreas (29. Mai 2014 um 20:06)


  • Momentan gehts nur um einen simplen Binärzustand. Ein pi bekommt über einen Schalter ein signal, ändert in einer .txt den wert von 0 auf 1. Dann soll ein Signal über Lan zum anderen pi gehen der ebenso in einer .txt den zustand von 0 auf 1 ändert. Soll aber auch erweiterbar sein mit mehreren pi's

    Samba wäre - wie dreamshader auch schon schrieb - hierfür übertrieben. Sinnvoller und auch einfacher wäre die geänderte Datei einfach mithilfe von scp zu übertragen, oder die Änderung in der Datei direkt über SSH / Telnet vorzunehmen; dann gibts auch keine Mindesanforderung ala Samba die installiert und korrekt konfiguriert sein müsste...

    Eine Alternative wäre aber auch diese veränderte Datei über den Webserver zugänglich zu machen welche der "Client" regelmässig abruft und kontrolliert.

    Oder eben etwas aufwändiger über ein Programm welches auf einem bestimmten Port "listen"d und auf Befehle wartet...

  • Tach Imperator,


    Rsync ?


    Ist rsync nicht zu langsam?. Das dient ja in der "Normalverwendung" zum synchronisieren ganzer Verzeichnisse bzw. Partitionen. Da müssen dann wohl Checksummen erzeugt bzw. Vergleiche gemacht werden. Zudem ist das ein Port, der freigeschaltet werden muss.

    ciao,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!