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):
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.
For a Web Service providing some REST-style URIs to access the data, I decided to use the ASP.NET MVC 4 Web API. Once developed, tested and deployed I experienced a mysterious 404 on my production server.
The Web API started originally as WCF Web API at CodePlex and is finally fully integrated within the latest .NET framework:
“ASP.NET Web API represents the joint efforts of the WCF and ASP.NET teams to create an integrated web API framework. You can get the bits and find articles, tutorials, samples and videos on the new ASP.NET Web API home page. All you have to do is to..”
The tutorials and examples for the ASP.NET Web API are overall easy to understand and you probably get access to the technology very quickly. After I set up my first Web API, which worked absolutely perfect on Windows 8, developed using Visual Studio 2012 and tested with the IIS Express, I was not able to get the bits executed on the deployment server. It’s a Windows Server 2008 R2, IIS 7.5 and a whole bunch of stuff installed using the Web Platform Installer.
Make sure the .NET Framework is installed, probably you missed to install the 4.5 framework on the deployment server. As IIS is set up already, once again it is necessary to register ASP.NET for the latest framework using
Even now, I got the 404. Eventually, I got the tip to check out how the routing of extensionless URLs work in ASP.NET. By adding
<modules runAllManagedModulesForAllRequests="true" />
to the web.config file of my Web API the routing seems to work fine now.
A couple months ago, we got a second 24” monitor for each developer at the company I worked for. At that particular time, some of the developers still used some old 15” monitors as a second monitor. I spend quite some time to explain why it is important for companies to provide a
good great work experience. You should aim at making your employees feel comfortable at work. Following Starbuck’s a third place between work and home employers should try to keep the workspace as attractive as possible to their folks. Starbuck’s would not succeed with over 17,000 stores if the place where you can stay would not be attractive, though.
Said that, below is what my current home office workplace looks like right now. My Almost-Retina-But-Then-Again-Bought-To-Early-MacBook Pro, two external monitors with a total resolution of 1920×1200 + 1680×1050 + 1920×1200 and an Icy Box for easy swapping external 2.5” and 3.5” HDD drives and the ElevationLab low friction iPhone dock, I backed at Kickstarter.
I run both, Windows 8 and MacOS Mountain Lion on my MacBook, depending what I need to do, I switch between both operating systems, all peripheral devices fully supported.
To get the third monitor working, I recently got a Kensington Universal Multi-Display Adapter from Amazon.de. Before attaching the device, make sure to download and install the latest drivers (both, for Windows 8 and Mountain Lion) from the DisplayLink website. If you do not install these drivers on Windows 8 beforehand, you might experience problems as there are already drivers offered by Windows Update. DisplayLink already provides support in case you experience any issues here.
I was quite surprised, DisplayLink already offers Windows 8 drivers. Quite skeptical about the external graphics card using USB as I read a lot about latency and quality, both, the quality of the device as well as the support for Windows 8 and Mountain Lion are just great. I do not experience any latency (I do not play games on the external monitor, though) so far and the quality of the output absolutely satisfying.