Hi,
ich habe ein Messgerät mit einer seriellen Schnittstelle.
A) Ich möchte die Messgerätedaten auf SD Karte speichern
(Erweiterungsmodul zur NET IO mit sd Karte)
B) Ich möchte die Daten auf einer einfachen Webseite im internen Netz
zur verfügung stellen.
Zu A) Zu der NET IO gibts nur ein hex file, oder? Wie wird dort die sd
Karte mit eingebunden? Kann ich in die SW von Pollin einen parser
einbinden um mein Messgerät damit zu adaptieren?
Zu B) Hat schon mal jemand daten grafisch zur verfügung gestellt mit der
NET IO? Wie ist dabei die einfachste Vorgehensweise? Gibt es ein tool
welches man mit der NET IO als Webserver nutzen könnte, oder eine lib
o.ä.?
Vielen Dank,
m.
Ps.: Ist nicht eigentlich Ulrich Radig der Urheber der Software, konnte
den Webserver mit ENC ship so ad hoc garnicht mehr dort finden...
JJ schrieb:> Zu deinem Grafik-Website Thema kann ich dir leider nicht weiterhelfen.> Es gibt aber sicher etwas dazu...
Frage in die Runde:
Was haltet ihr an dieser Stelle von SVG?
(zu geschwätzig? zu umständlich? von zu wenigen Browsern unterstützt?)
Direkt auf der Net I/O für ein Diagramm ein Gif zu erzeugen .... bin mir
nicht sicher, ob ich mir das antun würde.
Karl Heinz Buchegger schrieb:> Was haltet ihr an dieser Stelle von SVG?> (zu geschwätzig? zu umständlich? von zu wenigen Browsern unterstützt?)
SVG ist schön (soweit ich es beurteilen kann), allerdings würde ich in
Verbindung mit einem µC eher etwas mit Javascript und canvas machen.
Das kann auch jeder modernere Browser und zudem muss der AVR keine
XML-Datei erstellen/ausgeben.
Ich habe bei einem Projekt eine Json-Ausgabe im AVR implementiert, die
von einer Website aus abgerufen und in Diagramme (Sparklines)
umgewandelt wird.
Sieht u.a. so aus wie im Anhang. Das Hintergrundbild liegt auf einem
größeren Webserver, der Farbverlauf beim Puffer entspricht dem
Temperaturgradienten und wird wie die Sparklines per Javascript erzeugt.
Wenn Interesse am Code besteht, gerne ;)
Hi,
vielen Dank für die Rückmeldung.
Ich möchte ein Hutschienenmodul auf Basis des Net IO Bauen, das wäre
kein Problem. Teile habe ich alle standardmäßig da. Erster Test wäre eh
auf einem NET IO von Pollin, um zu sehen ob es generell möglich ist.
Ich habe einen 3 Phasen Netzanalysator (Gavazzi EM24):
http://www.energiapositiva.eu/Impianti_Fotovoltaici/cablaggi_collaudo_contatori/contatori_utf_mid_gse/Scheda_Tecnica_Em24din.pdf
In unserer Hausanschlussleitung integriert. Dieser hat eine RS485
Schnittstelle, dazu habe ich einen RS485 232 Konverter mit Testsoftware
auf meinem Bastel PC am laufen.
Ziel 1 wäre es mit dem NET IO die Daten vom EM24 auf die SD zu
schreiben.
Ziel 2 diese Daten ins Hausinterne Netz zu stellen. Ethernet liegt
bereits über einen Devolo vor ort.
Im dritten Schritt würde ich mir eine TV-Internet-box im
Zigarettenschachtelformat zulegen um das ganze am TV sichtbar zu machen.
Ziel 2 ist meiner Meinung nach der Knackpunkt an meinem Projekt, denn
ich frage mich ob der Mega32 die grafische Darstellung bewältigt
bekommt.
Ich muss mich zudem erstmal mit dem Thema Webdesign beschäftigen, c ist
kein Problem, aber HTML, PHP, JAVA, XML etc - nie gemacht - und ich gehe
an die Themen eher mit dem Elan (Mittel zum Zweck) ran. Es wäre mir
lieber das einfach zu halten. Muss auch nicht her machen, nur praktisch
sein...
Gruß,
M.
Hi,
Maddin schrieb:> Wie funktioniert das denn genau? Was ist das für eine> Programmiersprache? Wäre das etwas für kleinen SPeicher?
Auf dem AVR werkelt eine Abwandlung der Software von Ulrich Radig. Zwei
HTTP-Requests habe ich auf Funktionen umgeleitet, die Paket für Paket
den Json-Code zusammenbauen und aufs Netz legen. Mit kleinem Speicher
(RAM) geht das zwar auch, macht aber nicht so viel Spaß, da man stärker
fragmentieren muss. Deswegen habe ich den Mega32 sehr schnell aus dem
Net-IO rausgeworfen und einen Mega644 eingesetzt.
Die HTML-Seite (bzw. ein Javascript darin) ruft die Json-"Dateien" dann
per XmlHttpRequest ab, welcher z.B. wie folgt beantwortet wird:
über einen Json-Parser wird der Code in ein Javascript-Objekt
verwandelt, das dann für die Anzeige im Browser aufbereitet wird.
Das "lustige" ist, dass der HTML-Body lediglich aus folgenden Tags
besteht:
1
<body>
2
<ul id="tablist"></ul>
3
<div id="img-container"></div>
4
<div id="lvhistory"></div>
5
<div id="lvdays"></div>
6
</body>
der restliche Inhalt wird erst nach dem Laden generiert.
Das sieht zwar für den nicht-Javascript/HTML-Kenner sehr ungewöhnlich
aus, ist aber in der Hinsicht praktisch, da man kleine
Formatierungsänderungen sehr schnell global machen kann. Genauso lässt
sich Javascript im Gegensatz zu HTML noch ein Stück weit komprimieren
(siehe Google Closure Compiler), sodass man den Code zur Not auch direkt
in den AVR-Flash packen kann (was ich jedoch für Verschwendung halte).
Zum erstellen der Grafiken verwende ich das <canvas>-Element, deren
Inhalt in etwa einer PictureBox im .NET-Universum entspricht (wobei man
zeichnen kann, wo und wie man will, es gibt kein Paint-Event). Ein guter
Anlaufpunkt dafür ist
http://blog.nihilogic.dk/2009/02/html5-canvas-cheat-sheet.html bzw.
https://developer.mozilla.org/en/Canvas_tutorial
Grundsätzlich kann ich für die Entwicklung eine lokale Testseite (leere
HTML-Seite mit <canvas>-Element) + Firebug empfehlen. Mit großem
Konsolenfenster kann man sehr schnelle Gehversuche machen. Wenn man
etwas verbockt hat, reicht ein Druck auf F5 und man kann wieder von
vorne starten.
Quellcodes kann ich morgen erst posten, da ich auf dem Notebook hier
nicht alles beieinander habe.
Viele Grüße
Chris
Hi,
naja, es ist auch ein Hutschienenmodul und es hat Ethernet - naja und
dann wars das auch schon mit den Gemeinsamkeiten. Bei Volkszähler war
ich auch bereits schon mal - kann damit nicht so viel anfangen...
Ich habe nun den Webserver von Ulrich auf meinem NET-IO Bausatz zum
laufen bekommen, war nun nicht so das Kunststück...
Es werden 3 grüne Butten (gifs) erzeugt und für den AD-Wandler gibt es 4
Balkendiagramme auf der Site. Vielleicht könnte ich bereits diese
einfachen Grafiken zu darstellung meines Energieverbrauches über Jahr,
Monat,Tag und aktuell zweckentfremden...
Es ist der 2te Absatz hier:
http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin
unter:
U. Radigs Webserver
Naja, der Atmega644 ist unterwegs. Nächste Schritte wären für mich:
1) auf einem Atmega644 zum laufen bekommen
2) 485 vom gavazzi Zähler Protokoll auswerten
3) SD Karte mit einbinden ?
3.1) RTC
4) Webserver manipulieren und erweitern
5) Hardware bauen:
Umfang:
1)Serielle Schnittstelle (über Konverter an den Gavazzi Zähler
angeschlossen)
2)Ethernet über ENC
2.1) SD Karte (1GB) zum mitloggen
3)On Board Netzteil (Traco - wie beim Volkszähler)
4)Ein Schaltkanal 16A/230V Potenzialfrei.
5)Kleine Anzeige/Display
Das ganze sollte in ein 2Einheiten Modul wie der Volkszähler passen.
Gruß,
M.
PS.: Es werden später folgende Werte dargestellt:
Spannung L1/L2/L3
Strom L1/L2/L3
Leistung L1/L2/L3/G
Blindleistung L1/L2/L3/G
Scheinleistung L1/L2/L3/G
Gesamtverbrauch
Zudem fände ich eine Taste zur Nullen (Grafik auf 0 setzen) im
Momentanverbrauchsmodus ganz gut. Beispiel:
L1 wird im Momentanverbrauchsmodus grafisch dargestellt. Meinetwegen die
Momentane Leistung auf der Phase (380Watt), Update sekündlich. Bevor ich
das zu ermittelde Gerät einschalte resette ich L1/Leistung auf 0Watt
(relativ). Klar schwanken die Werte immer etwas, aber so kann man den
Verbraucher dann einschalten und besser erfassen.
Ich habe was ähnliches auf der Basis vom Net-IO am Laufen:
Auf dem Net-IO läuft "openMCP". Es werden von diversen Funksensoren die
Daten eingesammelt und auf SD gespeichert.
Der Net-IO kann die Daten als Graph ausgeben ... Dafür habe ich eine
Webseite hinterlegt, dass die eigentlichen Messwerte über ein CGI Script
vom Net-IO abholt. Das CGI gibt die Daten dabei im Json Format zurück um
sie auf der Webseite einfach(er) verarbeiten zu können.
Zur eigentlichen Darstellung der Daten verwende ich auf der Seite
"Highcharts" (www.highcharts.com) - eine mögliche Alternative wäre
vermutlich auch die Google Chart API.
Meine Lösung hat den Vorteil, dass alles auf dem Net-IO direkt gehostet
wird - also keine externen Rechner etc. benötigt werden. Klarer Nachteil
- es ist ziemlich aufwendig und langsam viele Daten zu verarbeiten.
Hi Chris,
bin ich hier:
http://de.wikipedia.org/wiki/Multi_Router_Traffic_Grapher
richtig?
Wie kann ich denn dieses Programm auf dem Atmega implementieren? Hattest
du nicht die Json-Ausgabe vorgeschlagen.
Bitte etwas ausfürhlicher, ich bin in dem Bereich nicht sehr erfahren.
Letztendlich wäre etwas am besten das man einfach auf einen
speicherbereich des uc "zeigen" lassen könnte. X und Y Achse könnten
immer da sein. Im Speicher liegen meinetwegen 512 8Bit Werte. Damit
könnte ich dann ein Diagramm erzeugen welches 512 x 256 Pixel groß ist -
so in der Art.
Klar kommen dann noch die Punkte:
Skalenbeschriftung,
Darstellung mehrer Werte,
und vielleicht die Farbliche separierung...
Letztendlich hängt das dann wohl vom SRAM des uc ab.
Ich befürchte eh, dass der uc das nicht schaffen wird.
Gruß,
M.
Maddin schrieb:> Wie kann ich denn dieses Programm auf dem Atmega implementieren?
Ist sicher möglich, dürfte aber wenig Spaß machen (und sehr aufwendig
sein)
> Hattest> du nicht die Json-Ausgabe vorgeschlagen.> Bitte etwas ausfürhlicher, ich bin in dem Bereich nicht sehr erfahren.
Den Quellcode für den AVR (bzgl. Json-Ausgabe) kannst du dir unter
http://hobbyelektronik.org/w/index.php/Energieerfassung#Downloads
herunterladen.
Interessant dürfte für dich wahrscheinlich energy.c sein, dort ist ein
Großteil des Zusammenbauens der Pakete.
Ich hab einfach mal die Quelltexte für die Aufarbeitung im Browser
zusammengepackt, aber unter Ausschluss jeder Garantie und Gewährleistung
;)
Die Code ist auch ziemlich unaufgeräumt und wurde nur unter Firefox
getestet.
Zum Ablauf: Beim Öffnen der Seite wird sie durch Javascript mit divs und
Textnodes sowie canvas-Elementen bestückt. Alle 30 Sekunden werden die
Daten vom NET-IO geladen und in den Textnodes aktualisiert sowie in
Arrays angehängt, die dann über die Datei canvas_sparkline.js geplottet.
Wie bereits geschrieben, für das Canvas-Zeug schaust du dir am besten
die Seiten an, die ich in meinem Posting weiter oben
(Beitrag "Re: NET IO - Daten - grafisch im Web zur Verfügung stellen (Diagramm etc.)") erwähnt hab, das
dürfte ein relativ guter Einstieg sein, wenn du dich durch die
Grundlagen von Javascript durchgeknabbert hast ;)
HTH
Chris
moin moin,
bin gerade dabei meine heizung mit einem myavr mit openmcp aufzustocken.
meine sensoren gehen und die daten landen auf der sd.
nun möchte ich gern noch zusätzlich meldungen die von einem externen
sensor über die uart reinkommen als CSV-datei auf der sd ablegen.
hat jemand ein beispiel wie ich auf der sd mit open/write/read/close die
daten in das CSV-file bekomme?
danke.
habe mal versucht das aus dem ctlogger zu übernehmen.
die datei wird erstellt aber es wird nix reingeschrieben.
gibt da wohl noch probleme mitt dem umstellen auf das filesystem.....