Amazon Echo an Symcon anbinden inklusive Proxy

Klar, aber im Endeffekt habe ich mit genau an die Anleitung von Mulder gehalten.
Problem war nur, dass ich den Hook \hook\alexa\control\dimm nicht auf das Script „control-endpoint“ sondern auf das Script „control-thread“ habe schauen lassen. Somit konnte die ID natürlich nicht korrekt ankommen. Das war schon alles. :slight_smile:
Im Script „control-thread“ habe ich dann nur noch eine Änderung für meine Wago/Modbus vorgenommen

Am Ende noch aufgenommen

} else if ($alexaType == „switchModbus“ ) {
ModBus_WriteCoil($deviceId , $value == 100);
}

Das wars schon

Okay … Danke.

Hatte gehofft, wir hängen an der selben Stelle, aber bei mir funktioniert schon das Erkennen der Geräte durch Alexa nicht …:confused:

OK, das hatte ich zwischendurch auch. Das lag bei mir an der ARN die ich beim Skill angeben musste. Ich hatte dort einen Standardwert genommen, musste aber der generierte sein.

Okay … ich hab im Skill dort das eingetragen, was mir bei Lambda in der Funktion bei „Action - Show ARN“ angezeigt wird. Das sollte richtig sein?

ja sowas in der Form arn:aws:lambda:eu-west-xxxxxxxxxxxxxxxxx
Hast du die discover url denn einfach mal aufgerufen? Dann siehst du ja was zurückgeliefert wird.
PS: alexa_type und alexa_name hast du aber gesetzt?

Wenn ich xxxxxxxxxxxxxxxxxxxxxxxxx.ipmagic.de/hook/alexa/token aufrufe kommt das hier! Das ist doch Blödsinn, oder?

{ „access_token“: „some_random_sequence“, „token_type“: „bearer“ }

beim access_token müsste doch was anders kommen oder?

Wenn ich die Lambda Funktion teste, kommt als Ergebnis:

{
  "header": {
    "payloadVersion": "2",
    "namespace": "Alexa.ConnectedHome.Discovery",
    "name": "DiscoverAppliancesResponse"
  },
  "payload": {
    "discoveredAppliances": [
      {
        "modelName": "model 01",
        "actions": [
          "turnOn",
          "turnOff",
          "setPercentage",
          "incrementPercentage",
          "decrementPercentage"
        ],
        "friendlyDescription": "Lampe",
        "version": "1.0.0",
        "additionalApplianceDetails": {
          "extraDetail3": "",
          "extraDetail2": "",
          "extraDetail1": "switch",
          "extraDetail4": ""
        },
        "manufacturerName": "Homematic",
        "friendlyName": "Lampe",
        "applianceId": "15955",
        "isReachable": "True"
      }
    ]
  }
}

Daher denke ich, dass die Kommunikation Amazon <–> IPS funktioniert und nur die Kommunikation zwischen Alexa und Amazon nicht funktioniert.

Du musst „some_random_sequence“ durch eine ausgedachte Random-Sequenz Deiner Wahl ersetzen. So habe ich es zumindest gemacht und verstanden.

ruf doch mal die discover url auf. Die generiert doch den json String für die Geräte.
Oder direkt im Skill testen. Dort auf Test gehen und den Testcode eingeben. Findest du ein paar Seiten zurück im Thread.

Die Discover URL liefert die gewünschten Ergebnisse, sonst würde ja der Test der Lambda Funktion nicht funktionieren.

Im Skill kann ich nicht testen. Dort steht „You can then enable the skill and test its functionality by asking Alexa“.

den random token string sollte man ersetzen, ds spielt aber nur beim aktivieren des skills eine rolle. das token wird jetzt von amazon bei jedem zugriff auf dein IPS mitgesendet, du könntest das im script abfragen und so sicherstellen das nur du drauf zugriff hast (stichwort oauth2). bei dir liegt es aber nicht an dieser einstellung da der skill bereits aktiviert wurde. muss an etwas anderem liegen. ich tippe auch auf IAM / rollen konfiguration.

edit1: hast du vielleicht beim alnegen des skills einen custom skill anstatt eines smart home skills angelegt?

edit2: im skill unter developer.amazon.com unter „Configuration“ ist Europe ausgewählt und darunter im eingabefeld hast du die ARN zu deiner Lambda funktion korrekt eingetragen, sieht ca so aus: arn:aws:lambda:eu-west-1:192929292922:function:ip-symcon-alexa-adapter. weiter unten scope =execute?

Darauf tippe ich bei mir auch …

Sieht so aus als wenn du ihn nicht aktiviert hast. Muss aber sein

Wen habe ich nicht aktiviert?

Aber was kann ich da falsch machen ! Rolle anlegen und AWSLambdaExecute policy geben! Allerdings ist mein lambda-execute nicht in service-role/

Gesendet von iPhone mit Tapatalk

Ich habe in der Rolle lambda_executor mal ein bißchen rumgespielt, sowie in der Rolle, die ich selbst angelegt habe (die im Screenshot den Namen „foo“ hat).

Bringt alles nix.

ich suche gerade auch in den rollen rum. leider kann ich mich nicht mehr genau daran erinner, das habe ich vor ca. 2 monaten gemacht als ich die echo einladung angefordert habe, hab mein echo erst letzten freitag bekommen und dann die integration erst testen können… vielleicht kann das mal jemand schritt für schritt beschreiben wie die rolle angelegt wird. ich kann mich nur daran erinnern das ich damals beim anlegen erst nen fehler bekomen hatte weil die rolle oder policy bereits vorhanden war und ich dann die vorhandene verwendete habe.

folgende anleitungen bin ich gefolgt:

das mit der rolle steht dort unter punk 12. da wird dann auf folgende seite verlinkt:
Step 2.2: Create the Execution Role (IAM Role) - AWS Lambda

wo bei mir der path herkommt weiss ich nicht, ist aber im beispiel auch nicht da.

Ich habe die Rollen gelöscht und neu angelegt … Bringt nix. Oder ich mache was falsch. Aber ich sehe momentan nicht, was das sein könnte.

wenn alle stricke reissen mache ich mit dir und mastershort mal ne remote session zusammen, nur heute nicht mehr :stuck_out_tongue:

Bei der Remotesitzung wäre ich dabei. Wobei eine kleine Anleitung helfen würde, oder habe ich diese übersehen?

Gesendet von iPhone mit Tapatalk