Alles zusammen

Die bisher beschriebenen Zutaten machen den Kern der Anwendung aus. Was noch fehlt, ist im Wesentlichen die regelmäßige Aktualisierung der Daten und das Zusammenspiel der bisher beschriebenen Komponenten. Eine einfache Webanwendung, die Daten aus der Datenbank ausliest und das entsprechende Diagramm generiert, sehen Sie in Listing 6.

Listing 6

require 'active_record'
require 'sinatra'
ActiveRecord::Base.establish_connection({"adapter"=>"sqlite3", "database"=>"db.sqlite3"})
class Temperature < ActiveRecord::Base
end
get '/' do
  werte = Temperature.all(order: "zeit desc", limit: 24)
  @data = werte.map {|m| [m.zeit * 1000, m.t]}.inspect
  @start_time = werte.first.zeit
  erb :index
end
__END__
@@ index
<html>
 <head>
 [ ... wie in Listing 5, bis 'series' ...]
      series: [{
        name: "Temperatur",
        data: <%= @data %>,
        pointStart: <%= @start_time * 1000 %>,
        pointInterval: 3600 * 1000 // one hour
      }]
 [ ... weiter wie in Listing 5 ...]

Die eigentliche Sinatra-Webanwendung steckt in den Zeilen 8 bis 13. Der Aufruf von erb :index baut die Daten in die Webseite ein, die wiederum ab Zeile 18 gleich in das Skript eingebettet ist. Erb ersetzt in Zeile 23 den Code <%= @data %> durch den Inhalt der Variable @data. Das Ergebnis im Browser zeigt Abbildung 2.

Abbildung 2: Ein Highcharts-Diagramm der Wetterdaten in einer Sinatra-Webanwendung.

Um das regelmäßige Erfassen der Daten kümmert sich ein Cron-Job mit einem stündlichen Aufruf des Lade-Skripts aus Listing 7. Das Skript legen Sie im Verzeichnis /etc/cron.hourly ab und markieren es mit sudo chmod a+x crontab_pi als ausführbar. Das im Listing aufgeführte Skript load_data liest die Messdaten aus, schreibt sie in die CSV-Datei und lädt diese in die Datenbank.

Listing 7

30 * * * * /usr/local/bin/load-data > /dev/null 2>&1

Ausblick

Listing 6 hat das Prinzip einer Sinatra-Webanwendung gezeigt, in der mit relativ wenig Code eine vollwertige Webanwendung entsteht. Der Rest ist Fleißarbeit und besteht größtenteils darin, die anderen Messwerte der Wetterstation einzubeziehen und das Programm etwas aufzuräumen. Ein mögliches Resultat dieser Bemühungen zeigt Abbildung 3.

Abbildung 3: Die Wetterdaten in der fertigen Webanwendung.

Das vorläufige Ergebnis meiner Wetter-Anwendung habe ich als Quellcode in gitHub.com [5] eingestellt. Um die Sourcen mit Git herunterzuladen und auszuprobieren, erzeugen Sie zunächst eine lokale Kopie:

$ git clone git://github.com/rheikvaneyck/rnexus.git

Später können Sie Aktualisierungen dann mit git pull nachladen. Noch ist der Code an vielen Stellen verbesserungsfähig. Einen Einblick in die Möglichkeiten, mit dem einem Raspberry Pi auch eigene Webanwendungen zu bauen, verschafft er aber allemal. 

Infos

[1] TFA Wetterstation Nexus: http://tfa-dostmann.de/index.php?id=62

[2] Te93tool: http://te923.fukz.org/

[3] Rbenv: https://github.com/sstephenson/rbenv

[4] Highcharts: http://www.highcharts.com/

[5] Rnexus Wetter-Web-Anwendung: https://github.com/rheikvaneyck/rnexus

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare
Gute Arbeit
W. Spitzner (unangemeldet), Sonntag, 26. April 2015 18:49:47
Ein/Ausklappen

Eine genauere Beschreibung des Ablaufes mit den Befehlsfolgen wäre schön gewesen. So muß man das Rad noch einmal neu erfinden. Für Anfänger völlig ungeeignet.
Schade..


Bewertung: 250 Punkte bei 61 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 10/2017: Daten retten & sichern

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...