<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2294857138026899858</id><updated>2011-07-28T11:58:21.408-07:00</updated><category term='Thermostat'/><category term='it8'/><category term='iCal thermostat it8 calendar'/><title type='text'>Smarter Gadgets</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://smartergadgets.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://smartergadgets.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>George</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2294857138026899858.post-2766512744681005124</id><published>2010-08-11T16:30:00.000-07:00</published><updated>2010-08-11T16:40:26.389-07:00</updated><title type='text'>Password Manager</title><content type='html'>I've been unhappy with the state of the art for password mangers for a while now, so I decided to write one that works right. Interested? You can find it &lt;a  target="_blank" href="http://www.electronic-badge.com"&gt;here&lt;/a&gt; . 

&lt;a target="_blank" href="http://www.youtube.com/watch?v=TjeS2RqmjuA"&gt;Demo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294857138026899858-2766512744681005124?l=smartergadgets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/2766512744681005124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/2766512744681005124'/><link rel='alternate' type='text/html' href='http://smartergadgets.blogspot.com/2010/08/password-manager.html' title='Password Manager'/><author><name>George</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2294857138026899858.post-7287406749225082154</id><published>2009-12-28T14:16:00.000-08:00</published><updated>2010-04-28T22:52:54.794-07:00</updated><title type='text'>Smart Parking Meter</title><content type='html'>At school I park in a lot that has coin parking meters and I find that using them is a pain. I came up with the idea of a parking meter that can be paid via Internet enabled phones by simply scanning a QR Code. I was lucky to find two other classmates that liked the idea and we implemented a proof of concept as a project in one of the classes I took this semester. I worked on the application for the Android phone and the initial RESTful API design. 

&lt;br/&gt;
&lt;a href="https://smartgblog.s3.amazonaws.com/ProjectPresentation.pdf"&gt;Presentation&lt;/a&gt;
&lt;br/&gt;
&lt;a href="https://smartgblog.s3.amazonaws.com/parking_meter_paper.pdf"&gt;Final Report&lt;/a&gt;

&lt;br/&gt;
&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294857138026899858-7287406749225082154?l=smartergadgets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/7287406749225082154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/7287406749225082154'/><link rel='alternate' type='text/html' href='http://smartergadgets.blogspot.com/2009/12/smart-parking-meter.html' title='Smart Parking Meter'/><author><name>George</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2294857138026899858.post-1005375168499002227</id><published>2009-07-04T17:02:00.001-07:00</published><updated>2009-07-05T08:22:28.458-07:00</updated><title type='text'>Optimal HVAC Control</title><content type='html'>This post is about my first attempt to make use of &lt;a href="http://smartergadgets.blogspot.com/2009/06/wireless-sensors.html"&gt;wireless temperature sensors&lt;/a&gt; installed in my house to control the HVAC for more comfort and better energy usage. Here is how it works: 
&lt;br /&gt;
&lt;br /&gt;

I have installed 3 temperature sensors, one on the first floor, and two on the second floor (one in the master bedroom and one in my home office). Each sensor publishes updates to a Topic, similar with this &lt;a href="http://cloudutilsj.appspot.com/topic/c7ba6e1b6c849d37"&gt;http://cloudutilsj.appspot.com/topic/c7ba6e1b6c849d37&lt;/a&gt;. 
&lt;br /&gt;
&lt;br /&gt;

Then I have created a Google Spreadsheet where I listed all rooms that have temperature sensors, the public URIs of the sensors, the target temperatures for those rooms and the schedule.   This way I can easily express the fact that different rooms need to be comfortable only between certain hours of the day. In the past, achieving comfortable temperature in my home office for example was difficult because the thermostat was on the first floor thus unaware of the actual temperature in the office for optimal control. Not anymore.      
&lt;br /&gt;
&lt;br /&gt;

&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_L7N937QCGvg/Sk_u0BvFEOI/AAAAAAAAAEQ/zM0lTkjVnz0/s1600-h/thermostat_spreadsheet.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="http://3.bp.blogspot.com/_L7N937QCGvg/Sk_u0BvFEOI/AAAAAAAAAEQ/zM0lTkjVnz0/s400/thermostat_spreadsheet.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5354761059553317090" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;

Once I had this in place I published the Spreadsheet as CSV and I created a program that reads the published CSV and adjusts the thermostat for optimal control. Beautiful! 
&lt;br /&gt;
&lt;br /&gt;

Now I'm looking for controllable floor vent registers, but so far I could not find any. If you are aware of such a product please drop me a line at &lt;i&gt;contact at smartergadgetsstore.com&lt;/i&gt;. My goal is to have the vents monitor the spreadsheet as well and only blow air into the rooms that are &lt;i&gt;&amp;quot;active&amp;quot;&lt;/i&gt; at a certain time.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294857138026899858-1005375168499002227?l=smartergadgets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/1005375168499002227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/1005375168499002227'/><link rel='alternate' type='text/html' href='http://smartergadgets.blogspot.com/2009/07/optimal-hvac-control.html' title='Optimal HVAC Control'/><author><name>George</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_L7N937QCGvg/Sk_u0BvFEOI/AAAAAAAAAEQ/zM0lTkjVnz0/s72-c/thermostat_spreadsheet.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2294857138026899858.post-8342702508063829133</id><published>2009-06-27T09:43:00.000-07:00</published><updated>2009-07-04T06:58:26.584-07:00</updated><title type='text'>Wireless Sensors</title><content type='html'>For some time I've been interested in creating mashups with sensor data and something like Yahoo Pipes. This post describes the solution I created for data acquisition, which consists of Wireless Sensors and Wireless to Ethernet Bridges. Feature posts will be about applications that use this infrastructure to create interesting sensor data mashups.
&lt;br /&gt;
&lt;br /&gt;

The diagram bellow shows the solution architecture.
&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_L7N937QCGvg/SkZosqUPYGI/AAAAAAAAADQ/mZIcU8m6vds/s1600-h/sensor_gateway.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://2.bp.blogspot.com/_L7N937QCGvg/SkZosqUPYGI/AAAAAAAAADQ/mZIcU8m6vds/s400/sensor_gateway.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5352080323659128930" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;

Using the Google App Engine I created a Java/Groovy application that provides a &lt;i&gt;Whiteboard&lt;/i&gt; for sensors to post messages and to register for notifications about new messages from other sensors. The &lt;i&gt;Whiteboard&lt;/i&gt; is made up of &lt;i&gt;Topics&lt;/i&gt;, and each &lt;i&gt;Topic&lt;/i&gt; has a &lt;i&gt;Public Key&lt;/i&gt; and a &lt;i&gt;Private Key&lt;/i&gt;. The &lt;i&gt;Private Key&lt;/i&gt; controls write access to a &lt;i&gt;Topic&lt;/i&gt;, and the &lt;i&gt;Public Key&lt;/i&gt; controls the read access to a &lt;i&gt;Topic&lt;/i&gt; (typically each sensor has a &lt;i&gt;Private Key&lt;/i&gt; that it uses to publish data and zero or more &lt;i&gt;Public Keys&lt;/i&gt; that it uses to read data created by other sensors) .
&lt;br /&gt;
&lt;br /&gt;


New message can be posted on a &lt;i&gt;Topic&lt;/i&gt; by sending an HTTP POST request to the Topic Uri (i.e.&lt;i&gt;http://cloudutilsj.appspot.com/topic/PRIVATE_KEY&lt;/i&gt;). After a message has been posted it can be retrieved by interested clients using the &lt;i&gt;Public Key&lt;/i&gt;, this URI for example &lt;a href="http://cloudutilsj.appspot.com/topic/c7ba6e1b6c849d37"&gt;http://cloudutilsj.appspot.com/topic/c7ba6e1b6c849d37&lt;/a&gt; returns XML representing the data published by a temperature sensor installed in my garage.
&lt;br /&gt;
&lt;br /&gt;

The API also allows access to the history of a &lt;i&gt;Topic&lt;/i&gt; by appending the version number after the public uri, this for example &lt;a href="http://cloudutilsj.appspot.com/topic/c7ba6e1b6c849d37/5868"&gt;http://cloudutilsj.appspot.com/topic/c7ba6e1b6c849d37/5868&lt;/a&gt; will return the reading with version 5868 on the topic. 
&lt;br /&gt;
&lt;br /&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_L7N937QCGvg/SkqLybmjIaI/AAAAAAAAAEA/-JFj026y99M/s1600-h/topic_flow.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 298px;" src="http://1.bp.blogspot.com/_L7N937QCGvg/SkqLybmjIaI/AAAAAAAAAEA/-JFj026y99M/s400/topic_flow.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5353244805602419106" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;

Bellow are some screenshots with the Wireless Sensor Boards I built. Each sensor board is made of 2 smaller boards: one has the microcontroller and it is connected to temperature, humidity or other types of sensors and the other one is the radio interface (I built these with nRF24L01+). The reason I separated them like this is extensibility: I can build new types of sensor boards or change the microcontroller and I will be able to reuse the same radio interface.
&lt;br /&gt;
&lt;br /&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_L7N937QCGvg/SkZsHFGXdtI/AAAAAAAAADw/tCghihn342M/s1600-h/sensor4.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_L7N937QCGvg/SkZsHFGXdtI/AAAAAAAAADw/tCghihn342M/s400/sensor4.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5352084076060178130" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_L7N937QCGvg/SkZr-r8auCI/AAAAAAAAADo/dJC8lnpKN3I/s1600-h/sensor3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_L7N937QCGvg/SkZr-r8auCI/AAAAAAAAADo/dJC8lnpKN3I/s400/sensor3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5352083931868608546" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_L7N937QCGvg/SkZr0Tt883I/AAAAAAAAADg/jXqdIjqNWe0/s1600-h/sensor2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_L7N937QCGvg/SkZr0Tt883I/AAAAAAAAADg/jXqdIjqNWe0/s400/sensor2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5352083753566794610" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_L7N937QCGvg/SkZrptrvk7I/AAAAAAAAADY/Qwh0Tuv744I/s1600-h/sensor1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_L7N937QCGvg/SkZrptrvk7I/AAAAAAAAADY/Qwh0Tuv744I/s400/sensor1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5352083571558290354" /&gt;&lt;/a&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;


The Wireless to Ethernet Bridges receive messages from the Wireless Sensor Boards, format the messages as JSON and then they update using HTTP POST the Topic specified by each sensor.   
&lt;br /&gt;
&lt;br /&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_L7N937QCGvg/SkZsUGKIetI/AAAAAAAAAD4/ouc5mvOrGfo/s1600-h/gateway.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_L7N937QCGvg/SkZsUGKIetI/AAAAAAAAAD4/ouc5mvOrGfo/s400/gateway.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5352084299682708178" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294857138026899858-8342702508063829133?l=smartergadgets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/8342702508063829133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/8342702508063829133'/><link rel='alternate' type='text/html' href='http://smartergadgets.blogspot.com/2009/06/wireless-sensors.html' title='Wireless Sensors'/><author><name>George</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_L7N937QCGvg/SkZosqUPYGI/AAAAAAAAADQ/mZIcU8m6vds/s72-c/sensor_gateway.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2294857138026899858.post-3381426363564666009</id><published>2008-12-20T17:12:00.000-08:00</published><updated>2010-08-15T14:31:15.024-07:00</updated><title type='text'>GTalk fun</title><content type='html'>Someone asked me a couple months ago if it would be possible to send commands to the thermostat via email. The difficulty with that is authenticating users. Because the semester is now over and I have some weekend spare time, I decided to implement a toy with Google Talk.

The screenshot bellow shows a "conversation" with my home thermostat. &lt;br /&gt;&lt;br /&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_L7N937QCGvg/SU2aY_Dk2RI/AAAAAAAAADI/KKdaGNTIaIA/s1600-h/Picture+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 346px; height: 400px;" src="http://3.bp.blogspot.com/_L7N937QCGvg/SU2aY_Dk2RI/AAAAAAAAADI/KKdaGNTIaIA/s400/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5282047692009429266" /&gt;&lt;/a&gt;&lt;script type="text/javascript" src="http://smartappl.appspot.com/track.js?subject=thermostat2"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;

With GTalk available in Gmail and on my cell phone this proves to be quite useful. Interesting extensions could use speech recognition on a cell phone to interact with an automated house.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294857138026899858-3381426363564666009?l=smartergadgets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/3381426363564666009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/3381426363564666009'/><link rel='alternate' type='text/html' href='http://smartergadgets.blogspot.com/2008/12/gtalk-fun.html' title='GTalk fun'/><author><name>George</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_L7N937QCGvg/SU2aY_Dk2RI/AAAAAAAAADI/KKdaGNTIaIA/s72-c/Picture+1.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2294857138026899858.post-446757641647959034</id><published>2008-08-30T17:17:00.001-07:00</published><updated>2008-08-30T17:31:10.452-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iCal thermostat it8 calendar'/><title type='text'>iCal controlled thermostat</title><content type='html'>I did not know until &lt;a href="davidscontact"&gt;David&lt;/a&gt; mentioned it to me, but the iCal on my Mac can sync with the Google Calendar (it uses CalDAV), which means iCal can control the thermostat too! Here is a screenshot:

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_L7N937QCGvg/SLnkgj205AI/AAAAAAAAAC4/p09WaKhJ5ng/s1600-h/Picture+1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_L7N937QCGvg/SLnkgj205AI/AAAAAAAAAC4/p09WaKhJ5ng/s400/Picture+1.png" alt="" id="BLOGGER_PHOTO_ID_5240470889454429186" border="0" /&gt;&lt;/a&gt;


Thanks David!

&lt;a href="http://www.google.com/support/calendar/bin/answer.py?answer=99358"&gt;iCal Setup&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294857138026899858-446757641647959034?l=smartergadgets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/446757641647959034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/446757641647959034'/><link rel='alternate' type='text/html' href='http://smartergadgets.blogspot.com/2008/08/ical-controlled-thermostat.html' title='iCal controlled thermostat'/><author><name>George</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_L7N937QCGvg/SLnkgj205AI/AAAAAAAAAC4/p09WaKhJ5ng/s72-c/Picture+1.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-2294857138026899858.post-6179214676407387849</id><published>2008-07-22T05:43:00.000-07:00</published><updated>2008-07-22T16:29:09.516-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='it8'/><category scheme='http://www.blogger.com/atom/ns#' term='Thermostat'/><title type='text'>4 minutes setup</title><content type='html'>See it &lt;a href="http://smartappl.appspot.com/content/four_minutes_setup.html" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294857138026899858-6179214676407387849?l=smartergadgets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/6179214676407387849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/6179214676407387849'/><link rel='alternate' type='text/html' href='http://smartergadgets.blogspot.com/2008/07/4-minutes-setup.html' title='4 minutes setup'/><author><name>George</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2294857138026899858.post-8870870652990162409</id><published>2008-07-08T17:27:00.000-07:00</published><updated>2008-12-24T06:41:45.552-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thermostat'/><title type='text'>Smarter thermostat</title><content type='html'>&lt;div&gt;


&lt;p&gt;At the end of last year I was looking for a replacement for my home thermostat. I wanted a
smarter controller for the device that is responsible for most of my electric bill in the summer and for most of my gas bill in the winter. Since I could not find a thermostat that supported flexible scheduling, remote access without a monthly fee, reasonably priced and had a flexible interface I could use to add new features, I decided to design one that could do all this.
&lt;/p&gt;

&lt;p&gt;Most programmable thermostats have a built-in functionality that allows the creation
of a daily schedule. But once programmed the thermostat cannot be adjusted remotely,
so many times the thermostat might start heating or cooling hours before anyone gets home.
The other impediment with programmable thermostats is that you have to use the clumsy menu on the
device and learn all the cryptic codes displayed on a tiny LCD in order to program it.&lt;/p&gt;My solution was to build a thermostat controller that synchronizes with a flexible calendar that I can access from the Web Browser, from my cell phone and, equally important, it is free of charge. I chose the Google Calendar and I build a tiny controller that connects to the Internet, reads commands from the calendar and applies them to the thermostat. There were quite a few communicating thermostats I could use, but the one I really liked was &lt;a href="http://www.datanab.com/controllers/iT8.htm" target="_blank"&gt;iT8&lt;/a&gt;.

The one time setup for my thermostat controller is pretty simple: from my Google account I access the "Manage calendars" section and I create a new calendar. Then I copy the XML Private Address of the calendar and paste it in my thermostat controller's administration web page. That's it!
&lt;p&gt;Now the controller monitors the calendar for events that have the Subject similar with "cool75",
"heat85" or "off" and sends the commands to the thermostat.  As expected the first command will set the thermostat setpoint to 75&amp;#176;F and will put it Cooling mode, while the last command will turn off the thermostat.
&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_L7N937QCGvg/SHQIQhtkkeI/AAAAAAAAABI/ndnwhFtUH2o/s1600-h/calendar.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_L7N937QCGvg/SHQIQhtkkeI/AAAAAAAAABI/ndnwhFtUH2o/s320/calendar.png" alt="" id="BLOGGER_PHOTO_ID_5220806948049687010" border="0" /&gt;&lt;/a&gt;

&lt;br /&gt;
&lt;br /&gt;

&lt;p&gt;Having the thermostat controlled from a Google Calendar is very useful, but I also wanted to have some extra features that you don't find in regular thermostats. First, I wanted to be able to adjust the thermostat from the comfort of my desk, saving a trip downstairs, second I wanted a feature that would allow me to view the inside temperature, current set point and outside temperature. For this purpose I built a Google Gadget for iGoogle that does just that.
&lt;/p&gt;


&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_L7N937QCGvg/SHQI85I7IkI/AAAAAAAAABQ/Du5jq9PWsvQ/s1600-h/gadget.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_L7N937QCGvg/SHQI85I7IkI/AAAAAAAAABQ/Du5jq9PWsvQ/s320/gadget.png" alt="" id="BLOGGER_PHOTO_ID_5220807710252671554" border="0" /&gt;&lt;/a&gt;

&lt;br /&gt;
&lt;br /&gt;

Now my Home tab in iGoogle makes more sense, it actually has a gadget from my house: the Thermostat.
&lt;br /&gt;
&lt;br /&gt;


&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_L7N937QCGvg/SHQJTS1sKII/AAAAAAAAABY/v604j5t3Yc8/s1600-h/igoogle.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_L7N937QCGvg/SHQJTS1sKII/AAAAAAAAABY/v604j5t3Yc8/s400/igoogle.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220808095108442242" /&gt;&lt;/a&gt;


&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
Since I already had a nice API for the controller, I decided to add another interface to make it
available in the Web Browser on my BlackBerry. This works pretty well for (unlikely) situations when my laptop is off, or when I am not at home.
&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_L7N937QCGvg/SHQK_eQL07I/AAAAAAAAABg/3Rnamw-4yC4/s1600-h/blackberry.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_L7N937QCGvg/SHQK_eQL07I/AAAAAAAAABg/3Rnamw-4yC4/s400/blackberry.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5220809953598231474" /&gt;&lt;/a&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Hardware&lt;/h2&gt;

&lt;p&gt;I built the thermostat controller as an Embedded system that connects directly to the Internet through my router and it also connects to the &lt;a href="http://www.datanab.com/controllers/iT8.htm" target="_blank"&gt;iT8&lt;/a&gt; thermostat via a 3 wire cable. The really nice thing about it is that it does not require a dedicated PC for the Internet connection, everything runs on one tiny board!
&lt;/p&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_L7N937QCGvg/SHQLQbmAbBI/AAAAAAAAABo/MZpw9XjGlFo/s1600-h/board.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_L7N937QCGvg/SHQLQbmAbBI/AAAAAAAAABo/MZpw9XjGlFo/s400/board.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5220810244942228498" /&gt;&lt;/a&gt;&lt;script type="text/javascript" src="http://smartappl.appspot.com/track.js?subject=thermostat"&gt;&lt;/script&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_L7N937QCGvg/SHQLapDthLI/AAAAAAAAABw/IVv_emHPa4c/s1600-h/case.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_L7N937QCGvg/SHQLapDthLI/AAAAAAAAABw/IVv_emHPa4c/s400/case.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5220810420355171506" /&gt;&lt;/a&gt;

&lt;br /&gt;
&lt;p&gt;Installing the iT8 itself was fairly easy and it is a nice looking thermostat. 
&lt;/p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_L7N937QCGvg/SHQO-pSozII/AAAAAAAAAB4/qpKBOqKTX0Y/s1600-h/it8_installed.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_L7N937QCGvg/SHQO-pSozII/AAAAAAAAAB4/qpKBOqKTX0Y/s320/it8_installed.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5220814337427950722" /&gt;&lt;/a&gt;


&lt;br /&gt;
&lt;br /&gt;



&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2294857138026899858-8870870652990162409?l=smartergadgets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/8870870652990162409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2294857138026899858/posts/default/8870870652990162409'/><link rel='alternate' type='text/html' href='http://smartergadgets.blogspot.com/2008/07/at-end-of-last-year-i-was-looking-for.html' title='Smarter thermostat'/><author><name>George</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_L7N937QCGvg/SHQIQhtkkeI/AAAAAAAAABI/ndnwhFtUH2o/s72-c/calendar.png' height='72' width='72'/></entry></feed>
