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

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

Vorheriges Thema - Nächstes Thema

Bootscreen

Für alle die Alexa testen wollen ohne sich extra einen Echo oder Dot zu holen:
Es gibt eine iOS und Android App: https://reverb.ai/
Und es gibt eine "WebApp": https://echosim.io/

Und jetzt nochmal ne frage zu den Custom Skills: Ist es mit einem Alexa Fhem Node Server möglich es so einzurichten das Ich Beispielsweise sagen "alexa, sage badezimmer schalte licht an"? und das ich mit "alexa, sage badezimmer " auch nur Geräte des Raumes Badezimmer steuern kann? oder muss ich dazu mehrere Node Server laufen lassen?
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

Esjay

Zitat von: Bootscreen am 04 Mai 2017, 12:53:42
Für alle die Alexa testen wollen ohne sich extra einen Echo oder Dot zu holen:
Es gibt eine iOS und Android App: https://reverb.ai/
Und es gibt eine "WebApp": https://echosim.io/

Und jetzt nochmal ne frage zu den Custom Skills: Ist es mit einem Alexa Fhem Node Server möglich es so einzurichten das Ich Beispielsweise sagen "alexa, sage badezimmer schalte licht an"? und das ich mit "alexa, sage badezimmer " auch nur Geräte des Raumes Badezimmer steuern kann? oder muss ich dazu mehrere Node Server laufen lassen?

Hey, du könntest mehrere Custom Skills erstellen, und dann jeweils deinen Skillrufnamen nennen wie du möchtest. Ma Bo hat das hier ganz gut beschrieben. https://forum.fhem.de/index.php/topic,65890.0.html

Hoffe das beantwortet deine Frage

Bootscreen

#2582
Das hatte ich gefunden, nur hab ich da nichts gefunden was die "Einschränkungen" macht. Wenn ich das da richtig verstanden hatte hab ich zwar verschiedene Rufnamen durch verschiedene Skills, aber es wird ja bei jeder Anfrage im raum aus der config gesucht. das heißt doch dann das ich auch mit Badezimmer die Sachen aus der Küche steuern kann. Ich möchte das ganze nämlich ohne nochmal den Raum zu nennen realisieren. oder hab ich das ganze von Ma Bo falsch verstanden?

Ich möchte z.b. auch sagen können: "Alexa, sage Badezimmer setzte Heizung auf 20°" oder "Alexa, sage Wohnzimmer setzte Heizung auf 20°" und es sollen unterschiedliche Heizungen geschaltet werden
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

Fixel2012

#2583
Zitat von: Bootscreen am 04 Mai 2017, 13:54:56
Das hatte ich gefunden, nur hab ich da nichts gefunden was die "Einschränkungen" macht. Wenn ich das da richtig verstanden hatte hab ich zwar verschiedene Rufnamen durch verschiedene Skills, aber es wird ja bei jeder Anfrage im raum aus der config gesucht. das heißt doch dann das ich auch mit Badezimmer die Sachen aus der Küche steuern kann. Ich möchte das ganze nämlich ohne nochmal den Raum zu nennen realisieren. oder hab ich das ganze von Ma Bo falsch verstanden?

Ich möchte z.b. auch sagen können: "Alexa, sage Badezimmer setzte Heizung auf 20°" oder "Alexa, sage Wohnzimmer setzte Heizung auf 20°" und es sollen unterschiedliche Heizungen geschaltet werden

Das geht auch, mit dem Attribut EchoID (ich meine es heißt so). Dort kannst du einen standard Raum definieren z.B. Bad und gleichzeitig einen weiteren Custom skill Bad nennen. Somit kannst du den Skill mit Bad aufrufen, und anschließend alle Geräte im Bad direkt ohne den Raum zu nennen steuern.

Das gleiche geht natürlich auch fürs Wohnzimmer etc.

Was ich vergessen habe, Vorrausetzung ist ein Echo/Dot in jedem Raum.

Wenn man aus dem Bad nun einen anderen Raum bedienen will, muss man den Raum erwähnen: Alexa sage Bad stelle Heizung im Wohnzimmer auf 20 Grad

Kleiner Tipp: Die EchoID siehst du im alexa Device als Reading, allerdings siehst du da nur die jeweils letze verwendete ID.
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

justme1968

du kannst sowohl über das echoRooms attribut einzelnen echo devices als auch über config.json einzelnen applicationId/oauthClientID ein default room zuordnungen.

dieser default room wird immer dann verwendet wenn im kommando kein raum angegeben ist.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Bootscreen

@Fixel2012: das ist es nicht, da ich schon mit jedem echo / dot alles bedienen will.

Zitat von: justme1968 am 04 Mai 2017, 14:41:47
als auch über config.json einzelnen applicationId/oauthClientID ein default room zuordnungen.

dieser default room wird immer dann verwendet wenn im kommando kein raum angegeben ist.
Das ist glaub ich genau das was ich gesucht habe. Kannst du mir nen Beispiel zu so einer config geben?
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

justme1968

du kannst trotzdem mit jedem echo alles bedienen.

"applicationId": ["amzn1.ask.skill.xxxxx:wohnzimmer",...],
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Bootscreen

Das bezog sich auf den Vorschlag von Fixel mit der echoID ;)

Wenn ich das richtig Interpretiere muss ich einfach hinter die Skill ID einfach ein : und den Raumnamen setzten? ist das der Raumname aus dem FHEM Attribut room oder aus dem alexaRoom?
Und müssen die Geräte dann weiterhin unter "connections" -> "filter": "room=AlexaRoom" in dem Raum sein?
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

justme1968

ZitatDas bezog sich auf den Vorschlag von Fixel mit der echoID
meine antwort auch :). das attribut heisst echoRooms und gibt nur einen default an wenn kein raum im satz ist. wenn du einen raum angibst kannst du trotzdem immer noch alles steuern.

der raum ist das wort das du sagst und hat nichts mit dem filter zu tun.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Bootscreen

ich bin verwirrt, sorry :(

Ich versuchs mal zu erklären wie ich es verstanden: Die Skills sind abgesehen vom Rufnamen alle gleich:
Skill 1:
Rufname: Wohnzimmer
Skill 2:
Rufname: Badezimmer
Skill 3:
Rufname: Schlafzimmer

config.json:
"applicationId": ["amzn1.ask.skill.beispiel.1:wohnzimmer","amzn1.ask.skill.beispiel.2:badezimmer","amzn1.ask.skill.beispiel.3:schlafzimmer"],

FHEM Geräte:
Wohnzimmer:
attr alexaName Heizung, Licht, etc
attr alexaRoom wohnzimmer
attr genericDeviceType


Badezimmer:
attr alexaName Heizung, Licht, etc
attr alexaRoom badezimmer
attr genericDeviceType


Schlafzimmer:
attr alexaName Heizung, Licht, etc
attr alexaRoom schlafzimmer
attr genericDeviceType


Danach kann ich sagen:
"Alexa, sage Wohnzimmer schalte licht an" < er macht das licht im Wohnzimmer an
"Alexa, sage Badezimmer schalte licht an" < er macht das licht im Badezimmer an
"Alexa, sage Badezimmer schalte licht im Schlafzimmer an" < er macht das licht im Schlafzimmer an

habe ich das soweit richtig verstanden?
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

justme1968

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

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

Jamo

#2591
Kann man eigentlich auch mehrere Räume im attribut echoRooms angeben?
Also zum Beispiel "Schlafzimmer,Wohnung"?

Dann könnte man mit dem Schlafzimmer-Echo alle Geräte im Schlafzimmer steuern, aber auch alles was übergeordnet ist, also solche Geräte die man von allen Echos ansprechen möchte.

Beispiel:
Mit dem Schlafzimmer-Echo will ich die Schlafzimmer Rollade stellen können, aber auch die Wohnungstür aufmachen.
Mit dem Küchen-Echo will ich die Küchen Rollade stellen können, und ebenfalls die Wohnungstür aufmachen.

So wie es jetzt ist muss ich immer den Raum Wohnung voranstellen (Alexa sage skill mach in der Wohnung die Wohnungstür auf), weil keine Wohnungstür im Raum Schlafzimmer vorhanden ist. Obwohl der Name "Wohnungstür eineindeutig ist (gibts nur einmal).

Einfacher wäre es wenn ich bei allen Echos sagen könnte "Alexa sage skill mach die Wohnungstür auf", unabhängig in welchem Raum ich gerade bin.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

justme1968

nein. du kannst mehrere echos angeben und jedem echo genau einen raum zuordnen. alles andere ist nicht eindeutig.

das problem ist das es z.b. keine möglichkeit gibt automatisch zu entscheiden ob der raum absichtlich weg gelassen wurde oder nicht. die rückfragen bei konflikten mag ich selber nicht so. ich habe noch keine wirklich generelle lösung dafür.

wenn es nur wenige geräte betrifft (z.b. die haustür) kannst du diese aber über alexaRoom mehreren räumen zuordnen und dann matched jeder.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Ma_Bo

NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

justme1968

das api schaut recht einfach aus. das einzige problem ist wie immer das ein skill niemals von alleine los läuft sondern nur wenn man ihn per sprache startet. falls das token aber nicht bzw. nicht zu schnell abläuft könnte man es einfach auf die fhem seite schieben und dann dort über das alexa modul auch bei bedarf etwas damit tun.

d.h. die idee wäre den skill nur zu verenden um an das token zu kommen und dann das auslesen/ändern/... der liste komplett auf fhem seite einzubauen. dann könnte man aus fhem heraus mit den listen arbeiten auch ohne das man ein kommando sprechen muss.

hängt aber alles davon ab das die token tatsächlich nicht ablaufen...

mal sehen wie das wetter am wochenende wird :)
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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