Mit Siri praktisch alles kontrollieren - Kein Jailbreak erforderlich

Mit Siri praktisch alles kontrollieren - Kein Jailbreak erforderlich / iPhone und iPad

Siri kann manchmal erstaunlich sein, aber sie kann nur das tun, was Apple ihr erlaubt. Nicht mehr: Ein neuer Webdienst namens BetterThanSiri öffnet die Tore weit auf, und es ist nicht erforderlich, dass Ihr Gerät einen Jailbreak hat, um davon Gebrauch zu machen. Heute werde ich ein wenig über den Dienst erklären und Ihnen zeigen, wie Sie mit der Steuerung von RGB-Lichtern beginnen können. Sehen Sie sich zuerst das Video an, um es in Aktion zu sehen.

Wie funktioniert diese dunkle Magie??

Wenn du Siri fragst “Google” In diesem Fall öffnet sie den Safari-Browser und leitet Ihre Anfrage wie erwartet weiter. An diesem Punkt wird eine HTTP-Anforderung gestellt. Wenn Sie also einen HTTP-Proxy für Ihre Internetverbindung eingerichtet haben - eine Standardfunktion, für die kein Jailbreaking erforderlich ist - wird die Anforderung ausgeführt über den Proxy zuerst.

Nun, hier ist die Magie: indem Sie Befehle mit voranstellen “Googolplex”, Der Suchbegriff wird “Plex” plus was auch immer du sagst. Der Proxy - BetterThanSiri.com - identifiziert die Anwesenheit von “Plex” und fängt Ihre Suchanfrage ab. Was folgt, wird dann als das tatsächliche betrachtet “Befehl”. BetterThanSiri führt einen Musterabgleich mit Ihrer persönlichen Auswahl der konfigurierten Befehle durch und führt den entsprechenden Code aus. Es ist wirklich erstaunlich und ich kann es kaum erwarten, Ihnen zu zeigen, wie man es benutzt.

RGB-Lichter steuern

Um BetterThanSiri zu demonstrieren, habe ich eine grundlegende IR-Sende- und Empfangsschaltung eingerichtet - siehe mein vorheriges Tutorial zum TV Teufel-Streich Erfahren Sie mehr über die Interaktion mit IR-Codes oder lesen Sie die gekürzte Version. Hier sind die Teile, die Sie brauchen:

  • Arduino-, Ethernet-Shield- und Ethernet-Verkabelung
  • IR-LED, 220 Ohm Widerstand (abhängig von Ihrer jeweiligen LED, dies sollte jedoch in den meisten Fällen ausreichen) und IR-Empfänger
  • RGB-LED-Streifenlichter, 12V-Netzteil und vorhandene Fernbedienung

Jede Fernbedienung funktioniert durch Kodierung einer Zahl in Infrarotlichtimpulsen. Zuerst müssen Sie die von Ihrer Fernbedienung verwendeten Kontrollnummern lernen. Laden Sie die IRremote-Bibliothek herunter und starten Sie die Arduino IDE neu. Bei den meisten IR-Empfängern mit der Ihnen zugewandten Kuppel der LED sind die Pins von links nach rechts: Signal, GND, + 5V.

Verdrahten Sie das Signal wie üblich mit Pin 11 und den beiden anderen IRrecvDemo Beispiel aus der Bibliothek. Öffnen Sie die serielle Konsole und drücken Sie die Tasten auf Ihrer Fernbedienung - Sie sollten einige HEX-Werte erhalten. Wir wollen diese Hex-Werte eigentlich als lange Ganzzahl, also fügen Sie eine neue hinzu Serial.println ohne den HEX-Teil:

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

Notieren Sie sich alle Nummern, die Sie benötigen. In meinem Fall habe ich gefunden:

  • Rot: 16195807
  • Grün: 16228447
  • Blau: 16212127

Wenn Sie eine andere Art von Fernbedienung verwenden, müssen Sie möglicherweise auch die IRrecvDump Beispiel, das auch das ausgeben wird Art of signal - in meinem Fall sendete die Fernbedienung 32-Bit (oder 8-stellige) NEC-Codes, was sich später in meinem geänderten Servercode widerspiegelt. Denken Sie daran, das zu ändern, wenn Sie dies benötigen.

Bevor Sie fortfahren, müssen Sie Ihre IR-LED zum Senden verkabeln (die flache Seite der LED geht auf GND, die andere Seite geht über einen 220-Ohm-Widerstand an Pin 3) und lädt die IRsendDemo. Duplizieren Sie den Hauptsendebefehl einige Male und ersetzen Sie ihn mit Ihren eigenen IR-Codes. Fügen Sie eine Verzögerung zwischen den einzelnen hinzu. Upload, und wenn alles gut funktioniert, sollten Ihre LEDs die von Ihnen hinzugefügten Befehle durchlaufen lassen.

Laden Sie als Nächstes das RESTduino-Paket herunter. Dort gibt es eine Ersatz-Ethernet-Bibliothek, die Sie hinzufügen und die Arduino-IDE erneut starten müssen. RESTduino ist eine leistungsstarke RESTful-Web-API. Sie erstellt einen Server, der auf eingehende Anforderungen wartet und die Möglichkeit hat, Pins zu kontrollieren oder Werte daraus zu lesen. Testen Sie zunächst die mitgelieferte Demo, um sicherzustellen, dass alles funktioniert. Sie müssen die MAC-Adresse ändern, die IP-Adresse des Servers statisch festlegen und eine IP-Adresse für Ihr lokales Netzwerk festlegen (wahrscheinlich 192.168.0.x oder 10.0.1.x).

Sie sollten dann in der Lage sein, von einem beliebigen Browser auf Ihr Arduino zuzugreifen. Probieren Sie einfach die einfachen Befehle aus, um die Werte des Analogeingangs 1 zu lesen - zum Beispiel:

http://10.0.1.99/a1/

Es spielt keine Rolle, wenn nichts verbunden ist. Wir prüfen nur, ob der Server funktioniert. Laden Sie jetzt meine modifizierte Version dieser Demo hoch. Ich habe die Stiftsteuerung ausgezogen und stattdessen einfach durch IR-Steuerung ersetzt. Verwenden Sie eine URL des Formulars:

http://10.0.1.99/1/IRCODE

Die wichtige Zeile im geänderten Code ist hier:

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

Sie müssen dies ändern, wenn Ihre Fernbedienung nicht vom NEC-Typ ist oder nicht 32 Bit lang ist. Ich habe auch eine Verzögerung hinzugefügt und den Befehl ein paar Mal wiederholt, da IR manchmal etwas unzuverlässig sein kann. Richten Sie schließlich die Portweiterleitung ein. Was ist Portweiterleitung und wie kann sie mir helfen? [MakeUseOf erklärt] Was ist Portweiterleitung und wie kann sie mir helfen? [MakeUseOf Explains] Weinen Sie ein wenig, wenn Ihnen jemand sagt, dass es ein Problem mit der Portweiterleitung gibt, und deshalb funktioniert Ihre glänzende neue App nicht? Ihre Xbox lässt Sie keine Spiele spielen, Ihre Torrent-Downloads lehnen auf Ihrem Router ab, sodass Sie IR-Befehle von überall auf der Welt senden können. Leiten Sie alles an Port 80 an die interne IP Ihres Arduino weiter. Sie sollten jetzt in der Lage sein, die interne IP durch Ihre öffentliche IP zu ersetzen, und die Steuerung sollte weiterhin funktionieren. Jetzt können wir unsere benutzerdefinierten Befehle auf BetterThanSiri.com einrichten.

Beginnen Sie mit der Anmeldung und melden Sie sich an, um Ihre persönliche Befehlsliste zu verwalten.

Sehen Sie sich die vorhandenen Befehle an, wenn Sie wissen möchten, wie sie funktionieren, oder erstellen Sie einfach einen neuen Befehl. Benennen Sie den Befehl und fügen Sie den passenden Ausdruck hinzu:

Beleuchtung ~

Was bedeutet “Dieser Befehl passt auf Lichter + alles”. Fügen Sie dann den folgenden Code ein - ändern Sie diesen, um Ihre öffentliche IP-Adresse (oder eine dynamische DNS-Adresse, falls vorhanden) sowie die Phrasen, die Sie zuordnen möchten, und die entsprechenden IR-Codes anzugeben. Die erste Variable in der Funktion ist nur ein kleiner Text, der an den Browser zurückgesendet wird. Sie können mehr davon kopieren / einfügen sonst wenn Bits, um so viele Befehle zu erstellen, wie Sie möchten.

if (Phrase == "leuchtet auf") responseWithTextAndURL ('Lichter einschalten', 'http: // YOURIP / 1/16236607');  else if (Phrase == "leuchtet rot") responseWithTextAndURL ('Bereit für sexy Zeit', 'http: // YOURIP / 1/16195807');  else if (Phrase == "leuchtet blau") responseWithTextAndURL ('Arbeitsmodus aktiv', 'http: // YOURIP / 1/16212127');  else if (Phrase == "leuchtet grün") responseWithTextAndURL ("Sie sind komisch", "http: // YOURIP / 1/16228447"); 

Folgen Sie den Anweisungen, um den Proxy auf Ihrem Gerät einzurichten. Im Wesentlichen müssen Sie nur einen automatischen HTTP-Proxy hinzufügen (URL: http://totally.betterthansiri.com) zu Ihrer Internetverbindung. Wenn Sie den Dienst zum ersten Mal verwenden, müssen Sie sich von Ihrem mobilen Gerät aus anmelden, um Ihre persönlichen Befehle zu kennen. Sie müssen dies jedoch nur einmal tun.

Einschränkungen

Wie Sie sehen, ist BetterThanSiri im Moment ein recht komplexes System. Es gibt keine Drag-and-Drop-Oberfläche, daher müssen Sie die Grundlagen von Javascript verstehen, um einen eigenen Befehlssatz zu erstellen. Das heißt, sie haben eine enorme Menge an Macht mit der Fähigkeit, Daten an zufällige URLs entweder im Hintergrund oder nur als Weiterleitung zu posten, gezeigt, sodass wir wirklich nicht mehr verlangen konnten. Sie können vorhandene Rezepte immer durchsuchen, wenn Sie nicht selbst programmieren möchten.

Es spricht dich auch nicht so an wie Siri. Alle Konten enthalten a “Erzähl mir einen Witz” Diese Funktion ähnelt Siri, die Witze werden jedoch in Ihrem Webbrowser auf dem Bildschirm ausgegeben. Es ist möglich, dass sie dies später mithilfe eines JavaScript-Plugins von Drittanbietern hinzufügen können. Dies kann jedoch zu einer erhöhten Bandbreitennutzung oder einer höheren Reaktionsgeschwindigkeit führen.

Schließlich ist natürlich auch die Verzögerung damit verbunden. Ihre Rede wird an Apple zur Verarbeitung zu einem Textbefehl gesendet, zurückgesendet, an den Proxy gesendet, von BetterThanSiri verarbeitet und dann über das Internet an unser lokales Arduino zurückgesendet. In der Demo dauerte jeder Befehl insgesamt etwa 5-10 Sekunden, und es ist unwahrscheinlich, dass dies jemals verbessert werden kann. Für die Heimautomation ist dies durchaus akzeptabel. Wenn Sie jedoch versuchen, dem Benutzer zeitnah Informationen zur Verfügung zu stellen, ist dies etwas frustrierend.

Sicherheitsbedenken

Die Verwendung eines solchen HTTP-Proxys bedeutet jede HTTP-Anfrage Ihr Make wird durch ihre Server geleitet: Theoretisch könnten sie alles durchsuchen, wonach Sie suchen, jede Site, die Sie besuchen. Ich habe die Entwickler danach gefragt und dies war ihre Antwort:

Definitiv ein gültiges Anliegen, aber wir betrachten NICHT jede HTTP-Anfrage. Unsere Proxy-Autokonfiguration verfügt über eine Entscheidungs-Engine, die nur die für GoogolPlex relevanten HTTP-Anforderungen (mit “Plex” in ihnen).

Sie können das für bare Münze nehmen; Es wäre unmöglich, etwas anderes zu beweisen, aber wenn die Serversoftware Open Source wäre (was sie nicht ist), könnten Sie dies zumindest überprüfen und Ihren eigenen privaten Server betreiben. Angesichts des Potenzials für kommerzielle Anwendungen scheint es unwahrscheinlich, dass sie diese öffnen würden. Wenn Datenschutz und Sicherheit Ihres mobilen Browsers besonders wichtig sind, ist es verständlich, dass dies kein Dienst ist, den Sie verwenden möchten.

Ich persönlich halte es nicht für eine Untertreibung, diesen Service als wirklich erstaunlich zu bezeichnen. Ich habe vor ein paar Monaten davon gehört, aber damals beschränkte ich mich darauf, nur Spotify zu kontrollieren - ein Beweis für das Konzept. Mit der Möglichkeit, personalisierte Befehle zu erstellen und Schnittstellen zu erstellen, ist dies ein unglaublich leistungsfähiges System, das ich in Zukunft noch einmal besuchen werde, um die Basis eines kompletten Arduino-Hausautomationssystems zu bilden. Was können Sie sich für BetterThanSiri vorstellen??

Mehr erfahren über: Siri.