Hallo zusammen,
anbei ein kleines How-To, um Siri Proxy auf der RBpi zu installieren und FHEM über Siri steuern zu können.
Ich habe nicht viel Ahnung in Sachen FHEM / Linux / RBpi und kann daher nur beschränkt weiteren Support leisten. Evtl. entsteht hier aber eine interessante Diskussion für alle.
Was ist Siri?Siri (Akronym von Speech Interpretation and Recognition Interface) ist eine Software von Apple, die der Erkennung und Verarbeitung von natürlich gesprochener Sprache dient und so Funktionen eines persönlichen Assistenten erfüllen soll. Die Sprachdaten werden bei bestehender Internetverbindung an einen Apple-Server übertragen, dort verarbeitet und das Ergebnis an das Endgerät zurückgemeldet. Das Vorläuferkonzept stammt ursprünglich von der gleichnamigen Siri Inc., die Apple im Jahr 2010 übernommen hatte.
VerfügbarkeitSiri ist auf dem iPhone 4S, iPhone 5, iPad (3. Generation) und iPod touch (5. Generation) verfügbar und erfordert Internetzugriff.
Wie funktioniert die Siri SpracherkennungSiri kommuniziert per HTTPS mit dem Server guzzoni.apple.com und sendet diesem ACE-Requests, eine Methode, die in HTTP nicht definiert ist. Mitgesendet wird ein sogenannter X-Ace-host, eine eindeutige ID, die jedem iPhone 4S zugeordnet ist. Die dabei gesendeten Binärdaten sind mit zip komprimiert.
Siri kodiert die aufgenommene Sprache mit dem freien Codec Speex, der speziell für die Sprachkompression entwickelt wurde. Wer Siri auf einem anderen Gerät als einem iPhone 4S nutzen will, muss die dort aufgenommenen Daten also ebenfalls mit Speex kodieren. Zudem wird ein gültiger X-Ace-host benötigt, der sich laut Applidium recht einfach aus einem iPhone 4S auslesen lässt. Die Entwickler gehen davon aus, dass es kein großes Problem ist, den X-Ace-host zum persönlichen Gebrauch für ein anderes Gerät zu nutzen. Sollten ein X-Ace-host aber in großem Umfang missbraucht werden, ist davon auszugehen, dass Apple den Account sperren wird.
Zusammen mit den Audiodaten übermittelt das Telefon weitere Informationen an den Server und dieser liefert seinerseits umfangreiche Metadaten mit seinem Analyseergebnis zurück, einschließlich Wahrscheinlichkeitswerten und Zeitstempeln für jedes einzelne Wort.
Quelle: http://de.wikipedia.org/wiki/Siri_%28Software%29Siri Proxy auf RBpi installieren (inkl. Wartezeit ca. 150 Minuten)Per SSH Client oder im Terminal folgende Befehle eingeben:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install dnsmasq ruby build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion
bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
Auf einer Ubuntu VM unter Win7 dauert der Befehl ca. 5 Minuten, auf der RBpi ca. 105 Minuten:
rvm install 1.9.3
rvm use 1.9.3 --default
DNS Server konfigurieren
sudo nano /etc/dnsmasq.conf
Folgende zeile suchen #address=/double-click.net/127.0.0.1 und # entfernen und wie folgt aufbauen (Im Beispiel 192.168.1.120 = IP RBpi):
WICHTIG: Das Zertifikat richtet sich nach der iOS-Version (hier iOS 6.0.0):
address=/guzzoni.apple.com/192.168.1.120
Speichern mit Strg+O, Enter und Strg+X
DNS Server neustarten
sudo /etc/init.d/dnsmasq restart
Siri Proxy aus GIT Hub clonen
git clone git://github.com/plamoni/SiriProxy.git
In den neu erstellten Siri Ordner wechseln
cd SiriProxy
Abfrage mit Y (Yes) bestätigen
mkdir ~/.siriproxy
cp ./config.example.yml ~/.siriproxy/config.yml
Rake installieren (Dauer ca. 10 Minuten)
rake install
Zertifikate generieren
siriproxy gencerts
Siri Proxy bundeln (inkl. evtl. vorhandener Plugins)
siriproxy bundle
Wenn Siri mit dem User pi installiert wurde, muss noch folgendes gemacht werden (Danke an Markus Niemann)
sudo ln -s /home/pi/SiriProxy /root/SiriProxy
sudo ln -s /home/pi/.siriproxy /root/.siriproxy
Zusätzlich musst Du noch die example-config zur default-config machen:
cp /home/pi/SiriProxy/config.example.yml /home/pi/.siriproxy/config.yml
Aufgrund einer weiteren Änderung an der CFPropertyList muss noch folgendes angepasst werden:
sudo nano siriproxy.gemspec
Die folgende Zeile (ziemlich am Ende)
s.add_runtime_dependency "CFPropertyList"
mit folgender Zeile ersetzten, bzw. erweitern:
s.add_runtime_dependency('CFPropertyList', '2.1.2')
Speichern mit Strg+O, Enter und Strg+X
Siri updaten (ca. 90 Sekunden)
rvmsudo siriproxy update .
Server starten (ca. 20 Sekunden)
rvmsudo siriproxy server
Der Befehl wird bestätigt:
Starting SiriProxy on port 443..SiriProxy up and running.
Zertifikate auf iOS Gerät übertragenDas Zertifikat liegt im Ordner
~/.siriproxy/ca.pem und können per WinSCP von der RBpi auf den Rechner kopiert und dann z.B. per Mail an das iOS Gerät verschickt werden. Anschließend muss das Zertifikat auf dem Gerät geöffnet und installiert werden.
WLAN DNS Adresse ändernIn der WLAN Verbindung auf den kleinen blauen Pfeil klicken
Dort die DNS Adresse auf die Adresse eurer RBpi anpassen
Um alles zu aktivieren, anschließend den Flugmodus aus- und einschalten
Wenn der SiriProxy Server läuft kann über den Befehl "
Test Siri Proxy" Siri getestet werden. In der Konsole erscheint
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: FinishSpeech
[Info - Guzzoni] Received Object: SpeechRecognized
[Info - Plugin Manager] Processing 'Test Siri Proxy '
[Info - Plugin Manager] Matches (?i-mx:test siri proxy)
[Info - Plugin Manager] Applicable states:
[Info - Plugin Manager] Current state:
[Info - Plugin Manager] Matches, executing block
[Info - Plugin Manager] Say: Siri Proxy is up and running!
PluginsUm eigene Befehle hinzufügen kann entweder das Beispiel-Plugin bearbeitet werden oder ein eigenes installiert werden.
1) Beispiel Plugin ändern (wir befinden uns im SiriProxy Ordner)
cd plugins/siriproxy-example/lib/
sudo nano siriproxy-example.rb
2) Plugin herunterladen:
In das .siriproxy Verzeichnis wechseln
cd .siriproxy
Config.yml erweitern
sudo nano config.yml
Plugin hinzufügen
- name: 'PluginName'
git: 'git://github.com/pfad/name.git'
Wichtig: Ruby - Klasse = Großbuchstabe am Anfang
FHEM steuernTelnet installieren
sudo apt-get install telnet
Für FHEM Befehle z.B. folgendes einfügen:
listen_for /Licht ein/i do
say "F H E M schaltet das Licht ein" #Siri schreibt und sagt den Befehl
require 'net/telnet'
t = Net::Telnet::new( "Timeout" => 5,
"Prompt" => /%/,
"Host" => "192.168.1.120",
"Port" => 7072 )
#t.login("*MY ACCOUNT*", "*MY PASSWORD*")
t.cmd("String" => "set tisch_licht on", "Match" => //)
t.cmd("quit")
t.close
request_completed
end
Nach jeder Änderung / Installation eines Plugins muss folgendes ausgeführt werden:Aus dem SiriProxy Verzeichnis heraus:rvmsudo siriproxy update .
rvmsudo siriproxy server
Um nicht jedesmal mit einem Gerät zu testen, kann auch eine
Konsole von SiriProxy gestartet werden:
rvmsudo siriproxy console
Hier können die eigentlich gesprochenen Siri-Befehle eingegeben werden und das Coding wird durchlaufen:
>> Licht ein
Ergebnis:
=> F H E M schaltet das Licht ein
Quellen:
http://www.idownloadblog.com/2011/12/09/how-to-install-siri-proxy-tutorial-video/
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=63&t=25118&p=231345
https://groups.google.com/forum/#!topic/fhem-users/ekHQomwmvXw