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

von meiner seite aus ja, zumindest für den custom skill. es kann aber sein das der account unter dem der skill konfiguriert wird der gleiche sein muss unter der aws lambda konfiguriert wird. beim home automation skill wird zumindest eine zweite aws lambda routine nötig sein da man pro routine nur einen home automation skill verknüpfen kann.

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

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

mr_durden

Hallo allerseits,

ersteinmal ein riesen großes Danke an justme1968 für Deine Arbeit an dem alexa skill. Wirklich klasse, was Du hier auf die Beine gestellt hast :-)

Ich habe bei mir den aktuellen custom skill 0.1.8 im Einsatz. Alles läuft auch soweit einwandfrei. Trotzdem habe ich 2 kleine Verständnisfragen.

1.) Im FHEM alexaMapping habe ich für das Onintent noch das Verb fahre und die values hoch und runter ergänzt.
(On=verb=schalte;fahre,valueOn=an;ein;runter;beschattung,valueOff=aus;hoch,valueToggle=um) Anschließend natürlich das Interaction Model entsprechend angepasst. Allerdings bekam ich immer eine Fehlermeldung, wenn ich z.B. gesagt habe: fahre die Rolläden im Erdgeschoß runter. Um dann weiter zu kommen, habe ich notgedrungen die server.js an den entsprechenden Stellen auch um hoch, runter... ergänzt. Nun funktioniert das ganze, aber ist das wirklich nötig? Hab ich da noch einen Fehler gemacht oder ist da noch ein Bug in dem Skript? Ich dachte eigentlich, dass ich durch Ergänzung des alexaMapping das ganze entsprechend steuern kann.

2.) Gibt es eine Möglichkeit die Sprachrückmeldungen einzukürzen auf z. B. nur ein OK? Mir sind die "ausführlichen Rückmeldungen" etwas zu lang und nervig. Ich habe jetzt auch die server.js entsprechend angepasst, aber vielleicht gibt es da eine elegantere Möglichkeit.

Viele Grüße aus Berlin,

Stefan

justme1968

#1052
1. aktuell sind für On tatsätlich noch ein paar dinge fest kodiert. hier fehlt mir noch eine idee wie man das einfach konfigurierbar machen kann damit es auch für andere kommandos passt.

aber: fahre hoch/fahre runter ist keine ein/aus eigenschaft und On ist eigentlich der falsche intent. d.h. wenn du nicht über On gehst sondern TargetPosition und im device dann TargetPosition über homebridge mapping passend konfigurierst gibt es keinen konflikt mehr.

2. das ist schon in arbeit :)

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

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

mr_durden

Hallo Andre,

1.) ah ok. Ich habe bei mir alles über dummy switche / Onintents realisiert die per notify http Befehle senden, weil meine Hausautomatisierung auf einem anderen System läuft. Deinen Tip werde ich aber mal ausprobieren, danke.

2.) prima!

Grüße, Stefan


justme1968

wenn du die intents auf alexa seite und characteristics auf fhem/homebridgeMapping seite auseinander dröselst und wirklich nach eigenschaften trennst ist das in deinem fall zwar etwas mehr aufwand am anfang aber langfristig sehr viel besser.

statt dummy und notify schau dir mal readingsProxy an. das spart dann jeweils das notify device.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Esjay

Hallo zusammen,
ich komme gerade 0,0 zum testen , daher 2 kleine Verständnissfragen:

Diese Zeilen kommen global per alexaMapping Attribut an das durch alexa.pm erstellte Alexa Device richtig? Dann per get Befehle die Ausgabe im Custom Skill editieren


On=verb=schalte,valueOn=an;ein,valueOff=aus,valueToggle=um

Brightness=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent

TargetPosition=verb=mach,articles=den,values=auf:100;zu:0
TargetPosition=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent

Hue=verb=stelle,valuePrefix=auf,values=rot:0;grün:128;blau:200
Hue=verb=färbe,values=rot:0;grün:120;blau:220

TargetTemperature=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=grad

Weckzeit=verb=stelle,valuePrefix=auf;für,values=AMAZON.TIME,valueSuffix=uhr

attr <alexa> articles der,die,das,den
attr <alexa>prepositions in,im,in der

attr <alexa> alexaTypes light:licht,lampe,lampen blind:rolladen,jalousie,rollo Outlet:steckdose TemperatureSensor:thermometer,temperatur




Einer Steckdose würde ich dann das Attribut attr alexaTypes Outlet zuordnen, damit Alexa diese erkennt, und nicht mehr der alexaname in den Customslots eingetragen werden muss?
Alles andere was genutzt werden will, muss über das homebridgemapping auf das alexaMapping umgebogen werden!?

Sry wenn ich da was durcheinander bringe, aber der Mischmasch zwischen Custom und Home Skill hier im Thema + ständige verlinkung zu neueren Versionen + scheinbar nicht aktueller Wiki Eintrag erschwert es ,an der Ganzen Thematik dranzubleiben, wenn man sich nicht täglich damit auseinander setzt.

Seid nicht zu hart zu mir!!

Grüße




justme1968

vergiss alexaTypes erst mal. das kommt später wenn die einzelnen devices laufen.

es gibt kein mischmasch und der wiki eintrag ist aktuell.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

knueppler

Zitat von: justme1968 am 22 Dezember 2016, 12:08:56
von meiner seite aus ja, zumindest für den custom skill. es kann aber sein das der account unter dem der skill konfiguriert wird der gleiche sein muss unter der aws lambda konfiguriert wird. beim home automation skill wird zumindest eine zweite aws lambda routine nötig sein da man pro routine nur einen home automation skill verknüpfen kann.
Hi,

ok. Dann wird wohl für den zweiten Account auch ein Lambda fällig sein. Dort konfiguriere ich aber denselben port und es läuft nach wie vor nur ein fhem-alexa-Prozess der auf den Port lauscht. Dass der Request dann von einem zweiten Lambda kommt, wird dann von Dir durch die Einträge in der config.json entsprechend gesteuert, richtig?

Ciao Christian

justme1968

ja. ein alexa-fhem prozess reicht. die verbindung wird immer von aws aus aufgebaut und nur beantwortet. d.h. die antwort geht immer an den richtigen zurück.

config.json ist hier nur für rechte kontrolle nötig und für die zuordnung des skill zum raum.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Erby

Hallo nochmals,

bin jetzt wieder ein Stück weiter. Aber jetzt benötige ich wieder eure Hilfe:

DiskStation> /volume1/temp/alexa-fhem/bin/alexa
[Thu Dec 22 2016 15:02:34 GMT+0100 (CET)] using /root/.alexa/config.json
[Thu Dec 22 2016 15:02:34 GMT+0100 (CET)] ---
[Thu Dec 22 2016 15:02:34 GMT+0100 (CET)] this alexa-fhem 0.1.3
[Thu Dec 22 2016 15:02:34 GMT+0100 (CET)] Trying NAT-PMP ...
[Thu Dec 22 2016 15:02:34 GMT+0100 (CET)] Trying NAT-UPNP ...
fs.js:500
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^
Error: ENOENT, no such file or directory './key.pem'
    at Error (native)
    at Object.fs.openSync (fs.js:500:18)
    at Object.fs.readFileSync (fs.js:352:15)
    at Server.startServer (/volume1/temp/alexa-fhem/lib/server.js:93:15)
    at Server.run (/volume1/temp/alexa-fhem/lib/server.js:197:8)
    at module.exports (/volume1/temp/alexa-fhem/lib/cli.js:30:10)
    at Object.<anonymous> (/volume1/temp/alexa-fhem/bin/alexa:17:22)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
DiskStation>


Wo ist der Fehler?

justme1968

@Erby:
Zitat@alle: bitte installations probleme im anderen thread besprechen!
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

xanker

Zitat von: justme1968 am 21 Dezember 2016, 13:49:40
hat jemand mehr als einen echo?

könnt ihr bitte mal beide skills jeweils ein zweites mal unter einem zusätzlichen (invocation) namen einrichten. in der nächsten version wird es die möglichkeit geben mehr als eine applicationId (und oauthClientID) im config file anzugeben und jeweils einem default room zuzuordnen der dann automatisch verwendet wird wenn man keinen raum im kommando hat.

damit müsste es dann wie oben vorgeschlagen möglich sein zu sagen: 'alxea, sage wohnzimmer...' und 'alexa, sage schlafzimmer ...'

wenn man pro echo einen eigenen account verwendet und einen eigenen skill verknüpft müsste es so auch möglich sein raum abhängig zu steuern. d.h. automatisch den raum zu verwenden im dem der echo ist.

gruss
  andre

Woohoo, vielen Dank! Da freu ich mich schon drauf, ist einfach einen hauch natürlicher als immer "sage fhem..." zu sagen.
Maintainer vom flex Style.
Intel NUC mit fhem in Docker Container | Homematic | SIGNALduino 433MHz | HUE Bridge | Harmony HUB | lepresenced | alexa-fhem ...

mrbreil

Eine Frage bitte noch zum Alexamapping. Es gibt AMAZON.NUMBER und AMAZON.NUMBER, gibt es auch sowas wie AMAZON.STRING oder AMAZON.VALUE? Versuche gerade herauszufinden ob ich auch meine Squeezeboxen steuern kann. Würde dem Alexa Custom Skill gerne Künstlernamen an den Kopf schmeißen ;-).
Ist oder wird das möglich sein? Vielen Dank

Grüße MrBreil

justme1968

für deutschland gibt es aktuell AMAZON.NUMBER, AMAZON.DATE, AMAZON.TIME, AMAZON.DURATION, AMAZON.FOUR_DIGIT_NUMBER, AMAZON.DE_FIRST_NAME, AMAZON.DE_CITY, AMAZON.DE_REGION und AMAZON.EUROPE_CITY.

für amerika gibt es inzwischen einige dutzend zusätzliche slot types wie AMAZON.Artist, AMAZON.Genre, AMAZON.MusicAlbum und alles mögliche andere. ob und wann die in deutschland verfügbar sein werden weiss niemand.

du kannst aber über values im alexaMapping selber werte für einen custom slot vorgeben und diese diese dann beim eintragen in der skill konfiguration weiter auffüllen.

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

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

mrbreil

Danke justme1968, jetzt weiß ich wenigstens wonach ich hätte googeln sollen "slot types". Habe mir schon gedacht das es da eine Übersicht gibt, aber leider nix gefunden, mit den falschen Suchbegriffen.

[/quote]du kannst aber über values im alexaMapping selber werte für einen custom slot vorgeben und diese diese dann beim eintragen in der skill konfiguration weiter auffüllen.


Das war mein erster Gedanke, aber müsste ich da nicht auf http://developer.amazon.com sämtliche Künstler und Alben eintragen?
Verstehe ich jetzt wieder etwas nicht?
Das wäre nämlich ein ganz schönes Projekt und müsste dann ja auch wöchentlich gepflegt werden.

Gruß MrBreil