-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Maximilian Burr + Cedrick Becker
Eine Smarthome Bridge, ermöglicht es verschiedene Smarthome Systeme unterschiedlicher Hersteller durch Plugins anzubinden. Dies bedeutet, dass die Benutzer dieser Bridge die Freiheit haben Geräte unterschiedlicher Marken und Modelle miteinander zu verbinden. Dadurch kann ein nahtloses Smarthome-Erlebnis geschaffen werden und hilft den Dschungel an am Markt erhätlichen Systemem etwas zu lichten. Die Smarthome Bridge bietet durch die Plugin Funktionalität eigene Möglichkeiten ein Frontend anzubinden. Dazu bietet die Bridge ein Interface an, was von anderen Programmteilen implementiert werden kann, um an die Bridge anzukoppeln.
Die Anwendung wird in mehrere unabhängig lauffähige Teile getrennt. Die unabhängigen Module werden mittels eines Buildsystems unabhängig voneinander verwaltet. Dazu verwenden wir das Buildsystem Maven für Java.
Der Kernteil übernimmt die Kommunikation und Verwaltung der einzelnen Systeme. Er verwaltet eine Konfiguration und kennt alle Geräte. Übernimmt die Kommunikation und die Transformation der Nachrichten für die einzelnen Smarthome Systeme die mit der SmartHome Bridge angesprochen werden.
Um die Funktionalität des Kerns unabhängiger von Drittbibliotheken zu gestalten, wurde mithilfe der Clean Architecture eine Plugin mit einhietlicher Schnittstelle geschaffen.
classDiagram
Loader --> Core : creates
Loader ..> ICore : communicates
Core "1" --> "0..n" IPlugin : communicates
Loader --> Plugin1 : creates
Loader --> Plugin2 : creates
Core ..|> ICore : implements
Plugin1 ..|> IPlugin : implements
Plugin1 --> EventBus_Observer
Plugin2 ..|> IPlugin : implements
EventBus_Observer ..|> IPublisher : implements
EventBus_Observer ..|> IReceiver : implements
Loader --> EventBus : creates
class Core{
+dummy()
}
class ICore{
<<interface>>
+run()
+getCore()
}
class IPlugin {
<<interface>>
+load()
}
class Loader {
+ICore core
}
class IPublisher {
+dummy()
}
class IReceiver {
+dummy()
}
class EventBus {
+dummy()
}