Hallo, ich brauch irgendein Programm wo ich eine Nachricht an einen Windows oder Linux PC mit dem RasPi senden kann. Nicht in Popup form sondern die Daten sollen danach irgendwie verarbeiten werden können . :s
Nachricht über Netzwerk senden
-
TheOverclocker -
9. April 2015 um 17:55 -
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. ;)
-
-
Nachricht über Netzwerk senden? Schau mal ob du hier fündig wirst!
-
Was heißt "irgendwie verarbeitet werden können" ??
Bitte gewöhn dir an nicht nur Einzeiler Threads zu erstellen sondern dein Vorhaben so genau wie möglich zu beschreiben. Es wird nämlich leider langsam müßig dir immer alles einzeln aus der Nase ziehen zu müssen
-
Hallo TheOverclocker,
machst Du so
verrät Dir mehr über scp.
Dann muss da irgendsoein Program auf dem Empfänger-Linux-Räscheknäscht im Hintergrund laufen und feststellen, da da wieder so eine Datei gesendet wurde. Dieses Programm muss dann irgendwie irgendwas auslösen, um auf den Empfang zu reagieren.
Merkst Du was? Je weniger Details Du lieferst, um so weniger kann man Dir weiterhelfen.
meigrafd:
Wir hatten in der Oberstufe einen Geschichtslehrer. Eine seiner Prüfungsfragen lautete:
"Wer hat wann wie auf was von wem reagiert?"Er war tatsächlich der Meinung, dass in dieser Frage genug Informationen stecken würden, um die Frage nicht nur irgendwie sondern eindeutig beantworten zu können. Ich habe auf diese Frage aus Protest nicht geantwortet...
Ich warte mal auf die kürzeste denkbare Problemschilderung hier im Forum:
ZitatKlappt nicht!
5 Minuten später:
ZitatWer hilft?
Beste Grüße
Andreas
-
Was heißt Daten? Was heißt Verarbeiten?
wie wär's mit der socket-library in Python?MfG ProfDrFisch
-
Hallo TheOverclocker,machst Du so
st nicht geantwortet...
verrät Dir mehr über scp.
Dann muss da irgendsoein Program auf dem Empfänger-Linux-Räscheknäscht im Hintergrund laufen und feststellen, da da wieder so eine Datei gesendet wurde. Dieses Programm muss dann irgendwie irgendwas auslösen, um auf den Empfang zu reagieren.
Merkst Du was? Je weniger Details Du lieferst, um so weniger kann man Dir weiterhelfen.
meigrafd:
Wir hatten in der Oberstufe einen Geschichtslehrer. Eine seiner Prüfungsfragen lautete:
"Wer hat wann wie auf was von wem reagiert?"Er war tatsächlich der Meinung, dass in dieser Frage genug Informationen stecken würden, um die Frage nicht nur irgendwie sondern eindeutig beantworten zu können. Ich habe auf diese Frage aus Protest nicht geantwortet...st nicht geantwortet...
Ich warte mal auf die kürzeste denkbare Problemschilderung hier im Forum:
5 Minuten später:
Beste Grüße
Andreas
Ja das problem war das ich null ahnung hatte wie!
Ok das ist ja vielleicht schonmal ein Anfang!
Es sollten eigentlich so 10 Slaves eine Temperatur mit einer ID davor zu einem Linux PC senden der dann damit was anfangen kann , nicht wie Popup Mitteilungen .
Es soll damit eine Temperatur regeln können mit den Daten ..
Es tut mir leid das ich so nerve , ich glaube ich werde in näherer Zeit nichts mehr machen da ich hier ziemlich unbeliebt bin
-
also ich glaube nicht, dass du unbeliebt bist. Denke es gibt hier genügend Leute die dir helfen wollen, nur kann man das nicht, wenn man nicht weiß was du genau machen willst und was dabei dein Problem ist.
Also du willst von einem PC A Daten zu einem PC B senden, die auch im gleichen (Heim-)Netzwerk sind? Einfach bei den Sendern ein Socket öffnen und die Daten zum Server schicken (Port- und IP nötig). Der Server horcht dann auf dem jeweiligen Port auf eingehende Nachrichten. Als Dateiformat kannste z.B. JSON verwenden, ist simpel und für sowas sehr gut geeignet.
-
Ich danke dir vielmals ich mach mich mal schlau und poste dann hier mal das jeweilige Script für unsere Googler
-
Wie immer, mehrere Möglichkeiten
- SocketServer
- Webserver (php)
- Telnet (netcat)
Kommt drauf an was du machen willst - was du leider nicht verräst. Auch fehlen weitere Details... Im Chat hast du jetzt erwähnt das es um Temperaturen geht - aber erwähnst auch da nicht was die Temperatur ausließt. Also kann man dir leider immer noch nicht detaillierter sagen wie Du das machen könntest
//EDIT:
Bitte beantworte folgende Fragen:
- womit werden die temperaturen ausgelesen
- is das ein arduino der die sensoren ausliest?
- was für sensoren sind das - Funksensoren?
- was soll damit auf der anderen seite passieren
- wie oft sollen die daten verschickt werden
- soll der client sich darum selbst kümmern oder soll der server diese anfordern
- hast du 20 PI's mit jeweils nur einem Sensor dran irgendwo im Netzwerk?
-
-
Hi, ich wollte nochmal nachhaken also ich kann nachrichten senden wenn ich einfachZ. B. auf dem Server:
Code~ $ cat ~/testttt.txt | netcat -4nv -l 3333 Listening on [0.0.0.0] (family 2, port 3333) Connection from [192.168.178.21] port 3333 [tcp/*] accepted (family 2, sport 58662)
und auf dem Client:
(den Inhalt der Datei "testttt.txt"). -
Ok ich hab noch eine Frage: wie kann ich den Output eines Command auf ein t= absuchen und das was hinter t= steht als Variable setzen? Und wie kann man wenn man listened die Nachrichten als Variable setzen?
-
Versuch doch bitte mal Dein Vorhaben genauer zu beschreiben. Mit den Infos ist es fast unmöglich konkret etwas dazu zu sagen.
So stellt sich die Frage welche Programmiersprache und wie oft dieses Muster gesucht/gefunden werden soll.
Zum Thema Textsuche wäre regex (regular expressions) ein Stichwort, unter dem Du sicher eine Menge Informationen findest.cu,
-ds- -
Ich die Temperatur von einem Raspberry Pi zu einem Master Raspberry Pi senden und dieser soll dann Prüfen wie hoch die Temperatur . Also geteilt durch 100
Mit dem 1wire Sensor
-
Wobei Du uns leider immer noch nicht verraten hast in welcher Programmiersprache das realisiert werden soll ...
cu,
-ds- -
Hi Dreamshader,
Wobei Du uns leider immer noch nicht verraten hast in welcher Programmiersprache das realisiert werden soll ...
cu,
-ds-das hängt doch bestimmt von der Programmiersprache dessen ab, der die fertige Lösung als Erster postet.
TheOverclocker,
Wenn Du nach den Stichwortenund dabei Sensor durch den von Dir verwendeten Tempertursensor und Programmiersprache durch eines der folgenden
- Assembler
- ADA
- Bash
- C
- C++
- Fortran
- Icon (insbesondere Icon!)
- Pascal oder Lazarus
- Python
- Scratch
ersetzt, dann wirst Du für jede Programmiersprache / Skriptsprache eine Lösung finden.Beste Grüße
Andreas
Beste GrüßeAndreas
-
... Frage: wie kann ich den Output eines Command auf ein t= absuchen und das was hinter t= steht als Variable setzen?Z. B. u. a. auch mit:
-
Wobei Du uns leider immer noch nicht verraten hast in welcher Programmiersprache das realisiert werden soll ...
cu,
-ds-Oh sry Python wäre ganz nice , weil ich das einigermaßen kann
-
Ich mach mir noch mal die Mühe das etwas genauer zu beschreiben, welche Möglichkeiten es fürs Netzwerk (WLAN/LAN) gäbe - die Erste ist meiner Meinung nach die zu bevorzugende, die Letzte eher nicht so
-
Socket
- Lässt sich in verschiedenen Programmiersprachen realisieren. Vorzugsweise Python, Perl, C/C++, Assembler.
- Wahlweise ein Server wohin die Clients selbstständig eine Verbindung herstellen und ihre Daten senden. Oder der Server connected zu den Clients und fragt die Daten ab.
-
HTTP (Webserver)
- Lässt sich in PHP, Javascript oder Python realisieren. Vorzugsweise PHP oder Python.
- Auf dem Server läuft ein HTTP Dienst welcher wahlweise über GET oder POST Daten empfangen und entsprechend verarbeitet. Die Clients rufen dann eine URL auf und übergeben entsprechend ihre Werte.
-
Telnet
- Lässt sich mit verschiedenen Programmen realisieren, ist ähnlich wie Sockets. Vorzugsweise netcat.
- Wie rpi444 angesprochen hat, nur Server/Client vertauscht. Auf dem Server läuft z.B. netcat und wartet auf Verbindungen. Empfangenes wird z.B. in eine Textdatei umgeleitet. Clients nutzen ebenfalls netcat um Daten zu übermitteln
- Ist die wie ich finde umständlichere Art da netcat auf dem Server auch mal crashen kann, man also auch noch dafür einen Watchdog benötigen würde. Auch das verarbeiten der empfangenen Daten gestaltet sich imho umständlicher als bei den anderen beiden Möglichkeiten.
Es gibt vermutlich noch ein paar andere Möglichkeiten, aber das hier sollten die gängigsten sein.
Beispiel für die 1.Möglichkeit:
"Server.py"
PHP
Alles anzeigen#!/usr/bin/python # -*- coding: utf-8 -*- # # Starts a Thread for Socket Server waiting for Connections # # thread docu: http://www.tutorialspoint.com/python/python_multithreading.htm # signal docu: http://stackoverflow.com/questions/1112343/how-do-i-capture-sigint-in-python # socketserver docu: https://docs.python.org/2/library/socketserver.html # import RPi.GPIO as GPIO import threading import time import sys import socket import subprocess import sqlite3 try: import SocketServer as socketserver except ImportError: import socketserver Sensor={} #------------------------------------------------------------------- DEBUG = True #DEBUG = False SocketHost = "0.0.0.0" SocketPort = 7060 DBfile = '/var/sqlite.db' #------------------------------------------------------------------- # Sensor[<nodeID>] = "<Place>" Sensor['1'] = "Wohnzimmer" Sensor['2'] = "Garage / Schuppen" Sensor['3'] = "Garten" #------------------------------------------------------------------- try: DEBUG except NameError: DEBUG = False if DEBUG: print "Enabling DEBUG mode!" else: print "Disabling DEBUG mode!" def printD(message): if DEBUG: print message sys.stdout.flush() def addSQL(what, value): con = sqlite3.connect(DBfile) with con: cur = con.cursor() cur.execute("CREATE TABLE IF NOT EXISTS werte (id INTEGER PRIMARY KEY,time INT,nodeID INT,place TEXT,temp TEXT,hum TEXT)") timestamp = int(time.time()) cur.execute( "INSERT INTO werte (time,?) VALUES (?,?)", (what,timestamp,value) ) #parse Socket request (e.g. from Client.py) def ParseSocketRequest(request): #printD("Parsing SocketRequest: "+request) returnlist = "" request = request.strip() requestsplit = request.split(':') requestsplit.append("dummy") command = requestsplit[0] value = requestsplit[1] if value == "dummy": value = "0" elif command == "system.power": if value == "off": subprocess.Popen(["shutdown","-h","now"]) return "system.power:ok" elif value == "reboot": subprocess.Popen(["shutdown","-r","now"]) return "system.power:ok" elif command == "addtemp": addSQL('temp', value) elif command == "addhum": addSQL('hum', value) else: return "ERROR: Invalid Command" class ThreadedTCPRequestHandler(socketserver.StreamRequestHandler): def handle(self): # self.rfile is a file-like object created by the handler; # we can now use e.g. readline() instead of raw recv() calls self.data = self.rfile.readline().strip() printD("SocketRequest: {}".format(self.data)) try: self.wfile.write(ParseSocketRequest(self.data)) except Exception, e2: print "Error in ThreadedTCPRequestHandler: " + str(e2) except (KeyboardInterrupt, SystemExit): exit() class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer): pass if __name__ == '__main__': try: HOST, PORT = SocketHost, SocketPort socket_server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler) ip, port = socket_server.server_address # Start a thread with the server - that thread will then start one more thread for each connect socket_server_thread = threading.Thread(target=socket_server.serve_forever) socket_server_thread.start() except Exception, e1: print "Error...: " + str(e1) except (KeyboardInterrupt, SystemExit): print "\nSchliesse Programm..\n" exit() [/php] [/spoiler] [spoiler="Client.py"] [code=php]#!/usr/bin/python # -*- coding: utf-8 -*- import socket import sys HOST, PORT = "192.168.178.10", 7060 data = " ".join(sys.argv[1:]) # Create a socket (SOCK_STREAM means a TCP socket) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: # Connect to server and send data sock.connect((HOST, PORT)) sock.sendall(data + "\n") # Receive data from the server and shut down received = sock.recv(1024) except Exception, e1: print "Error...: " + str(e1) finally: sock.close() print "Sent: {}".format(data) print "Received: {}".format(received), [/php] Aufruf: [b]./Client.py system.power:reboot[/b] [/spoiler] [u]Beispiel für die 2.Möglichkeit:[/u] [spoiler="Server"] [b]/var/www/receive.php[/b] [code=php] <?php //------------------------------------------------------------------------------ error_reporting(E_ALL); ini_set('track_errors', 1); ini_set('display_errors', 1); ini_set('log_errors', 1); $SQLITEdb = "/var/www/sqlite.db"; //------------------------------------------------------------------------------ // $Sensor[<nodeID>] = "<Place>"; $Sensor['1'] = "Wohnzimmer"; $Sensor['2'] = "Garage / Schuppen"; $Sensor['3'] = "Garten"; //------------------------------------------------------------------------------ if (isset($_GET) AND !empty($_GET)) { // check if sqlite db file exists else create it.. if (!file_exists($SQLITEdb)) { $db = db_con($SQLITEdb); $SQL = "CREATE TABLE IF NOT EXISTS werte (id INTEGER PRIMARY KEY,time INT,nodeID INT,place TEXT,temp TEXT,hum TEXT)"; $create = db_query($SQL); } $db = db_con($SQLITEdb); foreach ($_GET AS $arg => $var) { if ($arg == "node") { $nodeID = $var; } if ($arg == "t") { $temp = $var; } if ($arg == "h") { $hum = $var; } } if ( isset($nodeID) AND (isset($temp) OR isset($hum)) ) { if (!isset($hum)) { $SQL = "INSERT INTO werte (time,nodeID,place,temp) VALUES ('".time()."','".$nodeID."','".$Sensor[$nodeID]."','".$temp."')"; } else { $SQL = "INSERT INTO werte (time,nodeID,place,temp,hum) VALUES ('".time()."','".$nodeID."','".$Sensor[$nodeID]."','".$temp."','".$hum."')"; } $db = db_con($DBfile); $insert = db_query($SQL); } } // DB connect function db_con($DBfile) { if (!$db = new PDO("sqlite:$DBfile")) { $e="font-size:23px; text-align:left; color:firebrick; font-weight:bold;"; echo "<b style='".$e."'>Fehler beim öffnen der Datenbank $DBfile:</b><br/>"; echo "<b style='".$e."'>".$db->errorInfo()."</b><br/>"; die; } $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $db; } // DB Query function db_query($sql) { global $db; $result = $db->query($sql) OR db_error($sql,$db->errorInfo()); return $result; } // DB errors function db_error($sql,$error) { die('<small><font color="#ff0000"><b>[DB ERROR]</b></font></small><br/><br/><font color="#800000"><b>'.$error.'</b><br/><br/>'.$sql.'</font>'); } // Add HTML character incoding to strings function db_output($string) { return htmlspecialchars($string); } // Add slashes to incoming data function db_input($string) { if (function_exists('mysql_real_escape_string')) { return mysql_real_escape_string($string); } return addslashes($string); } ?> [/php][/spoiler] [spoiler="Client"][code]wget -qO- http://192.168.178.10/receive.php?node=1&t=3214&h=4123
[/spoiler]
Beispiel für die 3.Möglichkeit:
Siehe Beitrag#10
-
Socket
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!