alexa-fhem: amazon alexa smart home skill für fhem, api version 3

Begonnen von justme1968, 19 Dezember 2017, 22:16:30

Vorheriges Thema - Nächstes Thema

cs-online

#600
Jawoll, sobald die Stimmerkennung für Fremdanbieter-Skills in der App aktiviert wurde (bis dahin kam bei meiner Frau nämlich nichts), kommt dann die jeweilige ID im Log. Bei meiner Frau und mir deutlich unterschiedlich, aber immer gleich zur Stimme. Neu verknüpfen hab ich mich nun gerade nicht getraut, weil nach dem letzten mal ja Krampf war, bis das wieder lief und das muss ich innerhalb der Woche nicht haben. Ausserdem hatten sich dabei alle EchoIDs geändert, so dass die alle erst wieder gerade gezogen werden mussten...

Grüße

Christian

BTW: Damit könnte man dann ja auch sozusagen Zugriffsberechtigungen für die Devices realisieren oder ? Z.B. dass die Garage nur von bestimmten Stimmen geöffnet werden darf ;-)
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

justme1968

hol dir mal die server.js von hier: https://github.com/justme-1968/alexa-fhem/blob/master/lib/server.js und kopier sie über deine installiere. danach sollte es ein reading personId im alexa device geben und die variable personId für die fhem intents. es sollte alles so funktionieren wie bisher auch schon für die echoId.

wenn das so weit geht baue ich noch eine konfiguration für ein mapping auf kürzere und lesbare namen ein.


amazon sagt explizit das die erkannte person nicht für zugriffsrechte verwendet werden soll/darf. vermutlich unter anderem als absicherung. ich weiss nicht wie gut die erkennung wirklich ist.

es verbietet dir aber niemand die auswertung im fhem intent oder notify zu machen. du kannst ja mal berichten wie gut das funktioniert. dann sehen wir weiter :)
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

cs-online

ähm, kannst du mir noch einen Tip geben, wo ich die bisher installierte server.js finde ? Im FHEM-Verzeichnis gibt's ja kein Alexa-FHEM-Verzeichnis mehr....
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

justme1968

wahrscheinlich /usr/lib/node_modules/alexa-fhem/lib oder /usr/local/lib/node_modules/alexa-fhem/lib
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

cs-online

#604
die server.js über die Datei in dem Verzeichnis zu kopieren, dann FHEM shutdown restart führt dazu, dass das Alexa-Device auf stopped stehen bleibt, wenn ich das von Hand starten will, geht das gleich wieder auf stopped. Im Log steht mit Verbose 5:

2019.11.26 21:10:25 2: MyAlexa: starting alexa-fhem: /usr/bin/alexa-fhem -c /home/pi/.alexa/config.json
2019.11.26 21:10:25 3: MyAlexa: starting
2019.11.26 21:10:25 3: MyAlexa: using logfile: Alexa.log
2019.11.26 21:10:26 5: MyAlexa: read: /usr/lib/node_modules/alexa-fhem/lib/server.js:7
2019.11.26 21:10:26 5: MyAlexa: read: <!DOCTYPE html>
2019.11.26 21:10:26 5: MyAlexa: read: ^
2019.11.26 21:10:26 5: MyAlexa: read:
2019.11.26 21:10:26 5: MyAlexa: read: SyntaxError: Unexpected token <
2019.11.26 21:10:26 5: MyAlexa: read:     at createScript (vm.js:80:10)
2019.11.26 21:10:26 5: MyAlexa: read:     at Object.runInThisContext (vm.js:139:10)
2019.11.26 21:10:26 5: MyAlexa: read:     at Module._compile (module.js:617:28)
2019.11.26 21:10:26 5: MyAlexa: read:     at Object.Module._extensions..js (module.js:664:10)
2019.11.26 21:10:26 5: MyAlexa: read:     at Module.load (module.js:566:32)
2019.11.26 21:10:26 5: MyAlexa: read:     at tryModuleLoad (module.js:506:12)
2019.11.26 21:10:26 5: MyAlexa: read:     at Function.Module._load (module.js:498:3)
2019.11.26 21:10:26 5: MyAlexa: read:     at Module.require (module.js:597:17)
2019.11.26 21:10:26 5: MyAlexa: read:     at require (internal/module.js:11:18)
2019.11.26 21:10:26 5: MyAlexa: read:     at Object.<anonymous> (/usr/lib/node_modules/alexa-fhem/lib/cli.js:4:14)
2019.11.26 21:10:26 3: MyAlexa: read: end of file reached while sysread
2019.11.26 21:10:26 3: MyAlexa: stopped
2019.11.26 21:10:26 4: MyAlexa: last run duration was only 1 sec, restarting with delay
2019.11.26 21:10:29 2: MyAlexa: starting alexa-fhem: /usr/bin/alexa-fhem -c /home/pi/.alexa/config.json
2019.11.26 21:10:29 3: MyAlexa: starting
2019.11.26 21:10:29 3: MyAlexa: using logfile: Alexa.log
2019.11.26 21:10:31 5: MyAlexa: read: /usr/lib/node_modules/alexa-fhem/lib/server.js:7
2019.11.26 21:10:31 5: MyAlexa: read: <!DOCTYPE html>
2019.11.26 21:10:31 5: MyAlexa: read: ^
2019.11.26 21:10:31 5: MyAlexa: read:
2019.11.26 21:10:31 5: MyAlexa: read: SyntaxError: Unexpected token <
2019.11.26 21:10:31 5: MyAlexa: read:     at createScript (vm.js:80:10)
2019.11.26 21:10:31 5: MyAlexa: read:     at Object.runInThisContext (vm.js:139:10)
2019.11.26 21:10:31 5: MyAlexa: read:     at Module._compile (module.js:617:28)
2019.11.26 21:10:31 5: MyAlexa: read:     at Object.Module._extensions..js (module.js:664:10)
2019.11.26 21:10:31 5: MyAlexa: read:     at Module.load (module.js:566:32)
2019.11.26 21:10:31 5: MyAlexa: read:     at tryModuleLoad (module.js:506:12)
2019.11.26 21:10:31 5: MyAlexa: read:     at Function.Module._load (module.js:498:3)
2019.11.26 21:10:31 5: MyAlexa: read:     at Module.require (module.js:597:17)
2019.11.26 21:10:31 5: MyAlexa: read:     at require (internal/module.js:11:18)
2019.11.26 21:10:31 5: MyAlexa: read:     at Object.<anonymous> (/usr/lib/node_modules/alexa-fhem/lib/cli.js:4:14)
2019.11.26 21:10:31 3: MyAlexa: read: end of file reached while sysread
2019.11.26 21:10:31 3: MyAlexa: stopped
2019.11.26 21:10:31 4: MyAlexa: last run duration was only 2 sec, restarting with delay



Die alte Datei wieder zurück kopiert, startet das Alexa-Device von Hand sofort...

ALLERDINGS: Die herunter geladene Datei hat ca. 1,5MB, die alte nur 150KB....
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

MadMax-FHEM

Du hast (verm.) das Html von "irgendeiner" Seite...
...und nicht den "Code" der Server.js Datei "erwischt"...

Wie/womit hast du kopiert/eingefügt?

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)

justme1968

genau.

runterladen geht über den raw link auf der seite.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

cs-online

#607
ups, tatsächlich, mein Fehler...

jetzt kommt das Reading personId, das wird auch mit der ID gefüllt, wenn man den Skill aufruft. Allerdings wechselt das danach wieder auf unknown (also nicht wie die echoId, die stehen bleibt), wenn man "stopp" sagt oder der Timeout kommt.

Aber wir sind so schon einen riesen Schritt wieder nach vorn gekommen. Vielen Dank dafür !

Grüße und eine schöne Nacht

Christian

EDIT: Falschmeldung, wenn ich eine Funktion aufrufe, bleibt die ID auch stehen ! Nur wenn ich "Starte FHEM" sage, dann geht bei Stopp oder Timeout das Reading auf unknown
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

volschin

Ich möchte mir für mein Alexa-fhem Docker Image die Healthcheck Funktion implementieren.
Was prüft man denn am Besten in Alexa-fhem, um zu sehen, ob es noch tut?
Z.B. URL, die bestimmtes Ergebnis zurückliefern muss?
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

justme1968

am besten lässt man diesen ganzen docker kram und lässt das fhem alexa modul autostart und überwachung machen. aber das ist ein anderes thema :)


alles andere ist nur beschränkt aussagefähig oder wird schnell umständlich und es kommt drauf an was du wirklich genau prüfen möchtest:

- von aussen kann man eigentlich nur den prozess überwachen. so lange der mit der gleichen pid läuft ist das schon mal gut.

- wenn regelmässig etwas im log steht das keine fehlermeldung ist ist das auch gut.

- wenn du den fhem connector verwendest ist es gut wenn der ssh prozess läuft. ebenfalls so lange wie möglich mit der gleichen pid.

- wenn du die alte port forwarding methode verwendest kannst du schauen ob auf diesem port etwas antwortet. das könntest du sogar verwenden wenn du den port nicht nach aussen frei gibst.

aber: alle diese methoden sagen nur das der prozess läuft und auf bestimmte dinge reagiert.
sie sagen nicht ob die verbindung zum vereinsproxy steht, ob die verbindung zu fhem steht, ...

der autostart aus dem fhem modul deckt zumindest einiges davon ab. z.b. meldet der proxy rückwärts neustarts oder alexa-fhem meldet verzögerungen und verbindungsprobleme die dann in einem reading im alexa device stehen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

volschin

Danke für die Antwort. Das Container die Zukunft sind, ist glaube ich mittlerweile klar. Zumindest bis was besseres entwickelt wird.

Die Prüfungen, dass der Prozess läuft, sind mehr oder weniger out of the Box bereits da. Es geht tatsächlich um das reinschauen, wobei ich bisher erst zwei mal Probleme durch einen Ausfall der Alexa-Infrastruktur hatte.
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

justme1968

ZitatDanke für die Antwort. Das Container die Zukunft sind, ist glaube ich mittlerweile klar. Zumindest bis was besseres entwickelt wird.
:) virtualsierung ist immer noch da und besser.

nur weil viele etwas verwenden ist es noch lange nicht gut oder besser. siehe facebook.

aber das ist wie gesagt ein anderes thema.


rein schauen geht über die stdout ausgaben des prozesses bzw die log ausgabe. da hängt auch das alexa modul dran wenn der start darüber erfolgt.

genau da gibt es übrigens auch eine einschränkung bezüglich docker. alexa-fhem kann in einem docker container das eigene stdin nicht überwachen weil es das dort keinen startenden prozess und kein stdin gibt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

cs-online

...erste Tests mit Stimmerkennung laufen super, ich habe erstmal damit angefangen, dass Alexa uns nun bei "guten Morgen" und "gute Nacht" mit Namen anspricht, das ist schon sehr cool :-)
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

Tommy82

Zitat von: cs-online am 28 November 2019, 06:41:46
...erste Tests mit Stimmerkennung laufen super, ich habe erstmal damit angefangen, dass Alexa uns nun bei "guten Morgen" und "gute Nacht" mit Namen anspricht, das ist schon sehr cool :-)

Hi,
das hört sich sehr interessant an, wie haste das gemacht?

Danke

MFG
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

cs-online

#614
Hi Tommy,

erstmal musste im Custom-Skill auf der Developer-Seite unter Permissions erlaubt werden, dass die Stimme ausgewertet wird, dann in der Alexa-App auf allen Handys derjenigen, die erkannt werden sollten (also bei mir auf meinem und dem meiner Frau), unter Einstellungen, Ihr Profil, Stimmen, Stimmprofileinstellungen, Skills personalisieren eingeschaltet werden. Dann muss Alexa natürlich die Stimme kennen (Also wenn bei "Alexa, wer bin ich" auch die richtige Antwort kommt, hilft das schon mal, sonst mit "Alexa, erkenne meine Stimme" oder so ähnlich den Anlernvorgang starten. Dann die Server.js von Andre über die vorhandene kopieren, das Alexa-Device einmal restarten, dann sollte nach Aufruf von "Starte <Skillname>" ein Reading personID dazu kommen mit dem typischen langen kryptischen Wert. Den werte ich z.B. in einer Funktion aus, die bei mir bei "guten Morgen" alle Rollläden hochfährt, Temperaturen ansagt, etc. Dort habe ich sozusagen das Mapping, welche ID welche Stimme ist, und dann lass ich den Namen z.B. als "lieber Christian" in die Sprachausgabe mit einfügen. Wir haben das allerdings auch schon zwei bis dreimal gehabt, dass die Stimme wohl nicht erkannt wurde (dann steht im Reading unknown drin), aber im großen und ganzen klappt das super. Wenn man also z.B. das Garagentor in einer Funktion steuern wollen würde, müsste man ggf. mehrfach ansprechen, aber Alexa versteht mich sonst auch nicht immer auf den ersten Versuch...

Wenn Andre mal wieder etwas Zeit über hat, könnte er ggf. nochmal wie bei den rooms ein Mapping als Attribut mit reinbringen, dann wird das noch einfacher und wenn ich mir was zu Weihnachten wünschen dürfte, dann sowas, das bei Devicen "allowedVoices" angegeben werden könnte, und dann der Befehl (z.B. Garagentor auf) nur ausgeführt wird, wenn die erkannte Stimme dabei ist... Weil das aber sicherlich viel Aufwand bedeuten würde, ist das sicherlich nicht so einfach mal nebenbei gemacht.... Aber so ist das schon mal wirklich wirklich super :-)

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr