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

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

Vorheriges Thema - Nächstes Thema

BobbyD

@justme1968: oh oh, da wünsch ich dir erst mal gute Besserung, das du schnell wieder auf die Beine kommst.
Danke, da weis ich erst mal Bescheid und muss nicht Fehler suche die vlt. so nicht da sind  ;D

Bobby

justme1968

#646
anbei ein kurzer ausblick wie die konfigurierbarkeit der kommandos aussehen wird:

- die konfiguration erfolgt zweistufig:

  • die erste stufe erfolgt über den genericDeviceType und das homebridgeMapping
    hier werden die devices, readings und set kommandos einer überschaubaren anzahl an geräte typen und kommando arten zugeordnet. diese sind dann über siri, wenn möglich den alexa home automation skill direkt verfügbar. die größte einschränkung hierbei ist das alexa ausser schaltern (lampen) und thermostaten keine weiteren geräte arten kennt.
  • die zweite stufe erfolgt über das alexa device und ein alexaMapping
    hier werden den möglichen kommando arten der wortlaut und wertebereiche zugeordnet.
- kommandos sind grundsätzlich so aufgebaut:
      <verb> [<artikel>] (<DEVICE>|<type>) [[<preposition>] <ROOM>] <prefix> <value> <suffix>


die klein geschriebenen <...> dinge werden konfiguriert, die groß geschriebenen <...> dinge werden aus dem eigenen fhem ausgelesen.


welche gesprochenen kommandos möglich sein sollen wird über das alexa device konfiguriert:

artikel und präpositionen werden global ein mal so konfiguriert:
attr <alexa> articles der,die,das,den
attr <alexa>prepositions in,im,in der


die service types (geräte typen) werden so deutschen worten zugeordnet:
attr <alexa> alexaTypes light:licht,lampe,lampen blind:rolladen,jalousie,rollo Outlet:steckdose TemperatureSensor:thermometer,temperatur


wenn man z.b. sagen möchte schalte die lampe ein wäre schalte das verb, die der artikel, lampe das device und ein der wert.


das ein- und ausschalten über die kommandos schalte xyz an, schalte xyz ein und schalte xyz aus würde man so als alexaMapping konfigurieren:attr <alexa> alexaMapping On=verb=schalte,valueOn=an;ein,valueOff=aus

die helligkeit einer lampe mit stelle xyz auf X prozent zu steuern würde man so konfigurieren:Brightness=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent

um die farbe einer lampe einzustellen kännte man folgendes konfigurieren:Hue=verb=stelle,valuePrefix=auf,values=rot:0;grün:128;blau:200
Hue=verb=färbe,values=rot:0;grün:128;blau:200

d.h. den worten rot, grün und blau wird ein passender hue wert zugeordnet der dann im set kommando an fhem verwendet wird. damit kann man dann sagen 'stelle die lampe auf rot' oder 'färbe die lampe blau'. wie genau die lampe dann angesteuert wird, d.h. welches set kommando und ob per hsv oder rgb oder auf eine andere weise ist im homebridgeMapping für jedes device festgelegt. d.h. man kann mit einem 'färbe die lampen im wohnzimmer' auch mehrere lampen die unterschiedlich angesteuert werden auf ein mal steuern.

um einen rolladen mit mach den rolladen im schlafzimmer auf|zu zu steuern:TargetPosition=verb=mach,values=auf:100;zu:0

wenn man sein rolläden zusätzlich noch mit stelle den rolladen im wohnzimmer auf 15 % prozentual steuern möchte:TargetPosition=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valeuSuffix=prozent
hier muss man darauf achten das man bei verwendung des gleichen verbs wie zum lampe dimmen auch den gleichen wertebereich und suffix verwendet.

ein stelle die heizung im wohnzimmer auf xx grad für die heizung würde so aussehen:TargetTemperature=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=grad

aus den so konfigurierten möglichkeiten baut das alexa device dann das Interaction Model für die skill konfiguration inklusive der möglichen permutationen von device-, typ- und raumnamen zusammen. diese muss dann von hand dort eingetragen und aktiviert werden.

wichtig zu wissen:
- keine 'intelligenz', keine semantik. nur 'dummer' muster vergleich. -> funktioniert trozdem recht gut.
- nicht alle kombinationen sinnvoll -> vermutlich egal so lange sie nicht verwendet werden.
- alexa ist bei deutschen zahlen noch nicht besonders gut. mal sehen wann das besser wird.
- man kann ein kommando jeweils auf einen bestimmten raum einschränken.
- statt einem geräte namen kann man auch die geräte art verwenden.
- es wird eine reihe von vor eingestellten kommandos geben


wenn amazon lex in deutschland verfügbar ist kann man mit hilfe dieser konfiguration die lex konfiguration erzeugen.

wenn alexa später einmal mehr device typen für home automation skills versteht kann man diese nach und nach vom custom skill in den home automation skill verschieben.


in einem nächsten update wird dann die konfiguration von anfragen nach einem ähnlichen schema möglich sein. danach kommt dann noch die freie konfiguration von kommandos und anfragen hinzu die sich nicht über das fest vorgegebenes satzbau modell abdecken lässt.

edit: 2016-12-14: die erste version des custom skills die dieses konzept umsetzt gibt es hier: https://forum.fhem.de/index.php/topic,60244.msg540117.html#msg540117
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Mathea

Klasse, justme1968! Vielen Dank für die tolle Arbeit und entsprechende Dokumentation.

Übermorgen sollten meine ganzen Dots für jeden Raum geliefert werden und dann kann ich endlich auch loslegen.

axs77

Hi.

Ich bekomme bei einem define alexa alexa folgende Ausgabe:

Cannot load module alexa

Der Log sieht so aus:

2016.12.03 12:28:43 1 : reload: Error:Modul 39_alexa deactivated: Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 141, near "%characteristic;" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 188, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 189, near "} if" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 190, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 191, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 193, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 197, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 199, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 203, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 247, near "};" ./FHEM/39_alexa.pm has too many errors.

2016.12.03 12:28:43 0 : Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 141, near "%characteristic;" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 188, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 189, near "} if" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 190, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 191, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 193, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 197, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 199, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 203, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 247, near "};" ./FHEM/39_alexa.pm has too many errors.



Was soll mir das sagen?
Fehlt ein Perl Modul?
FHEM 5.8
CUL868
CUL433 a-culfw
RasPi -B

stera

Andre, vielen Dank nochmal für die tolle Arbeit! Ich freue mich auf die Updates  8)

Schönes Wochenende

justme1968

@axs77: die zeilennummern passen nicht zur aktuell eingecheckten version. ich denke aber ich habe den fehler behoben.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

axs77

Ich habe ein update laufen lassen, shutdown restart.... aber gleiches Problem

2016.12.03 15:38:02 1 : reload: Error:Modul 39_alexa deactivated: Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 142, near "%characteristic;" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 189, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 190, near "} if" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 191, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 192, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 194, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 198, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 200, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 204, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 248, near "};" ./FHEM/39_alexa.pm has too many errors.
2016.12.03 15:38:02 0 : Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 142, near "%characteristic;" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 189, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 190, near "} if" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 191, near "};" Experimental push on scalar is
now forbidden at ./FHEM/39_alexa.pm line 192, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 194, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 198, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 200, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 204, near "};" Experimental push on scalar is now forbidden at ./FHEM/39_alexa.pm line 248, near "};" ./FHEM/39_alexa.pm has too many errors.
FHEM 5.8
CUL868
CUL433 a-culfw
RasPi -B

justme1968

updates werden imm morgens um 8 zusammen gestellt. d.h. änderungen von heute gibt es erst morgen. oder du holst die aktuelle version von hand aus dem fhem svn.

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

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

axs77

FHEM 5.8
CUL868
CUL433 a-culfw
RasPi -B

simon2207

Hallo,

@justme1968 Vorweg tolle Arbeit!!!

Trotzdem mal in die Runde gefragt - ich glaube ich bin zu doof um dem Wiki zu folgen...
Ich habe das Wiki bzgl. Alexa integration mittlerweile 3 mal gelesen und versuche es entsprechend zu befolgen.
Leider ist es nicht straightforward... man muss ja immer wieder hin und her springen und an einem Punkt scheitere
ich so dass ich nicht weiterkommen.

Befolgt man die Anleitung der Reihe nach kommt man an den Punkt:
"Skill Kit einrichten"
Punkt 6 - hier soll * Service Endpoint Type -> Europe auswählen und im Textfeld den Wert aus Punkt 12 AWS Lambda Funktion anlegen eintragen

Die Lambda Funktion kann ich leider nicht erstellen... denn lasse ich das Fenster hier offen - spinne zum Punkt:
"AWS Lambda Funktion anlegen"
Punkt 8 - Auf der Konfigurationsseite bei Name den Wert FHEM eingeben, bei Runtime Node.js 4.3. Bei Role den Wert Choose an existing role wählen und bei Existing role dann x wählen. Der Quellcode der Datei lambda.js aus dem Quellpaket wird dann an die Stelle des großen Textfeldes vollständig eingefügt. Dann noch den Hostname im Quellcode an den eigenen anpassen. Anschließend alles mit Next bestätige

Hier soll bei Role der Wert "Choose an existing role" gewählt werden

Leider habe ich diesen Eintrag nicht... kann folglich keine Lambda Funktion anlegen und somit keine ARN Adresse erzeugen die ich ja oben benötige...

Kann mir hier jemand sagen wie das gehen soll... nach 90 Minuten gebe ich nun mal auf hoffe auf einen Tip von euch.
DANKE
Simon

Killermike007

hi,

ich kann die alexa-fhem-0.1.3.tgz leider nicht downloaden.

Kann man die nochmal uppen?

Danke
Mike
Cubieboard 3
Cul V3-868,Cul V3-433,JeeLink-868,HM-Lan
MAX Thermostat, MAX Thermostat+, MAX Fensterkontakt, MAX ECO-Taster,HM-Fensterdrehgriff/Klingelsignalsensor/Rolladenaktor,
IT-Funksteckdosen, Wandschalter, Rolladenaktoren, Funkschalter,LaCrosse,YoulessStromzähler,GPIOGaszähler+Türkontakt

Jiggi

@simon2207 Dann musst Du erst eine erstellen. Create a custom role -> in dem Popup dann lambda_basic_execution und auf Allow.
Danach kannst Du eine unter existing role auswählen.
raspbian fhem RPi3 Stretch: MAX!, Conbee, RFXCOM, Harmony Hub, Alexa, TelegramBot, nuki, Maverick ET732, Intertechno, Fritz!DECT, Xiaomi Aqara, Sonoff, Roborock S50,

simon2207

@Jiggi

Vielen Dank!!! Läuft nun alles.

PERFEKT - DANKE

simon2207

Hallo nochmal,

gibt es eine Möglichkeit ./bin/alexa als Service zu starten?

Bei Homebridge gab es dafür ein Script...

Aktuell ist ja so dass wenn ich das Terminal zu mache der Dienst aufhört zu arbeiten...
wie habt ihr das gelöst?

Danke
Simon

harry66

BananaPI, RPI, nanoCUL433, RCS 1000 N Comfort, Dect200, Powerline546E, MAX!Cube, 7xMAX! HT's,3xMAX!FK HMLAN, HM-LC-Bl1PBU-FM, HM-LC-Sw4-Ba-PCB Relay Karte,  LW12, Sqeezelite, TabletUI=Kindel 8" FireHD+Handy,AmazonEcho