Skip to content

Commit

Permalink
Bug-fix + Auto-Update
Browse files Browse the repository at this point in the history
Fixed bug causing configuration-loss during upgrade, implemented auto-update
  • Loading branch information
Michael Miklis committed Dec 24, 2020
1 parent 3545b2a commit 5f138e3
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 37 deletions.
63 changes: 35 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
@@ -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.

<img src="https://raw.githubusercontent.com/michaelmiklis/loxberry-plugin-netatmo-weather/assets/Netatmo-Weather-1024x631.png" alt="Netatmo Weather Plugin"/>
Expand All @@ -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:

<img src="https://raw.githubusercontent.com/michaelmiklis/loxberry-plugin-netatmo-weather/assets/UDP-Monitor-1024x308.png" alt="UDP-Monitor" width="960" height="289"/>
Expand All @@ -24,13 +26,15 @@ 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
- 71 = average
- 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
Expand All @@ -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:

<img src="https://raw.githubusercontent.com/michaelmiklis/loxberry-plugin-netatmo-weather/assets/MyAccount.png">
<img src="https://raw.githubusercontent.com/michaelmiklis/loxberry-plugin-netatmo-weather/assets/NewConnection.png">


## 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 (<a href="https://www.loxwiki.eu/pages/viewpage.action?pageId=12091660" target="_blank">Eine SSH-Verbindung mit putty aufbauen / Shell-Zugriff</a>) auf den Loxberry aufgebaut werden und folgende Befehle ausgeführt werden um den Fehler einzugrenzen:

`python3 /opt/loxberry/data/plugins/netatmo-weather/netatmo.py`
Expand All @@ -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:

<a href="https://www.loxforum.com/forum/projektforen/loxberry/plugins/86373-loxberry-netatmo-weather-plugin">https://www.loxforum.com/forum/projektforen/loxberry/plugins/86373-loxberry-netatmo-weather-plugin</a>


## 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
Expand All @@ -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 |
Expand Down Expand Up @@ -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 |
| {Station Name}.{Module Name}min_temp=0 |
7 changes: 6 additions & 1 deletion plugin.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ [email protected]
[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
Expand All @@ -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
6 changes: 3 additions & 3 deletions postupgrade.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ ARGV4=$4 # Forth argument is Plugin version
ARGV5=$5 # Fifth argument is Base folder of LoxBerry

echo "<INFO> 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 "<INFO> Adding new config parameters"
grep -q -F "LOCALTIME=" $ARGV5/config/plugins/$ARGV3/netatmo.cfg || echo "LOCALTIME=0" >> $ARGV5/config/plugins/$ARGV3/netatmo.cfg

echo "<INFO> 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 "<INFO> 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
Expand Down
14 changes: 14 additions & 0 deletions prerelease.cfg
Original file line number Diff line number Diff line change
@@ -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
9 changes: 4 additions & 5 deletions preupgrade.sh
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,14 @@ ARGV5=$5 # Fifth argument is Base folder of LoxBerry
#echo "<INFO> Installation folder is: $ARGV5"

echo "<INFO> 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 "<INFO> 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 "<INFO> 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
Expand Down
14 changes: 14 additions & 0 deletions release.cfg
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 5f138e3

Please sign in to comment.