Hallo, ich habe einen Messserver, der an Port 1111 über TCP/IP Datenpackete versenden kann. Diese Datenpackete haben dann an 2 bestimmten Positionen die Messwerte, die ich in eine MySQL-Datenbank schreiben möchte. Kann sowas so funktionieren? Gibt es da schon fertige Beispiele, die man sich ansehen kann? Vielen Dank!!!!
Was bitteschön willst Du uns damit sagen, äh fragen ? TCP/IP ist ein Netzwerkprotokoll und da ist es klar das Deine Datenpakete "eingepackt" werden ;) Wenn Du einen Logger realisieren willst, dann brauchst Du ein Programm, das auf dem Port 1111 lauscht und die Daten in eine Datenbank schiebt. Wo ist das Problem ?
OK, kannst du mir dann so einen Logger nennen? Ist es dann so, dass jedesmal wenn wer diesen Port "aufruft" ein Datenpacket vom Meßserver gesendet wird, oder "lauscht" so ein Logger nur und der Meßserver realisiert gar nicht, dass da wer da ist? Sorry, wenn das etwas umständlich klingt. Ich möchte eigentlich nur wissen, ob der Meßserver automatisch alle 30 Sekunden den neuen Meßwert in sein Packet schreibt, oder ob der Meßserver erkennt, dass eine Abfrage da ist und er den neuen Wert aktuell ausliest.
Mach doch einfach mal folgendes: Kommandozeilenfenster ("Eingabeaufforderung") aufmachen, "telnet ip-adresse-des-messerverves 1111" aufrufen. Und gucken, was passiert. Prinzipiell ist davon auszugehen, daß der Messerver auf Port 1111 auf Verbindungen warten wird und seine Daten an verbundene Clients absetzen wird. Andersherum wäre es deutlich komplizierter, da müsste der Messerver ja wissen, an welche IP-Adressen er seine Pakete versenden soll ... und das müsste eigens irgendwo konfiguriert werden.
...das es soetwas fertig gibt, glaube ich kaum, Telnet ist schon mal ein guter Anfang, den Rest müßte man drum herum programmieren, ist aber keine große Sache...
Ich kann es so machen, dass ich an diesem Port die Messwerte ausgebe, doch wie kriege ich die in eine SQL-Datenbank?
da musst dir alle fälle ein kleines Tool schreiben, Was die Daten über TCPIP empfängt und dann in die richtige Spalte deiner Tabelle schreibt. Auf welcher Plattform soll das ganze denn laufen? (windows/Linux)? thomas
Vielleicht die werte über Com ins Linuxs rein in einer Datei, oder über ein PerlScript der die Daten ins MySQL schiebt. Die Daten kommen dann vom Messsystem nach einer Aufforderung. Dann braucht man kein TCP/IP.
Ich habe auf dem Server von meinem Internetprovider eine SQL-Datenbank. Diese Datenbank soll sich die Meßwerte(3 Temperaturwerte) von meinem Webboard (mit einem Atmega128) holen. Hier ist mein Problem: Wie bekomme ich die Meßwerte in die SQL-Datenbank??
"Die Daten kommen dann vom Messsystem nach einer Aufforderung. Dann braucht man kein TCP/IP." Was heißt das? Ich habe mein Webboard soweit, dass es wenn ich seine IP-Adresse und den Port 1111 eingebe, dass dann die 3 Temperaturwerte angezeigt werden.
Schreibe doch einfach die Messdaten in eine Text-Datei auf deinem "Webboard". Dann schreibst du ein PHP-Script für deinen Webserver mit der Datenbank, was die Datei abruft und die Werte in die Datenbank schreibt. Das PHP-Script lässt du dann mit einem Cron-job alle xx Minuten ausführen. Gruß, Dominik
@heike: daten sammeln dann, Cron job, über ein Perl oder PHP Script gibt eine Anfrage zum Webboard und er gibt die Messdaten zurück. Man kann das auch über ein Com Port machen, im Prinzip sollte es auch über TCP/Ip auch gehen.
Wenn Du schon das Netzwerk am laufen hast, kannst Du ja auch einen Connect von deinem Board auf die DB machen. Als erstes meldet es sich als ein User an und dann setzt Du jedes mal ein SQL Statement wie 'Insert' mit den Messwerten in die Tabelle ab. Schaue mal SQL an und wie sich die DB mit ASCII über einen Port füttern lässt. Ich habe so etwas zwar noch nicht gemacht, aber bei meinen Spielereien mit Datenbanken SQL schätzen gelernt. Was mir noch einfällt: eine Spalte hat Datum/Uhrzeit (mit Sekunden), ist unique und 'not null'. Die beiden anderen Spalten müssen nichts besonderes haben, ausser daß die Messwerte da rein passen. Datum/Uhrzeit kannst Du entweder von einer RTC auf dem Messboard holen oder schauen, daß die DB das zur verfügung stellt. Hoffentlich hilft Dir mein Schuss ins blaue weiter. :-) Johannes
@jojansen Ich finde deine Idee echt klasse!! Aber ich hab jetzt im Internet dazu gesurft und nicht so ganz das Richtige gefunden. Weißt du vielleicht ein Beispiel dazu oder sowas ähnlichen??
Geht noch etwas einfacher: Einfach auf dem Webserver, auf dem auch der SQL-Server läuft eine php-Datei erstellen, die einfach z.B. auf einen Aufruf wie www.meinedomain.de/neuedaten.php?Temperatur1=23.1&Temperatur2=27.3 die übergebenen Daten in die Datenbank schreibt. Das einzige was für den µC bleibt ist ein kleiner http-Client, der einfach alle x Sekunden obige URL aufruft. Von einer Direktverbindung zum SQL Server würde ich eher abraten, zumal sind die bei den meisten gemieteten Webspace-Angeboten eh nicht aus dem Internet erreichbar, sondern nur von der selben Maschine, also z.B. über den Webserver. Auf der Beck - Seite (www.ipc-beck) ist übrigens genau ein solches Beispiel bei. Auf diese Weise logge ich auch die Daten meiner Heizungsanlage auf einen SQL Server. Wen's interessiert: http://www.stefan-seegel.de/heizung/ Ist übrigens mit dem verwendetem SC12 µC sehr einfach zu realisieren, da ein TCP/IP Stack in seinem Betriebssystem (RTOS) bereits implementiert ist. Gruß Stefan
Verzeihung, URL ist falsch, richtig ist www.beck-ipc.de Und hier hab ich auch gerade noch die Application Note gefunden: http://www.beck-ipc.com/files/ipc/documentation/applicationnotes/AN_sqlATchip_v2.pdf und der Sourcecode des Projekts http://www.beck-ipc.com/ipc/download/load.asp?id=2868&sp=de Stefan
[] ihr kennt Java oder habt wirklich etwas mit Datenbanken zu tun? - wieviele Messerte zyklisch/Trendhystereswerte? - was ist das Endziel?
Ich will dir nich zu nahe treten, aber wenn ich so lese was du schreibst, dann glaub ich nicht, dass du das alleine hinbekommst. Da du das sicherlich für deine Firma machen sollst, such dir jemanden oder eine Firma, die das für euch programmiert. Falls du es trotzdem selber machen willst, kann ich dir nur empfehlen Java zu lernen: http://www.galileocomputing.de/openbook/javainsel5/
Ich würde sagen, schaue mal bei www.mysql.com in der developer Ecke. Um viel lesen wirst Du nicht drum herum kommen. Ich habe das wie gesagt selber noch nicht versucht aber unsere Etikettendrucker können das nach einem Upgrade. Vielleicht passt ja auch was aus der ODBC Ecke, ist aber nur eine blinde Vermutung. Good Luck!!! :-) Johannes
@Stefan: Vielen ganz herzlichen DANK!!! Das gleiche wie du habe ich auch vor! Ich stell mich nur gerade ein etwas dumm an und zwar soll ich laut Anleitung meinen Webserver mit der SQL-Datenbank aufrufen: 172.30.10.98:80/chip/wrapper.php?..... ich bin aber bei www.tibit.de und weiß dort keine IP-Adresse, darum habe ich im DOS-Fenster geschrieben: telnet www.tibit.de:80/.... Darauft bekomme ich folgende Meldung: Verbindungsaufbau zu www.tibit.de:80/... Es konnte keine Verbindug mit dem Host hergestellt werden, auf Port 23: Verbinden fehlgeschlagen Ist da was an meiner Schreibweise falsch? Darf ist nicht einfach die IP-Adresse durch die www.-Adresse austauschen?
Deine Schreibweise muss angepasst werden. Außerdem kannst Du per telnet nicht auf Dateien/Skripte innerhalb eines Webservers zugreifen; es sei denn, Du tippst blind von Hand den GET-Request des HTTP-Protokolls ein ... Ich hatte Dir zu einem Test mit telnet geraten, weil Du zu Anfang von einem System schriebst, das irgendwas auf Port 1111 treiben würde - von HTTP war da noch nicht die Rede.
Achja, Nachtrag: Wenn das Ding, was auf Port 1111 irgendwas treibt, per Telnet angesprochen werden soll und sich hinter einem Rechnernamen à la www.blafusel.de verbirgt, dann lautet die korrekte telnet-Aufrufsyntax in der Windows-Eingabeaufforderung (die übrigens kein "DOS-Fenster" ist, auch wenn sie ihr recht ähnlich sieht): telnet www.titbit.de 1111 (Zwischen Rechnername und Portnummer kommt ein Leerzeichen). Der GET-Request sähe so aus: get /chip/wrapper.php?..... Aber das ist ohne detaillierte Kenntnis des HTTP-Protokolls nicht sehr sinnvoll. Das lässt sich dann mit einem Browser doch wesentlich einfacher erledigen ... dafür ist sowas ja auch da.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.