Messwerte lesen

Die Daten lassen sich dank ActiveRecord auch komfortabel wieder aus der Datenbank auslesen. Der Code in Listing 4 liest alle Einträge in einem Schwung in die Variable werte ein und multipliziert dabei die Zeitwerte mit 1000. Das Array enthält Wertepaare aus Zeit und Messwert, damit die Diagrammbibliothek diese später als Datenpunkte interpretieren kann. Die Methode inspect generiert aus dem Array eine entsprechende Zeichenkette der Form: @LI: "[[1363465023000, -1.3],[1363468623000, -1.9],…]".

Im Listing wird diese Zeichenkette im Terminal ausgegeben, später bauen wir sie in die Webseite an der entsprechenden Stelle im Javascript-Code ein.

Listing 4

require 'active_record'
ActiveRecord::Base.establish_connection({"adapter"=>"sqlite3", "database"=>"db.sqlite3"})
class Temperature < ActiveRecord::Base
end
werte = Temperature.all.map {|m| [m.zeit * 1000, m.t]}
data = werte.inspect
puts data

Webseiten darstellen

Es gibt verschiedene Wege, die Daten zu Diagrammen zu verarbeiten und diese in einer Webseite einzubetten. So ließe sich per Skript mit Gnuplot eine Grafikdatei erzeugen und dann als Bild einbauen. Google Charts liefert eine Möglichkeit, die Daten an eine Webschnittstelle zu übermitteln und liefert eine Bilddatei zurück. Dann braucht man keine Grafikanwendungen auf dem eigenen Webserver.

Ich habe mich für eine dritte Variante entschieden und die Javascript-Bibliothek Highcharts [4] zum Erzeugen der Diagramme genutzt. Highcharts liefert sehr ansprechende Ergebnisse. Zwar kostet die Nutzung für den kommerziellen Einsatz nicht gerade wenig, die private Nutzung räumt der Anbieter Highsoft Solutions AS unter der "Creative Commons Attribution-NonCommercial 3.0 License" aber kostenfrei ein.

Listing 5 zeigt ein Diagramm für den Temperaturverlauf über 24 Stunden. Um es zu erzeugen, gilt es lediglich die beiden Javascript-Bibliotheken jQuery und Highcharts einzubetten. Das eigentliche Diagramm wird als Javascript-Funktion definiert. Das einzig Besondere stellt das Kennzeichnen der X-Achse als Datumswerte und das Einbetten der Datenwerte dar. Ein Datenwert setzt sich aus der Zeitangabe und dem Temperaturwert zusammen. Die Zeitangaben aus der Wetterstation haben wir vorher mit 1000 multipliziert, da Javascript die Werte in Millisekunden erwartet, die Angaben in den Messdaten jedoch in Sekunden vorliegen.

Listing 5

<html>
 <head>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script src="http://code.highcharts.com/highcharts.js"></script>
  <script>
   $(function () {
    var chart = new Highcharts.Chart({
     chart: { renderTo: 'container' },
     title: { text: 'Messdaten'},
     xAxis: { type: 'datetime' },
     yAxis: { title: { text: 'Temperatur (C)' } },
     series: [{
      name: "Temperatur",
      data: [[1363465023000, -1.3], [1363468623000, -1.9], [1363472223000, -2.5],
      [1363475823000, -2.5], [1363479423000, -2.8], [1363483023000, -3.1],
      [1363486623000, -3.4], [1363490223000, -3.7], [1363493823000, -3.9],
      [1363497423000, -3.9], [1363501023000, -3.3], [1363504622000, 2.0],
      [1363508223000, 1.1], [1363511822000, 7.8], [1363515422000, 5.4],
      [1363519022000, 4.3], [1363522623000, 5.9], [1363526223000, 6.3],
      [1363529823000, 5.2], [1363533423000, 3.8], [1363537023000, 3.1],
      [1363540623000, 2.0], [1363544223000, 1.6], [1363547823000, 1.3],
      [1363551422000, 1.1]],
      pointStart: 1363465023000,
      pointInterval: 3600 * 1000 // one hour
     }]
    });
   });
  </script>
 </head>
 <body>
  <div id="container" style="height: 400px"></div>
 </body>
</html>

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

Infos zur Publikation

LU 01/2018: FLINKE BROWSER

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

Linux Mint als Zweitsystem
Wolfgang Robert Luhn, 13.01.2018 19:28, 1 Antworten
Wer kann mir helfen??? Habe einen neuen Laptop mit vorinstaliertem Windows 10 gekauft. Möchte g...
externe soundkarte Kaufempfehlung
lara grafstr , 13.01.2018 10:20, 3 Antworten
Hallo Ich bin auf Suche nach einer externen soundkarte.. Max 150 Euro Die Wiedergabe is...
Prozessor-Sicherheitslücke Meltdown und Spectre
Wimpy *, 06.01.2018 10:45, 2 Antworten
Ich habe heute ein Sicherheitsupdate "ucode-intel" für openSuse 42.3 erhalten. Ist damit das Prob...
LENOVO ideapad320 Touchpad Linux Mint 18
Peter Deppen, 23.12.2017 16:49, 3 Antworten
Hallo, bin Linux Anfänger und habe das Problem, dass das Touchpad auf dem LENOVO ideapad320 mit L...
PClinuxOS
Günter Beckmann, 20.12.2017 09:51, 1 Antworten
Hi, LUC, hat jemand von Euch Erfahrung mit dem in Heft 12/2017 vorgestelletn PClinuxOS? Ich...