TCP Komunikation raspberry pi und PC

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo,

    ich habe auf dem raspberry pi ein kleines Python skript (server) laufen, welches mir per TCP die Status informationen zu einigen gpio Ports übermittelt. Wenn ich das script per SSH im Terminal starte, kann ich mit einem Python script (client) auf dem PC die Daten anfordern. Der SSH Port ist 23 und die TCP Komunikation zwischen den Python sripten läuft über Port 8888. Ich sende vom client per TCP eine Kommando anfrage und bekomme die passenden Infos vom server zurück. Das funktioniert auch soweit ganz gut.


    Nun möchte ich das server script dauerhaft im Hintergrung auf dem raspberry pi laufen lassen und dann mit einem SSH Terminal (z.B. Putty) mich auf dem raspberry pi einloggen und über Port 8888 die Status informationen abfragen ohne mein client script.

    Ist das machbar und wenn ja, wie muss ich das in Putty einstellen, damit es funktioniert.

    Schon mal vielen dank für die Hilfe

    Stephan

  • Ich möchte von mehreren PC's auf den raspberry pi zugreifen und mit Status Infos abholen. Es wäre einfacher wenn ich es ohne das sript machen könnte.

    Mein server script läuft im Hintergrung auf dem raspberry pi und antwortet auf Port 8888. Es muss doch irgendwie gehen das ich von aussen über Port 8888 mit dem server script unterhalten kann. Oder denke ich da in die falsche Richtung.

  • Du drückst dich nach wie vor sehr unklar aus. Wenn du kein Skript installieren willst, das mit dem Port redet, dann kannst du vielleicht einen Webserver schreiben, und damit von jedem Rechner per Browser zugreifen. Aber irgendein Programm, das Netzwerk-Kommunikation beherrscht, muss es schon sein.

    • Offizieller Beitrag

    Und ich verstehe nicht wozu auf einem Client ein Skript laufen soll, wenn man sich eh per SSH-Client aka PuTTY mit dem Server-Rechner verbinden will und die Daten dort ohnehin vorliegen. :conf:

    Das ist wirklich sehr verwirrend beschrieben. Um welche Daten handelt es sich denn genau?

  • Entschuldigung für die Verwirrung, ich versuche es nochmal zu erklären.

    Auf dem raspberry pi läuft ein server-script. Das reagiert per TCP auf anfragen an Port 8888. (Port 8888 ist von mir frei gewählt)

    Auf meinem PC habe ich ein client-script. Wenn ich nun mit diesem client-script eine Anfrage über Port 8888 an den server sende z.B. das Kommando "status". Dann bekomme ich den Status der gpio Ports zurück gesendet. Das funktioniert soweit.

    Ich möchte aber ohne mein client-script den server abfragen.

    Das server-script läuft ja dauerhaft auf dem raspberry pi und wartet an Port 8888 auf Anfragen. Wenn ich mich normal mit putty per SSH auf dem raspberry pi anmelde läuft das ja alles über Port 22. Das server-script regiert darauf aber nicht.

    Meine Frage ist, kann ich mit putty eine Anfrage auf Port 8888 an den Server senden. Ich stelle es mir so vor, ich verbinde mich über putty mit dem raspberry pi auf port 8888 und sende "status". Als Antwort bekomme ich dann meine Infos.

    Vorteil wäre es halt für mich, ich brauche nicht das client-script auf jeden PC zur Verfügung stellen. Ich stelle mit dem Server einen Dienst zur Verfügung und mit ein paar definierten Kommandos kann jeder die Infos dort abrufen. Wenn man den Dienst dann erweitert mit weitern Kommnados muss nicht das client-script angepasst weren. Jeder der dann die neuen Kommandos kennt, kann auch diese Infos abrufen. Das würde die Wartung vereinfachen.

    putty ist auf jeden PC vorhanden und ein paar neue Kommandos zu komunizieren ist auch nicht das Problem.

    Ich hoffe das ich es jetzt verständlicher erklärt habe.

    Vielen dank für eure Hilfe

  • raspistep Wie sieht denn das Protokoll von Deinem Dienst aus? Ist das einfach ein textzeilenbasiertes Protokoll, spricht Du sendest da beispielsweise die Bytefolge für das Wort "status" gefolgt von einem Zeilenendezeichen als Abschluss der Nachricht hin und bekommst die Antwort als Text zurück? Dann kannst Du dich einfach per Telnet mit dem Port verbinden. Putty kann Telnet.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Sowas wird üblicherweise einfach als Webseite gelöst. Dann navigierst du auf den Clients mitbedachte Browser auf die IP:PORT. Und siehst das Ergebnis.

  • Meine Frage ist, kann ich mit putty eine Anfrage auf Port 8888 an den Server senden. Ich stelle es mir so vor, ich verbinde mich über putty mit dem raspberry pi auf port 8888 und sende "status". Als Antwort bekomme ich dann meine Infos.

    Sicher, wenn du beim Verbinden auf deinem "Server" diese Abfrage beantwortest.

    Doch warum so umständlich, wenn mehrere Systeme diese Abfrage stellen sollen?

    Entweder du lässt auf dem 'Server' eine Webseite laufen, die diese Abfragen beantwortet, oder zu verwendest MQ(TT).

    Dein 'Server' schubst regelmäßig den Status, oder auch nur Änderungen des Status in einen MessageQueue, die dann von alles Systemen, die das Ergebnis haben wollen, abonniert wird.

    Computer ..... grrrrrr

    • Offizieller Beitrag

    Ich verstehe es trotzdem nicht wirklich. Die Clienten sind ja erstmal egal, auf denen ist alles Nötige (PuTTY/ggf. Powershell oder Browser) vorhanden. Warum das Abfrageskript nicht einfach auf dem RPi laufen lassen und per SSH aufrufen?

    Ein Webserver wäre natürlich die bequemere Variante, um sich die Daten anzeigen zu lassen.

  • Hallo,

    ich denke ich habe ich die falsche Richtung gedacht. Ich werde es so umbauen das auf dem server die Daten in Form einer Webseite zur Verfügung gstellt werden. Der server hat eine feste IP und dann kann sich jeder client die benötigten Daten abholen. Die Daten selber liegen im Textformat vor, das sollte einfach auf einer Webseuite darstellbar sein.

    Machmal sieht man den Wald vor lauter Bäumen nicht. Ich hatte nicht in diese Richung gedacht.

    Vielen Dank an alle für die Hilfe.

    Stephan

Jetzt mitmachen!

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