FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: copymaster am 29 April 2017, 05:28:09

Titel: eigene commands mit Alexa-Fhem
Beitrag von: copymaster am 29 April 2017, 05:28:09
Hallo, leider komme ich seit Tagen nicht weiter.
Ich habe viel gegoogelt, gesucht und gelesen, aber der Zusammenhang wird mir nicht klar.
Viele Leute posten ihre Lösungen, aber das ist halt immer das Endergebnis und mir fehlt der Schritt dvor, wie man da hin kommt.

Ich habe also Alexa-FHEM und einen Smarthome Skill und einen Custom Skill nach VIdeo angelegt.

Wenn ich nun sage: "Alexa Guten Morgen", antwortet der Echo wie erwartet: "Guten Morgen, heute ist Tag der weiß-nicht-was....blaba".
Wenn ich sage: "Alexa, sage orakel (skillname): Guten Morgen", dann antwortet der Echo  "OK".

Damit scheint der Customskill zu funktionieren. Aber:  Wenn ich nun z.B. möchte, dass bei "Guten Morgen" eine Lampe angeht, WO muss ich da etwas ändern?!

Ich hätte gedacht, dieses "Guten Morgen", was vom alexa-fhem in die fhem.cfg eingetragen wird, hat dann in der ALexa.pm irgendwo den Befehl, der dann "OK" antwortet. Ist aber nicht so.

Ich habe nun auch probiert, wie in einem Beitrag beschrieben, einen Fernseher einzubinden (Gerät "TV" gibt es im FHEM)

in fhem.cfg:
attr MyAlexa fhemIntents #IntentName=<sample utterance>\
gutenMorgen= guten morgen\
guteNacht=gute nacht\
{Alexacmd ("gutenmorgen")}=guten morgen\
{Alexacmd ("guteNacht")}=gute nacht\
{Alexacmd ("tvlauter")}=tv lauter\
{Alexacmd ("tvleiser")}=tv leiser\
{Alexacmd ("tvprgup")}=tv n  chstes Programm\
{Alexacmd ("tvprgdown")}=tv vorheriges Programm\
{Alexacmd ("tverstes")}=tv das erste\
{Alexacmd ("tvzweites")}=tv das zweite\
{Alexacmd ("tvsateins")}=tv sat eins\
{Alexacmd ("tvaus")}=tv aus


Dann in der 99_myutils.pm:

###############################################
sub Alexacmd {

my $Command = $_[0];
my $ALEXAReturn = "OK";
my $FHEMCommand = "set Dummy_test no_alexa_action";  # falls kein passendes Kommando gefunden wird

fhem("set Dummy_test $Command");    # nur zur Kontrolle um zu sehen was ankommt
$Command =~ s/fhemIntent: //;           # das reine Intent extrahieren

my %Alexakommando = (
"gutenmorgen" => "set Dummy_Test guten morgen; Guten Morgen, was kann ich f  r dich tun",
"tvlauter" => "set TV remoteControl volumeUp ;ich habe den fernseher lauter gestellt",
"tvleiser" => "set TV remoteControl volumeDown; ich habe den fernseher leiser gestellt",
"tvprgup" => "set TV channelUp;OK",
"tvprgdown" => "set TV channelDown; OK",
"tverstes" => "set TV channel 1; OK",
"tvzweites" => "set TV channel 2; OK",
"tvsateins" => "set TV channel 3; OK",
"tvaus" => "set TV remoteControl power; ich habe den fernseher ausgeschaltet"
);
($FHEMCommand,$ALEXAReturn) = split (/;/, $Alexakommando{$Command});
fhem("$FHEMCommand");
return "$ALEXAReturn";
};


Es passiert aber eben nix.

Kann mir jemand sagen, wie ich
A) Diesen "GutenMorgen" Befehl ändern kann, so dass ein Gerät geschaltet wird und
B) Wo mein Fehler wegen dem Fernseher ist?

Danke


Titel: Antw:eigene commands mit Alexa-Fhem
Beitrag von: copymaster am 29 April 2017, 19:24:41
Offenbar war auch das zu einfach, um beantwortet zu werden.

Hab es mittlerweile rausgefunden.
Titel: Antw:eigene commands mit Alexa-Fhem
Beitrag von: igami am 29 April 2017, 19:33:30
Zitat von: copymaster am 29 April 2017, 19:24:41
Hab es mittlerweile rausgefunden.
Dann bitte den Thread mit gelöst markieren und die Lösung für Nachfolgende posten
Titel: Antw:eigene commands mit Alexa-Fhem
Beitrag von: visionsurfer am 29 April 2017, 22:26:10
Ja genau. Was hast du gemacht ?

Grüße,
Visionsurfer