IPS siri Integration

Danke, das beseitigt die Meldung. Aber es wird bei mir einfach immer noch nichts geschaltet und es erscheint auch nicht im Meldungsfenster. Hast du noch eine Idee, woran das liegen könnte? Handelt sich wie gesagt um Bool mit Profil ~Swicth bzw. Homematic mit STATE.

http://ips/user/siri/siri.php?location=ZUHAUSE&values=Garten%20Poolpumpe%20Ausschalten wird bspw. mit

say "Garten Poolpumpe ist An."

quittiert.

Danke & Gruß, Axel

Hi Axel,
nimm mal statt „Ausschalten“ bitte „aus“ und auch klein schreiben.
Das was du als Quittieren ansiehst ist nur die aktuelle Zustandsmeldung. Wenn er schaltet sollte ein
say „Erledigt!“
vor dem aktuellen Zustand kommen. Ich hoffe es ist bei v. 0.0.5 auch schon so :wink:

kannst du es nochmal testen?

Version 0.0.6 ist nun online

Bitte genau die Beschreibung zum Update im ersten Post lesen!!!
Es hat sich viel verändert.

Cool, die Hilfefunktion ist toll. Leider ist bei mir noch ein Wurm drin.

http://ips-server/user/siri/siri.php?hashkey=91c731a8ad504c4dde932f79104f992c&location=Zuhause&values=Wohnzimmer%20Beleuchtung%20auf%20AN

Ergebnis: say „Erledigt!“ say „Wohnzimmer Beleuchtung ist An.“

Leider passiert aber nichts und es erscheint auch nichts im Meldungsfenster. Das ist eine Bool mit Profil ~Switch und Custom Action.

Das Homematic Gerät (4-Fach Aktor mit STATE Variable) führt zu keinem Ergebnis im Browser.

http://ips-server/user/siri/siri.php?hashkey=91c731a8ad504c4dde932f79104f992c&location=Zuhause&values=Garten%20Poolpumpe%20EIN

.

Danke & Gruß, Axel

Hi Axel,
leider hab ich so einen Aktor nicht und kann es nicht testen.
Bitte überprüf nochmal folgendes:

[ul]
[li]Du hast die 4 Kanäle von dem Aktor jeweils als 1 einzelnes HomeMatic-Device in IPS, wo jedes eine eigene STATE-Variable besitzt?
[/li][li]Also der Link muss auf die Instance des HomeMatic-Devices gesetzt werden und nicht auf die STATE-Variable
[/li][li]bei der STATE-Variable bitte die Standardmäßig von IPS hinterlegte Action lassen.
[/li][li]Kannst du mal ein neues VariablenProfil anlegen und dann man bei Assoziationen folgende Texte hinterlegen? true => „An“, false => „Aus“
[/li][/ul]

Hi habe auf V 0.6 upgedatet so wie beschrieben war.

Bekomme aber die Meldung auf dem SiriProxy:

/home/siri/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych.rb:203:in `parse’: (/home/siri/.siriproxy/config.yml): found character that cannot start any token while scanning for the next token at line 29 column 1 (Psych::SyntaxError)

Wenn ich die Zeile mit dem HashKey weglasse, startet der SiriProxy normal, aber labert dann das keine Berechtigung habe.

So Sieht meine Config aus:

 - name: 'IPS'
      path: './plugins/siriproxy-ips'
      server:
          ZUHAUSE:
              host: '192.168.0.5:82' 	#192.168.0.10:82
              protocol: 'http://'
              script: '/user/siri/siri.php'
	      hashkey: ’504337’		

Hi drapple,

es sieht so aus, als wenn der Eintrag hashkey nicht richtig eingerückt ist und du die falschen Anführungszeichen verwendest. Kopier mal die Hochkommata aus dem script Eintrag.
Bitte auch den leeren Bereich vor dem Eintrag script kopieren und dann vor hashkey einfügen, damit beide identisch eingerückt stehen. YML-Format ist da manchmal etwas zu präzise :wink:
Anschließend den SiriProxy neu starten

Ich hoffe es geht dann.

Danke, ich weis zwar nicht wie das passieren konnte, weil ich es ja per copy und paste eingefügt habe, aber das war es mit den ‚‘ Zeichen :wink:

Das sehr merkwürdig, wenn ich die Config mit dem Texeditor von Mac bearbeitete steht optisch die ’ Zeichen richtig da, wenn ich aber nano nachschaue ist das ’ Zeichen sowas : ??xx^1

Da hätte ich ja mich wund suchen können nach dem Fehler ;-(

So nächstes Problem:

Wenn ich ein HM Gerät egal ob ein Dimmer oder nur ein Eon/Ausschaltmodul schalten will kommt das :

can’t convert HTTParty::Response into String

Wenn ich den Status abfrage, klappt es aber !

Versuch es mal über den Browser und pass dir folgendes Beispiel an:

http://<ips-server>/user/siri/siri.php?hashkey=<HASHKEY>&location=ZUHAUSE&values=Wohnzimmer%20Beleuchtung%20auf%20An

Alles in den spitzen klammern musst du anpassen und hinten nach values halt das was du schalten willst. Achtung Groß und Kleinschreibung beachten :wink:

und dann Poste mal das was du da bekommst, bitte den quelltext der Seite hier als Code posten.

So ich habe folgendes eingeben:

http://192.168.0.5:82/user/siri/siri.php?hashkey=504337&location=ZUHAUSE&values=Kinderzimmer%20Licht%20auf%20An

Es es kommt nix :frowning:

Dass gar nichts kommt, kann eigentlich nicht sein
Versuch mal bitte:

http://192.168.0.5:82/user/siri/siri.php?hashkey=504337&location=ZUHAUSE&values=Hilfe

IP, Port, und der Pfad zum Script stimmen?
Hashkey ist auch der richtige, der in der config.siri.php eingetragen ist?
du hast auch die SIRI_ROOT in der config angepasst? :wink:

Ja stimmt alles :

Das passiert:

response = ask "Bitte wähle aus folgenden Möglichkeiten aus: FLUR, KINDERZIMMER, SCHALFZIMMER, WOHNZIMMER Welche dieser Möglichkeiten möchtest du?" response = response.force_encoding('UTF-8') urlValues = "values=".force_encoding('UTF-8') pastUrlValues = " Hilfe".force_encoding('UTF-8') result = IPSRequest('ZUHAUSE',"#{urlValues}#{response}#{pastUrlValues}") eval(result)

Also so wie es aussieht scheint es seitens IPS alles richtig zu funktionieren.
Kannst du mal zu siri „Zuhause Hilfe“ sagen.
und dabei das Log vom SiriProxy ansehen?
was kommt dann da?

Grr, zum verrückt werden !!!

in Version 0.04 musste ich noch die Status Variable verlinken ! Jetzt muss ich die Instanz verlinken !!!

Jetzt klappt es, aber gibt noch einen Schönheitsfehler :wink:

Wenn ich Siri sage: Zuhause Kinderzimmer Licht auf 80% machst Sie es brav und sagt : Kinderzimmer Licht ist 0.8.

Wäre schön wenn Sie sagen würde: Das Licht im Kinderzimmer habe ich dir auf 80% gedimmt.

Oder wenn ich das Licht einschalte (Boolean) dann sagt Sie : Flur Licht ist 1.

Wäre schön wenn Sie sagen würde: Das Licht im Flur habe ich dir eingeschaltet.

Hey Supi,

ja genau die Instanz bitte (steht auch so in der Anleitung) :wink:
das in 0.0.4 die Statusvariable nötig war, war ein BUG.

Das mit den logischen Antworten ist garnicht so einfach. Da ich es nur anhand der Variablen entscheiden kann was es für ein Befehlt war. Und die LEVEL Statusvariable haben ja auch Thermostate und noch zig anderes Zeug…
Aber ich bin dran, dass Siri sich besser ausdrückt. Aber es ist ja so schonmal nen Anfang.

Jo klar bin dir für alles hier mega dankbar !!!

Sowas von geil !!! Ich hoffe ich gehe dir nur nicht auf die nerven ;-(

:wink:
nene passt schon…
bringt mich ja auch weiter wenn das plugin mehrere im einsatz haben und alle beim fehlersuchen helfen :wink:

Jetzt fehlt nur noch, dass man sein telefon am SiriProxy einmal authentifizieren muss, damit nicht jeder mit Siri den Proxy nutzen kann…
Aber ich hab noch keinen Plan wie ich die Identität vom iOS-Device raus bekomme.

Habe glaube ich noch einen Fehler gefunden:

Wenn ich ein Script starte, fragt er nach ob ich ausführen will.

Wenn ich ja sage macht Siri es.

Wenn ich nein sage, fragt Siri wieder, ob ich es ausführen will.

Hi drapple,

stimmt ist noch nen Fehler. Hab ich für die nächste Version schon gefixt.

in die Datei siri/values/script.values.php in dem array bitte folgendes ergänzen:

,"nein" => false

und in der Datei siri/siri.php bitte folgende Funktion suchen (ca. ab Zeile 187):

function siriActionLinkScript($source,$categoryName,$linkName,$linkTargetID) {
		global $stateValues,$response,$location;
		// SCRIPT
		if (isset($source['STATE']) && $source['STATE'] != "" && isset($stateValues['script'][strtolower($source['STATE'])]) && $stateValues['script'][strtolower($source['STATE'])]==true) {
			IPS_RunScript($linkTargetID);
			addToSay($categoryName." ".$linkName.'" wird ausgeführt!');
		} else {
			// ToDo:	Soll das Script ausgeführt werden?
			addToAsk("Soll \"$categoryName $linkName\" ausgeführt werden?","values=$categoryName $linkName ");
		}
	}

und durch folgendes ersetzen:

function siriActionLinkScript($source,$categoryName,$linkName,$linkTargetID) {
		global $stateValues,$response,$location;
		// SCRIPT
		if (isset($source['STATE']) && $source['STATE'] != "" && isset($stateValues['script'][strtolower($source['STATE'])]) && $stateValues['script'][strtolower($source['STATE'])]==true) {
			IPS_RunScript($linkTargetID);
			addToSay($categoryName." ".$linkName.'" wird ausgeführt!');
		} elseif (isset($source['STATE']) && $source['STATE'] != "" && isset($stateValues['script'][strtolower($source['STATE'])]) && $stateValues['script'][strtolower($source['STATE'])]==false) {
			addToSay("Das Ausführen von ".$categoryName." ".$linkName.'"wurde abgebrochen!');
		} else {
			addToAsk("Soll \"$categoryName $linkName\" ausgeführt werden?","values=$categoryName $linkName ");
		}
	}

dann sollte dein Problem gelöst sein.