Forum: PC-Programmierung Messserver regelmäßig in eine SQL-Datenbank auslesen


von Heike (Gast)


Lesenswert?

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!!!!

von Kopfkratzer (Gast)


Lesenswert?

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 ?

von Heike (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Andreas (Gast)


Lesenswert?

...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...

von Heike (Gast)


Lesenswert?

Ich kann es so machen, dass ich an diesem Port die Messwerte ausgebe,
doch wie kriege ich die in eine SQL-Datenbank?

von Thomas (Gast)


Lesenswert?

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

von Avr N. (avrnix) Benutzerseite


Lesenswert?

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.

von Heike (Gast)


Lesenswert?

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??

von Heike (Gast)


Lesenswert?

"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.

von Dominik T. (dom) Benutzerseite


Lesenswert?

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

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@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.

von jojansen (Gast)


Lesenswert?

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

von Heike (Gast)


Lesenswert?

@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??

von Stefan (Gast)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

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

von ... (Gast)


Lesenswert?

[] ihr kennt Java oder habt wirklich etwas mit Datenbanken zu tun?

- wieviele Messerte zyklisch/Trendhystereswerte?
- was ist das Endziel?

von Bri (Gast)


Lesenswert?

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/

von jojansen (Gast)


Lesenswert?

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

von Heike (Gast)


Lesenswert?

@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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.