After prototyping quite a lot, I finally came up with a simple architectural draft of the software for the first version of my home automation project.
As this is a 10,000 feet view, I do not bother about the technical details for right now. I thought of two main components TheWeb and TheHub.
TheHub would be the one application, collecting data all the time from an arbitrary number of local sensors and controlling various actuators. At the same time it would push data to TheWeb to make it accessible to the outer space. I have thought of pros and cons about a push, a pull or even a pub/sub mechanism. For now pushing data will be much easier. Also, as this won’t be my main interface for interacting with the environment, there is no need to be up to date by the second.
The second component, TheWeb, will be a REST-architectural style Web service I will push the data from TheHub to, and which will provide data to the actual Web application. Also, the service will chat with various external services out there in the wild.
I was recently asked which notation I am using to draw my sketches: It’s called WebComposotion Architectur Model or simply WAM. It’s quite a simple notation for outlining architectural designs and dependencies in distributed and federated systems which include organizational boundaries. There is a series of publications, introducing the concepts behind WAM (my my book deals quite a lot with WAM as well):
- A Modeling Approach to Federated Identity and Access Management
- Modeling Federations of Web Applications with WAM
- Capturing the Essentials of Federated Systems
- Capturing the Essentials of Federated Systems (Poster)
- FDX – Federating Devices and Web Applications
- Modeling and Managing Federated Web-based Systems
- Enabling Architecture Changes in Distributed Web-Applications
- Modeling Resources in a Service-oriented World
In a nutshell, it is supposed to be a very easy to draw language to communicate architectural decisions. Maybe that’s something for another post, though.
With this basic design, I am ready to come up with some bits soon.