Controlla praticamente qualsiasi cosa con Siri - Nessun jailbreak richiesto

Controlla praticamente qualsiasi cosa con Siri - Nessun jailbreak richiesto / iPhone e iPad

Siri può essere sorprendente, a volte, ma può solo fare ciò che la Apple le permette di fare. Non più: un nuovo servizio Web chiamato BetterThanSiri sta aprendo i cancelli e non richiede che il tuo dispositivo venga jailbroken per farne uso. Oggi spiegherò un po 'del servizio e ti mostrerò come iniziare a controllare un set di luci RGB. Guarda prima il video per vederlo in azione.

Come funziona questa magia oscura?

Quando chiedi a Siri di farlo “Google” qualcosa, apre il browser Safari e indirizza la tua richiesta come ti aspetteresti. È a questo punto che viene effettuata una richiesta HTTP, quindi se hai impostato un proxy HTTP sulla tua connessione Internet - una funzione standard che non richiede il jailbreak - la richiesta va tramite il proxy primo.

Ora qui è dove si trova la magia: prefacendo i comandi con “googolplex”, il termine di ricerca diventa “plex” più quello che dici. Il proxy - BetterThanSiri.com - identifica la presenza di “plex” e intercetta la tua query di ricerca. Tutto ciò che segue è considerato il reale “comando”. BetterThanSiri esegue la corrispondenza del modello con la selezione personale di comandi configurati ed esegue il codice pertinente. È davvero sorprendente e non vedo l'ora di mostrarti come usarlo.

Controllo delle luci RGB

Per dimostrare BetterThanSiri, ho configurato un circuito IR di invio e ricezione di base - guarda il mio precedente tutorial sullo scherzo del diavolo TV. Presentando il diavolo della TV, un facile telecomando Arduino Prank Presentazione del diavolo della TV, un facile telecomando Arduino Prank Leggi di più su scopri di più sull'interazione con i codici IR o leggi per la versione condensata. Ecco le parti di cui avrai bisogno:

  • Arduino, schermatura Ethernet e cablaggio Ethernet
  • LED IR, resistenza da 220 Ohm (dipende dal LED in uso, ma nella maggior parte dei casi dovrebbe essere sufficiente) e ricevitore IR
  • Lampade LED RGB, alimentatore 12V e telecomando esistente

Ogni telecomando funziona codificando un numero in impulsi di luce infrarossa, quindi per prima cosa devi imparare i numeri di controllo usati dal tuo particolare telecomando. Scarica la libreria IRremote e riavvia l'IDE Arduino. Per la maggior parte dei ricevitori IR, con la cupola del LED rivolta verso di voi, i pin da sinistra a destra sono: signal, GND, + 5V.

Collegare il segnale al pin 11 e gli altri due come al solito e caricare il IRrecvDemo esempio fornito dalla biblioteca. Apri la console seriale e avvia i pulsanti sul telecomando: dovresti ottenere alcuni valori HEX. In realtà vogliamo quei valori esadecimali come un numero intero lungo, quindi aggiungine uno nuovo Serial.println senza la parte HEX:

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

Registra tutti i numeri che ti servono. Nel mio caso, ho trovato:

  • Rosso: 16195807
  • Verde: 16228447
  • Blu: 16212127

Se si utilizza un diverso tipo di telecomando, potrebbe essere necessario caricare anche il IRrecvDump esempio, che produrrà anche il genere di segnale - nel mio caso, il telecomando stava inviando i codici NEC a 32 bit (o 8 cifre), che si riflettono nel mio codice server modificato in seguito - ricordati di cambiarlo se ti serve.

Prima di procedere, collegare il LED IR per l'invio (il lato piatto del LED va a GND, l'altro lato passa attraverso una resistenza da 220 Ohm al pin 3) e caricare il IRsendDemo. Duplica il comando di invio principale alcune volte e sostituisci i tuoi codici IR per testarli - aggiungi un ritardo tra ciascuno di essi. Carica, e se tutto funziona bene dovresti vedere i tuoi LED scorrere tra i comandi che hai aggiunto.

Successivamente, scarica il pacchetto RESTduino: c'è una libreria Ethernet sostitutiva che dovrai aggiungere e, di nuovo, riavviare l'IDE Arduino. RESTduino è una potente API web RESTful - crea un server che ascolta le richieste in arrivo con la possibilità di controllare i pin o leggere i valori da essi. Prova prima la demo inclusa per assicurarti che tutto funzioni correttamente: dovrai modificare l'indirizzo MAC, rendere il server IP statico e definire un IP sulla tua rete locale (probabilmente 192.168.0.x o 10.0.1.x).

Dovresti quindi essere in grado di accedere al tuo Arduino da qualsiasi browser - basta provare semplici comandi per leggere i valori sull'ingresso analogico 1 - ad esempio:

http://10.0.1.99/a1/

Non importa se non è collegato nulla, stiamo solo controllando che il server funzioni. Ora, carica la mia versione modificata di questa demo. Ho rimosso il controllo dei pin e l'ho sostituito con il controllo IR. Utilizza un URL del modulo:

http://10.0.1.99/1/IRCODE

La linea importante nel codice modificato è qui:

irsend.sendNEC (strtoul (value, NULL, 10), 32);

Dovrai cambiarlo se il tuo telecomando non è di tipo NEC o non ha una lunghezza di 32 bit. Ho anche aggiunto un ritardo e ripetuto il comando alcune volte, poiché a volte l'IR può essere un po 'inaffidabile. Infine, configura il port forwarding Che cos'è il port forwarding e come può aiutarmi? [MakeUseOf Explains] Che cos'è il port forwarding e come può aiutarmi? [MakeUseOf Explains] Piangi un po 'dentro quando qualcuno ti dice che c'è un problema di port forwarding ed è per questo che la tua nuova app non funzionerà? La tua Xbox non ti permetterà di giocare, i tuoi download torrent rifiutano ... Leggi di più sul tuo router in modo che tu possa inviare comandi IR da qualsiasi parte del mondo. Inoltra tutto sulla porta 80 all'IP interno del tuo Arduino. Ora dovresti essere in grado di sostituire l'IP interno con il tuo IP pubblico e il controllo dovrebbe funzionare. Ora possiamo passare alla configurazione dei nostri comandi personalizzati su BetterThanSiri.com.

Inizia iscrivendoti, quindi accedi per gestire il tuo elenco di comandi personale.

Dai un'occhiata ai comandi esistenti se sei curioso di sapere come funzionano, o semplicemente vai avanti e creane uno nuovo. Assegna un nome al comando e aggiungi l'identificatore di frase:

luci ~

Che significa “questo comando abbinerà luci + qualsiasi cosa”. Quindi incolla il codice qui sotto: modifica questo per includere il tuo indirizzo IP pubblico (o un DNS dinamico se ne hai uno), così come le frasi che vuoi abbinare e i relativi codici IR. La prima variabile della funzione è solo un piccolo testo inviato al browser. Puoi copiare / incollare più di altrimenti se bit per creare tutti i comandi che vuoi.

if (frase == "si accende") answerWithTextAndURL ('Accensione luci', 'http: // YOURIP / 1/16236607');  else if (frase == "si illumina in rosso") answerWithTextAndURL ('Prepararsi per l'ora sexy', 'http: // YOURIP / 1/16195807');  else if (frase == "si illumina in blu") answerWithTextAndURL ('Modalità di lavoro attiva', 'http: // YOURIP / 1/16212127');  else if (frase == "si illumina in verde") answerWithTextAndURL ('Sei strano', 'http: // YOURIP / 1/16228447'); 

Segui le istruzioni per configurare il proxy sul tuo dispositivo. In sostanza, è sufficiente aggiungere un proxy HTTP automatico (URL: http://totally.betterthansiri.com) alla tua connessione internet. La prima volta che utilizzi il servizio, devi accedere dal tuo dispositivo mobile in modo che sappia quali sono i tuoi comandi personali, ma dovrai farlo una sola volta.

limitazioni

Come puoi vedere, BetterThanSiri è un sistema piuttosto complesso al momento: non c'è un'interfaccia drag and drop quindi dovrai capire le basi di Javascript per creare il tuo set di comandi. Detto questo, hanno esposto un sacco di potere con la possibilità di inviare dati a URL casuali in background o solo un reindirizzamento, quindi non potremmo davvero chiedere di più. Puoi sempre sfogliare le ricette esistenti se non vuoi programmare da solo.

Inoltre non ti risponde come fa Siri. Tutti i conti includono a “Raccontami una barzelletta” funzionalità simile a Siri, ma le battute vengono visualizzate sullo schermo, nel browser web. È possibile che possano aggiungerlo in seguito utilizzando un plug-in JavaScript di terze parti, ma potrebbe significare un maggiore utilizzo della larghezza di banda o la reattività.

Infine, ovviamente c'è il ritardo. Il tuo discorso viene inviato ad Apple per l'elaborazione in un comando di testo, inviato indietro, inviato al proxy, elaborato da BetterThanSiri, quindi inviato su Internet al nostro Arduino locale. Nella demo ogni comando ha richiesto circa 5-10 secondi in totale, ed è improbabile che questo possa mai essere migliorato. Per l'automazione domestica, questo è perfettamente accettabile, ma se stai cercando di fornire informazioni all'utente in modo tempestivo, è un po 'frustrante.

Problemi di sicurezza

Usare un proxy HTTP come questo significa ogni richiesta HTTP che fai viene instradato attraverso i loro server: in teoria, potrebbero esaminare tutto ciò che cerchi, ogni sito che visiti. Ho chiesto agli sviluppatori di questo, e questa è stata la loro risposta:

Sicuramente una preoccupazione valida, ma NON guardiamo ogni richiesta HTTP. Il nostro proxy autoconfig ha un motore decisionale che guarda solo le richieste HTTP rilevanti per GoogolPlex (con “plex” in loro).

Puoi prenderlo al valore nominale; sarebbe impossibile provare il contrario, ma se il software del server era open source (che non lo è) potreste almeno verificarlo ed eseguire il vostro server privato. Dato il potenziale per le applicazioni commerciali, sembra improbabile che lo aprano, quindi se la privacy e la sicurezza del tuo browser mobile sono particolarmente importanti, è comprensibile che questo non sia un servizio che vorresti utilizzare.

Personalmente, non penso che sia riduttivo definire questo servizio davvero sorprendente. Ne ho sentito parlare solo alcuni mesi fa, ma al momento si limitava a controllare semplicemente Spotify - una dimostrazione del concetto. Ora che hanno aggiunto la possibilità di creare comandi personalizzati e interfacciarsi con qualsiasi cosa, è un sistema incredibilmente potente che rivedrò in futuro per formare la base di un sistema di automazione domestica Arduino completo. Quali usi puoi pensare per BetterThanSiri?

Scopri di più su: Siri.