Amazon Echo an Symcon anbinden inklusive Proxy

Auf eine Eigenschaft kannst Du mit
IPS_GetProperty — IP-Symcon :: Automatisierungssoftware
zugreifen. Wenn Du das aber sowieso als JSON brauchst kann ich auch eine String Variable anlegen und da ein JSON reinschreiben mit der Konfiguration. Musst nur sagen wie der Array aufgebaut sein soll der dann vom Formular abgelegt wird.

Wäre das so vom Aufbau ok?


$config = array();
$config[$objectid] = array("alexaname" => $alexaname, "vendor" => $vendor, "type" => $type);

$alexaname wäre ein Textfeld String
$vendor könnte entweder über ein Dropdownfeld ausgewählt werden (Integer) oder aber aus der GUID ausgelesen, wobei man dann bei einem Dummy Instanz nicht weis was es eigenntlich ist. Was ist da besser?
$type wäre ein Dropdownfeld mit Integer kann das aber auch schon Umwanden in String wenn Dir das lieber ist

das JSON muss pro device so aussehen (aus discover.php)


$json = "{
		\"applianceId\":\"".$deviceId."\",
		\"manufacturerName\":\"Homematic\",
		\"modelName\":\"model 01\",
		\"version\":\"1.0.0\",
		\"friendlyName\":\"".$alexaName."\",
		\"friendlyDescription\":\"".$alexaName."\",
		\"isReachable\":\"True\",
		\"actions\":[
		   \"turnOn\",
		   \"turnOff\",
		   \"setPercentage\",
		   \"incrementPercentage\",
		   \"decrementPercentage\"
		],
		\"additionalApplianceDetails\":{
		   \"extraDetail1\":\"".$alexaType."\",
		   \"extraDetail2\":\"\",
		   \"extraDetail3\":\"\",
		   \"extraDetail4\":\"\"
		}
	}";

wenn du mir pro device so einen json string generieren kannst dann so, aber in discover.php habe ich bereits eine funktion die uns das JSON generiert am liebsten waer mir ein Object oder ein Multidimensionales assoziatives array um damit die bestehende funktion zu füttern.

@ Mulder warum wird mir Alexa Smart home nicht angezeigt? Habe ich noch irgendwass vergessen?

Bildschirmfoto 2016-12-20 um 18.42.01.png

Edit : Hat sich erledigt musste oben rechts das Land auswählen habe jetzt (EU) Irland genommen jetzt geht es.

Hallo Leute,

ist es richtig wenn ich in der lambda-function.py unter myips = „“ meine normale IP Symcon Connect Adresse angebe und zwar ohne die Anführungszeichen?

Kann mir jemand sagen wie ich den Client Secret ermitteln kann?

In den Beispielbildern auf GitHub ist einerseits von einer Rolle „service-role/lambda-executor“ die Rede anderseits wird beschrieben wie die Rolle „foo“ erstellt wird. Welche Rolle muss ich jetzt nehmen?

Vielen Dank!

Axel

du musst dort nur die lange nummer eingeben die zwischen https:// und .ipmagic.de steht, nicht die komplette URL

client secret ist irgendetwas wo man noch eine sicherheitsstufe einrichten kann, habe ich mich bis jetzt nicht näher mit befasst, das ist ein proof of concept, jedem sollte klar sein dass man beim verwenden der web hooks sein system angreifbar macht. wir sollten uns darum kuemmern es etwas sicherer zu machen, ich glaube das man das client secret dafür verwenden kann.

„foo“ & „bar“ sind nur beispiel namen die von programmierern gerne verwendet werden :wink:

EDIT: ich bin so angetan, ich glaube ich bestelle mir noch ne logitech harmony damit ich auch meinen beamer und meinen verstärker mit alexa steuern kann…

Wenn es jemand näher interessiert So funktioniert OAuth2.
Um die ganze OAuth Authentifizierung kümmert sich aber der OAuth Endpunkt von IP-Symcon und vergibt dann den BearerToken an das IP-Symcon System. Es besteht also eigentlich kein Bedarf sich da tief einzulesen denn wenn man IP-Symcon Connect benutzt geht das in Zukunft mit IP-Symcon sehr einfach.

Anbei ein erster Entwurf für ein Konfigurationsformular für Amazon Echo.
GitHub - Wolbolar/IPSymconAmazonEchoTest: Test für IP Symcon Amazon Echo

Hier wählt man dann pro Instanz einen Alexa Namen, Gerätetyp und Hersteller aus. Das ganze müsste zur Zeit manuell ausgewählt werden. In einem nächsten Schritt könnte man dies aber auch anhand der GUID und dem Instanznamen generieren lassen. Dann müsste dies nur noch vom Nutzer angepasst werden wenn z.B. ein anderer Alexaname benutzt werden soll. Momentan ist die im Konfigurationsformular zu definierenden Geräte auf 400 beschränkt.
Die Konfiguration wird in eine Variable als JSON geschrieben und kann dann von dort weiterverarbeitet werden.

[ul]
[li]Wieviele Alexa Geräte werden denn voraussichtlich benötigt?
[/li][li]Welche Alexa Typen gibt es alles?
[/li][li]Sollen dann im finalen Zustand alle Hersteller die in IP-Symcon ansteuerbar sind auswählbar sein?
[/li][li]Für was wird das Hersteller Feld denn ausgewertet?
[/li][li]Was fehlt da noch im Formular bzw. sollte noch ergänzt werden?
[/li][/ul]

das Formular meckert, ich brauche dafür IPS 4.1. Ich habe vor ein paar wochen ein update gemacht, ist 4.1 noch beta?

Ja das Formular braucht zwingend IP-Symcon 4.1, da es sich um ein dynamisches Konfigurationsformular handelt das erst ab IP-Symcon 4.1 unterstützt wird. IP-Symcon 4.1 ist inzwischen als Stable Release verfügbar, Funktionen wie OAuth befinden sich aber noch in der 4.1 Beta. Das Formular ist also mit der 4.1 Stable lauffähig, Du müsstest also ein Update machen.

Ist es auch irgendwie möglich das ich z.B meine Plugwise Steckdosen Schalte?

Das sind ja keine direkten Instanzen von IP Symcon? Sondern in meinem Fall über die IPS Libary eingebunden.

wenn du deine steckdosen per script steuern kannst, dann ist es moeglich. sieh dir das script control-thread.php an, dort musst du die befehle auf deine geraete anpassen.

Aha OK, das bekomme ich hin denke ich :slight_smile:

Ich habe habe aber irgendwie noch ein Problem mit lambda_funcition.py

Wenn ich das in der Konsole Test kommt folgendes

Wenn ich Geräte über den Skill suchen lasse werden auch keine gefunden. Habe eigentlich deine Screenshots genau befolgt.

Weißt du wo der Fehler liegen könnte.

Hatte ich gestern auch. Lies mal hier.
https://www.symcon.de/forum/threads/32361-Amazon-Echo-an-Symcon-anbinden-inklusive-Proxy?p=309920#post309920

wenn du dich genau an die screenshots gehalten hast, dann hast du vielleicht auch den lambda trigger nicht aktiviert.

genau die zwei „fehler“ hatte 1007 auch, am besten ich mache dazu auch noch ein paar screenshots… :wink:

offtopic:
las uns wissen wie/ob es funktioniert. ich habe mir dann noch die logitech harmony bestellt gestern, konnte nicht wiederstehen, jetzt muss ALLES per alexa gesteuert werden muhahhahahaha :smiley: dumm nur das meine leinwand eine propriertaere funk fernbedienung verwendet, irgendwas im 868MHz bereich, jemand ne idee ob man sowas hacken kann? arduino mit 868mhz modul?

Ja noch paar Screenshots wären cool!

Soll ich


{
  "header": {
    "payloadVersion": "2",
    "namespace": "Alexa.ConnectedHome.Discovery",
    "name": "DiscoverAppliancesRequest"
  },
  "payload": {
    "accessToken": "someaccesstoken"
  }
}


Einfach hier eingeben

oder hier ?? Oder stehe ich gerade voll auf dem Schlauch?

Danke für deine Geduld :slight_smile:

Ersteres „Configure Test Event“

Mal eine Frage am Rande, muss ein anderes PHP Modul irgendwas bestimmtes erfüllen, damit es mit Sprachsteuerung verknüpft und gesteuert werden kann? Wie wird die Aktion eines Moduls dann in der Regel ausgeführt über eine Funktion des Moduls oder WFC_Execute? Muss man dies dann immer manuell konfigurieren oder könnte man pro Modul schon fest hinterlegen welche Funktion bei welchem Sprachkommando ausgeführt werden soll?

Gib dann mal Bescheid ob sich das Konfigurationsformular unter 4.1 benutzten lässt. Das sollte eigentlich sicher funktionieren kann das nur nicht selber sicher testen da meine eigene Testumgebung mit 4.2 läuft.

Moin,

vielen Dank an Mulder für die Daten im Git.

Ich bin an der Stelle, dass ich beim Test der Lambda Funktion auf der Amazon Oberfläche die Geräte angezeigt bekommt, die Alexa App findet jedoch keine Geräte. Unter „Triggers“ der Lambda Funktion habe ich „Alexa SmartHome“ hinzugefügt. Die App weigert sich jedoch, die Geräte zu finden.

Kann mir jemand helfen?

Danke und Gruß,
Christoph

Ist der Trigger auch enabled ?