Hallo, ich komme aus der Entwicklung Analog- Digitalelektrink
Mikroprozessor Hard und Software.
Ich habe meiner Frau zu ihrem Geburtstag ihren grössten Wunsch erfüllt
und ihr eine "Alexa" geschenkt.
Das Ding ist ganz witzig und hat in mir den Wunsch geweckt, mehr damit
zu machen.
Mein Ziel: Selbst entwickelte Elektronik mit Alexa oä steuern und zwar
mit mehr als Licht an / Licht aus.
Habe so nebenher zu meinem Job das Aufkommen von Arduion und Co
mitverfolgt, mich aber nie tiefer damit befasst.
Daher meine Frage:
Gibt es Literatur, Links oder Was auch immer, das erlaubt, sich
professionell in das Thema "smart devices" incl. Arduino, Raspberry usw
einzuarbeiten?
Hab mir die Skill-Programmierung schon mal angesehen.
Programmiererfreundlich ist das nicht gerade :-(
Ich möchte eben genau eine Skillprogrammierung umgehen. Die
Funktionalität sollte auch nicht irgendwo in den Servern von Amazon
stecken, sondern in meiner Eigenentwicklung.
Wenn ich eine Lampe mit Alexa steuern will, muss ich auch nicht extra
einen Skill aufrufen. Alexa erkennt die Lampe und dann müssen beide über
irgend ein Protokoll Infos austauschen.
So habe ich mir das auch mit einer Eigentwicklung vorgestellt. Alexa
erkennt mein Gerät, die sprechen miteinander und Alexa leitet dann nur
plain die erkannten Sprachbefehle an mein Gerät weiter.
Ich suche nach einer Möglichkeit, mich in die gesamte Materie "smart
devices" oder wie auch immer man diesen ganzen Komplex bezeichnet,
einzuarbeiten um die Fragen: Wer kommuniziert über welche Protokole mit
wem usw zu klären. Skills sind ja nur ein Sub-Thema von dem ganzen
Komplex.
Protolus schrieb:> Die Funktionalität sollte auch nicht irgendwo in den Servern von Amazon> stecken, sondern in meiner Eigenentwicklung.
Dann musst du aber auch die gesamte Erkennung der Sprachbefehle selbst
programmieren und auch Alexa selbst umprogrammieren. Oder zumindest den
Fluss der Information vom Echo-Dot zu den Servern auf deinen eigenen
Server umbiegen.
Denn das Echo-Dot hat nur genug Intelligenz, um den Sprachbefehl wie
"Alexa!" oder "Computer!" oder sonst was zu erkennen. Der Rest wird in
der Cloud analysiert und dekodiert. Das Ergebnis von "Licht 1 an" wird
dann aus der Cloud wieder an die dumme Alexa geschickt - die ist nur das
ausführende Organ. Die Intelligenz sitzt in der Cloud. Und eben diese
müsstest du dann nachbauen.
Viel Spaß.
Du bist nicht der erste hier, der sowas bauen will.
Protolus schrieb:> Hab mir die Skill-Programmierung schon mal angesehen.> Programmiererfreundlich ist das nicht gerade :-(> Ich möchte eben genau eine Skillprogrammierung umgehen.
Dann kannst du auch keine Alexa für deine Zwecke nutzen. Alexa wird mit
Skills um Funktionalitäten erweitert. Damit kann Alexa dann eine
Eigenentwicklung von dir Steuern.
> Die> Funktionalität sollte auch nicht irgendwo in den Servern von Amazon> stecken, sondern in meiner Eigenentwicklung.
Alexa steckt nun mal in den Servern von Amazon. Wenn du selbst
Spracherkennung machen willst und das auch noch lokal, dann reden wir
von einer ganz anderen Hausnummer. Abgesehen davon dass du an das Alexa
Niveau nicht rankommen wirst.
> Wenn ich eine Lampe mit Alexa steuern will, muss ich auch nicht extra> einen Skill aufrufen. Alexa erkennt die Lampe und dann müssen beide über> irgend ein Protokoll Infos austauschen.
Den Skill musst du nicht aufrufen, aber Alexa hat den Skill bereits
geladen. z.B. um, HUE Leuchten zu steuern, braucht es den HUE Skill.
Alexa erkennt dann die Sprachbefehle die spezifisch für HUE leuchte sind
und der Skill weiß wie er mit der HUE Bridge reden muss.
> So habe ich mir das auch mit einer Eigentwicklung vorgestellt. Alexa> erkennt mein Gerät, die sprechen miteinander und Alexa leitet dann nur> plain die erkannten Sprachbefehle an mein Gerät weiter.
-> SKILL
Genau damit geht das. Und nur so.
Nur du musst die Befehle definieren. Nicht andersrum.
Evt. informierst du dich erstmal wie das grundsätzlich funktioniert und
übelegst dann weiter. Du gehst grade von komischen Annahmen aus.
Naja, es gibt eine Alternative.
https://www.audeme.com/movi.html
Damit geht es ohne Alexa, und für normale Geräte reicht das. Vorteil :
Keine Spionage. ;)
Schlaumaier schrieb:> und für normale Geräte reicht das
Ist halt die Frage was das heißt. Will man auf eine
Spracherkennungsqualität von 2001 zurück? Oder will man die beste
Spracherkennung die derzeit möglich ist?
Wenn ich zuhause alltägliche Dinge per Sprache steuere, weiß ich was ich
da wählen würde.
Ich bin etwas irritiert über Vorschläge wie "du musst die Amazon Cloud
nachbauen" etc.
Im Prinzip musst du, wenn du ein Gerät per Alexa steuern willst, ein
Gerät bauen was die Alexa-Schnittstelle implementiert und dadurch von
Alexa als Schalter, Lampe oder sonstwas erkannt wird.
Oder du greifst auf ein bestehendes Framework zurück und konzentrierst
dich auf die eigentliche Aufgabe.
Beispiel:
Ich habe daheim ioBroker als Automatisierungssoftware im Einsatz.
Dort hab ich mir ein Gerät, Typ Schalter angelegt was sinngemäß
"Raspberry" heißt. Alexa findet diesen Schalter und ich kann damit einen
Raspberry ein- und ausschalten.
Ganz ohne Skills oder Cloud-Nachbauten.
Das interessante daran:
Dieses "Gerät" existiert in Wahrheit garnicht sondern nur virtuell.
Wird der "Schalter" betätigt rennt ein Skript los welches die Steckdose,
an der der Pi hängt anschaltet, wartet bis er hochgefahrne ist und ihn
dann mit Kommandos bespaßt.
Wird der "Schalter" nochmal betätigt wird der Pi runtergefahren, nochmal
gegenprüft und anschließend die Steckdose wieder abgeschalten.
Hinter dem "Schalter" steckt also eine etwas komplexere Logik.
Auf diese Art kann ich alles mögliche Skripten, Alexa startet dann nur
noch das Skript (von dem "sie" "denkt" es sei ein Schalter).
Le X. schrieb:> Ich habe daheim ioBroker als Automatisierungssoftware im Einsatz.> Dort hab ich mir ein Gerät, Typ Schalter angelegt was sinngemäß> "Raspberry" heißt. Alexa findet diesen Schalter und ich kann damit einen> Raspberry ein- und ausschalten.
Wie soll Alexa mit diesem IO Broker ohne SKILL kommunizieren? Evt. ist
der Skill eben schon defaultmäßig geladen.
Wie handhabst du Custom Kommandos für Alexa mit diesem ioBroker System?
Also was musst du zur Alexa sagen damit sie dort was tut?
Und du vergisst eine Anforderung des TO:
> Die Funktionalität sollte auch nicht irgendwo in den Servern von Amazon> stecken
Das ist so nicht möglich.
Cyblord -. schrieb:>> Die Funktionalität sollte auch nicht irgendwo in den Servern von Amazon>> stecken>> Das ist so nicht möglich.
Jein.
Es stimm,t die Spracherkennung läuft grundsätzlich auf Amazon-Server,
das lässt sich nicht ändern und wenn das ein No-Go ist kann man Alexa
nicht verwenden.
Die eigentliche Logik läuft aber in meinem Netz und kann auch ohne Alexa
auf mehrere Arten getriggert werden.
Genauso wie Amazon nicht sieht was der "Schalterdruck" eigentlich alles
auslöst.
Ob das für den TO reicht?
Keine Ahnung, muss er beurteilen.
Einen Denkanstoß hat er von mir gekriegt.
Le X. schrieb:> Die eigentliche Logik läuft aber in meinem Netz und kann auch ohne Alexa> auf mehrere Arten getriggert werden.> Genauso wie Amazon nicht sieht was der "Schalterdruck" eigentlich alles> auslöst.
Naja das sollte klar sein. Grundsätzlich lässt sich jede Custom HW im
Haus mit Alexa steuern. Die hat natürlich nichts mit Amazon zu tun.
Das sind dann aber x verschiedene skills die man für verschiedene Geräte
braucht, mit ioBroker ist es einer. Ich schreibe ‚Dekolampe ein‘ in den
ioBroker Adapter und welche Variable gesetzt werden soll. Und das kann
dann alles sein was der ioBroker ansteuern kann.
Johannes S. schrieb:> Das sind dann aber x verschiedene skills die man für verschiedene Geräte> braucht, mit ioBroker ist es einer. Ich schreibe ‚Dekolampe ein‘ in den> ioBroker Adapter und welche Variable gesetzt werden soll. Und das kann> dann alles sein was der ioBroker ansteuern kann.
Najo klar. Das ist halt ein Skill extra für Custom Hardware und
Entwicklungen. Der selbst wiederum anpassbar ist.
Ändert aber am Konzept nichts: Ein Skill wird benötigt. So oder so.
batman schrieb:> Kann man nicht einfach auf den Lichtschalter drücken?
Kann man. Aber meine Lichtschalter reden auch nur mit der HUE Bridge und
die schaltet die Lampen. Also ist es egal ob Alexa mit der Bridge redet
oder mein Lichtschalter oder meine App.
Falls du einen so richtig hart verdrahteten Lichtschalter meinst: Das
20. Jahrhundert ist vorbei.
>> Die Funktionalität sollte auch nicht irgendwo in den Servern von Amazon>> stecken, sondern in meiner Eigenentwicklung.
Mit Funktionalität meinte ich nicht die Spracherkennung. Aber um die
gehts mir. "Alexa, Siri und Co" repräsentieren nun mal die momentan
beste Spracherkennung.
Wenn es eine frei verfügbare .dll zur Spracherkennung mit annähernd
gleich guter Qualität wie Alexa gäbe, könnte ich auf Alexa verzichten.
Dann würde ich meine Geräte damit tseuern. Ein freies, vernünftiges
Spracherkennungs .dll hab ich aber leider noch nicht gefunden.
Wie schon gesagt, ich habe mich biher nur am Rand mit Alexa und Co,
smart devices usw beschäftig. Daher gehe ich wahrscheinlich auch von
falschen Vorausetzungen aus.
Ich würde mich ja gerne tiefer in das Thema einarbeiten. Und das war
meine ursprüngliche Frage: Wo gibts vernünftige Literatu, Links usw?
Protolus schrieb:> Ich würde mich ja gerne tiefer in das Thema einarbeiten. Und das war> meine ursprüngliche Frage: Wo gibts vernünftige Literatu, Links usw?
Die offizielle Alexa-Developer-Webseite von Amazon dürfte da mit der
beste Anlaufpunkt sein:
https://developer.amazon.com/en-US/docs/alexa/
Die Dokumentation dort ist ausführlich, und es gibt diverse
Schritt-für-Schritt-Tutorials, z.B. um in wenigen Minuten einen
einfachen "Hello World"-Skill umzusetzen.
Aber vielleicht sagst Du lieber mal, was genau Du eigentlich vorhast. Je
nachdem, was Du konkret vorhast, ist es nämlich gar nicht nötig, Dich
mit der Entwicklung eigener Skills herumzuschlagen.
Falls Du irgendwas kommerzielles anbieten willst, dann wirst Du da
vermutlich nicht drum herum kommen. Dann musst Du normalerweise Deinen
eigenen, im Internet per HTTPS erreichbaren Webserver betreiben, den
Amazon bei jedem Sprachkommando kontaktiert, oder Du verwendest
alternativ das kostenpflichtige AWS Lambda, wofür bspw. eine Kreditkarte
erforderlich ist. Falls Dein Skill Smart Home-Funktionalität haben soll
(Was stark vereinfacht gesagt bedeutet, dass Du so etwas sagen kannst
wie "Alexa, schalte die Lampe an!", statt eine umständlichere
Formulierung wie "Alexa, sage Skill XY, dass die Lampe angeschaltet
werden soll!" verwenden zu müssen), brauchst Du so oder so AWS Lambda.
Falls es Dir aber nur darum geht, in Deinem eigenen Haushalt ein paar
Geräte per Sprache zu steuern oder so, dann gibt es viel einfachere
Möglichkeiten. Dann musst Du keinen eigenen Skill entwickeln und den
damit verbundenen Aufwand betreiben.
Wie ich schon geschrieben habe, komme ich aus der Entwicklung, habe aber
Arduino und Co nur so am Rande wahrgenommen. Kansst Du Deine Lösung
näher im Detail beschreiben?
Protolus schrieb:> Wenn es eine frei verfügbare .dll zur Spracherkennung mit annähernd> gleich guter Qualität wie Alexa gäbe, könnte ich auf Alexa verzichten.
Du meinst, eine einfache, kostenlose DLL in der Größe von ein paar kB
könnte das, was eine ganze Rechenfarm und eine Unmenge an Mannjahren und
Forschungsprojekten und Patenten bewerkstelligen, ersetzen?
Ich glaube, du stellst dir das ganze ein kleines wenig zu leicht vor.
Muss es denn zwingend Alexa sein?
Auf eine Raspberry Pi ließe sich eine abgespeckte Spracherkennung
bestimmt einrichten. Meinentwegen könnte die auch auf "Alexa" hören. Nur
eben an die Qualität von Amazons Alexa wird das ganze bei weitem nicht
herankommen, fürchte ich.
Joachim S. schrieb:> Aber vielleicht sagst Du lieber mal, was genau Du eigentlich vorhast. Je> nachdem, was Du konkret vorhast, ist es nämlich gar nicht nötig, Dich> mit der Entwicklung eigener Skills herumzuschlagen.
So, wie ich ihn verstanden habe, will er alles das, was in der
Amazon-Cloud passiert (also in erster Linie die Sprachverarbeitung) bei
sich daheim auf einem Arduino (?) oder ähnlichem haben.
Protolus schrieb:> Ich möchte eben genau eine Skillprogrammierung umgehen. Die> Funktionalität sollte auch nicht irgendwo in den Servern von Amazon> stecken, sondern in meiner Eigenentwicklung.Protolus schrieb:>>> Die Funktionalität sollte auch nicht irgendwo in den Servern von Amazon>>> stecken, sondern in meiner Eigenentwicklung.>> Mit Funktionalität meinte ich nicht die Spracherkennung. Aber um die> gehts mir.
Offenbar geht es ihm um die Spracherkennung. Nur eben jene findet in der
Cloud statt, wo dieses hochkomplexe Problem einfach mit einer riesigen
Menge an Rechenleistung beworfen werden kann.
Was da so einfach und reibungslos erscheint ist in Wahrheit nämlich ein
hochkomplexer Prozess.
Hier ist ein wenig Prosa zu der ganzen Thematik.
https://de.cloudflight.io/presse/iot-sprachsteuerung-das-geht-auch-offline-und-sehr-privat-35425/
Man kann sich so eine Rechnerfarm natürlich auch in den Keller stellen -
ersetzt eben die Fußbodenheizung...
Selbst Alexa versteht mich, meine Frau oder Gäste nicht immer sofort.
Dazu kommt das man nicht direkt aus 20 cm in ein Mikrofon spricht,
sondern es kommen noch reichlich Störgeräusche hinzu. Und häufige
Fehlfunktionen werden dazu führen das die Akzeptanz sinkt. Die
Alexa/Siri/HeyGoogle Erkennungsrate wird man kaum mit einem RPi
erreichen.
Johannes S. schrieb:> Selbst Alexa versteht mich, meine Frau oder Gäste nicht immer sofort.
Ich verstehe nicht mal meine Frau, nicht sofort und auch nach ein paar
weiteren Minuten, wie sollte das eine Alexa können?
SCNR
Protolus schrieb:> Wie ich schon geschrieben habe, komme ich aus der Entwicklung, habe aber> Arduino und Co nur so am Rande wahrgenommen. Kansst Du Deine Lösung> näher im Detail beschreiben?
Du hast leider nicht geschrieben, an wen diese Zeilen überhaupt
addressiert sind. Ich vermute jetzt einfach mal, dass Du mich gemeint
hast, weil ich der einzige war, der seit Deinem vorherigen Posting etwas
geschrieben hatte.
Was ich mit dieser einfacheren Lösung gemeint habe:
Mein privates Smart Home-System basiert bspw. auf der Open
Source-Software "Node Red". Und dort ist es bspw. so, dass ein
freundlicher Zeitgenosse aus England einen Dienst anbietet, den man als
Node Red-Benutzer kostenlos nutzen kann, und der die Verwendung von
Alexa für eigene Geräte besonders leicht macht: Man registriert auf
seiner Homepage einen kostenlosen Account, loggt sich ein, und kann dort
die Geräte, die man steuern will, als "virtuelle" Geräte anlegen. Man
gibt jedem Gerät die Bezeichnung, mit der das Gerät in
Alexa-Sprachkommandos referenziert werden soll, und legt noch grob fest,
um was für eine Art von Gerät es sich handelt.
Dann aktiviert man in Alexa den von diesem freundlichen Engländer
entwickelten zugehörigen Skill, startet eine "Gerätesuche" - und
schwupps, schon zeigt Alexa alle virtuellen Geräte, die man eben auf der
Homepage angelegt hat, als vermeintlich echte Geräte an.
Wenn man nun Alexa per Sprachkommando auffordert, dies oder jenes mit
einem dieser virtuellen Geräte zu tun (z.B. "Alexa, setze
Nachttischlampe auf 50%"), dann wird in Node Red eine entsprechende
Nachricht mit allen relevanten Parametern erzeugt (ungefähr so etwas
wie: {"Gerät":"Nachttischlampe", "Aktion":"Helligkeit setzen",
"Wert":0.5}), die man dann entsprechend weiterverarbeiten und
irgendwelche Aktionen auslösen lassen kann.
Für die Smart Home-Software "ioBroker" gibt's offenbar etwas ganz
ähnliches, wenn ich das richtig verstehe, und für wieder andere Smart
Home-Systeme wahrscheinlich ebenfalls.
Oder wenn es bspw. nur darum geht, ein Gerät ein-/auszuschalten, dann
geht es noch einfacher, dann genügt häufig eine günstige WLAN-Steckdose.
Aber das sind alles nur Beispiele - solange Du nicht etwas konkreter
wirst, was Dir so vorschwebt, ist es schwierig, da wirklich gute
Ratschläge zu geben.
und jetzt schrieb:> WAs spricht denn dagegen, Alexa auf den Raspi herunterzuladen ?
Würde das irgend etwas an der cloud-basierten Funktionsweise ändern?
Ohne Entwicklerzugang zum AWS geht gar nichts...
Du musst dich also erst mal als Entwickler anmelden und dann wirst du
von den Möglichkeiten im AWS erschlagen.
Umsonst ist nicht einmal der Tot und Amazon möchte an allen verdienen.
Irrend einer zahlt, auch bei HUE und Trittbrettlösungen funktionieren
nur mit alten Geräten.
Die Sache ist an sich nicht sehr kompliziert, Geräte per MQTT etc. ins
AWS anzubinden. Im ersten Jahr fallen auch keine Kosten an und danach
sind die kosten für 10 Geräte z.Bsp lächerlich (ein paar Cent im Monat).
Summiert sich aber wenn du deinen Skill veröffentlichst und auch noch
unüberlegt die Firmware teilst.
Still wurde es ;) Nunja der Einsieg ist relativ leicht, denn es gibt
viele Anleitungen im Netz. An dem man sich aber auch die Beine ausreißen
kann... Amazon selbst Dokumentiert die API schlecht oder sie ist schon
zu alt.
Zumal muss man ein paar Amazon Eigenheiten in kauf nehmen, z.Bsp. bei
MQTT welche so gestrickt wurde das man maximal daran verdienen kann.
Das speichern der Zustände funktioniert über Schattengeräte und nicht
über das MQTT Protokoll. Wie soll es auch sein das jede Änderung der
Schatten $ auslöst.
Mein Zeug läuft seit 3 Jahren ohne Probleme, wie ich bereits erwähnte
kostet mich der Spaß ein paar Cent im Monat. Die Möglichkeiten sind
enorm und es lohnt sich das kostenlose Jahr umfangreich zu nutzen.
Klaus schrieb:> Wemo bzw. Hue Emulation geht doch ohne "Cloud" oder "Skill"!?
Ja, aber das sind m.W.n. aber auch genau die beiden Ausnahmen, die es
gibt. Ich glaube, deren direkt in Alexa integrierte Unterstützung hat
historische Gründe.
Man kann die in Alexa integrierte Unterstützung von Hue und WeMo unter
Umständen ausnutzen, indem man ein Smart Home Device so programmiert,
dass es sich gegenüber Alexa als WeMo-Plug oder Hue Bridge ausgibt.
Ein solches Gerät, ist aus Sicht von Alexa dann aber halt eine (Hue)
Lampe bzw. eine (WeMo) Steckdose, und man kann solche Geräte dann nur
mit solchen Sprachkommandos steuern, die für eine Lampe bzw. Steckdose
Sinn machen: Einschalten, Ausschalten und im Falle der Hue-Emulation
vermutlich noch dimmen.
Wenn das zu steuernde Smart Home Device zum einen netzwerkbasiert ist
und zum anderen diese 2-3 Aktionen (Einschalten/Ausschalten/Dimmen)
ausreichen, dann ist Hue/WeMo-Emulation eine Option. Es ist keine
Option, wenn das zu steuernde Gerät bspw. ein Türöffner ist, denn ein
Sprachkommando wie "Alexa, öffne XY" macht bei einer Lampe bzw.
Steckdose keinen Sinn.
Von daher ist es schwer pauschale Aussagen zu treffen ohne zu wissen,
was genau jemand eigentlich vorhat.
Hier gibt es eine kleine Übersicht verschiedener Möglichkeiten, wie
Geräte Alexa-fähig werden können:
https://developer.amazon.com/de-DE/alexa/devices/connected-devices/development-resources#development-options