Einen Wert kann ich mittlerweile aus einer Frage extrahieren aber mehrere habe ich bis dato noch nicht filtern können.
Es gibt leider auch keine Beschreibung der SIRI-API.
Ich habe es derzeit mit dem Umweg über zwei Fragen gemacht.
[ol]
[li]Frage an SIRI => Heizung[/li][li]Welcher Raum => z.b. Wohnzimmer[/li][li]Welche Temperatur => 25 (ohne Ansage von Grad oder Celsius)[/li][/ol]und das übergebe ich an die siri.php im User-Verzeichnis.
Folgenden Erweiterungen der Skripte sind dazu notwendig.
[ul]
[li]in $temp steht die gewünschte Temperatur[/li][li]in $room der gewünschte Raum[/li][li]in $array sollte das für die Weitergabe an IPS_RunScriptEx evtl. als Array verpackt sein[/li][li]in der $id ist die übergebene ID für einen Aufruf von IPS_RunScriptEx.[/li][/ul]
und natürlich die siriproxy-ips.rb
listen_for(/Heizung/i) do
room1 = ask "Raum?"
temp1 = ask "Temperatur in #{room1} ?"
room = room1.strip
temp = temp1.strip
result = HTTParty.get("http://#{host}/user/siri/siri.php?type=SETTEMP&id=33375&room=#{room}&temp=#{temp}")
say "Dem Raum #{room} wurde die Temperatur #{temp} Grad uebergeben!"
request_completed
end
Den Parameter „id“ kann man z.b. für eine Übergabe der SkriptID für einen evtl. IPS_RunScriptEx nutzen in dem man auch das $array mit übergibt und dort seine Heizung steuern kann.
Als Alternative für die erste Variante mit mehreren Abfragen hier die Version mit einer Frage und Übergabe des Raumes sowie der Temperatur.
listen_for (/(Wohnzimmer|Kueche|Esszimmer|Schlafzimmer) auf ([0-9,]*[0-9])° (einstellen|stellen|einschalten)/i) do |room1,temp1,action|
room = room1.strip
temp = temp1.strip
result = HTTParty.get("http://192.168.0.5:82/user/siri/siri.php?type=SETTEMP&id=33375&room=#{room}&temp=#{temp}")
say "Der Raum #{room} wurde auf #{temp}° eingestellt!"
request_completed #always complete your request! Otherwise the phone will "spin" at the user!
end
Hallo, sind nun auch in die iphone Gemeinde eingetreten. Habe diesen interessanten Thread hier gefunden … ehe ich loslege eine Frage: Ist das alles noch aktuell? Funktioniert das auch mit einem ihpone 5 ?
Fein, dann werde ich mich demnächst mal an die Sache Randlage. Welchen Siri Proxy setzt du denn ein? Hast du da noch einen Tipp welchem HowTo ich da folgen sollte um mich nicht zu oft zu verrennen?
mein Proxy läuft aktuell in einer VM auf Ubuntu und wenn ich mich noch richtig erinnere, es waren verschiedene Informationen aus dem Netz, ausgehend von diesem Thread hier.
Aktuell gibt es hier im Forium noch etwas interessantes
(Darüber steht der Verweis auf das Example - mir irgendwie unverständlich warum er das eine nimmt, das andere aber nicht:confused:)
Ich habe die Dateien aus dem Download auch entsprechend unter /plugins/siriproxy-ips eingefügt.
Wie so einige andere habe ich aber das Problem beim „siriproxy bundle“ das die Fehlermeldung kommt, das der Pfad zu diesem Plugin nicht existiert: The path /usr/local/rvm/gems/ruby-1.9.3-p374@SiriProxy/gems/siriproxy-0.3.2/plugins/siriproxy-ips does not exist.
Interessanterweise wird - wenn ich „bundle install“ (trotzdem) ausführe - dieses Plugin mit aufgeführt.
Ich habe auch den Tipp mit dem Pfad beginnend mit „home“ gelesen, nur ist mein home-Verzeichnis leer und ich weiß nicht was ich dort als „DEIN_USER_VERZEICHNIS“ eintragen soll…
Vielleicht hat ja trotzdem jemand einen Tipp für mich…
vielen Dank für Deine Antwort! Ich habe den Pfad jetzt beginnend vom root-Verzeichnis eingetragen - und es läuft!
Licht in der Garage geht per Sprachbefehl an!
(Mir etwas unverständlich warum es hier komplett eingegeben werden muss und es beim Example auch so funktioniert - aber so ist das wohl manchmal…;))
Du machst das doch auch auf dem Raspberry, oder? Laeuft denn der „say“ Befehl? Bei mir bleibt Siri einfach stehen, sobald der Proxy einen „say“ Befehl sendet.
Es hat mich schon diverse Stunden gekostet so weit zu kommen (von Freitag bis heute abend diverse Zeit zur Installation auf dem Raspberry Pi), aber an der Stelle mache ich dann weiter…
result = HTTParty.get(„http://#{self.host}/user/siri/siri.php?id=25539&state=1“)
say „Das Licht im Wohnzimmer ist an.“
request_completed #always complete your request! Otherwise the phone will „spin“ at the user!
}
end
listen_for heisst, das Siri auf die Wortfolge Licht, und dann muss noch Wohnzimmer und an im Satz sein, hören soll. Das wird als Befehl switch_light_on definiert.
Wenn switch_light_on dann identifiziert wird, wird über httparty und das webfront der Aktor geschaltet. Dann sollte Siri eigentlich sagen (say) dass das Licht jetzt an ist.
ich habe das Beispielskript auf meine Bedürfnisse angepasst und es kommt bei meine gestrigen „Spätabendsversuchen“ auch brav die Rückmeldung von Siri…
Ob das System nun stabil läuft kann ich Dir noch nicht sagen, dafür war es gestern ein zu kurze Testzeit - aber zumindest dort lief alles so wie es sollte…
ich habe jetzt nach der gestrigen „Testinstallation“ die Skripte weiter meinen Bedürfnissen angepasst und erweitert.
Ich habe die Wahrnehmung, dass nur jeder zweite Befehl korrekt ausgeführt wird.
In etwas sieht das so aus:
Ich gebe einen Sprachbefehl, er wird korrekt ausgeführt
Ich gebe einen weiteren Sprachbefehl, es dauert so lange, dass man den Befehl abbricht (kreisförmige „Sanduhr“ um das Mikrofonsymbol) und ihn erneunt durchführt
Sprachbefehl wird korrekt ausgeführt
Kann das jemand bestätigen??
Joachim
P.S.: Interessant wäre es ja auch einen Wert aus dem IPS abzufragen. Ist das schon jemanden gelungen?
Der Befehl um etwas von der siriproxy-ips-.rb ist ja ein HTTParty.get und beginnt ja mit einen „result =“. Müsste man nicht auf diesem Weg etwas übergeben können und das „result“ in das „say“ einbauen???
Bei mir auch. Es scheint als bekommt er dann keine Verbindung zum guzzoni.apple.com.
EDIT: Habe mal den dnsmasq deaktiviert und auf meinem Windows DNS server guzzoni.apple.com auf meine IP Adresse umgebogen. Läuft jetzt wesentlich stabiler. Ca. 90% Erfolgsquote.