Forum: Mikrocontroller und Digitale Elektronik Messdaten -----> Datenbank ------>Webseite


von der es noch nicht kann (Gast)


Lesenswert?

Hallo
ich habe folgendes vor:
Mit meiner AVR Net-IO Messergebnisse an eine Datenbank zu senden und 
dann diese Daten auf einer Webseite darzustellen.
Was ich habe:
            -V-Server mit Apache Webserver und MySQL Datenbankserver
            - AVR Net-IO
            - C Kenntnisse
            - Lernbereitschaft
Was mir fehlt:
             - Wissen wie man so was realisiert.
Nun wollte ich Euch fragen ob so was machbar ist?
Welche Entwicklungsumgebungen benötigt werden und wie ich mich eurer 
meinung am schnellsten in diese Thematik einarbeite.
Ich hoffe ich habe mein Vorhaben einigermaßen gut beschrieben.

Freue mich schon auf Eure Antworten

Danke

peter

von STK500-Besitzer (Gast)


Lesenswert?

Guck dir mal die NetIO-Firmware von Ulrich Radig an.
Da hat er auch Code drin, mit dem man GET-Anfragen an andere Server 
verschickt.

von M. K. (avr-frickler) Benutzerseite


Lesenswert?

der es noch nicht kann schrieb:
> Nun wollte ich Euch fragen ob so was machbar ist?

Ein ganz klares Jein!

Ja -> Wenn die Datenrate nicht zu hoch sind ein paar kB/s sicher machbar 
ansonsten -> nein.

STK500-Besitzer hat ja schon auf Ulrich Radigs Software genannt, es gäbe 
da noch uIP und Ethersex. Jedenfalls solltest du dich gut in TCP/IP 
einarbeiten. Denn den 'Treiber' zur Kommunikation mit der Datenbank 
wirst du selbst schreiben dürfen, ich habe zumindest noch keine 
Implementierung für einen µC gesehen.

Gegenvorschlag:
Sammle die Daten doch zunächst auf auf einer SD-Karte an deinem AVR und 
lasse sie Regelmäßig von deinem V-Server abholen, dieser kümmert sich 
dann selbst darum die Messdaten in die Datenbank zu schreiben.

von Troll (Gast)


Lesenswert?

Hab ich auchmal gebaut. Alles in einem AVR. Die Messungen, die 
Datenbank, der Webserver, die Webseite. Wenn man den Datenbank Server 
abtrennt, wird dieser mit Php abgefragt. Daten auf einer Webseite, 
zumindest was ueber eine Zhlentabelle hinausgeht werden mit Ajax & 
Javascript dargestellt.

von der es noch nicht kann (Gast)


Lesenswert?

M. K. schrieb:
> Gegenvorschlag:
> Sammle die Daten doch zunächst auf auf einer SD-Karte an deinem AVR und
> lasse sie Regelmäßig von deinem V-Server abholen, dieser kümmert sich
> dann selbst darum die Messdaten in die Datenbank zu schreiben.

Was verwendet man auf dem v-Server für Software um die Daten auf der 
Sd-Karte abzuholen?

Troll schrieb:
> Hab ich auchmal gebaut. Alles in einem AVR. Die Messungen, die
> Datenbank, der Webserver, die Webseite. Wenn man den Datenbank Server
> abtrennt, wird dieser mit Php abgefragt. Daten auf einer Webseite,
> zumindest was ueber eine Zhlentabelle hinausgeht werden mit Ajax &
> Javascript dargestellt.

Kannst du mir da noch ein paar mehr Infos geben?
Ich meine keinen Code aber einen Groben Schematischen Aufbau wäre toll!

Danke Gruß
Peter

von M. K. (avr-frickler) Benutzerseite


Lesenswert?

der es noch nicht kann schrieb:
> Was verwendet man auf dem v-Server für Software um die Daten auf der
> Sd-Karte abzuholen?

Ich gehe mal von einem Linux-System als V-Server aus, dann ist wget 
bestens dafür geeignet. Auf dem AVR benötigst du dann NUR einen 
Webserver, der ist bei Ulrich Radigs Software schon dabei, außerdem hast 
du da auch schon alles nötige für die SD-Karte dabei.

Dann hast du allerdings erst die Datei übertragen, du musst die Daten 
noch in die Datenbank übertragen dazu wirst du dir wahrscheinlich ein 
kleines Script auf dem Server schreiben müssen, oder du schreibst dir 
sofort eine kleine Software welches die Daten abholt und in die 
Datenbank überträgt.

von Troll (Gast)


Lesenswert?

Wenn alles auf einem AVR laeuft spart man sich vieles. Als Datenspeicher 
war das interne Ram genuegend. Falls dem nicht so ist, kommt die Frage 
nach der Schreibhaeufigkeit. Ich wuerd vielleicht ein Serielles RAM oder 
EEProm in Betracht ziehen, in diesm Zusammenhang sollte man sich 
ueberlegen, was mit den Daten bei, Poweroff geschehen soll. Die 
Seitenfunktionalitaet konnte per http immer neu geladen werden. Das war 
der Output, den der anfragende Client erhielt aber noch scriptcode 
enthielt. Eine Seitenanfrage spulte also diese Seite aus dem externen 
Flash ab, fuellte die benoetigten Daten ein und schob sie ueber die 
Kommunikationsschnittstelle raus. Dabei war wichtig, de Berechnung der 
anzuzeigenden Daten nicht selbst zu machen, sondern dem Client 
anzuhaengen. Es wurden daher die Rohdaten versandt, und die 
Rechenvorschrift, dh die Formel war in der Seite als Javascript 
versteckt. In der Regel waren das Float Rechnungen, die der PC nun mal 
besser kann. Im wesentlichen benoetigt man also zweischwach gekoppelte 
Prozesse. Die Acquisition mit iregndwas, und den Webserver. Der 
Webserver bekommt die Anfragen, holt sich die Seite aus dem Flash fuellt 
die Daten ein und schiebt die Seite zurueck. Irgendwelche Commands 
werden als Parameter zur Anfrage empfangen und vor der Seite 
ausgefuehrt.

von der es noch nicht kann (Gast)


Lesenswert?

M. K. schrieb:
> oder du schreibst dir
> sofort eine kleine Software welches die Daten abholt und in die
> Datenbank überträgt.

Ja irgendwie kommt mir dein Lösungsansatz "recht einfach vor" Welche 
Sprache ist für eine solche Software geeignet ich habe etwas C# 
Erfahrung aber nur unter Windows!

Troll schrieb:
> Wenn alles auf einem AVR laeuft spart man sich vieles.

Dein Vorschlag klingt auch sehr gut aber kommt mir etwas komplizierter 
vor!

Habe noch keinen konkreten Plan!
Vielleicht könnt Ihr mich ja noch von was anderem überzeugen!

Danke für Eure Hilfe

Gruß
Peter

von STK500-Besitzer (Gast)


Lesenswert?

Wenn dein NetIO die Daten per GET an den Webserver schickt, dann kann 
sich dort ein PHP-Skript um das Eintragen in die Datenbank kümmern.

von MaWin (Gast)


Lesenswert?

Der AVR NetIO liefert eine per http abfragbare HTML WebSeite mit dem 
AKTUELLEN Messwert (das kommt wohl ricght out of the box),
ein Skript auf dem Apache Server fragt die ab und trägt deren Werte in 
die Datenbank ein (oder in vielen Fällen viel besser einfach ans Ende 
einer Datei schreiben).
Die programmiert man wohl eher nicht in C sondern in PHP.

von M. K. (avr-frickler) Benutzerseite


Lesenswert?

der es noch nicht kann schrieb:
> Habe noch keinen konkreten Plan!

Wie du siehst Möglichkeiten gibt es viele. Grundlegend musst du erst 
einmal die beiden folgenden Dinge für dich klären.

1. Was soll mit den Daten passieren?
1a. Müssen die Daten gespeichert werden?
1b. Muss es wirklich eine Datenbank sein, wenn ja warum?

2. Muss es ein externer Server sein, oder reicht es wenn der Server zu 
Hause steht (AVR NetIO über das Internet erreichbar)?

der es noch nicht kann schrieb:
> Vielleicht könnt Ihr mich ja noch von was anderem überzeugen!

Möglichkeiten gibt es noch genügend, z.B ein Raspberry Pi, ein PC mit 
Messkarte, ...

der es noch nicht kann schrieb:
> Ja irgendwie kommt mir dein Lösungsansatz "recht einfach vor" Welche
> Sprache ist für eine solche Software geeignet ich habe etwas C#
> Erfahrung aber nur unter Windows!

STK500-Besitzer schrieb:
> Wenn dein NetIO die Daten per GET an den Webserver schickt, dann kann
> sich dort ein PHP-Skript um das Eintragen in die Datenbank kümmern.

PHP-Scripte müssen nicht zwingend von einem Web-Server aufgerufen 
werden, PHP-Scripte laufen auch eigenständig. So könnte man ein 
PHP-Script auch einfach per Cron-Job starten.

Ansonsten ist jede Programmiersprache erlaubt die es dir irgendwie 
ermöglicht TCP/IP zu sprechen und für dein Ziel-System verfügbar ist

von der es noch nicht kann (Gast)


Lesenswert?

Super viele Infos,ich werde mal eine Nacht drüber schlafen und alles 
etwas wirken lassen! Vielen Dank für Eure Hilfe!

Peter

von Dr G. Reed (Gast)


Lesenswert?

Hab ich erst vor kurzem mit einem Raspberry PI gebaut.

Ein Python Script holt von einem kleinen Webserver, der auf einem PIC 
Controller läuft, Daten periodisch alle Minute per Get - Request ab und 
speichert diese Daten in eine MYSQL Datenbank.

Für die Graphische Anzeige sorgen dann einige PHP Scripten serverseitig 
sowie etwas Javascript für die Erzeugung der Graphik.


Als Datenaustauschformat zwischen den beteiligten Geräten dient diesem 
Fall JSON

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.