Contrôlez pratiquement n'importe quoi avec Siri - aucun jailbreak requis

Siri peut être incroyable à certains moments, mais elle ne peut que faire ce qu'Apple lui permet de faire. Plus maintenant.

Siri peut être incroyable à certains moments, mais elle ne peut que faire ce qu'Apple lui permet de faire.  Plus maintenant.
Publicité

Siri peut être incroyable à certains moments, mais elle ne peut que faire ce qu'Apple lui permet de faire. Plus maintenant: un nouveau service Web appelé BetterThanSiri ouvre grand les portes et il n'est pas nécessaire que votre appareil soit jailbreaké pour en faire usage. Aujourd'hui, je vais vous expliquer un peu plus sur le service, et vous montrer comment commencer à contrôler un ensemble de lumières RVB. Regardez d'abord la vidéo pour la voir en action.

Comment fonctionne cette magie noire?

Lorsque vous demandez à Siri de "Google" quelque chose, elle ouvre le navigateur Safari et achemine votre demande comme vous l'attendez. C'est à ce moment qu'une requête HTTP est faite, donc si vous avez configuré un proxy HTTP sur votre connexion Internet - une fonctionnalité standard qui ne nécessite pas de jailbreak - la requête passe d'abord par le proxy .

Maintenant, voici où la magie est: en préfacant les commandes avec "googolplex", le terme de recherche devient "plex" plus tout ce que vous dites. Le proxy - BetterThanSiri.com - identifie la présence de "plex" et intercepte votre requête de recherche. Tout ce qui suit est alors considéré comme la "commande" réelle. BetterThanSiri effectue un filtrage par rapport à votre sélection personnelle de commandes configurées et exécute le code approprié. C'est vraiment incroyable, et j'ai hâte de vous montrer comment l'utiliser.

Contrôle des lumières RVB

Pour démontrer BetterThanSiri, j'ai installé un circuit d'envoi et de réception IR de base - voir mon tutoriel précédent sur la farce TV diable Présentation du diable TV, une télécommande facile Arduino Prank Présentation du diable TV, une télécommande facile Arduino Prank Lire la suite à En savoir plus sur l'interaction avec les codes IR, ou lire sur la version condensée. Voici les pièces dont vous aurez besoin:

  • Arduino, blindage Ethernet et câblage Ethernet
  • LED IR, résistance 220 Ohm (dépend de votre LED particulière, mais cela devrait suffire dans la plupart des cas), et récepteur IR
  • Bandes LED RGB, alimentation 12V et télécommande existante

restduino-circuit

Chaque télécommande fonctionne en encodant un nombre en impulsions de lumière infrarouge - donc d'abord, vous aurez besoin d'apprendre les numéros de contrôle utilisés par votre télécommande particulière. Téléchargez la bibliothèque IRremote et redémarrez l'IDE Arduino. Pour la plupart des récepteurs IR, avec le dôme de la LED face à vous, les broches de gauche à droite sont: signal, GND, + 5V.

IR-recv

Fil dans le signal à la broche 11 et les deux autres comme d'habitude, et charger dans l'exemple IRrecvDemo fourni par la bibliothèque. Ouvrez la console série et appuyez sur les boutons de votre télécommande - vous devriez obtenir des valeurs HEX. Nous voulons réellement que ces valeurs hexadécimales soient un nombre entier long, donc ajoutez un nouveau Serial.println sans la partie HEX:

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

Enregistrez tous les numéros dont vous avez besoin. Dans mon cas, j'ai trouvé:

  • Rouge: 16195807
  • Vert: 16228447
  • Bleu: 16212127

Si vous utilisez un autre type de télécommande, vous devrez peut-être charger l'exemple IRrecvDump, qui produira également le type de signal - dans mon cas, la télécommande envoyait des codes NEC 32 bits (ou 8 chiffres), ce qui est reflété dans mon code de serveur modifié plus tard - n'oubliez pas de changer cela si vous avez besoin.

irrecvdump-example

Avant de continuer, câbler dans votre LED IR pour envoyer (le côté plat de la LED va à GND, l'autre côté passe par une résistance 220 Ohm à la broche 3), et charger le IRsendDemo . Dupliquez la commande d'envoi principale plusieurs fois et remplacez-les par vos propres codes IR - ajoutez un délai entre chaque code. Upload, et si tout fonctionne bien, vous devriez voir vos LED faire défiler les commandes que vous avez ajoutées.

irsendtest-example

Ensuite, téléchargez le paquet RESTduino - il y a une bibliothèque Ethernet de remplacement là-dedans, vous devrez ajouter et redémarrer l'IDE Arduino. RESTduino est une puissante API web RESTful - elle crée un serveur, qui écoute les requêtes entrantes avec la possibilité de contrôler les broches ou de lire les valeurs de celles-ci. Essayez d'abord la démo incluse pour vous assurer que tout fonctionne. Vous devez modifier l'adresse MAC, rendre le serveur IP statique et définir une adresse IP sur votre réseau local (probablement 192.168.0.x ou 10.0.1.x). ) .

personnalisé-restduino

Vous devriez alors pouvoir accéder à votre Arduino à partir de n'importe quel navigateur - essayez simplement des commandes simples pour lire les valeurs sur l'entrée analogique 1 - par exemple:

http://10.0.1.99/a1/

Peu importe si rien n'est connecté, nous vérifions simplement que le serveur fonctionne. Maintenant, téléchargez ma version modifiée de cette démo. J'ai enlevé le contrôle de la broche, et juste remplacé par un contrôle IR à la place. Utilisez une URL du formulaire:

http://10.0.1.99/1/IRCODE

La ligne importante dans le code modifié est ici:

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

Vous devrez le changer si votre télécommande n'est pas de type NEC ou si elle n'a pas une longueur de 32 bits. J'ai également ajouté un délai et répété la commande plusieurs fois, car IR peut parfois être un peu peu fiable. Enfin, configurez la redirection de port Qu'est-ce que le transfert de port et comment cela peut-il m'aider? [MakeUseOf explique] Qu'est-ce que le transfert de port et comment cela peut-il m'aider? [MakeUseOf Explains] Pleurez-vous un peu à l'intérieur quand quelqu'un vous dit qu'il y a un problème de redirection de port et que votre nouvelle application brillante ne fonctionnera pas? Votre Xbox ne vous laissera pas jouer à des jeux, vos téléchargements de torrents refusent ... Lisez plus sur votre routeur afin que vous puissiez envoyer des commandes IR depuis n'importe où dans le monde. Transférez tout sur le port 80 vers l'adresse IP interne de votre Arduino. Vous devriez maintenant être en mesure de remplacer l'adresse IP interne par votre adresse IP publique, et le contrôle devrait toujours fonctionner. Nous pouvons maintenant passer à la configuration de nos commandes personnalisées sur BetterThanSiri.com.

Commencez par vous inscrire, puis connectez-vous pour gérer votre liste de commande personnelle.

betterthansiri-web-interface

Jetez un oeil aux commandes existantes si vous êtes curieux de savoir comment elles fonctionnent, ou tout simplement aller de l'avant et en créer un nouveau. Nommez la commande et ajoutez l'expression de correspondance:

 lumières ~ 

setup-new-command

Ce qui signifie que "cette commande correspondra aux lumières + n'importe quoi" . Ensuite, collez le code ci-dessous - modifiez ceci pour inclure votre adresse IP publique (ou un DNS dynamique si vous en avez un), ainsi que les phrases que vous voulez associer et les codes IR correspondants. La première variable de la fonction est juste un petit texte renvoyé au navigateur. Vous pouvez copier / coller plus d'un autre bit si vous voulez créer autant de commandes que vous le souhaitez.

 if (phrase == "s'allume") {respondWithTextAndURL ('Allumer les lumières', 'http: // YOURIP / 1/16236607'); } else if (phrase == "s'allume en rouge") {respondWithTextAndURL ('Se préparer pour le temps sexy', 'http: // YOURIP / 1/16195807'); } else if (phrase == "s'allume en bleu") {respondWithTextAndURL ('Mode de travail actif', 'http: // YOURIP / 1/16212127'); } else if (phrase == "s'allume en vert") {respondWithTextAndURL ('Vous êtes bizarre', 'http: // YOURIP / 1/16228447'); } 

Suivez les instructions pour configurer le proxy sur votre appareil. Essentiellement, vous avez juste besoin d'ajouter un proxy HTTP automatique (URL: http://totally.betterthansiri.com ) à votre connexion Internet. La première fois que vous utilisez le service, vous devez vous connecter à partir de votre appareil mobile afin qu'il sache quelles sont vos commandes personnelles, mais vous ne devrez le faire qu'une seule fois.

Limites

Comme vous pouvez le voir, BetterThanSiri est un système assez complexe en ce moment - il n'y a pas d'interface de glisser-déposer, vous aurez donc besoin de comprendre les bases de Javascript pour créer votre propre jeu de commandes. Cela dit, ils ont exposé énormément de pouvoir avec la possibilité de publier des données sur des URL aléatoires, soit en arrière-plan, soit simplement par redirection, donc nous ne pouvions vraiment pas demander plus. Vous pouvez toujours parcourir les recettes existantes si vous n'êtes pas en mesure de programmer les vôtres.

Cela ne vous parle pas non plus, comme le fait Siri. Tous les comptes incluent une fonctionnalité "Dis-moi une blague" similaire à Siri, mais les blagues sont affichées sur l'écran, dans votre navigateur web. Il est possible qu'ils puissent l'ajouter plus tard en utilisant un plugin JavaScript tiers, mais cela peut signifier une augmentation de la bande passante ou de la réactivité.

Enfin, il y a bien sûr le retard impliqué. Votre discours est envoyé à Apple pour traitement dans une commande de texte, renvoyé vous, envoyé au proxy, traité par BetterThanSiri, puis renvoyé sur Internet à notre Arduino local. Dans la démo, chaque commande a pris environ 5-10 secondes au total, et il est peu probable que cela puisse être amélioré. Pour la domotique, cela est parfaitement acceptable, mais si vous essayez de fournir des informations à l'utilisateur en temps opportun, c'est un peu frustrant.

Préoccupations de sécurité

En utilisant un proxy HTTP comme celui-ci, chaque requête HTTP que vous effectuez est acheminée via leurs serveurs: en théorie, ils pourraient examiner tout ce que vous recherchez, chaque site que vous visitez. J'ai demandé aux développeurs à ce sujet, et ce fut leur réponse:

Certainement une préoccupation valable, mais nous ne regardons pas toutes les requêtes HTTP. Notre autoconfig proxy a un moteur de décision qui ne regarde que les requêtes HTTP pertinentes pour GoogolPlex (avec "plex" dedans).

Vous pouvez prendre cela à la valeur nominale; il serait impossible de prouver le contraire, mais si le logiciel serveur était open source (ce qui n'est pas le cas), vous pouvez au moins le vérifier et lancer votre propre serveur privé. Étant donné le potentiel des applications commerciales, il semble peu probable qu'elles puissent l'ouvrir, donc si la confidentialité et la sécurité de votre navigateur mobile sont particulièrement importantes, il est compréhensible que ce ne soit pas un service que vous souhaitiez utiliser.

Personnellement, je ne pense pas que ce soit un euphémisme d'appeler ce service vraiment incroyable. J'en ai entendu parler il y a quelques mois, mais à l'époque, il s'agissait simplement de contrôler Spotify - une preuve de concept. Maintenant qu'ils ont ajouté la possibilité de créer des commandes personnalisées et d'interagir avec n'importe quoi, c'est un système incroyablement puissant que je revisiterai à l'avenir pour former la base d'un système domotique Arduino complet. À quoi pouvez-vous penser pour BetterThanSiri?

In this article