Funktion des Skriptes
Bereitstellung der Daten im richtigen Format für wettersektor, zur Datenabholung von WeeWx.
Mit dem neuesten Update hat man nun die Möglichkeit, die Daten zur Abholung bereit zustellen oder diese aktiv an Wettersektor zu übermitteln.
Voraussetzungen
Funktionierende WeeWx Installation
Python 3.5 oder höher
In der folgenden Anleitung wird davon ausgegangen, dass der Standardpfad zur Weewx Datenbank /var/lib/weewx lautet.
Der Standardpfad zum Datenexport: /var/www/html/weewx/wettersektor
Dies ist abhängig von der Apache2 Konfiguration, wobei /var/www/html/weewx/ dem Standard der WeeWx Anleitung entspricht.
Skripte
Folgende Skripte und Dateien müssen in den selben Ordner kopiert werden:
eigene_wetterdaten.py (optional, Datei nicht enthalten)
wetterconfig.toml
messwerte_umrechner.py
wettersektor_export.py
grafana_export.py (optional, Datei nicht enthalten)
Am besten hierfür im Homeverzeichnis des Benutzers einen Ordner erstellen, Beispielsweise mit dem Namen wetter_daten_management
mkdir ~/wetter_daten_management
Hierein die benötigten Skripte und Datein kopieren
Anschließend die wetterconfig.toml Datei anpassen. Hierbei kann der komplette Block mit grafana ignoriert oder gelöscht werden. Diesen Abschnitt würde die Datei grafana_export.py benötigen.
# Allgemeine Konfiguration
[weewx]
datenbankpfad = "PFAD/ZU/WEEWX/DATENBANK"
sleeptime = 60 # Zeitverzögerung wie lange Skript bis zur Ausführung wartet damit es nicht kolidiert mit Weewx
# Grafana Konfiguration
[grafana]
loglevel = 2 # (0=NOTSET 1=DEBUG 2=INFO 3=WARNING 4=ERROR 5=CRITICAL) Standard = 2
pfad_ausgabe = "/PFAD/WOHIN/AUSGABE/FÜR/GRAFANA/"
grafana_name = "STATIONSNAME" # Wie Station bei Admin gemeldet
server_url = "GRAFANA_SERVER_URL" # Erhältlich bei Admin von Grafana
token = "GRAFANA_TOKEN" # Erhältlich bei Admin von Grafana
dateiname = "DATEINAME_FÜR_ABHOLUNG" # Standard: "daten_grafana.toml"
server_info_url = "GRAFANA_SERVER_INFO_URL" # Erhältlich bei Admin von Grafana
longitude = "STATIONSKOORDINATEN"
latitude = "STATIONSKOORDINATEN"
# Hier alle Zusatzdaten eintragen welche nicht öffentlich sichtbar sein sollen
[grafana.public]
# Bsp: inTemp = false
[wettersektor]
loglevel = 2 # (0=NOTSET 1=DEBUG 2=INFO 3=WARNING 4=ERROR 5=CRITICAL) Standard = 2
username = "WETTERSEKTORUSERNAME"
pw = "pw" #(Benötigt wenn datei = false, Passwort welches auf wettersektor unter WsWin einrichten zu finden ist)
datei = false #(true | false)
pfad_wettersektor_ausgabe = "/PFAD/WOHIN/AUSGABE/FÜR/WETTERSEKTOR/"
pfad_met_tage_datei = "/PFAD/WOHIN/AUSGABE/FÜR/METEOROLOGISCHETAGE/"
Display More
Zu beachten:
Wird datei auf false gestellt, so wird zwingend das Passwort benötigt, welches zu finden ist unter WsWin einrichten. Die Datenabholung muss deaktiviert sein. Wird datei auf true gestellt, so muss die Datenabholung aktiviert sein. Passwort von WsWin einrichten wird nicht benötigt. Der Pfad pfad_wettersektor_ausgabe muss einen Pfad angeben, welcher via Internet erreichbar ist damit Wettersektor die Datei abholen kann.
Weiterhin ist zu beachten, dass das Skript selbst keine Ordner selbständig erstellen kann, diese müssen vor Ausführung entsprechend der Pfadangeben vorhanden oder erstellt werden.
Pythonmodule installieren
pip3 install toml psutil
Bei der Installation ist gegenfalls zu achten die Module für den passenden User zu installieren (bsp. sudo pip3 install ... oder pip3 install --user)
Inbetriebnahme
Anschließend erstmals Datei manuell ausführen, zu beachten ist, dass Weewx per root ausgeführt wird. Deshalb werden hier ebenfalls root Rechte benötigt, welche durch das voranstellen von sudo vor python3 erreicht werden können.
python3 /pfad/zu/wettersektor_export.py Pfad enstprechend der Umgebung anpassen
Abhängig der Konfiguration oben ist nun eine Datei am eingestellte Pfad erstellt worden oder die Daten direkt an Wettersektor hochgeladen.
Cronjob anlegen für regelmäßige Ausführung (Standardmäßig alle 5 Minuten)
sudo crontab -e
Log
Im Verzeichnisordner ist eine Datei Namens wettersektor_datenexport.log zu finden (nachdem das Program das erste mal ausgeführt worden ist).
In dieser werden Fehler und Informationen gespeichert, wenn es nicht erwünscht ist, dass die Statusmeldung "Export erfolgreich" jedesmal eingetragen wird, so ist in der wetterconfig.toml bei loglevel statt eine 2 eine 3 einzugragen. Dies bewirkt dass keine Meldungen mit dem Status "Info" gespeichert werden, sondern erst ab dem Status "Warnung".
Zusatzfunktion
Wer seine komplette Weewx Datenbank exportieren möchte, ruft das Skript wie folgt manuell auf:
sudo python3 /pfad/zu/wettersektor_export.py all <pfad wohin gespeichert werden soll>
Weitere Informationen
- In dem Ausgabepfad werden weitere Txt Dateiein in einem Lesbaren Format zur Kontrolle erstellt (exportdaten.toml)
Optional - Datei in RAM schreiben statt in den Speicher
Ramdisk erstellen
sudo su
Ordner erstellen
mkdir /media/ramdisk
nano /etc/fstab
Eintragung in fstab
Änderungen übernehmen mit einem Neustart oder mit dem Mount
Befehl. Anschließend prüfen ob die Erstellung des Ram Speichers
erfolgreich indem eine neue Datei in den Ordner erstellt wird und
anschließend neu gestartet wird
mount -a
touch /media/ramdisk/test.txt
ls -l /media/ramdisk
reboot
ls -l /media/ramdisk
Die Datei darf beim 2. Aufruf nach dem Neustart nicht mehr
vorhanden sein.
Apache2 Konfiguration anpassen
Hat all das geklappt wird nun der Apache konfiguriert, zur
ermittlung der Server adressen einfach den Hostname anpingen.
Innerhalb des Virtual Host wird folgendes ergänzt:
sudo su
nano /etc/apache2/sites-available/weewx.conf
nano /etc/apache2/apache2.conf
weewx.conf (Name kann von sites-available bei euch abweichen!)
# Syntax: Alias Verzeichnisname Pfad-zum-reelen-Verzeichnis
Alias /datenabholung /media/ramdisk
<Location /datenabholung>
# verbietet allen den Zugriff und erlaubt ihn von aufgeführten Adressen
Order deny,allow
deny from all
allow from 192.168 <Serveradresse>
</Location>
apache2.conf
<Directory /media/ramdisk/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Anschließend muss der Apache neu gestartet werden
systemctl restart apache2
exit
Wetterconfig anpassen
Zum Abschluss noch die config Datei vom wetter-management Tool
zur Ausgabe abändern und das wars:
nano wetterconfig.toml
wetterconfig.toml (Folgende Zeilen dem Pfad ändern, abhängig
dessen ob Grafana und oder wettersektor genutzt wird)
Und schon werden die Dateien nicht mehr auf die SD Karte
geschrieben sondern in den RAM
Konstruktive Kritik zum Code, wie immer, gerne Willkommen
Versionsverlauf
Versionsstand
31.05.2018 V1.3.0
Sollten Fragen oder Probleme auftreten, könnt ihr diese jederzeit hier stellen/mitteilen.
Eventuell das Thema abonnieren, um Updates vom Skript mitzubekommen
______________________
Neuer Versionsstand hochgeladen.
17.05.2017 V0.3 - Endlosschleife entfernt.
______________________
24.05.2017 V0.3.1
Fehler behoben - Script bricht ab wenn Temperatur keinen Wert liefert
______________________
30.07.2017 V1.1.0
Neue Funktionen:
- exportdaten.toml wird erstellt anstatt der Ausgabe der datenexport_lesbar.txt - Der Vorteil darin besteht, dass mit diesem Format in anderen Skripten leicht mit den Daten weitergearbeitet werden kann und trotzdem diese Datei leicht lesbar ist
- Log Modul - Im Verzeichnisordner vom Skript ist eine Logdatei zu finden, hier werden Fehler eingetragen, sofern welche auftreteten beziehungsweise der Erfolg des Exportes eingetragen. Sollte der Erfolg nicht gewünscht sein, so ist statt der 2 in der conf.toml Datei eine 3 einzutragen. Dies bewirkt dass keine Meldungen mit dem Status "Info" gespeichert werden, sondern erst ab dem Status "Warnung"
Bei einem Versionsupdate empfiehlt sich die erneute Ausführung der install.py Datei
______________________
03.08.2017 V1.2.0
Datenbankexport in wettersektor_datenexport.py angepasst auf CSV Modul
Sofern keine Probleme auftauchen, dürfte bis auf weiteres dies (Version 1.2.0) die letzte Version sein. Was aber nicht heißen soll, dass die Entwicklung dafür eingestellt wird.
Aktuell habe ich alle Funktionen die ich einbauen wollte integriert und arbeit auch alles so wie gewollt.
______________________
31.05.2018 V1.3.0
Datenübermittlung wahlweise durch Datenabholung oder Datensendung
wettersektor_export und grafana_export sind 2 eigendständige Skripte
Hinweis:
Anleitung ist im entsprechenden Wettersektorforum ebenfalls findbar