Repositories
Welche Adapter zur Verfügung stehen, wird in sogenannten Repositories hinterlegt. Die Liste an verfügbaren Repositories kann man selbst ändern, um zum Beispiel ein externes Repository zu nutzen. In den allermeisten Fällen wird dies aber niemand machen, sondern nur die Standard-Repositories nutzen.
Generell gibt es im Standard zwei verschiedene Adapter-Listen (Repositories), welche vom ioBroker-Team angeboten werden:
stable
(früher auchdefault
genannt) - wird täglich aktualisiert und hier bereitgestellt:http://download.iobroker.net/sources-dist.json
beta
(früher auchlatest
genannt) - wird täglich aktualisiert und hier bereitgestellt:http://download.iobroker.net/sources-dist-latest.json
Theoretisch ist es möglich, weitere Repositories zu hinterlegen. In der Praxis nutzt dieses Feature aber kaum jemand.
Pflege der Listen
Beide Listen werden in diesem GitHub Repository (ioBroker.repositories) gepflegt.
stable
=sources-dist-stable.json
beta
(bzw. früherlatest
) =sources-dist.json
Im stable
werden getestete Adapter aufgenommen. Hier wird für jedes Repository eine genaue Version angegeben.
Ein Eintrag sieht beispielsweise so aus:
"admin": {
"meta": "https://raw.githubusercontent.com/ioBroker/ioBroker.admin/master/io-package.json",
"icon": "https://raw.githubusercontent.com/ioBroker/ioBroker.admin/master/admin/admin.png",
"type": "general",
"version": "5.1.25"
}
Wie man sieht, ist vom Admin-Adapter in diesem Beispiel die Version 5.1.25
als stabil (stable
) definiert.
Es kann gut sein, dass auf npm mittlerweile neue Versionen vergeben wurden und diese auch veröffentlicht ist. Diese Version bekommt man als Nutzer angeboten, wenn man das beta
Repository wählt.
Im Gegensatz dazu hat der Eintrag im beta
Repository keine definierte Versionsnummer:
"admin": {
"meta": "https://raw.githubusercontent.com/ioBroker/ioBroker.admin/master/io-package.json",
"icon": "https://raw.githubusercontent.com/ioBroker/ioBroker.admin/master/admin/admin.png",
"type": "general"
}
Bei dem beta
Repository wird immer die letzte Version zum Update angeboten (von npm).
Dieses Vorgehen hat den Vorteil, dass man als Adapter-Entwickler genau steuern kann, welche Nutzer welche Version angeboten bekommen. So können neue Versionen zwar veröffentlicht werden, aber „stable
-Nutzer“ werden erst später auf eine neue Version gebracht, wenn diese von vielen „beta
-Nutzern“ bereits getestet wurde.
Bemerkung
Es kann vorkommen, dass einige Adapter zwar im beta-Repository vorhanden sind, aber noch nicht im stable-Repository zu finden sind (weil noch in Entwicklung bzw. noch keine stabile Version verfügbar ist)

Bereitgestellte Daten
Die offiziellen Repositories werden regelmäßig aktualisiert und auf einem separaten Webserver bereitgestellt. Hier wird der Eintrag mit weiteren Informationen aus der io-package.json angereichert.
Bemerkung
Die Aktualisierung des beta-Repository findet 2x täglich planmäßig statt (02:00 und 14:00 Uhr UTC). Die Logik dieses Prozesses ist nicht öffentlich dokumentiert.
Unser Beispiel-Eintrag für den Admin-Adapter sieht dann wie folgt aus (zur Übersichtlichkeit wurden Übersetzungen in weitere Sprachen aus dem JSON gelöscht):
"admin": {
"name": "admin",
"version": "5.1.25",
"titleLang": {
"en": "Admin",
"de": "Admin"
},
"title": "Admin",
"connectionType": "local",
"dataSource": "push",
"news": {
"5.1.25": {
"en": "Corrected some errors reported via sentry and the github issues",
"de": "Einige Fehler, die über Wache und die Github-Probleme gemeldet wurden, korrigiert"
},
"5.1.24": {
"en": "Corrected some errors reported via sentry and the github issues",
"de": "Einige Fehler, die über Wache und die Github-Probleme gemeldet wurden, korrigiert"
},
"5.1.23": {
"en": "Corrected some errors reported via sentry",
"de": "Einige Fehler behoben, die über die Wache gemeldet wurden"
},
"5.1.22": {
"en": "Corrected some errors reported via sentry",
"de": "Einige Fehler behoben, die über die Wache gemeldet wurden"
},
"5.1.21": {
"en": "Corrected some errors reported via sentry",
"de": "Einige Fehler behoben, die über die Wache gemeldet wurden"
},
"5.1.20": {
"en": "Corrected some errors reported via sentry",
"de": "Einige Fehler behoben, die über die Wache gemeldet wurden"
}
},
"desc": {
"en": "The configuration of ioBroker via Web-Interface",
"de": "Die Konfiguration von ioBroker über das Web-Interface"
},
"docs": {
"en": "docs/en/admin.md",
"ru": "docs/ru/admin.md",
"de": [
"docs/de/admin.md",
"docs/de/admin/tab-adapters.md",
"docs/de/admin/tab-instances.md",
"docs/de/admin/tab-objects.md",
"docs/de/admin/tab-states.md",
"docs/de/admin/tab-groups.md",
"docs/de/admin/tab-users.md",
"docs/de/admin/tab-events.md",
"docs/de/admin/tab-hosts.md",
"docs/de/admin/tab-enums.md",
"docs/de/admin/tab-log.md",
"docs/de/admin/tab-system.md"
],
"pt": "docs/pt/admin.md",
"nl": "docs/nl/admin.md",
"es": "docs/es/admin.md",
"fr": "docs/fr/admin.md",
"it": "docs/it/admin.md",
"pl": "docs/pl/admin.md",
"uk": "docs/uk/admin.md",
"zh-cn": "docs/zh-cn/admin.md"
},
"materialize": true,
"mode": "daemon",
"platform": "Javascript/Node.js",
"loglevel": "info",
"icon": "https://raw.githubusercontent.com/ioBroker/ioBroker.admin/master/admin/admin.png",
"messagebox": true,
"enabled": true,
"extIcon": "https://raw.githubusercontent.com/ioBroker/ioBroker.admin/master/admin/admin.png",
"keywords": [
"setup",
"config",
"update",
"upgrade",
"system",
"konfiguration",
"administration",
"einrichtung",
"wartung"
],
"compact": true,
"readme": "https://github.com/ioBroker/ioBroker.admin/blob/master/README.md",
"authors": [
"bluefox <bluefox@ccu.io>",
"hobbyquaker <hq@ccu.io>"
],
"dependencies": [
{
"js-controller": ">=3.2.16"
}
],
"type": "general",
"license": "MIT",
"logTransporter": true,
"stopBeforeUpdate": true,
"wwwDontUpload": true,
"nogit": true,
"welcomeScreenPro": {
"link": "admin/index.html",
"name": "Admin",
"img": "admin/img/admin.png",
"color": "pink",
"order": 5,
"localLinks": "_default",
"localLink": true
},
"localLinks": {
"_default": {
"link": "%protocol%://%bind%:%port%",
"pro": true
}
},
"plugins": {
"sentry": {
"dsn": "https://9d2aaf29332a4999b133c693f43203b9@sentry.iobroker.net/18"
}
},
"jsonConfig": true,
"adminUI": {
"config": "json"
},
"node": ">=10.0.0",
"meta": "https://raw.githubusercontent.com/ioBroker/ioBroker.admin/master/io-package.json",
"published": "2014-12-04T18:45:44.907Z",
"versionDate": "2021-08-15T12:14:58.829Z",
"stars": 232,
"stat": 49433,
"issues": 118,
"score": 1,
"weekDownloads": 6687,
"repoTime": "2021-10-05T02:19:59.616Z",
"latestVersion": "5.1.25"
}
Einstellungen im ioBroker
Der ioBroker kann zwar mehrere Repositories verwalten (zum Beispiel über den Admin-Adapter), aber nur ein einzelnes Repository kann aktiv sein.
Das aktive Repository wird dabei im Objekt system.config
im Attribut common.activeRepo
hinterlegt. Siehe System-Config.
Update-Prozess
Das konfigurierte/aktive Repository wird regelmäßig geprüft. Dafür wird die jeweils angegebene URL geändert, sodass stattdessen eine Hash-Datei abgerufen wird.
urlOrPath = urlOrPath.replace(/\.json$/, '-hash.json');
So wird also z.B. statt http://download.iobroker.net/sources-dist.json
erstmal http://download.iobroker.net/sources-dist-hash.json
abgerufen. Aktuell hat die Datei folgenden Inhalt:
{
"hash": "a3276c4275647354fa9f81748dde7941",
"date": "2021-10-04T14:21:02.483Z",
"name": "sources-dist.json"
}
Dieser Hash wird mit dem aktuellen Hash in system.repositories
verglichen. Sollte der Hash abweichen, wird die eigentliche JSON-Datei geladen. Dies wurde so gelöst, um den Traffic von tausenden anfragenden Systemen zu reduzieren.