Wenn man mit HomeKit und Homebridge aktiv neue Funktionen und Plugins für die lieben Gadgets austesten möchte, stellt sich rasch die Frage, wie man eine neue Version oder auch Setups eines noch instabilen Homebridge Plugins testen kann ohne die bereits bestehende, fein säuberlich aufgebaute HomeKit Installation komplett zu zerschiessen.
Dank der Flexibilität von HomeKit und Docker ist dies jedoch einfacher als gedacht. Was es dazu braucht:
- Ein neues "Haus" in HomeKit, und
- Eine unabhängige Laborinstanz von Homebridge
Das praktische an HomeKit selbst ist, dass man mehrere "Häuser" resp. Umgebungen definieren kann und dort verschiedene HomeKit fähige Geräte einbinden kann.
Installiert man nun Homebridge und die gewünschten Plugins ein zweites Mal, so kann man diese Test/Laborumgebung einfach dem zweiten Haus zuweisen und hat so einen zweiten, unabhängigen Zugriff aus HomeKit auf dieselben physischen Geräte (falls eingebunden über das korrekte Plugin). Und weil man auf dem iPhone Zugriff auf alle Häuser hat, kann man nach Lust und Laune alle Funktionen durchtesten oder neue Versionen austesten ohne befürchten zu müssen, dass eine zerschossene Konfiguration mit Geistergeräten das ganze schöne Setup kaputt macht.
Nun kann mann diese Testumgebung einfach auf dem Computer laufen lassen wenn man sie braucht. Noch eleganter und auch praktischer wenn man längere Tests fahren will, ist ein Setup mit dem Homebridge Docker Container: Achtet man darauf, dass man für die Laborumgebung die entsprechenden Ports von Homebridge und auch relevanter Plugins ändert, so kann man zwei oder sogar mehr Homebridge Installation problemlos nebeneinander laufen lassen.
Definiert man in der Datei package.json
in der Laborinstallation von Homebridge Docker mit dem sogenannten Tag auch noch, dass die jeweilige Testversion installiert wird, so hat man immer die aktuellste Testversion am Laufen. Nifty! 😁
Für eine kleine DingZ Testumgebung sieht das package.json
dann in etwa so aus:
{
"private": true,
"description": "This file keeps track of which plugins should be installed.",
"dependencies": {
"form-data": "^3.0.0",
"homebridge-dingz": "testing",
}
}