Serielle Schnittstelle in MySQL loggen

Hallo,

habe hier folgende Grundlagen: Debian-Server (ohne X) mit LAMP, und eine Photovoltaik-Anlage.
Die PV-Anlage sendet alle 10 Sekunden einen Textstring mit den aktuellen Werten. Es wird ‚blind‘ ohne Flusssteuerung gesendet.
Jetzt bräuchte ich eine Idee, wie ich diesen Textstring empfange, aufarbeite und in MySQL eintrage.
Knackpunkte: Das sollte ein Programm/Script sein, welches nicht ständig die Schnittstelle abfragt, sondern nur bei anstehenden Daten reagiert. Bisher läuft das Ganze auf Windows mit dem ‚Serial Logger Service‘.

Meine Kenntnisse:
C/C++: rudimentär (noch nie unter Linux entwickelt)
PHP/MySQL: Fortgeschrittener
Apache/Linux: Anfänger
Bash: Null

Welches wäre ein gangbarer Weg? Gibt es fertige Dämons?

Gruß Hans

hallo hans,

habe hier folgende Grundlagen: Debian-Server (ohne X) mit
LAMP, und eine Photovoltaik-Anlage.
Die PV-Anlage sendet alle 10 Sekunden einen Textstring mit den
aktuellen Werten. Es wird ‚blind‘ ohne Flusssteuerung
gesendet.
Jetzt bräuchte ich eine Idee, wie ich diesen Textstring
empfange, aufarbeite und in MySQL eintrage.
Knackpunkte: Das sollte ein Programm/Script sein, welches
nicht ständig die Schnittstelle abfragt, sondern nur bei
anstehenden Daten reagiert. Bisher läuft das Ganze auf Windows
mit dem ‚Serial Logger Service‘.

Meine Kenntnisse:
C/C++: rudimentär (noch nie unter Linux entwickelt)
PHP/MySQL: Fortgeschrittener
Apache/Linux: Anfänger
Bash: Null

alsosoweit ich das jetzt einschatzen kann, sollte das eigentlich mit gewoehnlichen bash Bordmitteln zu machen sein. ausser du willst die Flusskontrolle…

nur mal so eine einschaetzung meinserseits mit was fuer programmen das gehen sollte:

netcat - an einem port schueffeln und dinge ausgeben die auf dem port ankommen
tail - daten aktualisieren und ausgeben / hier kannst du vielleicht schon interagieren und die daten irgendwohin schreiben, beispielsweise in eine DB
moeglicherweise noch
watch - ausgabe beobachten und darstellen

schliesslich noch mysql. aber das nur wenn du dich nicht um sicherheit oder aehnliches scherst, denn netstat macht einfach mal den port den man zugelassen hat auf, glaube ich.

Welches wäre ein gangbarer Weg? Gibt es fertige Dämons?

naja, also ich weiss halt nun nicht wie die schnittstelle aussieht, wenn es netzwerk ist, dann ist sicher netcat dein freund, wenn es aber eine andere ist, dann weiss ich nicht, vielleicht kann man auch direkt einen tail auf das device der schnittstelle legen…

ich schaetze das sich das mit bash alles ziemlich gut hackenb laesst, quick and dirty, etwas sauberer kannst du das sicher mit C realisieren, da frag dann mal im C forum nach :smile:

Gruß Hans

hth josh

hi,

schliesslich noch mysql. aber das nur wenn du dich nicht um
sicherheit oder aehnliches scherst, denn net stat * macht einfach
mal den port den man zugelassen hat auf, glaube ich.

hier war net cat gemeint, da hat sich ein kleiner Fehler eingeschmuggelt! Aber ich fuerchte, den wirst du dann doch nicht brauchen koennen.

naja. und wegen der schnittstelle, wer lesen kann ist klar im Vorteil :smile: seriell also? naja, ich weiss da wenig darueber, ausser das ich mal eine Zeile gesehen habe in der mit setserial ein Geraet konfiguriert wurde.

Aber hier gibt es dazu eine ganze Menge zu lesen:
http://www.tldp.org/HOWTO/Serial-HOWT
hm. das ist wohl doch noch ein wenig mehr als ich dachte…

viel erfolg
gruss und frohe ostern josh

Hallo,

habe hier folgende Grundlagen: Debian-Server (ohne X) mit
LAMP, und eine Photovoltaik-Anlage.
Die PV-Anlage sendet alle 10 Sekunden einen Textstring mit den
aktuellen Werten. Es wird ‚blind‘ ohne Flusssteuerung
gesendet.
Jetzt bräuchte ich eine Idee, wie ich diesen Textstring
empfange, aufarbeite und in MySQL eintrage.

[…]

Knackpunkte: Das sollte ein Programm/Script sein, welches
nicht ständig die Schnittstelle abfragt, sondern nur bei
anstehenden Daten reagiert. Bisher läuft das Ganze auf Windows
mit dem ‚Serial Logger Service‘.

Ich würde das mit ttylog entgegennehmen. Was Du dann machst, ist Deiner Phantasie überlassen. Ich würde dazu neigen, das mit „logger“ an den Syslog (besser Syslog-ng) zu verfüttern. Oder Du baust einen Filter (Perl, sed/awk), der Dir das so aufbereitet, daß Du die Dinge direkt in den mysql-Cient hinein"pipest".

HTH

Sebastian