iobroker.tidy 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/admin/i18n/de.json +1 -0
- package/admin/i18n/en.json +1 -0
- package/admin/i18n/es.json +1 -0
- package/admin/i18n/fr.json +1 -0
- package/admin/i18n/it.json +1 -0
- package/admin/i18n/nl.json +1 -0
- package/admin/i18n/pl.json +1 -0
- package/admin/i18n/pt.json +1 -0
- package/admin/i18n/ru.json +1 -0
- package/admin/i18n/uk.json +1 -0
- package/admin/i18n/zh-cn.json +1 -0
- package/io-package.json +37 -15
- package/main.js +38 -0
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -205,6 +205,9 @@ If you like our work and would like to support us, we appreciate any donation.
|
|
|
205
205
|
<!--
|
|
206
206
|
### **WORK IN PROGRESS**
|
|
207
207
|
-->
|
|
208
|
+
### 0.2.2 (2026-06-10)
|
|
209
|
+
- (skvarel) Added meta object types for adapter and instance namespace
|
|
210
|
+
|
|
208
211
|
### 0.2.0 (2026-06-10)
|
|
209
212
|
- (skvarel) Added exceptions incl. count state per scan channel showing how many datapoints were excluded
|
|
210
213
|
- (skvarel) Replaced manual path input with object picker on Scan Paths tab; paths remain editable for multi-instance scans
|
|
@@ -225,9 +228,6 @@ If you like our work and would like to support us, we appreciate any donation.
|
|
|
225
228
|
- (skvarel) Updated dependencies
|
|
226
229
|
- (skvarel) Fixed repo checker issue
|
|
227
230
|
|
|
228
|
-
### 0.1.4 (2026-05-25)
|
|
229
|
-
- (skvarel) Revised titel and desciption
|
|
230
|
-
|
|
231
231
|
## Older changes
|
|
232
232
|
- [CHANGELOG_OLD.md](CHANGELOG_OLD.md)
|
|
233
233
|
|
package/admin/i18n/de.json
CHANGED
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"Optional. If empty, the path will be used as name.": "Optional. Wenn leer, wird der Pfad als Name verwendet.",
|
|
37
37
|
"Path Configuration": "Pfad-Konfiguration",
|
|
38
38
|
"Paths to scan": "Zu scannende Pfade",
|
|
39
|
+
"Pick a folder or namespace (e.g. alias, 0_userdata.0, alias.0.Heizungen). Individual datapoints are not shown. The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "Wähle einen Ordner oder Namespace (z. B. alias, 0_userdata.0, alias.0.Heizungen). Einzelne Datenpunkte werden nicht angezeigt. Der Pfad bleibt bearbeitbar — entferne die Instanznummer (alias.0 → alias), um alle Instanzen zu scannen.",
|
|
39
40
|
"Pick a folder/channel to exclude an entire subtree. To exclude a single state, type its ID directly into the field (e.g. 0_userdata.0.radio.station).": "Wähle einen Ordner/Kanal, um einen gesamten Zweig auszuschließen. Für einen einzelnen Datenpunkt die ID direkt ins Feld tippen (z. B. 0_userdata.0.radio.station).",
|
|
40
41
|
"Pick an adapter instance or subfolder (e.g. 0_userdata.0, alias.0). The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "Wähle eine Adapter-Instanz oder einen Unterordner (z. B. 0_userdata.0, alias.0). Der Pfad bleibt bearbeitbar — entferne die Instanznummer (alias.0 → alias), um alle Instanzen zu scannen.",
|
|
41
42
|
"Pick an individual datapoint to exclude it. To exclude an entire folder, type the folder path directly (e.g. 0_userdata.0.config).": "Wähle einen einzelnen Datenpunkt zum Ausschließen. Um einen ganzen Ordner auszuschließen, den Pfad direkt eingeben (z. B. 0_userdata.0.config).",
|
package/admin/i18n/en.json
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
"Comment (optional)": "Comment (optional)",
|
|
5
5
|
"Configure which paths to scan for unused datapoints. Use the object picker or type a path manually. Each path will get its own result state with a JSON table.": "Configure which paths to scan for unused datapoints. Use the object picker or type a path manually. Each path will get its own result state with a JSON table.",
|
|
6
6
|
"Pick an adapter instance or subfolder (e.g. 0_userdata.0, alias.0). The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "Pick an adapter instance or subfolder (e.g. 0_userdata.0, alias.0). The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.",
|
|
7
|
+
"Pick a folder or namespace (e.g. alias, 0_userdata.0, alias.0.Heizungen). Individual datapoints are not shown. The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "Pick a folder or namespace (e.g. alias, 0_userdata.0, alias.0.Heizungen). Individual datapoints are not shown. The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.",
|
|
7
8
|
"Datapoints listed on the Exceptions tab are omitted from all scan results and statistics. Use this for configuration values that rarely change but should not appear as dead or stale.\n\nPick a single state to exclude one datapoint, or pick a folder/channel to exclude an entire subtree.\n\nEach scan channel provides exceptionCount showing how many datapoints were excluded during the last scan (0 if none).": "Datapoints listed on the Exceptions tab are omitted from all scan results and statistics. Use this for configuration values that rarely change but should not appear as dead or stale.\n\nPick a single state to exclude one datapoint, or pick a folder/channel to exclude an entire subtree.\n\nEach scan channel provides exceptionCount showing how many datapoints were excluded during the last scan (0 if none).\n\n",
|
|
8
9
|
"Datapoints listed on the Exceptions tab are omitted from all scan results and statistics. Use this for configuration values that rarely change but should not appear as dead or stale.\n\nUse the picker to select individual datapoints (states). To exclude an entire folder or subtree, type the path directly into the field (e.g. 0_userdata.0.config).\n\nEach scan channel provides exceptionCount showing how many datapoints were excluded during the last scan (0 if none).": "Datapoints listed on the Exceptions tab are omitted from all scan results and statistics. Use this for configuration values that rarely change but should not appear as dead or stale.\n\nUse the picker to select individual datapoints (states). To exclude an entire folder or subtree, type the path directly into the field (e.g. 0_userdata.0.config).\n\nEach scan channel provides exceptionCount showing how many datapoints were excluded during the last scan (0 if none).",
|
|
9
10
|
"Datapoints not updated for this many days are marked as 'dead'": "Datapoints not updated for this many days are marked as 'dead'",
|
package/admin/i18n/es.json
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"Paths to scan": "Rutas para escanear",
|
|
39
39
|
"Pick a folder in the object tree to exclude an entire subtree, or type a single state ID manually (e.g. 0_userdata.0.radio.station).": "Elija una carpeta en el árbol de objetos para excluir un subárbol completo o escriba manualmente una ID de estado única (por ejemplo, 0_userdata.0.radio.station).",
|
|
40
40
|
"Pick a folder in the object tree, or type a path manually (e.g. 0_userdata.0). Remove the instance number (alias.0 → alias) to scan all instances.": "Elija una carpeta en el árbol de objetos o escriba una ruta manualmente (por ejemplo, 0_userdata.0). Elimine el número de instancia (alias.0 → alias) para escanear todas las instancias.",
|
|
41
|
+
"Pick a folder or namespace (e.g. alias, 0_userdata.0, alias.0.Heizungen). Individual datapoints are not shown. The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "Elija una carpeta o espacio de nombres (por ejemplo, alias, 0_userdata.0, alias.0.Heizungen). No se muestran los puntos de datos individuales. La ruta sigue siendo editable: elimine el número de instancia (alias.0 → alias) para escanear todas las instancias.",
|
|
41
42
|
"Pick a folder/channel to exclude an entire subtree. To exclude a single state, type its ID directly into the field (e.g. 0_userdata.0.radio.station).": "Elija una carpeta/canal para excluir un subárbol completo. Para excluir un solo estado, escriba su ID directamente en el campo (por ejemplo, 0_userdata.0.radio.station).",
|
|
42
43
|
"Pick a path from the object tree or type manually. Remove the instance number (e.g. alias.0 → alias) to scan all instances of an adapter.": "Elija una ruta del árbol de objetos o escríbala manualmente. Elimine el número de instancia (por ejemplo, alias.0 → alias) para escanear todas las instancias de un adaptador.",
|
|
43
44
|
"Pick an adapter instance (e.g. 0_userdata.0, alias.0). The path stays editable — append a subfolder or remove the instance number (alias.0 → alias) after picking.": "Elija una instancia de adaptador (por ejemplo, 0_userdata.0, alias.0). La ruta sigue siendo editable: agregue una subcarpeta o elimine el número de instancia (alias.0 → alias) después de seleccionarla.",
|
package/admin/i18n/fr.json
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"Paths to scan": "Chemins à scanner",
|
|
39
39
|
"Pick a folder in the object tree to exclude an entire subtree, or type a single state ID manually (e.g. 0_userdata.0.radio.station).": "Choisissez un dossier dans l'arborescence des objets pour exclure un sous-arbre entier ou saisissez manuellement un seul ID d'état (par exemple 0_userdata.0.radio.station).",
|
|
40
40
|
"Pick a folder in the object tree, or type a path manually (e.g. 0_userdata.0). Remove the instance number (alias.0 → alias) to scan all instances.": "Choisissez un dossier dans l'arborescence des objets ou saisissez un chemin manuellement (par exemple 0_userdata.0). Supprimez le numéro d'instance (alias.0 → alias) pour analyser toutes les instances.",
|
|
41
|
+
"Pick a folder or namespace (e.g. alias, 0_userdata.0, alias.0.Heizungen). Individual datapoints are not shown. The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "Choisissez un dossier ou un espace de noms (par exemple, alias, 0_userdata.0, alias.0.Heizungen). Les points de données individuels ne sont pas affichés. Le chemin reste modifiable — supprimez le numéro d'instance (alias.0 → alias) pour analyser toutes les instances.",
|
|
41
42
|
"Pick a folder/channel to exclude an entire subtree. To exclude a single state, type its ID directly into the field (e.g. 0_userdata.0.radio.station).": "Choisissez un dossier/canal pour exclure un sous-arbre entier. Pour exclure un seul état, saisissez son identifiant directement dans le champ (par exemple 0_userdata.0.radio.station).",
|
|
42
43
|
"Pick a path from the object tree or type manually. Remove the instance number (e.g. alias.0 → alias) to scan all instances of an adapter.": "Choisissez un chemin dans l’arborescence des objets ou saisissez-le manuellement. Supprimez le numéro d'instance (par exemple, alias.0 → alias) pour analyser toutes les instances d'un adaptateur.",
|
|
43
44
|
"Pick an adapter instance (e.g. 0_userdata.0, alias.0). The path stays editable — append a subfolder or remove the instance number (alias.0 → alias) after picking.": "Choisissez une instance d'adaptateur (par exemple 0_userdata.0, alias.0). Le chemin reste modifiable : ajoutez un sous-dossier ou supprimez le numéro d'instance (alias.0 → alias) après la sélection.",
|
package/admin/i18n/it.json
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"Paths to scan": "Percorsi da scansionare",
|
|
39
39
|
"Pick a folder in the object tree to exclude an entire subtree, or type a single state ID manually (e.g. 0_userdata.0.radio.station).": "Scegli una cartella nell'albero degli oggetti per escludere un intero sottoalbero o digita manualmente un singolo ID di stato (ad esempio 0_userdata.0.radio.station).",
|
|
40
40
|
"Pick a folder in the object tree, or type a path manually (e.g. 0_userdata.0). Remove the instance number (alias.0 → alias) to scan all instances.": "Scegli una cartella nell'albero degli oggetti o digita manualmente un percorso (ad esempio 0_userdata.0). Rimuovere il numero dell'istanza (alias.0 → alias) per scansionare tutte le istanze.",
|
|
41
|
+
"Pick a folder or namespace (e.g. alias, 0_userdata.0, alias.0.Heizungen). Individual datapoints are not shown. The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "Scegli una cartella o uno spazio dei nomi (ad esempio alias, 0_userdata.0, alias.0.Heizungen). I singoli punti dati non vengono visualizzati. Il percorso rimane modificabile: rimuovi il numero dell'istanza (alias.0 → alias) per scansionare tutte le istanze.",
|
|
41
42
|
"Pick a folder/channel to exclude an entire subtree. To exclude a single state, type its ID directly into the field (e.g. 0_userdata.0.radio.station).": "Scegli una cartella/canale per escludere un intero sottoalbero. Per escludere un singolo stato digitare il suo ID direttamente nel campo (es. 0_userdata.0.radio.station).",
|
|
42
43
|
"Pick a path from the object tree or type manually. Remove the instance number (e.g. alias.0 → alias) to scan all instances of an adapter.": "Scegli un percorso dall'albero degli oggetti o digitalo manualmente. Rimuovere il numero di istanza (ad esempio alias.0 → alias) per scansionare tutte le istanze di un adattatore.",
|
|
43
44
|
"Pick an adapter instance (e.g. 0_userdata.0, alias.0). The path stays editable — append a subfolder or remove the instance number (alias.0 → alias) after picking.": "Scegli un'istanza dell'adattatore (ad esempio 0_userdata.0, alias.0). Il percorso rimane modificabile: aggiungi una sottocartella o rimuovi il numero di istanza (alias.0 → alias) dopo la selezione.",
|
package/admin/i18n/nl.json
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"Paths to scan": "Paden om te scannen",
|
|
39
39
|
"Pick a folder in the object tree to exclude an entire subtree, or type a single state ID manually (e.g. 0_userdata.0.radio.station).": "Kies een map in de objectboom om een volledige subboom uit te sluiten, of typ handmatig een enkele status-ID (bijvoorbeeld 0_userdata.0.radio.station).",
|
|
40
40
|
"Pick a folder in the object tree, or type a path manually (e.g. 0_userdata.0). Remove the instance number (alias.0 → alias) to scan all instances.": "Kies een map in de objectboom of typ handmatig een pad (bijvoorbeeld 0_userdata.0). Verwijder het exemplaarnummer (alias.0 → alias) om alle exemplaren te scannen.",
|
|
41
|
+
"Pick a folder or namespace (e.g. alias, 0_userdata.0, alias.0.Heizungen). Individual datapoints are not shown. The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "Kies een map of naamruimte (bijvoorbeeld alias, 0_userdata.0, alias.0.Heizungen). Individuele datapunten worden niet weergegeven. Het pad blijft bewerkbaar. Verwijder het exemplaarnummer (alias.0 → alias) om alle exemplaren te scannen.",
|
|
41
42
|
"Pick a folder/channel to exclude an entire subtree. To exclude a single state, type its ID directly into the field (e.g. 0_userdata.0.radio.station).": "Kies een map/kanaal om een volledige subboom uit te sluiten. Om een enkele status uit te sluiten, typt u de ID ervan rechtstreeks in het veld (bijvoorbeeld 0_userdata.0.radio.station).",
|
|
42
43
|
"Pick a path from the object tree or type manually. Remove the instance number (e.g. alias.0 → alias) to scan all instances of an adapter.": "Kies een pad uit de objectboom of typ handmatig. Verwijder het exemplaarnummer (bijvoorbeeld alias.0 → alias) om alle exemplaren van een adapter te scannen.",
|
|
43
44
|
"Pick an adapter instance (e.g. 0_userdata.0, alias.0). The path stays editable — append a subfolder or remove the instance number (alias.0 → alias) after picking.": "Kies een adapterinstantie (bijvoorbeeld 0_userdata.0, alias.0). Het pad blijft bewerkbaar: voeg een submap toe of verwijder het exemplaarnummer (alias.0 → alias) na het kiezen.",
|
package/admin/i18n/pl.json
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"Paths to scan": "Ścieżki do skanowania",
|
|
39
39
|
"Pick a folder in the object tree to exclude an entire subtree, or type a single state ID manually (e.g. 0_userdata.0.radio.station).": "Wybierz folder w drzewie obiektów, aby wykluczyć całe poddrzewo, lub wpisz ręcznie pojedynczy identyfikator stanu (np. 0_userdata.0.radio.station).",
|
|
40
40
|
"Pick a folder in the object tree, or type a path manually (e.g. 0_userdata.0). Remove the instance number (alias.0 → alias) to scan all instances.": "Wybierz folder w drzewie obiektów lub wpisz ścieżkę ręcznie (np. 0_userdata.0). Usuń numer instancji (alias.0 → alias), aby przeskanować wszystkie instancje.",
|
|
41
|
+
"Pick a folder or namespace (e.g. alias, 0_userdata.0, alias.0.Heizungen). Individual datapoints are not shown. The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "Wybierz folder lub przestrzeń nazw (np. alias, 0_userdata.0, alias.0.Heizungen). Poszczególne punkty danych nie są wyświetlane. Ścieżka pozostaje edytowalna — usuń numer instancji (alias.0 → alias), aby przeskanować wszystkie instancje.",
|
|
41
42
|
"Pick a folder/channel to exclude an entire subtree. To exclude a single state, type its ID directly into the field (e.g. 0_userdata.0.radio.station).": "Wybierz folder/kanał, aby wykluczyć całe poddrzewo. Aby wykluczyć pojedynczy stan, wpisz jego identyfikator bezpośrednio w polu (np. 0_userdata.0.radio.station).",
|
|
42
43
|
"Pick a path from the object tree or type manually. Remove the instance number (e.g. alias.0 → alias) to scan all instances of an adapter.": "Wybierz ścieżkę z drzewa obiektów lub wpisz ręcznie. Usuń numer instancji (np. alias.0 → alias), aby przeskanować wszystkie instancje adaptera.",
|
|
43
44
|
"Pick an adapter instance (e.g. 0_userdata.0, alias.0). The path stays editable — append a subfolder or remove the instance number (alias.0 → alias) after picking.": "Wybierz instancję adaptera (np. 0_userdata.0, alias.0). Ścieżka pozostaje edytowalna – po wybraniu dodaj podfolder lub usuń numer instancji (alias.0 → alias).",
|
package/admin/i18n/pt.json
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"Paths to scan": "Caminhos para digitalizar",
|
|
39
39
|
"Pick a folder in the object tree to exclude an entire subtree, or type a single state ID manually (e.g. 0_userdata.0.radio.station).": "Escolha uma pasta na árvore de objetos para excluir uma subárvore inteira ou digite um único ID de estado manualmente (por exemplo, 0_userdata.0.radio.station).",
|
|
40
40
|
"Pick a folder in the object tree, or type a path manually (e.g. 0_userdata.0). Remove the instance number (alias.0 → alias) to scan all instances.": "Escolha uma pasta na árvore de objetos ou digite um caminho manualmente (por exemplo, 0_userdata.0). Remova o número da instância (alias.0 → alias) para verificar todas as instâncias.",
|
|
41
|
+
"Pick a folder or namespace (e.g. alias, 0_userdata.0, alias.0.Heizungen). Individual datapoints are not shown. The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "Escolha uma pasta ou namespace (por exemplo, alias, 0_userdata.0, alias.0.Heizungen). Os pontos de dados individuais não são mostrados. O caminho permanece editável – remova o número da instância (alias.0 → alias) para verificar todas as instâncias.",
|
|
41
42
|
"Pick a folder/channel to exclude an entire subtree. To exclude a single state, type its ID directly into the field (e.g. 0_userdata.0.radio.station).": "Escolha uma pasta/canal para excluir uma subárvore inteira. Para excluir um único estado, digite seu ID diretamente no campo (por exemplo, 0_userdata.0.radio.station).",
|
|
42
43
|
"Pick a path from the object tree or type manually. Remove the instance number (e.g. alias.0 → alias) to scan all instances of an adapter.": "Escolha um caminho na árvore de objetos ou digite-o manualmente. Remova o número da instância (por exemplo, alias.0 → alias) para verificar todas as instâncias de um adaptador.",
|
|
43
44
|
"Pick an adapter instance (e.g. 0_userdata.0, alias.0). The path stays editable — append a subfolder or remove the instance number (alias.0 → alias) after picking.": "Escolha uma instância do adaptador (por exemplo, 0_userdata.0, alias.0). O caminho permanece editável – anexe uma subpasta ou remova o número da instância (alias.0 → alias) após a escolha.",
|
package/admin/i18n/ru.json
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"Paths to scan": "Пути для сканирования",
|
|
39
39
|
"Pick a folder in the object tree to exclude an entire subtree, or type a single state ID manually (e.g. 0_userdata.0.radio.station).": "Выберите папку в дереве объектов, чтобы исключить все поддерево, или введите один идентификатор состояния вручную (например, 0_userdata.0.radio.station).",
|
|
40
40
|
"Pick a folder in the object tree, or type a path manually (e.g. 0_userdata.0). Remove the instance number (alias.0 → alias) to scan all instances.": "Выберите папку в дереве объектов или введите путь вручную (например, 0_userdata.0). Удалите номер экземпляра (псевдоним.0 → псевдоним), чтобы просканировать все экземпляры.",
|
|
41
|
+
"Pick a folder or namespace (e.g. alias, 0_userdata.0, alias.0.Heizungen). Individual datapoints are not shown. The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "Выберите папку или пространство имен (например, псевдоним, 0_userdata.0, alias.0.Heizungen). Отдельные точки данных не показаны. Путь остается доступным для редактирования — удалите номер экземпляра (псевдоним.0 → псевдоним), чтобы сканировать все экземпляры.",
|
|
41
42
|
"Pick a folder/channel to exclude an entire subtree. To exclude a single state, type its ID directly into the field (e.g. 0_userdata.0.radio.station).": "Выберите папку/канал, чтобы исключить все поддерево. Чтобы исключить одно состояние, введите его идентификатор непосредственно в поле (например, 0_userdata.0.radio.station).",
|
|
42
43
|
"Pick a path from the object tree or type manually. Remove the instance number (e.g. alias.0 → alias) to scan all instances of an adapter.": "Выберите путь из дерева объектов или введите его вручную. Удалите номер экземпляра (например, псевдоним.0 → псевдоним), чтобы просканировать все экземпляры адаптера.",
|
|
43
44
|
"Pick an adapter instance (e.g. 0_userdata.0, alias.0). The path stays editable — append a subfolder or remove the instance number (alias.0 → alias) after picking.": "Выберите экземпляр адаптера (например, 0_userdata.0, alias.0). Путь остается доступным для редактирования — добавьте подпапку или удалите номер экземпляра (псевдоним.0 → псевдоним) после выбора.",
|
package/admin/i18n/uk.json
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"Paths to scan": "Шляхи для сканування",
|
|
39
39
|
"Pick a folder in the object tree to exclude an entire subtree, or type a single state ID manually (e.g. 0_userdata.0.radio.station).": "Виберіть папку в дереві об’єктів, щоб виключити все піддерево, або введіть один ідентифікатор стану вручну (наприклад, 0_userdata.0.radio.station).",
|
|
40
40
|
"Pick a folder in the object tree, or type a path manually (e.g. 0_userdata.0). Remove the instance number (alias.0 → alias) to scan all instances.": "Виберіть папку в дереві об’єктів або введіть шлях вручну (наприклад, 0_userdata.0). Видаліть номер екземпляра (alias.0 → alias), щоб сканувати всі екземпляри.",
|
|
41
|
+
"Pick a folder or namespace (e.g. alias, 0_userdata.0, alias.0.Heizungen). Individual datapoints are not shown. The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "Виберіть папку або простір імен (наприклад, псевдонім, 0_userdata.0, alias.0.Heizungen). Окремі точки даних не відображаються. Шлях залишається редагованим — видаліть номер екземпляра (alias.0 → alias), щоб сканувати всі екземпляри.",
|
|
41
42
|
"Pick a folder/channel to exclude an entire subtree. To exclude a single state, type its ID directly into the field (e.g. 0_userdata.0.radio.station).": "Виберіть папку/канал, щоб виключити все піддерево. Щоб виключити один стан, введіть його ідентифікатор безпосередньо в поле (наприклад, 0_userdata.0.radio.station).",
|
|
42
43
|
"Pick a path from the object tree or type manually. Remove the instance number (e.g. alias.0 → alias) to scan all instances of an adapter.": "Виберіть шлях із дерева об’єктів або введіть вручну. Видаліть номер екземпляра (наприклад, alias.0 → alias), щоб сканувати всі екземпляри адаптера.",
|
|
43
44
|
"Pick an adapter instance (e.g. 0_userdata.0, alias.0). The path stays editable — append a subfolder or remove the instance number (alias.0 → alias) after picking.": "Виберіть екземпляр адаптера (наприклад, 0_userdata.0, alias.0). Шлях залишається редагованим — додайте підпапку або видаліть номер екземпляра (alias.0 → alias) після вибору.",
|
package/admin/i18n/zh-cn.json
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"Paths to scan": "要扫描的路径",
|
|
39
39
|
"Pick a folder in the object tree to exclude an entire subtree, or type a single state ID manually (e.g. 0_userdata.0.radio.station).": "在对象树中选择一个文件夹以排除整个子树,或手动键入单个状态 ID(例如 0_userdata.0.radio.station)。",
|
|
40
40
|
"Pick a folder in the object tree, or type a path manually (e.g. 0_userdata.0). Remove the instance number (alias.0 → alias) to scan all instances.": "在对象树中选择一个文件夹,或手动键入路径(例如 0_userdata.0)。删除实例编号(alias.0→alias)以扫描所有实例。",
|
|
41
|
+
"Pick a folder or namespace (e.g. alias, 0_userdata.0, alias.0.Heizungen). Individual datapoints are not shown. The path stays editable — remove the instance number (alias.0 → alias) to scan all instances.": "选择一个文件夹或命名空间(例如alias、0_userdata.0、alias.0.Heizungen)。未显示单个数据点。路径保持可编辑状态 — 删除实例编号(alias.0 → 别名)以扫描所有实例。",
|
|
41
42
|
"Pick a folder/channel to exclude an entire subtree. To exclude a single state, type its ID directly into the field (e.g. 0_userdata.0.radio.station).": "选择一个文件夹/频道以排除整个子树。要排除单个状态,请直接在字段中输入其 ID(例如 0_userdata.0.radio.station)。",
|
|
42
43
|
"Pick a path from the object tree or type manually. Remove the instance number (e.g. alias.0 → alias) to scan all instances of an adapter.": "从对象树中选择路径或手动键入。删除实例编号(例如alias.0→alias)以扫描适配器的所有实例。",
|
|
43
44
|
"Pick an adapter instance (e.g. 0_userdata.0, alias.0). The path stays editable — append a subfolder or remove the instance number (alias.0 → alias) after picking.": "选择一个适配器实例(例如 0_userdata.0、alias.0)。路径保持可编辑状态 - 附加子文件夹或在选择后删除实例编号(alias.0 → 别名)。",
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "tidy",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.2",
|
|
5
5
|
"news": {
|
|
6
|
+
"0.2.2": {
|
|
7
|
+
"en": "Added meta object types for adapter and instance namespace",
|
|
8
|
+
"de": "Meta-Objekttypen für Adapter und Instanz-Namespace hinzugefügt",
|
|
9
|
+
"ru": "Добавлены типы метаобъектов для адаптера и пространства имен экземпляров",
|
|
10
|
+
"pt": "Tipos de meta- objecto adicionados para o espaço de nomes do adaptador e da instância",
|
|
11
|
+
"nl": "Toegevoegd meta-objecttypes voor adapter en instance namespace",
|
|
12
|
+
"fr": "Ajout de types d'objets méta pour l'adaptateur et l'espace de noms d'instance",
|
|
13
|
+
"it": "Aggiunti i tipi di meta oggetto per adattatore e namespace di istanza",
|
|
14
|
+
"es": "Se agregaron tipos de objetos meta para el adaptador y el espacio de nombres de instancia",
|
|
15
|
+
"pl": "Dodano typy metaobiektów dla adaptera i instancji przestrzeni nazw",
|
|
16
|
+
"uk": "Додано типи об'єктів метаданих для перетворення та простору імен",
|
|
17
|
+
"zh-cn": "添加适配器和实例命名空间的元对象类型"
|
|
18
|
+
},
|
|
6
19
|
"0.2.0": {
|
|
7
20
|
"en": "Added exceptions incl. count state per scan channel showing how many datapoints were excluded\nReplaced manual path input with object picker on Scan Paths tab; paths remain editable for multi-instance scans",
|
|
8
21
|
"de": "Hinzugefügte Ausnahmen inkl. Zählzustand pro Scankanal, der zeigt, wie viele Datenpunkte ausgeschlossen wurden\nErsetzte manuelle Pfadeingabe mit Objektauswahl auf der Registerkarte Scan Paths; Pfade bleiben für Multi-Instanz-Scans editierbar",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"pl": "Stałe wydanie kontrolera repo",
|
|
81
94
|
"uk": "Виправлено проблему перевірки репо",
|
|
82
95
|
"zh-cn": "固定回购检查器问题"
|
|
83
|
-
},
|
|
84
|
-
"0.1.1": {
|
|
85
|
-
"en": "Changed name of result field to optional\nRevised config",
|
|
86
|
-
"de": "Änderung des Namens des Ergebnisfelds auf optional\nÜberarbeitetes Einverständnis",
|
|
87
|
-
"ru": "Изменить название поля результатов на факультативное\nПересмотренная конфигурация",
|
|
88
|
-
"pt": "Mudar o nome do campo de resultado para opcional\nConfiguração revista",
|
|
89
|
-
"nl": "Veranderde naam van het resultaatveld naar optioneel\nHerziene configuratie",
|
|
90
|
-
"fr": "Nom modifié du champ résultat en option\nConfiguration révisée",
|
|
91
|
-
"it": "Cambiato nome del campo di risultato a facoltativo\nConfigurazione modificata",
|
|
92
|
-
"es": "Nombre cambiado del campo de resultados a opcional\nConfiguración revisada",
|
|
93
|
-
"pl": "Zmieniona nazwa pola wyniku na opcjonalny\nZmieniony plik konfiguracyjny",
|
|
94
|
-
"uk": "Змінене ім'я поля результату для додаткового\nПереглянуто налаштування",
|
|
95
|
-
"zh-cn": "将结果字段的名称改为可选\n订正配置"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
|
@@ -176,5 +176,27 @@
|
|
|
176
176
|
"exceptions": []
|
|
177
177
|
},
|
|
178
178
|
"objects": [],
|
|
179
|
-
"instanceObjects": [
|
|
179
|
+
"instanceObjects": [
|
|
180
|
+
{
|
|
181
|
+
"_id": "",
|
|
182
|
+
"type": "meta",
|
|
183
|
+
"common": {
|
|
184
|
+
"name": {
|
|
185
|
+
"en": "Scan results for unused datapoints",
|
|
186
|
+
"de": "Scan-Ergebnisse für ungenutzte Datenpunkte",
|
|
187
|
+
"ru": "Результаты сканирования неиспользуемых точек данных",
|
|
188
|
+
"pt": "Resultados da varredura de pontos de dados não utilizados",
|
|
189
|
+
"nl": "Scanresultaten voor ongebruikte datapunten",
|
|
190
|
+
"fr": "Résultats d'analyse des points de données inutilisés",
|
|
191
|
+
"it": "Risultati della scansione per punti dati non utilizzati",
|
|
192
|
+
"es": "Resultados del escaneo de puntos de datos no utilizados",
|
|
193
|
+
"pl": "Wyniki skanowania nieużywanych punktów danych",
|
|
194
|
+
"uk": "Результати сканування невикористаних точок даних",
|
|
195
|
+
"zh-cn": "未使用数据点的扫描结果"
|
|
196
|
+
},
|
|
197
|
+
"type": "meta.folder"
|
|
198
|
+
},
|
|
199
|
+
"native": {}
|
|
200
|
+
}
|
|
201
|
+
]
|
|
180
202
|
}
|
package/main.js
CHANGED
|
@@ -34,6 +34,8 @@ class Tidy extends utils.Adapter {
|
|
|
34
34
|
async onReady() {
|
|
35
35
|
this.log.info('Starting Tidy adapter...');
|
|
36
36
|
|
|
37
|
+
await this.ensureAdapterRootMeta();
|
|
38
|
+
|
|
37
39
|
// Validate configuration
|
|
38
40
|
if (!this.config.paths || !Array.isArray(this.config.paths)) {
|
|
39
41
|
this.log.error('No paths configured! Please configure at least one path to scan.');
|
|
@@ -75,6 +77,41 @@ class Tidy extends utils.Adapter {
|
|
|
75
77
|
}, intervalMs);
|
|
76
78
|
}
|
|
77
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Ensure adapter root (e.g. tidy) is typed as meta.
|
|
82
|
+
* instanceObjects handles tidy.0; objects with _id "" fails on adapter update (Invalid ID).
|
|
83
|
+
*/
|
|
84
|
+
async ensureAdapterRootMeta() {
|
|
85
|
+
const rootId = this.name;
|
|
86
|
+
const titleLang = this.ioPack?.common?.titleLang;
|
|
87
|
+
const name =
|
|
88
|
+
typeof titleLang === 'object' && titleLang !== null && !Array.isArray(titleLang)
|
|
89
|
+
? (titleLang[this.language] ?? titleLang.en ?? rootId)
|
|
90
|
+
: typeof titleLang === 'string'
|
|
91
|
+
? titleLang
|
|
92
|
+
: rootId;
|
|
93
|
+
|
|
94
|
+
const existing = await this.getForeignObjectAsync(rootId);
|
|
95
|
+
if (!existing) {
|
|
96
|
+
await this.setForeignObjectAsync(rootId, {
|
|
97
|
+
type: 'meta',
|
|
98
|
+
common: {
|
|
99
|
+
name,
|
|
100
|
+
type: 'meta.folder',
|
|
101
|
+
},
|
|
102
|
+
native: {},
|
|
103
|
+
});
|
|
104
|
+
} else if (existing.type !== 'meta') {
|
|
105
|
+
await this.extendForeignObjectAsync(rootId, {
|
|
106
|
+
type: 'meta',
|
|
107
|
+
common: {
|
|
108
|
+
name,
|
|
109
|
+
type: 'meta.folder',
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
78
115
|
/**
|
|
79
116
|
* Create channel and states for complete scan
|
|
80
117
|
*/
|
|
@@ -808,6 +845,7 @@ if (require.main !== module) {
|
|
|
808
845
|
* @param {Partial<utils.AdapterOptions>} [options] - Adapter options
|
|
809
846
|
*/
|
|
810
847
|
module.exports = options => new Tidy(options);
|
|
848
|
+
module.exports.Tidy = Tidy;
|
|
811
849
|
} else {
|
|
812
850
|
// otherwise start the instance directly
|
|
813
851
|
new Tidy();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.tidy",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Analyzes ioBroker objects for unused datapoints and helps you clean up your instance",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "skvarel",
|
|
@@ -71,5 +71,8 @@
|
|
|
71
71
|
"bugs": {
|
|
72
72
|
"url": "https://github.com/inventwo/ioBroker.tidy/issues"
|
|
73
73
|
},
|
|
74
|
-
"readmeFilename": "README.md"
|
|
74
|
+
"readmeFilename": "README.md",
|
|
75
|
+
"overrides": {
|
|
76
|
+
"@iobroker/adapter-core": "^3.3.2"
|
|
77
|
+
}
|
|
75
78
|
}
|