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?
Komunikation zwischen 2 pis
-
icefoto -
29. Mai 2014 um 17:44 -
Erledigt
Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
-
-
Komunikation zwischen 2 pis? Schau mal ob du hier fündig wirst!
-
Das geht am besten ueber einen Socket.
Dafuer gibt's garantiert auch Python-Klassen.
Was soll denn wie oft uebertragen werden ?
-
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
-
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
-
Parallel Programming könnte dir von nutzen sein.
-
@ 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
-
Zitat
dass Du eine "Zentrale" hast,
Das ist ja auch so geplant. Ein pi spielt den Server und alle anderen schauen ob sich was geändert hat, bzw ändern was.um über samba was zu ändern mit python kenne ich nur diese lösung
https://pypi.python.org/pypi/PySmbClient/0.1.1oder gibs da noch andere?
-
-
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.1oder 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
-
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'sSamba 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...
-
Rsync ?
-
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!