<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>KodeGeek &#187; perk</title>
	<atom:link href="http://kodegeek.com/blog/tag/perk/feed/" rel="self" type="application/rss+xml" />
	<link>http://kodegeek.com/blog</link>
	<description>Programación, fitness, interés geek</description>
	<lastBuildDate>Sun, 05 Feb 2012 19:12:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Sentilla: Agua y fuego</title>
		<link>http://kodegeek.com/blog/2008/10/05/sentilla-agua-y-fuego/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sentilla-agua-y-fuego</link>
		<comments>http://kodegeek.com/blog/2008/10/05/sentilla-agua-y-fuego/#comments</comments>
		<pubDate>Sun, 05 Oct 2008 23:59:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[perk]]></category>
		<category><![CDATA[pervasive computing]]></category>
		<category><![CDATA[sentilla]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1285</guid>
		<description><![CDATA[Estoy escribiendo una pequeña aplicación para Sentilla Labs. Comencé primero escribiendo una pequeña aplicación para calibrar el sensor (algo que no habia resuelto muy bien hace tiempo atrás). Lo cierto es que primero usted debe averiguar la temperatura del sitio del cual piensa sacar las medidas, usando quizas el termostato de su casa y luego [...]]]></description>
			<content:encoded><![CDATA[<p><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/-WMSvQ66I5U&amp;hl=en&amp;fs=1"><param name="allowFullScreen" value="true"><embed src="http://www.youtube.com/v/-WMSvQ66I5U&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"></embed></object></p>
<p>Estoy escribiendo una pequeña aplicación para <a href="http://labs.sentilla.com/">Sentilla Labs</a>. Comencé primero escribiendo una pequeña aplicación para calibrar el sensor (algo que no habia resuelto muy bien hace tiempo atrás). Lo cierto es que primero usted debe averiguar la temperatura del sitio del cual piensa sacar las medidas, usando quizas el termostato de su casa y luego corre esto desde Sentilla Works (el ide de Eclipse):</p>
<pre><a name="line1"> 1</a> <span style="color: rgb(0, 0, 255);"><strong>package com.kodegeek.app.aguayfuego;</strong></span><a name="line2"> 2</a><a name="line3"> 3</a> <span style="color: rgb(0, 0, 255);"><strong>import static javax.measure.unit.SI.CELSIUS;</strong></span><a name="line4"> 4</a><a name="line5"> 5</a> <span style="color: rgb(0, 0, 255);"><strong>import javax.measure.quantity.Temperature;</strong></span><a name="line6"> 6</a><a name="line7"> 7</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.system.Leds;</strong></span><a name="line8"> 8</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.system.LedsDriver;</strong></span><a name="line9"> 9</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.system.PropertyDriver;</strong></span><a name="line10">10</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.system.Sensor;</strong></span><a name="line11">11</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.system.SensorDriver;</strong></span><a name="line12">12</a><a name="line13">13</a> <span style="color: rgb(68, 68, 68);"><i>/**<a name="line14">14</a>  * Calibrate the sensor using a known value<a name="line15">15</a>  * @author josevnz@kodegeek.com - http://kodegeek.com<a name="line16">16</a>  */</i></span><a name="line17">17</a> <strong>public</strong> <strong>final</strong> <strong>class</strong> <span style="color: rgb(32, 64, 160);">SensorCalibration</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line18">18</a> <a name="line19">19</a>  <span style="color: rgb(68, 68, 68);"><i>/**<a name="line20">20</a>   * Persist the calibration temperature tobe used by all the applications<a name="line21">21</a>   * @throws InterruptedException<a name="line22">22</a>   */</i></span><a name="line23">23</a>  <strong>public</strong> <strong>static</strong> <strong>void</strong> <span style="color: rgb(32, 64, 160);">motemain</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <strong>throws</strong> <span style="color: rgb(32, 64, 160);">InterruptedException</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line24">24</a>   <span style="color: rgb(32, 64, 160);">Sensor</span> <span style="color: rgb(68, 68, 255);"><</span><span style="color: rgb(32, 64, 160);">Temperature</span><span style="color: rgb(68, 68, 255);">></span><span style="color: rgb(32, 64, 160);">tempSensor</span> <span style="color: rgb(68, 68, 255);">=</span><span style="color: rgb(32, 64, 160);">SensorDriver</span>.<span style="color: rgb(32, 64, 160);">create</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"temp"</span>, <span style="color: rgb(32, 64, 160);">Temperature</span>.<strong>class</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line25">25</a>   <span style="color: rgb(32, 64, 160);">Leds</span> <span style="color: rgb(32, 64, 160);">leds</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">LedsDriver</span>.<span style="color: rgb(32, 64, 160);">create</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line26">26</a>   <strong>float</strong> <span style="color: rgb(32, 64, 160);">calibratedTemp</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(255, 0, 0);">25.0f</span><span style="color: rgb(68, 68, 255);">;</span> <span style="color: rgb(68, 68, 68);">//Put here your known temperature</span><a name="line27">27</a>   <span style="color: rgb(32, 64, 160);">leds</span>.<span style="color: rgb(32, 64, 160);">toggle</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(255, 0, 0);">1</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line28">28</a>      <strong>double</strong> <span style="color: rgb(32, 64, 160);">delta</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">calibratedTemp</span> <span style="color: rgb(68, 68, 255);">-</span><span style="color: rgb(32, 64, 160);">tempSensor</span>.<span style="color: rgb(32, 64, 160);">read</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<span style="color: rgb(32, 64, 160);">doubleValue</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">CELSIUS</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line29">29</a>   <span style="color: rgb(32, 64, 160);">PropertyDriver</span>.<span style="color: rgb(32, 64, 160);">create</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"aguayfuego_temp_init"</span>, <span style="color: rgb(255, 0, 0);">8</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<span style="color: rgb(32, 64, 160);">writeDouble</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">delta</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line30">30</a>      <span style="color: rgb(32, 64, 160);">leds</span>.<span style="color: rgb(32, 64, 160);">toggle</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(255, 0, 0);">0</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line31">31</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line32">32</a> <span style="color: rgb(68, 68, 255);"><strong>}</strong></span></pre>
<p>Guardamos el valor en la lína 49. Una vez que usted corra este programa (solamente hace falta si sospecha que la temperatura de su cuarto ha cambiado mucho) entonces puede comenzar a capturar las temperaturas de nuevo. Fijense en el detalle de como se envia la temperatura, más el &#8220;delta&#8221; el cual contiene el ajuste:
<pre><a name="line1"> 1</a> <span style="color: rgb(0, 0, 255);"><strong>package com.kodegeek.app.aguayfuego;</strong></span><a name="line2"> 2</a><a name="line3"> 3</a> <span style="color: rgb(0, 0, 255);"><strong>import static javax.measure.unit.SI.CELSIUS;</strong></span><a name="line4"> 4</a> <span style="color: rgb(0, 0, 255);"><strong>import javax.measure.quantity.Temperature;</strong></span><a name="line5"> 5</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.net.Mac64Address;</strong></span><a name="line6"> 6</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.net.Sender;</strong></span><a name="line7"> 7</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.net.SenderDriver;</strong></span><a name="line8"> 8</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.system.Leds;</strong></span><a name="line9"> 9</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.system.LedsDriver;</strong></span><a name="line10">10</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.system.PropertyDriver;</strong></span><a name="line11">11</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.system.Sensor;</strong></span><a name="line12">12</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.system.SensorDriver;</strong></span><a name="line13">13</a><a name="line14">14</a> <span style="color: rgb(68, 68, 68);"><i>/**<a name="line15">15</a>  * Simple class to capture temperature usingSentilla JMote<a name="line16">16</a>  * @author josevnz@kodegeek.com - http://kodegeek.com<a name="line17">17</a>  */</i></span><a name="line18">18</a><a name="line19">19</a> <strong>public</strong> <strong>final</strong> <strong>class</strong> <span style="color: rgb(32, 64, 160);">TemperatureCapture</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line20">20</a>  <strong>public</strong> <strong>static</strong> <strong>final</strong> <strong>int</strong> <span style="color: rgb(32, 64, 160);">WAIT_TIME</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(255, 0, 0);">1000</span><span style="color: rgb(68, 68, 255);">;</span><a name="line21">21</a><a name="line22">22</a>  <span style="color: rgb(68, 68, 68);"><i>/**<a name="line23">23</a>   * Get the temperature reading<a name="line24">24</a>   * @throws InterruptedException<a name="line25">25</a>   */</i></span><a name="line26">26</a>  <strong>public</strong> <strong>static</strong> <strong>void</strong> <span style="color: rgb(32, 64, 160);">motemain</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <strong>throws</strong> <span style="color: rgb(32, 64, 160);">InterruptedException</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line27">27</a>   <span style="color: rgb(32, 64, 160);">Sensor</span> <span style="color: rgb(68, 68, 255);"><</span><span style="color: rgb(32, 64, 160);">Temperature</span><span style="color: rgb(68, 68, 255);">></span><span style="color: rgb(32, 64, 160);">tempSensor</span> <span style="color: rgb(68, 68, 255);">=</span><a name="line28">28</a>    <span style="color: rgb(32, 64, 160);">SensorDriver</span>.<span style="color: rgb(32, 64, 160);">create</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"temp"</span>, <span style="color: rgb(32, 64, 160);">Temperature</span>.<strong>class</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line29">29</a>   <span style="color: rgb(32, 64, 160);">Leds</span> <span style="color: rgb(32, 64, 160);">leds</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">LedsDriver</span>.<span style="color: rgb(32, 64, 160);">create</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line30">30</a>   <strong>long</strong> <span style="color: rgb(32, 64, 160);">id</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">Mac64Address</span>.<span style="color: rgb(32, 64, 160);">getLocalAddress</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<span style="color: rgb(32, 64, 160);">longValue</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line31">31</a>   <span style="color: rgb(32, 64, 160);">Sender</span> <span style="color: rgb(32, 64, 160);">sender</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">SenderDriver</span>.<span style="color: rgb(32, 64, 160);">create</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"local"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line32">32</a>   <strong>short</strong> <span style="color: rgb(32, 64, 160);">count</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(255, 0, 0);">0</span><span style="color: rgb(68, 68, 255);">;</span><a name="line33">33</a>      <span style="color: rgb(32, 64, 160);">TempMessage</span> <span style="color: rgb(32, 64, 160);">datamsg</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">TempMessage</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line34">34</a>      <span style="color: rgb(32, 64, 160);">datamsg</span>.<span style="color: rgb(32, 64, 160);">moteId</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">id</span><span style="color: rgb(68, 68, 255);">;</span><a name="line35">35</a>      <span style="color: rgb(32, 64, 160);">leds</span>.<span style="color: rgb(32, 64, 160);">toggle</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(255, 0, 0);">0</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line36">36</a>      <strong>double</strong> <span style="color: rgb(32, 64, 160);">delta</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">PropertyDriver</span>.<span style="color: rgb(32, 64, 160);">open</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"aguayfuego_temp_init"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<span style="color: rgb(32, 64, 160);">readDouble</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line37">37</a>   <strong>while</strong><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><strong>true</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line38">38</a>    <span style="color: rgb(32, 64, 160);">count</span><span style="color: rgb(68, 68, 255);">+</span><span style="color: rgb(68, 68, 255);">+</span><span style="color: rgb(68, 68, 255);">;</span><a name="line39">39</a>    <span style="color: rgb(32, 64, 160);">datamsg</span>.<span style="color: rgb(32, 64, 160);">count</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">count</span><span style="color: rgb(68, 68, 255);">;</span><a name="line40">40</a>    <span style="color: rgb(32, 64, 160);">datamsg</span>.<span style="color: rgb(32, 64, 160);">tempCelcius</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">tempSensor</span>.<span style="color: rgb(32, 64, 160);">read</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<span style="color: rgb(32, 64, 160);">doubleValue</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">CELSIUS</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);">+</span> <span style="color: rgb(32, 64, 160);">delta</span><span style="color: rgb(68, 68, 255);">;</span><a name="line41">41</a>    <span style="color: rgb(32, 64, 160);">leds</span>.<span style="color: rgb(32, 64, 160);">toggle</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(255, 0, 0);">1</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span> <span style="color: rgb(68, 68, 68);">// Show the user the sensor is alive</span><a name="line42">42</a>    <span style="color: rgb(32, 64, 160);">sender</span>.<span style="color: rgb(32, 64, 160);">send</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">datamsg</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line43">43</a>    <span style="color: rgb(32, 64, 160);">Thread</span>.<span style="color: rgb(32, 64, 160);">sleep</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">WAIT_TIME</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line44">44</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line45">45</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line46">46</a> <span style="color: rgb(68, 68, 255);"><strong>}</strong></span>
</pre>
<p>La línea 36 lee el delta y la 40 lee la temperatura con la corrección. Después la transmitimos en la linea 42.</p>
<p>Finalmente el cliente que lee los valores de los sensores (Esta es una aplicación común y silvestre de Java):
<pre><a name="line1"> 1</a> <span style="color: rgb(0, 0, 255);"><strong>package com.kodegeek.app.aguayfuego;</strong></span><a name="line2"> 2</a><a name="line3"> 3</a> <span style="color: rgb(0, 0, 255);"><strong>import java.io.IOException;</strong></span><a name="line4"> 4</a> <span style="color: rgb(0, 0, 255);"><strong>import java.util.Map;</strong></span><a name="line5"> 5</a> <span style="color: rgb(0, 0, 255);"><strong>import java.util.concurrent.ConcurrentHashMap;</strong></span><a name="line6"> 6</a> <span style="color: rgb(0, 0, 255);"><strong>import java.util.logging.Level;</strong></span><a name="line7"> 7</a> <span style="color: rgb(0, 0, 255);"><strong>import java.util.logging.Logger;</strong></span><a name="line8"> 8</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.host.client.HostClient;</strong></span><a name="line9"> 9</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.net.Receiver;</strong></span><a name="line10">10</a> <span style="color: rgb(0, 0, 255);"><strong>import com.sentilla.net.ReceiverDriver;</strong></span><a name="line11">11</a><a name="line12">12</a> <span style="color: rgb(68, 68, 68);"><i>/**<a name="line13">13</a>  * Simple command line client that collectsthe temperature readings of<a name="line14">14</a>  * all the motes in the wireless network.<a name="line15">15</a>  * @author josevnz@kodegeek.com - http://kodegeek.com<a name="line16">16</a>  */</i></span><a name="line17">17</a> <strong>public</strong> <strong>final</strong> <strong>class</strong> <span style="color: rgb(32, 64, 160);">TemperatureClient</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line18">18</a><a name="line19">19</a>  <strong>private</strong> <span style="color: rgb(32, 64, 160);">TemperatureClient</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><span style="color: rgb(68, 68, 255);"><strong>}</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line20">20</a><a name="line21">21</a>  <strong>private</strong> <strong>static</strong> <strong>final</strong> <span style="color: rgb(32, 64, 160);">Logger</span> <span style="color: rgb(32, 64, 160);">log</span> <span style="color: rgb(68, 68, 255);">=</span><span style="color: rgb(32, 64, 160);">Logger</span>.<span style="color: rgb(32, 64, 160);">getLogger</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">TemperatureClient</span>.<strong>class</strong>.<span style="color: rgb(32, 64, 160);">getName</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line22">22</a><a name="line23">23</a>  <strong>static</strong> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line24">24</a>   <span style="color: rgb(32, 64, 160);">log</span>.<span style="color: rgb(32, 64, 160);">setLevel</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Level</span>.<span style="color: rgb(32, 64, 160);">INFO</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line25">25</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line26">26</a><a name="line27">27</a>  <strong>private</strong> <strong>static</strong> <strong>final</strong> <strong>int</strong> <span style="color: rgb(32, 64, 160);">MOTE_WAIT</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(255, 0, 0);">3000</span><span style="color: rgb(68, 68, 255);">;</span><a name="line28">28</a><a name="line29">29</a>  <span style="color: rgb(68, 68, 68);"><i>/**<a name="line30">30</a>   * Helper class that captures the temperaturecomming from the sensor<a name="line31">31</a>   * @author josevnz<a name="line32">32</a>   */</i></span><a name="line33">33</a>  <strong>class</strong> <span style="color: rgb(32, 64, 160);">TemperatureCaptureHelper</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line34">34</a>   <strong>public</strong> <strong>final</strong> <span style="color: rgb(32, 64, 160);">Map</span> <span style="color: rgb(68, 68, 255);"><</span><span style="color: rgb(32, 64, 160);">Long</span>, <span style="color: rgb(32, 64, 160);">TempMessage</span><span style="color: rgb(68, 68, 255);">></span><span style="color: rgb(32, 64, 160);">sensorMap</span><span style="color: rgb(68, 68, 255);">;</span><a name="line35">35</a>  <a name="line36">36</a>   <span style="color: rgb(68, 68, 68);"><i>/**<a name="line37">37</a>    * Parametric constructor<a name="line38">38</a>    * @param sensorMap Map to store all the captured temperatures<a name="line39">39</a>    */</i></span><a name="line40">40</a>   <strong>public</strong> <span style="color: rgb(32, 64, 160);">TemperatureCaptureHelper</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Map</span> <span style="color: rgb(68, 68, 255);"><</span><span style="color: rgb(32, 64, 160);">Long</span>, <span style="color: rgb(32, 64, 160);">TempMessage</span><span style="color: rgb(68, 68, 255);">></span><span style="color: rgb(32, 64, 160);">sensorMap</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line41">41</a>    <strong>this</strong>.<span style="color: rgb(32, 64, 160);">sensorMap</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">sensorMap</span><span style="color: rgb(68, 68, 255);">;</span><a name="line42">42</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line43">43</a>  <a name="line44">44</a>   <strong>public</strong> <strong>void</strong> <span style="color: rgb(32, 64, 160);">capture</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line45">45</a><a name="line46">46</a>    <span style="color: rgb(68, 68, 68);">// Connect to the Sentilla server</span><a name="line47">47</a>    <span style="color: rgb(32, 64, 160);">HostClient</span> <span style="color: rgb(32, 64, 160);">client</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">HostClient</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line48">48</a>    <strong>try</strong> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line49">49</a>     <span style="color: rgb(32, 64, 160);">client</span>.<span style="color: rgb(32, 64, 160);">connect</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line50">50</a>     <span style="color: rgb(32, 64, 160);">log</span>.<span style="color: rgb(32, 64, 160);">log</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Level</span>.<span style="color: rgb(32, 64, 160);">INFO</span>,<span style="color: rgb(32, 64, 160);">String</span>.<span style="color: rgb(32, 64, 160);">format</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"Connected to sensor gateway at %s,capturing temperatures"</span>,<span style="color: rgb(32, 64, 160);">client</span>.<span style="color: rgb(32, 64, 160);">getHost</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line51">51</a>     <span style="color: rgb(32, 64, 160);">Receiver</span> <span style="color: rgb(32, 64, 160);">receiver</span> <span style="color: rgb(68, 68, 255);">=</span><span style="color: rgb(32, 64, 160);">ReceiverDriver</span>.<span style="color: rgb(32, 64, 160);">create</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">TempMessage</span>.<strong>class</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line52">52</a>     <strong>while</strong><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><strong>true</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line53">53</a>      <span style="color: rgb(32, 64, 160);">receiver</span>.<span style="color: rgb(32, 64, 160);">setReceive</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<span style="color: rgb(32, 64, 160);">submit</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<span style="color: rgb(32, 64, 160);">block</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">MOTE_WAIT</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line54">54</a>      <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">receiver</span>.<span style="color: rgb(32, 64, 160);">isDone</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line55">55</a>       <span style="color: rgb(32, 64, 160);">TempMessage</span> <span style="color: rgb(32, 64, 160);">tmsg</span><span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">receiver</span>.<span style="color: rgb(32, 64, 160);">getData</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line56">56</a>       <span style="color: rgb(32, 64, 160);">sensorMap</span>.<span style="color: rgb(32, 64, 160);">put</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">tmsg</span>.<span style="color: rgb(32, 64, 160);">moteId</span>, <span style="color: rgb(32, 64, 160);">tmsg</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line57">57</a>       <span style="color: rgb(32, 64, 160);">log</span>.<span style="color: rgb(32, 64, 160);">log</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Level</span>.<span style="color: rgb(32, 64, 160);">INFO</span>, <span style="color: rgb(32, 64, 160);">String</span>.<span style="color: rgb(32, 64, 160);">format</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"Update from sensor id: %s, %.3f"</span>,<span style="color: rgb(32, 64, 160);">tmsg</span>.<span style="color: rgb(32, 64, 160);">moteId</span>, <span style="color: rgb(32, 64, 160);">tmsg</span>.<span style="color: rgb(32, 64, 160);">tempCelcius</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line58">58</a>      <span style="color: rgb(68, 68, 255);"><strong>}</strong></span> <strong>else</strong> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line59">59</a>       <span style="color: rgb(32, 64, 160);">log</span>.<span style="color: rgb(32, 64, 160);">log</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Level</span>.<span style="color: rgb(32, 64, 160);">INFO</span>, <span style="color: rgb(0, 128, 0);">"No update"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line60">60</a>      <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line61">61</a>     <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line62">62</a>    <span style="color: rgb(68, 68, 255);"><strong>}</strong></span> <strong>catch</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">IOException</span> <span style="color: rgb(32, 64, 160);">ioExp</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line63">63</a>     <span style="color: rgb(32, 64, 160);">log</span>.<span style="color: rgb(32, 64, 160);">log</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Level</span>.<span style="color: rgb(32, 64, 160);">SEVERE</span>, <span style="color: rgb(0, 128, 0);">"Severe error, response will be dropped"</span>, <span style="color: rgb(32, 64, 160);">ioExp</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line64">64</a>    <span style="color: rgb(68, 68, 255);"><strong>}</strong></span> <strong>finally</strong> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line65">65</a>     <strong>try</strong> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line66">66</a>      <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">client</span> <span style="color: rgb(68, 68, 255);">!</span><span style="color: rgb(68, 68, 255);">=</span> <strong>null</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><a name="line67">67</a>       <span style="color: rgb(32, 64, 160);">client</span>.<span style="color: rgb(32, 64, 160);">disconnect</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line68">68</a>     <span style="color: rgb(68, 68, 255);"><strong>}</strong></span> <strong>catch</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">IOException</span> <span style="color: rgb(32, 64, 160);">ioExp</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line69">69</a>      <span style="color: rgb(32, 64, 160);">log</span>.<span style="color: rgb(32, 64, 160);">log</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Level</span>.<span style="color: rgb(32, 64, 160);">SEVERE</span>,<span style="color: rgb(0, 128, 0);">"Error while closing sensor connection"</span>, <span style="color: rgb(32, 64, 160);">ioExp</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line70">70</a>     <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line71">71</a>    <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line72">72</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line73">73</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line74">74</a> <a name="line75">75</a>  <span style="color: rgb(68, 68, 68);"><i>/**<a name="line76">76</a>   * Collect the statistics from all the motes<a name="line77">77</a>   * @param args Unused<a name="line78">78</a>   */</i></span><a name="line79">79</a>  <strong>public</strong> <strong>static</strong> <strong>void</strong> <span style="color: rgb(32, 64, 160);">main</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">String</span><span style="color: rgb(68, 68, 255);"><strong>[</strong></span><span style="color: rgb(68, 68, 255);"><strong>]</strong></span> <span style="color: rgb(32, 64, 160);">args</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <strong>throws</strong> <span style="color: rgb(32, 64, 160);">Throwable</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line80">80</a>   <span style="color: rgb(32, 64, 160);">log</span>.<span style="color: rgb(32, 64, 160);">log</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Level</span>.<span style="color: rgb(32, 64, 160);">INFO</span>, <span style="color: rgb(0, 128, 0);">"Starting TemperatureService"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line81">81</a>   <strong>final</strong> <span style="color: rgb(32, 64, 160);">TemperatureClient</span> <span style="color: rgb(32, 64, 160);">instance</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">TemperatureClient</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span> <a name="line82">82</a>   <strong>try</strong> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line83">83</a>    <strong>final</strong> <span style="color: rgb(32, 64, 160);">Map</span> <span style="color: rgb(68, 68, 255);"><</span><span style="color: rgb(32, 64, 160);">Long</span>, <span style="color: rgb(32, 64, 160);">TempMessage</span><span style="color: rgb(68, 68, 255);">></span><span style="color: rgb(32, 64, 160);">temperatures</span><span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">ConcurrentHashMap</span><span style="color: rgb(68, 68, 255);"><</span><span style="color: rgb(32, 64, 160);">Long</span>, <span style="color: rgb(32, 64, 160);">TempMessage</span><span style="color: rgb(68, 68, 255);">></span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span>  <a name="line84">84</a>    <span style="color: rgb(32, 64, 160);">TemperatureCaptureHelper</span> <span style="color: rgb(32, 64, 160);">helper</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">instance</span>.<strong>new</strong> <span style="color: rgb(32, 64, 160);">TemperatureCaptureHelper</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">temperatures</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line85">85</a>    <span style="color: rgb(32, 64, 160);">helper</span>.<span style="color: rgb(32, 64, 160);">capture</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span>  <a name="line86">86</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span> <strong>catch</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Throwable</span> <span style="color: rgb(32, 64, 160);">throwbl</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line87">87</a>    <span style="color: rgb(32, 64, 160);">log</span>.<span style="color: rgb(32, 64, 160);">log</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Level</span>.<span style="color: rgb(32, 64, 160);">SEVERE</span>, <span style="color: rgb(0, 128, 0);">"Fatal error, no recover possible"</span>, <span style="color: rgb(32, 64, 160);">throwbl</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span><a name="line88">88</a>    <strong>throw</strong> <span style="color: rgb(32, 64, 160);">throwbl</span><span style="color: rgb(68, 68, 255);">;</span><a name="line89">89</a>   <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line90">90</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line91">91</a> <span style="color: rgb(68, 68, 255);"><strong>}</strong></span>
</pre>
<p>Una vez resuelto esto puedo comenzar con la nueva aplicación. El código no está disponible en CVS, en algún momento colocaré todo para que se lo bajen. Mientras tanto les dejo esto para que se entretengan <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Buscar en otros sitios:</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/sentilla" rel="tag">sentilla</a>, <a href="http://www.blogalaxia.com/tags/perk" rel="tag">perk</a>, <a href="http://www.blogalaxia.com/tags/java" rel="tag">java</a>, <a href="http://www.blogalaxia.com/tags/pervasive+computing" rel="tag">pervasive computing</a>, <a href="http://www.blogalaxia.com/tags/kodegeek" rel="tag">kodegeek</a><br />Technorati:<a href="http://technorati.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://technorati.com/tag/perk" rel="tag">perk</a>, <a href="http://technorati.com/tag/java" rel="tag">java</a>, <a href="http://technorati.com/tag/pervasive+computing" rel="tag">pervasive computing</a>, <a href="http://technorati.com/tag/kodegeek" rel="tag">kodegeek</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://www.to2blogs.com/tag/perk" rel="tag">perk</a>, <a href="http://www.to2blogs.com/tag/java" rel="tag">java</a>, <a href="http://www.to2blogs.com/tag/pervasive+computing" rel="tag">pervasive computing</a>, <a href="http://www.to2blogs.com/tag/kodegeek" rel="tag">kodegeek</a><br />Del.icio.us:<a href="http://del.icio.us/tag/sentilla" rel="tag">sentilla</a>, <a href="http://del.icio.us/tag/perk" rel="tag">perk</a>, <a href="http://del.icio.us/tag/java" rel="tag">java</a>, <a href="http://del.icio.us/tag/pervasive+computing" rel="tag">pervasive computing</a>, <a href="http://del.icio.us/tag/kodegeek" rel="tag">kodegeek</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/10/05/sentilla-agua-y-fuego/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sentilla Perk: La experiencia Mac OSX</title>
		<link>http://kodegeek.com/blog/2008/09/05/sentilla-perk-la-experiencia-mac-osx/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sentilla-perk-la-experiencia-mac-osx</link>
		<comments>http://kodegeek.com/blog/2008/09/05/sentilla-perk-la-experiencia-mac-osx/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 08:45:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[FTDIUSBSerialDriver]]></category>
		<category><![CDATA[mac osx]]></category>
		<category><![CDATA[perk]]></category>
		<category><![CDATA[sentilla]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1282</guid>
		<description><![CDATA[Al fin, puedo programar mi Perk desde OSX Esta semana me decidí a instalar OSX Leopard en la Laptop de mi esposa Veronica y en mi computadora de escritorio; La experiencia fué simplemente indolora (no recuerdo que ninguna actualización de Windows o Linux halla ido tan bien). La razón de la actualización tuvo más que [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/josevnz/2487596223/" title="Perk from Sentilla by josevnz, on Flickr"><img src="http://farm3.static.flickr.com/2228/2487596223_d341afc461_o.jpg" alt="Perk from Sentilla" height="270" width="360" /></a><br /><a href="http://www.flickr.com/photos/josevnz/2487596223/" title="Perk from Sentilla by josevnz, on Flickr">Al fin, puedo programar mi Perk desde OSX</a></p>
<p>Esta semana me decidí a instalar<a href="http://en.wikipedia.org/wiki/Mac_OS_X_v10.5"> OSX Leopard</a> en la Laptop de mi esposa Veronica y en mi computadora de escritorio; La experiencia fué simplemente indolora (no recuerdo que ninguna actualización de Windows o Linux halla ido tan bien). La razón de la actualización tuvo más que ver con el hecho de que necesito utilizar Java 6 es OSX y no tengo tiempo para jugar con <a href="http://openjdk.org/">OpenJDK</a>.</p>
<p>Con este cambio ahora puedo bajarme también el Kit <a href="tp://www.sentilla.com/">Perk de Sentilla</a> para OSX, el cual fué liberado recientemente (Agosto 22).</p>
<p>¿Las instrucciones de instalación? Sencillas:</p>
<blockquote><p>Mac OS X Distribution of Sentilla Work<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Version: 1.1.1 for Mac OS X</p>
<p>Tested on Mac OS X 10.4.11 and 10.5.4.  Please see the release notes in SentillaWork/docs for more complete installation instructions and limitations.</p>
<p>Prerequisites:<br /><span style="font-weight: bold;">- Mac OS X Tiger or Leopard</span><br /><span style="font-weight: bold;">- Java 1.5 or higher</span></p>
<p>To install:<br />1. Install prerequisites.<br />2. Untar the archive<br />3. cd into the resulting directory.<br />4. Run &#8220;sudo ./install.sh&#8221;.</p>
<p>To run the Sentilla Host Server:<br />1. Run the hostserver with &#8220;./sentilla-hostserver&#8221;.<br />2. The server can be shut down using it&#8217;s PID: kill -9 `cat log/hostserver.pid`</p>
<p>To run the SentillaWork IDE:<br />1. Run the IDE with &#8220;./sentilla-work&#8221;.</p>
<p>To uninstall:<br />1. Run &#8220;sudo ./uninstall.sh&#8221;.<br />2. Delete the Sentilla directory and tar file.</p>
<p>This is NOT free software.  Please see the included LICENSE.txt file for<br />licensing information.</p></blockquote>
<p>Aunque por otro lado, hubiera sido mucho mejor hacer un paquete (.app), ¿no es así?. Dejando esa queja de un lado, me decidí a revisar el instalador (install.sh), buscando la parte en la cual instalan un manejador de dispositivos USB compatible con el Gateway:</p>
<blockquote><p>if [ -e /System/Library/Extensions/FTDIUSBSerialDriver.kext ]; then<br />echo &#8220;FTDI VCP driver found; moving to /System/Library/Extensions.disabled&#8221;<br />if [ ! -e /System/Library/Extensions.disabled ]; then mkdir /System/Library/Extensions.disabled; fi<br />mv /System/Library/Extensions/FTDIUSBSerialDriver.kext /System/Library/Extensions.disabled/<br />echo &#8220;Please restart your system and run install.sh again.&#8221;<br />exit 1<br />fi</p></blockquote>
<p>Ajá, aquí esta la vaina. Se ve sencillo, así que puedo dejar que el script haga el daño. Sin embargo (y en un acto de precaución raro en mi) me decidí también leerme la documentación en PDF especifica para OSX.</p>
<p>Ahh, bueno, resulta que la versión de Mac tiene cosas que no funcionan como en la versión de Windows, sin embargo no son tan importantes. Pero me molesto que cuando traté de instalar una aplicación desde Sentilla Eclipse, me dió el siguiente error:</p>
<blockquote><p>5:31:25: Exception at node 00:12:75:00:11:e4:2d:75: BIN num: abd13878CLASS num: 54<br />  at : BIN num: abd13878; methodNum: 292; pc: 665<br />  at : BIN num: abd13878; methodNum: 172; pc: 34<br />  at : BIN num: 722bd3fd; methodNum: 671; pc: 18<br />  at : BIN num: 722bd3fd; methodNum: 839; pc: 48<br />  at : BIN num: 722bd3fd; methodNum: 664; pc: 41</p></blockquote>
<p>La versión de OS X pareciera hecha a los trancazos; El programa que se usa para correr el servidor de sentilla es super sencillo, sin embargo no tiene manera de matar al demonio (lo tiene que hacer usted con &#8216;kill&#8217;).</p>
<p>No estoy muy impresionado, vamos a ver que tan lejos llego el el foro de soporte de Sentilla.</p>
<p>Buscar en otros sitios:</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/sentilla" rel="tag">sentilla</a>, <a href="http://www.blogalaxia.com/tags/perk" rel="tag">perk</a>, <a href="http://www.blogalaxia.com/tags/mac+osx" rel="tag">mac osx</a>, <a href="http://www.blogalaxia.com/tags/FTDIUSBSerialDriver" rel="tag">FTDIUSBSerialDriver</a><br />Technorati:<a href="http://technorati.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://technorati.com/tag/perk" rel="tag">perk</a>, <a href="http://technorati.com/tag/mac+osx" rel="tag">mac osx</a>, <a href="http://technorati.com/tag/FTDIUSBSerialDriver" rel="tag">FTDIUSBSerialDriver</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://www.to2blogs.com/tag/perk" rel="tag">perk</a>, <a href="http://www.to2blogs.com/tag/mac+osx" rel="tag">mac osx</a>, <a href="http://www.to2blogs.com/tag/FTDIUSBSerialDriver" rel="tag">FTDIUSBSerialDriver</a><br />Del.icio.us:<a href="http://del.icio.us/tag/sentilla" rel="tag">sentilla</a>, <a href="http://del.icio.us/tag/perk" rel="tag">perk</a>, <a href="http://del.icio.us/tag/mac+osx" rel="tag">mac osx</a>, <a href="http://del.icio.us/tag/FTDIUSBSerialDriver" rel="tag">FTDIUSBSerialDriver</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/09/05/sentilla-perk-la-experiencia-mac-osx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Generando gráficos de temperatura en Swing</title>
		<link>http://kodegeek.com/blog/2008/06/28/generando-graficos-de-temperatura-en-swing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=generando-graficos-de-temperatura-en-swing</link>
		<comments>http://kodegeek.com/blog/2008/06/28/generando-graficos-de-temperatura-en-swing/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 03:40:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[jfreechart]]></category>
		<category><![CDATA[perk]]></category>
		<category><![CDATA[sentilla]]></category>
		<category><![CDATA[swing]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1268</guid>
		<description><![CDATA[Ahora usted puede saber la temperatura de la sala de mi casa Bueno, seguí jugando con Sentilla Perk y Swing; Esta vez terminé de acomodar al cliente gráfico que muestra los datos en una tabla, al mismo tiempo que genera gráficos de temperatura capturados por cada sensor (código fuente aquí). Aún tengo un par de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/josevnz/2619388391/" title="Sentilla Swing temperature display - Time Series by josevnz, on Flickr"><img src="http://farm4.static.flickr.com/3084/2619388391_f2770d9449.jpg" alt="Sentilla Swing temperature display - Time Series" height="375" width="500" /><br />Ahora usted puede saber la temperatura de la sala de mi casa <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </a></p>
<p>Bueno, seguí jugando con<a href="http://kodegeek.com/2008/05/extendiendo-el-alcance-de-sentilla.shtml"> Sentilla</a> Perk y Swing; Esta vez terminé de acomodar al cliente gráfico que muestra los datos en una tabla, al mismo tiempo que genera gráficos de temperatura capturados por cada sensor (<a href="http://elangelnegro.cvs.sourceforge.net/elangelnegro/src/java/main/com/kodegeek/blog/pervasive/perk/TemperatureGui.java?revision=1.4&amp;view=markup">código fuente aquí</a>).</p>
<p>Aún tengo un par de problemas:
<ul>
<li>No he calibrado los sensores, uno de ellos siempre mide en el rango de las 20 grados Celcius mientras que el otro está en los 30.</li>
<li><a href="http://freechart.org/">JFreeChart</a> me tiene confundido con la gráfica, tengo un problema extraño de refrescamiento de pantalla.</li>
</ul>
<p><a href="http://www.flickr.com/photos/josevnz/2619388367/" title="Sentilla Swing temperature display - raw data in table by josevnz, on Flickr"><img src="http://farm4.static.flickr.com/3167/2619388367_b09aceb23f.jpg" alt="Sentilla Swing temperature display - raw data in table" height="375" width="500" /><br />No es perfecto, pero los resultados son interesantes</a></p>
<p>Sin embargo no me tomó mucho tiempo montar esto, y cada vez se pone más divertido. Voy a preguntar a otros desarrolladores más expertos en el foro de Sentilla a ver que tal <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Buscar en otros sitios:</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/kodegeek" rel="tag">kodegeek</a>, <a href="http://www.blogalaxia.com/tags/perk" rel="tag">perk</a>, <a href="http://www.blogalaxia.com/tags/sentilla" rel="tag">sentilla</a>, <a href="http://www.blogalaxia.com/tags/swing" rel="tag">swing</a>, <a href="http://www.blogalaxia.com/tags/jfreechart" rel="tag">jfreechart</a><br />Technorati:<a href="http://technorati.com/tag/kodegeek" rel="tag">kodegeek</a>, <a href="http://technorati.com/tag/perk" rel="tag">perk</a>, <a href="http://technorati.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://technorati.com/tag/swing" rel="tag">swing</a>, <a href="http://technorati.com/tag/jfreechart" rel="tag">jfreechart</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/kodegeek" rel="tag">kodegeek</a>, <a href="http://www.to2blogs.com/tag/perk" rel="tag">perk</a>, <a href="http://www.to2blogs.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://www.to2blogs.com/tag/swing" rel="tag">swing</a>, <a href="http://www.to2blogs.com/tag/jfreechart" rel="tag">jfreechart</a><br />Del.icio.us:<a href="http://del.icio.us/tag/kodegeek" rel="tag">kodegeek</a>, <a href="http://del.icio.us/tag/perk" rel="tag">perk</a>, <a href="http://del.icio.us/tag/sentilla" rel="tag">sentilla</a>, <a href="http://del.icio.us/tag/swing" rel="tag">swing</a>, <a href="http://del.icio.us/tag/jfreechart" rel="tag">jfreechart</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/06/28/generando-graficos-de-temperatura-en-swing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extendiendo el alcance de Sentilla: Escribiendo un cliente y servidor TCP/IP</title>
		<link>http://kodegeek.com/blog/2008/05/24/extendiendo-el-alcance-de-sentilla-escribiendo-un-cliente-y-servidor-tcpip/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=extendiendo-el-alcance-de-sentilla-escribiendo-un-cliente-y-servidor-tcpip</link>
		<comments>http://kodegeek.com/blog/2008/05/24/extendiendo-el-alcance-de-sentilla-escribiendo-un-cliente-y-servidor-tcpip/#comments</comments>
		<pubDate>Sun, 25 May 2008 03:01:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[perk]]></category>
		<category><![CDATA[sentilla]]></category>
		<category><![CDATA[tcp/ip]]></category>
		<category><![CDATA[udp]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1258</guid>
		<description><![CDATA[Bueno, juego un poquito más con Sentilla. Como ustedes recordaran de un articulo anterior, yo ya tenia un pequeño hola mundo corriendo en la máquina que tiene el Gateway de Sentilla y los sensores, el principal problema es que el &#8220;Gateway&#8221; (la parte que va conectada a al puerto USB) solamente funciona bajo Windows (prometen [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno, juego un poquito más con Sentilla. Como <a href="http://kodegeek.com/2008/05/como-medir-temperatura-desde-java.shtml">ustedes recordaran</a> de un articulo anterior, yo ya tenia un pequeño hola mundo corriendo en la máquina que tiene el Gateway de Sentilla y los sensores, el principal problema es que el &#8220;Gateway&#8221; (la parte que va conectada a al puerto USB) solamente funciona bajo Windows (prometen que Linux y OSX saldran pronto), así que me senté a escribir un cliente y servidor con UDP.</p>
<p><a href="http://www.lacaraoscura.com/2008/05/24/capturando-temperatura-utilizando-sentilla-perk-ii/">El articulo completo</a> está en el blog de la Cara Oscura del Desarollo de Software.</p>
<p>Espero les guste, ya les traeré otros juguetes en próximos artículos.</p>
<p>Buscar en otros sitios:</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/sentilla" rel="tag">sentilla</a>, <a href="http://www.blogalaxia.com/tags/perk" rel="tag">perk</a>, <a href="http://www.blogalaxia.com/tags/java" rel="tag">java</a>, <a href="http://www.blogalaxia.com/tags/tcp%2Fip" rel="tag">tcp/ip</a>, <a href="http://www.blogalaxia.com/tags/udp" rel="tag">udp</a>, <a href="http://www.blogalaxia.com/tags/kodegeek" rel="tag">kodegeek</a><br />Technorati:<a href="http://technorati.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://technorati.com/tag/perk" rel="tag">perk</a>, <a href="http://technorati.com/tag/java" rel="tag">java</a>, <a href="http://technorati.com/tag/tcp%2Fip" rel="tag">tcp/ip</a>, <a href="http://technorati.com/tag/udp" rel="tag">udp</a>, <a href="http://technorati.com/tag/kodegeek" rel="tag">kodegeek</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://www.to2blogs.com/tag/perk" rel="tag">perk</a>, <a href="http://www.to2blogs.com/tag/java" rel="tag">java</a>, <a href="http://www.to2blogs.com/tag/tcp%2Fip" rel="tag">tcp/ip</a>, <a href="http://www.to2blogs.com/tag/udp" rel="tag">udp</a>, <a href="http://www.to2blogs.com/tag/kodegeek" rel="tag">kodegeek</a><br />Del.icio.us:<a href="http://del.icio.us/tag/sentilla" rel="tag">sentilla</a>, <a href="http://del.icio.us/tag/perk" rel="tag">perk</a>, <a href="http://del.icio.us/tag/java" rel="tag">java</a>, <a href="http://del.icio.us/tag/tcp%2Fip" rel="tag">tcp/ip</a>, <a href="http://del.icio.us/tag/udp" rel="tag">udp</a>, <a href="http://del.icio.us/tag/kodegeek" rel="tag">kodegeek</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/05/24/extendiendo-el-alcance-de-sentilla-escribiendo-un-cliente-y-servidor-tcpip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como medir temperatura desde Java, usando Perk</title>
		<link>http://kodegeek.com/blog/2008/05/17/como-medir-temperatura-desde-java-usando-perk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-medir-temperatura-desde-java-usando-perk</link>
		<comments>http://kodegeek.com/blog/2008/05/17/como-medir-temperatura-desde-java-usando-perk/#comments</comments>
		<pubDate>Sun, 18 May 2008 04:21:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[perk]]></category>
		<category><![CDATA[pervasive computing]]></category>
		<category><![CDATA[sentilla]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1256</guid>
		<description><![CDATA[El código de captura es bien sencillo ¿Recuerdan como les prometí que iba a jugar con Sentilla Perk? Hoy comencé con una sencilla aplicación la cual mide la temperatura usando los dos sensores (llamados &#8220;Motes&#8221;) para luego transmitirla a la laptop la cual tiene instalado el &#8220;Gateway&#8221; que habla el protocolo CC420 en el puerto [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/josevnz/2502318306/" title="Running the client app to listen to the motes from Eclipse by josevnz, on Flickr"><img src="http://farm4.static.flickr.com/3264/2502318306_5601d69bb0_o.jpg" alt="Running the client app to listen to the motes from Eclipse" height="270" width="360" /><br />El código de captura es bien sencillo</a></p>
<p>¿Recuerdan <a href="http://kodegeek.com/2008/05/pervasive-computing-with-sentilla-perk.shtml">como les prometí que iba a jugar con Sentilla Perk</a>? Hoy comencé con una sencilla aplicación la cual mide la temperatura usando los dos sensores (llamados &#8220;Motes&#8221;) para luego transmitirla a la laptop la cual tiene instalado el &#8220;Gateway&#8221; que habla el protocolo <a href="http://www.tinyos.net/tinyos-2.x/doc/html/tep126.html">CC420</a> en el puerto USB.</p>
<p><object height="350" width="425"><param name="movie" value="http://www.youtube.com/v/-WMSvQ66I5U"><embed src="http://www.youtube.com/v/-WMSvQ66I5U" type="application/x-shockwave-flash" height="350" width="425"></embed></object></p>
<p>Después de leer los ejemplos, la guia de programador y el API me conseguí que es muy fácil recolectar datos con los sensores. <a href="http://elangelnegro.cvs.sourceforge.net/elangelnegro/src/java/main/com/kodegeek/blog/pervasive/perk/MoteTemperatureReader.java?revision=1.1&amp;view=markup&amp;pathrev=HEAD">El código que hace la captura</a> es el siguiente (este código es instalado desde la máquina que corre el servidor Perk en todos los motes):<br />
<blockquote></blockquote>
<pre></pre>
<blockquote><pre>     <span style="color: rgb(32, 64, 160);">Sender</span> <span style="color: rgb(32, 64, 160);">sender</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">SenderDriver</span>.<span style="color: rgb(32, 64, 160);">create</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(0, 128, 0);">"local"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span>  <strong>short</strong> <span style="color: rgb(32, 64, 160);">count</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(255, 0, 0);">0</span><span style="color: rgb(68, 68, 255);">;</span>     <span style="color: rgb(32, 64, 160);">TempMessage</span> <span style="color: rgb(32, 64, 160);">datamsg</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">TempMessage</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span>     <span style="color: rgb(32, 64, 160);">datamsg</span>.<span style="color: rgb(32, 64, 160);">moteId</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">id</span><span style="color: rgb(68, 68, 255);">;</span>  <strong>while</strong><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><strong>true</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span>   <span style="color: rgb(32, 64, 160);">count</span><span style="color: rgb(68, 68, 255);">+</span><span style="color: rgb(68, 68, 255);">+</span><span style="color: rgb(68, 68, 255);">;</span>   <span style="color: rgb(32, 64, 160);">leds</span>.<span style="color: rgb(32, 64, 160);">toggle</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">count</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span> <span style="color: rgb(68, 68, 68);">// Play with the leds</span>   <span style="color: rgb(32, 64, 160);">datamsg</span>.<span style="color: rgb(32, 64, 160);">count</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">count</span><span style="color: rgb(68, 68, 255);">;</span>   <span style="color: rgb(32, 64, 160);">datamsg</span>.<span style="color: rgb(32, 64, 160);">temperature</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">tempSensor</span>.<span style="color: rgb(32, 64, 160);">read</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span> <span style="color: rgb(68, 68, 68);">// Read the temperature</span>   <span style="color: rgb(32, 64, 160);">sender</span>.<span style="color: rgb(32, 64, 160);">send</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">datamsg</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span>   <span style="color: rgb(32, 64, 160);">Thread</span>.<span style="color: rgb(32, 64, 160);">sleep</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">WAIT_TIME</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span></pre>
</blockquote>
<p>Y en la Laptop en donde estoy corriendo el servidor me limito a capturar la información enviada por los sensores para mostrarla por pantalla (<a href="http://elangelnegro.cvs.sourceforge.net/elangelnegro/src/java/main/com/kodegeek/blog/pervasive/perk/TemperatureService.java?view=markup">código</a>):</p>
<pre>
<blockquote><span style="color: rgb(32, 64, 160);">client</span> <span style="color: rgb(68, 68, 255);">=</span> <strong>new</strong> <span style="color: rgb(32, 64, 160);">HostClient</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span> <span style="color: rgb(32, 64, 160);">client</span>.<span style="color: rgb(32, 64, 160);">connect</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span> <span style="color: rgb(32, 64, 160);">Receiver</span> <span style="color: rgb(32, 64, 160);">receiver</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">ReceiverDriver</span>.<span style="color: rgb(32, 64, 160);">create</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">TempMessage</span>.<strong>class</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span> <strong>while</strong><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><strong>true</strong><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span>  <span style="color: rgb(32, 64, 160);">receiver</span>.<span style="color: rgb(32, 64, 160);">setReceive</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<span style="color: rgb(32, 64, 160);">submit</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<span style="color: rgb(32, 64, 160);">block</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(255, 0, 0);">500</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span>  <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">receiver</span>.<span style="color: rgb(32, 64, 160);">isDone</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span>   <span style="color: rgb(32, 64, 160);">TempMessage</span> <span style="color: rgb(32, 64, 160);">msg</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">receiver</span>.<span style="color: rgb(32, 64, 160);">getData</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span>   <span style="color: rgb(32, 64, 160);">log</span>.<span style="color: rgb(32, 64, 160);">log</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">Level</span>.<span style="color: rgb(32, 64, 160);">INFO</span>, <span style="color: rgb(32, 64, 160);">String</span>.<span style="color: rgb(32, 64, 160);">format</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span>   <span style="color: rgb(0, 128, 0);">"Mote ID: %d, Count: %d, Temperature: %fC<span style="color: rgb(119, 221, 119);">\n</span>"</span>,   <span style="color: rgb(32, 64, 160);">msg</span>.<span style="color: rgb(32, 64, 160);">moteId</span>,   <span style="color: rgb(32, 64, 160);">msg</span>.<span style="color: rgb(32, 64, 160);">count</span>,   <span style="color: rgb(32, 64, 160);">msg</span>.<span style="color: rgb(32, 64, 160);">temperature</span>.<span style="color: rgb(32, 64, 160);">doubleValue</span><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">CELSIUS</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);">;</span>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span> <span style="color: rgb(68, 68, 255);"><strong>}</strong></span></blockquote>

<span style="color: rgb(68, 68, 255);"><strong></strong></span></pre>
<p>Sencillo hasta ahora, ¿no es así?</p>
<p>Pienso hacer una interfaz para poder mostrar esta información en Internet, esten pendientes. Por ahora los dejo con un video en el que se ve como corre el cliente que recibe los datos de los sensores:</p>
<p><object height="350" width="425"><param name="movie" value="http://www.youtube.com/v/SOTzSQP7vJ4"><embed src="http://www.youtube.com/v/SOTzSQP7vJ4" type="application/x-shockwave-flash" height="350" width="425"></embed></object></p>
<p>Buscar en otros sitios:</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/java" rel="tag">java</a>, <a href="http://www.blogalaxia.com/tags/perk" rel="tag">perk</a>, <a href="http://www.blogalaxia.com/tags/pervasive+computing" rel="tag">pervasive computing</a>, <a href="http://www.blogalaxia.com/tags/sentilla" rel="tag">sentilla</a>, <a href="http://www.blogalaxia.com/tags/kodegeek" rel="tag">kodegeek</a><br />Technorati:<a href="http://technorati.com/tag/java" rel="tag">java</a>, <a href="http://technorati.com/tag/perk" rel="tag">perk</a>, <a href="http://technorati.com/tag/pervasive+computing" rel="tag">pervasive computing</a>, <a href="http://technorati.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://technorati.com/tag/kodegeek" rel="tag">kodegeek</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/java" rel="tag">java</a>, <a href="http://www.to2blogs.com/tag/perk" rel="tag">perk</a>, <a href="http://www.to2blogs.com/tag/pervasive+computing" rel="tag">pervasive computing</a>, <a href="http://www.to2blogs.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://www.to2blogs.com/tag/kodegeek" rel="tag">kodegeek</a><br />Del.icio.us:<a href="http://del.icio.us/tag/java" rel="tag">java</a>, <a href="http://del.icio.us/tag/perk" rel="tag">perk</a>, <a href="http://del.icio.us/tag/pervasive+computing" rel="tag">pervasive computing</a>, <a href="http://del.icio.us/tag/sentilla" rel="tag">sentilla</a>, <a href="http://del.icio.us/tag/kodegeek" rel="tag">kodegeek</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/05/17/como-medir-temperatura-desde-java-usando-perk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pervasive computing with Sentilla Perk</title>
		<link>http://kodegeek.com/blog/2008/05/13/pervasive-computing-with-sentilla-perk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pervasive-computing-with-sentilla-perk</link>
		<comments>http://kodegeek.com/blog/2008/05/13/pervasive-computing-with-sentilla-perk/#comments</comments>
		<pubDate>Wed, 14 May 2008 01:21:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[javaone]]></category>
		<category><![CDATA[perk]]></category>
		<category><![CDATA[sentilla]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1255</guid>
		<description><![CDATA[No es Sun Spot, es Perk Sentilla (mire lo pequeño que es comparado con mi pluma) Para quienes visitan este blog, quizas recuerden que yo tenia tiempo salivando por un Sun Spot; El problema: el precio, $700+ por el pecho. No tengo tanto dinero como para gastarlo en uno de estos juguetes, sin embargo la [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/josevnz/2487596223/" title="Perk from Sentilla by josevnz, on Flickr"><img src="http://farm3.static.flickr.com/2228/2487596223_d341afc461_o.jpg" alt="Perk from Sentilla" height="270" width="360" /><br />No es Sun Spot, es Perk Sentilla (mire lo pequeño que es comparado con mi pluma)</a></p>
<p>Para quienes visitan este blog, <a href="http://kodegeek.com/archivo/2007_03_01_index.shtml">quizas recuerden que yo tenia tiempo salivando</a> por un <a href="http://www.sunspotworld.com/">Sun Spot</a>; El problema: <span style="font-style: italic;">el precio, $700+</span> por el pecho.</p>
<p>No tengo tanto dinero como para gastarlo en uno de estos juguetes, sin embargo la gente de <a href="http://www.sentilla.com/">Sentilla</a> sacó una versión un poco más limitada (pero con interés comercial) llamada Perk, la cual costo solamente $199 en JavaOne.</p>
<p>Asi que si, decidí jugar un poco con Perk <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Mi única queja personal del Perk es que el software de desarrollo solamente se instala bajo Windows y solamente soportan Eclipse (no tan malo, ya que yo lo se usar bien).</p>
<p>Aún no he empezado, pero ya corrí por algunos de los ejemplos y tengo varias ideas de lo que quiero hacer.</p>
<p><span style="font-style: italic;">¡Dominación mundial! <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></p>
<p>Buscar en otros sitios:</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/sentilla" rel="tag">sentilla</a>, <a href="http://www.blogalaxia.com/tags/perk" rel="tag">perk</a>, <a href="http://www.blogalaxia.com/tags/java" rel="tag">java</a>, <a href="http://www.blogalaxia.com/tags/javaone" rel="tag">javaone</a><br />Technorati:<a href="http://technorati.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://technorati.com/tag/perk" rel="tag">perk</a>, <a href="http://technorati.com/tag/java" rel="tag">java</a>, <a href="http://technorati.com/tag/javaone" rel="tag">javaone</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/sentilla" rel="tag">sentilla</a>, <a href="http://www.to2blogs.com/tag/perk" rel="tag">perk</a>, <a href="http://www.to2blogs.com/tag/java" rel="tag">java</a>, <a href="http://www.to2blogs.com/tag/javaone" rel="tag">javaone</a><br />Del.icio.us:<a href="http://del.icio.us/tag/sentilla" rel="tag">sentilla</a>, <a href="http://del.icio.us/tag/perk" rel="tag">perk</a>, <a href="http://del.icio.us/tag/java" rel="tag">java</a>, <a href="http://del.icio.us/tag/javaone" rel="tag">javaone</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/05/13/pervasive-computing-with-sentilla-perk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

