Raspberry Pi mit Wetterstation und Außensensoren (Teil 3)


Raspberry Pi

Homepage.JPG

Wetterstation und Außensensoren - Teil 3

Claus Eckert

In den vorangegangenen Teilen haben wir unseren Raspberry Pi programmiert, die Wetterstation angeschlossen und die ersten Daten auf unseren Server bzw. Website-Speicher im Internet geladen.

Nun möchten wir die Daten auf unserer Website anzeigen.
Grundsätzlich haben wir zwei Arten von Dateien. Die Grafik-Dateien (*.png) und die Text-Dateien (*.txt)

Beide Dateiarten liegen also in einem Ordner auf unserem Speicher im Netz. Um die Dateien auf einer Seite anzeigen zu können, müssen wir erst eine Seite erstellen. Wie das funktioniert, sollte jeder, der eine Website betreibt, wissen.

png-Dateien einbinden

Um die png-Dateien einzubinden genügt es, einen Verweis auf den Speicherplatz herzustellen. So wie man das mit Bildern auch macht.

Beispiel:
HTML:
<img alt="" src="http://www.meineWebsite.de/wetter/rose_1hrs.png" />
Ich verwende absolute Pfade, weil es bei meiner Seite egal ist. Also erst die Adresse meiner Homepage, dann der Ordner, in der die Datei hinterlegt ist, in meinem Fall wetter, danach der Name der Datei.

Die Zusammenhänge:

Diese Datei hat im Raspberry Pi ihren Ursprung im Ordner graph_templates und heißt dort rose_1hrs.png.xml.
Im Raspberry Pi wird sie, mit den Daten der Wetterstation versehen, in eine Bilddatei umgewandelt und dann als rose_1hrs.png auf die Webseite hochgeladen.
Die Steuerungsdatei für diese Operation ist unsere Datei waether.ini im Ordner data.
Hat man diese Zusammenhänge mal begriffen, kann man sich an Änderungen in der weather.ini wagen.

txt-Dateien einbinden (Wordpress)

Wie man die txt-Dateien einbindet, hängt von der verwendeten Software ab.
Hier kann ich leider nur für eine Installation in Wordpress Hinweise geben.
Man benötigt bei Wordpress ein Plugin, das es ermöglicht, php-Code in einer Seite einzugeben.

Ich verwende das Plugin: Insert php

Dieses Plugin wird wie bekannt installiert.
Jetzt wird die Seite erstellt. Im Textmodus verwendet man die Funktion [insert_php] zum Einstieg. Dann die include-Funktion von PHP mit dem Verweis auf Ordner und Datei und schließt mit [/insert_php] ab.

Beispiel:

Code:
[insert_php]include('wetter/6hrs.txt');[/insert_php]

Nach dem Speichern sollte die Datei auf der Seite angezeigt werden.


Bearbeiten der Vorlagen

Die Vorlagen sind alle in englischer Sprache. Ich habe mir die Mühe gemacht, meine Vorlagen anzupassen. Hier ein paar Tipps, wie das am Einfachsten geht.
Von unserer Installation müssten wir noch die Ordner graph-templates und templates auf unserem PC haben. Das ist jetzt nicht unpraktisch.

Grafische Dateien bearbeiten

Wir gehen in den Ordner graph_templates und öffnen mit der rechten Maustaste und Notepad++ eine Datei.

Ich schlage vor: 24hrs_full_features.png.xml

Deine Datei sieht anders aus als die hier abgebildete? Der Grund: Ich habe die Titel bereits in Deutsch abgefasst und die Windgeschwindigkeit in km/h geändert.
Um die Datei zu verstehen nehmen wir uns etwas Zeit.

Beginnen wir:

size gibt die Größe des Bildes vor, in der es hochgeladen wird. Die Vergrößerung der Werte lässt auch den Upload-Traffic steigen.

lmargin und rmargin gibt den Seitenabstand vor,

duration gibt die Zeitdauer der angezeigten Werte vor,

plot ist der Befehl, um etwas auszugeben,

subplot ist der Befehl, um etwas innerhalb von plot auszugeben,

yrange y2range gibt den Bereich vor, der auf der Y-Achse der Grafik angezeigt werden soll.
y = links, y2 = rechts,

ylabel y2label gibt die Einheit an,

source gibt den Quellordner an, aus dem die Werte gezogen werden. Im Beispiel raw. Was auch gemäß unserer Programmierung in weather.ini in Ordnung ist.

ycalc oder xcalc gibt an, welche Werte für die betreffende Linie verwendet werden sollen. Hier kann auch etwas errechnet werden. Siehe bei dew_point.

title ist selbsterklärend.

Soweit ein grober Überblick. Veränderungen sollte man nur behutsam vornehmen. Bei den Titeln ist das allerdings relativ ungefährlich.

Nach der Änderung kann man die Datei speichern, schließen und via Filezilla in den Ordner graph_templates hochladen. Die nächste Aktualisierung sollte bereits mit den neuen Einstellungen zu sehen sein. Falls nicht, ein Reboot des Raspberry Pi kann helfen.

Hier noch mal der Blick auf die Datei 24hrs_full_features.png.xml, wie sie von mir verwendet wird:

HTML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<graph>
  <!--
  pywws - Python software for USB Wireless Weather Stations
  http://github.com/jim-easterbrook/pywws
  Copyright (C) 2008-13  Jim Easterbrook  jim@jim-easterbrook.me.uk
 
  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License
  as published by the Free Software Foundation; either version 2
  of the License, or (at your option) any later version.
 
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
 
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  -->
  <size>600, 1000</size>
  <lmargin>4</lmargin>
  <rmargin>4</rmargin>
  <duration>hours=24</duration>
  <xtics>2</xtics>
  <xformat>%H%M</xformat>
  <dateformat></dateformat>
  <plot>
    <yrange>-10, 45</yrange>
    <y2range>0, 100</y2range>
    <ylabel>°C</ylabel>
    <y2label>%</y2label>
    <source>raw</source>
    <subplot>
      <colour>1</colour>
      <title>Temperatur (°C)</title>
      <ycalc>data['temp_out']</ycalc>
      <style>line 2</style>
    </subplot>
    <subplot>
      <colour>3</colour>
      <ycalc>dew_point(data['temp_out'], data['hum_out'])</ycalc>
      <title>Taupunkt (°C)</title>
    </subplot>
    <subplot>
      <colour>2</colour>
      <ycalc>data['hum_out']</ycalc>
      <title>Luftfeuchtigkeit (%)</title>
      <axes>x1y2</axes>
    </subplot>
  </plot>
  <plot>
    <title>Windgeschwindigkeit</title>
    <yrange>0, 50</yrange>
    <source>raw</source>
    <subplot>
      <colour>4</colour>
      <ycalc>wind_kmph(data['wind_gust'])</ycalc>
      <title>Boen</title>
    </subplot>
    <subplot>
      <colour>3</colour>
      <ycalc>wind_kmph(data['wind_ave'])</ycalc>
      <title>Durchschnitt</title>
    </subplot>
  </plot>
  <plot>
    <title>Niederschlag (mm)</title>
    <yrange>0, 5</yrange>
    <y2range>0, 15</y2range>
    <ylabel>hourly</ylabel>
    <y2label>total</y2label>
    <source>hourly</source>
    <subplot>
      <colour>5</colour>
      <style>box</style>
      <xcalc>data['idx'].replace(minute=30, second=0)</xcalc>
      <ycalc>data['rain']</ycalc>
      <title>Stündlich</title>
    </subplot>
    <subplot>
      <colour>3</colour>
      <axes>x1y2</axes>
      <ycalc>data['rain'] + last_ycalc</ycalc>
      <title>Gesamt</title>
    </subplot>
  </plot>
  <plot>
    <source>hourly</source>
    <subplot>
      <colour>2</colour>
      <ycalc>data['rel_pressure']</ycalc>
      <title>Luftdruck(hPa)</title>
    </subplot>
    <yrange>960, 1050</yrange>
  </plot>
</graph>


Text-Dateien bearbeiten:

Nachdem wir bereits Erfahrungen mit dem Ändern von Dateien gesammelt haben, hier noch eine txt-Vorlage.

Dabei handelt es sich um die Vorlage dmi_borgervejr_1080.txt

Die zeigt genau die Daten an, die ich benötige. Auch hier im Vergleich meine bereits geänderte Datei.

Ich mache es mir jetzt einfach. Nachdem wir bereits die xml-Vorlage geändert haben, dürfte die Änderung in der txt-Datei eine leichte Übung für Dich sein. Schau' die Codezeilen an und Du wirst relativ schnell die Logik verstehen.
Wenn Du etwas verändern und hochladen möchtest, benötigst Du ab jetzt keine Hilfe mehr.

Du bist jetzt Profi.

Code:
#! pywws - Python software for USB Wireless Weather Stations                       #
#! http://github.com/jim-easterbrook/pywws                                         #
#! Copyright (C) 2014-15  pywws contributors                                       #
#!                                                                                 #
#! This program is free software; you can redistribute it and/or                   #
#! modify it under the terms of the GNU General Public License                     #
#! as published by the Free Software Foundation; either version 2                  #
#! of the License, or (at your option) any later version.                          #
#!                                                                                 #
#! This program is distributed in the hope that it will be useful,                 #
#! but WITHOUT ANY WARRANTY; without even the implied warranty of                  #
#! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                   #
#! GNU General Public License for more details.                                    #
#!                                                                                 #
#! You should have received a copy of the GNU General Public License               #
#! along with this program; if not, write to the Free Software                     #
#! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. #
#raw#
#timezone local#
#idx "%d/%m/%Y %H:%M:%S"#
 
Feuchtigkeit: #hum_out "%d%%"#
 
Temperatur: #temp_out "%.1fC"#
 
Luftdruck: #rel_pressure "%.2fhPa"#
 
Windrichtung: #wind_dir "%.0f" "" "winddir_degrees(x)"#
 
Windgeschwindigkeit: #wind_ave "%.0fmps"#
 
Windboen: #wind_gust "%.0fmps"#
 
Niederschlag: #rain "%0.1fmm"#

Vielen Dank für Dein Durchhalten bis zum Ende des Tutorials.
Der Erfolg wird die Mühen vergessen lassen.

Der Link auf unsere Vereinsseite, auf der die Wetterstation erfolgreich läuft:

MFG Achental Wetterstation


Von Anfang an:

Raspberry Pi - Erste Schritte mit der Himbeere

Raspberry Pi mit Wetterstation und Außensensoren - Teil 1

Raspberry Pi mit Wetterstation und Außensensoren - Teil 2

Fortsetzung:

Raspberry Pi mit Wetterstation und Außensensoren - Teil 4


Hier geht es zum Diskussionsthread:
Raspberry Pi mit Wetterstation
 
Ansicht hell / dunkel umschalten
Oben Unten