Controle prácticamente 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.

Siri puede ser increíble a veces, pero solo puede hacer lo que Apple le permite hacer.  Ya no.
Anuncio

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 compuertas, y no requiere que su dispositivo sea liberado para usarlo. Hoy explicaré un poco sobre el servicio y te 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 "busque" algo en Google, abre el navegador Safari y enruta tu solicitud como es de esperar. Es en este punto que se realiza una solicitud HTTP, por lo que si ha configurado un proxy HTTP en su conexión de Internet, una función estándar que no requiere jailbreaking, la solicitud se realiza primero a través del proxy .

Ahora aquí está la magia: al prefabricar los comandos con "googolplex", el término de búsqueda se convierte en "plex" además de lo que diga. El proxy - BetterThanSiri.com - identifica la presencia de "plex" e intercepta su consulta de búsqueda. Lo que sigue se considera el "comando" real. BetterThanSiri realiza la coincidencia de patrones con su selección personal de comandos configurados y ejecuta el código correspondiente. Realmente es bastante sorprendente, y no puedo esperar para mostrarte cómo usarlo.

Control de luces RGB

Para demostrar BetterThanSiri, configuré un circuito básico de envío y recepción de IR. Consulte mi tutorial anterior sobre la broma del diablo de TV. Presentando el Diablo de TV, un control remoto fácil. Broma de Arduino Presentando el Diablo de TV, un control remoto fácil. aprenda más acerca de cómo interactuar con códigos IR, o siga leyendo para la versión condensada. Estas son las partes que necesitará:

  • Arduino, blindaje Ethernet y cableado Ethernet
  • LED IR, resistencia de 220 Ohm (depende de su LED particular, pero esto debería ser suficiente en la mayoría de los casos), y receptor IR
  • Luces de LED RGB, fuente de alimentación de 12 V y control remoto existente

restduino-circuito

Cada control remoto funciona codificando un número en pulsos de luz infrarroja, por lo que primero tendrá que aprender los números de control utilizados por su control remoto en particular. Descargue la biblioteca IRremote y reinicie Arduino IDE. Para la mayoría de los receptores IR, con el domo del LED hacia usted, los pines de izquierda a derecha son: señal, GND, + 5V.

IR-recv

Conecte la señal al pin 11 y las otras dos como de costumbre, y cargue en el ejemplo IRrecvDemo provisto por la biblioteca. Abra la consola serie y comience a presionar los botones en su control remoto; debería obtener algunos valores HEX. En realidad, queremos esos valores hexadecimales como un número entero largo, así que agrega un nuevo Serial.println sin la parte HEX:

 Serial.println (results.value, HEX); Serial.println (results.value); 

Registre todos los números que necesita. En mi caso, encontré:

  • Rojo: 16195807
  • Verde: 16228447
  • Azul: 16212127

Si está utilizando un tipo diferente de control remoto, también puede necesitar cargar el ejemplo IRrecvDump, que también generará el tipo de señal; en mi caso, el control remoto estaba enviando códigos NEC de 32 bits (u 8 dígitos). lo cual se refleja en mi código de servidor modificado más tarde; recuerde cambiar eso si lo necesita.

irrecvdump-example

Antes de continuar, conecte el IR LED para enviar (el lado plano del LED va a GND, el otro lado a través de una resistencia de 220 Ohm al pin 3) y cargue el IRsendDemo . Duplique el comando principal de envío varias veces y sustituya sus propios códigos IR para probarlos; agregue un retraso entre cada uno. Cargue, y si todo está funcionando bien, debería ver que los LED pasan por los comandos que ha agregado.

irsendtest-example

A continuación, descargue el paquete RESTduino: hay una biblioteca Ethernet de reemplazo que deberá agregar y reiniciar Arduino IDE. RESTduino es una potente API web RESTful: crea un servidor que escucha las solicitudes entrantes con la capacidad de controlar pines o leer valores de ellas. Pruebe la demostración incluida primero para asegurarse de que todo esté funcionando; deberá modificar la dirección MAC, hacer IP estática al servidor y definir una IP en su rango de red local (probablemente 192.168.0.xo 10.0.1.x). )

custom-restduino

Debería poder acceder a su Arduino desde cualquier navegador, simplemente intente con comandos simples para leer los valores en la entrada analógica 1, por ejemplo:

http://10.0.1.99/a1/

No importa si nada está conectado, solo estamos comprobando que el servidor funciona. Ahora, carga mi versión modificada de esta demostración. He eliminado el control de pin, y en su lugar lo reemplacé con control IR. Use 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); 

Tendrá que cambiar eso si su control remoto no es del tipo NEC, o no tiene 32 bits de longitud. También agregué un retraso y repetí el comando varias veces, ya que el IR puede ser poco confiable algunas veces. Finalmente, configure el reenvío de puertos ¿Qué es el reenvío de puertos y cómo puede ayudarme? [Explicaciones de MakeUseOf] ¿Qué es el reenvío de puertos y cómo puede ayudarme? [MakeUseOf Explains] ¿Lloras un poco cuando alguien te dice que hay un problema de reenvío de puertos y por eso tu nueva y brillante aplicación no funcionará? Su Xbox no le permitirá jugar juegos, sus descargas de torrents se niegan ... Lea más en su enrutador para que pueda enviar comandos IR desde cualquier parte del mundo. Envía todo en el puerto 80 a la IP interna de tu Arduino. Ahora debería poder reemplazar la IP interna con su IP pública, y el control debería funcionar. Ahora podemos pasar a la configuración de nuestros comandos personalizados en BetterThanSiri.com.

Comience por registrarse y luego inicie sesión para administrar su lista de comandos personales.

betterthansiri-web-interface

Eche un vistazo a los comandos existentes si tiene curiosidad sobre cómo funcionan, o simplemente continúe y cree uno nuevo. Denomine el comando y agregue el marcador de frase:

 luces ~ 

setup-new-command

Lo que significa que "este comando coincidirá con las luces + cualquier cosa" . A continuación, pegue el código siguiente: modifíquelo para incluir su dirección IP pública (o un DNS dinámico si tiene una), así como las frases que desea emparejar y los códigos IR correspondientes. La primera variable en la función es solo un pequeño texto enviado al navegador. Puede copiar / pegar más de lo demás si se trata de bits para crear tantos comandos como desee.

 if (frase == "luces encendidas") {replyWithTextAndURL ('Encendiendo luces', 'http: // YOURIP / 1/16236607'); } else if (frase == "se enciende en rojo") {replyWithTextAndURL ('Preparándose para el tiempo sexy', 'http: // YOURIP / 1/16195807'); } else if (frase == "se ilumina en azul") {replyWithTextAndURL ('Modo de trabajo activo', 'http: // YOURIP / 1/16212127'); } else if (frase == "luces verdes") {replyWithTextAndURL ('Eres raro', 'http: // YOURIP / 1/16228447'); } 

Siga las instrucciones para configurar el proxy en su dispositivo. Esencialmente, solo necesita agregar un proxy HTTP automático (URL: http://totally.betterthansiri.com ) a su conexión a Internet. La primera vez que use el servicio, deberá iniciar sesión desde su dispositivo móvil para saber cuáles son sus comandos personales, pero solo tendrá que hacer esto 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 enorme cantidad de poder con la capacidad de publicar datos en URLs aleatorias 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á preparado para la programación propia.

Tampoco te responde como lo hace Siri. Todas las cuentas incluyen una función de "dime una broma" similar a Siri, pero los chistes salen en la pantalla, en tu navegador web. Es posible que puedan agregar esto más tarde utilizando un complemento de JavaScript de terceros, pero puede significar un mayor uso de ancho de banda o capacidad de respuesta.

Finalmente, existe, por supuesto, el retraso involucrado. Su discurso se envía a Apple para su procesamiento en un comando de texto, enviado de vuelta, enviado al proxy, procesado por BetterThanSiri, y luego enviado a través de 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 mejorarse alguna vez. Para la automatización del hogar, esto es perfectamente aceptable, pero si intenta entregar información al usuario de manera oportuna, es un poco frustrante.

Preocupaciones de seguridad

El uso de un proxy HTTP como este significa que cada solicitud HTTP que realiza se enruta a través de sus servidores: en teoría, podrían examinar todo lo que busca, cada sitio que visite. Le 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 ellas).

Puedes tomar eso al valor nominal; Sería imposible probar lo contrario, pero si el software del servidor era 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 abran el código fuente, por lo que si la privacidad y seguridad en su navegador móvil es particularmente importante, es comprensible que este no sea un servicio que desee utilizar.

Personalmente, no creo que sea poco convincente llamar a este servicio realmente sorprendente. Me enteré hace unos meses, pero en ese momento se limitaba a controlar 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 sistema completo de domótica Arduino. ¿Qué usos puedes pensar para BetterThanSiri?

In this article