Wednesday, July 22, 2015

Home Automation - Farewell Old Friend

Everything has to end at some point. Here and now, my very first project ends.
The one that made me familiar with ┬Ácontrollers.
The one that brought me to electronics.
The one that initiated me as a tinkerer.


HardWareHub





Actually, that is not true - it is the other way around. I started the project because I wanted to do something with ┬Ácontrollers and wanted to dive into the world of electronics. What I was missing at that point was a project; a purpose for my tries. That was HardWareHub.

While it is not strictly about sound creation, it is connected with the purpose of this blog in the wider sense and deserves a comment here: HardWareHub was a home automation system. When I started playing music in iTunes, I wanted my amplifier to automatically turn on, switch to the correct input source and to turn the bass down if it is late at night. Similarly, if I received a phone call, the volume faded out and iTunes went on pause. If the TV got turned on, the same actions happened, in case music was playing, but the amplifier switched to the TV source.

It worked quite well for a couple of years, but like many projects without a defined goal, it happened to be in a constant state of changes. At one point I got distracted by other projects and it happened to be left with some functionality temporarily turned off. Consequently, I happened to use it less and less lately and I want to officially focus on more current projects now. When I decluttered some cables in my living room yesterday, I removed the Arduino, the heart of HardWareHub, to give it a new purpose.



Some details for those of you interested in similar projects. HardWareHub consisted of three parts:
  • an Arduino managing the hardware side and communicating with my living rooms appliances by mimicking the IR commands of their remotes
  • an applescript continuously running as a demon on my computer (which never gets turned off anyway) communicating with the Arduino and assessing states of iTunes, Plex, router (Fritzbox), browser (yes, it also worked with youtube), brightness of my computer screen, etc.
  • two javascript widgets to serve as GUIs
last but not least, however I would not consider this a real "part", there was a USB controlled power outlet (Gembird SIS-PM) to switch lights and some devices on/off.



Implemented features included:
  • full control over a stereo amplifier through IR commands
  • full control over a projected using similar commands
  • responsive to their native remotes
  • responsive to my own IR commands
  • control over room lights through USB controllable outlets
  • auto mount of my NAS on startup
  • iTunes control through applescript
  • PLEX control through HTML commands
  • "knowing" if youtube is playing by measuring the performance burden of the web browser
  • responding to phone calls (ingoing and outgoing) though an api of the router (Fritzbox)
  • evaluating the time of the day and adjusting volume and bass/treble settings
  • action based GUI (e.g.. Movie mode turns on the stereo and the projector, switches to the correct input sources, starts PLEX, turns off iTunes, turns the lights off, ...
  • device based GUI for individual access to all features
Widget to control the individual devices


Good bye, it was fun and I have learned a lot thanks to you - now it is time to move on...


Post a Comment