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

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

Vorheriges Thema - Nächstes Thema

Esjay

Zitat von: Mr. P am 24 Januar 2017, 10:50:56
Hej folks,

nachdem ich meine Finger auch nicht von Alexa lassen konnte und mein Dot gestern bei mir eingetroffen ist, habe ich den Abend damit verbracht, die Konfiguration vorzunehmen (danke an der Stelle an justme1968 für die Entwicklung und auch alle Unterstützer des Projekts! :-) ), dann allerdings dreiviertel der Nacht, um die Konfiguration hinzukriegen. Um kurz nach 03:30 war ich dann leicht frustriert im Bett.

Vielleicht hab ich auch nur ein paar Verständnisprobleme gepaart mit einer gewissen Trägheit von Alexa bzw. meinem nicht sichtbaren Verlauf in der Alexa-App. Ich weiß es nicht... aber vielleicht kann mir der eine oder andere mit seiner Erfahrung bei meinen Problemen weiter helfen.

Folgendermaßen sieht es bei mir aus:
Nach der Installation und Konfiguration von Alexa-FHEM, habe ich ein Alexa-Device in meiner FHEM-Instanz definiert.
Anschließend die ersten Lampen testweise den in der config.json definierten 'alexa'-Raum zugewiesen, Alexa-FHEM neu gestartet und getestet. Alles funktioniert unter Verwendung der Alias-Namen wunderbar.
Als nächstes die ersten Gehversuche mit einem Thermostat: Temperatur setzen funktioniert auf anhieb - wieder mit dem Alias-Namen. Abfragen der aktuellen Temperatur ist mir hingegeben bis zum Schluss nicht gelungen. Auch wenn ich sie im Logfile von Alexa-FHEM immer wieder gesehen habe.
Voller Euphorie dann alle Thermostate hinein konfiguriert, in der Alexa-App eine Gruppe 'Wohnung' definiert und alle Geräte hinein konfiguriert. Ein anschließendes 'Alexa, stelle Temperatur in der Wohnung auf 20 Grad' hat immer noch funktioniert. Begeisterung pur. :-)
Danach viel mir allerdings auf, dass 'Alexa, stelle die Temperatur in der Wohnung auf 20 Grad' zwar funktioniert, aber bei 'Alexa, stelle die Temperatur im Wohnzimmer auf 20 Grad' eine Abfuhr bekommen habe. Dort musste ich nämlich weiterhin auch 'Alexa, stelle Heizkörper im Wohnzimmer auf 20 Grad' sagen - also den Aliasnamen verwenden.
Danach wollte ich es wissen: Ich dachte mir, wenn ich jetzt für die Geräte alexaName und alexaRoom setzen würde, könnte ich den Alias übergehen, weil diese ja weiter oben in der Abfragereihenfolge stehen. Also zB aus dem Alias 'Stehlampe Wohnzimmer' den alexaName 'Stehlampe' und den alexaRoom 'Wohnzimmer' gemacht. Gleiches für das Deckenlicht. Also alexaName 'Deckenlicht' und alexaRoom 'Wohnzimmer'. Nachdem ich die Alexa-FHEM neu gestartet und einen neuen Suchlauf in der App gemacht habe, stand auch brav nur mehr der vergebene alexaName, der tatsächliche Channelname und anstelle vom room-Attribut der Wert von alexaRoom. Bei einem 'Alexa, schalte Stehlampe im Wohnzimmer ein' bekam ich als Antwort etwas ähnliches wie: 'Es tut mir leid, aber ich kann das Gerät Stehlampe Wohnzimmer in deiner Geräteliste nicht finden'. Natürlich kannst du das nicht, weil ich diesen Alias auch nicht mehr verwende und somit in der App auch nicht mehr aufscheint. Trotzdem sucht Alexa scheinbar danach. Weil ich dann auch mehrere 'Deckenlichter' konfiguriert hatte, konnte Alexa bei einem 'Schalte Deckenlicht in Wohnzimmer' auch nicht mehr ausführen, weil es ja mehrere Deckenlichter in der Wohnung gibt. Da hat es auch nichts geholfen, dass Alexa eigentlich hätte wissen können, dass es im Raum Wohnzimmer nur ein Deckenlicht gibt.
Bei weiteren Tests schien Alexa auch nichts mit alexaRoom anfangen zu können. 'Alexa, schalte Licht im Wohnzimmer ein' konnte nicht ausgeführt werden. Erst als ich die Geräte vom Wohnzimmer in die Gruppe 'Wohnzimmer' steckte, klappte das Kommando.
Dann gab es noch die Rollläden... :-)
Dort verwende ich bei den Attributen: 'param=levelInverse', damit 10% auch wirklich 10% und nicht eigentlich 90% habe. Leider kommt Alexa damit nicht ganz klar und dreht das Ganze scheinbar wieder um, was dann doch wieder zu 90% führen dürfte. Ich muss zugeben, da war es schon spät, daher habe ich nicht nachgesehen, wie weit sie herunter gefahren sind. Aber zwischen 10% und 90% ist nunmal ein merklicher Unterschied. :-)
Ein 'Alexa, öffne Rollo Wohnzimmer links' hat ihr auch nicht gefallen - konnte 'öffne' scheinbar nicht mit 0% verbinden.
Zu guter Letzt noch der Versuch, 'Rollo Wohnzimmer links' und 'Rollo Wohnzimmer rechts' mit 'Rollos Wohnzimmer' zu bedienen. Klappt natürlich auch nicht, weil Alexa weiß nur, dass es zwei Rollläden im Wohnzimmer gibt und ich mich für keinen der beiden entscheiden konnte. :-)
Wie schon oben erwähnt, ist kein einziges meiner Kommandos im Verlauf der Alexa-App sichtbar, was womöglich das eine oder andere "Problem" hätte lösen können.
So... Jetzt einmal meine ersten Stunden mit Alexa kurz zusammen gefasst. Würde mich freuen, wenn jemand den einen oder anderen Tipp für mich hätte, damit ich heute Abend nicht nur mit Trial & Error weitermachen muss. :-)

Vielen Dank im Voraus!
Grüße..alexaName ist für den Smarthome Skill und den Custom Skill. alexaRoom funktioniert im Smarthome Skill nicht,sondern nur im Custom Skill.Zu den Rolläden kann ich nichts sagen,da ich noch keine verwende.Man darf nicht vergessen,das Alexa noch nicht so viel kann wie viele denken,und teilweise komische sachen macht,nicht macht..Ich habe z.B einen dummy Heimkino..Mal schaltet sie den,mal macht sie gar nichts,obwohl in der App der korrekte Satz verstanden wurde..Manchmal rede mich mir den Mund fusselig beim Dot im Arbeitszimmer,gehe ich dann ins Wohnzimmer,klappt es beim ersten mal.Ebenfalls bei gleicher Satzerkennung in der App.
Grüße

MadMax-FHEM

#1516
@Mr. P,

schon mal den Thread hier durch?? ;)

Ja ist lang aber da sind einige deiner Fragen beantwortet...

alexaRoom funktioniert nur bei Verwendung des Custom Skill.

Beim Smart Home Skill musst du das dann über Gruppen in der App "basteln"...

alexaName "schlägt" alias "schlägt" "Name"...

Wichtig bei Smart Home Skill ist genericDeviceType und die (falls nicht schon vorhandenen, weil es ja ein "echter Schalter" ist) setList Einträge...

EDIT: ganz wichtig ist die Wahl des Namens. Da mal schauen was Alexa versteht und dann so nennen. Z.B. wird (soweit man hier verfolgen kann) für ARD a. r. d. verstanden. Englische Begriffe gehen oft nicht gut. Allerdings Fire TV funktioniert ;) (erst dachte ich ich müsste ihn "feier tivie" nennen ;)  ).

Gruß und viel Erfolg weiterhin, 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)

Mr. P

Hej Joachim,

danke für deine Antwort, damit komm ich schon ein ordentliches Stück weiter.
Hatte den Thread immer nur unter zur Hilfenahme der Suchfunktion durchforstet. So besteht zwar die Gefahr, dass es den einen oder anderen ärgert, aber auf der anderen Seite bin ich dafür auch einer, der sein Wissen im Wiki niederschreibt, sobald ich mich durchblicke. :-)

Nochmals vielen Dank und noch einen schönen Tag!
Greetz,
   Mr. P

kud

@Mr.P
Habe auch ne Weile gebraucht.
Meine jetzigen Einräge funtionieren alle.
Im Device: in alexaname steht "heizung arbeitszimmer" oder "heizung wohnzimmer" etc. (ohne Hochkomma")
                  in alexaroom  steht "arbeitszimmer" / "wohnzimmer" etc. (habe ich vorsorglich mit angelegt)
                  in alias steht "Heizung Arbeitszimmer" etc.
                  in genericDeviceTyp steht "thermostat"   (aus Dropdown ausgewählt)

Dann habe ich ein reload 39_alexa gemacht.
Neustart von alexa-fhem.
In der Alexa-App.
Habe ich vorsorglich alle Geräte gelöscht und danach neu suchen lassen.
Keine weiteren Zuordnungen zu Räumen ! Es läuft ab jetzt.

wuast94

Nach wie vor keine besserung.. Über nacht alles tod und keine verbindung mehr zwischen Amazon und Alexa-Fhem. Konnte morgens auf einmal nichts mehr steuern.. Devices gelöscht und neu suchen lassen und er findet nichts mehr. Alexa-Fhem lädt ohne error oder sonstiges.. Ips hat sich auch keine geändert.. Weder intern noch extern.. Hat jemand wenigstens noch eine Idee was es sein könnte?
Zigbee  Temp+Luftdruck+Humi Bewegungsmeldern Tür Kontakte, Klingel, TV, Denon, Schaltbare Steckdosen mit leistungsmessung, und weiteres

Homeassistant mit Nodered

roadghost

NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

Roman

Hallo,

Zuerst einmal großen Dank und Respekt an alle, die die Anbindung an Alexa realisiert haben.

ich habe seit gestern meinen Echo Dot und hab mich auch gleich mal an die Konfiguration von alexa-fhem gemacht.
Ich habe ähnliche Erfahrungen wie von 'Esjay'  beschrieben gemacht und muss hier noch einiges probieren.

Der smart home skill lies sich auch relativ gut mit der Wiki Anleitung und den Forenbeiträgen einbinden und der funktioniert soweit auch ganz gut (Lichter an/aus, Rolladen nicht so wie ich das gerne hätte, hier kann man im smart home skill nur mit % steuern)

Mit dem Custom-Skill kämpfe ich nun seit ein paar Stunden. Vieleicht kann mir hier jemand einen Tip geben.

Ich habe den Custom-Skill bei Amazon angelegt (dies ging auch  ohne Fehlemeldungen). Einen Trigger dazu auf der Lambda-Funktion angelegt (nun gibt es dort 2 Trigger, für Smart home skill und custom skill).

Der Custom Skill lässt sich laden, in Alexa einbinden, anmelden. Beim Aufruf bekomme ich von Alexa aber gesagt, es gibt ein Problem mit dem Skill-Aufruf.

Auf der Testseite des Skills im Service Simulator bekomme ich immer ein 'the response is invalid'
Fehlermeldung' Parse error in line 1 , excpecting 'string, 'number' .... got 'undefined'

der ServiceRequest der hierbei abgesetz wird sieht meiner Meinung nach gut aus (bin aber auch kein Programmierer)
Test war hier ein einfaches 'schalte wohnzimmer ein'  (wobei wohnzimmer der alexaName der Wohnzimmerlampe ist)

{
  "session": {
    "sessionId": "SessionId.XXXXXXXXXX",
    "application": {
      "applicationId": "amzn1.ask.skill.XXXXXXXXXXXXX"
    },
    "attributes": {},
    "user": {
      "userId": "amzn1.ask.account.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    },
    "new": true
  },
  "request": {
    "type": "IntentRequest",
    "requestId": "EdwRequestId.25073fb5-1241-4554-8307-7bf54dd73803",
    "locale": "de-DE",
    "timestamp": "2017-01-24T19:37:20Z",
    "intent": {
      "name": "OnIntent",
      "slots": {
        "On_Value": {
          "name": "On_Value",
          "value": "ein"
        },
        "Device": {
          "name": "Device",
          "value": "wohnzimmer"
        },
        "preposition": {
          "name": "preposition"
        },
        "Room": {
          "name": "Room"
        },
        "article": {
          "name": "article"
        }
      }
    }
  },
  "version": "1.0"
}


Hat jemand hierzu eine Idee ?

Gruß
Roman

Breaked

Habe im Moment das Problem einen Dummy einzubinden, der Server lässt sich nicht starten.
Sobald der dummy im Alex-raum ist, erhalte ich folgende Fehlermeldung:
/opt/fhem/alexa-fhem/lib/fhem.js:837
      if( match.length < 4 || !match[3] ) {
               ^

TypeError: Cannot read property 'length' of null
    at FHEMDevice.fromHomebridgeMapping (/opt/fhem/alexa-fhem/lib/fhem.js:837:16)
    at new FHEMDevice (/opt/fhem/alexa-fhem/lib/fhem.js:2075:8)
    at FHEM.<anonymous> (/opt/fhem/alexa-fhem/lib/fhem.js:735:39)
    at Array.map (native)
    at FHEM.<anonymous> (/opt/fhem/alexa-fhem/lib/fhem.js:732:31)
    at Request.self.callback (/opt/fhem/alexa-fhem/node_modules/request/request.js:186:22)
    at emitTwo (events.js:100:13)
    at Request.emit (events.js:185:7)
    at Request.<anonymous> (/opt/fhem/alexa-fhem/node_modules/request/request.js:1081:10)
    at emitOne (events.js:90:13)
Bereit für dein eigenes Smart Home?
http://ownsmarthome.de

Fixel2012

Zitat von: wuast94 am 24 Januar 2017, 20:37:32
Nach wie vor keine besserung.. Über nacht alles tod und keine verbindung mehr zwischen Amazon und Alexa-Fhem. Konnte morgens auf einmal nichts mehr steuern.. Devices gelöscht und neu suchen lassen und er findet nichts mehr. Alexa-Fhem lädt ohne error oder sonstiges.. Ips hat sich auch keine geändert.. Weder intern noch extern.. Hat jemand wenigstens noch eine Idee was es sein könnte?

Ich hatte das gleiche Problem, bis ich im Alexa log gesehen habe, dass es noch einen Bug (RGB Led... oder so) gab und somit alexa immer abgestürzt ist.

Nach einem Upgrade von Version 1.8 auf 1.9 geht nun alles.

vielleicht hilft das
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

baerbel

@Breaked

wie sieht denn dein dummy aus - bitte List posten -

P.S.: Zum Thema dummy wurde hier auch schon einiges geschrieben -

Grüße - Bernd

baerbel

Hi,

habe ein klein schräges Phänomen - geht hierbei um den Smarthome skills - habe in der App eine Gruppe Schlafzimmer. Drin steckt ein Dimmer und ein Thermostat. Beide korrekt konfiguriert mit passendem Genericdevicetype.

Sage ich "Alexa, stelle die Tischlampe auf 50%" - klappt es - sage ich jedoch "Alexa, stelle die Heizung auf 22 Grad" meint Alexa: Ich bin nicht sicher, ob diese Einstellung für die Beleuchtung oder das Thermostat in der Schlafzimmergruppe gilt"

Hat da jemand eine Idee?

Grüße - Bernd

Diggewuff

#1526
ZitatZitat 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?

ZitatNein und nein/nicht wirklich...

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

Gruß, Joachim

Ganz besonders interessant währe für mich die frage nach einem Reading der Aktivität um genau zu sein:
ON = Alexa Hört zu, Alexa antwortet, es werden Nachrichten oder Musik ohne leuchtenden Lichtring ausgegeben.
Off = Alexa ist im standby und gibt grade nichts aus.

Ich bin jetzt seit 3 Tagen dabei an einem Lichtsensor, am GPIO, rum zu basteln um zumindest den Lichtring auszuwerten, allerdings lässt sich dieser nicht vollständig vom Umgebungslicht abschirmen sodass ich mit der Empfindlichkeit nicht weit genug hoch gehen kann ohne nicht auch Umgebungslicht als Alexa Aktivität zu registrieren. Schön sieht das auch nicht aus, wen da so ein Sensor auf dem Rand vom Dot rumklebt.
Das analoge Audiosignal auch noch auszuwerten, ist auch noch eine Option, bringt mich aber alleine auch nicht wirklich weiter da der receiver nicht rechtzeitig umschaltet wenn das Signal dafür erst durch die Audioausgabe selber kommt.
Daher währe meine Idee eventuell das DASH_DHCP Modul für meinen Zweck "Alexa Aktivität (beginn der Anfrage -> ende der Ausgäbe) zu erkennen" Zweckzuentfremden und vielleicht die DHCP anfragen vom Echo dafür heran zu ziehen, eine am Anfang und eine an Ende erkennen und dann über ein Skript einen Dummy state setzen.
DHCP Kommunikation auszuwerten gehört leider nicht zu meinen Fähigkeiten insofern würde ich mich sehr über Feedback und Anregungen freuen.
Ganz andere Ansätze sind auch willkommen, ich denke (Hoffe) ich bin nicht der einzige der seinen Dot an einem AVR betreibt und mehr von Alexa antworten versteht wenn der AVR auch an ist.

nesges

Zitat von: Diggewuff am 24 Januar 2017, 22:17:11
Ganz besonders interessant währe für mich die frage nach einem Reading der Aktivität um genau zu sein:
ON = Alexa Hört zu, Alexa antwortet, es werden Nachrichten oder Musik ohne leuchtenden Lichtring ausgegeben.
Off = Alexa ist im standby und gibt grade nichts aus.

Ggf. reicht es für deine Zwecke, ein notify auf die Readings intent und fhemIntent des Alexa-Devices zu legen. Sie werden beide relativ früh in der Verarbeitung von Requests aus alexa-fhem heraus gesetzt. Du verpasst dabei allerdings Aktivierungen, die nicht durch alexa-fhem behandelt werden (also Build-In Funktionen und fremde Skills).

Diggewuff

Das reicht mir leider nicht da ich das Echo nicht ausschließlich zur Heimautomatisierung verwende.

Benny81

Zitat von: justme1968 am 23 Januar 2017, 21:24:32
@Benny81: was genau ist das für ein device und warum ist es anders als SOMFY direkt? zeig mal ein jsonlist2 vom device. gibt das param attribut mit levelInverse wirklich?

aber du kannst per homebridgeMapping alles konfigurieren so das du nichts am quelltext ändern musst:attr <device> homebridgeMapping CurrentPosition=dim TargetPosition=dim,cmd=dim,delaysollte schon reichen.

Danke für deine schnelle Rückmeldung.  :D
Dabei handelt es sich um ein IO Homecontrol Device und nicht um ein RTS Device. Darum kann ich es nur über das FHEM Tahoma Modul ansteuern, welches über die Somfy Cloud kommuniziert.
Wie erstelle ich so eine jsonlist2? Oder wo finde ich diese?
Das mit dem Mapping versuche ich heute Abend mal. Danke.