Forum: Mikrocontroller und Digitale Elektronik AVR-NET´-IO Werte automatische aktualisieren


von Th B. (tbusse)


Lesenswert?

Moin

Ich benutze Pollins AVR-NET-IO zusammen mit dem durch G.Menke 
angepassten Radig Webserver. Da ich nun auch analoge Werte erfasse 
möchte ich das diese auf der Webseite sich in einem gewissen Intervall 
automatisch aktualisieren. Z.Zt. geht es nur über ein manuelles Neuladen 
(F5) der Seite. Sicher ist die auch anders (dynamisch) möglich aber wie? 
Ich habe bei meiner bisherigen Suche nichts gefunden. Kann mir jemand 
weiter helfen?

Thomas

von Chris L. (kingkernel)


Lesenswert?

einfach folgenden code in deinem html-teil einfügen. weisst den browser 
an, die seite nach der angegebenen zeit neu zu laden
1
<meta http-equiv="refresh" content="10">
erzeugt aber auch jeweils den kompletten traffic im netzwerk!

von guest (Gast)


Lesenswert?

oder Daten per Ajax abrufen. Also HTTP-Requestobjekt (in JavaScript) 
anlegen und Anfrage im Hintergrund an den Server (NetIO) senden. Der 
antwortet beispielsweise mit ner XML-Datei. die kannst Du un JavaScript 
parsen und die Werte auf der Seite darstellen.

Einfach mal nach AJAX googeln. Aber aufpassen! Die zyklisch 
ausgetauschte datei darf nicht gecachet werden, sonst sinds immer die 
selben werte, die angezeigt werden! Kann man im HTTP-Header einstellen.

von Th B. (tbusse)


Lesenswert?

Christian L. schrieb:
> einfach folgenden code in deinem html-teil einfügen. weisst den browser
> an, die seite nach der angegebenen zeit neu zu laden
>
1
<meta http-equiv="refresh" content="10">
> erzeugt aber auch jeweils den kompletten traffic im netzwerk!

Das regelmäßige Neuladen lassen war auch mein erster Gedanke. Aber das 
sieht ja nicht so wahnsinnig gut aus wenn die Seite ständig neu 
aufgebaut wird. Auch die Bedienbarkeit wird wohl leiden. Trotzdem Dank, 
denn dies könnte der erste schnelle Workaround sein bis ich folgendes 
geblickt habe... ;-)

guest schrieb:
> oder Daten per Ajax abrufen. Also HTTP-Requestobjekt (in JavaScript)
> anlegen und Anfrage im Hintergrund an den Server (NetIO) senden. Der
> antwortet beispielsweise mit ner XML-Datei. die kannst Du un JavaScript
> parsen und die Werte auf der Seite darstellen.
>
> Einfach mal nach AJAX googeln. Aber aufpassen! Die zyklisch
> ausgetauschte datei darf nicht gecachet werden, sonst sinds immer die
> selben werte, die angezeigt werden! Kann man im HTTP-Header einstellen.

Hui erschlägt mich erstmal. Hab zwar von allem schon mal etwas gehört 
aber noch mit fast nichts von dem gearbeitet ;-). Kann man dies denn im 
knappen uC Speicher unterbringen? Nun ich werd mich dann mal Ajax 
beschäftigen...

Thomas

von guest (Gast)


Lesenswert?

Die Ajax-Lösung erfordert keine FW-Änderung im uC, ausser dass Du Deine 
Messdaten im XML-Format bereitstellen musst. Nur die Webseite wird etwas 
umfangreicher, aber auch eher in der Dimension 1-2 Bildschirmseiten 
Text. Wenn in der HTML/JS-Datei alle überflüssigen Leerzeichen etc 
entfernt sind wird das auch nicht so groß.

Das Grundprinzip ist dabei eigentlich, dass der Browser (hier liegt die 
Rechenpower..) zyklisch Daten vom Server anfordert und diese im 
Hintergrund nachlädt und dann visualisiert, OHNE die Seite neu laden zu 
müssen (Was bei nem AVR wahrscheinlich auch nicht im ms-Bereich liegt 
;-))

von guest (Gast)


Lesenswert?

kannst Du denn die Webseiten auf ner SD-Karte ablegen oder müssen die in 
Flash des AVR? hab mich mit dem Radig Server noch nicht so 
auseinandergesetzt

von Th B. (tbusse)


Lesenswert?

guest schrieb:
> kannst Du denn die Webseiten auf ner SD-Karte ablegen oder müssen die in
> Flash des AVR? hab mich mit dem Radig Server noch nicht so
> auseinandergesetzt

Das System ist so schon eine Zeit im Einsatz und sollte nun nur ergänzt 
werden. Leider ist kein SD-Karten Slot vorhanden und so liegen die 
Webseiten im Speicher des uC. Aber einen "größeren" ATmega kann ich noch 
einsetzen. Damit sollte der Speicherplatz dann ausreichen.

von guest (Gast)


Lesenswert?

was auch noch ne idee wär, nur die werte auf eine eigene HTML Seite zu 
legen und die auf der eigentlichen Seite in einem iFrame darzustellen. 
Dann lädt mit der

Th B. schrieb:
> <meta http-equiv="refresh" content="10">

Lösung nur der iFrame neu und der Rest der Seite bleibt stehen.
Ist zwar nicht so sauber, aber funktioniert...

von Sascha W. (sascha-w)


Angehängte Dateien:

Lesenswert?

Hallo,

das Nachladen von Dateien (JavaScript) lässt sich auch allein mit 
JavaScript erledigen und reicht für diesen Anwendungsfall.

Die HTML-Seite lädt dazu einfach eine (immer dieselbe) Scriptdatei nach, 
in der dann die zu aktualisierenden Daten stehen.

anbei mal ein Bsp. wie ich es auf meinem AVR-Server in etwa verwende.

Sascha

von Th B. (tbusse)


Lesenswert?

Hallo Sascha

Sascha Weber schrieb:
> Hallo,
>
> das Nachladen von Dateien (JavaScript) lässt sich auch allein mit
> JavaScript erledigen und reicht für diesen Anwendungsfall.
>
> Die HTML-Seite lädt dazu einfach eine (immer dieselbe) Scriptdatei nach,
> in der dann die zu aktualisierenden Daten stehen.
>
> anbei mal ein Bsp. wie ich es auf meinem AVR-Server in etwa verwende.
>
> Sascha

Vielen Dank dafür! Ich denke ich habe das Beispiel im Wesentlichen 
verstanden. Aber wo bzw. wie muss ich denn die JavaScript Datei auf dem 
uC ablegen?

Thomas

von Sascha W. (sascha-w)


Lesenswert?

auf dem µC legst du eine xyz.js Datei an, die die von dir benötigten 
Werte vom Webserver Variablen zuweist.
z.B.
1
var analog1=%VA@01;
2
var eingangd7=%PIND7;

diese Datei wird nun von der HTML-Seite aus geladen und enthält die vom 
µC ersetzten Werte.


Sascha

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.