Envio de tweets con Netduino 3


En 2011, el autor misenhower  publicó   una biblioteca de cliente de la API OAuth de Twitter para Micro net llamado MicroTweet que  permitía enviar tweets  usando una placa Netduino Plus y Netduino 2 Plus.Han pasado ya  más 5  años  y desde luego el API v1.0 de  Twitter  ha quedada  obsoleta 8   (y desactivada)  a partir de que  Twitter comenzara a aplicar el uso de conexiones de SSL a extremos de acceso al API , lo cual significa que la biblioteca original de MicroTweet no ha sido funcional durante mucho tiempo..

Después de la aparición de Netduino 3  , que ha  incorporado entre  su  muchas nuevas características soporte SSL, el autor  ha visto  interesante revisar esta biblioteca  actualizandola con nuevos requerimientos de API de Twitter. El resultado es MicroTweet 2, cuyo código  ya está disponible  en GitHub ,  y también como un paquete binario de NuGet.

MicroTweet 2 es pues una reescritura completa de la biblioteca original contando  con varias características nuevas útiles para proyectos NETMF . Como requisitos  necesita  NETMF v4.3 , así como una placa  que soporte SSL.

Algunas de las características diferenciadoras  respecto  a la versión anterior son las siguientes

  • Se usa  la clase HttpWebRequest estándar (de System.Http) en lugar de un cliente HTTP a la medida. Esto es en parte debido al nuevo requisito de HTTPS, y en parte porque las más modernas placas  NETMF tiene mucho más espacio de programa que la versión de Netduino Plus .El original Netduino Plus tenía solamente 64 KB de espacio de código disponibles. Ensamblar  System.Http habría exigido más de la mitad de ese espacio, dejando muy poco espacio para el código de usuario. Netduino 3 Wi-Fi cuenta con más de 1.400 KB de espacio de código así como tras  modernas placasNETMF que tienen al menos 384 KB, por lo que ahora es mucho menos preocupante de lo que solía ser.
  • La original biblioteca de MicroTweet podría realmente hacer una cosa: publicar tweets. El autor siempre tenía la intención de añadir más características, pero la memoria limitada de la original Netduino Plus a analizar las respuestas de la API de Twitter lo convertian en una tarea relativamente difícil.El 3 de Netduino tiene significativamente más memoria RAM, por lo que ahora es mucho más fácil de procesar las respuestas recibidas desde Twitter.
  • Todas las respuestas de la API de Twitter se serializan como JSON, así que para 2 de MicroTweet el autor construyó un parser JSON. La aplicación es bastante simple: se toma una matriz de caracteres y va a través de él, analizandocarácter por carácter. Existen otros analizadores JSON para NETMF pero el autor quería construir uno propio para permitir una mayor flexibilidad al añadir cuenta y optimización de rendimiento. En la construcción de esta biblioteca encontró que el Netduino 3 , por decirlo suavemente, no es excesivamente rápido en el análisis de las respuestas JSON(toma alrededor de 4 segundos para analizar una respuesta de 20KB, lo cual es mucho pues  además hay que sumar el tiempo que tarda en recibir la respuesta en primer lugar, que se suma al menos unos segundos más para el tiempo total de procesamiento).
  • La versión anterior de MicroTweet utiliza la bibliotecaMicroLinq .Para MicroTweet 2 se  ha quitado esta dependencia y añadido un método de tipo de inserción sencilla para controlar esta necesidad. Haciendo MicroTweet enteramente autónomo debe ayudar a hacer un poco más fácil mantener actualizado el proyecto.

 

Esta biblioteca como vamos ver puede ser utilizada para registrar y recuperar tweets directamente desde un dispositivo NETMF través de la API de Twitter.

 

 

Para empezar  primero deberá  hacer referencia a la biblioteca de MicroTweet, bien Agregando  el proyecto deMicroTweet a la solución de VS o simplemente instalando la biblioteca a través de NuGet.

Para instalarlo desde NuGet, ejecute el siguiente comando en la consola del administrador de paquetes:

Install-Package MicroTweet

Pueden encontrar instrucciones para usar NuGet y la consola del administrador de paquetes   aqui.
Una vez haga referencia a  MicroTweet assembly  en su aplicación, agregue una  Directiva para el espacio de nombres MicroTweet  en la parte superior del archivo de programa (por ejemplo, Program.cs):
 using MicroTweet;

También, si utiliza DHCP, puede que desee esperar a que una dirección IP para ser adquirida antes de realizar cualquier operación de red, aunque  también puede hacer esto marcando el valor de   IPAddress.GetDefaultLocalAddress()  en el comienzo de su   programa, por ejemplo usando el siguiente código

while (IPAddress.GetDefaultLocalAddress() == IPAddress.Any) 

    Thread.Sleep(50);

 

Ajuste de la hora actual

Es importante destacar  que  las solicitudes de la API de Twitter deben tener un válido timestamp (actual), por  lo que el autor ha incluido  para nuestra comodidad  una clase  SNTP    dentro de la biblioteca MicroTweet para recuperar el tiempo actual de un servidor NTP.

Puede actualizar la hora actual en su placa  puede usar  el código siguiente:

Microsoft.SPOT.Hardware.Utility.SetLocalTime(Sntp.GetCurrentUtcTime());

Inicializando  TwitterClient

Para usar la API de Twitter desde la aplicación usted debe primero registrarlo con Twitter para obtener un conjunto de claves API. Para ello tendrá que ir a la página de gestor de aplicaciones de Twitter para crear una nueva aplicación y obtener las claves necesarias. Usted recibirá dos juegos de llaves: una para la aplicación que creó y otra para su cuenta de usuario acceder a la API a través de la aplicación. Éstas  claves se conocen como las credenciales de la aplicación y las credenciales de usuario.

Puede inicializar una nueva instancia de TwitterClient con un código similar al siguiente:

// Set up application and user credentials
var appCredentials = new OAuthApplicationCredentials()
{
    ConsumerKey = "YOUR_CONSUMER_KEY_HERE",
    ConsumerSecret = "YOUR_CONSUMER_SECRET_HERE",
};
var userCredentials = new OAuthUserCredentials()
{
    AccessToken = "YOUR_ACCESS_TOKEN",
    AccessTokenSecret = "YOUR_ACCESS_TOKEN_SECRET",
};

// Create new Twitter client with these credentials
var twitter = new TwitterClient(appCredentials, userCredentials);

 Enviando  un tweet
Enviando un Tweet uso el método SendTweet para enviar un tweet:

try
{
    var tweet = twitter.SendTweet("Trying out MicroTweet!");
}
catch (Exception e)
{
    // Couldn't send the tweet, the exception may have more information
}

 

Si se recibe un error de API de Twitter, se producirá un TwitterException con más detalles.La propiedad de mensaje de la excepción contiene el mensaje de error real proveniente de Twitter.

 

Recuperar su línea de tiempo inicio

Utilice el método GetHomeTimeline para recuperar los más recientes tweets y retweets, escritos por personas que siguen:

 

try
{
    var tweets = twitter.GetHomeTimeline();
    foreach (Tweet tweet in tweets)
        Debug.Print("Tweet from @" + tweet.User.ScreenName + ": \"" + tweet.Text + "\"");
}
catch (Exception e)
{
    // Couldn't retrieve the timeline, the exception may have more information
}

GetHomeTimeline acepta dos argumentos, sinceID y maxID, para especificar la gama de tweets para recuperar.

Puede utilizar argumentos con nombre para especificar estos valores.

Por ejemplo: var tweets = twitter. GetHomeTimeline(maxID: 603281686600683520);
Recuperar la línea de tiempo de un usuario específico

Utilice el método GetUserTimeline para ver los tweets y retweets publicadas por un usuario específico:

try
{
    var tweets = twitter.GetUserTimeline("twitter");
    foreach (Tweet tweet in tweets)
        Debug.Print("Tweet from @" + tweet.User.ScreenName + ": \"" + tweet.Text + "\"");
}
catch (Exception e)
{
    // Couldn't retrieve the timeline, the exception may have more information
}

De un forma parecida a GetHomeTimeline, puede especificar la gama de tweets para recuperar con sinceID y maxID: var tweets = twitter. GetUserTimeline («twitter», sinceID: 600728701584576512);

Otras clases de TwitterClient

Hay  en esta biblioteca   algunos otros métodos muy útiles:

GetCurrentUser puede utilizarse para verificar las credenciales proporcionadas (claves de API). Si las credenciales son válidas, se devolverá un objeto de usuario con los detalles para el usuario de autenticación.
GetUser recupera la información del usuario con el nombre de usuario especificado o el ID.

Proyecto de muestra

MicroTweet 2 incluye un proyecto de muestra simple que envía un tweet y recupera los últimos tweets de personas que siguen.No hay ninguna funcionalidad de hardware específico en el proyecto de ejemplo incluido, funciona igualmente bien en cualquier junta (o incluso el emulador NETMF).

El autor pensó que sería divertido hacer un proyecto de muestra basado en hardware simple, así que aquí está el reloj de seguidores de Twitter:

Este proyecto recupera  datos de usuario y muestra su actual cuenta de seguidor en un display de 7 segmentos. Usted podría también, por supuesto, configurar para recuperar el recuento de seguidores de cualquier usuario en Twitter. Aquí está el código para este proyecto.

 

 

 

Fuente aqui

Cónstruyase un despertador inteligente por menos de 2€


Estamos todo el día hablando del hogar inteligente y a veces se echan en falta que los fabricantes inviertan en cosas tan básicas como el dormir.

Los despertadores de toda la vida han acabado por convertirse en objetos odiosos. A nadie le gusta esa sensación de ruptura abrupta del sueño que producen los despertadores cuando llega la hora convenida,  así como también la tediosa  tarea de todos lo días de estar conectándolo o conectándolo  en función del día de la semana que sea para que nos despierte según nuestras necesidades   con el riesgo posible de que nos olvidemos de conectarlo. Es obvio que el paso necesario es hacia el despertador inteligente, aquel que sea más amable al sacarnos de nuestros sueños y por supuesto no haya que estar pendiente de conectarlo o desconectarlo  en función de nuestras necesidades personales

Uno podría pensar que en el mundo de los despertadores ya está todo inventado, pero con la llegada de los smartphones parece que el asunto no ha hecho más que empezar. Estamos en pleno siglo XXI ¿no? así que este siglo  tecnológico uno no puede esperar a despertarse con un clásico reloj   digital de display de leds  de los 70/’s o un  lcd  a pilas , por muy  bonitos que sean …

Si  dispone de un viejo terminal Android   que  no use porque quizás se haya quedado obsoleto  , existe un sinfín de posibilidades  de darle  una segunda vida , entre ellas la que proponemos es este post: convertirlo en un reloj-despertador inteligente:

 

IMG_20160415_184339

En el caso de Android (aunque también es posible encontrar opciones para  Symbian y windows phone ) encontramos muchas aplicaciones de  despertadores que, como poco, son muy originales y lo cierto es que le sorprenden no ya por el sonido que emiten para despertarte, sino por el sistema que utilizan para hacerlo y las características que puede encontrar.

Antes  de personalizar nuestro viejo smartphone  ,  tendremos que dotarle de un soporte estable  para que el teléfono  sea visible y este estable

Existen en el mercado  multitud de soportes  que sin  duda   harán de sobra su cometido , pero si no dispone de este, existe una opción muy económica :  los  organizadores con abrazadera de suspensión recogecables los cuales básicamente son base adhesiva de goma con una apertura para hacer pasar cables.

Estos soportes se pueden comprar por muy poco dinero (unos 2€) en  establecimientos especializados y también en Amazon :Cable Organizador Abrazadera de Suspensión Recogecables Fijador Holder Cargador

2016-04-16_09h29_31

 

Para utilizarlos como soporte simplemente ,usaremos dos de ellos, le quitaremos el auto-adhesivo  y  haremos pasar  los dos extremos del teléfono por las canaladuras  de los  soportes procurando que no  haga presión por la parte del sensor táctil:

IMG_20160415_184258

Por supuesto no necesitara ninguna tarjeta SIM , y una vez que instalemos el sw, tampoco será necesaria una  conexiona wifi ( en función de las utilidades que desee usar ) ,pudiéndolo  dejar «en modo avión» para que no emita ningún tipo de señal de RF

Como el gasto de energía sera mínimo ,  basta conectarle  un cargador USB  que tengamos que ya no usemos  quizás por su baja corriente de salida

Ahora  que tenemos todos los componentes , veamos las aplicaciones Android que nos van a  dar vida a nuestro   viejo smartphone convirtiéndolo en un fantástico  despertador del siglo XXI:

 

Timely es uno de los mas novedosos relojes despertadores para Android, con una novedosa  experiencia de usuario gracias  a  la  integración con la nube para copias de seguridad y sincronización de tus alarmas con múltiples dispositivos.

Configurar una alarma nunca ha sido tan fácil  desde la que podemos fijar una alarma con solo hacer swipe desde el lateral de la pantalla y deslizando una barra hasta la hora que queramos, es decir basta con  deslizar el dedo desde el borde de la pantalla y establecer la hora deseada arrastrando la barra  y presionar para hacer ajustes de 5 minutos.

Listo, así habremos activado la alarma básica, pero también se puede personalizar y configurar con distintos parámetros con sólo pulsar sobre ella, entre ellos fijar los días de repetición(lo  cual es  una de carestericticas mas diferenciadoras respecto a los despertadores convencionales ), el tono, vibración

Incluso para los más duros  de despertar  como otras apps  hay puzles y retos para desactivar la alarma.Puede usar desafíos con sus alarmas para asegurarse de que se ha levantado realmente cuando apaga una alarma.Y si  presionar botones no es suficiente lujo puede dar la vuelta a su teléfono para callarlo. Además, Timely reconoce cuando se  levanta el teléfono y reduce la intensidad de la alarma bajando el volumen.

También dispone de la función Smart Rise que esta basada en la teoría de los ciclos de sueño, activando una melodía suave durante los 30 minutos previos a la alarma para despertarnos del sueño profundo sin sobresaltarnos.

Otra característica es la personalización  permitiendo escoger entre temas de color que coincida con su propio estilo o bine usando la  herramienta de diseño para crear una apariencia completamente nueva. Incluso tiene  relojes de diseño hechos a mano para  adaptarse a su estilo.

La aplicación también tiene un sistema de sincronización de alarmas entre dispositivos así, si descartamos o creamos una en el teléfono, también lo hará en la tablet y además tiene multitud de temas de diferentes colores y estilos para todos los gustos, e incluso puedes crear el suyo exclusivo.

Gracias a la conectividad  permite gestionat, descarta y pausar alarmas en todos sus dispositivos a la vez. La sincronización en la nube permite pues una experiencia transparente entre teléfonos y tabletas (adicionalmente, todo se respalda).

 

 

Despertador  gratis  es una  aplicación  veterana  mucho mas sencilla que la anterior ,la cual como su nombre indica  esta libre de pagos. Existen infinidad de aplicaciones similares  incluso con funciones  mas avanzadas pero esta cumple  con su función

2015-10-04_23h45_27

 

Algunas de  las funciones básicas de esta aplicación:

★ Reloj ★

  •  Fabulosa pantalla verde LCD
  • Vista horizontal y vertical.
  • Formato horario de 12 o 24 horas
  • Mostrar/ Ocultar el secundero
  • Autobloqueo del tiempo personalizable

★ Alarma ★

  •   Super big Snooze/Stop Alarm buttons
  • Botones de Snooze/ Stop Alarma super grandes
  • Multiple alarms supported
  • Soporta Multiples alarmas
  • 11 sonidos de alarma integrados: Ascendiente, Pájaros, Clásico, Cuco, Digital, Electrónico, Tono Alto, Mbira, Reloj Antiguo, Gallo, Timbre de Escuela
  • Sonido ON/OFF (Encendido / Apagado)
  • Volumen ajustable de Sonido
  • Snooze ON/OFF ( Encendido/ Apagado)
  • Snooze time personalizable
  • Vibración ON/OFF
  • Aparición Gradual de Sonido: despiertate cómodamente por la mañana.
  • La Alarma funciona incluso cuando la pantalla está bloqueada o el Android está en modo silencioso

 

 

 

El resultado es bastante «profesional» teniendo en cuenta  que hemos usado componentes que ya no necesitábamos:

IMG_20160415_184245

 

¿Cual es su aplicación favorita para despertar? No dude compartirla con toda la comunidad de este blog