Hallo Ich würde gerne diverse Messdaten Realtime in eine Sql Datenbank eintragen lassen. Was gibt es da für möglichkeiten? Kann ein Avr Netio daten in eine Datenbank schreiben? Wurde sowas schonmal implementiert? Selberschreiben könnt ich das sicherlich nicht. Oder Kann mit mit einem Openwrt Router sowas realisieren? Kann man von der Linux Console aus daten in eine Datenbank schreiben? Lg
Hallo, Du musst erst einmal ein Zielsystem festlegen. Datenbanken gibt es für MS-Windows, Linux, Android, ... . Dann gibt es verschiedene Wege die Daten von der Quelle auf das Zielsystem zu transferieren. Serielle SSt, USB, Netzwerk, ... . Hier kommt es auf die Möglichkeiten Deines Quellsystems an. Schlussendlich brauchst Du auf Deinem Zielsystem ein Programm das die Verbindung öffnet, die Rohdaten entgegen nimmt, ggf. anpasst und letztlich per SQL in die Datenbank schaufelt. mfg klaus.
:
Bearbeitet durch User
Das Zielsystem ist eine sql Datenbank (Mysql linux) im Netzwerk. Die Quelle Bzw Die Rohdaten stellt ein Avr. In welcher Form kann ich noch bestimmen. Am Ziel brauch ich eine Zahl welche der Avr weiß in einer sich im Netzwerk befindenden Datenbank. nur der weg diese dorthinzubekommen ist mir noch schleierhaft.
Ohne jetzt genau ne Lösung parat zu haben, nur ein Gedanke: Wäre es möglich, den AVR von dem ganzen SQL-Gedöns zu entlasten und das auf dem Rechner zu machen, wo der SQL-Server läuft? Also z.B. : Der AVR schickt die Messdaten einfach per UDP o.ä. an den Server. Dort nimmt ein Skript oder kleines Programm die Daten entgegen und schubst sie in die Datenbank. Dann könnten die Datenbankzugriffe auf einem Linuxrechner durchgeführt werden und du musst nur schauen, wie du die Rohdaten vom AVR übers Netzwerk an den Server bekommst. Könnte mir vorstellen, dass das ein bisschen einfacher zu lösen ist
Erdinger schrieb: > Das Zielsystem ist eine sql Datenbank (Mysql linux) im Netzwerk. Die > Quelle Bzw Die Rohdaten stellt ein Avr. In welcher Form kann ich noch > bestimmen. Das MySQL-Protokoll ist vergleichsweise einfach gestrickt. In einen großen AVR (Mega644, Mega1284) sollte man das noch reinbekommen [1]. Ansonsten was Schlumpf schreibt: auf dem Linux-PC einen simplen Daemon aufsetzen, der auf einem UDP-Port lauscht und die empfangenen Daten in die Datenbank schreibt. In Perl oder Python läßt sich das auf ca. einem Bildschirm voll Code unterbringen. Der AVR kann dann ein wesentlich einfacheres Protokoll sprechen. Ein Zwischending wird gern von Leuten genommen, die bereits HTTP implementiert (bekommen) haben: auf dem PC ein HTTP-Server mit Skript- Support (z.B. PHP). Der AVR schickt dann HTTP-Abfragen und sendet die Daten als PUT oder GET Parameter. Wenn man statt einem AVR einen Raspberry Pi o.ä. verwendet, wird das Ganze ein Kinderspiel. Angesichts von Ethernet(?)-Netzwerk vermutlich die weit sinnvollere Lösung. XL [1] vor allem weil man ja nur ein winziges Subset braucht. Man muß ein Login-Packet schicken können und ein Query-Paket. Und als Response muß man nur "Ok" und "Fehler" kennen. Man braucht aber halt einen TCP-Stack.
:
Bearbeitet durch User
Erdinger schrieb: > Ich würde gerne diverse Messdaten Realtime in eine Sql Datenbank > eintragen lassen. Das ist erstmal ein sehr verständlicher Wunsch. > Was gibt es da für möglichkeiten? Man tut es einfach. Wie genau, hängt natürlich von den Möglichkeiten des verwendeten SQL-Servers ab. Tip: es gibt weitaus mehr als einen! > Kann ein Avr Netio daten in eine Datenbank schreiben? Ja, klar. > Wurde sowas > schonmal implementiert? Ja, klar. Meiner z.B. schreibt regelmäßig in eine MS-SQL-Datenbank. Allerdings nicht deshalb, weil ich die besonders toll finde, sondern weil die Software, die später auf diese Daten zugreifen soll, nur mit MS-SQL etwas anfangen kann. Schande über deren Programmierer... > Selberschreiben könnt ich das sicherlich nicht. Das ist aber ziemlich primitiv, denn es geht (bei entsprechender Konfiguration des SQL-Servers) nur sehr unerheblich über eine reine Telnet-Kommunikation hinaus. Ich würde LERNEN empfehlen. Und einen quelloffenen SQL-Server (mein persönlicher Favorit ist PostgreSQL), denn so einer liefert typisch einen genauso quelloffenen Client mit, wo im Prinzip alles drinsteht, was man wissen muss, um selber einen stark abgerüsteten Client für den einfachstmöglichen Spezialfall basteln zu können. Und der besteht genau in dem Szenario, wenn man sich mit der geringstmöglichen Sicherheit einlogged (der Server muß natürlich dafür konfiguriert sein, das zuzulassen) und dann nur irgendwelche einfachen "insert"s von sich gibt und auf die Antworten des Servers auf diese Requests weitestgehend einen großen Berg scheißt. Also genau das LAN-Datenlogger-Szenario. > Oder Kann mit mit einem Openwrt Router sowas realisieren? Damit ist es natürlich noch einfacher. Da braucht man (vorausgesetzt der Speicher reicht) nur den Original-Client für das Zielsystem übersetzen und den dann benutzen. Ich würde aber auch hier den selbstgeschriebenen Minimalclient empfehlen, jedenfalls dann, wenn keine anderweitige Nutzung geplant ist als die beschriebene. Schlicht deshalb, weil der auf dem Zielsystem sehr viel Speicher gegenüber dem vollwertigen Originalclient sparen wird und trotzdem noch seinen Job im Rahmen der gegebenen Aufgabe erledigen kann.
Es wird ein Openwrt Router mit einem avr an der Console. Ganz einfach weil Netzwerk und Wlan für unter 20€ kann ich wohl nicht selber bauen. Ich wollte nun variablen via Get an eine Php übergeben und diese trägt die daten dann in die Datenbank ein. Leider habe ich noch etwas schwirigkeiten die Php aus der Console aufzurufen. Bislang mache ich das einach über Wget aber da gibt es Schwirigkeiten wenn ich mehr wie eine variable übergebe. Bei wget http://192.168.1.69/1.php?v1=12&v2=19 würde wget ab dem & trennen und den rest als 2. datei runterladen. Kann man anstelle des& Php variablen anders trennen? Oder kann man wget beibringen das zu ignoriren? Oder gibt es noch einen anderen weg die Php aufzurufen? Der rückwertige weg von der Datenbank in den Avr klappt ähnlich. Eine php läd die daten aus der Datenbank und gibt die per Echo aus. Wenn man nun die Php mit wget läd bekommt man als antwort die Ausgabe. Diese kann ich nun wieder per Cat abrufen und auswerten. Vermutlich alles etwas umständlich aber zumindest klappt es
Erdinger schrieb: > Leider habe ich noch etwas schwirigkeiten die Php aus der Console > aufzurufen. Bislang mache ich das einach über Wget aber da gibt es > Schwirigkeiten wenn ich mehr wie eine variable übergebe. > Bei wget http://192.168.1.69/1.php?v1=12&v2=19 würde wget ab dem & > trennen und den rest als 2. datei runterladen. Pack die URL in Anführungszeichen. Wie eigentlich immer, wenn man Shell-Metazeichen (hier das "&") in Stringliteralen verwenden will. XL
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.