NEWS
ioBroker Backup Analyzer — ein Backup offline auswerten
-
Hallo!
Ein Werkzeug, das ein Backitup-Backup offline einliest und auswertet — ohne laufendes ioBroker, ohne Adapter, ohne Anmeldung. Es liest nur: Es schreibt nichts zurück und löscht nichts.
Was es zeigt
- Skripte — JavaScript und Blockly, letzteres mit lesbarem XML und erzeugtem JavaScript
- Verwendung — welches Skript welchen Datenpunkt anfasst, in beide Richtungen
- VIS-Datenpunkte — alles, was in VIS 1 und VIS 2 verwendet wird, mit Fundstelle
- Skripte — JavaScript und Blockly, letzteres mit lesbarem XML und erzeugtem JavaScript
- Verwendung — welches Skript welchen Datenpunkt anfasst, in beide Richtungen
- VIS-Datenpunkte — alles, was in VIS 1 und VIS 2 verwendet wird, mit Fundstelle
- Verwaiste Datenpunkte — Objekte ohne Adapter, Datenpunkte ohne Verwendung
- Aliasse, Logging, Dateien — samt Export einzelner Dateien aus dem Backup
- Vergleich zweier Backups — was sich geändert hat, mit Zeilenvergleich der Skripte
Die Listen sind Prüflisten, keine Löschlisten. Was gelöscht wird, entscheidest du.
Einfach ausprobieren, ohne irgendetwas zu installieren
https://brainbug01.github.io/iobroker-backup-analyzer/
Aufrufen, Backup hineinziehen, fertig. Das Backup verlässt deinen Rechner nicht — die Seite liefert nur das Programm aus, gelesen und ausgewertet wird im Browser. Nachprüfbar in den Entwicklerwerkzeugen: Nach dem Laden der Seite ist unter „Netzwerk" keine weitere Übertragung zu sehen. Die Seite wird bei jeder Version aus dem offenen Quelltext gebaut, nachvollziehbar unter „Actions" im Repository.
Oder als Programm — alle Downloads unter
https://github.com/Brainbug01/iobroker-backup-analyzer/releases/latest
Windows _Ordner.zip(empfohlen), entpacken und startenmacOS _macOS-AppleSiliconbzw._macOS-IntelLinux mit Oberfläche _Linux-x64.tar.gz— ein Desktop-Rechner, nicht der ioBroker-HostEigener Webserver _Browser.zipauf den Server legen, im Netz aufrufenAlle Fassungen zeigen dieselben Reiter und dieselben Zahlen.
Mit KI erstellt. Programmcode, Auswertungslogik und sämtliche Texte stammen von
Claude (Anthropic), erarbeitet in Claude Code. Vor jeder Auslieferung läuft ein
Verifikationslauf mit derzeit 634 Einzelprüfungen gegen echte Backups.Quelltext, ausführliche Beschreibung und Bilder:
https://github.com/Brainbug01/iobroker-backup-analyzerEin Dank an @bluefox: Er hat sich den Quellcode angesehen und Hinweise gegeben, die in die aktuelle Fassung ( Stand 20.08. ) eingeflossen sind.
-
Vielen Dank für die Erstellung dieses nützlichen Tools! Ich habe damit schon einige Datenleichen in meinem System entdecken und beseitigen können.
Besonders hilfreich ist es, wenn mehrere Skripte einen Datenpunkt beschreiben oder ihn auslesen. Da sieht man mit dem Tool schnell, welches Skript welchen Datenpunkt beeinflusst.
-
Die Funktion in der 1.20.0 ist z.B. durch diesen Beitrag entstanden:
https://forum.iobroker.net/topic/85202/vis-ausversehen-gelöscht
Hier hätte man mit dem Tool ab heute das ältere Backup öffnen können und die Vis exportieren.
Diese Vis im Editor importieren und der Vorgang wäre erledigt gewesen.1.21.0
Der Tab „Skripte" zeigt, was am Aufbau eines Blockly-Skripts auffällt ist. Eine neue Spalte „Hinweise" meldet drei Muster, die im Betrieb "Ärger" machen:
Trigger im Trigger
Abgelöster Baustein ( request )
Trigger ohne Inhalt1.21.1
Linux-Fassung angepasst1.22.0
Objektlimit Anzeige 5000
Zwei neue Skript-Hinweise
Prüfung von "Zustand steuern" gegen "Zustand aktualisieren"Wünsche und Anregungen sind herzlich willkommen.
-
Eigentlich trifft es der Name Backup-Analyzer nicht richtig. Ja, es wird ein Backup analysiert, aber es ist ja eine Analyse des gesamten ioBroker-Datenbestandes auf Fehler, Inkonsistenzen, etc. und geht weit weit über eine Beurteilung der Gültigkeit eines Backups hinaus.
Namen sind zwar Schall und Rauch, aber vielleicht lässt sich da doch noch ein treffenderer Name finden, der auch mehr Interessenten dafür anzieht? Nur so eine Idee.
-
Der Name kommt von der Anweisung an Claude das ich gerne mein Backup analysieren möchte und dafür ein Tool brauche. Und da KI sehr einfallsreich ist kam es zu der spektakulären Namensgebung

Ob ein anderer Name mehr Leute ansprechen würde kann ich nicht beurteilen. Vielleicht ist die Kategorie Off topic auch wenig besucht. Mal abwarten, vielleicht kommen noch mehr Tester hinzu und schreiben etwas dazu. -
@shadowhunter23
Hab gerade mal die Version v1.22.0 getestet.
Nach der Auswahl des Backup fängt das Programm an einzulesen und bleibt dann bei "VIS View werden gelesen.." hängen (ca. bei 50% Progressbar).
Programm Titel zeigt (Keine Rückmeldung).
Hast Du eine Idee ?Nachtrag:
Kein Fehler, durch sehr viele states dauert es bei mir fast 5 Minuten. -
@bernd1967
Danke für die Hilfe per Chat und es gibt nun 1.22.2Was langsam war: Die Analyse „unbenutzte Datenpunkte" prüft für jeden selbst angelegten Datenpunkt, ob in einem Skript oder einer VIS-Ansicht erwähnt. Dafür hat sie bisher für jeden einzelnen Datenpunkt den kompletten VIS- und Skripttext durchsucht. Solange beides klein ist, merkt man das nicht. Bei einem umfangreichen VIS-Projekt und einigen tausend Datenpunkten unter 0_userdata wächst der Aufwand zu Minuten — in denen scheinbar nichts passiert.
Außerdem in 1.22.1/1.22.2:
- Das Fenster friert beim Laden nicht mehr ein — die Auswertungen liefen bisher im Vordergrund. Windows meldete deshalb „Keine Rückmeldung", obwohl das Programm arbeitete.
- Die Statuszeile nennt jeden Schritt: Bitte warten — Analyse 3/5: unbenutzte Datenpunkte … Vorher stand dort eine einzige Meldung, die auch dann noch dastand, wenn längst etwas anderes lief.
- Große JSON-Dateien im Dateibereich kosten keinen Arbeitsspeicher mehr.
- Ein zweites Backup im Backup (manche Adapter sichern ihre eigenen Daten mit) überschreibt nicht mehr stillschweigend die echte Objektliste.
Neu ist ein Ladeprotokoll — genau damit wurde dieser Fehler gefunden. Es liegt als ladeprotokoll.txt neben dem Programm (Pfad steht in der LIESMICH und im README), wird bei jedem Laden neu geschrieben, und jede Zeile geht sofort auf die Platte. Bleibt einmal etwas hängen, sagt die letzte Zeile, welcher Schritt nicht fertig wurde.
Es enthält nichts aus eurer Anlage: nur Schritte, Zeiten, Größen und Adapternamen — keine Objekt-IDs, keine Werte, keine Namen von Skripten, Ansichten oder Geräten und keine vollständigen Pfade. Wer also mal etwas Seltsames sieht: einfach das Protokoll mitschicken, das reicht meistens.
-
Neu: eine Fassung für den Browser 1.23.1
Der Analyzer läuft jetzt auch im Browser. Man legt ihn einmal auf einen Webserver
im eigenen Netz und ruft ihn danach von jedem Rechner im Netz auf — ohne
Installation, auch dort, wo man nichts installieren möchte. Der Server muss dafür
nichts können außer statische Dateien ausliefern; gerechnet wird im Browser.
Anleitung und Einstellungen für den Apache liegen bei.Das Backup verlässt deinen Rechner nicht. Der Server liefert nur das Programm
aus; gelesen und ausgewertet wird das Archiv im Browser, auf dem Rechner davor.
Es wird nirgendwohin übertragen und liegt auch nicht auf dem Server. Wer das
nachsehen möchte: In den Entwicklerwerkzeugen ist unter „Netzwerk" nach dem Laden
der Seite keine weitere Übertragung zu sehen.Alle Reiter sind dieselben wie in den Programmen für Windows, macOS und Linux,
und sie zeigen dieselben Zahlen. Zwei Unterschiede gibt der Browser vor: Wo die
Programme einen Zielordner anbieten, lädt diese Fassung ein ZIP herunter, und
während ein Backup gelesen wird, steht die Seite still. Angenommen werden Archive
bis 512 MB — übliche Backitup-Backups liegen bei 10 bis 30 MB.Beim ersten Aufruf erscheint eine Prüfseite, die den Webserver durchmisst und zu
jedem Fehlbefund den passenden Befehl nennt. Danach nicht wieder.Download: https://github.com/Brainbug01/iobroker-backup-analyzer/releases/latest
(ioBroker-Backup-Analyzer_Browser.zip) -
Wenn das alles statisch ist und im Prinzip nur Code ausliefert der lokal im Browser läuft - also der Server keine Zugriff auf das Backup oder sonst was braucht - kannst du das dann auch gleich über eine Github Page (xxx.github.io) anbieten?
-
@mcm1957 danke für den Schubser in die Richtung!
@guitardoc auch dir danke ich für den Hinweis das ganze auch als Browser Version zu bauen!
Du hast im Hintergrund getestet und für Verbesserungen mitgewirkt.Der Analyzer läuft jetzt auch als fertige Seite — ohne Installation, ohne eigenen Server
https://brainbug01.github.io/iobroker-backup-analyzer/
Aufrufen, Backup hineinziehen, fertig.
Das Backup verlässt deinen Rechner nicht. Die Seite liefert nur das Programm aus; gelesen und ausgewertet wird das Archiv im Browser, auf dem Rechner davor. Es wird nirgendwohin übertragen und liegt auch nicht auf dem Server. Wer das nachsehen möchte:
In den Entwicklerwerkzeugen ist unter „Netzwerk" nach dem Laden der Seite keine weitere Übertragung zu sehen. Die Seite selbst wird bei jeder Version aus dem offenen Quelltext gebaut — nachvollziehbar unter „Actions" im Repository.Zugleich ist mit 1.23.2 die Browser-Fassung rund viermal so schnell geworden: Ein erzeugtes Testarchiv mit 190.000 Datenpunkten braucht jetzt 7,4 statt 29,4 Sekunden, bei unverändert 138 MB Arbeitsspeicher. Wer sie auf einem eigenen Server liegen hat, sollte sie also austauschen — das ZIP dazu liegt wie immer bei den Releases:
https://github.com/Brainbug01/iobroker-backup-analyzer/releases/latestBeim ersten Aufruf werden rund 17 MB übertragen — das ist das Programm selbst, nicht dein Backup. Danach liegt es im Zwischenspeicher des Browsers und startet sofort. Sollte dabei einmal eine Fehlermeldung erscheinen: Seite neu laden, dann läuft es.
Nachtrag: Danke für die Meldung im Hintergrund — das war ein echter Fehler. Wenn der Browser auf eine andere Sprache als Deutsch eingestellt ist, startete die Seite nicht. Behoben in 1.23.3; einmal mit Strg+F5 neu laden, dann läuft sie.
-
@shadowhunter23 moin, tolles tool, danke dafür! meinst du man könnte auch die states bzw. den Objektbaum darstellen lassen? hatte vor ein paar tagen den fall, dass ich einen alten state aus einem bestimmten DP rauskopieren wollte. dafür habe ich dann einen temporären Container erzeugt aus meinem proxmox backup. funktionierte, ja, aber mit deinem tool wäre das viel einfacher/schneller gewesen...
VG
-
Damit ich das Richtige baue, drei Fragen:
- Brauchst du wirklich den navigierbaren Baum wie im Admin, oder hätte dir eine Suche über die Datenpunkt-ID mit Wertanzeige genauso geholfen?
- Wolltest du den Wert nur sehen, oder wieder ins laufende System zurückschreiben? Im zweiten Fall könnte das Tool gleich einen fertigen setState-Befehl ausgeben.
- Ging es nur um den Wert, oder auch um die Definition des Datenpunkts (Name, Typ, Einheit, Rolle) — also eher „Datenpunkt wiederherstellen"?
-
Damit ich das Richtige baue, drei Fragen:
- Brauchst du wirklich den navigierbaren Baum wie im Admin, oder hätte dir eine Suche über die Datenpunkt-ID mit Wertanzeige genauso geholfen?
- Wolltest du den Wert nur sehen, oder wieder ins laufende System zurückschreiben? Im zweiten Fall könnte das Tool gleich einen fertigen setState-Befehl ausgeben.
- Ging es nur um den Wert, oder auch um die Definition des Datenpunkts (Name, Typ, Einheit, Rolle) — also eher „Datenpunkt wiederherstellen"?
Hi, @Shadowhunter23
also aus user-sicht würd ich mir natürlich wünschen, je mehr Infos man rausbekommt, desto besser, aber mir hätte bei meinem beschriebenen Problem auch schon folgendes geholfen:
zu 1. > eine suche über Name oder ID wäre ausreichend
zu 2. > ich wollte den wert, in dem fall ein json, manuell in meinen Produktiv-state kopieren. einen setState-bräuchte ich nicht extra
zu 3. > mir ging es nur um den wert, aber wer weiß wann man die Definition vielleicht doch mal brauchtam Ende ist es (für mich) ein Notfall-Tool, also muss ja auch nicht alles abbilden
in meinem Fall kam ich im ersten Schritt über das Proxmox-Backup sehr easy an die states.jsonl ran, konnte damit auf die Schnelle keinen kopierbaren json-wert extrahieren (gefunden hatte ich den schon, aber am ende war ich schneller mit dem container und konnte für mich das Problem lösen)
VG
-
So, ist drin — Version 1.25.1 ist raus.
Neuer Reiter "Datenpunkte": Suche über ID und Name (mehrere Begriffe, Reihenfolge egal), darunter der vollständige Wert zum Kopieren. Genau dein Fall: JSON-Werte kommen entmaskiert und eingerückt heraus, nicht als eine lange Zeile mit "Anführungszeichen". Daneben stehen Typ, Einheit, Rolle, Grenzen und Vorgabewert — du meintest ja, die Definition könnte man mal brauchen.
setState-Generator und Objektbaum habe ich weggelassen, wie von dir beschrieben.
Notfall-Tool eben.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden