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

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

Vorheriges Thema - Nächstes Thema

Reinhart

@cs-online

ich hatte auch solche Probleme am laufenden Band. Willst du nicht dein System auf Jessie neu aufsetzen und dann gleich auf Stretch upgraden. Gerade was node und npm betrifft hast du dann keine Problem mehr.

Wheezy ist halt schon sehr alt. So ein neues System kostet nicht viel mehr Zeit als mit dem ständigen herumprobieren und ärgern. Fhem und eBus ist ja kein Problem zum Sichern und Restore. Ich habe die Gelegenheit benutzt und auf Raspi 3 upgedatet, somit kann ich nun sogar mit einer SSD booten und brauche auch keine SD-Karte mehr. Die Alexa Installation läuft ja ebenfalls in 15-20 Minuten durch.

Dann hast du wieder ein schnelles und fehlerfreies System, Alexa wird es dir danken!

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

cs-online

Hallo Reinhard,

das habe ich dann auch heute abend wirklich gemacht, ein frisches letztes Jessie aufgezogen, FHEM-Backup zurück gespielt und dann angefangen mit Alexa... Node war kein Problem, nun stecke ich aber im Custom Skill fest, ich bekomme, wenn ich die ganzen Custom Slots eingegeben habe (get MyAlexa customSlotTypes liefert bei mir übrigens ein leeres Fenster), die Fehlermeldung

ZitatError: There was a problem with your request: Unknown slot type 'FHEM_Device' for slot 'Device'

in Sample Utterances habe ich das hier drin:

TargetPositionIntent mach {Device} {TargetPosition_Value}
TargetPositionIntent mach {Device} {preposition} {Room} {TargetPosition_Value}
TargetPositionIntent mach {TargetPosition_article} {Device} {TargetPosition_Value}
TargetPositionIntent mach {TargetPosition_article} {Device} {preposition} {Room} {TargetPosition_Value}

prozentIntent stelle {Device} auf {prozent_Value} prozent
prozentIntent stelle {Device} {preposition} {Room} auf {prozent_Value} prozent
prozentIntent stelle {article} {Device} auf {prozent_Value} prozent
prozentIntent stelle {article} {Device} {preposition} {Room} auf {prozent_Value} prozent


BrightnessIntent stelle helligkeit {Device} auf {Brightness_Value} prozent
BrightnessIntent stelle helligkeit {Device} {preposition} {Room} auf {Brightness_Value} prozent
BrightnessIntent stelle helligkeit {article} {Device} auf {Brightness_Value} prozent
BrightnessIntent stelle helligkeit {article} {Device} {preposition} {Room} auf {Brightness_Value} prozent


HueIntent stelle {Device} auf {Hue_Value}
HueIntent stelle {Device} {preposition} {Room} auf {Hue_Value}
HueIntent stelle {article} {Device} auf {Hue_Value}
HueIntent stelle {article} {Device} {preposition} {Room} auf {Hue_Value}

HueIntentB färbe {Device} {Hue_ValueB}
HueIntentB färbe {Device} {preposition} {Room} {Hue_ValueB}
HueIntentB färbe {article} {Device} {Hue_ValueB}
HueIntentB färbe {article} {Device} {preposition} {Room} {Hue_ValueB}


SaturationIntent stelle sättigung {Device} auf {Saturation_Value}
SaturationIntent stelle sättigung {Device} {preposition} {Room} auf {Saturation_Value}
SaturationIntent stelle sättigung {article} {Device} auf {Saturation_Value}
SaturationIntent stelle sättigung {article} {Device} {preposition} {Room} auf {Saturation_Value}

SaturationIntentB sättige {Device} {Saturation_ValueB}
SaturationIntentB sättige {Device} {preposition} {Room} {Saturation_ValueB}
SaturationIntentB sättige {article} {Device} {Saturation_ValueB}
SaturationIntentB sättige {article} {Device} {preposition} {Room} {Saturation_ValueB}


gradIntent stelle {Device} auf {grad_Value} grad
gradIntent stelle {Device} {preposition} {Room} auf {grad_Value} grad
gradIntent stelle {article} {Device} auf {grad_Value} grad
gradIntent stelle {article} {Device} {preposition} {Room} auf {grad_Value} grad


OnIntent schalte {Device} {On_Value}
OnIntent schalte {Device} {preposition} {Room} {On_Value}
OnIntent schalte {article} {Device} {On_Value}
OnIntent schalte {article} {Device} {preposition} {Room} {On_Value}


FHEMgutenMorgenIntent guten morgen
FHEMguteNachtIntent gute nacht

StatusIntent status
StatusIntent {Device} status
StatusIntent status von {Device}
StatusIntent wie ist der status von {Device}
StatusIntent wie ist der status {preposition} {Room}

RoomAnswerIntent {preposition} {Room}

RoomListIntent raumliste
DeviceListIntent geräteliste
DeviceListIntent geräteliste {Room}
DeviceListIntent geräteliste für {article} {Room}

reload 39_alexa
get alexa interactionmodel


in den Custom Slots das hier:

ype Values
FHEM_article der | die | das | den
FHEM_preposition in | im | in der
Hue_Value blau | grün | rot
Hue_ValueB blau | grün | rot
On_Value an | ein | aus | um
TargetPosition_Value auf | zu
TargetPosition_article den | die


und oben diesen Code:

{
   "intents" : [
      {
         "slots" : [
            {
               "type" : "FHEM_article",
               "name" : "article"
            },
            {
               "name" : "Device",
               "type" : "FHEM_Device"
            },
            {
               "type" : "FHEM_preposition",
               "name" : "preposition"
            },
            {
               "name" : "Room",
               "type" : "FHEM_Room"
            },
            {
               "type" : "TargetPosition_Value",
               "name" : "TargetPosition_Value"
            }
         ],
         "intent" : "TargetPositionIntent"
      },
      {
         "intent" : "prozentIntent",
         "slots" : [
            {
               "type" : "FHEM_article",
               "name" : "article"
            },
            {
               "name" : "Device",
               "type" : "FHEM_Device"
            },
            {
               "type" : "FHEM_preposition",
               "name" : "preposition"
            },
            {
               "name" : "Room",
               "type" : "FHEM_Room"
            },
            {
               "name" : "prozent_Value",
               "type" : "AMAZON.NUMBER"
            }
         ]
      },
      {
         "intent" : "BrightnessIntent",
         "slots" : [
            {
               "name" : "article",
               "type" : "FHEM_article"
            },
            {
               "name" : "Device",
               "type" : "FHEM_Device"
            },
            {
               "name" : "preposition",
               "type" : "FHEM_preposition"
            },
            {
               "type" : "FHEM_Room",
               "name" : "Room"
            },
            {
               "type" : "AMAZON.NUMBER",
               "name" : "Brightness_Value"
            }
         ]
      },
      {
         "intent" : "HueIntent",
         "slots" : [
            {
               "type" : "FHEM_article",
               "name" : "article"
            },
            {
               "type" : "FHEM_Device",
               "name" : "Device"
            },
            {
               "name" : "preposition",
               "type" : "FHEM_preposition"
            },
            {
               "type" : "FHEM_Room",
               "name" : "Room"
            },
            {
               "type" : "Hue_Value",
               "name" : "Hue_Value"
            }
         ]
      },
      {
         "intent" : "HueIntentB",
         "slots" : [
            {
               "name" : "article",
               "type" : "FHEM_article"
            },
            {
               "type" : "FHEM_Device",
               "name" : "Device"
            },
            {
               "type" : "FHEM_preposition",
               "name" : "preposition"
            },
            {
               "name" : "Room",
               "type" : "FHEM_Room"
            },
            {
               "type" : "Hue_ValueB",
               "name" : "Hue_ValueB"
            }
         ]
      },
      {
         "slots" : [
            {
               "name" : "article",
               "type" : "FHEM_article"
            },
            {
               "type" : "FHEM_Device",
               "name" : "Device"
            },
            {
               "type" : "FHEM_preposition",
               "name" : "preposition"
            },
            {
               "name" : "Room",
               "type" : "FHEM_Room"
            },
            {
               "name" : "Saturation_Value",
               "type" : "AMAZON.NUMBER"
            }
         ],
         "intent" : "SaturationIntent"
      },
      {
         "intent" : "SaturationIntentB",
         "slots" : [
            {
               "type" : "FHEM_article",
               "name" : "article"
            },
            {
               "name" : "Device",
               "type" : "FHEM_Device"
            },
            {
               "name" : "preposition",
               "type" : "FHEM_preposition"
            },
            {
               "type" : "FHEM_Room",
               "name" : "Room"
            },
            {
               "name" : "Saturation_ValueB",
               "type" : "AMAZON.NUMBER"
            }
         ]
      },
      {
         "intent" : "gradIntent",
         "slots" : [
            {
               "type" : "FHEM_article",
               "name" : "article"
            },
            {
               "name" : "Device",
               "type" : "FHEM_Device"
            },
            {
               "type" : "FHEM_preposition",
               "name" : "preposition"
            },
            {
               "type" : "FHEM_Room",
               "name" : "Room"
            },
            {
               "name" : "grad_Value",
               "type" : "AMAZON.NUMBER"
            }
         ]
      },
      {
         "intent" : "OnIntent",
         "slots" : [
            {
               "name" : "article",
               "type" : "FHEM_article"
            },
            {
               "name" : "Device",
               "type" : "FHEM_Device"
            },
            {
               "type" : "FHEM_preposition",
               "name" : "preposition"
            },
            {
               "type" : "FHEM_Room",
               "name" : "Room"
            },
            {
               "type" : "On_Value",
               "name" : "On_Value"
            }
         ]
      },
      {
         "intent" : "FHEMgutenMorgenIntent"
      },
      {
         "intent" : "FHEMguteNachtIntent"
      },
      {
         "intent" : "StatusIntent",
         "slots" : [
            {
               "name" : "Device",
               "type" : "FHEM_Device"
            },
            {
               "name" : "preposition",
               "type" : "FHEM_preposition"
            },
            {
               "type" : "FHEM_Room",
               "name" : "Room"
            }
         ]
      },
      {
         "intent" : "RoomAnswerIntent",
         "slots" : [
            {
               "type" : "FHEM_preposition",
               "name" : "preposition"
            },
            {
               "name" : "Room",
               "type" : "FHEM_Room"
            }
         ]
      },
      {
         "intent" : "RoomListIntent"
      },
      {
         "intent" : "DeviceListIntent",
         "slots" : [
            {
               "name" : "article",
               "type" : "FHEM_article"
            },
            {
               "type" : "FHEM_Room",
               "name" : "Room"
            }
         ]
      },
      {
         "intent" : "AMAZON.CancelIntent"
      },
      {
         "intent" : "AMAZON.StopIntent"
      }
   ]
}



So langsam liegen die Nerven blank.... Was mache ich nur falsch ?
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

amenomade

@cs-online: es gibt anscheinend ein Problem mit einige Installationen => get customSlotTypes liefert kein Ergebnis: https://forum.fhem.de/index.php/topic,74041.msg660339.html#msg660339

Es ist aber vermutlich nur ein "display" Problem. Workaround: die customSlotTypes werden aber in der alexa Log beim Start von alexa-fhem gezeigt. Dort kannst Du die ablesen und ins Skill kopieren
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

SlrG

@justme1968:
Vielen Dank für dieses tolle Projekt! Ich habe mich geduldig durch das Wiki gekämpft (Auch vielen Dank an alle, die sich daran beteiligt haben!) und es läuft. :) Dank des im FHEM Wiki zur Harmony beschriebenen readingsProxy kann ich mit Alexa meine Activities starten. Prima!

@all:
Zwei Dinge bereiten mir noch Kopfzerbrechen und leider lässt mich auch mein Google-Fu im Stich, so dass ich mich Hilfe suchend an euch wende. Angenommen Alexa spielt Musik und ich starte eine Activity Fernsehen, will ich nicht unbedingt die Musik im Hintergrund haben. Ich kann vorher oder nachher Alexa Stop sagen und es ist Ruhe, aber irgendwie wäre es schön, wenn Alexa beim Starten von Activities automatisch die laufende Musik beenden könnte? Ist das irgendwie möglich?

Die zweite Sache betrifft einzelne Tasten/Kommandos der Harmony. Über FHEM kann man diese an das jeweilige Gerät schicken (z.B.: set harmony_44505313 command PowerToggle). Kann man das auch über einen durch Alexa aktivierten readingsProxy machen und wie muss dass dann aussehen? Oder ist hier ein Dummy besser? Ich nehme an, der braucht dann ein entsprechendes Homebridge Mapping? Wichtig wäre, dass der Status hinterher wieder auf "aus" gesetzt werden würde, damit man ihn per Sprachkommando erneut schalten kann und nicht die Meldung bekommt das "Gerät" wäre schon an.

TomLee

@cs-online: Wenn das alle Custom Slot Types sind die du eingetragen hast, musst diese um deine FHEM_Device's noch erweitern. 

cs-online

Guten Morgen,

wo bekomme ich die devices denn her ? Ich habe in FHEM ja nur das Alexa-Device angelegt, aber weiter noch nichts gemacht, eben streng nach Wiki...

Grüsse Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

darkness

@cs-online

Du hast scheinbar diesen Punkt im Wiki übersprungen:

ZitatHier muss nun ein Bruch im Arbeitsfluss durchgeführt werden, denn bei der Erstellung des Custom Skills kommt es auf die Reihenfolge der Einträge an. Deshalb zunächst diese FHEM-Ausgabe schließen, und für dasselbe FHEM-Device get MyAlexa customSlotTypes ausführen. Auch diese Ausgabe wird, wie oben beschriebeen, in Custom Slot Types eingetragen (erst der TYPE, dann die möglichen Werte)

Zumindest bekommst du damit die FHEM_Device und FHEM_Room

cs-online

nein, das habe ich gemacht, aber wie oben beschrieben blieb das Fenster leer...
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

TomLee


darkness

Zitat von: cs-online am 21 Juli 2017, 08:40:51
nein, das habe ich gemacht, aber wie oben beschrieben blieb das Fenster leer...

Den Beitrag hatte ich übersehen, sorry.


DR

Hallo zusammen,

kann man den Alexa-Timeout (also die Zeit zwischen der Befehlsabgabe und der Mitteilung "<Gerät> reagiert leider nicht") ändern? Derzeit liegt der bei gefühlten 3 Sekunden und das reicht mir leider nicht immer.

VG,
Dmitrij

cc13

Wie weiter oben schon geschrieben, funktioniert der SmartHome Skill. Ein "Alexa, schalte das Licht ein/aus" funktioniert.

Nun habe ich den CustomSkill installiert und kann mit "Alexa, sage Wohnzimmer schalte Licht ein/aus" arbeiten. Ich möchte allerdings auch sagen können "Alexa, dimme das Licht im Wohnzimmer auf 50 Prozent", bekomme aber die Antwort "Wohnzimmerlicht unterstützt das nicht". Das Licht von dem ich rede ist eine YeeLight und mit dem entsprechenden Modul in FHEM bekannt.

Was muss ich noch machen, um die Helligkeit steuern zu können. Das gleiche gilt dann sicher auch für die gewünschte Farbe.

cs-online

ähm, mal eine vermutlich ganz blöde Frage: Kann ich den Custom-Skill eigentlich ohne den Smarthome-Skill installieren oder muss ich erst den einen und dann den Custom danach installieren ? Ich hab das ganze System nun nochmal platt gemacht und wollt nicht gleich wieder falsch starten. Ich hatte das bislang so verstanden, daß man entweder oder nehmen kann...
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Amenophis86

Zitat von: cc13 am 21 Juli 2017, 12:06:26
Nun habe ich den CustomSkill installiert und kann mit "Alexa, sage Wohnzimmer schalte Licht ein/aus" arbeiten. Ich möchte allerdings auch sagen können "Alexa, dimme das Licht im Wohnzimmer auf 50 Prozent", bekomme aber die Antwort "Wohnzimmerlicht unterstützt das nicht". Das Licht von dem ich rede ist eine YeeLight und mit dem entsprechenden Modul in FHEM bekannt.
[/qoute]
Soll das jetzt mit dem Coustom oder Home Skill gehen bei dir?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Amenophis86

Zitat von: cs-online am 21 Juli 2017, 13:52:44
ähm, mal eine vermutlich ganz blöde Frage: Kann ich den Custom-Skill eigentlich ohne den Smarthome-Skill installieren oder muss ich erst den einen und dann den Custom danach installieren ? Ich hab das ganze System nun nochmal platt gemacht und wollt nicht gleich wieder falsch starten. Ich hatte das bislang so verstanden, daß man entweder oder nehmen kann...

Beide sind voneinander unabhängig
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...