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

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

Vorheriges Thema - Nächstes Thema

justme1968

der homeautomation skill kann nur die 8 kommandos die amazon erkennt.

anderen wortlaut kannst du nur mit (der nächsten version) des custom skill konfigurieren.

schau auf die konsole. was passier beim ausschalten? was wird an fhem gesendet?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Mathea

Zitat von: justme1968 am 09 Dezember 2016, 13:30:58
@Mathea: in meiner version hier erzeugt das alexa device schon events wenn ein intent gestartet wird. darüber kann man feststellen ob alexa gerade benutzt wird. es ist aber (noch) keine verknüpfung möglich ob ein kommando das gerade abgearbeitet wird auch über alexa gekommen ist. events die nicht vom gleichen device kommen sind prinzipiell unabhängig.

der weg über einen readingsProxy ist möglich. aber du erkennst es ebenfalls nicht an den events sondern müsstest dann im proxy ein flag setzen bzw. dort passend reagieren.

der einfachere weg ist aber über das homebridgeMapping für cmdOn und cmdOff direkt kommandos zu konfigurieren die z.b. die automatik vorher abschalten. vermutlich am einfachstenmit hilfe von cmdalias. das müsste auch generell gehen. d.h. du definierst dir mit cmdalias jeweils ein set .* onX und set .* offX kommando das zuerst die automatik deaktiviert und dann das eigentlich eon oder off macht.

die unterscheidung ob etwas manuell oder durch eine automatik ausgelöst wurde ist aber ein prinzipielles problem für das es keine allgemein gültige lösung gibt.es gibt diverse threads dazu. es läuft immer irgendwie darauf hinaus das man es selber im jeweiligen frontend das zur bedienung verwendet wird vorsehen muss.

Vielen Dank für die ausführliche Antwort! Die Idee mit dem homebridgeMapping / cmdalias finde ich super. Sobald ich nächste Woche wieder zuhause bin werde ich das ausprobieren.

Aber zum anderen Punkt "feststellen, ob alexa gerade benutzt wird": ist das so gemeint, dass in fhem ein Event generiert wird wenn Alexa ihr Wake-word gehört hat und zuhört / spricht? Das wäre ja total genial. Geht das nur wenn man deinen Custom Skill nutzt oder funktioniert das generell sobald man mit Alexa interagiert?

Gruß,
Mathea

justme1968

das funktionier mit beiden skills. aber nicht beim wake word sondern erst wenn das event kommt. vorher gibt es keinerlei informationen ob alexa etwas tut.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

visionsurfer

Hi,

@justme1968

Also wenn ich sage "Alexa, schalte kochen an". Dann sehe ich in der Alexa app als letzten Befehl Alexa schalte kochen an. Im LOG steht:


[2016-12-09 19:54:32] accepted new token
**** Received Directive: {"header":{"namespace":"Alexa.ConnectedHome.Control","name":"TurnOnRequest","payloadVersion":"2","messageId":"94ebfc28-ff11-4b23-ab97-8028d9b6b15b"},"payload":{"accessToken":"Atza|IwEBIELjwghDxohILb_FoZ_coUvJsdvRIXfoVVrLsU9Lz2cARrIiZeREfHm00umL5OWzUTcrzFHZO3EGET9nGi5XNn-xsBmuPmHOUpNyfdiMTTFJR_VQlU-MNB6iWEIn0zDGyKj0WkbrMOE9gtPic-6hkHk21DQ3r1DjyBAXXJQ_Xe-niSB1zjwrA2xauGV4n4GXLUd6RFqtv5BRUhyiVmJqq3or2HMj8kwG5BHsbVdUXVcjoSNcEa6D5XzH6HA4-wCoWUq42IkyJi6zbJTGY-kVERBEiNcq-Jmhnq3WyJ1_BXzNpYLytbv-3wXpC7r1ZczE2NSUVjJgSK5oyoVbeKL09_80Rq2fiHItooMkRhXXX4l6awZivBavS3xWmz5Os2Yiv3W9A5OUvkL4kNVMqvjsmXsMw4QUKucVTwpB3ffhRT_7CZ48WJ5O5LFx5iAH5c74PuhQzD65JDNxeoiQi2o6QMkhDQAMaFpdAYuP4EmkCPZ23GA01K_3lBgcK6oO4VCdnkA","appliance":{"applianceId":"kochen_kochen_proxy","additionalApplianceDetails":{"device":"kochen_kochen_proxy"}}}}
[2016-12-09 19:54:32] [FHEM] kochen_kochen_proxy: executing set cmd for On with value 1
[2016-12-09 19:54:32] [FHEM]   executing: https://192.168.178.49:8083/fhem?cmd=set%20kochen_kochen_proxy%20on&XHR=1
response :{"header":{"name":"TurnOnConfirmation","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":"89aae2ec-9798-48f8-9992-49fa654e212a"},"payload":{}}


Wenn ich spreche "Alexa, schalte kochen aus". Steht in der App auch sauber Alexa schalte kochen aus. Aber das Log bewegt sich nicht. Es kommt absolut nichts im Log an. Entsprechend wird auch nichts geschaltet.

Ich würde behaupten es liegt am readingsProxy. Ich weiß leider nur nicht wo der Fehler ist.

Weil über die Buttons on und off beim neuen Device kann ich auch alles aktivieren und deaktivieren. Ich kapiere nicht, warum alexa nicht bei "schalte kochen aus" auch schaltet.

Hast du noch eine Idee ?
Ich freu mich ja schon wie ein Kind, das es soweit klappt. Jetzt würde ich die Szene natürlich auch gerne mit "schalte kochen aus" beenden wollen.

Grüße,
Visionsurfer

justme1968

wenn nichts auf der konsole steht hat alexa es auch nicht verstanden bzw.  nicht an den skill weitergeleitet. der readingsProxy ist da noch garnicht im spiel.

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Mathea

Zitat von: justme1968 am 09 Dezember 2016, 19:43:53
das funktionier mit beiden skills. aber nicht beim wake word sondern erst wenn das event kommt. vorher gibt es keinerlei informationen ob alexa etwas tut.

Okay, schade. Sonst hätte ich mein Sonos System oder TV Lautstärke für die Zeit des Zuhörens und Antwortens runter regeln können. Aber das gibt wohl die Alexa API nicht her.

Gruß,
Mathea

boke

Hallo,
da bin ich auch dran Interessiert. Die Sonos Boxen zu muten wenn ich spreche wäre schon toll.
Viele Grüße!

justme1968

das geht aber leider nicht. das api gibt das nicht her.

vielleicht bauen sie etwas wenn die offizielle sonos integration kommt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Borkk

Sagenhaft, soeben hat mein Alexa die ersten Homematic Schalter betätigt :-) ich bin begeistert. Ich bräuchte jetzt mal ein wenig Hilfe beim Syntax der Attr HomebridgeMapping. Ich kann zwar einen Rollo mit "...stelle Rollo Wohnzimmer auf 100 Prozent" steuern, schöner wäre es, ich könnte "auf" oder "zu" sagen. Zumal Alexa immer 9 statt 0 versteht ;-)

also aus "pct 0 = zu" und "pct 100=auf" machen.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

justme1968

das geht erst mir der nächsten version des custom skill.

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

visionsurfer

Moin,

aber in der Alexa App steht eindeutig der richtige Befehl. Also dort steht eindeutig alexa schalte kochen aus. Warum wird das dann nicht weiter geleitet. Alexa schalte kochen ein, wird ja auch wunderbar weitergeleitet?

Grüße
Visionsurfer

mrbreil

#746
Ich hoffe die Frage ist nicht zu "lächerlich" für euch, ich kapiere das leider noch nicht so recht mit dem custom skill.

Meine zu steuernden Geräte die ich mit Alexa steuern möchte liegen in einem "fhem raum" attr Wohnzimmer_Licht room Alexa, manche auch in mehreren attr Bad_Licht room Alexa,Licht.

Allen habe ich auch das Attribut alexaRoom und alexaName gegeben.
attr Wohnzimmer_Licht alexaName licht
attr Wohnzimmer_Licht alexaRoom wohnzimmer


Wenn ich jetzt auf https://developer.amazon.com in den Customskill gehe und unter dem Reiter test bei "Enter Utterance" z.B. "raumliste" teste, bekomme ich folgenden Output:

{
  "version": "1.0",
  "response": {
    "outputSpeech": {
      "type": "PlainText",
      "text": "Ich kenne: Alexa,Licht, Alexa und Alexa,Homekit,Licht"
    },
    "card": {
      "content": "Alexa,Licht\nAlexa\nAlexa,Homekit,Licht",
      "title": "Raumliste",
      "type": "Simple"
    },
    "shouldEndSession": true
  },
  "sessionAttributes": {}
}


Das sind aber die "Fhemräume" und nicht die per Attribut gesetzten.
Habe ich einen Fehler oder ein Verständnisproblem.
Außerdem verstehe ich nicht ganz, wofür ich HomeSkittskill dann noch benötige, geht das dann nicht alles über den customskill?
Was müsste den passieren wenn ich get alexa customSlotTypes anklicke, da passiert bei mir nix offensichtliches?
Ich hoffe ich konnte mich einigermaßen so ausdrücken, das ihr versteht was ich nicht verstehe.

Gruß MrBreil

mrbreil

Eine Frage noch.
Habe jetzt ALLES nochmal von vorn gemacht, auch nochmal alle Dateien heruntergeladen und fhem aktualisiert.
Unter http://alexa.amazon.de/spa/index.html#smart-home , was sollte den dort unter den Geräten stehen?
Bei mir steht:
Licht name: Bad_Licht, alias: Bad_Licht, room: Amazon,Licht
Bad_Licht:
defmod Bad_Licht MilightDevice RGBW MiLightBridge2 6
attr Bad_Licht IODev MiLightBridge2
attr Bad_Licht alexaName Licht
attr Bad_Licht alexaRoom Bad
attr Bad_Licht defaultBrightness 100
attr Bad_Licht devStateIcon {(MilightDevice_devStateIcon($name),"toggle")}
attr Bad_Licht event-on-change-reading state,transitionInProgress
attr Bad_Licht lightSceneParamsToSave hsv
attr Bad_Licht restoreAtStart 0
attr Bad_Licht room Amazon,Licht
attr Bad_Licht webCmd on:off:dim:hue:night:rgb ffffff:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb ffff00

setstate Bad_Licht off
setstate Bad_Licht 2016-12-10 09:46:29 brightness 0
setstate Bad_Licht 2016-12-10 09:46:29 brightness_on 100
setstate Bad_Licht 2016-12-10 09:46:29 discoMode 0
setstate Bad_Licht 2016-12-10 09:46:29 discoSpeed 0
setstate Bad_Licht 2016-12-10 09:46:29 hsv 0,0,0
setstate Bad_Licht 2016-12-10 09:46:29 hue 0
setstate Bad_Licht 2016-12-10 09:46:29 previousState 0,0,100
setstate Bad_Licht 2016-12-10 09:46:29 rgb 000000
setstate Bad_Licht 2016-12-10 09:46:29 saturation 0
setstate Bad_Licht 2016-12-10 09:46:29 state off
setstate Bad_Licht 2016-12-10 09:46:29 transitionInProgress 0



Müsste jetzt nicht nicht bei http://alexa.amazon.de/spa/index.html#smart-home eigentlich der Name und der Raum aus den Alexa Atributten stehen?



Esjay

Zitat von: mrbreil am 10 Dezember 2016, 16:05:49
Eine Frage noch.
Habe jetzt ALLES nochmal von vorn gemacht, auch nochmal alle Dateien heruntergeladen und fhem aktualisiert.
Unter http://alexa.amazon.de/spa/index.html#smart-home , was sollte den dort unter den Geräten stehen?
Bei mir steht:
Licht name: Bad_Licht, alias: Bad_Licht, room: Amazon,Licht
Bad_Licht:
defmod Bad_Licht MilightDevice RGBW MiLightBridge2 6
attr Bad_Licht IODev MiLightBridge2
attr Bad_Licht alexaName Licht
attr Bad_Licht alexaRoom Bad
attr Bad_Licht defaultBrightness 100
attr Bad_Licht devStateIcon {(MilightDevice_devStateIcon($name),"toggle")}
attr Bad_Licht event-on-change-reading state,transitionInProgress
attr Bad_Licht lightSceneParamsToSave hsv
attr Bad_Licht restoreAtStart 0
attr Bad_Licht room Amazon,Licht
attr Bad_Licht webCmd on:off:dim:hue:night:rgb ffffff:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb ffff00

setstate Bad_Licht off
setstate Bad_Licht 2016-12-10 09:46:29 brightness 0
setstate Bad_Licht 2016-12-10 09:46:29 brightness_on 100
setstate Bad_Licht 2016-12-10 09:46:29 discoMode 0
setstate Bad_Licht 2016-12-10 09:46:29 discoSpeed 0
setstate Bad_Licht 2016-12-10 09:46:29 hsv 0,0,0
setstate Bad_Licht 2016-12-10 09:46:29 hue 0
setstate Bad_Licht 2016-12-10 09:46:29 previousState 0,0,100
setstate Bad_Licht 2016-12-10 09:46:29 rgb 000000
setstate Bad_Licht 2016-12-10 09:46:29 saturation 0
setstate Bad_Licht 2016-12-10 09:46:29 state off
setstate Bad_Licht 2016-12-10 09:46:29 transitionInProgress 0



Müsste jetzt nicht nicht bei http://alexa.amazon.de/spa/index.html#smart-home eigentlich der Name und der Raum aus den Alexa Atributten stehen?
Das Attribut alexaRoom wird meiner Meinung nach noch nicht unterstützt..Dafür müsste Andre erst die neuste Version zur Verfügung stehen. Wenn es dann genutzt werden kann,bezieht es sich auch nur auf den Custom Skill..Bin mir nicht sicher,ob der Raum dann überhaupt angezeigt wird..Gruß

Dein Attribut alexaName wird doch durch Licht angegeben..

justme1968

@visionsurfer: so lange auf der alexa-fhem konsole nichts steht ist auch kein kommando angekommen.

@mrbreil: da steht doch der name aus dem alexaName attribut. der alexaRoom steht erst in der nächsten version da. der text an dieser stelle ist er aber sowieso zur information.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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