This page has a bunch of my Chumby projects:
ChumbySpy (random security cams from around the world)
Chumby Jukebox (new version) (college and community radio on a Chumby)
Chumby Jukebox (old version, not a widget)
ChumbyRemote (control Chumby from Windows)
Webcam Template (easy way to build simple webcam apps)
I recently purchased a Chumby (February 2008) and have to say I love it. It's a tiny computer, about the size of a very small purse, and is built into a beanbag, and everyone loves beanbags. But far and away the best feature is the philosophy that produced it. I'm so used to dealing with companies that fight against people using their products in unintended ways. For example, Canon just changed the way their firmware loads onto their cameras solely to derail the CHDK 3rd party firmware project. Crazy! That's like General Motors intentionally silencing someone who figured out how to get 100 mpg from one of their cars. Oh wait, didn't that already happen?
Anyway, Chumbies feel like sanity. The people giving tech support are hackers themselves, and they encourage you to make the most of your gizmo. And I'm all about making the most of gizmos. Poking around the control panel today I found a hidden screen with the words "We believe in the users". Nice.
That's not to say they don't have their problems: there's a big whiff of Web 2.0-style VC funding going on, so the company is pretty protective of their image, which translates to only letting people post very limited programs on the Chumby website. But that's ok because they invite you to do whatever you want outside of their ecosystem so I guess I shouldn't complain too much. A phrase that I hear often on their forum is "the exits are clearly marked", meaning there's lots of documentation on how to use your Chumby outside of the "widget" universe, but the hacks aren't sharable on any public forum. In my opinion the sharable widgets are a bit too restricted, and I question whether the Chumby will be able to compete with modern smartphones under its current security-obsessed philosophy, but what the hey its still a nice gizmo.
My first and favorite widget, it displays random security cameras from around the intershnitzel. Certain security camera brands have unique url patterns and are therefore findable via Google (other search and other search). Many of them aren't intentionally public so you get the occasional voyeuristic moment, but mostly its oddly surreal security cameras from around the world, tagged with their geographic location when possible.
Here it is on Chumby.com. I like watching the popularity rating change. I still can't believe that any other widget would be more popular, but then again I'm an egomaniac.
Here's another interface, via a web browser. Click the camera's thumbnail to stream it. Coolio, this is pretty much my favorite at the moment.
Here's a funny one: below left is the original logo I used for ChumbySpy. Note the Chumby logo at the top left. Before they'd post it on their site they made me remove that, so I replaced it with the one on the right. Sheesh.
This just in: my widget made the official Chumby blog... Ahead of the Washington Post even... Multinational media conglomerates have nothing on ChumbySpy...
I posted all the sourcecode, including my Python script that searches for cameras. ChumbySpy source code.
- Touch the channel number at top right to see some options. You can toggle autocycling (moving to the next camera automatically after 15 seconds), randomizing (moving to a random camera next), and showing the URLs of the cameras at the bottom of the screen
- A couple of these options are accessible through hidden shortcuts: touching the top left of the screen toggles autocycling so you can easily stop autocycling if you see something interesting, and touching the bottom of the screen shows/hides the URLs. Left and right of the screen go to previous and next camera.
If you don't have a Chumby, you can always see it on Chumby.com.
Hallelujia, they updated the Chumby firmware so widgets can now play shoutcasts, so I made a college radio tuner widget. Its not perfect by any means, and constantly rebuffers or doesn't start playing on its own, and isn't quite reliable enough for me to even put in my shower room, but still.
That's the old version, here's the new version (I'm leaving the old one on because there's things I like better about the design):
It turns out a much better way to run this is as a non-widget, off a thumbdrive. That way it can play streams using the infinitely more reliable BTPlay program on the Chumby, rather than streaming through Flash, which almost sort of kind of works. As far as why Chumby Widgets can't do this natively, that's a question for the gods.
To run it on a thumbdrive:
1) Download the files.
2) Copy jukebox-ms.swf to a USB key and insert in your Chumby
2) SSH into your Chumby and stop the control panel by typing stop_control_panel (see here for notes on this)
3) cd /mnt/usb
4) chumbyflashplayer.x -i jukebox.swf
1) Copy jukebox-ms.swf and debugchumby to the root of a thumbdrive
2) Plug the thumbdrive into the back of your Chumby and turn it off and on
I posted all the source code here: source code.
[I made this ages ago, its a miracle if it still works, but who knows, posted here for convenience or because I'm too lazy to remove it].
To me the best thing about the Chumby is its ability to tune in to streaming internet radio. It has an audio out jack so you can plug it into a stereo, but oddly enough its little speakers sound just fine while I work. I kept needing to adjust the volume, so I made a little program that I'm calling ChumbyRemote. It doesn't do much: it runs on my computer (Windows) and loads a radio station and controls the volume of the Chumby. Note that it can also control Winamp if you select Winamp from the pulldown at the bottom of the window, so I guess it could be useful even if (gasp) you don't have a Chumby. It pulls its radio station list live from radiogizmo.org.
Update: it can now also make your Chumby (or Winamp) speak a phrase via TTS.
You can see a screencap here. Note that you can turn off the hanging guy in the configuration file. Here's what the interface looks like, I can't help it, makes me giggle:
Also note that since it's controlling the Chumby via SSH, it's super slow. Like about 3 seconds before the Chumby reacts kind of slow. But that's ok for my use, especially since there doesn't seem to be a better way.
And note that this is definitely buggy... I made it in a couple of hours as a goof and didn't iron things out. I'm told it doens't work on Vista, and if it doesn't work at all, try manually puttying into your Chumby to set the keys. I dunno.
The first biggie is you need to tell ChumbyRemote the IP of your Chumby. For now just try to send a command to your Chumby, it'll time out and should open c:\program files\ChumbyRemote\configuration.ini, where you'll enter the IP address. There's instructions in the ini file for doing that, but it's in the same place as turning on SSH, which is the next step.
The other biggie is you need to enable SSH on your Chumby by tapping Settings --> Chumby Info --> then tap that tiny Pi symbol at the top right and click SSHD. You can make it so this always starts up by following the instructions here.
And you can make it so the ChumbyRemote window isn't "always on top" in the configuration.ini file.
And if you're going to use the text-to-speech part, you need to make sure you don't have a firewall blocking port 80, since it uses a webserver to communicate with the Chumby.
And if you have Winamp installed, select "Winamp" from the pulldown at the bottom and you can make Winamp talk and play radio stations.
If you have problems, go to c:\program files\ChumbyRemote and run the ChumbyRemote-Debugger.exe, which will run with a console window and hopefully give some idea about what's going wrong. If the window just opens and closes, maybe run it from a command prompt. Feel free to email me with any issues.
Chumby can play internet streams from SSH, but you have to give Chumby the URL of the actual stream, which can be really long and hard to find, not to mention hard to remember and type. So I made a little interface to my goodradio.org database of internet and college radio stations that works like this from a Chumby SSH session:
The above would play wfmu. This plays a random station from the database:
You can see what stations are in the database by going to goodradio.org.
Parenthetically, you can control the volume through SSH like this:
chumby_set_volume 100 (to set volume to 100)
chumby_set_volume 10 (to set volume to 10)
Here's instructions to enable the Chumby's SSH server at startup.
You can find the IP addy of your Chumby by going to Settings --> Chumby Info, or if you're using Windows, with my bping program.
As of typing this (March 2008) the sample webcam application posted on the Chumby site a) uses a really archaic method to load the webcam images, and b) doesn't work since it doesn't defeat caching of the images. So I made this template file so people don't have to reinvent the wheel if they want to make a webcam app for the Chumby. It uses a listener to load the images as fast as bandwidth will allow. Note that it also works just fine independent of Chumbies.
I made a widget to show satellite maps on my Chumby. No big whoop. It was originally named ChumbyVane, but they made me change the name. Sheesh yet again.
Chumby Don't Surf!
This one gathers wind and wave data from the San Francisco buoy and the Fort Funston wind meter and tries to come up with a rating for how good the surf is around San Francisco. As the surf gets better, the color of the graphic changes.
Here's the current guess at the surf conditions:
Hmm, I should probably go see how accurate it is. Research.
Rebooting a Chumby with cron
My Chumby kept crashing with one of my apps so instead of dealing with it I set it to reboot every night with cron. There were some quirks so I thought I'd add the process to the page:
Good ol "crontab -e" wasn't working for editing crontab, but this works:
crontab -c /psp/crontabs -e
To make it reboot every night at 5am my line in the crontab is:
0 5 * * * /usr/chumby/scripts/reboot_normal.sh