www.mikrocontroller.net

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


Autor: Heike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!!!!

Autor: Kopfkratzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Heike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Heike (Gast)
Datum:

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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Avr Nix (avrnix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Heike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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??

Autor: Heike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dominik T. (dom) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Avr Nix (avrnix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: jojansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Heike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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??

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/ap...

und der Sourcecode des Projekts

http://www.beck-ipc.com/ipc/download/load.asp?id=2...

Stefan

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[] ihr kennt Java oder habt wirklich etwas mit Datenbanken zu tun?

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

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/

Autor: jojansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Heike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.