It's January 12th and it's going to be a warm one. We decided to take advantage and get a project done. Shelves!
We went to the hardware store and picked up some wood.
Chris cut the wood on his table saw...
Nailed some boards into the closet...
And after a little while we had shelves! I mostly just hung out and helped when needed. Chris has a more in-depth post on what the shelves are for on his blog.

I'm taking a short break from knitting my scarf (which is almost now half way done) to knitting a blanket. I'm sure normally a blanket takes a long time to knit, but with size 50 knitting needles and 4 strands of bulky yarn, this one shouldn't take too long. Specifically it's the 6 hour afghan pattern from Ravelry.

And yes, it's the same basic blanket that I made for my parents last year.

I think the next year I try this I'll try some bulky wool yarn as opposed to the Lionbrand Homespun. I just know the yarn I want is a lot more expensive and this pattern takes about 8 skeins of yarn total.

Made some cookies this evening. Chocolate chip and sugar cookies, to be exact. Originally I was going to use cookie cutters, but like usual I got too lazy when it came time to roll out the sugar cookie dough.

Back in June of 2012 I first started working on the initial Snail Mail Notifier, inspired by an RF set up. The RF version got tossed early on. It wasn't ideal because it required one arduino to stay in the mailbox at all times.
So I started on an ethernet edition in July inspired by this nice video out on MAKE. This route has worked out much better, especially since we have a mailbox on our house.

I'm happy to say we have now been consistently using the Snail Mail Notifier since late October 2012. After a minor tweak to the code due to massive email spam, the setup has been working perfectly. We have it sitting on top of a pedestal sturdy cardboard box we picked up at a local craft store.
Here's how it's set up:
A snap action switch is installed in the mailbox. The wires run in to the house and are hooked up to the arduino just inside the door. When the mailbox is opened three things happen:


  • A push notification is sent to the iOS app Prowl. 
    • Note that the avviso library does allow this to be configured with android as well
  • An email is sent to Chris and I letting us know mail has arrived (thanks to some php code Chris whipped up)
  • A green LED status light goes on (great visual cue for when neither of us have checked a device lately)

The arduino then waits for 5 minutes and checks to see if the mailbox is still open. If it is, another round of notifications get sent out. The whole thing will repeat this 5 times then stop until the device is manually reset (there's a simple reset button on the arduino). The 5 notifications in a row is a great way to know if there is a large envelope or package stuffed in the mailbox.
Since we don't have a router in our living room, I had to figure out a way to make this wireless. The XBee and other wireless shields for the arduino are kind of pricey so I opted for another solution - an ethernet shield and the TP-Link TL-WR703N router. As you can see, it's a relatively small wireless router and it only costs around $21. And since Deal Extreme sells a nice ethernet shield with the correct W5100 chipset for $14, this wireless solution was much cheaper.

Admittedly configuring the router was painful until I found this very helpful instructable (and specifically these wireless client configuration example). Now our Snail Mail Notifier is completely wireless!
As you can see, everything fits very comfortably in the box.
updated design
schematics courtesy of Fritzing

And the actual wiring on the arduino is pretty easy as well. 

All in all I'm pretty happy with the set up. There are only two major things that I feel like could really be improved upon. I plan to get to them eventually, but I'm in no rush. They are: 
  • configure the arduino sketch to reset the counter for the next day automatically. Right now the device has to be manually reset each day. Since I pass right by it, hitting the reset button isn't a big deal, but eventually I'd like this automated. 
  • decoupage the box
If you're interested, you can download the project here. The only thing not included is the php script, but there are some great examples on the net for that.

Hardware Used
Additional Software Used

Since I work downtown and it's cold out, I use the skywalk a lot in the winter. That means I'm in DeVos Hall on the second floor any day they don't have it roped off.

They rotate the art out every few months. They're all interesting, but of all the paintings I've passed so far, this one is the one I like the most. It's probably the sad lucky cats.

This jar was full on Saturday. It was an entire bag of M&Ms, now it's just less than 1/4 of that bag.

Now that I have two arduinos communicating with the OpenSource RF wireless shields, I started working on getting them to coordinate with the USB dongle that came with them. I have everything almost working properly, although I've been loosing connection to the arduinos intermittently.

I'll get it figured out eventually.
Chris was awesome and made tasty pizza-baked spaghetti. Eventually I'd like to try this recipe with shredded squash instead of pasta, but I just haven't experimented yet with squash (or zucchini) as pasta. Eventually!

It's been kind of a lazy day. I was going to do so many things, but instead I watched a lot of Warehouse 13 on Netflix and worked toward map completion in Guild Wars 2.

At least I can say it was a relaxing Saturday.


One of the local news stations in Grand Rapids has a lighted weather ball that gives you a quick snapshot of the coming day's forecast by changing colors. It over looks an intersection of freeways and is pretty hard to miss when driving into downtown.When I first moved here I'd never seen anything like it. It was a weird, cheesy looking thing. But over time I came to appreciate the sight. Seeing the weather ball meant I was almost home.

blue - which means the temperature tomorrow will be cooler

So when we got the Philips Hue light bulbs the first project Chris suggested was a weather ball (well, more like lamp). We wanted a visual cue in the morning before work as to what the weather would be like that day. So the Hue Weather Lamp basically indicates four things:
  • If the temperature for today is cooler than yesterday, the lamp will turn blue
  • If the temperature for today is warmer than yestrerday, the lamp will turn red
  • If the temperature for today is the same as yesterday, the lamp will turn green
  • If there is a 70% or higher chance of precipitation the lamp will be purple, regardless of a temperature increase or decrease.
green - which means the temperature tomorrow will be the same

The whole thing is pretty simple. All of the files can be found here. Here's what I did.

First, I installed the python library for the Philips Hue which can be found on github here: phue. Setting up the Hue python library is fairly straight forward, as long as a username has already been established with the Hue Hub. If not, that will need to be done first (this is how I did it)

Once the python module is installed (or a work around like I did) all that needs to be done is to set up authentication with the b.connect() command. The basic steps are:
  • Press of the "connect" button on the Philip Hue Hub
  • Run the python script with b.connect() (examples are in the phue github)
  • Voila! Authenticated.
purple - which means a 70% or higher chance of precipitation tomorrow

Next, once I had access to the Hue, I started work on a python script to check the weather and then adjust the lamp accordingly. I started with the python script from the Kindle Weather Display and adapted it to pull both the weather and chance of precipitation from NOAA.

Since the NOAA page doesn't keep yesterday's forecast, I had to figure out a way to log and save yesterday's temp for comparison purposes the next day. For my purposes, I only need the lamp to turn on once a day, in the morning, so I decided writing the value to a simple text file was the easiest way to achieve this. 

The python script goes through these basic steps:
  • reads a text file for yesterday's temp
  • pulls weather forecast from NOAA
  • compares yesterday's temp from the text file to today's foretasted temp from NOAA
  • assigns the appropriate color based on temperature difference
  • write today's temperature over yesterday's temperature in the text file so the data is ready for tomorrow morning
  • turn the lamp off after one hour
Now, the text file needs to be manually set with yesterday's temperature before the first script run. After that the python script will continue to write to the text file and be ready for the next day.

red - which means the temperature tomorrow will be warmer

After the python script was complete, the next step was to set up a schedule on the web server to run the python script at a certain interval. Since the intent was to see a quick glance in the morning before work, I set up a cron job to run in the morning. Here's what I'm using on my web server.

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

#execute by typing crontab
# m h  dom mon dow   command
  0 7 * * *    /usr/bin/python /PATH/TO/FILE/HueWeatherLamp.py

# this is an alternative cron job example if there are any issues running the python script directly in cron
#  0 7 * * *    /PATH/TO/FILE/weatherballpy.sh


There are a few additional things I'd like to play around with at some point, but most importantly I think I'd like to adjust the python script to count count days +/-5 degrees as the same day. A single degree difference warmer or cooler isn't cause for celebration, but five or ten degrees would be. I'll probably let this run as-is for awhile before making that adjustment though.

UPDATE 1/7/2013: I had some issues running the script directly from a cron job. It would execute the python script partially (turn the lamp on) but not change the color. I created a shell script to execute the python script and that works fine. I've updated the below download files with the shell script and a modified cron job example.

NOTE: as noted in the comments by the phue author: You do not need to have a registered username prior to using the library. The library will register itself, for example you can call
b = Bridge(IPADDR) then call connect() and it will register the python_hue app on the bridge and save the md5 key to your home folder in .python_hue
Downloads
Github: Hue Weather Lamp
of if you prefer - dropbox link: Hue Weather Lamp

Oatmeal has always been one of those things where it sounds like a good idea, but most of the times I don't end up liking it.

Until, oddly, this year. Now I'm searching allrecipes and looking for new twists on tasty oatmeal recipes. This baked oatmeal recipe (Baked Oatmeal II) is surprisingly tasty. I don't have dried cranberries, so I've used raisins a few times and I think it's just as tasty.

 It's been a great day off so far. I spent a lot of time working on a python program for the Hue lamps (and thereby teach myself python). And I made time for a few strolls around a nearby park.
I'm pretty sure Leki has had a good day today too. He's spent nearly every waking moment either near me or...
...on me.

It's been a wonderful Wednesday so far.

New Year's Day has been a pretty good day. A tasty breakfast, an eye exam, and an afternoon stroll at the local park.