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

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

Vorheriges Thema - Nächstes Thema

michael1966

Wenn ich im AWS "Test" anklicke, muss ich ein Test-Ereignis konfigurieren. Da kommt Ereignisvorlage "Hello World".
Weiss nicht, was ich da machen soll.

Cloudwatch sagt:
----------------------------------------------------------------------------------------------------------------------
2018-09-23T08:12:01.422Z 594e5779-bf08-11e8-99ef-a7036700de05 EVENT: [object Object]
2018-09-23T08:12:01.422Z 594e5779-bf08-11e8-99ef-a7036700de05 CONTEXT: [object Object]
2018-09-23T08:12:02.255Z 594e5779-bf08-11e8-99ef-a7036700de05 problem with request: socket hang up
2018-09-23T08:12:02.261Z 594e5779-bf08-11e8-99ef-a7036700de05 ReferenceError: createError is not defined
at ClientRequest.request.on (/var/task/index.js:41:5)
at emitOne (events.js:116:13)
at ClientRequest.emit (events.js:211:7)
at TLSSocket.socketErrorListener (_http_client.js:387:9)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
END RequestId: 594e5779-bf08-11e8-99ef-a7036700de05
REPORT RequestId: 594e5779-bf08-11e8-99ef-a7036700de05 Duration: 875.88 ms Billed Duration: 900 ms Memory Size: 128 MB Max Memory Used: 20 MB
RequestId: 594e5779-bf08-11e8-99ef-a7036700de05 Process exited before completing request

START RequestId: 6c3dc0aa-bf08-11e8-9619-8946c4052b22 Version: $LATEST
2018-09-23T08:12:33.152Z 6c3dc0aa-bf08-11e8-9619-8946c4052b22 EVENT: [object Object]
2018-09-23T08:12:33.161Z 6c3dc0aa-bf08-11e8-9619-8946c4052b22 CONTEXT: [object Object]
2018-09-23T08:12:33.701Z 6c3dc0aa-bf08-11e8-9619-8946c4052b22 problem with request: socket hang up
2018-09-23T08:12:33.701Z 6c3dc0aa-bf08-11e8-9619-8946c4052b22 ReferenceError: createError is not defined
at ClientRequest.request.on (/var/task/index.js:41:5)
at emitOne (events.js:116:13)
at ClientRequest.emit (events.js:211:7)
at TLSSocket.socketErrorListener (_http_client.js:387:9)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
END RequestId: 6c3dc0aa-bf08-11e8-9619-8946c4052b22
REPORT RequestId: 6c3dc0aa-bf08-11e8-9619-8946c4052b22 Duration: 570.03 ms Billed Duration: 600 ms Memory Size: 128 MB Max Memory Used: 20 MB
RequestId: 6c3dc0aa-bf08-11e8-9619-8946c4052b22 Process exited before completing request
----------------------------------------------------------------------------------------------------------------------
Wenn ich per Browser Alexa-Fhem aufrufe:

http://192.168.66.243:3000
-> {"header":{"name":"UnsupportedOperationError","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":"3a73f0c6-2f0e-491a-a3c8-406934764aeb"},"payload":{}}
und folgende Ausgabe im Alexa-Fhem Putty-Fenster:
ERROR: SyntaxError: Unexpected end of JSON input from ::ffff:192.168.66.66

https://192.168.66.243:3000
-> Die Webseite ist nicht erreichbar
----------------------------------------------------------------------------------------------------------------------
Ich sehe die Kommunikation in meiner Firewall:

tcpdump host 192.168.66.243 | grep 3000
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:12:33.640373 IP ec2-34-255-86-135.eu-west-1.compute.amazonaws.com.58148 > fhem.wnet.3000: Flags [S], seq 1435583621, win 29200, options [mss 1460,sackOK,TS val 1838720584 ecr 0,nop,wscale 7], length 0
10:12:33.640811 IP fhem.wnet.3000 > ec2-34-255-86-135.eu-west-1.compute.amazonaws.com.58148: Flags [S.], seq 2431696323, ack 1435583622, win 28960, options [mss 1460,sackOK,TS val 26071019 ecr 1838720584,nop,wscale 7], length 0
10:12:33.677572 IP ec2-34-255-86-135.eu-west-1.compute.amazonaws.com.58148 > fhem.wnet.3000: Flags [.], ack 1, win 229, options [nop,nop,TS val 1838720621 ecr 26071019], length 0
10:12:33.679705 IP fhem.wnet.3000 > ec2-34-255-86-135.eu-west-1.compute.amazonaws.com.58148: Flags [F.], seq 1, ack 242, win 235, options [nop,nop,TS val 26071023 ecr 1838720621], length 0
10:12:33.717846 IP ec2-34-255-86-135.eu-west-1.compute.amazonaws.com.58148 > fhem.wnet.3000: Flags [F.], seq 242, ack 2, win 229, options [nop,nop,TS val 1838720661 ecr 26071023], length 0
10:12:33.718254 IP fhem.wnet.3000 > ec2-34-255-86-135.eu-west-1.compute.amazonaws.com.58148: Flags [.], ack 243, win 235, options [nop,nop,TS val 26071027 ecr 1838720661], length 0
fhem auf Raspberry PI3, CUL busware 868 für FS20, nanoCUL 433 für Intertechno, nanoCUL 868 für HomeMatic, DUOFernStick für Rademacher. Harmony Hub, Nanoleaf Aurora, Sprachsteuerung per EchoDot / Alexa

MadMax-FHEM

Also bei Test schicken ist egal was du da schickst.
Es sollte die Testanfrage in der Console erscheinen (verm. mit Fehler, da alexa-fhem damit nichts anfangen kann, ist aber egal).
Auf AWS Lambda sollte "Ok" kommen...

Der Test auf Port 3000 sollte NICHT über das lokale Netz erfolgen sondern von "außen".
Also so wie es auch Amazon tun muss...

Also beispielsweise per Handy im Provider-Netz (nicht im heimischen WLAN).

Also dann auch mit dem bei Lambda hinterlegten (DynDNS)Namen...

Die Firewalleinträge habe ich jetzt nicht analysiert...
...sind für mich kein "Beweis" und auch irrelevant, da die Anfrage halt nun mal bei alexa-fhem ankommen muss, sonst wird das nix...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

michael1966

#3797
Test bei AWS Lambda schreibt:

Ausführungsergebnis: fehlgeschlagen

START RequestId: d679da21-bf0d-11e8-9d90-adb7812e2357 Version: $LATEST
2018-09-23T08:51:18.898Z d679da21-bf0d-11e8-9d90-adb7812e2357 EVENT: [object Object]
2018-09-23T08:51:18.899Z d679da21-bf0d-11e8-9d90-adb7812e2357 CONTEXT: [object Object]
2018-09-23T08:51:19.938Z d679da21-bf0d-11e8-9d90-adb7812e2357 problem with request: socket hang up
2018-09-23T08:51:19.938Z d679da21-bf0d-11e8-9d90-adb7812e2357 ReferenceError: createError is not defined
at ClientRequest.request.on (/var/task/index.js:41:5)
at emitOne (events.js:116:13)
at ClientRequest.emit (events.js:211:7)
at TLSSocket.socketErrorListener (_http_client.js:387:9)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
END RequestId: d679da21-bf0d-11e8-9d90-adb7812e2357
REPORT RequestId: d679da21-bf0d-11e8-9d90-adb7812e2357 Duration: 1066.45 ms Billed Duration: 1100 ms Memory Size: 128 MB Max Memory Used: 20 MB
RequestId: d679da21-bf0d-11e8-9d90-adb7812e2357 Process exited before completing request


Und im Alexa-Fhem keine Meldung.

Aufruf aus dem Handy-Browser mit abgeschaltetem WLAN funktioniert, Alexa-Fhem schreibt auch eine Meldung, also von außen erreichbar.

Kann es etwas mit http / https zu tun haben?
fhem auf Raspberry PI3, CUL busware 868 für FS20, nanoCUL 433 für Intertechno, nanoCUL 868 für HomeMatic, DUOFernStick für Rademacher. Harmony Hub, Nanoleaf Aurora, Sprachsteuerung per EchoDot / Alexa

MadMax-FHEM

Also Amazon bzw. die Lambda Funktion kommt nicht bis alexa-fhem...

Was steht denn in der Lambda Funktion oben drinnen als Ziel?

Dort mal kontrollieren: nur Name und Port sonst nichts...

Was meinst du mit http/https? Wo?

Zugriffe von Amazon sind immer https...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

michael1966

#3799
Ich kann den Port 3000 nur per http aufrufen im Browser.
Wenn ich ihn per https aufrufe, kommt "Seite nicht erreichbar"!

Liegt es daran? Und wie kann ich das umstellen?

Wenn ich per Browser Alexa-Fhem aufrufe:

http://192.168.66.243:3000
-> {"header":{"name":"UnsupportedOperationError","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":"3a73f0c6-2f0e-491a-a3c8-406934764aeb"},"payload":{}}
und folgende Ausgabe im Alexa-Fhem Putty-Fenster:
ERROR: SyntaxError: Unexpected end of JSON input from ::ffff:192.168.66.66

https://192.168.66.243:3000
-> Die Webseite ist nicht erreichbar
fhem auf Raspberry PI3, CUL busware 868 für FS20, nanoCUL 433 für Intertechno, nanoCUL 868 für HomeMatic, DUOFernStick für Rademacher. Harmony Hub, Nanoleaf Aurora, Sprachsteuerung per EchoDot / Alexa

MadMax-FHEM

#3800
Wie hast du die Portweiterleitung eingerichtet?
Irgendwelche Reverseproxydinger?
Spezielle Einstellungen am Router/Firewall?

EDIT: 192.168.66.243 kann aber wohl (immer noch) nicht die externe IP bzw. Zugriff sein!?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

michael1966

#3801
Na mit DNAT halt.

Aber wenn Du schreibst, Amazon kommt immer mit https, und ich kann Alexa-Fhem im Browser per https nicht erreichen, sondern nur per http, dann wird es doch daran liegen, oder?

EDIT: Nein, das ist natürlich die interne IP.
http geht von intern und auch von extern, https geht weder intern noch extern.
fhem auf Raspberry PI3, CUL busware 868 für FS20, nanoCUL 433 für Intertechno, nanoCUL 868 für HomeMatic, DUOFernStick für Rademacher. Harmony Hub, Nanoleaf Aurora, Sprachsteuerung per EchoDot / Alexa

MadMax-FHEM

DNAT kenne (kannte ich bis eben) nicht...

Welchen Router hast du?
Gibt es da keine Portweiterleitung?
Oder "virtuelle Server"?

Aber ja, wenn Amazon Lambda (und du mit dem Handy "von Außen" und zwar wirklich von außen mit dem in der Lambda Funktion hinterlegten Servernamen [oder hast du eine fixe IP vom Provider?]) nicht per https drauf kommt, kommen kann, dann kann das nicht gehen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

michael1966

DNAT ist Portweiterleitung.

Habe gerade in der config.json ssl auf true gesetzt, jetzt sehe ich in alexa-fhem eine Ausgabe, wenn ich "Geräte suchen" mache.
Auch der Test im AWS sagt jetzt "erfolgreich".

Aber Geräte werden keine gefunden  :'(
fhem auf Raspberry PI3, CUL busware 868 für FS20, nanoCUL 433 für Intertechno, nanoCUL 868 für HomeMatic, DUOFernStick für Rademacher. Harmony Hub, Nanoleaf Aurora, Sprachsteuerung per EchoDot / Alexa

michael1966

Jetzt funktioniert es.

Habe in der config.json ssl im ersten Abschnitt auf true gesetzt, im 2. Abschnitt (bei connections) auf false.

Danke für Eure Unterstützung!


Gruß

Michl


fhem auf Raspberry PI3, CUL busware 868 für FS20, nanoCUL 433 für Intertechno, nanoCUL 868 für HomeMatic, DUOFernStick für Rademacher. Harmony Hub, Nanoleaf Aurora, Sprachsteuerung per EchoDot / Alexa

michael1966

Hm. OK über die Alexa App auf dem Handy kann ich den Dummy jetzt schalten.
Aber was muss ich zu Alexa sagen????
fhem auf Raspberry PI3, CUL busware 868 für FS20, nanoCUL 433 für Intertechno, nanoCUL 868 für HomeMatic, DUOFernStick für Rademacher. Harmony Hub, Nanoleaf Aurora, Sprachsteuerung per EchoDot / Alexa

MadMax-FHEM

#3806
Alexa schalte "alexaName" ein/aus...

Es gilt: alexaName (wenn gesetzt), wenn kein alexaName, dann alias (wenn gesetzt) und wenn nichts von dem, dann eben Name (muss ja ;)  )

"Vorgriff": alexaRoom ist nur für den Custom Skill ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

michael1966

OK, cool, das funktioniert.
Habe ja jetzt den "kleinen" Smarthome Skill.

Was kann man mit dem Custom Skill mehr oder besser?
(Ich habe recht gute Perl-Kenntnisse, kann ich da evtl. alles auch über den Smarthome Skill abwickeln in der 99_myUtils.pm ?)

Und kann man die beide gleichzeitig betreiben?

Wie macht Ihr das?


Gruß

Michl


fhem auf Raspberry PI3, CUL busware 868 für FS20, nanoCUL 433 für Intertechno, nanoCUL 868 für HomeMatic, DUOFernStick für Rademacher. Harmony Hub, Nanoleaf Aurora, Sprachsteuerung per EchoDot / Alexa

MadMax-FHEM

Über den Smart Home Skill kannst du nicht wirklich was mit Perl-Funktionen machen.
Indirekt über Dummy und Notify etc.

Mit dem Custom Skill kannst du direkt in fhem Perl-Funktionen aufrufen und sogar Parameter übergeben (z.B. Zahlenwerte, Räume, Farben, ...) und auch mit den bereits vorhandenen Settings einiges mehr tun...
Allerdings ist die Einrichtung etwas aufwändiger als "nur" ein Gerät einem gewissen Raum zuordnen und neu suchen lassen... ;)

Was es noch gibt: Routinen in der Alexa-App. Damit habe ich z.B. meinen Staubsauger eingebunden, da ich per Routine angeben kann was ich sagen will und dann wird entsprechend geschaltet...
Ist so ein Zwischending zwischen Smart Home und Custom...
Man kann den Satz festlegen den man sagen will aber dann halt "nur" vorhandene Smart Home Geräte schalten (lassen)...

Ich nutze hauptsächlich den Smart Home Skill, da mir das Schalten von Licht und meiner Harmony (über Dummy/readingsProxy) reicht. Dort wo ich andere Sätze sprechen will nutze ich Routinen und beim Custom Skill habe ich ein paar Perl Funktionen hinterlegt...
...nutze ich aber selten...

Es gibt aber mind. einen Thread wo Anwender ihre Custom Skill setups vorstellen, da sind schon interessante Dinge dabei...

Mir fehlt meist die Zeit und da ich (fast) alles hab was ich so will/brauche...
Tja...

Achja: nach Änderungen den Neustart von alexa-fhem nicht vergessen... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

michael1966

OK, danke, Joachim.

Werde jetzt mal testen, was über den Smart Home Skill geht. Für Jalousien und Dimmer werde ich mal mit verschiedenen Dummies testen, um auf definierte Werte zu fahren...

Wenn das nicht zufriedenstellend funktioniert, mach ich mich mal an Custom Skills.


Gruß

Michl
fhem auf Raspberry PI3, CUL busware 868 für FS20, nanoCUL 433 für Intertechno, nanoCUL 868 für HomeMatic, DUOFernStick für Rademacher. Harmony Hub, Nanoleaf Aurora, Sprachsteuerung per EchoDot / Alexa