[ALEXA] Erkannten Text nach dem INVOCATION NAME in ein eigenes Reading schreiben

Begonnen von Ma_Bo, 22 April 2017, 20:22:32

Vorheriges Thema - Nächstes Thema

Ma_Bo

Hallo Leute,
ich habe heute mit dem Custom Skill experimentiert und mit Hilfe einer einfachen sub und den entsprechenden Einstellungen im Custom Skill, es geschafft, dass ich alles (was mir bisher so einfiel) was nach dem Invocation Name erkannt wurde, in ein Reading meines ALEXADEVICES schreibe.

Folgendes habe ich gemacht:

ACHTUNG EXPERIMENTELL, keine fertige und 100% lauffähige Konfiguration !!

FHEM 5.8
Alexa-fhem 0.3.3




Im ALEXADEVICE folgenden Eintrag unter fhemIntents:
{machen($Startwort,$Artikel,$Mittelwort,$Endwort)}={Startwort} {Artikel} {Mittelwort} {Endwort}




Danach in z.B. die 99_myUtils.pm folgende sub eintragen:
##### MACHEN Start
sub
machen($$$$)
{
  my ($Startwort,$Artikel,$Mittelwort,$Endwort) = @_;

fhem "setreading Alexa Alexa_Spracherkennung $Startwort $Artikel $Mittelwort $Endwort";return "Deine Spracheingabe lautete. $Startwort $Artikel $Mittelwort $Endwort";
}
##### MACHEN  Ende


Ihr müsst natürlich das DEVICE und evtl. das Reading was geschrieben wird ändern.
Die Sprachausgabe habe ich zum Test eingebaut, sollte man wenn es um den Produktiveinsatz geht, dann löschen.




Jetzt hab ich noch folgendes im Custom Skill eingetragen:

Intent Schema
{
  "intents": [
    {
      "slots": [
        {
          "name": "FHEMperlCodeIntent_Startwort",
          "type": "FHEMperlCodeIntent_Startwort_Value"
        },
        {
          "name": "FHEMperlCodeIntent_Artikel",
          "type": "FHEMperlCodeIntent_Artikel_Value"
        },
        {
          "name": "FHEMperlCodeIntent_Mittelwort",
          "type": "FHEMperlCodeIntent_Mittelwort_Value"
        },
        {
          "name": "FHEMperlCodeIntent_Endwort",
          "type": "FHEMperlCodeIntent_Endwort_Value"
        }
      ],
      "intent": "FHEMperlCodeIntent"
    },
    {
      "intent": "AMAZON.CancelIntent"
    },
    {
      "intent": "AMAZON.StopIntent"
    }
  ]
}





Custom Slot Types
Type:
FHEMperlCodeIntent_Startwort_Value

Values:
schalte
mache
fahre
stelle
setze
lautstärke
suche





Type:
FHEMperlCodeIntent_Endwort_Value

Values:
ein
aus
um
hoch
auf
runter
rauf
ab
zu
hinab
hinauf
an
eins
zwei
drei
vier
fünf
sechs
sieben
acht
neun
zehn
elf
zwölf
dreizehn
vierzehn
fünfzehn
sechzehn
siebzehn
achtzehn
neunzehn
zwanzig
lauter
leiser





Type:
FHEMperlCodeIntent_Mittelwort_Value

Values:
test
Fernseher
gitarrenbeleuchtung
rollo
Rollo
Stehlampe
a. r. d.
dmax
disney channel
kabel eins
kika
kinderkanal
nickelodeon
pro sieben
pro sieben maxx
r. t. l.
r. t. l. zwei
r. t. l. nitro
r. t. l. plus
sat eins
sat eins gold
zaxx
super r. t. l.
fox
w. d. r.
z. d. f.
z. d. f. neo
licht
lampe
lampen
rolladen
jalousie
steckdose
thermometer
temperatur
rolläden
jalousien
rollos
kranz
vitrine
fernsehlicht
küchen beleuchtung
küchen licht
arbeitsplatten beleuchtung
arbeitsplatten licht
schrank beleuchtung
schrank licht
schränke beleuchtung
weihnachts beleuchtung
weihnachtsbeleuchtung
weihnachts licht
weihnachtsdeko
badbeleuchtung
bad beleuchtung
bad licht
badezimmerbeleuchtung
badezimmer beleuchtung
badezimmer licht
anlage
stereoanlage
surroundanlage
konsole
tablet
videoplayer
blu-ray-player
lichterkette
lichterkette wohnzimmer
privatsphäre
sprach test
wecker
duftsprüher
müll
tonne
mülltonne
ich
timer





Type:
FHEMperlCodeIntent_Artikel_Value

Values:
der
die
das
den






Sample Utterances

FHEMperlCodeIntent {FHEMperlCodeIntent_Startwort} {FHEMperlCodeIntent_Artikel} {FHEMperlCodeIntent_Mittelwort} {FHEMperlCodeIntent_Endwort}
FHEMperlCodeIntent {FHEMperlCodeIntent_Startwort} {FHEMperlCodeIntent_Endwort}
FHEMperlCodeIntent {FHEMperlCodeIntent_Mittelwort}
FHEMperlCodeIntent {FHEMperlCodeIntent_Endwort}
FHEMperlCodeIntent {FHEMperlCodeIntent_Startwort}
FHEMperlCodeIntent {FHEMperlCodeIntent_Artikel}





Natürlich kann man das ganze noch erweitern, meine Sachen sind bis hierher aber alle abgedeckt.

Jetzt kann man einfach sagen "Alexa sage INVOCATION NAME schalte mir bitte das Licht im Badezimmer ein" (und natürlich vieles mehr, einfach testen, alles wird nicht gehen, aber vieles geht schon)
und erhält in seinem ALEXADEVICE ein neues Reading mit dem Text: schalte mir bitte das Licht im Badezimmer ein

Entweder man reagiert jetzt in FHEM mit einem notify,DOIF oder sonst was darauf oder man verarbeitet das ganze in der oben genannten sub weiter oder legt sich eine neue sub an oder oder oder...

Ich suche nun Sätze, wie ihr eure Geräte schalten würdet oder möchtet um zu testen wo ich noch was eintragen muss.
Welche Fragen kann man wie stellen usw.

Hoffe ich konnte es einigermaßen erklären und der ein oder andere kann es brauchen.

Grüße Marcel

####Edit1:
Bestimmt geht es auch einfacher oder auch komplizierter, aber für mich funktioniert es erst einmal so wie ich es brauche.
Vielleicht hat ja jemand Verbesserungen oder Erweiterungen parat. :)
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

justme1968

und was gewinnst du dadurch?


die nachteile die du hast sind unter anderem:

- die erkennung ist deutlich besser wenn alexa kontext information hat. d.h. wenn aus dem interaktion model die sinnvollen kombinationen hervorgehen

- du musst die komplette logik die in alexa-fhem steckt neu implementieren

- schalten geht mit dem custom skill ganz ohne irgendwelchen eigenen code

- du pflegst listen mit namen von hand an zwei stellen statt sie über alexa-fhem automatisch zu erzeugen.

- wenn geräte hinzu kommen musst du an mehreren stellen hand anlegen

- das erkennen von zahlen mit eigener aufzählung ist deutlich schlechter als mir  AMAZON.number

- erweiterungen der amazon intern types kannst du so nicht nutzen

- ...

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

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

Ma_Bo

Hey Andre,

da hast du natürlich vollkommen recht mit deinen Punkten, aber
ich möchte einfach nur ausprobieren, was man alles machen kann und andere daran teilhaben lassen, wenn etwas auf anderem Wege funktioniert.

Grüße Marcel
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.