Amazon Echo an Symcon anbinden inklusive Proxy

weiss jemand ob man die connect URL oder sogar nur die ID per PHP auslesen kann? man koennte doch genau die selbe ID als access token (was anderes ist es ja jetzt auch nicht) fuer den skill verwenden, dann muss das weder in der token.php noch in der lambda funktion eingetragen werden.

Nachdem ich IAM, Lambdafunktion und Skill komplett rausgeworfen und neu gemacht habe, funktioniert die Suche nach Geräten nun :loveips: Keine Ahnung, warum.

Danke für den Support an dieser Stelle!

Kann ich irgendwie testen, ohne mit dem Echo Dot zu sprechen?


$InstanzenListe = IPS_GetInstanceListByModuleID("{9486D575-BE8C-4ED8-B5B5-20930E26DE6F}");

foreach ($InstanzenListe as $InstanzID) {
	$ConnectControl = $InstanzID;
}

$connectinfo = CC_GetUrl($ConnectControl); 
var_dump($connectinfo);  

nice! Ich nehme an die ID aus der ersten Zeile ist bei allen identisch?

kannst versuchen ob man es hierueber testen kann, hab ich selber noch nicht getestet: Alexa Skill Testing Tool - Echosim.io

Ja, das ist die ModuleID vom Connect Dienst.

Hi,
zunächst DANKE an mulder und 1007, fonzo und all die anderen :wink:
Funktioniert prächtig!

  1. unterstützt Alexa verschiedene Schlüsselwörter für z.B. eine Lampe? z.B. egal ob ich „Licht Wohnzimmer“ oder „Licht Stube“ sage, es soll ohne Rückfrage die Lampe geschaltet werden. Wie muss dafür der alexa_name aussehen?

  2. ich hangel mich gleich mal daran, die Ausführung von IPS-Skripten in den Control-Thread zu integrieren. Ich nehme an, ich kann in dem Skript ein Array entgegennehmen, für z.B. „an“, „aus“ oder „50%“ ?
    Oder macht es mehr Sinn, für alles eine Dummy-Instanz mit Hilfsvariable zu nehmen, die Alexa ändert? Die Skripte dann bei Änderung dieser Hilfsvariable triggern?

Viele Grüße,
ika

Das habe ich mit Gruppen in Alexa selber geloest. Man kann Gerate ueber den Geraetenamen oder den Gruppennamen ansprechen. Lege Gruppen an, z.B. Licht und Lampe und fuege das Geraet beiden Gruppen hinzu. Ueber Gruppen kann man nartuerlich auch mehrere Gerate auf einmal steuern, bei mir hab ich z.B. eine Gruppe namens „Erdgeschoss“, dort sind alle Lampen ausm Erdgeschsoss drin…

das Habe ich gestern abend schon gemacht, ist simpel, kann ich gleich ins Git repo pushen. Dem script uebergebe ich nur noch den Value der von Alexa kommt, die deviceId ist das script selber. alexa_typ ist „script“ ich musste aber noch im discovery script das if … auskommentieren da sonst nur Instanzen gesucht werden. Da diese funktion ja nur alle jubel jahre ausgefuehrt wird ist die performance aber unwichtig an dieser stelle.

Ich würde ehrlich gesagt nicht zu viele Hilfsvariablen benutzten denn das verbraucht ja alles nur unnütz Variablenanzahl.
Es ja vielleicht einfach möglich das z.B. im Konfigformular mit anzugeben da müsste halt nur noch eine Auswahl für ein Skript rein das dann beim vergebenen Alexa Name ausgeführt werden soll.

ich hab das formular noch nicht getestet, aber gestern auf 4.1 geupdated :slight_smile:

Da scripte aber nicht anders gehandhabt werden als andere instanzen sollte das doch ohne anpassungen funktionieren?!

Darüber hatte ich auch schon nachgedacht. Ich denke aber, Gruppen sollten reine Gruppen („Erdgeschoss komplett“) bleiben. Vielleicht baue ich die Discovery noch um, so dass unter einer Instanz auch ZWEIMAL ein alexa_name stehen kann, so dass diese Instanz als zwei unterschiedliche Geräte in Alexa auftaucht.

Oder wie Fonzo schon sagt, ggf. erstmal abwarten ob man nicht zukünftig alles über einen Konfigurator machen will.
Alternativ mit IPS-Links, die gesammelt in einer Kategorie sind; 1007 hatte seinen Code IMHO dafür leider noch nicht gepostet :wink:

das wäre großartig, DANKE!

Möglich ist alles aber ein Skript hat ein anderes Auswahlfeld als eine Instanz siehe
Konfigurationsformulare — IP-Symcon :: Automatisierungssoftware
daher wäre es ja wichtig das ihr mal Rückmeldung gebt was denn alles in so ein Formular rein soll bzw. wie dies aufgebaut sein soll.

Hast Du denn mal in das Testkonfigform reingeschaut? Ich würde da vielleicht noch eine Kategorieauswahl ergänzen oder vielleicht gleich im Root zumindest nach allen verfügbaren Instanzen suchen. Oder ist es sinnvoller eine Kategorie auswählen zu lassen und nur alle Geräte die unterhalb der Kategorie liegen automatisch einzulesen. Den Hersteller würde ich aus der GUID generieren, den Devicetype aus den vorhanden Variablen und den Alexa Name aus dem Instanznamen. Umbenennen bzw. korrigieren kann man dann ja immer noch alles was eingelesen wurde.

Hallo
Ich bin jetzt soweit , dass mir nur das Formular fuer ein Modul fehlt.
Im Moment hab ich die Einstellungen noch in einem array will das aber in ein Formular bringen.
Der Rest vom Modul ist fertig und legt auf IPSymcon Seite alles benoetigte an ( Hook etc )

Mein Array sieht so aus. Im ersten Fall wird Variable 47488 geschaltet und im zweiten Fall wird Script 20888 gestartet.

	//IPSymcon Variable
	array("IPSYMCON","VARIABLE"			, "1.0.0", "Wohnung"					,"Wohnung in Wachmodus schalten"	,"true",ACTION_ALL		,"Beschreibung" 	, 47488	),

	//IPSymcon Script
	array("IPSYMCON","SCRIPT"			, "1.0.0", "Test"						,"Test"								,"true",ACTION_ALL		,"Beschreibung" 	, 20888	),

Nimm doch das als Vorlage wenn es passt kann ich das dann wieder löschen war ja nur ein Entwurf
GitHub - Wolbolar/IPSymconAmazonEchoTest: Test für IP Symcon Amazon Echo

Den Array übergibts Du an die Eigenschaften des Moduls das Formular musst Du dann so modifizieren in den Funktionen die durch
GetConfigurationForm()
aufgerufen werden.

Hallo Fonzo,

beim Konfiguration schreiben kommtt Fehler

Call to undefined function

Und wie lautet die Fehlermeldung genau?

Amazon_WriteConfig()

Müsste auch AmazonEcho_WriteConfig() heißen, steht da welche Zeile?

Nein die Fehlermeldung sieht so aus
WriteConfig.png