From 5f138e310981271e16b19226a00f06a4cba6568e Mon Sep 17 00:00:00 2001 From: Michael Miklis Date: Thu, 24 Dec 2020 11:21:29 +0100 Subject: [PATCH] Bug-fix + Auto-Update Fixed bug causing configuration-loss during upgrade, implemented auto-update --- README.md | 63 ++++++++++++++++++++++++++++---------------------- plugin.cfg | 7 +++++- postupgrade.sh | 6 ++--- prerelease.cfg | 14 +++++++++++ preupgrade.sh | 9 ++++---- release.cfg | 14 +++++++++++ 6 files changed, 76 insertions(+), 37 deletions(-) create mode 100644 prerelease.cfg create mode 100644 release.cfg diff --git a/README.md b/README.md index 3fecb43..2cc27be 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Loxberry Plugin: Netatmo Weather + Dieses Plugin ermöglicht es Daten von einer Netatmo Wetterstation an die Miniserver über UDP zu senden. Der Vorteil ist, dass die normale Netatmo ReST API verwendet wird und lediglich der Benutzername und das Passwort benötigt werden und kein Developer-Account. Netatmo Weather Plugin @@ -12,6 +13,7 @@ Zuhause.Wohnzimmer.Temperature=30 Zuhause.Wohnzimmer.Humidity=56 ## Beispiel + Die UDP Pakete werden wie im Screenshot ersichtlich einzeln an den Miniserver gesendet: UDP-Monitor @@ -24,6 +26,7 @@ Hierzu kann ein virtueller UDP Befehl angelegt werden mit folgender Befehlserken Der Batterie-Level wird ab Version 0.13 in [Stationsname].[Modulname].battery_percent als Prozentwert übermittelt. ## WiFi Signalstärke + Die WiFi-Signalstärke wird ab Version 0.10. in [Stationsname].[Modulname].wifi_status übermittelt. Es handelt sich um einen Zahlenwert, welchen ihr mit folgender Tabelle umwandeln könnt: - 86 = bad @@ -31,6 +34,7 @@ Die WiFi-Signalstärke wird ab Version 0.10. in [Stationsname].[Modulname].wifi_ - 56 = good ## Funk Signalstärke + Die Funk-Signalstärke zwischen der Basisstation und den Modulen wird ab Version 0.6. in [Stationsname].[Modulname].rf_status übermittelt. Es handelt sich um einen Zahlenwert, welchen ihr mit folgender Tabelle umwandeln könnt: - 90 = low @@ -39,33 +43,35 @@ Die Funk-Signalstärke zwischen der Basisstation und den Modulen wird ab Version - 60 = full ## Temperatur- und Luftdrucktrend + Der Temperatur- und Luftdrucktrend wird bis zur Version 0.15 als String mit den Werten "up", "down" und "stable" übermittelt. Um die Auswertung am Loxone Miniserver zu vereinfachen, wird ab der Version 0.16 der Trend als Zahlenwert übermittelt ([Stationsname].[Modulname].pressure_trend und [Stationsname].[Modulname].temp_trend). Es handelt sich um einen Zahlenwert, welchen ihr mit folgender Tabelle umwandeln könnt: - -1 = down -- 0 = stable +- 0 = stable - 1 = up ## Offline Erkennung (reachable) + Ab der Version 0.18 wird übermittelt ob die Station aus Sicht der Netatmo API erreichbar ist ([Stationsname].[Modulname].reachabl) Es handelt sich um einen Zahlenwert, welchen ihr mit folgender Tabelle umwandeln könnt: - 0 = nicht erreichbar (offline) -- 1 = erreichbar (online) - +- 1 = erreichbar (online) ## Local Time / Lokale Zeitzone -Durch diese Option kann gesteuert werden, ob alle Datums- und Zeitangaben in UTC (Option aus) oder in der jeweiligen lokalen Zeitzone an den Miniserver übertragen werden. +Durch diese Option kann gesteuert werden, ob alle Datums- und Zeitangaben in UTC (Option aus) oder in der jeweiligen lokalen Zeitzone an den Miniserver übertragen werden. ## E-Mail Benachrichtigung durch Netatmo deaktivieren + Da das Plugin jedesmal eine neue / frische Anmeldung bei Netatmo durchführt, führ dies jedes mal zu einer E-Mail benachrichtigung. Diese kann im Netatmo Konto in den Einstellungen deaktiviert werden: - ## Troubleshooting + Sollte das Plugin nicht funktionieren oder nicht die gewünschten Daten an den Loxone Miniserver senden, kann für das Troubleshooting eine SSH-Verbindung (Eine SSH-Verbindung mit putty aufbauen / Shell-Zugriff) auf den Loxberry aufgebaut werden und folgende Befehle ausgeführt werden um den Fehler einzugrenzen: `python3 /opt/loxberry/data/plugins/netatmo-weather/netatmo.py` @@ -78,14 +84,15 @@ Erscheint eine Meldung sinngemäß "KeyError: 'battery_percent'" (kann auch etwa Dieser zeigt 1:1 die Daten, welche Netatmo liefert als JSON Struktur an. Prüft dann hier, ob der Wert der als 'KeyError' gemeldet wurde, hierin enthalten ist (vermutlich nicht). Dann bitte die Ausgabe im Forum posten. Details dazu im Abschnitt "Feedback und Diskussion". - ## Feedback und Diskussion + Das PlugIn wird von mir noch weiterentwickelt und ich freue mich über Anregungen und Feedback. Hierzu habe ich im Loxforum einen Thread eröffnet: https://www.loxforum.com/forum/projektforen/loxberry/plugins/86373-loxberry-netatmo-weather-plugin - ## Change-Log + +- 2019-12-30 Release 2.0.3 - Fixed bug causing configuration-loss during upgrade, implemented auto-update - 2019-12-30 Release 2.0.2 - Changed from station_name to home_name because of API change by Netatmo - 2019-12-30 Release 2.0.1 - Support für Loxberry 2.0 (getestet auf 2.0.0.4) - 2019-05-08 Release 0.18 - Offline Module und Stationen werden ignoriert @@ -97,39 +104,39 @@ Das PlugIn wird von mir noch weiterentwickelt und ich freue mich über Anregunge - 2018-01-28 Release 0.12 - Anpassungen für Loxberry 0.3, neue Verzeichnisstruktur, Datumsformat auf Nullzeit-Delta angepasst - 2017-06-14 Release 0.10 - wifi_status hinzugefügt, Umlaute-Problem behoben, JSON in Webfrontend entfernt, User-Agent eingebaut - 2017-04-01 Release 0.9 - weitere Timestamp Werte angepasst - Bugfixing -- 2017-03-30 Release 0.8 - time_utc, date_min_temp, date_max_temp in normalem Timestamp Format dd.mm.YYYY HH:MM:SS Format +- 2017-03-30 Release 0.8 - time_utc, date_min_temp, date_max_temp in normalem Timestamp Format dd.mm.YYYY HH:MM:SS Format - 2017-03-25 Release 0.7 - Bug-Fix für dynamische Pfade in Webfrontend CGI und Umbennenung nach Netatmo-Weather -- 2017-03-12 Release 0.6 - dynamische Pfade im Script und Cron-Job, Config-Datei bleibt beim Update erhalten, wechsel auf GetStationsData API -- 2017-03-02 Fix in cron-job if-Abfrage +- 2017-03-12 Release 0.6 - dynamische Pfade im Script und Cron-Job, Config-Datei bleibt beim Update erhalten, wechsel auf GetStationsData API +- 2017-03-02 Fix in cron-job if-Abfrage - 2017-03-01 Anpassung UDP - für jeden Sensor wird ein eigenes UDP Paket gesendet -- 2017-03-01 Anpassung cron-job und netatmo.py auf statische Pfade da Variablen nicht korrekt aufgelöst werden (Workaround) +- 2017-03-01 Anpassung cron-job und netatmo.py auf statische Pfade da Variablen nicht korrekt aufgelöst werden (Workaround) - 2017-02-26 Erstellung PlugIn v 0.1 ## Known-Issues + - Logging erfolgt nicht in die Log-Datei ## Sensor-Werte -| Base Station | +| Base Station | | --------------------------------------------------- | | {Station Name}.{Base Name}.wifi_status=20 | | {Station Name}.{Base Name}.reachable=1, 0 | | {Station Name}.{Base Name}.date_min_temp=287640458 | -| {Station Name}.{Base Name}.Temperature=22.3 | -| {Station Name}.{Base Name}.time_utc=287699122 | -| {Station Name}.{Base Name}.Noise=38 | -| {Station Name}.{Base Name}.AbsolutePressure=995.1 | -| {Station Name}.{Base Name}.CO2=848 | -| {Station Name}.{Base Name}.temp_trend=-1, 0, 1 | -| {Station Name}.{Base Name}.pressure_trend=-1, 0, 1 | -| {Station Name}.{Base Name}.max_temp=22.6 | -| {Station Name}.{Base Name}.date_max_temp=287694609 | -| {Station Name}.{Base Name}.min_temp=20.8 | -| {Station Name}.{Base Name}.Pressure=1018.5 | -| {Station Name}.{Base Name}.Humidity=55 | - - -| Outdoor Unit | +| {Station Name}.{Base Name}.Temperature=22.3 | +| {Station Name}.{Base Name}.time_utc=287699122 | +| {Station Name}.{Base Name}.Noise=38 | +| {Station Name}.{Base Name}.AbsolutePressure=995.1 | +| {Station Name}.{Base Name}.CO2=848 | +| {Station Name}.{Base Name}.temp_trend=-1, 0, 1 | +| {Station Name}.{Base Name}.pressure_trend=-1, 0, 1 | +| {Station Name}.{Base Name}.max_temp=22.6 | +| {Station Name}.{Base Name}.date_max_temp=287694609 | +| {Station Name}.{Base Name}.min_temp=20.8 | +| {Station Name}.{Base Name}.Pressure=1018.5 | +| {Station Name}.{Base Name}.Humidity=55 | + +| Outdoor Unit | | --------------------------------------------------- | | {Station Name}.{Module Name}.battery_percent=27 | | {Station Name}.{Module Name}.rf_status=65 | @@ -183,4 +190,4 @@ Das PlugIn wird von mir noch weiterentwickelt und ich freue mich über Anregunge | {Station Name}.{Module Name}date_min_temp=287622255 | | {Station Name}.{Module Name}date_max_wind_str=287685251 | | {Station Name}.{Module Name}GustAngle=190 | -| {Station Name}.{Module Name}min_temp=0 | \ No newline at end of file +| {Station Name}.{Module Name}min_temp=0 | diff --git a/plugin.cfg b/plugin.cfg index 4239877..41e4a80 100644 --- a/plugin.cfg +++ b/plugin.cfg @@ -10,7 +10,7 @@ EMAIL=info@michaelmiklis.de [PLUGIN] # The version of your plugin - important if you would like to write an # upgrade script. -VERSION=2.0.2 +VERSION=2.0.3 # Short name and prefered subfolder of your Plugin (do not use blanks - they # will be filtered - and use lowercase only)! Used for script names in @@ -34,3 +34,8 @@ TITLE=Netatmo-Weather # Plugin Interface # Do not change this if you are not knowing what you are doing! INTERFACE=2.0 + +[AUTOUPDATE] +AUTOMATIC_UPDATES=true +RELEASECFG=https://raw.githubusercontent.com/michaelmiklis/loxberry-plugin-netatmo-weather/master/release.cfg +PRERELEASECFG=https://raw.githubusercontent.com/michaelmiklis/loxberry-plugin-netatmo-weather/master/prerelease.cfg \ No newline at end of file diff --git a/postupgrade.sh b/postupgrade.sh index 50c1852..7045437 100644 --- a/postupgrade.sh +++ b/postupgrade.sh @@ -8,16 +8,16 @@ ARGV4=$4 # Forth argument is Plugin version ARGV5=$5 # Fifth argument is Base folder of LoxBerry echo " Copy back existing config files" -cp -v -r /tmp/uploads/$ARGV1\_upgrade/config/$ARGV3/* $ARGV5/config/plugins/$ARGV3/ +cp -v -r /tmp/$ARGV1/_upgrade/config/$ARGV3/* $ARGV5/config/plugins/$ARGV3/ echo " Adding new config parameters" grep -q -F "LOCALTIME=" $ARGV5/config/plugins/$ARGV3/netatmo.cfg || echo "LOCALTIME=0" >> $ARGV5/config/plugins/$ARGV3/netatmo.cfg echo " Copy back existing log files" -cp -v -r /tmp/uploads/$ARGV1\_upgrade/log/$ARGV3/* $ARGV5/log/plugins/$ARGV3/ +cp -v -r /tmp/$ARGV1/_upgrade/log/$ARGV3/* $ARGV5/log/plugins/$ARGV3/ echo " Remove temporary folders" -rm -r /tmp/uploads/$ARGV1\_upgrade +rm -rf /tmp/$ARGV1/_upgrade /bin/sed -i "s#REPLACEBYBASEFOLDER#$ARGV5#" $ARGV5/system/cron/cron.05min/$ARGV2 /bin/sed -i "s#REPLACEBYBASEFOLDER#$ARGV5#" $ARGV5/data/plugins/$ARGV3/netatmo.py diff --git a/prerelease.cfg b/prerelease.cfg new file mode 100644 index 0000000..22c090b --- /dev/null +++ b/prerelease.cfg @@ -0,0 +1,14 @@ +[AUTOUPDATE] +# This file is used if you would like to provide automatic updates. Put +# this file into your repo and give a link to this file in your plugin.cfg +# If you would like to release an update, edit VERSION here and give +# the donwload link here + +# Version of the new release +VERSION=2.0.3 + +# Download URL of the ZIP Archive +ARCHIVEURL=https://github.com/michaelmiklis/loxberry-plugin-netatmo-weather/archive/2.0.3.zip + +# URL for further information about this release +INFOURL=https://github.com/michaelmiklis/loxberry-plugin-netatmo-weather/releases/tag/2.0.3 diff --git a/preupgrade.sh b/preupgrade.sh index b18082c..0368747 100644 --- a/preupgrade.sh +++ b/preupgrade.sh @@ -42,15 +42,14 @@ ARGV5=$5 # Fifth argument is Base folder of LoxBerry #echo " Installation folder is: $ARGV5" echo " Creating temporary folders for upgrading" -mkdir /tmp/uploads/$ARGV1\_upgrade -mkdir /tmp/uploads/$ARGV1\_upgrade/config -mkdir /tmp/uploads/$ARGV1\_upgrade/log +mkdir -p /tmp/$ARGV1/_upgrade/config +mkdir -p /tmp/$ARGV1/_upgrade/log echo " Backing up existing config files" -cp -v -r $ARGV5/config/plugins/$ARGV3/ /tmp/uploads/$ARGV1\_upgrade/config +cp -v -r $ARGV5/config/plugins/$ARGV3/ /tmp/$ARGV1/_upgrade/config echo " Backing up existing log files" -cp -v -r $ARGV5/log/plugins/$ARGV3/ /tmp/uploads/$ARGV1\_upgrade/log +cp -v -r $ARGV5/log/plugins/$ARGV3/ /tmp/$ARGV1/_upgrade/log # Exit with Status 0 diff --git a/release.cfg b/release.cfg new file mode 100644 index 0000000..22c090b --- /dev/null +++ b/release.cfg @@ -0,0 +1,14 @@ +[AUTOUPDATE] +# This file is used if you would like to provide automatic updates. Put +# this file into your repo and give a link to this file in your plugin.cfg +# If you would like to release an update, edit VERSION here and give +# the donwload link here + +# Version of the new release +VERSION=2.0.3 + +# Download URL of the ZIP Archive +ARCHIVEURL=https://github.com/michaelmiklis/loxberry-plugin-netatmo-weather/archive/2.0.3.zip + +# URL for further information about this release +INFOURL=https://github.com/michaelmiklis/loxberry-plugin-netatmo-weather/releases/tag/2.0.3