Tutorial IoT con Fiware


Gracias a  Telefónica R&D Chile( Telefónica I + D Chile) nos  ofrecen   un interesantisimo tutorial  intruductorio sobre  IOT   concretamente usando la plataforma Orion Context Broker  (FIWARE ) con Arduino aunque puede extrapolarse  a otras placas de IoT ( por ejemplo Netduino ,Intel Edison o Raspberry Pi)

 

Un punto interesante para analizar el IoT (Internet of Things  )es el uso de las normas. Para el caso concreto vamos a revisar más adelante en la sección Orion Context Broker, una adaptación basada en la especificación OMA (Open Mobile Alliance) NGSI (Next Generation Service Interface).  En términos simples, esto significa que las peticiones HTTP o acciones que deben utilizarse son los que están actualmente empleados por los navegadores tales como GET, POST, DELETE y PUT para interactuar con el contexto Broker.

Configuración de hardware

Los componentes que vamos a utilizar son:

  •  Una placa Arduino (hay muchas alternativas, pero una versión con WiFi es esencial)
  •  Una placa protoboard
  •  LEDs
  •  Cables de conexión
  • Un router o un dispositivo celular que pueden ofrecer Wi-Fi (tethering)

Como se ha comentado en este blog , Arduino tiene su propia interfaz de desarrollo utilizando el lenguaje C ++ y se integra una serie de librerías para facilitar la  aplicación de prototipos. Esto no quiere decir que Arduino no se puede utilizar en entornos industriales o de alta demanda. Sin embargo, en estos escenarios cuestiones de costos por lo general conducen a la utilización de componentes ad-hoc.

Al observar la estructura, se puede reconocer algunos pines digitales en la parte superior y analógicas pines en la parte inferior (idéntico  a muchas otras placas como Netduino). Además, en la parte inferior, también  hay una  fila de conectores para alimentar al propia  placa u otras que se conecten. Por supuesto la  placa   también  tiene un conector a una toma de corriente y un conector mini USB, entre otros componentes, dependiendo de la versión de la tarjeta y si se utiliza add-on «escudos» o no.

Si conectamos un LED a la placa podemos hacerlo directamente, conectando el ánodo LED de pin digital 13 y el cátodo del   led  al pin de   GND como se ve aquí.  Hay que señalar que es interesante conectar  entre el pin digital 13 con una resistencia de 220 ohmios para proteger el diodo led , pero estrictamente podría omitirse dicha resistencia.

led.jpg

 

Por último, este mismo esquema se puede usar para agregar más LEDs o sensores de nuestra placa Arduino para que pueda añadir más funcionalidades. Para ello hay que recordar que en un tablero de alimentación corre horizontalmente en los puntos exteriores y vertical en los puntos interiores

 

Arduino, software and communications Arduino, software y comunicaciones

En este ejemplo  vamos a aprender cómo programar la placa Arduino con el fin de activar el LED se instaló en la segunda parte y se apaga. A continuación, vamos a utilizar una conexión a Internet con WIFI  en  la placa.

Como requisito previo, hay que ya hemos configurado el software de Arduino según nuestro sistema operativo. Además, hay que tener USB de la placa conectada a nuestro ordenador para cargar el programa a nuestra placa (  consulte  aquí para ver cómo instalar el software en una placa Intel Edison).

Debe onviamente seleccionar la versión del software que corresponde a su sistema operativo.  Una vez que el software está configurado e instalado abrimos nuestra IDE hasta el comienzo de la codificación.

sketc

 

Vamos  a ver  un ejemplo de la IDE Arduino.  Este ejemplo es específicamente para el IDE para los conjuntos de Intel, aunque los conceptos son los mismos. En la segunda fila de menú (donde el icono de comprobación es), encontrará los comandos para compilar y cargar nuestros desarrollos a la placa.   Si examina el código, tenemos dos funciones.  Uno es de configuración, donde las variables se inicializan y el bucle en el que se ejecutan las operaciones según se requiera. En el menú Archivo tenemos los ejemplos de opciones – 01 Básico – Blink. Esto mostrará una nueva ventana con el código necesario para poner a prueba nuestra LED:

/*

Blink Parpadeo

Se enciende un LED durante un segundo, luego se apaga durante un segundo, en repetidas ocasiones.

Este código de ejemplo está en el dominio público.

*/ Pin 13 tiene un LED conectado en la mayoría de las placas Arduino.

// Darle un nombre:

int led = 13;

// La instalación se ejecuta de rutina una vez cuando se presiona RESET:

void setup() { 

// Inicializar el pin digital como salida.

pinMode (led, OUTPUT);

}

// La rutina de bucle se ejecuta una y otra vez para siempre:

void loop() {

digitalWrite(led, HIGH);  //  Enciende el LED (ALTA es el nivel de tensión)

delay(1000);  // Espera un segundo

digitalWrite(led, LOW);  //  Apagar el LED haciendo que la tensión BAJA

delay(1000);  // Espera un segundo

}

El ejemplo que genera Arduino es bastante simple.  En la línea 10 se establece una variable con el número pin correspondiente en la placa . Posteriormente, el pasador la variable se  configura  como salida y se inicializa. Y, en el bucle, el LED se enciende y se apaga separado por un retraso de un segundo .

Antes de cargar el código anterior en la placa , el IDE se debe configurar para que sepa la placa  y qué puerto se  está utilizando:

Select Tools> Board> Intel Edison Seleccione Herramientas> Junta> Intel Edison ( para el caso de una placa Intel Edison)

Select Tools> Port> dev / ttyACM0 Seleccione Herramientas> Puerto> dev / ttyACM0

Ahora bien, si la tarjeta está correctamente conectada al puerto USB, podemos ‘Subir’ el código de la tarjeta (Ctrl + U) y deberíamos ver nuestra LED encendido y apagado de cada segundo.

 

Ahora para usar el wifi, tenemos que trabajar un poco más.  Por suerte, en los ejemplos de Arduino, tenemos una sección de WIFI con diferentes alternativas utilizando las soluciones de redes.  Entre ellos se encuentran los servidores Telnet y clientes, servidores Web y clientes, e incluso un cliente de Twitter.

CONSEJO: En nuestro caso, por motivos de simplicidad, podemos utilizar un cliente Web ya que vamos a enviar solicitudes posteriormente al corredor Orion Contexto utilizando el protocolo HTTP.  Tenga en cuenta que hay mejores soluciones, pero para los propósitos educativos vamos a tratar de minimizar el código tanto como sea posible.

<SPI.h>

<WiFi.h> >

/ ************************** /

/ * * Configuración de la instalación /

/ ************************ /

char ssid[] = «YourWifiSSID»;//Nombre de la red

char pass[] = «WifiPassword»; //Contraseña de red

char server[] = «130.206.80.47»;  // ORION IP address -> Create in /lab/ // Dirección IP ORION -> Crear en / lab /

int status = WL_IDLE_STATUS; int estado = WL_IDLE_STATUS; // we predefine the status as On but not connected // Nos predefinimos la condición pero no conectada

int led = 13; int LED = 13; // We initialize a variable to assign the pin number to which the led will be connected // Inicializamos una variable para asignar el número de identificación personal al cual se conectará el LED

/**

* Configuración Configuración Arduino

* (Ejecutar una sola vez)

**/

void setup() {

// Inititialization del puerto serie Arduino

Serial.begin(9600);

while (!Serial) {

// Esperar para el puerto serie para conectar. y Necesario para Leonardo solamente

}

// Comprobar que la placa tiene un escudo WiFi

if (WiFi.status() == WL_NO_SHIELD) {

Serial.println(«Wifi shield is not available»);

// No continúe con la instalación, o en otras palabras, se quedan aquí para siempre

while(true);

}

El código completo está disponible en:

https://bitbucket.org/tidchile/ecosystem/src/ https://bitbucket.org/tidchile/ecosystem/src/

FIWARE  y Orion Context Broker

Como se ha discutido anteriormente en este ejemplo, el Broker de Orión define un contexto como un servicio que en base al stándar  OMA NGSI 9/10 puede manejar el envío y recepción de información contextual.  ¿Qué significa esto?  En primer lugar, para manejar un gran número de mensajes de entidades y administrar las actualizaciones, consultas, y también se encargan suscripciones de datos de las entidades. Recordemos que, según la NGSI 9 y 10 estándares, nos ocupamos de las entidades como una abstracción de los nodos físicos o dispositivos utilizados en las soluciones de la IO.

En el ejemplo anterior, hemos hecho una solicitud de actualización a una entidad ya creada.  Pero primero vamos a revisar cómo trabajar con Orión. . Una manera simple de probar el servicio OCB es crear una cuenta en https://account.lab.fiware.org/ y crear una máquina virtual con Orion preconfigurada en la sección de la nube. Alternativamente, el sitio y el acceso GitHub de Orión descargar una máquina virtual para ejecutar en nuestro entorno local

Otra herramienta útil es un cliente REST, pero podemos usar cURL si parece más sencillo. RESTClient es un cliente para Firefox que es bastante fácil de usar.

Los aspectos de configuración de la OCB están fuera del alcance de este tutorial, ya que requeriría demasiados detalles.  En cuanto al Laboratorio fiware, es importante tener en cuenta que fiware proporciona máquinas virtuales en la nube de forma gratuita para probar fiware compontents. Sólo tiene que crear una cuenta para acceder a los servicios. Sólo una advertencia rápida. . A partir de hoy (19-03-2015) y temporalmente, España no tiene recursos disponibles, pero hay otras regiones en las que las máquinas virtuales se pueden crear.

Cuando tengamos las herramientas necesarias, la forma más básica para interactuar con la OCB es:

1. Creando una entidad:Para ello hay que tener en cuenta varios factores.  En primer lugar, la llamada se envía como una solicitud HTTP POST, por ejemplo, http://myhost.com:1026/v1/updateContext.  Con esto queremos decir que estamos ocupando la versión 1 del API con la operación updateContext.

También tenemos que definir varias variables en la cabecera de la solicitud:

Accept: application/json

Content-Type: application/json

X-Auth-Token: [TOKEN AUTHENTICATION]

En cuanto a la generación de tokens, la forma más sencilla es utilizar un script en Python creado por Carlos Ralli en GitHub. Se necesita una cuenta FIWAREy ejecutar el ‘get_token.py  se requiere la escritura’.

Después de configurar el encabezado de la solicitud, configurar el «cuerpo» de la solicitud mediante el siguiente código JSON:

{

«contextElements»:[

{

«type»:»LED»,

«isPattern»:»false»,

«id»:»LED001″, «

«attributes»:[

{

«name»:»switch»,

«type»:»bool»,

«value»:»false»

}

]

}

],

«updateAction»:»APPEND»

}

Esta es la estructura de un «contexto Elementos», que es un grupo de entidades con ciertos atributos, tales como, «isPattern» e «id», «tipo». » type »  se refiere a un tipo definido y permite la búsqueda de entidades por un tipo particular. «Id» es un atributo que debe ser único para cada entidad para ejecutar búsquedas en base a este ID. «IsPattern» se explicará más adelante en el punto No. 2.

También puede agregar una serie de atributos de la entidad en la propiedad «atributos», donde cada atributo se define por el «nombre», «tipo» y «valor». Por último, «updateAction» define si vamos a realizar un «añadir» o y «UPDATE».

Si todo va bien, vamos a recibir una respuesta 200 OK desde el servidor y que nos dará los detalles de la entidad creada:

{

«contextResponses» :

{

«contextElement» : {

«type» : «LED»,

«isPattern» : «false»,

«id» : «LED001», «

«attributes» :

{

«name» : «switch»,

«type» : «bool»,

«value» : «»

}

]

},

«statusCode» : { «

«code» : «200»,

«reasonPhrase» : «OK»

}

}

]

}

2. Consultar la entidad: Para consultar una entidad, la operación estándar es ‘queryContext’ que sería http://myhost.com:1026/v1/queryContext.También aplicamos las cabeceras que se describen en el punto No. 1 y el uso post.

El JSON utilizado en el cuerpo de la petición sería la siguiente:

{

«entities»:[

{

«type»:»LED»,

«isPattern»:»false»,

«id»:»LED001″

}

]

}

Aquí es donde puede utilizar «isPattern» en «verdadero» y trabajar bien en el campo «tipo» o el campo «id» con expresiones regulares si queremos ejecutar una búsqueda un poco más compleja. En el ejemplo anterior sólo estamos buscando la misma entidad creada a través de la «id».

También hay una manera más sencilla de hacer la misma consulta utilizando la siguiente solicitud: GET http://myhost.com:1026/v1/contextEntities/LED001 donde LED001 es el «id» de la entidad a buscar.

3. Actualización de la entidad: Esto es idéntico al punto No. 1, pero cambiando el atributo «updateAction» de «añadir» a «UPDATE».

Por último, la integración de todo lo que hemos revisado, seremos capaces de generar una acción desde una página Web sencilla que se puede implementar en un servidor remoto y, de hecho demostrar que el LED de la aplicación se activa de forma remota utilizando la OCB.

Para ello vamos a utilizar el LED001 de reciente creación, estableciendo el atributo «interruptor» de verdadero a falso y viceversa para comprobar la acción.

Nuestra web se vería así:

 

ejemplño

Para ello, el código html, css y js se comparten en:   https://bitbucket.org/tidchile/ecosystem/src/ https://bitbucket.org/tidchile/ecosystem/src/

 

 

 

Fuente    aqui

Reproductor offline y abierto


Se llama Meesic, y es un proyecto de código abierto español ,  escrito por el desarrollador español José Amuedo «spheras», el cual pretende ,tras la desaparición de grooveshere  ,ser una alternativa  ( eso si en local )  para  los que deseen reproducir sus archivos  MP3 desde cualquier lugar sin necesitar tener que llevarlos todos consigo

Messic  proviene de la unión de dos palabras:

  • Desastre: un estado sucio o desordenado de las cosas o de un lugar
  • Música: sonidos vocales o instrumentales (o ambos) combinados de tal manera  para producir belleza de la forma, la armonía, y la expresión de la emoción

El objetivo del proyecto es pues convertir el maremágnum  de archivos de música en una biblioteca de música de verdad ordenada y catalogada, pudiendo reproducirla  también de una manera cómoda y sencilla desde cualquier lugar en el que estemos sin depender de terceros.

Las principales características de Messic  son:

  • Totalmente abierto y libre! messic es totalmente libre y sin ningún beneficio personal. Tiene una licencia GPLv3 .
  • Ser un catálogo privado de la música lo más automático posible, y es propiedad sólo de usted. Usted puede ir siempre al sistema de archivos donde lo copia y conseguirlo.
  • Se reproduce la música en una interfaz muy cómoda y bonita.
  • Se ejecuta a través de la web, por lo que podría publicar este servicio en el hogar para cada dispositivo.
  • Es multiusuario.
  • Está enfocada a catalogar su biblioteca de música personal. Queremos gestionar y escuchar a nuestro propio catálogo de música en casa sin subir nada a la Internet.
  • No es necesario estar conectado a Internet para escuchar su música. Está disponible siempre en su red doméstica, o descargado de forma local en el dispositivo.

 

 

 

Meesic pretende ser fácil de instalar, así que  lo primero que tiene que hacer es descargarse   la aplicación básica que haga de servidor, la cual tendrá que ir en el ordenador que vaya a utilizar para alojar su música   Windows, Mac o Linux (acuérdese que tendrá que mantener el equipo siempre encendido, pues sin esta aplicación de servidor  funcionando, obviamente su servicio  de biblioteca musical no estará operativo)  y posteriormente ,si lo desea  instalar el cliente en cualquier dispositivo en su casa.

 

Respecto al servidor se puede descargar el instalador en la página oficial de Meesic, desde los enlaces  del repositorio de github para Linux, Mac y Windows. Obviamente debe seleccionar la versión más adecuada para su sistema y proceder a instalarlo:

  • messic 1.0.1 versión de la ventana del instalador
  • messic 1.0.1 versión de Windows .zip
  • messic 1.0.1 versión de Linux .GZ
  • messic 1.0.1 versión de Linux RPM
  • messic 1.0.1 versión de Linux DEB
  • messic 1.0.1 versión para Mac .GZ
  • messic 1.0.1 versión para Mac Instalador de DMG

 

Una vez instalado dicho  sw siguiendo el asistente , podrá  iniciar y detener el servicio,el cual  proporcionará un acceso web a la interfaz web de messic, es decir, una vez en servicio  se podría ver la interfaz web messic simplemente abriendo desde cualquier navegador moderno yendo a la dirección URL del dispositivo donde se instaló messic (probablemente algo similar a http: //192.168.1.X:. 8080 / messic .)  Esta URL dependerá del equipo en el que instaló el servicio messic en su red local … ( no se preocupe, el servicio messic le permitirá saber cómo es esa URL cuando se inicia).

Por lo tanto, si ha instalado el servicio de messic en cualquier ordenador de la red doméstica y ahora, desde este dispositivo, o desde cualquier otro, ya está listo para acceder a la interfaz web messic para administrar su música.

Una vez instalado y ejecutado,lo primero que tiene que hacer es ir a la opción Configuración para determinar en qué carpeta local quiere que se aloje la música que suba .Asimismo también podrá activar la opción de comunicaciones seguras o establecer el tiempo máximo de cada sesión.

Lo primero y obvio es  subir algo de música para messic: seleccione pues los archivos de audio que desee adjuntar para el álbum que está creando y cualquier otro recurso como cubiertas, artes, letras, y así sucesivamente …Se puede añadir toda la información adicional de su música(es decir los metadatos ) como puede ser el año de publicación, autor, observaciones, género, nombres de canciones, … o añadir la obtención de esta información de las etiquetas de mp3 de forma automática, o gracias a los servicios externos como freedb o Discogs, que también son compatibles con messic. A partir de ese momento  ya pude  usar esta interfaz web para escuchar su música siempre que lo desee, o incluso activar el protocolo DLNA para compartir su música con otros dispositivos en su hogar.

Una vez hecho esto ya podrá ir a la pestaña Principal. En ella sólo tendrá que darle a la opción Iniciar que te aparecerá arriba a la derecha y la aplicación se ocupará del resto. Cuando le aparezca en verde que el servicio está iniciado ya podrá abrir en una pestaña de tu navegador la URL que se te ha generado para acceder al cliente web.

Por otra parte, si el servicio messic está instalado en su casa, en la red, y no quiere publicarla  en Internet, entonces es probable que desee utilizar el cliente de teléfono inteligente Android pues este cliente de Android puede conectar con su servicio messic y escuchar su música desde allí, e  incluso puede descargar su música en el dispositivo con el fin de escuchar su música por todas partes, sin necesidad de estar conectado a su servicio messic.

En resumen  ,puede  conectarse a su Meetic de dos maneras, o a través de sus aplicaciones para Android disponibles en Google Play y Amazon o en la web con su APK, o utilizando cualquier navegador moderno con su cliente web.

Además de la opción de subir música, en la aplicación web también encontrará la opción de Inicio donde se le sugerirán canciones dependiendo de tus gustos, y un Explorar Música donde se le listan todos los discos de su colección. Asimsimo también tiene secciones para gestionar las listas de reproducción y para configurar tus parámetros de usuario o los del servidor.

Las versiones del cliente (no el servidor) para teléfonos inteligentes Android y Android TV son las siguientes:

  • messic Smartphone Android APK – Client 1.0.2
  • messic Smartphone Android en Google Play – Client 1.0.2
  • messic Android TV – Client 1.0.2

 

 

repro

 

En cuanto al cliente para dispositivos Android, con él podrá reproducir todas su colección de música online y descargarla en su dispositivo para poder reproducirla fuera de línea. Todo ello sin subir ni ceder tu música a ningún proveedor de terceros, ya que está utilizando su propio ordenador como servidor desde el que emitir.

Este cliente es capaz de conectarse a un servidor messic para reproducir música online u offline.Lógicamente es necesario disponer por tanto de un servidor messic al que conectarse, al menos la primera vez para descargar música en su dispositivo, o reproducirla directamente del servidor messic.

Con esta app se pueden acceder a  las siguientes funcionalidades:

  • Reproducir música online de un servidor messic
  • Descargar música de un servidor messic
  • Reproducir música offline

Tenga en cuenta que messic NO sube/cede tu música a ningún proveedor externo. Tan sólo almacena su música en su propio sistema. Un típico caso de uso es descargar el servidor messic e instalarlo en cualquier ordenador  de casa. Puede subir su música a messic a través de un navegador web desde cualquier otro ordenador de casa, utilizando messic desde un navegador. Después de eso, podrá escuchar su música en cualquier sitio, en cualquier momento, bien a través del servicio de música messic (web) o a través de esta aplicación android.

 

 descargado

Al acceder a este cliente por primera vez tendrá que crearse una primera cuenta de usuario, la cual será también de administrador. Después podrá ir creando más para quienes vayan a utilizar la aplicación, y durante el proceso podrá configurar aspectos como si quieres que se suban tus estadísticas para que se creen listas con las canciones que más o menos has escuchado.

mmes1

Una vez creado el usuario accederá al panel principal del cliente online,no puede utilizar tus carpetas ya existentes de música en su smartphone, por lo que tendrá que ir subiendo cada disco que quiera que esté disponible.

 

 

mme3

Para hacerlo tendrá que hacer click en la opción «Subir Música», y elegir los MP3 de cada disco incluyendo la imagen que quiera que se utilice como portada. La información del álbum puedes escribirla usted mismo, aunque también hay un asistente que utilizará la de los propios MP3 o webs como FreeDB o Discogs para obtener los metadatos.

mme2    mme4

 

 

 

 

La API de la aplicación y todo su código está disponible en la red, y lo puede encontrar en su repositorio de GitHub.