Amazon Echo an Symcon anbinden inklusive Proxy

Ich denke schon. Ich habe neben dem Trigger die Buttons „Disable“ und „Delete“. Als Trigger habe ich ich „Alexa Smart Home“ gewählt mit der App ID vom Skill.

Bei mir ist auch noch irgendwas falsch! Wenn ich den Code jetzt bei Configure Test Event Eingebe kommt :

{
  "stackTrace": [
    [
      "/var/task/lambda_function.py",
      18,
      "lambda_handler",
      "return handleDiscovery(context, event)"
    ],
    [
      "/var/task/lambda_function.py",
      36,
      "handleDiscovery",
      "json.loads(devices)"
    ],
    [
      "/usr/lib64/python2.7/json/__init__.py",
      339,
      "loads",
      "return _default_decoder.decode(s)"
    ],
    [
      "/usr/lib64/python2.7/json/decoder.py",
      367,
      "decode",
      "raise ValueError(errmsg(\"Extra data\", s, end, len(s)))"
    ]
  ],
  "errorType": "ValueError",
  "errorMessage": "Extra data: line 1 column 411 - line 1 column 823 (char 410 - 822)"
}

???

Der Trigger ist enabled

man kann jedes PHP modul ansteuern. WFC_Execute sagt mir noch nix. man kann den devices noch 4 custom felder frei belegen, da lege ich derzeit den typ rein, also switch, dimmer oder shutter, das kannst du beliebig erweitern, vielleicht auf IPS ebene ein swicth/case wo du befehle auf module mapst?

mh, scheinbar funktioniert die kommunikation mit IPS gut. schau mal im lambda log ob du sich da was tut wenn du in der alexa app nach geraten suchen laesst. ich hab dann immer vorher alle logs geloescht damit man das schnell sieht.

hast du in dem alexa skill (unter developer.amazon.com) die richtige ARN eingetragen, also die adresse zu deiner lambda funktion? hast du dir executor rolle angelegt?

puh, sehr schwer das zu debuggen, habe leider keine idee :confused:

Da tut sich leider nichts.

Ja

Jetzt wird es spannend. In IAM habe ich zwei Rollen. die „lambda_executor“, die war schon da. Und die, die ich angelegt habe - das ist bei den Screenshots die Stelle, wo die Rolle „foo“ angelegt wird. Ich habe in der Lambda Function die „lambda_executor“ eingetragen. Irgendwo hier vermute ich den Fehler.

Gruß,
Christoph

Geht das mit einem Smart Home Skill oder nur mit einem Custom Skill? Ich dachte immer die Sprachbefehle sind ja begrenzt bei einem Smart Home Skill, daher kann man dann ja nicht beliebig Befehle verteilen oder?

Kann das hier was mit zu tun haben, das es bei mir nicht funktioniert?

Bei dir steht bei Existing Role service-role/lambda-executor ich kann nur lambda-executor da eintragen bzw auswählen

Eigentlich schon. Hoert sich aber nicht unbedingt gut an. Ich Sag zB
„Alexa schalte Computer ein“
Wenn das dann mit ID und VALUE ankommt starte ich ein Script welches
WAKELAN sendet.

Gesendet von meinem iPad mit Tapatalk HD

schau mal hier: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/smart-home-skill-api-reference

da findest du alle befehle die gehen. wenn du einem script einen namen gibts dann kannst du es ueber diesen namen ansprechen. z.b. script name „Kino“, und du sagts schalte Kino ein, dann kannst du das kino script ausfuehren lassen. dafuer brauchst du noch einen neuen alexa_typ mit wert script. leider sind die aktivierungsmoeglichkeit bei smart home skills begrentzt, ich weiss nicht was passiert wenn man sagt „Alexa, fuehre kino script aus“, oder „Alexa, aktiviere nachtmodus“

Ich habe noch ein bißchen getestet. Funktioniert nach wie vor nicht. Das Suchen der Geräte aus der App hinterlässt keinerlei Spuren in den Logfiles.:confused:

Muss ich noch was in der token.php ändern? Und dann genau so da wo ich den Test mache !? Bei dem access Token ?

Gesendet von iPhone mit Tapatalk

Hallo zusammen,
ein großes Lob an 1007 und mulder - ihr habt das Thema richtig nach vorne gebracht!
Dankeschön!
Alles läuft nun mit dem SmartHome-Skill und kurzen Befehlen.

Falls jemand noch FS20 hat - hier die control-thread.php dafür.

alexa_type ist dann FS20switch.

<?
$deviceId = $_IPS['deviceId'];
$value = $_IPS['value'];
$alexaName = GetValue (@IPS_GetVariableIDByName("alexa_name", $deviceId));
$alexaType = GetValue (@IPS_GetVariableIDByName("alexa_type", $deviceId));
IPS_LogMessage($_IPS['SELF'], "dimm " .$deviceId . " (".$alexaType.") to " . $value);
if ( $alexaType == "dimmer" ) {
	$value = $value / 100.0;
	HM_WriteValueFloat( $deviceId, "LEVEL", $value);
} else if ( $alexaType == "switch" ) {
	HM_WriteValueBoolean($deviceId, "STATE", $value == 100);
} else if ( $alexaType == "FS20switch" ) {
	FS20_SwitchMode($deviceId, $value == 100);	
} else if ( $alexaType == "shutter" ) {
   SC_Move($deviceId, $value);
}
?>

Gruß
Tom

Ich bin leider raus. Habe es jetzt schon zweimal neu gemacht und es funktioniert einfach nicht.

:confused:

Ich gebe für heute auch auf.

Aus Lambda heraus kann ich die Geräte suchen lassen, aber die Alexa APp findet kein einziges Gerät und im Log bei Amazon taucht auch nix auf.

Ich vermute den Fehler im Bereich IAM von Amazon.

Gruß,
Christoph

Bei mir wird die token.php aufgerufen, bekomme aber keine deviceid übermittelt.
Die Geräte werden korrekt über die discover ausgelesen, da steht dann auch die ID drin.
Jemand eine Idee?

Ich glaube bei mir ist auch ein Problem mit der Token.php! Bin halt immer noch nicht sicher ob ich da noch was eintragen muss? Bei accessToken z.B

sorry ich meinte den control-thread.
Dort kommt keine Device ID an.

Hat sich gerade erledigt, habe den skill nicht auf den Endpoint sondern auf den thread schauen lassen :slight_smile:

@Mulder, vielen Dank, klappt super.
Gruß
Georg

@gogo20012002:
Magst Du Deine Erkenntnisse in Form eine dreizeiligen Anleitung teilen?