The end is near – shutting down my old Home Automation system comes very close now; this calls for a look ahead – a glimpse of the end result, of what the user will see of all the work that has been done in the last six months.
I’ve started testing one of the last big drivers which still have to be moved from my Delphi/Windows based Home Automation system to the new Raspberry Pi/Node.JS based one: Zigbee. I was lucky to find a really great xbee-api which takes care of all the low level stuff with all the different frame types and all; all I had to do was add an additional layer between the xbee-api and my system (e.g. add MQTT functionality, parsing the sensor data inside the type 0x90 frames) and it has been running flawlessly for the last 72 hours.
I’ve been tinkering with a lot of different things since the last 1½ years or so, only to find what suits me best – regarding hardware, programming languages, development environments and tools to use. Six months ago I knew I had found my ideal combination and gradually started to replace parts of my old (and still operational) current system with parts running on Raspberry Pi with Node.JS and MQTT as the main building blocks. Gradually, one step at a time. No rush. The users (i.e. me & the rest of the family) didn’t even notice those replacements – service level is just as good as before and the amount of human intervention to keep the system healthy has decreased to what I regard as the least possible. For instance, I can now replace a LAN switch without any problem – after the new switch is operational, the system will recover itself within 2 minutes, all by itself. Before, the best thing to do was a complete restart… Replacing the batteries in the sensors is something I still have to do myself though… and fixing bugs in the code of course – but that’s about it 🙂
Some of the choices I made were not the ones I anticipated. And some of them should even be a warning for others to not be guided by what is hot – take your time to select your own ideal mix of tools.
Back to the topic now…. the last phase in this whole transition will be rebuilding the User Interface(s). A summary of what is being used to monitor & control everything and their current status:
- VB.Net application running on a touchscreen: still working fine, migration from UDP broadcast to MQTT has been completed a long time ago.
- Philips Pronto TSU9600: done – all I had to do was change an IP address, from the old Delphi XMLRPC server to the one of the Raspberry Pi which runs the new XMLRPC server.
- Website: not started yet.
- Mobile UI: no modifications needed, yet.
Being able to gradually transform my Domotica system from Delphi/Windows to Node.JS/Linux (and from a rather high hardware/power usage demand to a minimalist one) without any noticeable hick-up in terms of ‘service level’ is quite an achievement if I may say so. Every week another component of my old system is being disabled and its role taken over by the version developed in Node – seamless. But will I be able to do the same with the last part that hasn’t been done yet, the website I’m running to show what Home Automation is about? Rebuilding parts of it while keeping it fully functional looks like an even bigger challenge.. but let’s first have a look at what I want for the future.
- As real-time as possible.
The era in which I (as a user) had to wait for the next ‘poll’ to see what is happening in our house is long gone – if the back door of our house is opening or closing, I want to be able to see that immediately, wherever I am.
- One interface for all.
As I said, I’m running a website as some sort of showcase, just to show what Domotica/Home Automation is all about, what you can do with it etcetera. Being lazy by nature, I don’t like the prospect of maintaining multiple websites – the showcase and another one for us, our family with control added to it.
One site for all; whether it’s a smartphone, tablet, laptop or a desktop PC with 2 HD-resolution screens attached to it. The UI should adapt to what the device has to offer.
- Easy to extend.
The road from newly added functionality working technically to being fully deployed to the user is one of those things I tend to forget; making things work is what makes me tick, actually being able to use it is something I just seem to ‘forget’, too often. That’s why we can listen to voice-mails on the touchscreen in the living-room, but not on our smartphones. So I need to find a way to easily extend a user interface with new functions; like some sort of new widget.
So I’ve been searching the net for some time to find the right tools to build that User Interface I want and came up with the following list of components that might be of help.
From the Express site: “Express is a minimal and flexible node.js web application framework, providing a robust set of features for building single and multi-page, and hybrid web applications.” I’ve done some small things with Express during the last few weeks and I think it can be useful – cause I know now how fast a web site/-application can grow once you’ve got things going.
The easy switching between real-time frameworks (do you know how they will evolve?) and the auto reconnect feature is what I like the most about Primus. I already have some sort of auto reconnect, but it doesn’t always work that well – so far, Primus does it better than me 😉
A Model–view–controller (MVC) framework with a lot of features to build feature rich and easily maintainable web applications. Once you’ve made your first working example with AngularJS, you’ll know what I mean… why did I ever do things different!
I could now present a link to what I’ve created so far (a mess, lol), but that would be a bit premature; I still have too many things to learn, test and think through before I can say that I’ve again found the ideal mix for myself. So things can still change.. Until then, I’ll keep all those ‘site snippets’ to myself and keep on developing some of the most essential building blocks until I can safely assume I picked the right tools.