Danke für den Denkanstoss!
Seit gestern ist die Heizungs- und Lichtsteuerung über SIRI möglich.
Ich hab noch das Problem das bei SIRI nur in einer Sprache antwortet, ich habe hier zwei iPhones mit verschiedener Spracheinstellung. Gibt’s da eine Property die ich im Plugin Script abfragen kann?
kannst mir hier einer ein paar Tipps geben was ich wie an meine Umgebung anpassen muss ? der Proxy läuft und ich habe deine Anleitung wie oben befolgt. Ich kann so gut wie kein php, daher meine Fragen.
Hier mal ein Auszug aus dem Proxy wenn ich nach der Temperatur im Arbeitszimmer frage: (Er gibt mir dann aber nur irgendeine Temperatur warscheinlich eines Ortes das Arbeitszimmer heißt. Aber er checkt zumindest so wie es aussieht schonmal das Plugin ^^
zlib(finalizer): the stream was freed prematurely.
zlib(finalizer): the stream was freed prematurely.
[Info - Plugin Manager] Processing 'Wie ist die Temperatur im Arbeitszimmer '
[Info - Plugin Manager] Processing plugin #<SiriProxy::Plugin::Example:0x9070be4>
[Info - Plugin Manager] No matches for 'Wie ist die Temperatur im Arbeitszimmer '
[Info - Guzzoni] Received Object: AddViews
[Info - Guzzoni] Received Object: AddViews
[Info - Guzzoni] Received Object: RequestCompleted
Was macht denn dein Script (siri.php) ? Oder was muss ich noch so anpassen ?
Sorry… das weicht soweit vom Standard ab, dass ich mir hier nicht zu helfen weiß. Und googeln ist schlecht, da es nicht so viele kranke Leute wie uns gibt
Dem Plugin muss ja z.b. das Wort „Arbeitszimmer“ oder „Küche Hauptlicht“ wie in IPS vorhanden bekannt gemacht werden ?! Nur wie ?!
Einen Rückkanal von IPS zu Siri habe ich noch nicht umgesetzt. Siri gibt IPS bei mir bisher nur Anweisungen.
Die siri.php wertet die Befehle aus die von dem Proxy an IPS übergeben werden. Das sieht für Homematic bei mir z.b. so aus:
Ich übergeben vom Proxy den Typ der Aktion, die IPS-ID der Instanz/Variable und den Wert. Definieren tust Du das auf dem SiriProxy in der siriproxy-ips.rb.
Ein kleiner Ausschnitt:
listen_for(/LED.*Wohnzimmer.*aus/i) { led_wohnzimmer_off }
def led_wohnzimmer_off
Thread.new {
result = HTTParty.get("http://#{self.host}/user/siri/siri.php?type=VAR&id=57924&state=20")
say "L E D Leuchten im Wohnzimmer sind aus."
request_completed #always complete your request! Otherwise the phone will "spin" at the user!
}
end
Die LED-Farbe wird bei mir über eine Variable (mit ID 57924) mit entsprechende Variablenprofil gesteuert (20 = aus, 1=weiss, usw.). Der Befehl lautet daher VAR für Variabe setzten, dann die ID und dann der Wert.
Achtung - Änderungen in dieser Datei werden erst umgesetzt wenn der SiriProxy neu gestartet worden ist.
siriproxy-ips.rb für einen HM-Schaltaktor sähe dann z.b. so aus:
require 'httparty'
class SiriProxy::Plugin::IPS < SiriProxy::Plugin
attr_accessor :host
def initialize(config = {})
self.host = config["host"]
end
#capture light status
listen_for(/Licht.*Badezimmer.*an/i) { licht_badezimmer_on }
listen_for(/Licht.*Badezimmer.*aus/i) { licht_badezimmer_off }
def licht_badezimmer_on
Thread.new {
result = HTTParty.get("http://#{self.host}/user/siri/siri.php?type=HM&id=59009&state=1")
say "Das Licht im Badezimmer ist an."
request_completed #always complete your request! Otherwise the phone will "spin" at the user!
}
end
def licht_badezimmer_off
Thread.new {
result = HTTParty.get("http://#{self.host}/user/siri/siri.php?type=HM&id=59009&state=0")
say "Das Licht im Badezimmer ist aus."
request_completed #always complete your request! Otherwise the phone will "spin" at the user!
}
end
end
Hast Du das IPS-Plugin in der Config vom Siri-Proxy entsprechend eingebunden?
Wenn es da in der siriproxy-ips.rb einen Fehler gäbe dann würde sich der Proxy nämlich mit einer Fehlermeldung beenden.
Abgesehen davon würde eine Abarbeitung des IPS-Plugins einen solchen oder ähnlichen Eintrag ergeben:
ok, mal zum testen. vielleicht muss ich den proxy mal neustarten. wie geht das ?
Mit „rvmsudo siriproxy server“ starte ich ihn ja nur wenn er noch nicht gestartet wäre
ok, mal zum testen. vielleicht muss ich den proxy mal neustarten. wie geht das ?
Mit „rvmsudo siriproxy server“ starte ich ihn ja nur wenn er noch nicht gestartet wäre
Du hast von Linux ebenso viel Plan wie ich
Was mich dann mal zu einer Gegenfrage führt. Ich habe das auf Ubunutu aufgesetzt. Sind Linux-Cracks anwesend die aus dem Stegreif wissen wie ich den Proxy automatisch beim hochfahren der VM starten lassen kann?
Ok. Nachdem ich mir mit diversem rumprobieren eine blutige Nase geholt hatte habe ich Nägel mit Köpfen gemacht und die VM komplett neu aufgesetzt. Dann einen Snapshot gemacht und davon ausgehend den Proxy buchstabengetreu nach dieser Anleitung neu aufgesetzt:
Das hat mich dann zum Ziel geführt und der Proxy lief und konnte restartet werden. Wahrscheinlich hatte ich bei der rumprobiererei (hatte ich meine fundierten Linux-Kenntnisse schon erwähnt?) einiges nicht zum Guten verbogen.
Jetzt muss ich noch rausbekommen wie man die notwendigen Befehle in ein Skript verpackt und dies automatisch startet.
#Here's what I did to get to the point where I'm at:
#-Install Ubuntu 11.10
#-Get all available updates
#-Add the VirtualBox add-ons and video driver
#-Set up SSH (for the SCP at the end)
#
# I have done nothing else to this virtual machine.
# On my iPhone, I set the DNS server to 192.168.2.131 (the IP of the virtual machine)
#
# That's all the pre-setup that was done on the iPhone (the certificate is installed as part of the process)
# Here are the exact steps steps I followed:
#Install all the prerequisites
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
#edit the dnsmasq conf
sudo vi /etc/dnsmasq.conf
# Keystrokes in vi:
# /address=
# A <enter> address=/guzzoni.apple.com/192.168.2.131 <--This is the IP of the VM
# <esc> :wq!
#Restart dnsmasq
sudo /etc/init.d/dnsmasq restart
#Install RVM
bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
#Set RVM path
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
#Set the RVM path to be set up every time I log in
echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
#Install Ruby 1.9.3 -- This will take several minutes
rvm install 1.9.3
#Use ruby 1.9.3 as the default (and current) version of ruby
rvm use 1.9.3 --default
#clone the SiriProxy repo
git clone git://github.com/plamoni/SiriProxy.git
#Enter the SiriProxy directory
cd SiriProxy
#Install SiriProxy -- Can take a minute or two
rake install
#Make the .siriproxy directory in my home directory
mkdir ~/.siriproxy
#Copy the example config
cp ./config.example.yml ~/.siriproxy/config.yml
#Generate the certificates
siriproxy gencerts
#Install the certificate on the phone.
# The way I do it in the video is through dropbox on my host machine.
# You can email the certificate to yourself, or whatever floats your boat.
# Here's the SCP command I use in the video. It's probably 100% worthless to anyone else
#
# scp 192.168.2.131:~/.siriproxy/ca.pem ~/Dropbox/Public/siri.vm.pem
#Bundle SiriProxy (this installs the plugins and whatnot)
siriproxy bundle
#Start the server
rvmsudo siriproxy server
jepp… genau dein HowTo hatte ich auch schon durch… waren aber ein paar Fehler drin…
Das was ich eben gepostet habe ist zu 99% ähnlich. ich fang glaube ich auch noch mal an. Habe noch ein Snapshot der VM
Geil, genau auf die Idee bin ich auch grad gekommen… danach musste ich noch „siriproxy bundle“ ausführen und danach konnte ich den proxy starten… jetzt kommt sobald ich das Wohnzimmer Licht anmachen möchte: