smarthomeNG / smarthome

Device integration platform for your smart home
https://www.smarthomeNG.de
GNU General Public License v3.0
119 stars 92 forks source link

core: move items/logics/structs config dirs below etc #622

Closed Morg42 closed 4 months ago

Morg42 commented 5 months ago

Wie schon vorgeschlagen, werden die vom Benutzer zu befüllenden Verzeichnisse /items, /structs, /logics als Unterverzeichnisse nach /etc verschoben, so dass alle Verzeichnisse, in denen der Nutzer Daten verändert, in einem Verzeichnis liegen.

Neue Installationen starten gleich mit angepassten Daten. Bei alten Installationen hat bin/smarthome.py eine Routine, die beim Start die alten Verzeichnisse migriert. Es werden keine Dateien überschrieben; im Zweifelsfall wird eine Meldung ausgegeben, welche Dateien von Hand zu migrieren sind. Ein Neustart ist nicht erforderlich, weil die verschobenen Dateien bei der Initialisierung des sh-Objektes bereits verschoben sind.

bmxp commented 5 months ago

Dann müsste man dazu passend noch die backup und restore Funktionen des admin Interface nachziehen, oder?

msinn commented 5 months ago

Richtig, aber das betrifft nicht das Admin Interface selbst, sondern lib, die das auch für die Kommandozeilenoption von smarthome.py implementiert.

Morg42 commented 5 months ago

Da habe ich jetzt noch nicht nach geschaut - verwendet die die in shng definierten Standardverzeichnisse? Dann müsste das eigentlich "von alleine" klappen...

Morg42 commented 5 months ago

So, scenes und userfunctions hatte ich übersehen.

Pfade in der Backup-lib sind angepasst, bei mir läuft backup und restore.

bmxp commented 5 months ago

Klappt das restore auch von einer früheren Backup Version aus?

msinn commented 5 months ago

Bisher ja

Morg42 commented 5 months ago

Alte und neue Backups unterscheiden sich inhaltlich nicht, die einzelnen Kategorien - Konfiguration, Items, Logiken usw befinden sich in eigenen Unterverzeichnissen.

Sie werden im neuen Vorschlag nur von unterschiedlichen Orten ins Backup gespielt und an unterschiedliche Orte zurück.

Beides hier schon getestet.

Morg42 commented 4 months ago

Also, nach Diskussion:

Das ursprüngliche Verhalten von shng ist unverändert. Mit Kommandozeilenoption '-e' / '--config-etc' werden alle "user-defined" Verzeichnisse (items, structs, logics, scenes, functions) nicht im Stammverzeichnis (oder external_config_dir) gesucht, sondern unterhalb/innerhalb des jeweiligen etc-Ordners.

Dies wird auch von backup/restore entsprechend berücksichtigt, wenn die Option mit angegeben ist.

Eine Konfiguration in smarthome.yaml würde es nötig machen, nach dem Lesen der Konfiguration nochmals die Verzeichnisse zu ändern. Dann sollte das "Verzeichnisse setzen" in lib/smarthome.py und in lib/backup.py generell durch eine "zentrale" Methode (ggf. in smarthome.py/config.py?) erfolgen, damit nicht a) Code mehrfach geschrieben wird und b) Änderungen nicht mehrfach synchronisiert werden müssen.

Testet bei mir problemlos.