Siri kann manchmal fantastisch sein, aber sie kann nur tun, was Apple ihr erlaubt. Nicht mehr: ein neuer Web-Service namens BetterThanSiri öffnet die Tore weit offen und es erfordert nicht, dass Ihr Gerät jailbroken wird, um es zu nutzen. Heute werde ich etwas über den Service erklären und Ihnen zeigen, wie Sie mit der Steuerung einer Reihe von RGB-Leuchten beginnen. Sehen Sie sich zuerst das Video an, um es in Aktion zu sehen.
Wie funktioniert diese Dunkle Magie?
Wenn Sie Siri bitten, etwas "Google" zu nennen, öffnet sie den Safari-Browser und leitet Ihre Anfrage wie erwartet weiter. An dieser Stelle wird eine HTTP-Anfrage gestellt. Wenn Sie also einen HTTP-Proxy für Ihre Internetverbindung eingerichtet haben - eine Standardfunktion, die keinen Jailbreak erfordert -, geht die Anfrage zuerst über den Proxy .
Jetzt ist hier, wo die Magie ist: Indem man Befehle mit "googolplex" vorsetzt, wird der Suchbegriff "plex" plus was auch immer du sagst. Der Proxy - BetterThanSiri.com - identifiziert das Vorhandensein von "Plex" und fängt Ihre Suchanfrage ab. Was auch immer folgt, wird dann als der eigentliche "Befehl" betrachtet. BetterThanSiri führt einen Mustervergleich mit Ihrer persönlichen Auswahl konfigurierter Befehle durch und führt den entsprechenden Code aus. Es ist wirklich erstaunlich, und ich kann es kaum erwarten, dir 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 über den TV-Teufelstreich Einführung des TV-Teufels, eine einfache Fernbedienung Arduino Prank Einführung des TV-Teufels, eine einfache Fernbedienung Arduino Prank Read More to Erfahren Sie mehr über die Interaktion mit IR-Codes, oder lesen Sie weiter für die Kurzfassung. Hier sind die Teile, die Sie benötigen:
- Arduino, Ethernet-Abschirmung und Ethernet-Verkabelung
- IR LED, 220 Ohm Widerstand (hängt von Ihrer speziellen LED ab, aber dies sollte in den meisten Fällen ausreichen) und IR-Empfänger
- RGB LED-Streifen, 12V-Netzteil und vorhandene Fernbedienung
Jede Fernbedienung funktioniert, indem sie eine Zahl in Impulse von Infrarotlicht kodiert - zuerst müssen Sie die Kontrollnummern lernen, die von Ihrer bestimmten Fernbedienung benutzt werden. Laden Sie die IRremote-Bibliothek herunter und starten Sie die Arduino IDE neu. Bei den meisten IR-Empfängern sind die Pins von links nach rechts, wenn der Dome der LED Ihnen zugewandt ist: Signal, GND, + 5V.
Verbinden Sie das Signal wie gewohnt mit Pin 11 und den anderen beiden, und laden Sie das von der Bibliothek bereitgestellte IRrecvDemo- Beispiel. Ö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 eine ganze Zahl, also fügen Sie eine neue Serial.println ohne den HEX-Teil hinzu:
Serial.println (results.value, HEX); Serial.println (Ergebnisse.Wert);
Notieren Sie alle Zahlen, die Sie benötigen. In meinem Fall fand ich:
- Rot: 16195807
- Grün: 16228447
- Blau: 16212127
Wenn Sie eine andere Art von Fernbedienung verwenden, müssen Sie möglicherweise auch das IRrecvDump- Beispiel laden, das auch den Signaltyp ausgibt - in meinem Fall hat die Fernbedienung 32-Bit- (oder 8-stellige) NEC-Codes gesendet. was sich später in meinem geänderten Servercode widerspiegelt - denken Sie daran, das bei Bedarf zu ändern.
Bevor Sie fortfahren, verbinden Sie Ihre IR LED zum Senden (die flache Seite der LED geht auf GND, die andere Seite geht über einen 220 Ohm Widerstand zu Pin 3), und laden Sie das IRsendDemo . Duplizieren Sie den Haupt-Send-Befehl einige Male und ersetzen Sie Ihre eigenen IR-Codes, um sie zu testen - fügen Sie eine Verzögerung zwischen jedem hinzu. Upload, und wenn alles gut funktioniert, sollten Sie sehen, wie Ihre LEDs die von Ihnen hinzugefügten Befehle durchlaufen.
Laden Sie als nächstes das RESTduino-Paket herunter - dort befindet sich eine Ersatz-Ethernet-Bibliothek, die Sie hinzufügen und erneut die Arduino-IDE neu starten müssen. RESTduino ist eine leistungsstarke RESTful-Web-API - sie erstellt einen Server, der eingehende Anfragen mit der Fähigkeit abfängt, Pins zu steuern oder Werte von ihnen zu lesen. Probieren Sie zunächst die mitgelieferte Demo aus, um sicherzustellen, dass alles funktioniert. Sie müssen die MAC-Adresse ändern, die IP-Adresse des Servers statisch machen und eine IP-Adresse für Ihren lokalen Netzwerkbereich definieren (wahrscheinlich 192.168.0.x oder 10.0.1.x) ) .
Sie sollten dann von jedem Browser auf Ihr Arduino zugreifen können - probieren Sie einfach einfache Befehle aus, um die Werte am analogen Eingang 1 zu lesen - zum Beispiel:
http://10.0.1.99/a1/
Es spielt keine Rolle, wenn nichts verbunden ist, wir überprüfen nur, ob der Server funktioniert. Laden Sie jetzt meine modifizierte Version dieser Demo hoch. Ich habe die Pin-Steuerung entfernt und stattdessen nur durch IR-Steuerung ersetzt. Verwenden Sie eine URL des Formulars:
http://10.0.1.99/1/IRCODE
Die wichtige Zeile im modifizierten 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 einige Male wiederholt, da IR manchmal ein wenig unzuverlässig sein kann. Schließlich Port Forwarding einrichten Was ist Port Forwarding und wie kann es mir helfen? [MakeUseOf erklärt] Was ist Port Forwarding & Wie kann es mir helfen? [MakeUseOf Explains] Weinst du innerlich etwas, wenn dir jemand sagt, dass es ein Port-Forwarding-Problem gibt und deshalb deine neue App nicht funktioniert? Ihre Xbox lässt Sie keine Spiele spielen, Ihre Torrent-Downloads verweigern ... Lesen Sie mehr auf Ihrem Router, so dass Sie IR-Befehle von überall auf der Welt senden können. Leiten Sie alles auf Port 80 an die interne IP Ihres Arduino weiter. Sie sollten jetzt in der Lage sein, die interne IP-Adresse durch Ihre öffentliche IP-Adresse zu ersetzen, und das Steuerelement sollte weiterhin funktionieren. Wir können nun 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 neugierig sind, wie sie funktionieren, oder gehen Sie einfach voran und erstellen Sie eine neue. Benennen Sie den Befehl und fügen Sie den Ausdruck Matcher hinzu:
Lichter ~
Was bedeutet, dass "dieser Befehl Lichter + alles" entspricht . Fügen Sie dann den folgenden Code ein - ändern Sie dies, um Ihre öffentliche IP-Adresse (oder ein dynamisches DNS, falls vorhanden) sowie die passenden Ausdrücke und die relevanten IR-Codes aufzunehmen. Die erste Variable in der Funktion ist nur ein kleiner Text, der an den Browser gesendet wird. Sie können mehr von den else if- Bits kopieren / einfügen, um so viele Befehle wie gewünscht zu erstellen.
if (Ausdruck == "leuchtet") {respondWithTextAndURL ('Licht einschalten', 'http: // YOURIP / 1/16236607'); } else if (Ausdruck == "Leuchtet rot") {respondWithTextAndURL ('Immer bereit für sexy Zeit', 'http: // YOURIP / 1/16195807'); } else if (Ausdruck == "leuchtet blau") {respondWithTextAndURL ('Arbeitsmodus aktiv', 'http: // YOURIP / 1/16212127'); } else if (Ausdruck == "leuchtet grün") {respondWithTextAndURL ('Du bist seltsam', 'http: // YOURIP / 1/16228447'); }
Folgen Sie den Anweisungen, um den Proxy auf Ihrem Gerät einzurichten. Im Wesentlichen müssen Sie lediglich einen automatischen HTTP-Proxy (URL: http://totally.betterthansiri.com ) zu Ihrer Internetverbindung hinzufügen. Wenn Sie den Dienst zum ersten Mal verwenden, müssen Sie sich von Ihrem Mobilgerät aus anmelden, damit er weiß, was Ihre persönlichen Befehle sind, aber Sie müssen dies nur einmal tun.
Einschränkungen
Wie Sie sehen können, ist BetterThanSiri im Moment ein ziemlich komplexes System - es gibt keine Drag & Drop-Schnittstelle, daher müssen Sie die Grundlagen von Javascript verstehen, um Ihren eigenen Befehlssatz zu erstellen. Nichtsdestotrotz haben sie sehr viel Macht mit der Möglichkeit, Daten an zufällige URLs zu verschicken, entweder im Hintergrund oder einfach nur in einer Weiterleitung gezeigt, so dass wir wirklich nicht mehr verlangen konnten. Sie können immer nach vorhandenen Rezepten suchen, wenn Sie nicht selbst programmieren möchten.
Es spricht auch nicht zu dir zurück, wie Siri es tut. Alle Accounts enthalten eine ähnliche Funktion wie "Siri", aber die Witze werden auf dem Bildschirm in Ihrem Webbrowser ausgegeben. Es ist möglich, dass sie dies später mit einem JavaScript-Plugin von Drittanbietern hinzufügen könnten, aber es kann eine erhöhte Bandbreitennutzung oder Reaktionsfähigkeit bedeuten.
Schließlich gibt es natürlich die Verzögerung. Ihre Rede wird an Apple zur Verarbeitung in einem Textbefehl gesendet, zurückgeschickt, an den Proxy gesendet, von BetterThanSiri verarbeitet und dann über das Internet an unser lokales Arduino gesendet. In der Demo dauerte jeder Befehl ungefähr 5-10 Sekunden und es ist unwahrscheinlich, dass dies jemals verbessert werden kann. Für die Hausautomatisierung ist dies durchaus akzeptabel, aber wenn Sie versuchen, Informationen rechtzeitig an den Benutzer zurückzugeben, ist das ein wenig frustrierend.
Sicherheitsbedenken
Die Verwendung eines HTTP-Proxys bedeutet, dass jede von Ihnen erstellte HTTP-Anfrage über ihre Server geleitet wird: theoretisch könnten sie alles untersuchen, was Sie suchen, jede Site, die Sie besuchen. Ich habe die Entwickler danach gefragt, und das war ihre Antwort:
Definitiv eine gültige Angelegenheit, aber wir betrachten nicht jede HTTP-Anfrage. Unser Proxy-Autokonfig verfügt über eine Entscheidungs-Engine, die nur die HTTP-Anfragen berücksichtigt, die für GoogolPlex relevant sind (mit "Plex" in ihnen).
Sie können das auf den Nennwert nehmen; Es wäre unmöglich, das Gegenteil zu beweisen, aber wenn die Serversoftware Open Source war (was nicht der Fall ist), könnten Sie das zumindest verifizieren und Ihren eigenen privaten Server betreiben. Angesichts des Potenzials für kommerzielle Anwendungen scheint es unwahrscheinlich, dass sie es öffnen würden. Wenn Datenschutz und Sicherheit in Ihrem mobilen Browser besonders wichtig sind, ist es verständlich, dass dies kein Dienst ist, den Sie verwenden möchten.
Ich persönlich finde es nicht untertrieben, diesen Service wirklich erstaunlich zu nennen. Ich habe vor ein paar Monaten davon gehört, aber zu der Zeit war es im Grunde nur Spotify zu kontrollieren - ein Proof of Concept. Jetzt, wo sie die Fähigkeit hinzugefügt haben, personalisierte Befehle zu erstellen und mit allem zu interagieren, ist es ein unglaublich leistungsstarkes System, das ich in Zukunft noch einmal besuchen werde, um die Basis für ein komplettes Arduino-Hausautomationssystem zu bilden. Was für Anwendungen können Sie sich für BetterThanSiri vorstellen?