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: 280 Punkte bei 72 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 03/2018 NEUE DISTRIBUTIONEN

Digitale Ausgabe: Preis € 5,95
(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

Internet abschalten
Karl-Heinz Hauser, 20.02.2018 20:10, 0 Antworten
In der Symbolleiste kann man das Kabelnetzwerk ein und ausschalten. Wie sicher ist die Abschaltu...
JQuery-Script läuft nicht mit Linux-Browsern
Stefan Jahn, 16.02.2018 12:49, 2 Antworten
Hallo zusammen, ...folgender goldener Code (ein jQuery-Script als Ergebnis verschiedener Exper...
XSane-Fotokopie druckt nicht mehr
Wimpy *, 30.01.2018 13:29, 2 Antworten
openSuse 42.3 KDE 5.8.7 Seit einem Software-Update druckt XSane keine Fotokopie mehr aus. Fehler...
TOR-Browser stürzt wegen Wikipedia ab
Wimpy *, 27.01.2018 14:57, 0 Antworten
Tor-Browser 7.5 based on Mozilla Firefox 52.8.0 64-Bit. Bei Aufruf von http: oder https://de.wi...
Wifikarte verhindert Bootvorgang
Maik Kühn, 21.01.2018 22:23, 1 Antworten
iwlwifi-7265D -26 failed to load iwlwifi-7265D -25 failed to load iwlwifi-7265D -24 failed to l...