Controle virtualmente cualquier cosa con Siri - No se requiere Jailbreak
Siri puede ser increíble a veces, pero solo puede hacer lo que Apple le permite hacer. Ya no: un nuevo servicio web llamado BetterThanSiri está abriendo las puertas de par en par, y no requiere que su dispositivo tenga jailbreak para usarlo. Hoy, explicaré un poco sobre el servicio y le mostraré cómo comenzar a controlar un conjunto de luces RGB. Mira el video primero para verlo en acción..
¿Cómo funciona esta magia oscura??
Cuando le pides a Siri que “Google” algo, ella abre el navegador Safari y encamina su solicitud como usted esperaría. Es en este punto que se realiza una solicitud HTTP, por lo que si ha configurado un proxy HTTP en su conexión a Internet (una característica estándar que no requiere jailbreak), la solicitud continúa. a través del proxy primero.
Ahora aquí es donde está la magia: introduciendo comandos con “googolplex”, el término de búsqueda se convierte en “plex” más lo que digas. El proxy - BetterThanSiri.com - identifica la presencia de “plex” e intercepta su consulta de búsqueda. Lo que sigue se considera el real “mando”. BetterThanSiri realiza la comparación de patrones con su selección personal de comandos configurados y ejecuta el código relevante. Realmente es bastante sorprendente, y no puedo esperar para mostrarte cómo usarlo.
Controlando las luces RGB
Para demostrar BetterThanSiri, he configurado un circuito básico de envío y recepción por infrarrojos: vea mi tutorial anterior sobre la broma del demonio de la televisión Presentando el diablo de la TV, un control remoto fácil Arduino Prank Presentando el diablo de la televisión, un control remoto fácil Arduino Prank Leer más en Obtenga más información sobre cómo interactuar con los códigos IR, o lea la versión condensada. Aquí están las partes que necesitarás:
- Arduino, Ethernet Shield y cableado Ethernet.
- LED IR, resistencia de 220 ohmios (depende de su LED particular, pero esto debería ser suficiente en la mayoría de los casos) y receptor IR
- Luces de tira de RGB LED, fuente de alimentación 12V y control remoto existente
Cada control remoto funciona codificando un número en pulsos de luz infrarroja; por lo tanto, primero deberá aprender los números de control utilizados por su control remoto en particular. Descargue la biblioteca de IRremote y reinicie el IDE de Arduino. Para la mayoría de los receptores IR, con el domo del LED orientado hacia usted, los pines de izquierda a derecha son: señal, GND, + 5V.
Conecte la señal al pin 11 y los otros dos como de costumbre, y cargue en el IRrecvDemo Ejemplo proporcionado por la biblioteca. Abra la consola serie y comience a presionar los botones del control remoto; debería obtener algunos valores HEX. Realmente queremos esos valores hexadecimales como un número entero largo, así que agregue un nuevo Serial.println sin la parte HEX
Serial.println (results.value, HEX); Serial.println (results.value);
Anota todos los números que necesites. En mi caso, encontré:
- Rojo: 16195807
- Verde: 16228447
- Azul: 16212127
Si está utilizando un tipo de control remoto diferente, es posible que también deba cargar el IRrecvDump ejemplo, que también dará salida a la tipo de señal - en mi caso, el control remoto estaba enviando códigos NEC de 32 bits (o 8 dígitos), que se reflejan en mi código de servidor modificado más adelante - recuerde cambiar eso si necesita.
Antes de continuar, conecte el cable IR en su LED IR (el lado plano del LED va a GND, el otro lado va a través de una resistencia de 220 ohmios al pin 3) y cargue el IRsendDemo. Duplique el comando de envío principal unas cuantas veces y sustituya sus propios códigos de IR para probarlos: agregue un retraso entre cada uno. Sube, y si todo funciona bien, deberías ver los LED que recorren los comandos que agregaste.
A continuación, descargue el paquete RESTduino: hay una biblioteca de Ethernet de reemplazo allí que deberá agregar y nuevamente, reinicie el IDE de Arduino. RESTduino es una poderosa API web de REST: crea un servidor, que escucha las solicitudes entrantes con la capacidad de controlar los pines o leer valores de ellos. Pruebe primero la demostración incluida para asegurarse de que todo funciona. Deberá modificar la dirección MAC, hacer que la IP del servidor sea estática y definir una IP en el rango de su red local. (probablemente 192.168.0.xo 10.0.1.x).
Entonces debería poder acceder a su Arduino desde cualquier navegador: solo intente comandos simples para leer los valores en la entrada analógica 1, por ejemplo:
http://10.0.1.99/a1/
No importa si no hay nada conectado, solo estamos comprobando que el servidor funciona. Ahora, sube mi versión modificada de esta demo. He eliminado el control de pin y, en su lugar, lo reemplacé con el control de IR. Utilice una URL del formulario:
http://10.0.1.99/1/IRCODE
La línea importante en el código modificado está aquí:
irsend.sendNEC (strtoul (valor, NULL, 10), 32);
Deberá cambiar eso si su control remoto no es del tipo NEC, o no tiene una longitud de 32 bits. También agregué un retraso y repetí el comando varias veces, ya que IR puede ser un poco poco confiable a veces. Finalmente, configure el reenvío de puertos ¿Qué es el reenvío de puertos y cómo puede ayudarme? [MakeUseOf Explica] ¿Qué es el reenvío de puertos y cómo puede ayudarme? [MakeUseOf Explica] ¿Llora un poco por dentro cuando alguien le dice que hay un problema de reenvío de puertos y es por eso que su nueva aplicación no funcionará? Tu Xbox no te permitirá jugar juegos, tus descargas de torrent se rechazan ... Lee más en tu enrutador para que puedas enviar comandos IR desde cualquier lugar del mundo. Reenvíe todo en el puerto 80 a la IP interna de su Arduino. Ahora debería poder reemplazar la IP interna con su IP pública, y el control aún debería funcionar. Ahora podemos pasar a configurar nuestros comandos personalizados en BetterThanSiri.com.
Comience por registrarse y luego inicie sesión para administrar su lista de comandos personal.
Eche un vistazo a los comandos existentes si tiene curiosidad acerca de cómo funcionan, o simplemente siga adelante y cree uno nuevo. Nombra el comando y agrega el concordador de frase:
luces ~
Lo que significa “Este comando combinará luces + cualquier cosa.”. Luego pegue el código a continuación: modifíquelo para incluir su dirección IP pública (o un DNS dinámico si tiene uno), así como las frases que desea que coincidan y los códigos IR relevantes. La primera variable en la función es solo un pequeño texto enviado de vuelta al navegador. Puedes copiar / pegar más de la si no bits para crear tantos comandos como quieras.
if (frase == "luces encendidas") respondWithTextAndURL ('Encender luces', 'http: // YOURIP / 1/16236607'); else if (frase == "se ilumina en rojo") respondWithTextAndURL ('Preparándose para el tiempo sexy', 'http: // YOURIP / 1/16195807'); else if (frase == "se ilumina en azul") respondWithTextAndURL ('Modo de trabajo activo', 'http: // YOURIP / 1/16212127'); else if (frase == "se ilumina en verde") respondWithTextAndURL ('You are weird', 'http: // YOURIP / 1/16228447');
Siga las instrucciones para configurar el proxy en su dispositivo. Esencialmente, solo necesitas agregar un proxy HTTP automático (URL: http://totally.betterthansiri.com) a su conexión a internet. La primera vez que utilice el servicio, deberá iniciar sesión desde su dispositivo móvil para que sepa cuáles son sus comandos personales, pero solo tendrá que hacerlo una vez..
Limitaciones
Como puede ver, BetterThanSiri es un sistema bastante complejo en este momento: no hay una interfaz de arrastrar y soltar, por lo que deberá comprender los conceptos básicos de Javascript para crear su propio conjunto de comandos. Dicho esto, han expuesto una gran cantidad de poder con la capacidad de publicar datos en direcciones URL aleatorias, ya sea en segundo plano o simplemente una redirección, por lo que realmente no podríamos pedir más. Siempre puede navegar por las recetas existentes si no está listo para programar su propia.
Tampoco te responde como lo hace Siri. Todas las cuentas incluyen un “Cuéntame un chiste” característica similar a Siri, pero los chistes se publican en la pantalla, en su navegador web. Es posible que puedan agregar esto más tarde usando un complemento de JavaScript de terceros, pero puede significar un mayor uso del ancho de banda o capacidad de respuesta.
Por último, está, por supuesto, el retraso involucrado. Su discurso se envía a Apple para procesarlo en un comando de texto, se lo devolvemos, lo enviamos al proxy, lo procesa BetterThanSiri y luego lo devuelve por Internet a nuestro Arduino local. En la demostración, cada comando tomó entre 5 y 10 segundos en total, y es poco probable que esto pueda ser mejorado. Para la automatización del hogar, esto es perfectamente aceptable, pero si está tratando de devolver información al usuario de manera oportuna, es un poco frustrante.
Preocupaciones de seguridad
Usando un proxy HTTP como este significa cada solicitud HTTP Lo que haces se enruta a través de sus servidores: en teoría, podrían examinar todo lo que buscas, cada sitio que visitas. Pregunté a los desarrolladores sobre esto, y esta fue su respuesta:
Definitivamente una preocupación válida, pero NO miramos todas las solicitudes HTTP. Nuestro proxy autoconfig tiene un motor de decisión que solo mira las solicitudes HTTP relevantes para GoogolPlex (con “plex” en ellos).
Usted puede tomar eso a su valor nominal; sería imposible probar lo contrario, pero si el software del servidor fuera de código abierto (que no lo es), al menos podría verificarlo y ejecutar su propio servidor privado. Dado el potencial de las aplicaciones comerciales, parece poco probable que lo hagan de código abierto, por lo que si la privacidad y la seguridad de su navegador móvil son particularmente importantes, es comprensible que este no sea un servicio que quiera usar..
Personalmente, no creo que sea insuficiente decir que este servicio es realmente sorprendente. Al principio me enteré hace unos meses, pero en ese momento se limitaba a controlar simplemente a Spotify, una prueba de concepto. Ahora que han agregado la capacidad de crear comandos personalizados e interactuar con cualquier cosa, es un sistema increíblemente poderoso que volveré a visitar en el futuro para formar la base de un completo sistema de automatización para el hogar Arduino. ¿Qué usos se te ocurren para BetterThanSiri??
Explorar más sobre: Siri.