Messserver regelmäßig in eine SQL-Datenbank auslesen

Gast #417474
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!!!!
Gast #417475
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 ?
Gast #417476
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.
Persönliche Seite #417477
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.
Gast #417480
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
Gast #417482
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??
Gast #417483
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.
Gast #417486
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
Gast #417488
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
Gast #417492
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
Gast #417493
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?
Persönliche Seite #417494
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.
Persönliche Seite #417495
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren