Editing Termómetro conectado online

Jump to: navigation, search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
 
== Termómetro conectado online ==
 
== Termómetro conectado online ==
  
ESTADO: Versión Inicial
+
ESTADO: Verisón Inicial
 
+
 
Miembros: [[User:Tumaku]]
 
Miembros: [[User:Tumaku]]
  
[[Online Thermometer|English version]]
 
  
  
 
=== Objetivo ===
 
=== Objetivo ===
 
Publicar online la temperatura de un térmometro a través de los servidores en la nube de electricImp, Carriots y Ducksboard
 
Publicar online la temperatura de un térmometro a través de los servidores en la nube de electricImp, Carriots y Ducksboard
 
[[File:Flow_eImp_carriots_ducksboard.jpg|860px]]
 
 
 
[[File:HW_Temperature_eImp.JPG|860px]]
 
  
 
=== Motivación ===
 
=== Motivación ===
Empezar a trabajar sobre un proyecto real con las muestras que electricImp ha donado a Makespace.
+
Empezar a trabajar sobre un proyecto real con las muestras que electric imp ha donado a Makespace.
 
Si se instala en el espacio, el proyecto permite consultar desde interner la temperatura real de Makespace Madrid
 
Si se instala en el espacio, el proyecto permite consultar desde interner la temperatura real de Makespace Madrid
  
Line 46: Line 39:
 
El sensor de temperatura DHT11 es muy sencillo de utilizar pero no es "compatible" con el HW del imp debido a su protocolo "propietario" para leer la temperatura y a su alimentación a 5V (el imp sólo funciona a 3.3V). En el propio foro de electricImp recomiendan utilizar un micro intermedio (arduino) para leer la temperatura y pasar esa lectura al imp a través de una conexión serie [http://forums.electricimp.com/discussion/comment/7224#Comment_7224]
 
El sensor de temperatura DHT11 es muy sencillo de utilizar pero no es "compatible" con el HW del imp debido a su protocolo "propietario" para leer la temperatura y a su alimentación a 5V (el imp sólo funciona a 3.3V). En el propio foro de electricImp recomiendan utilizar un micro intermedio (arduino) para leer la temperatura y pasar esa lectura al imp a través de una conexión serie [http://forums.electricimp.com/discussion/comment/7224#Comment_7224]
  
Para leer la temperatura del sensor DHT11 desde Arduino nos basamos en la librería y el skecth de Rob Tilliart en [http://arduino-info.wikispaces.com/DHT11-Humidity-TempSensor]. El enlace describe como instalar y utilizar la [http://arduino-info.wikispaces.com/file/view/DHT11.zip/390039522/DHT11.zip librería] desde el IDE de Arduino.
+
Para leer la temperatura del sensor DHT11 desde Arduino nos basamos en la librería y el skecth de Rob Tilliart en [http://arduino-info.wikispaces.com/DHT11-Humidity-TempSensor]. El enlace describe como instalar y utilizar la librería desde el IDE de Arduino.
  
 
'''Nota:''' La foto del sensor DHT11 en el enlace anterior muestra que tiene 4 PINes en su parte inferior. Sin embargo, el sensor montado sobre una pequeña place PCB vendido en DealeXtreme [http://dx.com/p/arduino-digital-temperature-humidity-sensor-module-121350] sólo expone 3 PINes. La siguiente foto describe la función de cada uno de esots PINes:  
 
'''Nota:''' La foto del sensor DHT11 en el enlace anterior muestra que tiene 4 PINes en su parte inferior. Sin embargo, el sensor montado sobre una pequeña place PCB vendido en DealeXtreme [http://dx.com/p/arduino-digital-temperature-humidity-sensor-module-121350] sólo expone 3 PINes. La siguiente foto describe la función de cada uno de esots PINes:  
Line 103: Line 96:
  
 
'''Importante:''' La conexión serie del Arduino utiliza los pines 7 y 8 (no los pines 0 y 1)
 
'''Importante:''' La conexión serie del Arduino utiliza los pines 7 y 8 (no los pines 0 y 1)
 
 
[[File:Esquema Sensor Temperatura con Arduino bb.png|600px]]
 
  
 
==== 3er Paso: Crear una cuenta y un dispositivo en el servidor de Carriots ====
 
==== 3er Paso: Crear una cuenta y un dispositivo en el servidor de Carriots ====
Line 118: Line 108:
 
* Sensor: Temperature
 
* Sensor: Temperature
 
* Enabled: Seleccionado (Carriots descarta las medidas recibidas del dispositivo si no está marcado como "Enabled")
 
* Enabled: Seleccionado (Carriots descarta las medidas recibidas del dispositivo si no está marcado como "Enabled")
 
[[File:CarriotsDevice.jpg]]
 
  
 
==== 4º Paso: Recepción de la temperatura por el 'imp' y subida a la nube de Carriots ====
 
==== 4º Paso: Recepción de la temperatura por el 'imp' y subida a la nube de Carriots ====
 
En el proyecto [[Hola Mundo eImp]] ya se explicó que electricImp permite programar tanto una aplicación local en el dispositivo 'imp' como un "agente" en la nube en el servidor de electricImp. Esta doble posibilidad facilita la implementación de servicios en Internet y la vamos a utilizar para enviar al servidor de Carriots los datos de temperatura recibidos desde Arduino.
 
En el proyecto [[Hola Mundo eImp]] ya se explicó que electricImp permite programar tanto una aplicación local en el dispositivo 'imp' como un "agente" en la nube en el servidor de electricImp. Esta doble posibilidad facilita la implementación de servicios en Internet y la vamos a utilizar para enviar al servidor de Carriots los datos de temperatura recibidos desde Arduino.
 
Se recomienda repasar la sección "2º Paso: Cargar la aplicación Hola Mundo" del proyecto [[Hola Mundo eImp]] antes de seguir con este paso.
 
Se recomienda repasar la sección "2º Paso: Cargar la aplicación Hola Mundo" del proyecto [[Hola Mundo eImp]] antes de seguir con este paso.
 
[[File:EImpConsole.jpg]]
 
  
 
* Hacer login en la página de electric imp para acceder al IDE
 
* Hacer login en la página de electric imp para acceder al IDE
Line 253: Line 239:
  
 
Tras crear la cuenta, el siguiente paso es personalizar un panel o "dashboard". Utilizaremos el "Main dashboard" que se genera por defecto al crear la cuenta. Vamos a añadir dos "widgets" o ventanas al dashboard. En una de ellas simplemente mostraremos el último valor de temperatura recibido. En el otro, mostraremos una lista o "timeline" de los últimos valores reportados.
 
Tras crear la cuenta, el siguiente paso es personalizar un panel o "dashboard". Utilizaremos el "Main dashboard" que se genera por defecto al crear la cuenta. Vamos a añadir dos "widgets" o ventanas al dashboard. En una de ellas simplemente mostraremos el último valor de temperatura recibido. En el otro, mostraremos una lista o "timeline" de los últimos valores reportados.
 
[[File:Ducksboard.jpg]]
 
  
 
Para definir un nuevo widget, pulsar el botón "+" en la esquina superior izquierda del dashboard. En la siguiente página, pulsar "Show your own data" (en la parte inferior de la pantalla).  
 
Para definir un nuevo widget, pulsar el botón "+" en la esquina superior izquierda del dashboard. En la siguiente página, pulsar "Show your own data" (en la parte inferior de la pantalla).  
Line 271: Line 255:
 
* YOUR API KEY: valor que se incluye en la cabecera de la petición http e identifica al cliente que envía el dato
 
* YOUR API KEY: valor que se incluye en la cabecera de la petición http e identifica al cliente que envía el dato
 
En el siguiente paso se utilizarán estos dos valores.
 
En el siguiente paso se utilizarán estos dos valores.
 
[[File:Ducksboard_Widget.jpg]]
 
  
 
El segundo widget presentará el "timeline" de los últimos valores de temperatura recibidos en Ducksboard. En la patalla principal del "Main dashboard" volver a pulsar el botón "+" y luego "Show your own data". Ahora seleccionar "Your own text", elegir "Timelines" y en ella la opción "Size: 1 column/2 rows". Como el widget anterior, utilizaremos los valores PUSH DATA TO THIS URL y YOUR API KEY en el siguiente paso.
 
El segundo widget presentará el "timeline" de los últimos valores de temperatura recibidos en Ducksboard. En la patalla principal del "Main dashboard" volver a pulsar el botón "+" y luego "Show your own data". Ahora seleccionar "Your own text", elegir "Timelines" y en ella la opción "Size: 1 column/2 rows". Como el widget anterior, utilizaremos los valores PUSH DATA TO THIS URL y YOUR API KEY en el siguiente paso.
Line 283: Line 265:
 
La plataforma de Carriots permite definir "listeners", bloques de código que se ejecutan cuando suceden determinados eventos, como por ejemplo la recepción de una nueva medida de un sensor. Este código se ejecuta en la plataforma en la nube de Carriots y se programa en groovy, un lenguaje dinámico basado en la máquina virtual de Java (JVM). Básicamente un listener define una regla basada en una condición. Si pasa A entonces ejecuta B y, si no, ejecuta C.  
 
La plataforma de Carriots permite definir "listeners", bloques de código que se ejecutan cuando suceden determinados eventos, como por ejemplo la recepción de una nueva medida de un sensor. Este código se ejecuta en la plataforma en la nube de Carriots y se programa en groovy, un lenguaje dinámico basado en la máquina virtual de Java (JVM). Básicamente un listener define una regla basada en una condición. Si pasa A entonces ejecuta B y, si no, ejecuta C.  
  
[[File:Carriots_listener.jpg]]
+
La documentación de Carriots incluye un tutorial detallado sobre cómo crear un ''listener'' [https://www.carriots.com/tutorials/create_listener]. Siguiendo este tutorial vamos a ver cómo enviar los valored de temperatura a Ducksboard. En la [https://cpanel.carriots.com/listener/new# página de creación de un nuevo listener] se definen los siguientes parámetros:
 
+
La documentación de Carriots incluye un tutorial detallado sobre cómo crear un ''listener'' [https://www.carriots.com/tutorials/create_listener]. Siguiendo este tutorial vamos a ver cómo enviar los valores de temperatura a Ducksboard. En la [https://cpanel.carriots.com/listener/new# página de creación de un nuevo listener] se definen los siguientes parámetros:
+
  
 
* Name: el valor que queramos darle a este listener (por ejemplo "temperaturaDucksboard")
 
* Name: el valor que queramos darle a este listener (por ejemplo "temperaturaDucksboard")
Line 318: Line 298:
 
               '"https://app.ducksboard.com/static/img/timeline/green.gif" , "content":"Tiemstamp: '+ d.toString() +'"}}';
 
               '"https://app.ducksboard.com/static/img/timeline/green.gif" , "content":"Tiemstamp: '+ d.toString() +'"}}';
 
         basicHttp2.send();
 
         basicHttp2.send();
 
El código de la claúsula ''Then'' simplemente envía dos peticiones http POST al servidor de Duckstore siguiendo el formato JSON de su API. La primera petición se envía al widget ''Counter'' y la segunda al widget ''Timeline''. La doucmentación de Carriots incluye un [https://www.carriots.com/tutorials/others_APIs/ducksboard tutorial para integrar Ducksboard] que explica en detalle este código .
 
 
'''Importante:''' sustituir en el código los valores ''your_ducksboard_api_key, your_ducksboard_PUSH_URL_counter_widget, your_ducksboard_PUSH_URL_timeline_widget'' por los valores que se han obtenido en el paso 5.
 
 
Una vez creado el listener, cualquier lectura de temperatura recibida por Carriots desde electricImp (paso 4) será reenviada a los dos widgets de Ducksboard. Además la medida también quedará almacenada en el servidor de Carriots
 
 
'''Nota: ''' Los datos de temperatura se podrían enviar directamente desde el agente de electricImp a los widgets de Ducksboard sin necesidad de pasar por el servidor de Carriots, pero en ese caso se perdería la serie histórica de medidas.
 
  
 
=== Enlaces ===
 
=== Enlaces ===
 
* Ducksboard público del sensor de Temperatura utilizado para construir el ejemplo: [https://public.ducksboard.com/YBhxqTLwFOJA-D8OtZeE/]
 
* Ducksboard público del sensor de Temperatura utilizado para construir el ejemplo: [https://public.ducksboard.com/YBhxqTLwFOJA-D8OtZeE/]
[[File:Ducksboard_TempMSM.jpg]]
+
* Repositorio en github con todo el código fuente:
 
+
 
+
[[Category:Proyectos]]
+
[[Category:Internet de las cosas]]
+
[[Category:Electric Imp]]
+

Please note that all contributions to Wiki Makespace Madrid may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Wiki Makespace Madrid:Copyrights for details). Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to type the two words you see in the box below:

Cancel | Editing help (opens in new window)