Bedien vrijwel alles met Siri - Geen Jailbreak vereist

Siri kan soms verbazingwekkend zijn, maar ze kan alleen doen wat Apple haar toestaat. Niet meer.

Siri kan soms verbazingwekkend zijn, maar ze kan alleen doen wat Apple haar toestaat.  Niet meer.
Advertentie

Siri kan soms verbazingwekkend zijn, maar ze kan alleen doen wat Apple haar toestaat. Niet meer: ​​een nieuwe webservice genaamd BetterThanSiri gooit de poorten wijd open, en het vereist niet dat uw apparaat gejailbreakt wordt om er gebruik van te maken. Vandaag zal ik een beetje uitleggen over de service en laten zien hoe u aan de slag kunt met het besturen van een reeks RGB-lampen. Bekijk eerst de video om deze in actie te zien.

Hoe werkt deze donkere magie?

Wanneer u Siri iets vraagt ​​om "Google", opent zij de Safari-browser en routeert uw verzoek zoals u zou verwachten. Het is op dit moment dat er een HTTP-verzoek wordt gedaan, dus als u een HTTP-proxy heeft ingesteld voor uw internetverbinding, een standaardfunctie die geen jailbreak vereist, gaat het verzoek eerst via de proxy .

Hier is waar de magie is: door bevelen met "googolplex" te gebruiken, wordt de zoekterm "plex" plus wat je ook zegt. De proxy - BetterThanSiri.com - identificeert de aanwezigheid van "plex" en onderschept uw ​​zoekopdracht. Wat hierna volgt, wordt dan beschouwd als het eigenlijke "commando". BetterThanSiri voert patroonafstemming uit tegen uw persoonlijke selectie van geconfigureerde opdrachten en voert de relevante code uit. Het is echt ongelooflijk, en ik kan niet wachten om je te laten zien hoe je het moet gebruiken.

RGB-licht regelen

Om BetterThanSiri te demonstreren, heb ik een basis IR-verzend- en -ontvangstcircuit ingesteld - zie mijn vorige tutorial over de duivelse grap van tv Introductie van de TV Devil, een gemakkelijke afstandsbediening Arduino Prank Introductie van de TV Devil, een gemakkelijke afstandsbediening Arduino Prank Lees meer leer meer over de interactie met IR-codes, of lees verder voor de verkorte versie. Dit zijn de onderdelen die je nodig hebt:

  • Arduino, Ethernet-shield en Ethernet-bekabeling
  • IR-LED, 220 Ohm weerstand (afhankelijk van uw specifieke LED, maar dit zou in de meeste gevallen voldoende moeten zijn), en IR-ontvanger
  • RGB LED-stripverlichting, 12V-voeding en bestaande afstandsbediening

restduino-schakeling

Elke afstandsbediening werkt door een nummer te coderen in impulsen van infraroodlicht - dus eerst moet u de controlenummers leren kennen die door uw specifieke afstandsbediening worden gebruikt. Download de IRremote-bibliotheek en start de Arduino IDE opnieuw. Voor de meeste IR-ontvangers, met de koepel van de LED naar u toe gericht, zijn de pinnen van links naar rechts: signaal, GND, + 5V.

IR-recv

Bedraad het signaal naar pin 11 en de andere twee zoals gebruikelijk en laad het IRrecvDemo- voorbeeld van de bibliotheek in. Open de seriële console en druk op de knoppen op uw afstandsbediening - u zou enkele HEX-waarden moeten krijgen. We willen die Hex-waarden eigenlijk als een lang geheel getal, dus voeg een nieuwe Serial.println toe zonder het HEX-onderdeel:

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

Noteer alle nummers die u nodig hebt. In mijn geval vond ik:

  • Rood: 16195807
  • Groen: 16228447
  • Blauw: 16212127

Als u een ander soort afstandsbediening gebruikt, moet u mogelijk ook het IRrecvDump- voorbeeld laden, dat ook het type signaal uitvoert - in mijn geval stuurde de afstandsbediening 32-bits (of 8-cijferige) NEC-codes, wat later in mijn aangepaste servercode wordt weerspiegeld - vergeet niet om dat te veranderen als je dat nodig hebt.

irrecvdump-voorbeeld

Voordat u doorgaat, sluit u uw IR-LED aan voor verzending (de platte kant van de LED gaat naar GND, de andere kant gaat via een 220 Ohm weerstand naar pin 3) en laadt de IRsendDemo . Dupliceer de hoofdopdracht voor verzenden een paar keer en vervang uw eigen IR-codes om ze te testen - voeg een vertraging toe tussen elke code. Upload, en als alles goed werkt, zouden uw LED's door de commando's moeten bladeren die u hebt toegevoegd.

irsendtest-voorbeeld

Download vervolgens het RESTduino-pakket - er is een vervangende Ethernet-bibliotheek die u moet toevoegen en opnieuw, herstart de Arduino IDE. RESTduino is een krachtige RESTful web-API - het maakt een server, die luistert naar binnenkomende verzoeken met de mogelijkheid om pinnen te besturen of er waarden uit te lezen. Probeer eerst de meegeleverde demo om te controleren of alles werkt: u moet het MAC-adres wijzigen, de server-IP statisch maken en een IP-adres definiëren in uw lokale netwerkbereik (waarschijnlijk 192.168.0.x of 10.0.1.x) ) .

maat-restduino

Je zou dan vanuit elke browser toegang moeten kunnen krijgen tot je Arduino - probeer eenvoudig simpele commando's om de waarden op analoge ingang 1 te lezen - bijvoorbeeld:

http://10.0.1.99/a1/

Het maakt niet uit of er niets is verbonden, we controleren alleen of de server werkt. Upload nu mijn gewijzigde versie van deze demo. Ik heb de pinbesturing eruit gehaald en heb deze in plaats daarvan vervangen door IR-bediening. Gebruik een URL van het formulier:

http://10.0.1.99/1/IRCODE

De belangrijke regel in de gewijzigde code is hier:

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

U moet dit wijzigen als uw afstandsbediening niet van het NEC-type is of niet uit 32 bits bestaat. Ik heb ook een vertraging toegevoegd en het commando een paar keer herhaald, omdat IR soms een beetje onbetrouwbaar kan zijn. Tot slot, stel poort doorsturen in. Wat is poort doorsturen en hoe kan het mij helpen? [MakeUseOf Explains] Wat is Port Forwarding en hoe kan het mij helpen? [MakeUseOf Explains] Huil je een beetje naar binnen als iemand je vertelt dat er een probleem is met de poortdoorsturing en daarom zal je glanzende nieuwe app niet werken? Je Xbox laat je geen games spelen, je torrent-downloads weigeren ... Lees meer op je router zodat je IR-opdrachten van overal ter wereld kunt verzenden. Stuur alles door op poort 80 naar de interne IP van je Arduino. U zou nu het interne IP-adres moeten kunnen vervangen door uw openbare IP en het besturingselement zou nog steeds moeten werken. We kunnen nu overgaan naar het instellen van onze aangepaste opdrachten op BetterThanSiri.com.

Begin met het aanmelden en meld je aan om je persoonlijke opdrachtenlijst te beheren.

betterthansiri-webinterface

Bekijk de bestaande opdrachten als je nieuwsgierig bent naar hoe ze werken, of ga gewoon door en maak een nieuwe aan. Geef de opdracht een naam en voeg de woordgroep-matcher toe:

 licht op ~ 

setup-new-commando

Dit betekent dat "deze opdracht overeenkomt met lichten + alles" . Plak vervolgens de onderstaande code in: pas deze aan om uw openbare IP-adres (of een dynamische DNS-code) op te nemen, evenals de frases die u wilt laten matchen en de relevante IR-codes. De eerste variabele in de functie is slechts een kleine tekst teruggestuurd naar de browser. U kunt meer van de else- bit kopiëren en plakken als u zo veel opdrachten wilt maken als u wilt.

 if (zin == "licht op") {respondWithTextAndURL ('Lichten aan', 'http: // YOURIP / 1/16236607'); } else if (phrase == "brandt rood") {respondWithTextAndURL ('Klaar voor sexy tijd', 'http: // YOURIP / 1/16195807'); } else if (phrase == "light blue") {respondWithTextAndURL ('Werkmodus actief', 'http: // YOURIP / 1/16212127'); } else if (phrase == "lights green") {respondWithTextAndURL ('Je bent raar', 'http: // YOURIP / 1/16228447'); } 

Volg de instructies om de proxy op uw apparaat in te stellen. In feite hoeft u alleen maar een automatische HTTP-proxy (URL: http://totally.betterthansiri.com ) aan uw internetverbinding toe te voegen. De eerste keer dat u de service gebruikt, moet u zich aanmelden vanaf uw mobiele apparaat zodat deze weet wat uw persoonlijke opdrachten zijn, maar u hoeft dit slechts één keer te doen.

beperkingen

Zoals je kunt zien, is BetterThanSiri op dit moment een vrij complex systeem - er is geen interface met slepen en neerzetten, dus je moet de basisprincipes van Javascript begrijpen om je eigen opdrachtenset te maken. Dat gezegd hebbende, ze hebben ontzettend veel vermogen blootgelegd met de mogelijkheid om gegevens op willekeurige URL's te plaatsen, hetzij op de achtergrond, hetzij alleen maar om te leiden, dus we konden echt niet om meer vragen. Je kunt altijd door bestaande recepten bladeren als je er niet bent om je eigen recepten te programmeren.

Het spreekt ook niet tegen jou zoals Siri dat doet. Alle accounts bevatten een "vertel me een grap" -functie vergelijkbaar met Siri, maar de grappen worden op het scherm weergegeven, in uw webbrowser. Het is mogelijk dat ze dit later zouden kunnen toevoegen met behulp van een JavaScript-plug-in van een derde, maar dit kan betekenen dat er meer bandbreedte wordt gebruikt of dat er sneller op wordt gereageerd.

Ten slotte is er natuurlijk ook de vertraging. Je speech wordt naar Apple gestuurd voor verwerking in een tekstcommando, teruggestuurd, verzonden naar de proxy, verwerkt door BetterThanSiri en vervolgens via internet teruggestuurd naar onze lokale Arduino. In de demo nam elk commando ongeveer 5-10 seconden in totaal, en het is onwaarschijnlijk dat dit ooit kan worden verbeterd. Voor domotica is dit volkomen acceptabel, maar als u probeert tijdig informatie aan de gebruiker te bezorgen, is dat een beetje frustrerend.

Beveiligingsproblemen

Als u een HTTP-proxy gebruikt, betekent dit dat elk HTTP-verzoek dat u doet, wordt gerouteerd via hun servers: in theorie kunnen ze alles bekijken waarnaar u zoekt, elke site die u bezoekt. Ik vroeg de ontwikkelaars hierover, en dit was hun antwoord:

Zeker een goede zorg, maar we kijken NIET naar elk HTTP-verzoek. Onze proxy-autoconfig heeft een beslissingsengine die alleen kijkt naar de HTTP-verzoeken die relevant zijn voor GoogolPlex (met "plex" erin).

Je kunt dat op zijn kop nemen; het zou onmogelijk zijn om het tegendeel te bewijzen, maar als de serversoftware open source was (wat het niet is), zou je dat op zijn minst kunnen verifiëren en een eigen server kunnen draaien. Gezien het potentieel voor commerciële toepassingen lijkt het onwaarschijnlijk dat ze het opensource openen, dus als privacy en beveiliging in je mobiele browser bijzonder belangrijk is, is het begrijpelijk dat dit geen service is die je wilt gebruiken.

Persoonlijk vind ik het geen understatement om deze service echt geweldig te noemen. Ik hoorde er aanvankelijk een paar maanden geleden over, maar in die tijd was het beperkt tot het feitelijk regelen van Spotify - een proof of concept. Nu ze de mogelijkheid hebben toegevoegd om persoonlijke commando's te maken en met wat dan ook te kunnen communiceren, is het een ongelooflijk krachtig systeem dat ik in de toekomst opnieuw zal bekijken en de basis zal vormen voor een compleet Arduino-domoticasysteem. Welk gebruik kun je bedenken voor BetterThanSiri?

In this article