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

Contrôlez pratiquement n'importe quoi avec Siri - Aucun jailbreak requis / iPhone et iPad

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

Comment fonctionne cette magie noire?

Quand vous demandez à Siri “Google” Quelque chose, elle ouvre le navigateur Safari et achemine votre demande comme vous le souhaitiez. C'est à ce stade qu'une requête HTTP est effectuée. Par conséquent, si vous avez configuré un proxy HTTP sur votre connexion Internet, une fonctionnalité standard qui ne nécessite pas de jailbreak, la requête est transmise. via le proxy premier.

Maintenant, voici où la magie est: en faisant précéder 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. Ce qui suit est alors considéré comme le réel “commander”. BetterThanSiri effectue une correspondance de modèle avec 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 illustrer BetterThanSiri, j’ai configuré un circuit d’émission et de réception infrarouge de base - voir mon précédent tutoriel sur la farce du diable du téléviseur. En savoir plus sur les interactions avec les codes IR ou sur la version condensée. Voici les pièces dont vous aurez besoin:

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

Chaque télécommande fonctionne en encodant un nombre d'impulsions infrarouges. Vous devez donc tout d'abord connaître les numéros de contrôle utilisés par votre télécommande. Téléchargez la bibliothèque IRremote et redémarrez l'IDE Arduino. Pour la plupart des récepteurs IR, le dôme de la LED faisant face à vous, les broches de gauche à droite sont les suivantes: signal, GND, + 5V.

Reliez le signal à la broche 11 et aux deux autres comme d’habitude et chargez-le IRrecvDemo exemple fourni par la bibliothèque. Ouvrez la console série et commencez à appuyer sur les boutons de votre télécommande. Vous devriez obtenir certaines valeurs HEX. En fait, nous voulons que ces valeurs Hex soient un nombre entier long, ajoutez donc un nouveau Serial.println sans la partie HEX:

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

Enregistrez tous les chiffres 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 aussi charger la IRrecvDump exemple, qui affichera également le type du signal - dans mon cas, la télécommande envoyait des codes NEC 32 bits (ou 8 chiffres), ce qui est reflété plus tard dans le code de mon serveur modifié - n'oubliez pas de changer cela si vous en avez besoin.

Avant de commencer, connectez votre voyant infrarouge à l’envoi (son côté plat passe à GND, l’autre côté passe par une résistance de 220 ohms sur la broche 3) et chargez le IRsendDemo. Dupliquez plusieurs fois la commande d’envoi principale et substituez vos propres codes IR pour les tester. Ajoutez un délai entre eux. Téléchargez, et si tout fonctionne bien, vous devriez voir vos voyants parcourir les commandes que vous avez ajoutées..

Ensuite, téléchargez le package RESTduino - vous y trouverez une bibliothèque Ethernet de remplacement que vous devrez ajouter, puis redémarrer l'IDE Arduino. RESTduino est une puissante API Web RESTful. Elle crée un serveur qui écoute les demandes entrantes avec la possibilité de contrôler les broches ou de lire leurs valeurs. Commencez par tester la démo fournie pour vous assurer que tout fonctionne correctement - vous devrez modifier l'adresse MAC, rendre l'adresse IP du serveur statique et définir une adresse IP sur votre réseau local. (probablement 192.168.0.x ou 10.0.1.x).

Vous devriez alors pouvoir accéder à votre Arduino à partir de n'importe quel navigateur. Essayez simplement de lire des valeurs sur l'entrée analogique 1 à l'aide de commandes simples. 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 supprimé le contrôle des broches et je l'ai simplement remplacé par un contrôle IR. 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 changer cela si votre télécommande n’est pas du type NEC ou 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 la redirection de port et comment peut-elle m'aider? [MakeUseOf explique] Qu'est-ce que la redirection de port et comment peut-elle m'aider? [MakeUseOf explique] Pleurez-vous un peu à l'intérieur quand quelqu'un vous dit qu'il y a un problème de transfert de port et que c'est la raison pour laquelle votre nouvelle application brillante ne fonctionnera pas? Votre Xbox ne vous laissera pas jouer à des jeux, vos téléchargements torrent refusent… Lisez-en plus sur votre routeur pour pouvoir envoyer des commandes IR de partout dans le monde. Transférez tout sur le port 80 vers l’IP interne de votre Arduino. Vous devriez maintenant pouvoir 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 commandes personnelle.

Jetez un coup d'œil aux commandes existantes si vous êtes curieux de savoir comment elles fonctionnent, ou allez-y et créez-en une nouvelle. Nommez la commande et ajoutez le locuteur de phrases:

lumières ~

Ce qui signifie “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 une), ainsi que les phrases que vous souhaitez faire correspondre et les codes IR correspondants. La première variable de la fonction est juste un petit texte renvoyé au navigateur. Vous pouvez copier / coller davantage de sinon si bits pour créer autant de commandes que vous le souhaitez.

if (phrase == "voyants allumés") respondWithTextAndURL ("Allumer des voyants allumés", 'http: // YOURIP / 1/16236607');  else if (phrase == "s'allume en rouge") respondWithTextAndURL ('Se préparer pour le moment 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. Il vous suffit essentiellement d’ajouter un proxy HTTP automatique (URL: http://totally.betterthansiri.com) à votre connexion internet. La première fois que vous utilisez le service, vous devrez vous connecter à partir de votre appareil mobile pour qu'il sache quelles sont vos commandes personnelles, mais vous ne devrez le faire qu'une fois..

Limites

Comme vous pouvez le constater, BetterThanSiri est un système assez complexe pour le moment - il n’existe pas d’interface glisser-déposer, vous devez donc comprendre les bases du langage Javascript pour créer votre propre jeu de commandes. Cela dit, ils ont exposé beaucoup de puissance avec la possibilité de publier des données sur des URL aléatoires, soit en arrière-plan, soit simplement en redirection, de sorte que nous ne pouvions vraiment pas en demander davantage. Vous pouvez toujours parcourir les recettes existantes si vous n'êtes pas prêt à programmer vos propres.

Il ne vous répond pas non plus comme Siri. Tous les comptes incluent un “Raconte moi une blague” fonctionnalité similaire à Siri, mais les blagues sont sorties à l'écran, dans votre navigateur Web. Il est possible qu'ils ajoutent ceci plus tard en utilisant un plugin JavaScript tiers, mais cela peut signifier une utilisation accrue de la bande passante ou une réactivité accrue..

Enfin, il y a bien sûr le retard impliqué. Votre discours est envoyé à Apple pour être traité dans une commande de texte, puis renvoyé au proxy, traité par BetterThanSiri, puis renvoyé par Internet à notre Arduino local. Dans la démo, chaque commande prenait 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 remettre rapidement les informations à l'utilisateur, c'est un peu frustrant..

Problèmes de sécurité

Utiliser un proxy HTTP comme cela signifie chaque requête HTTP vous faites est routé 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 voici leur réponse:

C'est certainement une préoccupation valable, mais nous ne regardons PAS toutes les requêtes HTTP. Notre autoconfig proxy dispose d’un moteur de décision qui examine uniquement les requêtes HTTP pertinentes pour GoogolPlex (avec “plex” en eux).

Vous pouvez prendre cela pour argent comptant; il serait impossible de prouver le contraire, mais si le logiciel serveur était à code source ouvert (ce qui n’est pas le cas), vous pouvez au moins le vérifier et exécuter votre propre serveur privé. Étant donné le potentiel des applications commerciales, il semble improbable qu'elles l'ouvrent en source. Par conséquent, si la confidentialité et la sécurité de votre navigateur mobile sont particulièrement importantes, il est compréhensible que vous n'utilisiez pas ce service..

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

En savoir plus sur: Siri.