-
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 einheitlicher Schnittstelle geschaffen.
Neue Features für die Bridge können somit als Plugin angebunden werden.
classDiagram
Loader --> "1" Core : creates
Loader ..> ICore : communicates
Loader --> "1" Plugin1 : creates
Loader --> Plugin2 : creates
Core --> "0..n" IPlugin : communicates
Core ..|> ICore : implements
Core ..|> IAppState: implements
Core ..> IAppState
EventPublisher ..> EventReceiver : sendsMessages
IAppState -- ApplicationState
Plugin1 ..|> IPlugin : implements
Plugin1 --> Receiver
Plugin1 --> EventPublisher
Plugin2 ..|> IPlugin : implements
EventReceiver ..|> IReceiver
EventPublisher --|> IPublisher
Plugin2 --> IPublisher
Plugin2 --> IReceiver
EventPublisher ..|> IPublisher : implements
EventReceiver ..|> IReceiver : implements
class Core{
}
class ICore{
<<interface>>
+run()
+getCore()
}
class IAppState{
<<interface>>
ApplicationState
+setState(ApplicationState state)
+getState() : ApplicationState
}
class ApplicationState{
<<enumeration>>
}
class IPlugin {
<<interface>>
+load()
}
class Loader {
+ICore core
}
class IPublisher {
+dummy()
}
class IReceiver {
+dummy()
}