Andy Blyler

Software Engineer, Private Pilot, Photographer

Nest Thermostat

Nest Thermostat

It has only been a little over a week since our Nest thermostat was installed, and its already hard to imagine life without it. The top reason is that we can change the temperature setting of the thermostat via our iPhones, which eliminates the “hey honey, is the thermostat on hold,” question that occurs quite frequently. We don’t have a very predictable schedule, which caused us to constantly tinker with our old thermostat. Being able to easily change the temperature and schedule from anywhere is great because we can turn the heat down while we’re away and use the iPhone to turn it up just before we return.

I must admit, Nest and I did have a bit of a rocky start. When I ordered, I opted for installation service as well, since the last time I tried to install a thermostat resulted in a service call to the local HVAC company (which cost more than the Nest’s installation fee). Maybe my expectaciones were too high, but the installation company did not schedule my install appointment until a full week had passed since I received the Nest in the mail. It was only after my asking to cancel the install service that they scheduled the appointment for the next morning.

After getting the installer to come out, the install went rather smoothly, that is until the Nest got into a continuous firmware upgrading loop. After over an hour of troubleshooting, both the installer and the Nest support representative thought the Nest must have been defective and scheduled a replacement to be shipped out overnight. I was highly impressed that Nest would overnight a new device to me, two thumbs up! Luckily, it didn’t come to having to wait on a replacement. After the installer left, I tried one last time to upgrade the firmware manually, this time it worked! I altered their instructions slightly:

  • Turn off WiFi
  • Detach the Nest thermostat from the base
  • Restart the Nest thermostat
  • Attach the Nest thermostat to your computer via a mini USB cable
  • Copy the tar.gz firmware image to the Nest storage device
  • Unplug the Nest from your computer (the Nest thermostat should now display something like “Plug back into base to start upgrade”
  • Plug the nest back into the base

The device has been working flawlessly ever since. The coolest feature is auto-away, which has tuned itself and will probably save us the most money. The Nest has a motion detector in it, and when it doesn’t sense movement for a period of time it can automatically switch to away mode.

One idea, that I think would be killer for Nest to implement, is that in addition to using the motion detector to determine when to go into auto-away mode, it would be awesome if the Nest could detect when all mobile phones aren’t on the local network (maybe via arpping). It wouldn’t be too hard to gather the MAC addresses from iOS and Andriod devices that installed and logged into the Nest application.

Next up, reverse engineering the Nest site and graphing the data via Cacti.

Follow Up on Virtual Host HTTPS Sites

Back in 2006 I posted about RFC 3546 and how it would allow multiple HTTPS sites to share a single IP address. Since my post a lot has changed, a new RFC [1] was formed and all major browsers now support this technology [2]: IE 7+ (excluding Windows XP), Firefox 2+, Chrome 5+ (excluding Windows XP), Safari 3.2.1+ (excluding Windows XP), Opera 8+. As far as servers go Apache 2.2.12+, Nginx, and lighttpd 1.4.24+ all support it. The only major missing component is IIS for hosting websites on Windows.

Analyzing my website visitors over the past month, it appears that ~9.5% use web browsers that still do not support this technology. I plan on using this technology on internal websites, but until Windows XP becomes obsolete I do not feel like it can be used for public web sites.

[1] RFC 4346
[2] Wikipedia: Server Name Indication

Photos From Walking Ann Arbor Near Dusk

This past Friday Stevie and I traded in our normally scheduled brisk paced evening walk, for a night of walking around snapping photos. You can see Stevie’s photos at her Stevie B. Photography blog. My favorite photos that I took are below, enjoy!

Issue when using Ping.fm, GTALK Bot, and iChat

I have noticed that my status update have contained duplicate links when sending them from iChat. It appears the problem is the way iChat creates the XML and/or the parser of the Ping.fm bot. An example of this can be seen on my twitter about credit card minimum purchase amounts.

If you sniff the jabber traffic you will find something similar the following:

<message to="pingdotfm@gmail.com" type="chat" id="iChat_...">
<body>
help http://www.google.com [http://www.google.com]
</body>
<html xmlns="http://jabber.org/protocol/xhtml-im">
<body xmlns="...">
<span style="font-size:12px; font-family:Helvetica; ">
help <a href="http://www.google.com">http://www.google.com</a>
</span>
</body>
</html>
<x xmlns="jabber:x:event"><composing/></x>
<active xmlns="http://jabber.org/protocol/chatstates"/>
</message>

I did report the issue “ping.fm duplicating links“. But sadly it doesn’t appear that they are going (or able) to do anything about the issue.

HOWTO: Custom Domains with MobileMe on the iPhone via Postfix

MobileMe Box

MobileMe Box

It is hard to change the email address your email is coming from when sending email from MobileMe on the iPhone because it will not let you simply change it in settings, like it does from other IMAP accounts. I really wanted to use MobileMe, mainly for the push email and contact/calendar/bookmark synchronization. However, if it did not allow me to keep my current email address at my own domain it was going to be a deal breaker. Luckily, I found a way to still use my existing email address with the iPhone. In order to do this you will need:

  • Create an alias with MobileMe
  • Modify Postfix configuration
  • Forward your email to the new MobileMe alias
  • Modify MobileMe account on iPhone to use your Postfix SMTP server

First create an alias with MobileMe, this will be used by your mail server to forward mail to you. For example you could pick username.incoming@me.com. This is needed because we are going to ask Postfix to map your main MobileMe address to your existing one.

Next lets modify the Postfix configuration. For this we are going to use the email address joe@domain.com as our existing email address and assume the postfix configuration files are located in /etc/postfix. First lets create /etc/postfix/smtpgenericmaps with the following content:

username@me.com joe@domain.com

Then edit /etc/postfix/main.cf and add:

# SMTP Outbound From Rewrite
smtp_generic_maps = hash:/etc/postfix/smtp_generic_maps

This will cause any outbound email delivered via SMTP that have a from address of username@me.com to be rewritten as if they came from joe@domain.com. You will need to reload/restart postfix for this change to take effect.

Forward your mail to username.incoming@me.com. On my mail server we are using virtual domain maps, so I updated my virtual alias maps to forward my mail to username.incoming@me.com. You could also do the same thing by using a .forward file or procmail/maildrop. Note: Do not forward to username@me.com, it will cause a loop, do to the smtpgenericmaps and send a NDR to the sender of the email.

Lastly we need to modify the MobileMe account on the iPhone to use the Postfix as the outbound SMTP server. To do this goto Settings -> Mail, Contacts, Calendars -> Your MobileMe Account -> Account Information -> SMTP -> Add or Select your SMTP server.

There you have it! Now when you send an email from your iPhone it will appear to be sent from joe@domain.com rather than username@me.com.