I have always wanted to add a touch screen to my home. Recently my family and I moved into our current home where we plan to stay for a long time. This gave me the opportunity to cut some large holes into the walls for a touch screen install.
The screen itself is a 17" LCD made by ELO touch systems, purchased at auction for around $20. Installation was the easy part of this build, I cut a hole slightly larger then the screen between two studs. I then bent a piece of steel to mount to the screens Vesa mount and screw into the studs on each opposing side.
This firmly mounts the LCD to the wall but leaves an unsightly unfinished edge all the way around the screen. My solution to this was simple. An $8 frame from Walmart partnered with a custom cut mat. I used sticky back velcro that is applied to the back of all 4 sides of the frame to attach it to the wall. This allows the setup to easily be taken apart and put back together when needed.
To cable the screen to a remotely located PC I use a USB over cat5 adapter to run the USB 50+ feet away and a high quality 50 foot VGA cable to run the video signal. This runs down to my basement and over to a rack mounted windows PC that will handle a total of 3 of these screens spread across the rest of the house.
Now for the hard part, what interface can I use for the front end. I did allot of research, tried allot of different applications and I came to the conclusion that they all suck at what they can do and are missing allot of what I would like them to do. The only solution moving forward was to build and interface myself.
I new I wanted the interface to have the following features.
- Ability to work as every remote control in the house (if I loose a remote, I want to use the screen)
- Ability to load any media (music, movies, TV) to any TV or piece of stereo equipment)
- Thermastat controls with elaborate settings possible (has to work with PC off)
- Contacts database with phone integration (I want to click on a phone number and have all the phones ring and put through the call)
- Voicemail accessible from the screens
- Security system disarm/arm from screen (also visible output from all motion sensors and door sensors)
- Traffic camera screen (shows the web-cams located on my home towns city streets)
- Front door camera (shows who is at the front door, triggered off the door bell)
- Lighting controls for the whole house (picture of floor layout, touching a room turns the lights on or off)
- Kitchen Screen: Recipe database
- Kitchen Screen: Egg timer
- Kitchen Screen: Grocery List (with integrated bar-code scanner)
- Yellow pages integration (I dont want to have to use the big book)
- Google, Maps, and Calendar integration
- Notes screen (like virtual post-it)
- Weather and inside house temperatures screen
- Pong clock screen saver (saw this on hackaday once, decided I needed one on my wall)
- Family photo screen saver (wall screens turn into a digital picture frame)
- Screen API that allows my home automation system to load screens automatically (so when I wake up in the morning the screen wakes up the monitor and shows me traffic cameras on my way out the door.
So in short I want the screen to do everything I could ever imagine it should be able to do. Here is what I came up with:
The basic interface concept is stolen from a certain phone/tablet that I may own. Many of the icons had to be created or stolen from other sources. When possible I have stolen the graphics as I am not at all talented when it comes to anything artistic.
The interface has an arrow icon at the bottom of the screen with takes you to the next or previous page. I have also created a dynamic calendar icon that changes to reflect the current date and added a click to the bottom of the interface. There is also a hidden area that will bring the user back to the windows desktop if double clicked in the right pattern.
Once an option is chosen from the icons the interface moves to the upper portion of the screen in the form of a ribbon. That ribbon supplies all of the core functionality however some of the less frequently used icons are only available from the main interface page.
The basic media interface is selected by choosing the iphone "utube" icon. This loads an integrated web browser that opens to my preexisting media web page. This interface will be covered on this site under its own heading as it really has to many features to list here.
The thermostat page remotely controls an Arduino circuit that I build separately. This allows the furnace to work regardless this windows machine crashing. The interface has a vertical slider that changes colors as it slides up and down that allow you to set the current set point or override the current rule. There are radio buttons that will also let you set the current heading/cooling/fan modes. Where this system really starts to shine is in the elaborate rules engine where rules can be created based on an infinite set of parameters. (IE: If outside temperature is > 20 and Month < 5 and Month <10 and day is Tuesday then enable the fan and set humidity to 30)
Such elaborate rules obviously wouldn't be required in reality but why not let the system be infinitely programmable. The graph toward the bottom of the first image shows the previous 24 hours of temperature data from each individual room.
Simple calculator application that can also handle full equations. This is very handy to have at your fingertips.
Simple link to google calendar with an integrated keyboard (I have this keyboard integrated into many of the HTTP based integrations). This system will also auto log into google calendar when this page is chosen.
I have not yet installed the front door camera at my new home however i have finished the camera application. This page contains the required camera control software. One of these days I will have time to install the camera 🙂
Where would the average morning be without reading the funny papers. This page strips the daily cartoon images from some online resources and saves them to one of my network drives. It then loads a daily set of images each day. Double clicking on the left of any cartoon will load the previous days cartoon and double clicking to the right will load the next (if its not up to current)
The contacts page leverages a simple MySQL database and my current Asterisk installation to dial numbers directly from the screen. It does this by accessing the telnet based API on Asterisk and having Asterisk place a call to the destination number once a home phone is picked up. New contacts can be added directly from the wall interface using the onscreen keyboard that I have written into the application.
Nothing special here, just a link to shaw's online email. Emails can be written and sent via the onscreen keyboard. Its good for fast email that need to be sent but wouldn't be that convenient to write a long email.
Simple link to google.
I wrote this screen saver several years back after reading about a clock that someone created based on the pong video game. The clock works be playing both the player one and player two sides. Player one is a horrible player and misses the ball most of the time. Player two however is the king of Pong and and wins often. If you haven't figured it out already Player one wins only once per hour, Player two wins every minute. The screen saver knows which side is going to win before the match begins and it knows how many seconds the game needs to play before a winner is chosen. It uses this data to work out a game where the first player plays a fairly good game but will most likely loose. I spent allot of time writing code where the left game pad looks to suck at pong and often only just catches the ball at the last minute. The right game pad however plays a confident game almost always positioning itself in the perfect position ever time.
This page is far from complete and has had its back end written from scratch more then once. The first iteration worked using X10 technology and a CM11K however I found the X10 technology to be less then reliable. I plan on reworking this page again using Insteon or possible the new Phillips color changing bulbs that are being sold at the apple store. Once i finished the back end code I will replace this text based page with a floor layout diagram of my home with hot linked room regions. Clicking on any one region would turn the lights on or off and would color the diagram accordingly. Clicking and holding would Dim or Brighten the lights and would fade the layout diagrams room color to match.
Handy on the way out the door as I look up the locations of destinations that i have never been to.
I have been meaning to code this into the same interface for loading movies and TV shows but for now it remains separate. A nightly job indexes 300+GB of MP3's and FLAC files into a MySQL database. Once indexed this applications will allow me to play the audio files on any AppleTV/XBMC/VLC/Winamp console within my home. I have coded in some options for creating playlists, saving playlists, loading series of playlists etc.
Leveraging Asterisk I was able to create a quick script that shows a log of all incoming and outgoing calls and an associated recording of the complete call (amazingly useful for replaying later with I forget what was said).
Using a Slink-E device that connects to the server via RS232 I was able to save all of the IR codes from all physical remotes. Using the same device with the optional 8 zone expansion adapter I was able to put IR blasters in each room of the house. This allows any remote commands to be executed directly from the screen without a remote. I have also coded in direct serial control for my newer LCD displays to avoid some of the problems with IR reliability.
Notes (Scratch Pad)
Simple notepad utility where multiple text files can be created and saved. I use this to store allot of the information that i need to document and access often.
When I moved into my home there was an existing alarm system pre installed. Wiring the system into an Ethernet enabled arduino was an easy modification that allows me to integrate alarm arm/disarm and monitoring directly from the display. Alarm modes can also be controlled from this interface. (Home/Away)
This is another project that took on a mind of its own. I have an auctioneer friend that got me bar-code scanner on the cheap. The interface allows my wife to scan any items that are empty, the system will look up the bar-code online and add the item to the shopping list. Items can also be added manually. Where the system really starts to shine is in its ability to sort the shopping list by the isle layout in each store. If Co-op is chosen it will place all items in the order they would be found in the isles, if the store is changed to Costco it will change the item order to match. It does this by storing store profiles in the database that map to meta data pulled from the online bar-code database.
This screen saver turns the screen into a picture frame. It grabs random family photos from a network share and displays it on the screen for 2 minutes at a time before moving on to the next image.
The city I live in has dozens of real time traffic cameras available on the Internet for checking traffic congestion. This screen allows me to check those cameras on my way to work. I have coded this screen to automatically appear 5 minutes after my alarm clock goes off until after the front door is closed. This allow the screen to be seen on my way down the stairs in the morning.
A simple script that accesses the data stored by Asterisk and allows voice-mails in multiple mailboxes to be played via nearby phones, deleted, moved or reviewed. The remote playback is accomplished by using a custom IVR integrated into asterisk and leveraging the telnet remote interface for Asterisk.
Simple Yahoo XML scrape and display, Shows the 2 day forecast and all current day stats.
Simple Yellow Pages integration by loading the page in a browser control. This allows me to dispose of the massive book that I used to have to store.
Going to Sleep
This icon places the monitor into power saving mode. (saves power). The system will do this automatically if the screen is not touched for an hour.
Items left to finish
Sync, plugging a usb key or HDD into the USB port located under the screen would sync all incoming or outgoing content into its corresponding network folder. IE Movies/Audio/Documents
Kitchen Timer (Egg timer type interface)
Game timer (keeps track of how many hours of video games the children have played this day/week/month
Simple Postit (wife could leave me a message, screen would go to sleep but opening the front door or any motion on the motion sensors would turn the screen on and load this postit. Think "I went to pick up the kids, be back in an hour")
Statistics (reports of electical usage for the home by breaker, temp by room, etc)