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

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

Vorheriges Thema - Nächstes Thema

kud

@baerbel
Und warum kann man das nicht so erweitern? (Achtung ! Ich verstehe das eher als Frage. Ich weiß nicht ob es funktioniert.)
"intent" : "OpenIntent",
         "slots" : [
            {
               "name" : "Device",
               "type" : "FHEM_Device"
            }
         ]
      },


Und dazu die passende Utterance.

OpenIntent öffne {Device}

Oder liege ich da völlig falsch ?

nesges

Zitat von: chris1284 am 20 Januar 2017, 14:14:31
leide rnein, sie sagt immer noch ok

Ok, ich ergänze: "...sondern eine längere Ansage". Es gibt stellenweise längere Antworttexte, die aber unterdrückt und durch "Ok" ersetzt werden, wenn alexaConfirmationLevel nicht oder < 2 gesetzt ist. Soweit ich gesehen habe gibt es (noch) keine Möglichkeit sie stumm zu schalten. Ich hab den Code aber nicht vollständig durchdrungen und höre daher jetzt auch lieber mit Halbwahrheiten auf.

michael.winkler

in der server.js gibt es einen Bereich wo bei den fhemIntens als Response immer ein OK zurückkommt. Hier kann man natürlich eigene Skripterweiterungen machen.

ABER Nach jedem Update der alexa Komponenten sind diese wieder weg, und man muss sich im klaren darüber sein dass der Entwickler diese super Moduls euch dann ach nicht mehr weiterhelfen kann!!

Da ich wollte das Alexa nicht immer OK sag sondern auch mal andere Texte habe ich bei mir folgende Änderungen gemacht!


      if( match ) {

if( fhem.fhemIntents[intent_name] == 'buerogutenMorgen' | fhem.fhemIntents[intent_name] == 'gutenMorgen' ) {
response.response.outputSpeech.text = 'Guten Morgen Familie Winkler. Ich hoffe Ihr hattet eine angenehme Nachtruhe!';
callback( response );
return;
}else {
//variable Antworten;
var jetzt = new Date();
var Sekunden =   jetzt.getSeconds();
Sekunden = Sekunden.toString().slice(-1);

var miwiantwort = 'OK.';
if( Sekunden == '0' ) {miwiantwort = 'OK.'}
if( Sekunden == '1' ) {miwiantwort = 'Aber sicher.'}
if( Sekunden == '2' ) {miwiantwort = 'geht klar'}
if( Sekunden == '3' ) {miwiantwort = 'wie immer gerne'}
if( Sekunden == '4' ) {miwiantwort = 'OK. Erledigt'}
if( Sekunden == '5' ) {miwiantwort = 'schon wieder?'}
if( Sekunden == '6' ) {miwiantwort = 'habe ich gemacht'}
if( Sekunden == '7' ) {miwiantwort = 'sag ich ihm'}
if( Sekunden == '8' ) {miwiantwort = 'macht er schon'}
if( Sekunden == '9' ) {miwiantwort = 'aber klar doch'}


response.response.outputSpeech.text = miwiantwort;
//response.response.outputSpeech.text = 'OK.' + Sekunden;
callback( response );
return;
}
      }


Danach einen Restart von dem Alexa Server DENKT daran, Alle Änderungen auf eigene Gefahr!

baerbel

Hallo Kud,

mit dem Nutzen der FHEMIntents wollte / will ich so nah am Standard bleiben - da Schema Intent und Utterance ja vom Alexa Device generiert werden und je nachdem was du für Änderungen an deiner Instanz vornimmst für mich das copy & past aus FHEM die sicherer Methode ist - so wie ich es verstanden habe in deinem Beispiel würdest du die Erweiterung direkt auf developer.amazon machen, oder?

FHEMIntents möchte ich eigentlich nur für Ausnahmen nutzen, obgleich auch hier im Thread jemand komplett und "alles" darüber steuert oder steuern möchte.

Grüße - /Bernd

baerbel

... und @kud: auch wenn man das alexa mapping so baut erwartet (denke ich) das ganze eben noch eine Aktion - wenn dem so wäre, dann würden Sätze rauskommen wie: Alexa, sage XXXX öffne das Garagentor an/auf/ein ... etc. - ist eine Vermutung ... deswegen eigentlich der Weg über die FHEMIntents.

Grüße - Bernd

baerbel

Guten Abend,

wollte gerade ein wenig Räume, Namen etc. bereinigen und aufräumen - bei der Nachfrage .." wie ist der Status im Hobbyraum" bekomme ich folgendes ausgeworfen:

"intent":{"name":"StatusIntent","slots":{"preposition":{"name":"preposition","value":"im"},"Room":{"name":"Room","value":"hobbyraum"},"Device":{"name":"Device"}}}}}
[1/20/2017, 9:55:40 PM] IntentRequest
[1/20/2017, 9:55:40 PM] StatusIntent
[1/20/2017, 9:55:40 PM] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%201%7D&XHR=1
[1/20/2017, 9:55:40 PM] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=setreading%20MyAlexa%20intent%20IntentRequest%20StatusIntent&XHR=1
[1/20/2017, 9:55:40 PM] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%200%7D&XHR=1
[1/20/2017, 9:55:40 PM] 0
[1/20/2017, 9:55:40 PM] ERROR: TypeError: Cannot read property 'replace' of undefined from ::ffff:34.248.36.228


Aus der developer Seite als Test gestartet mit

StatusIntent wie ist der status im hobbyraum

bekomme ich

The response is invalid

hat jemand eine Idee was das bedeutet und woher das kommen kann? Ich habe in dem Raum eine Heizung und ein Schloss (hatte das Schloss mal raus, da ich nicht wusste, ob das Schwierigkeiten macht) aber keine Änderung.

Danke und Gruß - Bernd

baerbel

... wieder ich: Fehler gefunden - war ein unnötiges homebridgemapping auf der Heizung - gelöscht und nun ist alles gut.

chris1284

Zitat von: michael.winkler am 20 Januar 2017, 14:57:56

Da ich wollte das Alexa nicht immer OK sag sondern auch mal andere Texte habe ich bei mir folgende Änderungen gemacht!

Danach einen Restart von dem Alexa Server DENKT daran, Alle Änderungen auf eigene Gefahr!

der code lässt, ohne ihn näher hintefragt zu haben, erahnen das man alexa auch als tts ausgabe nutzen könnte oder ?

sbiermann

Zitat von: chris1284 am 21 Januar 2017, 08:06:16
der code lässt, ohne ihn näher hintefragt zu haben, erahnen das man alexa auch als tts ausgabe nutzen könnte oder ?
Alexa reagiert nur auf user "Fragen". Die Antwort ist dann tts. Das heißt ein custom skill kann auf die richtigen Fragen beliebiges antworten was Alexa vor liest. Allerdings gibt es derzeit keine Möglichkeit Alexa vom custom oder smart home skill zu triggern. Sprich es ist zum Beispiel keine Erinnerung oder Warnung durch fhem möglich.

kud

Mal eine Frage zu den Slots.
Wenn ich im alexa-device
get alexa interactionmodel
aktiviere kommt ja der Inhalt, welchen ich im Skill einfügen soll.
Bei dem Abschnitt Slots kommt bei mir (da stark gekürzt)
Custom Slot Types:
------------------
FHEM_article
  der
  die
  das
  den
FHEM_preposition
  in
  im
  in der
On_Value
  an
  ein
  aus
  um


Wenn ich diese eintrage mosert Amazon rum und sagt es fehle "FHEM_room" bzw. "FHEM_Device"
Müssen diese per Hand angelegt werden bzw. warum stehen diese nicht im og. Code? Was soll da eingetragen werden ?

baerbel

Hi Kud,

siehe "mein" Anleitung von vor ein paar Seiten davor - ich vermute, dass du gerade dabei bist dein komplettes Model zu aktualisieren - im "neuen" Model heisst es im Schema FHEM_Room, wobei es im "alten" FHEM_ROOM war - somit vermute ich, dass die Fehlermeldung daher rührt.

Also: Schema leeren (auf developer.amazon) wie beschrieben, dass gleiche mit den Utterance - dann deine Custom Slots namentlich angleichen oder komplett neu "bauen", dann den Schema und die Utterances aus FHEM per copy und paste einfügen.

Grüße - Bernd

Radikant

Hi Liebe FHEMler,

nächste Woche kommt mein Dot an, den werde ich natürlich mit FHEM verbinden. ;D
Ein kleines Problemchen weiß ich nur nicht wie ich es lösen soll, und zwar habe ich einen Raspberry als Internetradio/AirPlay Client  an meine Stereoanlage angeschlossen,
jetzt würde ich aber auch gerne die Musik vom Dot darauf abspielen.

Hat da wer selbst ein ähnliches Problem gehabt, weiß wer einen Weg ?

Ich weiß, das passt nicht so zu 100% in den Thread, aber dafür einen neuen aufzumachen lohnt sich auch nicht.

Rudolf  :)
Aller Anfang ist schwer...

baerbel

Hi Rudolf,

Nein passt hier nicht wirklich rein - ;-)

Was hast du denn auf dem RASPI am laufen? Hast du am Echo noch Lautsprecher dran? Per default kann man tuneIn einbinden - evtl. eine Überlegung wert?

Der Sound vom Echo DOT ist nun ja ...

Grüsse - Bernd

Radikant

Hi Bernd,

also auf dem Raspi läuft Volumino(Also MPD mit Webinterface),das lässt sich auch schön mit FHEM steuern. :D

Der Raspi ist an meine Stereoanlage angeschlossen, jetzt würde ich auch gerne den Dot daran anschließen, aber es gibt nur einen AUX-Eingang. :P

Jetzt dachte ich mir, vlt kann man ja irgendwie herausfinden, ob der Echo gerade Musik (Spotify) spielt und dann mit einem Switch den Audioeingang an der Stereoanlage vom Raspi auf den Echo umzustellen.

So in der Theorie.... ;D

LG
Rudolf
Aller Anfang ist schwer...

kud

#1469
Zitat von: baerbel am 21 Januar 2017, 11:29:33
Hi Kud,

siehe "mein" Anleitung von vor ein paar Seiten davor - ich vermute, dass du gerade dabei bist dein komplettes Model zu aktualisieren - im "neuen" Model heisst es im Schema FHEM_Room, wobei es im "alten" FHEM_ROOM war - somit vermute ich, dass die Fehlermeldung daher rührt.

Also: Schema leeren (auf developer.amazon) wie beschrieben, dass gleiche mit den Utterance - dann deine Custom Slots namentlich angleichen oder komplett neu "bauen", dann den Schema und die Utterances aus FHEM per copy und paste einfügen.

Grüße - Bernd
Hallo Bernd,
dh. also die vom Alexa-Device generierten Einträge für CUSTOM SLOT sind unvollständig ?
Wenn ja sollte man darauf hinweisen ;-)
Was ist den nun der Inhalt von FHEM_Room und FHEM_Device ?
Ich habe mal folgendes eingetragen:
Bei FHEM_Device licht|heizung und bei FHEM_Room arbeitszimmer|bad|flur

Bei meinen Devices habe ich entsprechend unter alexaName licht oder heizung und bei alexaRoom bad oder flur eingetragen.

Richtig ?

Der Test meines Skills funktioniert nicht !
Habe mal ein Bildschirmfoto gemacht. Woher bekommt der Skill die Devices gemeldet?