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

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

Vorheriges Thema - Nächstes Thema

steimer-vl

#1335
Zitat von: michael.winkler am 13 Januar 2017, 18:05:05
Hallo,

ich habe bei mir auch erfolgreich alexa am laufen. Nach langem spielen mit dem custom skill habe ich, erst mal, folgen Lösung für mich gefunden.

Ich arbeite aktuell nur über die alexa fhemIntents. Dazu habe ich mir für jede Aufgabe einen fhemIntents eingerichtet. Über einen Notify werden dann die einzelnen Aktionen ausgeführt. Bis jetzt funktioniert alles bei mir. Vielleicht hilft je dem ein oder anderen diese Info.

Hier mal eine Übersicht

@Michael Winkler: Finde ich super. Nur verstehe ich noch nicht ganz wie ich dann einen solchen fhemIntent ansprechen kann. Musst du hier dem Custom Skill noch etwas beibringen oder reicht es diese Intents in fhem zu definieren?

EDIT Ein Versuch später: Habe es verstanden ich muss den Custom Skill auf developer.amazon entsprechend erweitern.!

Vielleicht kannst Du mal ein Beispiel durchgehend zeigen, also was dafür an Konfiguration notwendig war?

Vielen Dank!

n0bbi

Mir fehlt irgendwie noch ein grundsätzliches Verständnis von der Funktionsweise. Ich habe jetzt alles laut Wiki konfiguriert und würde behaupten, dass die einzelnen Bausteine bei mir auch funktionieren. (Lambda-Verbindung zu Alexa-Fhem hat funktioniert, Alexa-Fhem startet ohne Fehlermeldung, Port ist freigegeben und klappt, der Skill ist in der Amazon-Weboberfläche aktiviert, ...)

Müsste ich jetzt nicht in der Weboberfläche ein FHEM-Gerät finden? Bei Geräte suchen, reagiert Alexa-fhem mit folgenden Meldungen:

**** Received Directive: {"header":{"namespace":"Alexa.ConnectedHome.Discovery","name":"DiscoverAppliancesRequest","payloadVersion":"2","messageId":"2248f464-6de6-4f61-b889-2905521fec71"},"payload":{"accessToken":"Atza|IwEBIFHcFkM6_Go0azP-CJ0xcf0mH5gknyyckJ2rdJJI_OUQmeB5Xz_kLVMhMs_QmCNcX_ppgAlIRGF2caPFa-tOs6gI9Qd3THHWt3B5Vkt_tzRy68zEshz051hNhMNlLkFqGOsJUL9WX31ZMAPqC-P1r65KDY53KiSLUbdZ4vqm6YdVpqugbKVBq2PKonZpuvZEUCkJaMujmBD9byt83Q7ncUWH_gP-qbwMy8lQj__MHoSPgtmtYmD74T5qmaLhMoSIxGWZCSgYAzX20Piw2dHrb9aA_XTrRiujRxubvad6nO71ToBr6O2BUdvkPOGyVEHUG_2IwkMWcTs5QOf3EpSM8n_FFD_3f4heBh3mlKpIrvNCCfmuCAN-KHbdw7Ni4ln8Pu1MpKBNci1b_66U8Z6CMJsrcdoMwNz5-yQ5i0PxuPlScku0-SEJegPq7nWfIzbpp3MiykbwWiTymvipwHw184bxHvLR2pDb2OTEReEnaKjxqiOTsC5ddl7LGlHGllwMzHtw_qROJmUMohBBvOzA-VqGHzw2Srj9XHPUyO23KZNGGA"}}
response :{"header":{"name":"DiscoverAppliancesResponse","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Discovery","messageId":"e772d5b3-0cb7-42f7-81c9-8af75553020c"},"payload":{"discoveredAppliances":[]}}
**** Received Directive: {"header":{"namespace":"Alexa.ConnectedHome.Discovery","name":"DiscoverAppliancesRequest","payloadVersion":"2","messageId":"9c50cdb3-5719-4b38-b10b-3086047d3260"},"payload":{"accessToken":"Atza|IwEBIFHcFkM6_Go0azP-CJ0xcf0mH5gknyyckJ2rdJJI_OUQmeB5Xz_kLVMhMs_QmCNcX_ppgAlIRGF2caPFa-tOs6gI9Qd3THHWt3B5Vkt_tzRy68zEshz051hNhMNlLkFqGOsJUL9WX31ZMAPqC-P1r65KDY53KiSLUbdZ4vqm6YdVpqugbKVBq2PKonZpuvZEUCkJaMujmBD9byt83Q7ncUWH_gP-qbwMy8lQj__MHoSPgtmtYmD74T5qmaLhMoSIxGWZCSgYAzX20Piw2dHrb9aA_XTrRiujRxubvad6nO71ToBr6O2BUdvkPOGyVEHUG_2IwkMWcTs5QOf3EpSM8n_FFD_3f4heBh3mlKpIrvNCCfmuCAN-KHbdw7Ni4ln8Pu1MpKBNci1b_66U8Z6CMJsrcdoMwNz5-yQ5i0PxuPlScku0-SEJegPq7nWfIzbpp3MiykbwWiTymvipwHw184bxHvLR2pDb2OTEReEnaKjxqiOTsC5ddl7LGlHGllwMzHtw_qROJmUMohBBvOzA-VqGHzw2Srj9XHPUyO23KZNGGA"}}
response :{"header":{"name":"DiscoverAppliancesResponse","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Discovery","messageId":"4675635b-6523-4f72-a08b-8810b6e019ec"},"payload":{"discoveredAppliances":[]}}
[2017-1-14 16:04:59] accepted new token
**** Received Directive: {"header":{"namespace":"Alexa.ConnectedHome.Discovery","name":"DiscoverAppliancesRequest","payloadVersion":"2","messageId":"1e938121-f266-4439-9e42-fbeeafd5811d"},"payload":{"accessToken":"Atza|IwEBIFHcFkM6_Go0azP-CJ0xcf0mH5gknyyckJ2rdJJI_OUQmeB5Xz_kLVMhMs_QmCNcX_ppgAlIRGF2caPFa-tOs6gI9Qd3THHWt3B5Vkt_tzRy68zEshz051hNhMNlLkFqGOsJUL9WX31ZMAPqC-P1r65KDY53KiSLUbdZ4vqm6YdVpqugbKVBq2PKonZpuvZEUCkJaMujmBD9byt83Q7ncUWH_gP-qbwMy8lQj__MHoSPgtmtYmD74T5qmaLhMoSIxGWZCSgYAzX20Piw2dHrb9aA_XTrRiujRxubvad6nO71ToBr6O2BUdvkPOGyVEHUG_2IwkMWcTs5QOf3EpSM8n_FFD_3f4heBh3mlKpIrvNCCfmuCAN-KHbdw7Ni4ln8Pu1MpKBNci1b_66U8Z6CMJsrcdoMwNz5-yQ5i0PxuPlScku0-SEJegPq7nWfIzbpp3MiykbwWiTymvipwHw184bxHvLR2pDb2OTEReEnaKjxqiOTsC5ddl7LGlHGllwMzHtw_qROJmUMohBBvOzA-VqGHzw2Srj9XHPUyO23KZNGGA"}}
response :{"header":{"name":"DiscoverAppliancesResponse","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Discovery","messageId":"45d182ed-f274-4a61-b249-d1b850880d8c"},"payload":{"discoveredAppliances":[]}}
**** Received Directive: {"header":{"namespace":"Alexa.ConnectedHome.Discovery","name":"DiscoverAppliancesRequest","payloadVersion":"2","messageId":"66beaf8c-baa0-4768-9134-0f786e8c3655"},"payload":{"accessToken":"Atza|IwEBIFHcFkM6_Go0azP-CJ0xcf0mH5gknyyckJ2rdJJI_OUQmeB5Xz_kLVMhMs_QmCNcX_ppgAlIRGF2caPFa-tOs6gI9Qd3THHWt3B5Vkt_tzRy68zEshz051hNhMNlLkFqGOsJUL9WX31ZMAPqC-P1r65KDY53KiSLUbdZ4vqm6YdVpqugbKVBq2PKonZpuvZEUCkJaMujmBD9byt83Q7ncUWH_gP-qbwMy8lQj__MHoSPgtmtYmD74T5qmaLhMoSIxGWZCSgYAzX20Piw2dHrb9aA_XTrRiujRxubvad6nO71ToBr6O2BUdvkPOGyVEHUG_2IwkMWcTs5QOf3EpSM8n_FFD_3f4heBh3mlKpIrvNCCfmuCAN-KHbdw7Ni4ln8Pu1MpKBNci1b_66U8Z6CMJsrcdoMwNz5-yQ5i0PxuPlScku0-SEJegPq7nWfIzbpp3MiykbwWiTymvipwHw184bxHvLR2pDb2OTEReEnaKjxqiOTsC5ddl7LGlHGllwMzHtw_qROJmUMohBBvOzA-VqGHzw2Srj9XHPUyO23KZNGGA"}}
response :{"header":{"name":"DiscoverAppliancesResponse","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Discovery","messageId":"8d49a822-38e5-49cd-ba8f-415e9262e685"},"payload":{"discoveredAppliances":[]}}


Was fehlt mir denn jetzt noch, dass ich endlich mal irgendwas schalten kann?

Sorry für die wirklich doofen Fragen, aber vielleicht sitze ich jetzt auch einfach schon zu lange dran und seh den Wald vor lauter Bäumen nicht mehr...

Danke

justme1968

hast du den filter im config file angepasst? bzw. bei den devices den rom alexa hinzugefügt?

beim starten von alexa-fhem wird ausgegeben welche devices gefunden wurden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

n0bbi

Zitat von: justme1968 am 14 Januar 2017, 16:09:14
hast du den filter im config file angepasst? bzw. bei den devices den rom alexa hinzugefügt?

beim starten von alexa-fhem wird ausgegeben welche devices gefunden wurden.

Wie ich deine Geduld bewundere!!!

Vielen Dank, jetzt hats geklappt :)

Wolfspirit

#1339
Hi,

Erstmal danke für alexa-fhem!

Für alle die FHEMWEB weiterhin passwortgeschützt haben wollen lässt sich das übrigens in der Config bereits einstellen über einen "auth" parameter. Das sollte vielleicht irgendwo dokumentiert werden (oder steht das irgendwo? Ich habs nicht gesehen)

Meine sieht im moment so aus:

{
    "alexa": {
        "name": "Alexa TEST",
        "keyFile": "./key.pem",
        "certFile": "./cert.pem",
        "nat-pmp": "10.0.1.1",
        "nat-upnp": true,
        "applicationId": "xxx",
        "oauthClientID": "xxx"
    },

    "connections": [
        {
            "name": "FHEM",
            "server": "127.0.0.1",
            "port": "8083",
            "filter": "room=alexa",
            "ssl": true,
            "strictSSL":false,
            "auth": {
              "user": "User",
              "password": "password"
            }
        }
    ]
}


Ich würde mir für eine zukünftige Version wünschen, dass man die Verbindung zu FHEM auch mit self-signed SSL zertifikaten ausführen kann. Ich hab hier jetzt manuell das script angepasst:


var strictSSL = false;
  if(config['strictSSL']) strictSSL=true;

  var request = require('request').defaults({ strictSSL: strictSSL});
  var auth = config['auth'];
  if( auth ) {
    if( auth.sendImmediately === undefined )
      auth.sendImmediately = false;

    request = request.defaults( {strictSSL: strictSSL, auth: auth, rejectUnauthorized: false } );
  }


Außerdem würde ich mir wünschen das über den smarthome skill der raum mit ausgelesen wird!
Ich würde gerne "Licht im Wohnzimmer" einschalten. Alexa kennt aber nur 5 "Licht" ohne den Raum.
Es wäre denke ich praktischer wenn beim Discover hier "Licht im Wohnzimmer" mit übergeben wird um das auseinander zu halten.
Wenn ich den "alexaName" auf "Licht im Wohnzimmer" stelle, dann kommt damit aber der custom skill nicht klar.

Hue gibt hier soweit ich das gesehen hab ebenfalls den Namen des Raums als "im" mit.


michael.winkler

Zitat von: steimer-vl am 14 Januar 2017, 16:02:13
@Michael Winkler: Finde ich super. Nur verstehe ich noch nicht ganz wie ich dann einen solchen fhemIntent ansprechen kann. Musst du hier dem Custom Skill noch etwas beibringen oder reicht es diese Intents in fhem zu definieren?

EDIT Ein Versuch später: Habe es verstanden ich muss den Custom Skill auf developer.amazon entsprechend erweitern.!

Vielleicht kannst Du mal ein Beispiel durchgehend zeigen, also was dafür an Konfiguration notwendig war?

Vielen Dank!

Im Grunde ist es ganz einfach. An deinem definieren Alexa Device in FHEM gint es das Attribut "fhemIntents". Über diese Attribut stellst Du dir deine unterschiedlichen Befehle ein z.B. .


tvlauter=Fernseher lauter
tvleiser=Fernseher leiser


Alles vor dem = ist dein Intentname (Hier kannst du keine Umlaute und Zahlen verwenden), alles nach dem = ist dass was du Alexa sagen musst. z.B. "Alexa, sage james Fernseher lauter"

Wenn Du das Attribut gespeichert hast, kannst Du im FHEM Device über "get alexa.device interactionModel" alles Anzeigen lassen was Du in deinem Amazon Skill eintragen musst. Du musst den Bereich "Intent Schema:" dann in deinen Custom Skill unter InteractionModel kopieren. Zusätzlich noch den Bereich "Sample Utterances:" auch in deinen Amazon Skill. Danach speichern nicht vergessen.

Wenn Du jetzt deiner Alexa den Befehl gibt deinen Fernseher lauter zu machen, wird Du in deinem FHEM Device sehen das sich das Reading "fhemIntent" mit dem Wert "tvlauter" ändert. Diese Änderung kannst Du das über ein Notify oder einem DOIF abfangen und dementsprechende Befehle durch führen.

In meinem Fall wird der Fernseher um 10 volume Schritte lauter gemacht.

Was mir an dieser Lösung gefällt, ist dass ich selber bestimmen kann was ich zu Alexa sagen muss.

Am Anfang habe ich auch versucht das Ganze über die Artikel, Preposition div. Values usw.. aber nach einiger Zeit testen habe ich dann für mich festgestellt das es zu kompliziert ist. Durch meinen Weg kann ich jedes Gerät steuern und auch ganze Szenarien für eine Aktion hinterlegen.

Ich hoffe die Information hilft Dir weiter.

Gruß
Michael





baerbel

Hi Andre,

vielen Dank für das Feedback - heisst wohl kurz über Lang mich in Richtung custom skill zu bewegen - wenn ich es richtig verstanden habe und auch ein korrektes Mapping hinbekomme ich lediglich einen "An .. Aus" Sprachbefehl senden kann, der dann auch erkannt wird - ein "Alexa, öffne die Haustüre" wird wohl nicht funktionieren, korrekt?

Abschliessend möchte ich deine Arbeit hier noch mit einem fetten "Danke schön" belohnen :-)

Grüße - Bernd

justme1968

#1342
@Wolfspirit: mit dem bereits vorhandenen rejectUnauthorized werden doch genau die self signed zertifikate akzeptiert. das hat bei anderen auch so schon funktioniert. eine doku zu strictSSL habe ich nicht gefunden. was macht das ?

man kann im smart home api keine räume übergeben. das ist nicht vorgesehen. es gibt im das konzept von räumen garnicht wirklich sondern nur die gruppen die man über die app konfigurieren kann. es gibt noch so etwas wie szenen, die sind in deutsch aber noch nicht dokumentiert. ich habe zumindest bis jetzt noch nichts gefunden.

funktioniert das bei dir mit dem 'im' zuverlässig?

was ist mit räumen bei denen es nicht im sondern z.b. in der (küche) heissen muss? versteht alexa das trozdem? oder muss die präposition stimmen?

@baerbel: mit dem smart home skill kannst du nur die vorgegeben 8 kommandos geben. also für an, aus, prozent (setzen, erhöhen, verringern) und temperatur (setzen, erhöhen, verringern)

mit dem custom skill bist du (fast) völlig frei in der wortwahl. aber du musst immer das invocation word für den custom skill mit sagen. also 'alexa, sage fhem ...' oder 'alexa, starte fhem. ...'
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

flolee

#1343
hallo nochmal,

zuerst mal vielen dank für die ganze mühe, die ihr euch macht!

ich habe nun noch folgendes problem: ich starte alexa-fhem aktuell immer über den terminal um zu sehen was passiert. beende ich nun die sitzung oder breche mit strg-c ab und starte neu, so funktioniert die port-weiterleitung von extern (und somit das gesamte system) erst wieder, sobald ich den router neugestartet habe oder die weiterleitung neu erstellt habe (netzwerkintern bleibt der port erreichbar).
da ich sonst keinerlei Probleme bei irgendwelchen port-weiterleitungen habe, wollte ich nachfragen ob das einen anderen grund als einen bug in der dd-wrt software haben kann?

vielen dank nochmal :)

lg,
florian

Wolfspirit

#1344
@justme1968

Ohne strictSSL auf false bekomme ich unter anderem:

[1/15/2017, 3:07:37 AM] [FHEM] starting longpoll: https://127.0.0.1:8083/fhem.pl?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON&timestamp=1484446057346
[1/15/2017, 3:07:37 AM] [FHEM] longpoll error: Error: SSL Error: DEPTH_ZERO_SELF_SIGNED_CERT, retry in: 10000msec


rejectUnauthorized ist ein parameter vom http/https modul.
Es wird hier aber request genommen ( https://github.com/request/request ) und dort heißt es strictSSL.
Ich kann bei request nichts von rejectUnauthorized finden.

Ich habs bei mir nun angepasst, dass er im Smarthome modul den alexaRoom mit " im " anhängt.
Ich hab nun 5 devices die alle "Licht" als "alexaName" haben.
In Alexa eingetragen steht "Licht im Wohnzimmer", "Licht im Schlafzimmer", "Licht im Küche". Auch wenn ich "Licht in der Küche" sage erkennt Alexa das bei mir immer auch wenn es als "im" in Alexa eingetragen ist.
Philipps Hue hatte meine Räume soweit ich mich erinnere (ich hab sie rausgeworfen aus der Bridge) auch genauso eingetragen.

Wie siehts den aus das ganze ggf. auf Github bereit zu stellen so das man vielleicht auch pull requests schicken und issues aufmachen kann? Außerdem ist es dann leichter aktuelle Versionen direkt auf den Server zu ziehen :-)

EDIT:
Was mir auch aufgefallen ist, dass er bei "get myAlexa InteractionModel" ganz am ende zwei Befehle einfügt die da nicht so wirklich hinpassen:
reload 39_alexa
get alexa interactionmodel


Diggewuff

#1345
2 Kurze echo Einsteigerfragen:

  • Gibt es eine Möglichkeit, aus FHEM heraus, einen "Simon Sagt [...]" Befehl an das echo zu senden, damit Alexa dann direkt Infos ausgeben kann, ohne angesprochen zu werden?
  • Kommt man irgendwie an ein Reading das besagt, das Alexa grade angesprochen wurde und nun eine Ausgabe stattfindet, sodass man in dessen Abhängigkeit andere Tonquellen stumm und z.B. einen AV Receiver auf den richtigen Eingang fürs echo dot schalten kann?

dk3572

#1346
@justme1968
Zitat@dk3572: es geht mit jedem device bei dem homebridgeMapping passend gesetzt ist.
Ich habe jetzt schon Stunden mit herumprobieren verbracht. Leider ohne Erfolg.
Wäre es nicht einfacher und der kürzere Weg, wenn du mir netterweise die Lösung verrätst?
Wie soll ich dazulernen wenn ich nicht weiß wie es funktioniert.
Ich lese ja hier im Forum mit und versuche zu verstehen und probiere aus. Aber hier komme ich nun mal nicht weiter.
Danke für hoffentlich eine Lösung ;-)

steimer-vl

@Michael.Winkler: Super vielen Dank für die ausführliche Beschreibung, habe es hinbekommen  8)

MadMax-FHEM

Zitat von: Diggewuff am 15 Januar 2017, 05:23:47
2 Kurze echo Einsteigerfragen:

  • Gibt es eine Möglichkeit, aus FHEM heraus, einen "Simon Sagt [...]" Befehl an das echo zu senden, damit Alexa dann direkt Infos ausgeben kann, ohne angesprochen zu werden?
  • Kommt man irgendwie an ein Reading das besagt, das Alexa grade angesprochen wurde und nun eine Ausgabe stattfindet, sodass man in dessen Abhängigkeit andere Tonquellen stumm und z.B. einen AV Receiver auf den richtigen Eingang fürs echo dot schalten kann?

Nein und nein/nicht wirklich...

Wenn du Details willst: in diesem Thread wurde das schon öfter erläutert...

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)

bjoernbo

Ich bekomme morgen mein Echo und werde es nach der Anleitung von https://haus-automatisierung.com einbinden.

Habe aber mal eine generelle Frage: Über einen Harmony Hub steuer ich über FHEM die unterschiedlichen Kanäle an die ich im FTUI verwende:

für SAT.1:
Zitatonclick="setFhemStatus('set hub command 24775848 Number9; set hub command 24775848 Number1')"
usw.

Kann ich das irgendwie in ALEXA integrieren, dass ich beispielsweise sage "Alexa, schalte auf ARD um","Alexa, schalte auf SAT1 um".

Raspberry Pi 3 - FB6490C - Synology NAS DS916+ - NETATMO - HUE - SIEMENS G-Tag'S - FTUI - EchoDOT -