Homematic mit Siri steuern, Plugin siriproxy-homematic

diverse Zusatzsoftware

Moderator: Co-Administratoren

t_heinrich
Beiträge: 542
Registriert: 24.07.2011, 16:38

Re: Homematic mit Siri steuern, Plugin siriproxy-homematic

Beitrag von t_heinrich » 22.03.2013, 18:09

Hallo,

habe folgendes Problem, ich nutze nur die Keymtatic mit der CCU, und möchte nun mittels Befehl die Tür öffnen.
Dies kann ich im Terminal mit dem Url-Aufruf:

Code: Alles auswählen

curl 'http://192.168.1.12:8181/MaxWrestler.exe?ergebnis=dom.GetObject("BidCos-RF.HEQ0481427:3.PRESS_SHORT").State(1)'
Das funktionniert auch einwandfrei.
Packe ich das Ganze in ein SiriProxy Plugin, funktionniert komplett SiriProxy nicht mehr.

Ich vermute, dass irgendwelche Zeichen in Ruby falsch interpretiert werden, denn ein:

Code: Alles auswählen

listen_for /Test/i do
    say "klappt"
    system "curl 'http://192.168.1.42/preset?switch=9&value=on'"
  end
funktinniert einwandfrei.
Als Fehlermeldung bekomme ich:

Code: Alles auswählen

root@raspberrypi:~/SiriProxy# siriproxy server
Starting SiriProxy on 0.0.0.0:443..
SiriProxy up and running.
Create server for iPhone connection
start conn #<SiriProxy::Connection::Iphone:0x143fb98 @signature=3, @processed_headers=false, @output_buffer="", @input_buffer="", @unzipped_input="", @unzipped_output="", @unzip_stream=#<Zlib::Inflate:0x143fac0>, @zip_stream=#<Zlib::Deflate:0x143faa8>, @consumed_ace=false, @name="iPhone", @ssled=false>
/root/SiriProxy/lib/siriproxy/plugin_manager.rb:22:in `require': /root/SiriProxy/plugins/siriproxy-door/lib/siriproxy-door.rb:33: syntax error, unexpected tCONSTANT, expecting keyword_end (SyntaxError)
...?ergebnis=dom.GetObject("BidCos-RF.HEQ0481427:3.PRESS_LONG")...
...                               ^
/root/SiriProxy/plugins/siriproxy-door/lib/siriproxy-door.rb:33: syntax error, unexpected tSYMBEG, expecting keyword_end
...etObject("BidCos-RF.HEQ0481427:3.PRESS_LONG").State(1)'"
...                               ^
	from /root/SiriProxy/lib/siriproxy/plugin_manager.rb:22:in `block in load_plugins'
	from /root/SiriProxy/lib/siriproxy/plugin_manager.rb:14:in `each'
	from /root/SiriProxy/lib/siriproxy/plugin_manager.rb:14:in `load_plugins'
	from /root/SiriProxy/lib/siriproxy/plugin_manager.rb:8:in `initialize'
	from /root/SiriProxy/lib/siriproxy.rb:22:in `new'
	from /root/SiriProxy/lib/siriproxy.rb:22:in `block (2 levels) in initialize'
	from /usr/local/rvm/gems/ruby-1.9.3-p385@SiriProxy/gems/eventmachine-1.0.0/lib/eventmachine.rb:1464:in `call'
	from /usr/local/rvm/gems/ruby-1.9.3-p385@SiriProxy/gems/eventmachine-1.0.0/lib/eventmachine.rb:1464:in `event_callback'
	from /usr/local/rvm/gems/ruby-1.9.3-p385@SiriProxy/gems/eventmachine-1.0.0/lib/eventmachine.rb:187:in `run_machine'
	from /usr/local/rvm/gems/ruby-1.9.3-p385@SiriProxy/gems/eventmachine-1.0.0/lib/eventmachine.rb:187:in `run'
	from /root/SiriProxy/lib/siriproxy.rb:16:in `initialize'
	from /root/SiriProxy/lib/siriproxy/command_line.rb:96:in `new'
	from /root/SiriProxy/lib/siriproxy/command_line.rb:96:in `start_server'
	from /root/SiriProxy/lib/siriproxy/command_line.rb:85:in `run_server'
	from /root/SiriProxy/lib/siriproxy/command_line.rb:37:in `initialize'
	from /root/SiriProxy/bin/siriproxy:6:in `new'
	from /root/SiriProxy/bin/siriproxy:6:in `<top (required)>'
	from /usr/local/rvm/gems/ruby-1.9.3-p385@SiriProxy/bin/siriproxy:19:in `load'
	from /usr/local/rvm/gems/ruby-1.9.3-p385@SiriProxy/bin/siriproxy:19:in `<main>'
	from /usr/local/rvm/gems/ruby-1.9.3-p385@SiriProxy/bin/ruby_noexec_wrapper:14:in `eval'
	from /usr/local/rvm/gems/ruby-1.9.3-p385@SiriProxy/bin/ruby_noexec_wrapper:14:in `<main>'
Jmd eine Idee oder Tip?

Gruß Thomas

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Homematic mit Siri steuern, Plugin siriproxy-homematic

Beitrag von hobbyquaker » 22.03.2013, 18:15

versuch mal

Code: Alles auswählen

 system "curl 'http://192.168.1.12:8181/muh.exe?ergebnis=dom.GetObject(\"BidCos-RF.HEQ0481427:3.PRESS_SHORT\").State(1)'"
oder

Code: Alles auswählen

 system "curl \"http://192.168.1.12:8181/muh.exe?ergebnis=dom.GetObject('BidCos-RF.HEQ0481427:3.PRESS_SHORT').State(1)\""
oder noch besser auf system und curl verzichten und einfach Net::HTTP nutzen (siehe http://ruby-doc.org/stdlib-2.0/libdoc/n ... /HTTP.html)
Beispielcode mit Net:HTTP kannst auch meinem Siriproxy-Homematic Plugin entnehmen, Link in meiner Signatur

Grüße

t_heinrich
Beiträge: 542
Registriert: 24.07.2011, 16:38

Re: Homematic mit Siri steuern, Plugin siriproxy-homematic

Beitrag von t_heinrich » 22.03.2013, 18:25

jaaaaaaaa :D :) 8) :lol:
YOU MADE MY DAY

Der erste Vorschlag hat gleich geklappt.

Vielleicht nur der Vollständigkeithalber, wieso ist es mit NET wie du vorgeschlagen hast besser?

Gruß Thomas

t_heinrich
Beiträge: 542
Registriert: 24.07.2011, 16:38

Re: Homematic mit Siri steuern, Plugin siriproxy-homematic

Beitrag von t_heinrich » 24.03.2013, 20:11

@hobbyquaker:

ich glaube ich brauche noch mal deine Unterstützung.

Meinen Onkyo Receiver kann ich im Terminal mit diesem Aufbau steuern:

Code: Alles auswählen

echo -e "ISCP\x00\x00\x00\x10\x00\x00\x00\x08\x01\x00\x00\x00\x211SLI01\x0D\x0A" | nc 192.168.1.7 60128
In SiriProxy habe ich das so eingebaut:

Code: Alles auswählen

system "echo -e 'ISCP\x00\x00\x00\x10\x00\x00\x00\x08\x01\x00\x00\x00\x211SLI01\x0D\x0A' | nc 192.168.1.7 60128"
In SiriProxy erhalte ich dann dabei aber folgende Fehlermeldung:
[Info - Plugin Manager] Processing plugin #<SiriProxy::Plugin::Door:0x72d020>
[Info - Plugin Manager] Matches (?i-mx:Lampe)
[Info - Plugin Manager] Applicable states:
[Info - Plugin Manager] Current state:
[Info - Plugin Manager] Matches, executing block
[Info - Plugin Manager] Say: Radio an
[Info - Plugin Manager] Plugin Crashed: string contains null byte
Gibt es hier auch einen Trick, wie ich den Befehl abwandeln muss?

Danke und Gruß

Thomas

Manolo80
Beiträge: 2
Registriert: 24.03.2013, 22:33

Re: Homematic mit Siri steuern, Plugin siriproxy-homematic

Beitrag von Manolo80 » 24.03.2013, 23:42

Hallo,

ich hab mich heute auch mal mit dem siriproxy und den Homematic Plugins beschäftigt.
Hab alles auf einem Raspberry Pi installiert, läuft soweit, aber ich weiß nicht wirklich was ich sagen soll:

"Lampe Büro aus" wird beantwortet mit:

Code: Alles auswählen

[Info - Forwarding object to iPhone] SpeechRecognized
[Info - Plugin Manager] Processing 'Lampe Büro aus '
[Info - Plugin Manager] Processing plugin #<SiriProxy::Plugin::Example:0x27211e0>
[Info - Plugin Manager] Processing plugin #<SiriProxy::Plugin::Homematic:0x2720dd8>
[Info - Plugin Manager] Matches (?i-mx:(licht|rollladen|markise|steckdose|stromkreis|beleuchtung|lampe|lampen|lichter) ([a-zäöüß ]+) (auf|zu|öffnen|schließen|abschalten|anschalten|ausschalten|aktivieren|deaktivieren|an|aus|[0-9]+ %))
[Info - Plugin Manager] Applicable states:
[Info - Plugin Manager] Current state:
[Info - Plugin Manager] Matches, executing block
[Info - Plugin Manager] Say: parsed: type=switch/dimmer/shutter description=Lampe Büro value=aus
[Info - Forwarding object to iPhone] AddViews
[Info - Plugin Manager] Say: Büro nicht gefunden.
[Info - Forwarding object to iPhone] AddViews
[Info - Plugin Manager] Sending Request Completed
Vielleicht hab ich einfach das falsche gesagt. Ich habe zum testen einen Steckdosenfunkschalter (HM-LC-Sw1-Pl-2), da hängt eine Lampe dran und das ganze steht im Büro: Name = "Büro", Typenbezeichnung = "HM-LC-Sw1-Pl-2", Bezeichnung = "Funk- Zwischenstecker- Schaltaktor 1fach", ..., Gewerke = "Licht", Räume = "Büro"

Mir ist nicht ganz klar ob der Name sinnig ist und was ich Siri genau sage.

Hat jmd eine Idee?


Vielleicht hab ich die hq-xmlapi vergessen? Ich wollte sie runterladen unter
aber da gibt es sie nicht mehr.
Ist die geänderte API denn unbedingt nötig, oder wirklich nur, wenn man Variablen auslesen will?


Was ist eigentlich mit dem youtube Video? Der Link ist auch tot :-(


Viele Grüße,
Manolo

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Homematic mit Siri steuern, Plugin siriproxy-homematic

Beitrag von hobbyquaker » 25.03.2013, 09:14

@Manolo80:

Ich glaube das scheitert am Ü in Büro. Teste mal bitte mit irgendwas ohne Umlaute.

Die gepatchte XML-API gibt es nun hier: https://github.com/hobbyquaker/XML-API

Das youtube Video musste ich auf Geheiss meiner Frau wieder entfernen, hat ihr nicht gepasst dass unser Wohnzimmer im Netz rumgeistert ;)

Allgemein zu dem Siriproxy-Plugin: Das ist noch nicht wirklich "reif" und enthält noch ein paar Fehler (siehe dieser Thread). Mehr als Proof-of-Concept zu betrachten als als "fertiges Produkt" - daher auch die Versionsnummer 0.x :)

@t_heinrich:
Das scheitert an den Null-Bytes, die kann man in Ruby so glaube ich nicht in ein String packen, diese Bytefolge musst Du in Ruby anders verpacken.
Zur Frage warum Net:HTTP besser ist als ein Curl-Aufruf: Ganz einfach weil dann kein extra Prozess gestartet wird und Du Dich nicht so verrenken musst mit doppelten String-Escapes. Das gleiche gilt übrigens auch für den Fall mit Deinem Onky Receiver, den nc-Prozess könnte man sich eigentlich sparen...

t_heinrich
Beiträge: 542
Registriert: 24.07.2011, 16:38

Re: Homematic mit Siri steuern, Plugin siriproxy-homematic

Beitrag von t_heinrich » 25.03.2013, 13:52

@hobbyquaker:

Danke schon mal für die Erläuterung.
Kannst du mir noch einen Schups in die richtige Richtung geben, dann versuch ich mich mal selber dran.

Gruß Thomas

Manolo80
Beiträge: 2
Registriert: 24.03.2013, 22:33

Re: Homematic mit Siri steuern, Plugin siriproxy-homematic

Beitrag von Manolo80 » 26.03.2013, 12:16

Hey hobbyquaker,

Quake ist nett, hab früher mal in der DeCL gespielt :)

Zu siriproxy:
  • Umlaute machen keine Probleme, "Lampe Büro an" funktioniert jetzt
  • Mein Fehler war, dass ich in der config.yml die ccu_ip mit "http://" geschrieben hatte: 'http://x.x.x.x', das ist natürlich Murks, das setzt dein ruby-Script ja nochmal dazu.
  • Es kann sein, dass ich einen Fehler in deinem Script entdeckt habe. Bei hm_runprogram sendest du "runprogram.cgi?ise_id=", das geht bei mir nicht. Müsste es nicht korrekterweise "runprogram.cgi?program_id=" heißen? Damit läufts bei mir.
  • Ich kann deine Frau bzgl des Videos verstehen :-)
Viele Grüße,
Manolo

art-audio
Beiträge: 712
Registriert: 13.12.2010, 09:45

Re: Homematic mit Siri steuern, Plugin siriproxy-homematic

Beitrag von art-audio » 29.03.2013, 06:45

Hallo,

ich (als IT-Laie) bekomme demnächst von einem User aus dem Klangfuzzi-Forum einen Rasberry Pi B mit einem SiriProxy zusammengebastelt, weil ich von der Idee, die Haussteuerung über iOS-Sprachsteuerung zu machen, sehr begeistert bin :D .

Ich habe ein paar Fragen dazu:

1) Läuft die Sprachsteuerung bei Euch problemlos?

2) Wird ein Jailbreak auf den iOS-Geräten benötigt? Auf dem Firmen-iPhone ist das leider untersagt. Auf unseren iPads wäre das wohl möglich, aber ich habe das noch nie gemacht. Es wäre schön, wenn es ohne gehen würde. Als iOS-Hardware haben wir ein iPad 2, ein iPad Mini, ein Pad 4 und zwei iPhone 5 in Betrieb.

3) Bei uns sind derzeit insgesamt 160 HomeMatic Funkkomponenten an der CCU 1 (die CCU 2 ist bestellt....), davon allein ungefähr 30 Lichtschalter und Dimmer. Lassen Hardware (Rasberry Pi B 512 MB) und Software solche umfangreichen Projekte zu?
Gruß

Sven

(aktuell ca. 200 HomeMatic Funk Aktoren und Sensoren und einigen Hundert Kanälen mit steigender Tendenz)

t_heinrich
Beiträge: 542
Registriert: 24.07.2011, 16:38

Re: Homematic mit Siri steuern, Plugin siriproxy-homematic

Beitrag von t_heinrich » 31.03.2013, 09:51

Hallo Sven,

schön mal wieder von einander zu lesen.
Ich bin wie du zwar sehr interessiert, aber im Vergleich zu anderen Freaks :D :D hier im Forum auch Laie, vor allem was die Konsole angeht.
Von daher kann ein Profi bestimmt aus dem System mehr rausholen, aber so rum hast du vielleicht auch einen guten Vergleich für dich.

Vorneweg: ich kann alle meine Funksteckdosen, die "ausgerüsteten" Lampen und mein TV, AV Receiver, Sat Receiver und MacMini mit iRule vollständig steuern, von daher ist SiriProxy (=SP) ein NiceToHave.

Ich war in der Lage mittels HowTo's und Fragen im Forum mein SiriProxy selbst aufzusetzen und zum Laufen zu bringen.

zu 1.) nein, leider nicht. Ich mache momentan viel Trial und Error um rauszufinden, welche Befehle gehen bzw. verstanden werden. "Lampe an" versteht SP, "Laserpod an" nicht. Umlaute werden bei mir auch nicht aktzeptiert.
Von daher übe ich momentan mit 2-4 Befehlen.

zu 2.) nein wird es nicht, es wird ein eigenes Profil installiert und du nimmst eine DNS Einstellung in den Wlan Einstellungen vor. Ich habe firmenbedingt auch Profile installiert, ein zusätzliches Profil war bei mir kein Problem.

zu 3.) technisch vermutlich schon, hab ich nicht getestet, da ich nicht so viele Aktoren habe, aber siehe 1.)

Fazit für mich: eine sehr nette Spielerei, die hoffentlich ausgebaut wird. Mit dem derzeitigen Stand aber wirklich nur ne Spielerei und daher für mich nur als Zusatz für ein bereits funktionnierendes System.

Gruß Thomas

Antworten

Zurück zu „Sonstige Addons“