26.02.2014 Aufrufe

LinuxUser Skripten und Coden (Vorschau)

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Hardware<br />

RasPi als Wetterstation<br />

Zur Installation folgen Sie den Anweisungen<br />

auf der Rbenv-Webseite. Anschließend<br />

richtet der Aufruf rbenv install<br />

2.0.0‐p0 die aktuelle Ruby-Version ein.<br />

Bevor Sie Ruby dann verwenden können,<br />

legen Sie per rbenv global 2.0.0‐p0<br />

erst einmal diese Version als Standard<br />

fest. Ein Test mit ruby ‐v zeigt, ob die<br />

Installation geklappt hat.<br />

Die Ruby-Bibliotheken verwalten Sie<br />

mittels RubyGem. Um Webanwendungen<br />

mit Sinatra zu programmieren, richten<br />

Sie mit dem Kommando gem install<br />

sinatra das Sinatra-gem ein. Listing<br />

2 zeigt eine vollwertige Webanwendung,<br />

die Sie nach dem Start mit ruby<br />

webapp.rb im Browser unter der URL<br />

http://localhost:4567/ aufrufen.<br />

Datenbank befüllen<br />

Jetzt müssen Sie die Messdaten noch in<br />

einer Datenbank ablegen. Das schlanke<br />

SQLite genügt für solche einfachen Zwecke,<br />

versteht aber trotzdem SQL. Sie richten<br />

das gute Stück aus dem Debian-Paket<br />

sqlite3 ein. Um SQLite aus Ruby heraus<br />

zu verwenden, benötigen Sie zudem<br />

das Ruby-gem sqlite3. Eine neue<br />

Datenbankdatei db.sqlite3, die zum<br />

Listing 5<br />

Listing 4<br />

require 'active_record'<br />

ActiveRecord::Base.establish_coU<br />

nnection({"adapter"=>"sqlite3",<br />

"database"=>"db.sqlite3"})<br />

class Temperature <<br />

ActiveRecord::Base<br />

end<br />

werte = Temperature.all.map {|m|<br />

[m.zeit * 1000, m.t]}<br />

data = werte.inspect<br />

puts data<br />

<br />

<br />

<br />

<br />

<br />

$(function () {<br />

var chart = new Highcharts.Chart({<br />

chart: { renderTo: 'container' },<br />

title: { text: 'Messdaten'},<br />

xAxis: { type: 'datetime' },<br />

yAxis: { title: { text: 'Temperatur (C)' } },<br />

series: [{<br />

name: "Temperatur",<br />

data: [[1363465023000, ‐1.3], [1363468623000, ‐1.9],<br />

[1363472223000, ‐2.5],<br />

[1363475823000, ‐2.5], [1363479423000, ‐2.8], [1363483023000,<br />

‐3.1],<br />

[1363486623000, ‐3.4], [1363490223000, ‐3.7], [1363493823000,<br />

‐3.9],<br />

[1363497423000, ‐3.9], [1363501023000, ‐3.3], [1363504622000,<br />

2.0],<br />

[1363508223000, 1.1], [1363511822000, 7.8], [1363515422000, 5.4],<br />

[1363519022000, 4.3], [1363522623000, 5.9], [1363526223000, 6.3],<br />

[1363529823000, 5.2], [1363533423000, 3.8], [1363537023000, 3.1],<br />

[1363540623000, 2.0], [1363544223000, 1.6], [1363547823000, 1.3],<br />

[1363551422000, 1.1]],<br />

pointStart: 1363465023000,<br />

pointInterval: 3600 * 1000 // one hour<br />

}]<br />

});<br />

});<br />

<br />

<br />

<br />

<br />

<br />

<br />

86 www.linux-user.de<br />

06.2013

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!