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 "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 passa prima attraverso il proxy .
Ora qui è dove si trova la magia: prefacendo i comandi con "googolplex", il termine di ricerca diventa "plex" più ciò che dici. Il proxy - BetterThanSiri.com - identifica la presenza di "plex" e intercetta la tua query di ricerca. Tutto ciò che segue è considerato il vero "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 nell'esempio IRrecvDemo fornito dalla libreria. 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 aggiungi un 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 l'esempio IRrecvDump, che emetterà anche il tipo di segnale - nel mio caso, il telecomando stava inviando codici NEC a 32 bit (o 8 cifre), che si riflette in seguito nel mio codice server modificato: ricordati di cambiarlo se necessario.
Prima di procedere, collegare il LED IR per l'invio (il lato piatto del LED passa a GND, l'altro lato passa attraverso una resistenza da 220 Ohm al pin 3) e carica 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 nell'intervallo di rete locale (probabilmente 192.168.0.xo 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 ~
Il 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 codici IR pertinenti. La prima variabile della funzione è solo un piccolo testo inviato al browser. Puoi copiare / incollare altri bit 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, devi solo aggiungere un proxy HTTP automatico (URL: http://totally.betterthansiri.com ) alla tua connessione internet. La prima volta che utilizzi il servizio, dovrai accedere dal tuo dispositivo mobile in modo che sappia quali sono i tuoi comandi personali, ma dovrai farlo solo una 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 gli account includono una funzionalità "tell me a joke" 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 si sta tentando di restituire le informazioni all'utente in modo tempestivo, è un po 'frustrante.
Problemi di sicurezza
Utilizzando un proxy HTTP come questo significa che ogni richiesta HTTP che fai viene instradata 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 esse).
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. A quali usi pensi di BetterThanSiri?