What’s a MetaWatch ?
Well, it’s a watch obviously, kind of a smart watch but not actually that smart, basically it’s a remote display for other devices to write to, connections are made via Bluetooth using SPP (a serial port protocol).
Still, leaving it rather dumb was a smart move, so I don’t really know what to call it, it’s pretty cool that’s for sure :)
Anyhow, after few delays, my MetaWatch (which I had originally pre-ordered back in May) finally shipped and I had almost a week now to play with it, here’s what I came up with so far.
Environment and Tools
First off, this is what I used:
- an iMac running 10.7 Lion
- PyMetaWatch (my fork for Lion and serial support)
for communicating with the watch
- Reemote Server (custom build)
for controlling media playback
- OpenAMI on a router running openWRT
for controlling home automation
- Growl and small proxy plugin (code coming soon)
for desktop notifications
Multimedia – Reemote
I really do love to remote control things, so the first thing I wanted to do once the basics were implemented was to hookup PyMetaWatch to the Reemote Server so that I could control media playback in my entire apartment.
If you don’t know Reemote, check it out, it’s a iOS/Mac combination of Apps that provides remote control for Airfoil, which is the streaming solution for the Mac (and btw also named one of MacStories’ this year’s Must-Have Apps.)
However, what this allows me to do is to control whatever media player (e.g. iTunes, Spotify or Last.fm) is currently running on my Mac and since Airfoil is sitting in between, the audio gets streamed to individual speakers around my apartment as well allowing me to change tunes from my watch while walking to the kitchen and back :D
What’s still missing though are watch-controls for the speakers itself, so that individual speakers can be turned on or off.
How it works.
It’s a quick hack so it’s fairly simple, the screen controls are static, so what’s displayed on the screen is just a pre made image.
Remote control was already provided by the Reemote Server, so all that was left was to make the watch buttons trigger the corresponding actions on the server.
Luckily Remote is using JSON over HTTP so it can be easily interfaced from the command line using curl.
So basically that’s it. I’m using pywm.py (from PyMetaWatch) in idle mode with the buttons mapped to shell commands that curl a certain url on the Reemote Server (see pymw.cfg)
Home Automation – Light Controls
Next up was Home Automation, luckily this was just as simple.
The screen was pre made in photoshop (yes photoshop!) and the buttons mapped to shell commands triggering the corresponding actions on the openAMI Server which then does all the all the work.
Notifications – Growl
Since the watch is just perfect for displaying notifications, I figured integrating Growl would be a quick and easy way to get all kinds of notifications on the watch.
To do so I’ve implemented a simple Growl Display Plugin that acts as a proxy for notifications so they can be displayed on a regular Growl Display and the watch at the same time.
The plugin presents itself as a Display, if it’s set to the default style, all notifications will get sent to the watch using pywm.py and additionally passed to a regular display as well. If you know prowl, it works just the same.
Code will be released soon.