alexa-fhem: amazon alexa smart home skill für fhem

Begonnen von justme1968, 05 November 2016, 23:21:32

Vorheriges Thema - Nächstes Thema

omnior

@amenomade
ZitatFunktioniert mittlerweile deine Alexa-fhem?

Wegen Apache: ich habe das auch. Aber zwischen der Fritzbox und des offenen Port auf dem Pi, nicht zwischen alexa-fhem und fhem. Was willst du wissen?

Ja, danke funktioniert alles, config.json war schon ok, aber ich hatte zuletzt noch vergessen beim web device den https Eintrag reinzutun :-).

Bezüglich der Installation des Apache auf dem pi bin ich natürlich jetzt sehr vorsichtig. Hab es ja offensichtlich nicht fehlerfrei hinbekommen, und letztlich weiß ich aber nicht was falsch war bzw. wo mein Fehler lag. Habe ähnliche Konstellation (fb und pi) im Prinzip ging es mir auch nur um die Absicherung des offenen Ports auf dem pi bzw. der Einrichtung eines SSL-Reverse-Proxys, hatte es damals mit Letsencrypt versucht. Bin mir jetzt unsicher ob ich das nochmal "wagen" soll oder ob ich besser die Finger davon lasse, ist halt mit beschränkten Kenntnissen schwierig wenn dann irgendwas nicht funktioniert und man nicht mehr richtig weiter weiß  ;)

haempy

Zitat von: hauwech am 17 Dezember 2017, 13:09:11
Hallo Roland,
Alexa versteht mich erstaunlich gut - obwohl ich Erzgebirgler bin  ;D.
Just nachdem ich meine Frage abgeschickt hatte, habe ich noch einen Satz aufgeschnappt: Man muß sagen:"Alexa, sage fhem schalte Party ein" Das geht!!! Ist aber semantisch etwas umständlich. Immerhin: eine große Hürde ist genommen.

Gruß Roland
Servus Roland,

hast du dann nur den custom skill aktiv? Einfaches ein und aus schalten sollte nämlich ohne "sage fhem" funktionieren...

Gesendet von meinem HUAWEI VNS-L31 mit Tapatalk


hauwech

Ich habe in meiner config.json beide applicationIDs für beide skills eingetragen. Die ID für den custom Skill steht in der zweiten Zeile. Spielt die Reihenfolge eine Rolle? Der Smart Home Basic Skill scheint komplett inaktiv, sonst hätten ja die Geräte über den Smart Home Skill gefunden werden müssen.

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

hauwech

#3453
Jetzt habe ich
- in der config.json die applicationID für den custom Skill rausgenommen
- den Custom Skill bei Alexa deaktiviert
- den Smart Home Basic Skill neu angelegt und aktiviert
- den dummy habe ich umbenannt nach "Test"
Internals:
   CFGFN
   NAME       Test
   NR         1503
   STATE      on
   TYPE       dummy
   READINGS:
     2017-12-17 14:15:43   state           on
Attributes:
   alexaName  Test
   alexaRoom  alexa
   alias      Test
   genericDeviceType switch
   group      AlexaDevices
   room       alexa
   setList    on off


Wie erwartet, geht jetzt "Alexa, sage fhem schalte Party[Test] ein" nicht mehr, aber Geräte werden auch nicht gefunden  >:(

Muß man nach dem Ändern der config.json noch etwas anderes als ./bin/alexa neu starten?

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

hauwech

Jetzt hab ich grade noch gelesen, daß beim "Geräte suchen" im Skill in der lokalen Alexa Console Events zu sehen sein sollten. Da tut aber gar nix...
Ich habe zwischendurch eine neue Lambda Funktion angelegt. Ein "Blank Function" Blueprint wie im Wiki gibt es aber nicht. Ich habe stattdessen ein "alexa-smart-home-skill-adapter" ausgewählt. Ist DAS das Problem? Und beim Skill anlegen kann man die Payload Version V2 gar nicht mehr auswählen, nur noch V3.
Ich komme irgendwie nicht weiter  :-\
Wenn ich das nächste Mal Zeit habe, werde ich alles komplett wegschmeissen und neu anfangen.

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

juemuc

Hallo zusammen,

hat jemand für den in der index.js angezeigten Fehler schon eine Lösung?
Die Sprachsteuerung funktioniert, aber die Fehlermeldung stört mich 8)
In der letzten Zeile wird zusätzlich das fehlen eines Semikolons angezeigt.
Ich nutze die Version 0.3.6

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

haempy

Zitat von: hauwech am 17 Dezember 2017, 16:05:50
Jetzt hab ich grade noch gelesen, daß beim "Geräte suchen" im Skill in der lokalen Alexa Console Events zu sehen sein sollten. Da tut aber gar nix...
Ich habe zwischendurch eine neue Lambda Funktion angelegt. Ein "Blank Function" Blueprint wie im Wiki gibt es aber nicht. Ich habe stattdessen ein "alexa-smart-home-skill-adapter" ausgewählt. Ist DAS das Problem? Und beim Skill anlegen kann man die Payload Version V2 gar nicht mehr auswählen, nur noch V3.
Ich komme irgendwie nicht weiter  :-\
Wenn ich das nächste Mal Zeit habe, werde ich alles komplett wegschmeissen und neu anfangen.

Gruß Roland

Servus Roland,

ich habe in der Config.json nur den CustomSkill angegeben... Nutze aber fast ausschließlich den Basic-SmartHome Skill, da mir meistens on off reicht.. ;)
Ich denke, du solltest schon dem Wiki genau folgen... falls noch vorhanden :-)
Bei mir sieht das so aus wie im Anhang... Ob es allerdings mit V3 noch funktioniert möchte ich jetzt nicht testen ;-)

Gruß Roland


amenomade

@omnior:
ZitatBin mir jetzt unsicher ob ich das nochmal "wagen" soll oder ob ich besser die Finger davon lasse, ist halt mit beschränkten Kenntnissen schwierig wenn dann irgendwas nicht funktioniert und man nicht mehr richtig weiter weiß
Lieber so lassen. Es ist grundsätzlich schon gut abgesichert (oauth token, ssl verschlüsselt). So ist es sicherer, als ein falsch konfiguriertes Apache.

Hier die Meinung vom Entwickler: https://forum.fhem.de/index.php/topic,60244.msg645772.html#msg645772
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

hauwech

Hallo Roland,
ich bin dem Wiki genau gefolgt. Ich habe auf Amazon-Seite alles weggeschmissen und neu angelegt. Auch das lokale Zertifikat habe ich neu angelegt und nach ~/.alexa kopiert. Mittlerweile sehe ich wenigstens einen Fehler, man tastet sich so langsam ran. Wenn ich in der Lambda Funktion einen Discovery-Test mache mit
{
  "header": {
    "payloadVersion": "2",
    "namespace": "Alexa.ConnectedHome.Discovery",
    "name": "DiscoverAppliancesRequest",
    "messageId": "F8752B11-69BB-4246-B923-3BFB27C06C7D"
  },
  "payload": {
    "accessToken": "1"
  }
}

kommt als Antwort:Response:
{
  "header": {
    "name": "InvalidAccessTokenError",
    "payloadVersion": "2",
    "namespace": "Alexa.ConnectedHome.Control",
    "messageId": "57c47624-fe4d-4f8e-a52f-baab321e986b"
  },
  "payload": {}
}

Request ID:
"e3d9b6e6-e359-11e7-ba9e-1978d1ba67de"

Function Logs:
START RequestId: e3d9b6e6-e359-11e7-ba9e-1978d1ba67de Version: $LATEST
2017-12-17T18:41:27.514Z e3d9b6e6-e359-11e7-ba9e-1978d1ba67de EVENT: [object Object]
2017-12-17T18:41:27.515Z e3d9b6e6-e359-11e7-ba9e-1978d1ba67de CONTEXT: [object Object]
2017-12-17T18:41:28.990Z e3d9b6e6-e359-11e7-ba9e-1978d1ba67de STATUS: 200
2017-12-17T18:41:28.990Z e3d9b6e6-e359-11e7-ba9e-1978d1ba67de HEADERS: {"date":"Sun, 17 Dec 2017 18:41:28 GMT","connection":"close","content-length":"172"}
2017-12-17T18:41:28.993Z e3d9b6e6-e359-11e7-ba9e-1978d1ba67de BODY: "{\"header\":{\"name\":\"InvalidAccessTokenError\",\"payloadVersion\":\"2\",\"namespace\":\"Alexa.ConnectedHome.Control\",\"messageId\":\"57c47624-fe4d-4f8e-a52f-baab321e986b\"},\"payload\":{}}"
END RequestId: e3d9b6e6-e359-11e7-ba9e-1978d1ba67de
REPORT RequestId: e3d9b6e6-e359-11e7-ba9e-1978d1ba67de Duration: 1528.79 ms Billed Duration: 1600 ms Memory Size: 128 MB Max Memory Used: 23 MB

und auf der lokalen Konsole mit: sudo journalctl -u alexa -f
Dez 17 19:59:51 fhem-nuc alexa[29930]: [2017-12-17 19:59:51] client not authorized: {"error_description":"The request has an invalid parameter : access_token","error":"invalid_token"}
Dez 17 19:59:51 fhem-nuc alexa[29930]: [2017-12-17 19:59:51] ERROR: InvalidAccessTokenError from ::ffff:34.243.5.154
Dez 17 19:59:51 fhem-nuc alexa[29930]: response :{"header":{"name":"InvalidAccessTokenError","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":"4a9590b2-1b07-4a73-9cc2-07052b55aaca"},"payload":{}}

Wenn ich 34.243.5.154 aufzulösen versuche, bekomme ich immerhin einen Namen:
roland@fhem-nuc:/opt/fhem/alexa-fhem$ nslookup 154.5.243.34
Server:         192.168.1.200
Address:        192.168.1.200#53

** server can't find 34.243.5.154.in-addr.arpa: NXDOMAIN

roland@fhem-nuc:/opt/fhem/alexa-fhem$ nslookup 34.243.5.154
Server:         192.168.1.200
Address:        192.168.1.200#53

Non-authoritative answer:
154.5.243.34.in-addr.arpa       name = ec2-34-243-5-154.eu-west-1.compute.amazonaws.com.

Damit bin ich aber mit meinem Latein schon wieder am Ende, was die Interpretation angeht. Das Einzige, was mir hier auffällt: in den Events ist die Rede von payLoadVersion 2. Die läßt sich aber nicht mehr auswählen v2 (legacy - deprecated; please select v3)
- Kann es sein, daß der Fehler "client not authorized" etwas mit dem lokalen Zertifikat zu tun hat?
- Muß dort als Servername mein DynDNS Name drinstehen? Ich habe den lokalen Hostname eingetragen.
- Oder ist das ein lokales Problem mit Filesystemrechten auf das Zertifikat?

Wie läuft überhaupt die Client Authorisierung? Ich dachte, das wird mit der oauthClientID in der config.json <-> Amazon Security Profile gemacht. Die sind nämlich identisch.

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Naja...Das nslookup sollte aber funktionieren, ich hatte nicht ganz gelesen, was Du schon kopiert hast.

Damit es funktioniert, muss auch das Skill in der Alexa App mit deinem Amazon Konto verlinkt werden.

Aber es ist klar, dass "1" ein invalid Token ist, oder?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

hauwech

api.amazon.com wird sauber aufgelöst: 54.239.26.244.
Der Skill ist auch verlinkt.
Aber ansonsten ist mir Vieles nicht klar. Vor allem nicht, wo ein valid Token herkommen soll. Für's troubleshooting sollte man die Zusammenhänge kennen - und das kann ich noch nicht :-[
Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Wenn Du eine Suche in der App machst (und nicht aus der Lambda Funktion), was siehst Du in der alexa-fhem Log?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

hauwech

da kommt:
Dez 18 09:55:51 fhem-nuc alexa[4031]: [2017-12-18 09:55:51] event not supported
Dez 18 09:55:51 fhem-nuc alexa[4031]: [2017-12-18 09:55:51] ERROR: UnsupportedOperationError from ::ffff:34.242.134.81
Dez 18 09:55:51 fhem-nuc alexa[4031]: response :{"header":{"name":"UnsupportedOperationError","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":"3ef0522e-9d4b-45b7-ad84-b9401106d3ec"},"payload":{}}
Dez 18 09:55:51 fhem-nuc alexa[4031]: [2017-12-18 09:55:51] event not supported
Dez 18 09:55:51 fhem-nuc alexa[4031]: [2017-12-18 09:55:51] ERROR: UnsupportedOperationError from ::ffff:34.242.134.81
Dez 18 09:55:51 fhem-nuc alexa[4031]: response :{"header":{"name":"UnsupportedOperationError","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":"cf56a135-752c-408d-8f27-566664e9a623"},"payload":{}}
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS