Jump to content

Recommended Posts

Geschrieben

"Wetterstation" - Grafische Temperaturanzeige in 10 Minuten.

 

EDIT: Fuer Protokollversion 2 gehts HIER entlang.

 

Hierbei geht es darum automatisch eine Webseite zu erstellen, die benoetigten Temperaturwerte vorher abzufragen und die letzten 24 gemessenen Werte grafisch als Kurve darzustellen. Siehe Screenshot im Anhang.

Wenn man jede Stunde nur einen Wert misst oder nur Werte der "volle" Stunde benutzt, dann kann man die Temperaturkurve der letzten 24 Stunden darstellen. Das ganze sollte innerhalb weniger Minuten oder zumindest in kurzer Zeit zu bewerkstelligen sein, sofern man die unten genannten Voraussetzungen erfuellt.

 

Das Projekt richtet sich an alle die schnell einen Erfolg sehen wollen um dann mit mehr Freude weiterzumachen. Ich persoenlich finde es einfacher etwas laufendes zu modifizieren, als mit einer trockenen Doku anzufangen und ueber 1000 Fragen zu stolpern die ich nicht beantworten kann. Deshalb hier eine "Wetterstation" im Miniformat zum weiterbasteln.

 

Wer auf den ersten Blick 100 Sachen findet die man besser machen kann ist genau richtig hier. Er hat die Sache verstanden und kann dann das verbessern was er moechte. Manche Programmzeilen sind absichtlich schlicht gehalten, damit man sie besser nachvollziehen kann.

 

Folgedes Scenarien stelle ich mir fuer den Einsatz vor:

 

PC mit Zugriff uebers Netz auf Temperaturbricklet und Bereistellung der Htmlseite per Webserver.

oder

Scripte laufen auf dem gleichen PC an dem auch der Stack haengt und ein kleines ftp-script (not included) transferiert die erstellte Htmlseite auf einen einfachen Webspace im Internet.

oder

eine Mischform daraus :-)

 

Das ganze ist auf einem Debian 6.0.5 Server entstanden und sollte somit auf jedem Debian/Ubuntu Problemlos laufen. Andere Linuxversionen moege man gerne testen.

 

Benoetigt wird:

Stack mit Temperatur Bricklet. Evtl. getestet mit "brickv".

Debian/Ubuntu PC fuer die Scripte

Evtl. ein Webserver.

Was NICHT benoetigt wird:

Datenbank

MySQL

Python

PHP

APIs

Bindings

 

 

Der Weg in der Kurzfassung:

StackID mit "enumeratestack.sh" ermitteln und "gettemperatur.sh" anpassen.

Cronjob mit Stunden oder Minuten Aufruf von "gettemperatur.sh" einrichten.

Grafiklibrary "flot" downloaden und auspacken.

Grafik per Browser anzeigen lassen.

Fertig.

 

Step by step Anleitung:

Auf der shell pruefen ob die Linuxtools "nc, bc und od" installiert sind. "which nc bc od" usw. Hinweis siehe unten.

Ordner/Zielverzeichnis anlegen, mein Archiv "shelltemperaturmini.tar" runterladen und

die Files auspacken: "tar xvf shelltemperaturmini.tar"

Ggf. Rechte mit "chmod 755 *.sh" anpassen.

(Hinweis: Wer Ubuntu anstelle von Debian benutzt muss in den Scripten noch "nc -w1 ..." gegen "nc -q1 ..." tauschen)

In "enumeratestack.sh" die IP anpassen und dann "./enumeratestack.sh" ausfuehren.

Die STACKID des Temperaturbricklets aufschreiben.

 

In "gettemperatur.sh" die IP und STACKID anpassen. Danach "./gettemperatur.sh" ausfuehren.

Es sollte in leserlicher Form die Temperatur angezeigt werden: "Die Temperatur betraegt: 23.06 Grad."

Der Pfad zur Datei "drawhtml.sh" sollte noch auskommentiert bleiben.

Jetzt "./gettemperatur.sh x" aufrufen. Nun erscheint eine Temperaturausgabe im Logfileformat.

 

 

Nun Datensammeln: "crontab -e" aufrufen und folgende Zeile anpassen und einfuegen wenn minuetlich gesammelt werden soll:

* * * * * /home/tinker/gettemperatur.sh x >> /home/tinker/temperatur.collect 2>/dev/null

Wenn stuendlich gesammelt werden soll dann so einsetzen:

0 * * * * /home/tinker/gettemperatur.sh x >> /home/tinker/temperatur.collect 2>/dev/null

 

Wenn nun mindestens 24 Werte zusammengekommen sind kann man problemlos die Html Seite zeichnen lassen.

In "drawhtml.sh" den eigenen Pfad (DIRECTORY) und das Zielverzeichnis der erstellten Html Seite (WWWDIRECTORY) anpassen.

Die datei "./drawhtml.sh" ausfuehren. Es kommt kein sichtbarer Output.

Ins Verzeichnis $WWWDIRECTORY wechseln. Dort sollte nun die Datei temperatur.html liegen.

 

Jetzt noch die Dateien "flot - Attractive Javascript plotting for jQuery" holen und auspacken.

Holen "wget http://flot.googlecode.com/files/flot-0.7.tar.gz"

Und im Verzeichnis $WWWDIRECTORY entpacken: "tar xvf flot-0.7.tar.gz"

Nun sollte es in $WWWDIRECTORY einen Ordner "flot" geben in dem die Files fuer die Javascriptunterstuetzung liegen.

Damit muss nichts gemacht werden. Wenn der Browser unsere "temperatur.html" laedt, dann holt er sich die notwendigen Dateien von dort selbstaendig. Siehe Html Quellcode.

 

Das war es auch schon. Wenn man nun mit dem Broswer die Datei "temperatur.html" anclickt sollte sich die Seite mit den Temperaturwerten in grafischer Form oeffnen. Dies kann man lokal, also ohne Webserver direkt aus dem Filesystem ausprobieren oder man hat einen Webserver aufgesetzt den man nun komfortabel ansurfen kann. "http://MEINWEBSERVER/temperatur.html"

 

Damit nach den automatischen Datensammeln per cronjob auch jedesmal die automatische Erstellung der Webseite angestossen wird muss man

man noch in "gettemperatur.sh" den absoluten Pfad zu "drawhtml.sh" angeben und das Kommentarzeichen entfernen.

 

Viel Erfolg.

 

Der Loetkolben

 

 

Anhang:

Details und einige Erklaerungen.

Die Kommunikation verlaeuft per TCP, somit sind keine Bindungs notwendig.

Die temporaeren "data.*" Files koennen liegenbleiben und helfen ggf. beim Verstehen. Wer sie loeschen will finded am Ende

der Scripte auskommentierte "## rm ..." Zeilen. Einfach Kommentarzeichen loeschen.

Folgende Shelltools muessen vorhanden sein: nc, bc, od

"od" ist im Paket "coreutils", "bc" ist ein eigenes Paket.

Ein "apt-get install coreutils bc" sollte das Problem loesen. Fuer nc gibt es kein Paket, dass sollte schon mit dabei sein.

 

 

 

shelltemperaturmini.jpg.375d133e6ffa7c20100279f5c8498c30.jpg

shelltemperaturmini.tar

Geschrieben

Moin Moin,

ich habe mir die kleine Mühe gemacht und das neue Ubuntu 12.04 LTS aufgesetzt - ich muß sagen, es steht mir 8)

Die Skripte hier sind schnell installiert und die kleineren Probleme hat mir der Lötkolbensupport schnell vom Hals geschafft. Hiermit offiziell: VIELEN DANK!

Ich habe bisher um Unix und seine Abkömmlinge einen weiten Bogen gemacht, aber dank dem guten Forum hier habe ich den Schritt gewagt und muß sagen: Es ist Anfängertauglich.

Die Skripte sind recht einfach gehalten und somit leicht variierbar - das ist ja auch der Sinn dahinter.

Ich möchte Neueinsteiger einfach mal hiermit ermutigen. Man bekommt schnell ein Ergebnis. Wobei es hier um eine Meßwerterfassung geht, nicht etwa um eine Steuerung. Ist aber mal ein guter Start!

 

Griassla aus BW

Der Drache

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...