. index:: Konfiguration .. index:: Konfiguration; Sichern und Wiederherstellen
Update von einer älteren Version
Es kann verschiedene Szenarien geben von denen aus man ein Update machen möchte. Es gibt unterschiedliche Ansätze wenn es sich um eine Virtuelle Maschine handelt oder wenn ein Raspberry Pi upgedated werden soll. Es gibt hier leider nicht die Methode. Leider gibt es derzeit auch keine vollständige Systemübergreifende Backup Methode. Es ist also ein wenig ein Stückwerk.
Vorgehensweise
Die Reihenfolge ist prinzipiell folgende:
Unter Linux einen Dienst, der SmartHomeNG automatisch startet (systemd) abschalten, beispielsweise mit
/usr/local/smarthome$ sudo systemctl disable smarthome.service
Über das Admin-Interface via Dienste -> Konfiguration - letzte Sicherung -> Herunterladen eine Sicherung der Konfiguration erstellen (ein ZIP Archiv wird über den Browser heruntergeladen)
SmartHomeNG selbst beenden beispielsweise mit
/usr/local/smarthome$ python3 bin/smarthome.py -s
oder wenn SmartHomeNG via systemd sonst automatisch gestartet wird mit
/usr/local/smarthome$ sudo systemctl stop smarthome.service
Variable Daten sichern, die sich in
var
befinden:Datenbank z.B. SQLite in
var/db
von SmartHomeNGCache für die Itemwerte in
var/cache
ggf. Logfiles
Betriebssystemupdate durchführen
zusätzliche Dienste aktualisieren und prüfen
knxd
onewire, owserver
mqtt
SmartVISU
Der Weitere Weg hängt davon ab ob man eine Standardinstallation gemäß Komplettanleitung vorgenommen hat oder
ob man manuell neue Plugins angelegt hat oder sonstige Änderungen außerhalb der Konfigurationsdateien
vorgenommen hat. Kurz: ob ein git pull
funktioniert oder nicht.
Aktualisieren der Basisinstallation über ein
git pull
und aktualisieren der Plugins im plugin Verzeichnis ebenfalls über eingit pull
Falls dieser Schritt fehlschlägt, kann man auf Plan B verzweigen Fehlschlagen bedeutet in diesem Zusammenhang das es eine Meldung gibt das es ungesicherte Änderungen gibt. Wer sich mit Git auskennt, weiß dann das es gilt die Änderungen die man an lokalen Dateien des Core oder auch der Plugins gemacht hat zu sichern oder sie in die neue Version zu mergen, also zu integrieren. Für jemand der nicht genau weiß was passiert ist und der sich in solch einer Situation auch nicht zu helfen weiß geht daher auf Plan B weiter.
Erstmaliges Starten aus dem Basisverzeichnis
usr/local/smarthome/
mitpython3 bin/smarthome.py
–> Die neuen benötigten Bibliotheken werden von SmartHomeNG selbständig installiertPrüfen ob es in
var/log/
aktualisierte Log Dateien mit Warnungen oder Fehlern gibt. Wenn SmartHomeNG gestartet ist, kann davon ausgegangen werden, das alle benötigten Bibliotheken vorhanden sind. Logs können dann über das Admin Interface überprüft werden.Alternativ kann auch der Inhalt von
var/log/
aufgelistet werden mitls -la var/log/
um Log-Dateien zu finden, die sich gerade geändert haben. Diese lassen sich dann mitless
odercat
anzeigen oder auch mitnano <Dateiname>
innerhalb des Verzeichnissesvar/log/
editieren.
Plan B
Umbenennen des Basisverzeichnisses
/usr/local/smarthome
in z.B./usr/local/smarthome.old
Installation von SmartHomeNG gemäß Komplettanleitung SmartHomeNG installieren
Wenn alles funktioniert, kann die Sicherung mit den Konfigurationsdateien zurückgespielt werden.
Dann SmartHomeNG wiederum beenden und die gesicherten Daten wie Datenbank, cache, logfiles, rrd etc. zurückspielen und SmartHomeNG starten
Anschliessend – wenn wirklich alles läuft – kann gemäß Komplettanleitung SmartHomeNG installieren ein automatischer Start eingerichtet werden
Jemand der sich mit Linux und Git auskennt, kann natürlich auch direkt im Basisverzeichnis und im Pluginverzeichnis
jeweils ein git pull
ausführen und dann per Admin Interface neu starten. Das klappt prinzipiell auch,
nur muß man wissen was man bei einem Fehlschlag tun muß.
Betriebssystemupdate
Jede SmartHomeNG Version erhöht die Anforderungen an die benötigte Python Version gemäß der Übersicht Hard- u. Software Anforderungen daher sollte vor dem Update von SmarthomeNG das Betriebssystem aktualisiert werden.
Bei Linux Systemen ist damit ein Distributionsupgrade gemeint. Für die aktuelle SmartHomeNG 1.9 also zum Beispiel ein Upgrade auf Debian Bullseye (11.3). Welche Debian Version welche Python Version mitbringt, kann im Debian Wiki nachgelesen werden.
Zusätzlich müssen noch die in der Komplettanleitung SmartHomeNG installieren unter zusätzliche Linux Pakete installieren angegebenen Pakete installiert werden.
Für Windows bietet sich eine manuelle Installation von Python 3.9 in der letzten Revision an.
SmartHomeNG 1.8 oder höher wird benötigte Python Bibliotheken selbständig beim ersten Programmstart installieren.
Versionsdetails
Update von SmarthomeNG ab v1.6 und höher
Wenn von einer Version v1.6 oder höher ein Update durchgeführt werden soll, gibt es eine neue Möglichkeit. Statt ein Update durchzuführen, kann bestehende die Konfiguration gesichert werden, eine Neuinstallation durchgeführt werden und anschließend die gesicherte Konfiguration eingespielt werden. Das vereinfacht auch das Update, wenn man das Raspberry Pi Image verwendet.
Wie das Sichern und Wiederherstellen der Konfiguration funktioniert, ist auf der Seite Konfiguration Sichern und Wiederherstellen beschrieben.
Warnung
Ganz ausdrücklich werden keine Daten aus dem Unterverzeichnis var
gesichert.
Also keine Datenbank aus var/db
oder var/rrd
, keine Logfiles aus log
und auch keine Cache Daten aus var/cache
die via Attribut cache: True
befüllt werden.
Sollen diese Daten gesichert werden, so muß SmartHomeNG zuerst beendet und danach die gewünschten Dateie manuell gesichert werden.
Update von SmarthomeNG ab v1.1 und höher
Wenn man SmarthomeNG laut der Komplettanleitung SmartHomeNG installieren (mithilfe „git clone […]“) installiert hat, in das Verzeichnis „smarthome“ wechseln und anschliessend
git pull
eingeben. Daraufhin sollte der Update-Vorgang starten.
Nachdem SmartHomeNG aktualisiert wurde, müssen unbedingt noch die Plugins aktualisiert werden. Dazu in das plugins Verzeichnis wechseln und einen Pull durchführen:
cd plugins
git pull
cd ..
.. note::
Es kann durchaus vorkommen, das das ``git pull`` abgebrochen wird mit einer
Fehlermeldung der Art:
.. code-block: python
error: Ihre lokalen Änderungen in den folgenden Dateien würden durch den
Merge überschrieben werden:
requirements/all.txt
Bitte committen oder stashen Sie Ihre Änderungen, bevor sie mergen.
Abbruch
In diesem Fall würde ein ``git checkout -- requirements/all.txt`` aus dem
aktuellen Branch die fragliche Datei auschecken und damit für ``git pull``
wieder überschreibbar machen.
Anschließend müssen noch benötigte Pakete aktualisiert werden. Diese werden von Pypi bereitgestellt. Bei SmartHomeNG gibt es zum einen den Programmkern und die Plugins. Die Abhängigkeiten von externen Bibliotheken sind für den Programmkern und die Plugins aufgeteilt. Um eine Liste der Abhängigkeiten zu erstellen, gibt es ein Skript das unter anderem alle Plugin Unterverzeichnisse durchläuft und die Abhängigkeiten der Plugins ermittelt. Dies Skript wird aufgerufen mit:
python3 tools/build_requirements.py
Bemerkung
Ab SmartHomeNG v1.6 werden, falls dieser Schritt ausgelassen wird, die Requirements beim Start von SmartHomeNG bestimmt. Dabei werden die Packages bestimmt, die vom Core und von den konfigurierten Plugins benötigt werden. Sind die Requirements nicht erfüllt, beendet sich SmartHomeNG mit einem entsprechenden Eintrag im Log.
Vom Programmkern benötigte Bibliotheken herunterladen und installieren mit:
pip3 install -r requirements/base.txt --user
Und dann für jedes Plugin einzeln die benötigten Bibliotheken herunterladen und installieren mit:
pip3 install -r plugins/<pluginname>/requirements.txt --user
Achtung
In früheren Beschreibungen wurde die globale Installation von Python Packages mit dem sudo Kommando beschrieben:
sudo pip3 install -r requirements/base.txt
Dieses funktioniert unter Debian Buster NICHT mehr. Zumindest unter Buster muss die Installation für den entsprechenden User mit –user erfolgen (wie oben beschrieben).
Zum Abschluss dann SmarthomeNG starten. Um zu prüfen, ob sich vielleicht Fehler oder Änderungen in den Plugins ergeben haben, sollte man dies im von der Kommandozeile aus machen:
python3 bin/smarthome.py
Jetzt heißt es genau zu schauen, was an WARNING oder ERROR gemeldet wird. Logfiles findet man im
Verzeichnis ../var/log
(in der Standardinstallation unter /usr/local/smarthome/var/log
).
Von da aus kann man sie mit einem Editor in Ruhe anschauen und auf Fehler durchsuchen.
Wenn dann die Konfiguration stimmt, kann man natürlich den automatischen Neustart von SmartHomeNG wieder einschalten. In der Komplettanleitung ist beschrieben, welche Schritte dafür bei Verwendung von systemd durchgeführt werden müssen.
Upgrade von Smarthome.py
Das letzte Release von Smarthome.py wurde am 14. November 2013 veröffentlicht. Zu der Zeit war Debian Wheezy (7.x) gerade ein halbes Jahr alt, systemd war in den Kinderschuhen und den eibd (Vorgänger von knxd) mußte man sich selbst kopieren und übersetzen. Es gibt daher in vielen Bereichen etliche Entwicklungsschübe die es rechtfertigen eine vollständige Neuinstallation vorzuschlagen. Trotzdem sollte es möglich sein, relativ problemlos auf SmartHomeNG umzusteigen.
Bemerkung
Wichtig ist zu wissen, das sich die Struktur der Datenbank geändert hat und daher eine existierende SQLite Datenbank nicht weiterverwendet werden kann.
Vorgehensweise
Da nicht mehr viele User eine Umstellung vornehmen müssen und die Entwickler lange schon auf SmartHomeNG umgestiegen sind, ist die folgende Beschreibung eventuell nicht ganz vollständig oder gegebenenfalls nicht exakt genug. Bei Fragen steht der gitter chat oder das Forum zur Verfügung. Die Vorgehensweise beim Upgrade ist prinzipiell folgende:
Unter Linux automatischen Start von Smarthome.py abschalten
Smarthome.py selbst beenden falls noch nicht geschehen
Das komplette Smarthome.py Verzeichnis
/usr/local/smarthome/
auf einem anderen Rechner sichern.Betriebssystem neu aufsetzen und Installation von SmartHomeNG gemäß Komplettanleitung SmartHomeNG installieren durchführen. SmartHomeNG sollte gestartet und via Admin Interface geprüft werden ob es fehlerfrei startet.
Die im vorletzten Schritt gesicherte Installation von Smarthome.py kann nun zurückgesichert werden, z.B. an
/usr/local/smarthome.old
. Somit stehen die alten Konfigurationsdateien zur Verfügung für die Übernahme.
Plugins
Wenn das neue SmartHomeNG grundsätzlich startet, können zunächst die Plugins übernommen werden. Es bietet sich an die Plugins entweder
über das Admin Interface hinzuzufügen und zu konfigurieren wobei eine parallel im Texteditor geöffnete
/usr/local/smarthome.old/etc/plugins.conf
als Referenz für die richtigen Werte ideal ist
oder manuell
über das Admin Interface unter Dienste –> CONF-YAML Konverter den Inhalt der
/usr/local/smarthome.old/etc/plugins.conf
in yaml Format umwandeln und das Ergebnis an die Datei/usr/local/smarthome/etc/plugins.yaml
anhängen bzw. einarbeiten. Dabei muss natürlich selbst auf Doppelungen und die Einrückebene geachtet werden.
Nun sollte ein Neustart von SmartHomeNG durchgeführt und die Logdateien auf Fehler kontrolliert werden.
Das kann entweder über das Admin Interface geschehen oder es muss in /usr/local/smarthome/var/log/smarthome-warnings.log
geschaut werden.
Eine falsche Konfiguration kann nach dem Neustart auch via Admin Interface angepasst werden. Wenn keine weiteren Fehler auftreten können die Items übernommen werden.
Items
Die empfohlene Vorgehensweise für die Übernahme der Items besteht aus den Schritten
kopieren der Dateien mit den Definitionen der Items aus der alten Installation
/usr/local/smarthome.old/items/
in das Verzeichnis/usr/local/smarthome/items/
der neuen Installation.starten des Konvertierungstools:
/usr/local/smarthome$ python3 tools/conf_to_yaml_converter.py
Bei erfolgreichem Durchlauf des Konverters ist jetzt für jede
*.conf
Datei eine passende*.yaml
Datei erstellt worden. Wenn das überprüft wurde können die*.conf
Dateien nun aus/usr/local/smarthome/items/
gelöscht werden.
Nun sollte wiederum ein Neustart von SmartHomeNG durchgeführt und die Logdateien auf Fehler kontrolliert werden.
Das kann entweder über das Admin Interface geschehen oder es muss in
/usr/local/smarthome/var/log/smarthome-warnings.log
geschaut werden.
Logiken
Die empfohlene Vorgehensweise für die Übernahme der Logiken besteht aus den Schritten
kopieren der Dateien mit den Definitionen der Logiken aus der alten Installation
/usr/local/smarthome.old/logics/
in das Verzeichnis/usr/local/smarthome/logics/
der neuen Installation.über das Admin Interface unter Dienste –> CONF-YAML Konverter den Inhalt der
/usr/local/smarthome.old/etc/logics.conf
in yaml Format umwandeln und das Ergebnis an die Datei/usr/local/smarthome/etc/logics.yaml
anhängen bzw. einarbeiten. Dabei muss natürlich selbst auf Doppelungen und die Einrückebene geachtet werden.
Nun sollte wiederum ein Neustart von SmartHomeNG durchgeführt und die Logdateien auf Fehler kontrolliert werden.
Das kann entweder über das Admin Interface geschehen oder es muss in /usr/local/smarthome/var/log/smarthome-warnings.log
geschaut werden.
Konvertierung von *.conf-Dateien
Möchte man vom alten *.conf
Format der Konfigurationsdateien
(die ab Version 2.0 nicht weiter unterstützt werden) auf das neue
*.yaml
Format umschwenken, so kann der im Verzeichnis ../tools
bereitgestellte Konverter conf_to_yaml_converter.py
genutzt werden
um das automatisch zu tun.
Bemerkung
Nacharbeiten empfehlen sich auf jeden Fall für Item Attribute deren
Werte als String erwartet werden, die aufgrund ihrer Struktur aber als
float eingelesen werden. Ein prominentes Beispiel sind Onewire Adressen:
Bei ow_addr: 28.169712030000
wird ein float 28.16971203
erkannt,
bei ow_addr: '28.169712030000'
hingegen wird die Adresse korrekt als
String '28.169712030000'
erkannt mit den Nullen am Ende.