Como actualizar una hoja de calculo con un botón externo


 Ted Benson  queria  diseñar un botón simple que pueda pegarse a la pared y pulsar para registrar ciertos eventos asociados a la crianza de su hijo . Por suerte , Amazon acababa de empezar a enviar sus nuevos botones Dash , los cuales se pueden transformar en exactamente eso con sólo unos minutos, pero obviamente esa no pretende ser la utilidad de este dispositivo.

Los botones son pequeños, de plástico  y de un coste ínfimo (  5€) ,pero ahí no va mas pues ademas incluye  una batería y una conexión WiFi dentro. Amazon quiere que usted los pegue en el interior de sus puertase y utilizarlos para volver a pedir productos de uso cotidiano  como pueden ser los pañales o papel higiénico ( por ejemplo simplemente pulsando el botón, obtener un nuevo paquete de pañales  por medio del mensajero  en dos días).

Vamos a mostrarle cómo secuestrar y utilizar estos botones para casi cualquier cosa que desee. Aquí está una vista previa de vídeo corto de los resultados. Siga leyendo para ver cómo puede construir esto usted mismo en sólo unos minutos.

Video del resultado final. Puede conectar tantos botones como desee para grabar cosas alrededor de su casa. El retardo entre la pulsación del botón y el cambio de la hoja de cálculo se debe al proceso de arranque del hardware Dash.

Aquí está el truco: escuchar el botón para despertar y conectarse a la red.

Nuestro objetivo es detectar cuando uno de estos botones Dash se empuja y luego hacer algo más que ordenar más pañales en Amazon. El hack impresionante sería abrir el botón y reprogramarlo (personalmente me lo apunto)  pero  vamos a tomar la ruta fácil: sólo vamos a escribir un programa simple que rastrea nuestra red wifi para buscar  la evidencia de que el botón fue pulsado  y luego registra un punto de datos cuando escucha estos.

Resulta que Amazon nos dio una manera muy fácil de hacer esto porque estaban tan preocupados con el ahorro de energía pues estos  botones  se desactivan la mayor parte del tiempo para conservar la batería dentro. Sólo se encienden cuando son pulsados. Y eso significa que tienen que volver a conectarse a su red Wifi cada vez que son pulsados. Eso es fácil de detectar.

Los dispositivos de Internet no solo se conectan a una red Wifi y empiezan a hablar con Amazon: se presentan primero a la red local . Esta introducción se hace con algo llamado una sonda ARP , y es esencialmente una comprobación de seguridad para asegurarse de que la dirección MAC que el dispositivo va a utilizar como identificador ya no está siendo utilizada por otra persona.

Cada vez que pulsas un botón Dash, se vuelve a conectar a la red, causando una transmisión predecible  de llamada una sonda ARP que podemos detectar y actuar.

Eso es una gran noticia para nosotros: cada vez que se pulsa un botón Dash, se enciende su radio y transmite rápidamente el mensaje, «Hola! Mi nombre es [Dirección MAC]! «

Así, que conceptualmente, el problema esta resuelto pues sólo tenemos que:

  1. Evitar que el botón realice cualquier pedido
  2. Escuche las sondas ARP del botón Dash y
  3. Traducir esas sondas a actualizaciones de hojas de cálculo

 

 

Paso 1: Evite que el botón  lance una compra

 

Lo primero que debe hacer es configurar los botones para enviar mensajes cuando los pulse , pero en realidad no termines el proceso de  compre  . Cuando obtiene un botón Dash, Amazon le da una lista de instrucciones de configuración para empezar. Simplemente siga esta lista de instrucciones, pero no complete el paso final – no seleccione el producto particular que desea ordenar.

El último paso para el botón Huggies, por ejemplo, es seleccionar cuál de los varios productos Huggies desea. Simplemente no responda a esta pregunta y no tendrá que preocuparse de comprar nada.

 

Paso 2: Detectar cuando un botón se pulsa por  monitorizacion de sondas ARP

 Así que ahora su botón está enviando mensajes a la red cada vez que se empuja. El siguiente paso es oler la red WiFi para estos mensajes. Recuerde, estamos buscando algo llamado una sonda ARP. Para hacer eso, vamos a escribir un pequeño programa de Python usando una bibliotecallamada Scapy .

Solo copie y pegue el siguiente código:

from scapy.all import *

def arp_display(pkt):
   if pkt[ARP].op == 1: #who-has (request)
       if pkt[ARP].psrc == ‘0.0.0.0’: # ARP Probe
              print «ARP Probe from: » + pkt[ARP].hwsrc

print sniff(prn=arp_display, filter=»arp», store=0, count=10)

Con ese programa en ejecución – aquí está la parte de baja tecnología – se rastrea  un botón cuando es presionado. Aparecerá un mensaje después de unos segundos (¡los botones tardan un tiempo en encenderse!). Esa es la dirección MAC que identifica de forma exclusiva ese botón.

Cada vez que presiona el botón Dash, se despierta y emite una solicitud ARP. Al observar la salida de sniffer de estas solicitudes en tiempo real, puede aprender la dirección MAC de cada botón.

Ahora que conocemos las direcciones MAC, vamos a codificarlas en nuestro programa python  .

En este caso el código y las capturas de pantalla a continuación son para un ejemplo de boton. Sus direcciones se verán diferentes.

Aquí está el código modificado:

from scapy.all import *
def arp_display(pkt):
      if pkt[ARP].op == 1: #who-has (request)
          if pkt[ARP].psrc == ‘0.0.0.0’: # ARP Probe
            if pkt[ARP].hwsrc == ’74:75:48:5f:99:30′: # Huggies
                     print «Pushed Huggies»
            elif pkt[ARP].hwsrc == ’10:ae:60:00:4d:f3′: # Elements
                   print «Pushed Elements»
            else:
                   print «ARP Probe from unknown device: » + pkt[ARP].hwsrcprint sniff(prn=arp_display, filter=»arp», store=0, count=10)

Y aquí está la salida de la consola cuando presionamos un  botón mientras este programa se está ejecutando:

Ya casi terminamos! Nuestro código identifica cada pulsación de botón correctamente. Ahora sólo tenemos que registrar un punto de datos en respuesta.

Paso 3: Grabe los datos de pulsaciones de botones en una hoja de cálculo de Google

Ahora todo lo que tenemos que hacer es grabar datos cada vez que se pulsa un botón. Para ello, usaremos un Magic Form , una herramienta que Cloudsttch , que  permite enviar datos desde  cualquier lugar  a una Hoja de Google.

Simplemente visite Cloudstitch, cree un formulario mágico y se le dará una URL que agregará filas a su hoja de cálculo cuando publique los datos del formulario.

Así que todas las piezas están en su lugar ahora: antes teníamos un poco de código que imprime un mensaje cada vez que se pulsa un botón Dash. Ahora solo agregamos unas cuantas líneas de código para enviar datos a nuestro Formulario Mágico. En lugar de pegar en todo el ejemplo actualizado nuevamente, solo enlazarémos con la versión completa y en su lugar mostrarle la parte que registra una entrada de pañales Poopy en nuestro formulario mágico. Justo después de imprimir «Huggies empujado» a la pantalla, se agrego este código, que envía dos campos, un Timestamp y el mensaje «Poopy Diaper» a la URL del formulario.

¡Eso es! Vuelva a ejecutar el programa, presione los botones, y verá las filas agregadas a su hoja de cálculo como lo hace!

 

Conclusión: El IoT ya está aquí para quedarse 

Mucha gente se burlaba de Dash Buttons cuando Amazon los lanzó el día antes del Día de los Inocentes . Sin embargo, independientemente de lo que usted piense acerca de Dash como un producto de consumo, es un prototipo sin duda  convincente de lo que  Internet de las cosas va a parecer.

Fuente https://blog.cloudstitch.com

Importación de librerias en Arduino parte 2de 2


 Importación de una biblioteca .zip

Las bibliotecas a menudo se distribuyen como un archivo ZIP o carpeta. El nombre de la carpeta es el nombre de la biblioteca.  Dentro de la carpeta será un archivo .cpp, un archivo .h ya menudo un archivo keywords.txt, carpeta de ejemplos, y otros archivos requeridos por la biblioteca.

Desde la versión 1.0.5, puede instalar las bibliotecas 3 ª parte en el IDE.

No descomprima la biblioteca descargada, dejarla como está.

En el Arduino IDE, vaya a Sketch> Incluir Biblioteca.  En la parte superior de la lista desplegable, seleccione la opción «Añadir .ZIP Biblioteca »(«Add .ZIP Library»).

Se le pedirá que seleccione la biblioteca que desea agregar. Navegue hasta la ubicación del archivo .zip y abrirlo.

Regrese al menú Sketch> Import Library. Ahora debería ver la biblioteca en la parte inferior del menú desplegable. Está listo para ser utilizado en su sketch.

El archivo zip se habrá ampliado en la carpeta de bibliotecas en su Arduino esboza directorio.

Nota: la biblioteca estará disponible para su uso en bocetos, pero los ejemplos de la biblioteca no será expuesta en el Archivo> Ejemplos hasta después de la IDE se ha reiniciado.

Instalación manual

Para instalar la biblioteca, primero salir de la aplicación Arduino.

Luego descomprimir el archivo ZIP que contiene la biblioteca.  Por ejemplo, si va a instalar una biblioteca llamada «ArduinoParty», descomprimir el fichero .zip ArduinoParty .  Debe contener una carpeta llamada ArduinoParty, con archivos como ArduinoParty .cpp y en el interior ArduinoParty .h. (Si los archivos .cpp y .h no se encuentran en una carpeta, tendrá que crear uno:en este caso, sería una carpeta llamada «ArduinoParty» y hay que  mueven a ella todos los archivos que estaban en el  archivo, como ArduinoParty .cpp y .h ArduinoParty.)

Arrastre la carpeta ArduinoParty en esta carpeta (carpeta de bibliotecas).  En Windows, es probable que se llama «Mis documentos \ Arduino \ bibliotecas».  Para usuarios de Mac, es probable que se llama «Documentos / Arduino / bibliotecas».  En Linux, será la carpeta «bibliotecas» en su cuaderno de dibujo.

Su carpeta de la biblioteca de Arduino ahora debería tener este aspecto (en Windows):

 My Documents\Arduino\libraries\ ArduinoParty \ ArduinoParty .cpp Mis documentos \ Arduino \ bibliotecas \ ArduinoParty \ ArduinoParty .cpp
  >My Documents\Arduino\libraries\ ArduinoParty \ ArduinoParty .h Mis documentos \ Arduino \ bibliotecas \ ArduinoParty \ ArduinoParty .h
  >My Documents\Arduino\libraries\ ArduinoParty \examples Mis documentos \ Arduino \ bibliotecas \ ArduinoParty \ ejemplos
  >.... ....

o así (en Mac):

 Documents/Arduino/ libraries/ArduinoParty / ArduinoParty .cpp Documentos / Arduino / bibliotecas / ArduinoParty / ArduinoParty .cpp
  >Documents/Arduino/ libraries/ArduinoParty / ArduinoParty .h Documentos / Arduino / bibliotecas / ArduinoParty / ArduinoParty .h
  >Documents/Arduino/ libraries/ArduinoParty /examples Documentos / Arduino / bibliotecas / ArduinoParty / Ejemplos
  >... ...

o de manera similar para Linux.

Es posible que haya más archivos que sólo el .cpp y .h, sólo asegúrese de que están todos allí. De ser asi la biblioteca no funcionará si pone el .cpp y .h directamente en las bibliotecas de carpeta o si están anidados en una carpeta adicional. Por ejemplo: No funcionará   esta combinación:

 Documents\Arduino\libraries\ ArduinoParty .cpp and Documentos \ Arduino \ bibliotecas \ ArduinoParty .cpp y
  >Documents\Arduino\libraries\ ArduinoParty \ ArduinoParty \ ArduinoParty .cpp Documentos \ Arduino \ bibliotecas \ ArduinoParty \ ArduinoParty \ ArduinoParty .cpp

 

Reinicie la aplicación Arduino.  Asegúrese de que la nueva biblioteca aparece en el elemento de menú para bosquejos> Importar biblioteca del software.

Usted ha instalado una biblioteca!