Hab das Strickmuster von einem Alexa Custom Skill so halbwegs verstanden
das ist am Ende signifikant besser geeignet als ein SmartHomeSKill, zumal verschiedene Aussprachvarianten benannt werden können
vor allem auch was die Verständigung angeht / Erkennen von Intens (Absichten, Wünsche, was Alexa machen soll)
man benötigt 2 Dinge :
einen Skill ( mit der Amazon developer Consoler)
eine Lambda Funktion welches als Endpoint dient
beide sind per Amazon id miteinander verlinkt
also der SKill bekommt die Nummer von der Lambda Funktion
die Lambdafunktion bekommt umgekehrt die id vom zugehörigen SKill
beide Codes kann ich bereitstellen ( muss man dann in den skil und den Lambda Editor reinkopieren), die beiden ids miteinander verlinken , in der Lambda Funktion noch den Trigger auf Skills Kit stellen
wer also bereits Developer Account und AWS account hat , für den sollte das recht simple sein
das wäre aktuell möglich :
Invocation name : puhl Steuerung ( geschriebener Name : pool Steuerung versteht das ding nicht)
aber dennoch "öffne pool Steuerung" ausgesprochen
Invocation Name kann man auch ändern ( im Skill), "meine Steuerung", "mein Puhl menue" .....
muss man halt ausprobieren
verschiedene Aussprache Samples
der Wert in den geschweiften Klammern ( weiter unten bei den Beispielen) ist der sogenannte Slot , dort sind Aussprachevarianten hinterlegt ( das macht man alles in der Developer Console)
also etwa :
chlor, klohr, klor, redox, ph minus, ph plus,
oder
puhltemperatur, pool, puhl, wasser,aussen Rücklauf, messzelle,...
das kann man in der Amazon developer Console im Skill beliebig erweitern
neue Namen / Aussprachen für das Gewünschte definieren
vielleicht auch
" Bro, schmeiss mal die Pumpe an" ( um die filterpumpe auf manuell on zu stellen)
oder
"schalt das verdammte Ding aus " , wenn man möchte das die Filterpumpe auch mit "Ding" angesprochen werden soll
meist ist ein fixer Index für verschiedene Aussprachen vorgesehen
Dieser Index wird am Ende dazu verwendet bei verschiedenen Aussprachen dennoch den gleichen Relaisindex / Sensorindex zu treffen
egal wie man das am Ende ausgesprochen hat ( pumpe, filterpumpe, Ding, ...) ist am Ende Index 0 , weil Relais 0 i.d.R: die Filterpumpe ansteuer
da muss man also selber gucken, bei allem was dieFilterpumpe betrifft , ist es das 1. Relais ? oder ist die Filterpumpe an Relais 2 , dann muss als Index eine 1 statt einer 0 dahin
Alexa ordnet die erkannten / zulässigen Namen dem Slot zu ( mit genau einem Index)
sobald der gesamte Intent vollständig ist , wird die Lambda Funktion im AWS aufgerufen
wenn was fehlt, fragt Alexa nach ( bzw man gibt die Nachfragetexte selber vor um alle Slots des Intents zu füllen)
AWS Lambda besorgt dann am Ende den Rest , kommuniziert mit dem Controller und schafft alles herbei oder sorgt für die gewünschten Aktionen
der Ausgabetext wird in der Lambda Funktion vorbereitet und am Ende als Sprachausgabe zum Alexagerät zurückgeschickt, die Büchse plappert das dann nur noch nach
die Lambda Funktion ist erstmal soweit fertig, bischen Fehlerbehandlung fehlt noch , Aussnahmebehandlung usw
was man dort eintragen muss sind Name / Passwort und Controller URL
mehr ist da nicht zu tun, bzw man kann auch ein paar Texte ändern, wenn die einem nicht gefallen
im Skill ( Alexa Developer Consoler) konfiguriert man alle Intents, Rückfragem, mögliche Aussprachewerte usw
oder nimmt erstmal das was ich für mich identifiziert habe ( JSON Datei reinkopieren)
wenn sich das Alexa Teil mal verschluckt, bei irgendeiner unbekannten Aussprache / Formulierung könnte man den Satz auch als Ausspracheoption mit aufnehmen
damit beim nächstenmal klarer ist was zu tun ist
aktuell gibts sowas :
manuelle Dosierung starten:
"{chemie} dosieren",
"{chemie} fuer {dauer} minuten",
"dosiere {dauer} minuten {chemie}",
"{chemie} fuer {dauer} minuten",
"dosiere {chemie} fuer {dauer} minuten"
manuelle Dosierung starten:
"stoppe {chemie} dosierung",
"{chemie} dosierung anhalten",
"{chemie} dosierung abbrechen",
"stopp {chemie} dosierung"
Abfrage Temperatursensoren:
"wie warm ist das {tempSensor}",
"wie warm ist der {tempSensor}",
"wie warm ist es {tempSensor}",
"wie warm ist die {tempSensor}"
Abfrage Elektrodenwerte:
"wo steht {elektrode}",
"wie hoch ist der {elektrode} wert",
"wie ist der {elektrode} wert"
Abfrage Relaiszust#nde:
"wie ist der status von {relais} ",
"wie ist der status vom {relais} ",
"wie ist der status von der {relais} ",
"wie ist der {relais} status"
Setze Relaiszustände:
"schalt {relais} {relaisMode}",
"stell {relais} {relaisMode}",
"setze {relais} {relaisMode}",
"stell {relais} auf {relaisMode}"
Abfrage Kanisterinhalte:
"wieviel ist noch im kanister",
"wieviel ist im kanister",
"wieviel ist im {chemie} kanister",
"wieviel ist noch im {chemie} kanister"
Abfrage analog Inputs:
"wie hoch ist die {analog}",
"wie hoch ist der {analog}",
"welchen wert hat der {analog} ",
"wie hoch ist der Wert vom {analog}"
wens interessiert , meldet sich einfach
gruß
Frank