Raspberry Pi, Arduino und ESP kontrollieren
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Walter Trojan LEARN DESIGN SHARE
SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHA N ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHA
Sprachsteuerung von IoT-Projekten mit Amazon Alexa â—? Walter Trojan
LEARN DESIGN SHARE
●
© 2019: Elektor Verlag GmbH, Aachen.
●
Alle Rechte vorbehalten.
1. Auflage 2019
Die in diesem Buch veröffentlichten Beiträge, insbesondere alle Aufsätze und Artikel sowie alle Entwürfe, Pläne, Zeichnungen und Illustrationen sind urheberrechtlich geschützt. Ihre auch auszugsweise Vervielfältigung und Verbreitung ist grundsätzlich nur mit vorheriger schriftlicher Zustimmung des Herausgebers gestattet. Die Informationen im vorliegenden Buch werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht. Die in diesem Buch erwähnten Soft- und Hardwarebezeichnungen können auch dann eingetragene Warenzeichen sein, wenn darauf nicht besonders hingewiesen wird. Sie gehören dem jeweiligen Warenzeicheninhaber und unterliegen gesetzlichen Bestimmungen. Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen. Trotzdem können Fehler nicht vollständig ausgeschlossen werden. Verlag, Herausgeber und Autor können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Für die Mitteilung eventueller Fehler sind Verlag und Autor dankbar.
●
Erklärung
Der Autor und der Herausgeber dieses Buches haben alle Anstrengungen unternommen, um die Richtigkeit der in diesem Buch enthaltenen Informationen sicherzustellen. Sie übernehmen keine Haftung für Verluste oder Schäden, die durch Fehler oder Auslassungen in diesem Buch verursacht werden, unabhängig davon, ob diese Fehler oder Auslassungen auf Fahrlässigkeit, Unfall oder andere Ursachen zurückzuführen sind. Umschlaggestaltung: Elektor, Aachen Satz und Aufmachung: D-Vision, Julian van den Berg | Oss (NL) Druck: WILCO, Amersfoort, Niederlande Printed in the Netherlands
●
ISBN 978-3-89576-340-3
Elektor-Verlag GmbH, Aachen www.elektor.de
Elektor ist Teil der Unternehmensgruppe Elektor International Media (EIM), der weltweit wichtigsten Quelle für technische Informationen und Elektronik-Produkte für Ingenieure und Elektronik-Entwickler und für Firmen, die diese Fachleute beschäftigen. Das internationale Team von Elektor entwickelt Tag für Tag hochwertige Inhalte für Entwickler und DIY-Elektroniker, die über verschiedene Medien (Magazine, Videos, digitale Medien sowie Social Media) in zahlreichen Sprachen verbreitet werden. www.elektor.de
LEARN DESIGN SHARE
Inhalt Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Die Sprachsteuerung setzt sich durch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Der Dank des Autors geht an: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Kapitel 1 • Sprachassistenten setzen sich durch . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Entwicklung und Nutzen der Sprachassistenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Verfügbare Systeme im Vergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Kapitel 2 • Alexa intern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Aufbau Amazon Echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Voraussetzung für die Kommunikation mit Alexa: die Spracherkennung . . . . . . . . . . . 25 Wie sicher ist Alexa? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Vertrauen ist gut, Kontrolle ist besser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Verlauf einsehen und löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Links: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Kapitel 3 • Der erste Alexa-Skill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Die Alexa Skill-Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Aufruf eines Custom Skill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Einrichtung Alexa Developer Account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Einrichtung AWS Account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Skill-Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Sprach-Design mit Alexa Skills Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Entwicklung Serviceroutine mit AWS Lambda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Skill Test mit Alexa Skills Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Links: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Kapitel 4 • Alexa-Skills für Fortgeschrittene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Vereinfachung durch Slots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Der Skill myTestSlot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Lambda-Serviceroutine myTestSlot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Das Alexa SDK für JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Interaktive Skills . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Alexa hat ein Gedächtnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
●5
Sprachsteuerung von IoT-Projekten mit Amazon Alexa Zugriffe der Lambda-Funktion erweitern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Alexa surft im Netz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Openweathermap [L4_5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Astronauten im All [L4_6] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Numbersapi [L4_7] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Befehle der Node.js-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Skill mySucheNetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Debug-Hilfen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Die Lambda Test-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Der Skillinator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Alexa kann auch in Französisch flüstern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Alexa-Skill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Lambda-Serviceroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Kapitel 5 • Alexa steuert Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Zielsetzung und Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Phasenplan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Phase 1: Einrichtung Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Phase 2: Alexa schaltet LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Phase 3: Alexa misst die Temperatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Kapitel 6: Auch Alexa liebt die Arduino IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Installation Aduino-IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Einrichtung Pubnub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Alexa steuert einen Roboterkopf mit ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Alexa-Skill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Lambda-Servicefunktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Firmware in C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Abschluss-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
●6
Inhalt Heizungsdaten im Griff dank Alexa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 AWS Lambda-Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 ESP32-Client entwickelt mit der Arduino-IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Die Messeinheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Zusammenfassung und Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Alexa spielt mit Licht auf einem Arduino Uno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Implementation Schritt-für-Schritt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Kapitel 7: Hacks mit Schaltern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Kapitel 7.1: Schneller Erfolg mit Wemo-Emulation . . . . . . . . . . . . . . . . . . . . . . . . . 258 Wemo-Emulation auf dem ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Links: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Kapitel 7.2: Sonoff-Schalter mit Alexa steuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Links: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Kapitel 7.3: Sonoff-Schalter mit Tasmota einbinden . . . . . . . . . . . . . . . . . . . . . . . . 273 Der Atom-Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Die PlatformIO-Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Vorbereitung der Tasmota-Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Upload und Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Alexa-Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Links: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Kapitel 8: Alexa steuert ein Gartenhaus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Zielsetzung und Projektüberblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Entwicklung Alexa-Skill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Einrichtung Thing bei AWS IoT Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 Entwicklung der Lambda-Serviceroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Test der AWS-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Modulare Node-RED-Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Node-RED Schritt 1: Entwicklung Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Node-RED Schritt 2: Entwicklung Dashboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 Hard- und Software Gartenhaus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
●7
Sprachsteuerung von IoT-Projekten mit Amazon Alexa Node-RED Schritt 3: Entwicklung Realbetrieb . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Links: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Kapitel 9 • Auch Roboter gehorchen Alexa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Skill-Entwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Lambda-Serviceroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 Roboter-Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 Roboter-Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Kapitel 10 • Alexa geht fremd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 10.1: Alexa auf Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Überspielen und Installation der Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Links: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 10.2: Alexa auf ESP32 LyraTD MSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 Installation Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 10.3: Alexa auf MATRIX Voice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 Installation der MATRIX-Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 Registrierung des MATRIX Voice bei Amazon Voice Service . . . . . . . . . . . . . . . . . 394 Installation Alexa SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Erfahrungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 Links: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 10.4: Alexa auf ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Erzeugung Alexa-Token . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 Installation der Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 Links: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 Epilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
●8
Vorwort
Vorwort Die Sprachsteuerung setzt sich durch Zurzeit findet eine rasante Durchdringung der Sprachsteuerung in viele Lebensbereiche statt. Mobiltelefone, Autos, Haushaltsgeräte, die Hausautomation, Unterhaltungselektronik und vieles mehr sind bereits mit den Sprachassistenten Siri, Alexa, Cortana oder Google Assistant ausgestattet. Der Erfolg ist u.a. damit begründbar, dass eine Sprachkommunikation erheblich schneller und leichter zu bewerkstelligen ist als schriftliche Anweisungen. Zudem haben die Verbesserungen der Spracherkennung dazu geführt, dass mittlerweile Computer die menschliche Sprache genauso gut wie Menschen verstehen. Über dieses Buch Dieses Buch öffnet Ihnen einen Blick hinter die Kulissen auf die Technik der Sprachsteuerung am Beispiel von Amazon Alexa. Es soll zeigen, wie man eigene Produkte und Entwicklungen mit einem Sprachassistenten verbindet. Dieses geschieht anhand von Beispielen aus den Bereichen Hausautomation und Robotik auf bekannten Plattformen wie Raspberry Pi, ESP8266/32 und Arduino. Sie werden kennenlernen, wie man Heizkessel, Roboter und Gartenhäuser kommandieren kann, und dabei feststellen, dass sich die Schwierigkeiten in Grenzen halten und sogar Entwicklerfreude aufkommt. Dabei tauchen Sie auch ein in die vielschichtige Welt der Amazon Web Services und lernen dort neben dem Alexa Skills Kit Module wie AWS Lambda, IoT Core und andere kennen. Und diese Kapitel warten auf Sie: Kapitel 1: Sprachassistenten setzen sich durch Zuerst einmal ein Blick auf Markt und Wettbewerb. Im Überblick stellen sich die etablierten Sprachassistenten vor, wobei deren Installationszahlen eine stark wachsende Verbreitung aufzeigen. Zum Start mit Alexa gibt es noch einige Installationshinweise und beispielhafte Sprachanweisungen für einige Lebensbereiche. Kapitel 2: Alexa intern In diesem Kapitel werden der äußere und innere Aufbau der Alexa-Boxen vorgestellt. Dabei zeigt sich, dass für die Aufnahme der Anweisungen und Wiedergabe der Antworten ein leistungsfähiger Mikrocomputer auf dem Niveau des Raspberry Pi erforderlich ist. Da die Basis für die Kommunikation mit Alexa die Spracherkennung ist, erfolgt hier eine kurze Vorstellung der angewandten Methodik. Sicherheitsaspekte gehören im Zusammenhang mit Alexa zu den heiß diskutierten Themen, die auch hier nicht zu kurz kommen. Kapitel 3: Der erste Alexa-Skill Nun wird es Zeit für den ersten Alexa-Skill. Dafür sind vorab die notwendigen Amazon-Konten für das Developer-Portal und die Amazon Web Services einzurichten. Dann wird mittels Alexa Skills Kit ein erster einfacher Skill entwickelt, unterstützt von einer in JavaScript programmierten Serviceroutine bei AWS Lambda. Abschließend erfolgt ein Test der Entwicklung mittels Dialog-Simulator. Ein erstes Erfolgserlebnis in der Alexa-Welt!
●9
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Kapitel 4: Alexa Skills für Fortgeschrittene Dieses Kapitel zeigt einige Entwicklungstechniken für Fortgeschrittene. Das sind zum einen die Slots, die den Skills einige bereits vordefinierte Eingaben wie Zahlen, Orte, Datum oder selbstdefinierte Parameter zugänglich machen. Zum anderen wird gezeigt, wie man mit Alexa im Dialog kommunizieren kann. Dass sich Alexa an vorhergegangene Dialoge mittels Gedächtnis erinnern kann oder sich bei Bedarf aktuelle Zusatzinformationen aus dem Internet holt, ist sicher für manche Entwicklungen von Nutzen. Soll Alexa mit Akzent sprechen oder eine fremdsprachliche Passage eingeschoben werden, sind entsprechende Werkzeuge nutzbar. Das gilt auch für die Beseitigung von Fehlern und die gründlichen Tests der Skills. Kapitel 5: Erster Hardware-Skill auf Raspberry Pi Jetzt geht es endlich los mit der Steuerung eigener Elektronik durch Alexa. Basis dafür ist ein Raspberry Pi, der per Sprachkommando vier LEDs schalten soll. Das hört sich zwar trivial an, führt aber zur Vorstellung einiger Module wie dem Kommunikationsprotokoll MQTT (Message Queuing Telematic Transport), dem grafischen Entwicklungssystem Node-RED und von zusätzlichen AWS-Modulen. Da gibt es viel Neues zu entdecken. Kapitel 6: Auch Alexa liebt die Arduino-IDE Viele Leser lieben und benutzen die Arduino-IDE, auch Alexa lässt diese im Hintergrund für sich arbeiten. Im ersten Projekt wird ein einfacher Roboterkopf von Alexa kommandiert, wobei die Firmware für den steuernden Chip ESP8266 mit der Arduino-IDE entwickelt wurde. Diese wird auch beim nächsten Projekt eingesetzt, allerdings für einen ESP32, der einen Heizkessel überwacht und interessante Auswertungen für Alexa bereithält. Selbst ein einfacher Arduino Uno ist mit seinen begrenzten Ressourcen sprachsteuerbar, er kann auf Anweisung von Alexa eine Lichtshow, Verkehrsampel und Laufschrift produzieren. Kapitel 7: Hacks mit Schaltern Eine Einbindung der eigenen Elektronik ist auch ohne Skill-Programmierung möglich, nämlich durch die Emulation bereits vorhandener Skills. Mittels Wemo-Emulation erfolgt in diesem Kapitel eine LED-Steuerung auf ESP8266/ESP32-Boards lediglich durch den Einsatz einer kleinen C++-Routine. Ganz ohne Programmierung ist die Einbindung von marktgängigen Geräten unter Nutzung der Hersteller-Applikationen realisierbar. Dieses wird mit der Einbindung von Sonoff-Schaltern demonstriert. Dabei kommen auch die erweiterte Firmware "Tasmota" und ein leistungsstarkes Entwicklungssystem namens "Atom" zum Einsatz. Kapitel 8: Alexa steuert ein Gartenhaus Ein schönes Modell für eine Projektstudie stellt ein kleines Modell-Gartenhaus dar. Bei diesem sind die Innentemperatur und die Ventilation mittels Sprachkommandos einstellbar sowie die aktuellen Betriebsparameter wie Innen- und Pflanzenfeuchte, Innen- und Außentemperaturen, abrufbar. Als Hardware werden hierbei ein Raspberry Pi und zwei ESP8266 eingesetzt, die Software ist komfortabel mit Node-RED erstellt. Falls das Modell nicht nachgebaut wird, kann die Anwendung mittels Simulator betrieben und getestet werden.
● 10
Vorwort
Kapitel 9: Auch Roboter gehorchen Alexa Eine Herausforderung für Alexa ist die Steuerung eines schnellen Fahrroboters. Hierbei zeigt sich, dass ein ESP32 auch bei Einsatz der Arduino-IDE Interrupts und Multitasking beherrscht. Besondere Anforderungen waren die Reglungen für Geradeaus- und Kurvenfahrt bei gleichzeitiger Vermeidung von Kollisionen. Und das alles bei blockierendem Empfang der Alexa-Kommandos. Lesen Sie selbst, ob das geklappt hat. Kapitel 10: Alexa geht fremd Bei allen bisherigen Projekten residierte Alexa in handelsüblichen Echo-Boxen. Sie fühlt sich allerdings auch auf alternativen Plattformen wohl, wie Installationen auf dem Raspberry Pi, auf Matrix Voice, ESP32 Lyra MSC und ESP32 zeigen. Ziel dieser Installationen war primär die Möglichkeit, mit Alexa zu experimentieren und weitergehende Erfahrungen über die Arbeitsweise von Sprachassistenten zu sammeln. Noch ein Service-Hinweis: Sämtliche Entwicklungen von Skills, Lambda-Routinen, Firmware und Node-RED-Flows sind nach Kapiteln strukturiert im Software-Ordner als Open-Source bereitgestellt. Dieser Ordner ist vom Elektor-Projektserver unter www.elektor.de/ iot-mit-alexa abrufbar. Der Dank des Autors geht an: Auch bei diesem Buch hat mich mein Lektor, Herr Volker Bombien, mit zahlreichen Anregungen versorgt und meine Motivation stets hochgehalten. Auch dem Team des Elektor Verlags gilt mein bester Dank für Korrekturen, das exzellente Cover und den gesamten Satz des Werks. Dank auch an Amazon für die Erfindung der Sprachassistentin Alexa sowie die Bereitstellung eines kostenlosen Accounts, den Zugriff auf zahlreiche Dienste der AWS-Cloud und die Nutzung der umfangreichen Dokumentation. Auch der Firma Pubnub mit ihrem kostenlosen und flexiblen Kommunikations-Service gilt mein Dank. Basis für die Projekte dieses Buches waren auch die Ingenieurleistungen der Entwickler von Raspberry Pi, den WLAN-Modulen ESP8266/32 und der Arduino-Plattform mit ihren offenen Software-Entwicklungssystemen. Auch die vielen Blogger und Youtuber gehören dazu, die ihr Wissen und ihre Unterstützung selbstlos bereitstellen. Aber ohne den Rückhalt der Familie läuft nichts, meine liebe Frau Hanne hat das Projekt voll und ohne Eifersucht auf Alexa unterstützt und mich immer bestens versorgt. Notwendige Hausreparaturen und Gartenarbeiten durfte ich verschieben. Und meine Enkel haben mich wiederholt aus dem Laborkeller in das reale Leben transportiert und zum Verschnaufen angeregt. Herzlichen Dank an alle! Und nun viel Vergnügen und zahlreiche Erkenntnisse bei der Lektüre dieses Buches.
● 11
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Kapitel 1 • Sprachassistenten setzen sich durch Zurzeit findet eine rasante Durchdringung der Sprachsteuerung in viele Lebensbereiche statt. Mobiltelefone, Autos, Haushaltsgeräte, die Hausautomation, Unterhaltungselektronik und vieles mehr sind bereits mit den Sprachassistenten Siri, Alexa, Cortana oder Google Assistant ausgestattet. Gratuliere, Sie haben sich richtig entschieden, auch die eigenen Projekte mit einer Sprachsteuerung auszustatten und sich das Wissen daüber anzueignen. Denn damit nutzen Sie die stark ansteigende Verbreitung dieser Technik und setzen sich an die Spitze der Innovation. Bevor Lötkolben und Logikanalysator zum Einsatz kommen, soll in diesem Kapitel der Einstieg in die Nutzung der Sprachassistentin Alexa erfolgen, bevor dann in den weiteren Kapiteln die Praxis Einkehr hält. Entwicklung und Nutzen der Sprachassistenten Warum eigentlich Sprachassistenten einsetzen, was bringen die eigentlich und wo kann man sie einsetzen? Viele Menschen haben die Nutzen bereits erkannt und setzen die Sprachsteuerung bereits millionenfach ein. Bereits morgens lassen sie sich freundlich wecken und mit ihrer Lieblingsmusik in den Tag einstimmen. Sie informieren sich über das Tagesgeschehen, lassen sich das Wetter vorhersagen und an den täglichen Terminplan erinnern. Manche erstellen sogar Einkaufslisten und kaufen damit auch ein. Und die Bequemen haben ihre Hausautomation damit ausgestattet und steuern per Ansage Licht, Heizung und Sicherheit ihrer Wohnung. Und ständig werden neue Anwendungsgebiete erschlossen, z.B. sprachgesteuerte Bedienung von Geräten wie Autos, Küchengeräte, Spielsachen, etc. Worin begründet sich dieser rasante Anstieg der Applikationen? Mittlerweile verstehen Computer die menschliche Sprache genau so gut wie die Menschen selbst. Lag die Fehlerquote bei der Erkennung im Jahr 2013 noch bei 23 Prozent, so ist sie heute fast bei Null angekommen. Weitere Einsatzvorteile sind: • Die Hände bleiben frei, man braucht kein zusätzliches Gerät für die Steuerung und die Stimme ist stets verfügbar. • Sprechen geht schneller als schreiben, man spart Zeit und macht keine Schreibfehler. • Die Spracherkennung ermöglicht nicht nur die Eingabe von Kommandos, sondern aufgrund der Diktatfunktion auch die Erfassung von Dokumenten. • Steigerung des Benutzerkomforts bei allen Anwendungen. • Unterstützung von Kranken und Behinderten. Wie überall lassen sich auch Risiken und Nachteile erkennen: • Die Sprachverarbeitung erfordert höhere Systemressourcen, d.h. stärkere Prozessoren, mehr Speicher und schnelle Netze. • Ist in lauten Umgebungen weniger gut geeignet. • Ein limitierter Wortschatz bzw. vordefinierte Befehle führen zu Einschränkungen. • Erfordert manchmal ein Sprachtraining oder die Verbesserung der Aussprache. • Die gesteigerte Komplexität benötigt ggf. einen erhöhten Support.
● 12
Kapitel 1 • Sprachassistenten setzen sich durch
Nach diesen Vorbemerkungen wird nun ein Blick auf verfügbare Produkte geworfen. Verfügbare Systeme im Vergleich Nur die großen Konzerne sind offensichtlich mit milliardenschweren Investitionen in der Lage, Sprachassistenten zu entwickeln und zu vermarkten. Die führenden Systeme sind derzeit Alexa von Amazon, Siri von Apple, Googles Assistant und Cortana von Microsoft. Der nachfolgende gekürzte Vergleich ist einer Studie von Netzwelt [L1_1] entnommen. Amazon Alexa Alexa ist ein vielseitiger Sprachassistent, der sich durch die Skills von der Konkurrenz abhebt. Das sich Alexa so erfolgreich durchgesetzt hat, liegt nicht zuletzt an der guten Funktionalität. Im Grundzustand erhält man Antworten auf einfache Fragen und mit jeder Erweiterung wird Alexa etwas besser. Der volle Funktionsumfang steht aber nur dann zur Verfügung, wenn Alexa auf das Benutzerkonto zugreifen kann. Kalender-, Kontakte- und Musik-Accounts müssen für die volle Assistenzfunktion mit Alexa verknüpft werden. Positiv: • Mit Skills erweiterbar • Zuverlässige Spracherkennung • Sehr gute Smart Home-Integration Negativ: • Einrichtung für alle Funktionen zeitaufwändig • Daten von Nutzerkonten in der Cloud • Keine Funktion ohne Amazon-Account Apple Siri Tief eingebunden. Siri unterscheidet sich nicht groß von anderen Sprachassistenten, hat aber ein Alleinstellungsmerkmal. Da es tief in die Betriebssysteme von Apple eingebunden wurde, ermöglicht es eine barrierefreie Bedienung der entsprechenden Geräte. So weit sind andere Assistenten noch nicht. Positiv: • Echte Freihand-Bedienung • Integration im Betriebssystem • Spracheingabe in jedem Menü möglich Negativ: • Undurchsichtiger Datenschutz • Sehr hellhörig • Nicht kontextsensitiv
● 13
Kapitel 2 • Alexa intern
Kapitel 2 • Alexa intern In diesem Kapitel wird behandelt, welche Elektronik in den Echo-Boxen steckt und wie intelligent sie damit sind. Außerdem finden Sie eine kurze Einführung über die wichtigste Eigenschaft einer Sprachassistentin, die Spracherkennung. Von großer Bedeutung für die Anwender sind auch die Sicherheitsaspekte und die Frage, ob und wie ungewolltes Lauschen vermieden wird. Aufbau Amazon Echo Was steckt in dieser scheinbar alleswissenden "Dose"? Es muss sich doch um einen sehr aktiven Lautsprecher mit beachtlicher Intelligenz handeln. In diesem Abschnitt wird ein Blick in das Gehäuse und auf die eingesetzte Elektronik geworfen. Amazon bietet zwar mehrere Echo-Modelle an, vom Echo Dot bis zum Echo Plus, die aber im Aufbau sehr ähnlich sind und sich im Wesentlichen bei der Musikwiedergabe unterscheiden. Die Höhe der "Dose" ist abhängig vom Modell und bietet demnach unterschiedlich viel Platz für die Akustik.
Abb. 2.1: Aufbau Echo Plus (Quelle: Amazon) Alle Modelle verfügen über einen Lichtring aus mehrfarbigen LEDs zur Anzeige der Aktivitäten. Bei einer Ansprache leuchtet er blau und zeigt mit einer helleren Farbe auf den Sprecher. Und wenn Alexa antwortet, blinkt der Ring im Sekundentakt. Er kann auch andere Farben darstellen, z.B. Orange bei der Einrichtung und Rot bei Störungen oder Nachrichten. Das Top-Modell Echo Plus verfügt über einen Volumenring zur Einstellung der Lautstärke, bei den kleineren Modellen wird diese mit +/- Tasten gesteuert. Mit zusätzlichen Tasten kann das Mikrofon geschaltet bzw. Alexa auch ohne Nennung eines Trigger-Worts aktiviert werden. Unter dem Deckel befinden sich auch die Mikrofone zum Empfang der Sprachkommandos, wobei sechs kreisförmig angeordnet sind und in alle Richtungen lauschen sowie eins in der Deckelmitte aktiv ist.
● 21
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Im mittleren und unteren Teil befinden sich die Lautsprecher, beim Echo Plus und Echo ein Tief-Mittel-Toner ergänzt durch einen Hoch-Toner, während der kleine Echo Dot aus Platzgründen lediglich einen Lautsprecher aufnehmen kann. Trotz der eingeengten Bauweise kann man allen Echo-Modellen eine gute Sprachwiedergabe und eine brauchbare Musikleistung attestieren. Wer die Wiedergabequalität und -Leistung steigern möchte, kann seine HiFi-Anlage über eine 3.5 mm Klinkenbuchse anschließen. Daneben befindet sich die Buchse zur Spannungsversorgung. Und nun ein Blick auf die Elektronik, die der Gehäuseform folgend auf kreisrunden Platinen untergebracht ist. Die Rechner-Einheit beinhaltet einen Kleinrechner mit besonderen Fähigkeiten zur Signalverarbeitung. Die Mikrofon-Einheit enthält auf dem äußeren Kreisring sechs Mikrofone und zwölf mehrfarbige LEDs. Das siebte Mikrofon kann man zentral in der Platinen-Mitte, eingebettet von Elektronik-Bausteinen, erkennen. Der Drehimpuls-Schalter für die Lautstärkereglung wird über ein Zahnrad mit dem Volumenring gekoppelt. Die wesentlichen Bauelemente der beiden Platinen sind nachfolgend aufgeführt.
Rechner-Einheit
Mikrofon-Einheit
Abb. 2.2: Elektronik Amazon Echo (Quelle: www.mejorimagen.eu)
● 22
Kapitel 3 • Der erste Alexa-Skill
Kapitel 3 • Der erste Alexa-Skill In diesem Kapitel geht es endlich mit der ersten Entwicklung eines Alexa-Skills los. Es soll nach altem "Hello World"-Brauch ein recht einfacher Skill sein, an dem sich aber die wesentlichen Entwicklungskomponenten und -schritte gut erkennen lassen. Zuvor stelle ich Ihnen jedoch verschiedene Skill-Typen, die erforderlichen Entwicklungswerkzeuge und die generelle Abwicklung eines Skills vor. Erst danach startet die konkrete Entwicklung. Für die praktische Umsetzung dieser Entwicklung werden folgende Komponenten benötigt: • Gemäß Kapitel 1 eingerichteter Alexa Echo oder Alexa Dot • PC mit Windows-, Linux- oder iOS-Betriebssystem mit Internet-Browser • Account bei Alexa Developer • Account bei Alexa Web Services zur Nutzung von AWS Lambda Für die Entwicklung von Alexa-Skills hat Amazon komfortable und kostenlose Werkzeuge bereitgestellt, die im Browser Ihres PCs genutzt werden können. Dabei dient das Alexa Skills Kit der Erstellung der Sprachsteuerung, während AWS Lambda im Hintergrund die erforderliche Verarbeitung leistet. Die Durchführung eines Alexa Skills ist nachfolgend dokumentiert:
Abb. 3.1: Skill-Abwicklung Das Zusammenspiel von Benutzer, Alexa-Gerät und den AWS-Diensten ist bei dem ersten Skill noch recht übersichtlich. Der Anwender startet mit seiner Spracheingabe die Skill-Abwicklung. Nach dem Triggerwort "Alexa" leitet die Echo-Box die restliche Ansage an den Alexa Voice Service weiter. Dort wird die Sprache dekodiert und als Text dem Alexa Skills Kit zugeleitet. Da die Spracheingabe die Invokation, also den Aufrufnamen eines Skills, und die Intention, also den Ausführungswunsch, enthält, kann damit der entsprechende Skill adressiert und ausgeführt werden. Als Skill-Typ wird in diesem Beispiel ein Custom Skill eingesetzt, der universelle Verarbeitungsmöglichkeiten eröffnet. Wenn der Custom Skill eine gültige Intention erkennt, startet er beim AWS-Dienst Lambda einen Verarbeitungsprozess, führt den Wunsch des Anwenders aus und sendet als Resultat einen Text zurück an den Alexa Service. Dieser wird als Sprachnachricht an die Alexa-Box transferiert und von dieser akustisch ausgestrahlt.
● 37
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Für die Entwicklung eines eigenen Skills sind also ein Custom Skill und eine Lambda-Funktion erforderlich. Die Alexa Skill-Typen Das Alexa Skills Kit unterstützt die Erstellung und Verarbeitung folgender Skill-Typen: Custom Skill Mit diesem Universaltypen können nahezu alle möglichen Anfragen gestaltet werden. Die Anwenderwünsche (Intentionen) werden hierbei durch beispielhafte Äußerungen (Utterances) präzisiert. Dabei können auch mehrere Äußerungen dieselbe Intention auslösen. Ist z.B. die Intention "morgen", kann diese durch die Äußerungen "guten Morgen", "morgen" oder "Moin Moin" ausgelöst werden. Der Custom Skill eignet sich aufgrund seiner Flexibilität besonders gut für Eigenentwicklungen und wird daher bei in diesem Buch beschriebenen Projekten ausschließlich eingesetzt. Eignung für • Übermittlung von Kommandos an selbstgebaute elektronische Komponenten, z.B. "GPIO an" • Abfrage von Werten, z.B. "gib Batteriespannung" • Spiele und beliebige Dialoge • Webabfragen • und viele Möglichkeiten mehr Smart Home Skill Cloud-basierte Smart Home-Lösungen können mittels dieses Skills in die Alexa-Welt eingebunden werden. Für die Hersteller dieser Lösungen steht eine umfassende Schnittstelle zur Verbindung mit dem Anwender bereit. Wenn Alexa von einem Anwender die Meldung erhält, "Alexa, schalte das Wohnzimmerlicht an", formt Alexa daraus eine Direktive und leitet diese an den Smart Home Skill des Anbieters. Diese wird anschließend von der AWS Lambda-Routine unter Berücksichtigung der Zugriffsberechtigung ausgeführt und an die Steuereinheit des Anwenders geleitet. Beispiele: • Schalte das Licht an oder aus • Ändere die Lautstärke des Fernsehers • Setze den Thermostat auf 23 Grad Video Skill Der Video Skill stellt eine Schnittstelle zur Integration eigener Video-Beiträge in das Alexa-Angebot zur Verfügung. Ein Anbieter kann Videogeräte und -inhalte definieren und der Anwender kann diese ohne Entwicklung eines Skills abrufen, nachdem er diesen Service abonniert hat.
● 38
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Kapitel 4 • Alexa-Skills für Fortgeschrittene Der in Kapitel 3 entwickelte Skill musste nur geringe Anforderungen erfüllen. Doch wie gestaltet man eine Entwicklung, bei der eine Vielzahl von Eingaben erforderlich ist, die in einem Dialog zahlreiche Varianten anbietet, auf Daten vergangener Sitzungen zugreift oder sich Informationen aus dem Internet besorgt? Diese Schwerpunkte können Sie in diesem Kapitel nachlesen. Zusätzliche Themen behandeln die Hilfsmittel zur Fehlerbeseitigung, Lambda-Programmierung und die Modulation der Alexa-Stimme. Als Voraussetzung für die Durchführung sind wieder ein Alexa-Dot oder -Echo, die Accounts bei Alexa-Developer und AWS sowie ein PC mit Browser erforderlich. Vereinfachung durch Slots Stellen Sie sich vor, Ihr Skill müsste 10 GPIO-Ports oder mehr an- und ausschalten oder eine Lampe stufenlos von 0 bis 100 % dimmen, dann müssten mit den bisherigen Mitteln für jeden Einzelfall, d.h. für jedes Port oder jede Prozentzahl, ein eigener Intent vorgesehen werden. Erfreulicherweise kennt das Alexa Skills Kit den Slot, ein Element, das mehrere alternative Äußerungen bündeln und einem Intent zuordnen kann. Beispiel: Die Ports eins, zwei, sieben, acht und neun eines Mikrocontrollers sollen angeschaltet werden. Man definiert in einem solchen Fall einen Slot, z.B. mit der Bezeichnung PNUM, und ordnet diesem die Äußerungen eins, zwei, sieben, acht und neun zu. Die Äußerung (Utterance) für den Intent "portan" könnte dann im Skills Kit so aussehen: port {PNUM} an
Und dieser Slot PNUM könnte auch bei anderen Intents benutzt werden, z.B. im Intent "portaus". Bei einer Ansage "Alexa sage test slot port zwei an"
übermittelt das Skills Kit an die Lambda-Routine nicht nur den Intent "portan", sondern auch den Slot-Wert, also "zwei". Mit der Auswertung dieses Parameters kann dann die Anschaltung von Port zwei erfolgen. Der Begriff "test slot" ist hierbei die Invokation für den Skill mit dem Intent "portan". Neben eigendefinierten Slots bietet das Skills Kit zahlreiche vordefinierte Slots an, z.B. die Listen mit Vornamen, Orten, Ländern, Schauspielern, Filmen, etc. oder Zahlen, Kalenderdaten, Uhrzeiten, usw. an. Will man bei einem Intent Slots einsetzen, ist die Vorgehensweise wie folgt:
● 74
Kapitel 4 • Alexa-Skills für Fortgeschrittene
Abb. 4.1: Slot Type kreieren Zuerst wird ein Slot Type durch Klick auf den "Add"-Button von Slot Types eingerichtet. Man hat hier die Wahl zwischen einer eigenen Kreation oder einem bereits definierten Slot Type. Hier wird ein eigener Typ erstellt und mit dem Namen GNUM versehen. Ein Klick auf "Create custom slot type" führt zur Eingabe der Slot-Werte.
● 75
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Kapitel 5 • Alexa steuert Raspberry Pi In diesem Kapitel geht es endlich los mit der Sprachsteuerung einer elektronischen Baugruppe, in diesem Projekt ist es ein Raspberry Pi. Dabei werden einige interessante Module vorgestellt, im Brennpunkt steht dabei AWS IoT Core, dem Vermittler zwischen der Lambda-Serviceroutine und dem Endgerät. Diese AWS-Komponente bietet zahlreiche Funktionen, u.a. die Kreation von Dingen (Things) mit Schatten, mit denen eine Kommunikation auch ohne angeschaltetes IoT-Modul möglich ist. Zusätzlich wird das MQTT-Protokoll (Message Queuing Telematic Transport) mit seinem Broker vorgestellt, das sowohl im IoT Core als auch auf dem Raspberry Pi aktiv ist. Zur Erleichterung des Programmiererlebens wird auf dem Raspberry Pi das Entwicklungssystem Node-RED eingesetzt. Hiermit lassen sich mittels eines grafischen Editors Funktionsknoten (Nodes) zu Programmabläufen (Flows) zusammenschalten und damit auch komplexe Funktionen mit relativ geringem Aufwand realisieren. Um die in diesem Kapitel angepeilten Ziele zu realisieren, sind einige Arbeitsschritte erforderlich, die nachfolgend schrittweise umgesetzt werden. Seien Sie gespannt. Zielsetzung und Überblick Die Zielsetzung bei diesem Projekt hört sich zuerst einmal harmlos an, es sollen vier an einem Raspbery Pi angeschlossene LEDs an- bzw. ausgeschaltet werden. Zusätzlich soll Alexa die von einem Sensor erfasste Temperatur vermelden. Dazu sind außer dem Raspberry Pi und einer kleinen Zusatzplatine oder einer Breadboard-Schaltung keine kostenpflichtigen Komponenten erforderlich. Denn die auf dem Endgerät zu installierende Software ist kostenfrei im Netz verfügbar. Ohne Sprachsteuerung hört sich das nach einer leichten Fingerübung an, mit Alexa taucht man jedoch tiefer in die Amazon Web Services ein. Die folgende Abbildung zeigt alle dabei beteiligten Komponenten auf:
Abb. 5.1: Ablauf der Raspberry Pi-Steuerung
● 132
Kapitel 5 • Alexa steuert Raspberry Pi
Die auf der linken Seite dargestellten Module sind Ihnen bereits aus Kapitel 4 bekannt, die Sprachsteuerung startet links unten mit der Eingabe des Befehls. Alexa Sprachbox Hierbei kann es sich um alle von Amazon vertriebenen Alexa-Ein/Ausgabegeräte handeln, also Echo Dot, Echo, Echo Spot und Echo Show sowie andere Geräte, die über eine Alexa-Sprachfähigkeit verfügen. Diese Boxen sind über das Internet mit der AWS Cloud verbunden, liefern dort das aufgenommene Kommando ab und geben die zurückgemeldete Sprachnachricht wieder. Alexa Service Der Alexa Service beherbergt das Alexa Skill, in dem die Invokation, Sprachbefehle und Slots definiert sind. Für dieses Projekt ist ein Dialog-Skill mit folgenden Kommandos vorgesehen: Anwender
Alexa-Sprachausgabe
Alexa öffne
Bemerkung Skill wird gestartet
raspberry schalte Start raspberry schalte. Bitte Kommando eingeben! port zwei an
Zwei Slots für Portnummer und An/Aus Lampe zwei wird angeschaltet. Bitte Kommando eingeben!
port zwei aus Lampe zwei wird ausgeschaltet. Bitte Kommando
Benutzer hat länger als
eingeben! …..Und nun?
8 Sekunden gewartet.
alle an
Slot An/Aus Alle Lampen werden angeschaltet. Bitte Kommando eingeben!
alle aus Alle Lampen werden ausgeschaltet. Bitte Kommando eingeben! gib temperatur Die Temperatur beträgt 22,6 Grad. Bitte Kommando eingeben! ende
Ende des Skills Ende Skill raspberry schalte.
● 133
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Kapitel 6: Auch Alexa liebt die Arduino IDE In diesem Kapitel wird aufgezeigt, wie man die beliebte Arduino-IDE mit Alexa verheiraten kann. Dieses wird im Rahmen von drei Projekten auf unterschiedlichen Hardware-Plattformen demonstriert, wobei alle Entwicklungen mit dem o.g. Entwicklungssystem realisiert werden. Im ersten Projekt geht es um die Steuerung eines einfachen Roboterkopfes. Dieser kann sich mit Hilfe eines Servo-Motors drehen, mit den Augen (blaue LEDs) blinken und Pieps-Töne über einen eingebauten Lautsprecher erzeugen. Den lustigen Roboterkopf habe ich als Gadget für meine Enkel erstellt und ihn nun an Alexa angepasst. Die Sprachnachrichten werden von einem WiFi-Chip ESP8266 über WLAN empfangen und in Steuerkommandos umgesetzt. Das zweite Projekt ist schon erheblich nützlicher, denn hier vermeldet Alexa aktuelle und historische Daten von meinem Heizungskessel. Zur Erfassung mehrerer Temperatur- und Statuswerte dient ein ESP8266, der diese Informationen an seinen großen Bruder, den ESP32, meldet. Dieser Baustein ergänzt die Daten mit Uhrzeit/Datum, berechnet Mittelwerte und übernimmt die Kommunikation mit Alexa. Im dritten Projekt kommt der klassische Arduino Uno zum Einsatz, der, bestückt mit einem Ethernet-Shield, den Weg ins Netz findet. Seine Aufgabe ist es, auf Anweisungen von Alexa mittels LED-Lichterketten bunte Farb- und Beleuchtungseffekte zu erzeugen. Da die MQTT-Kommunikation mit TLS-Absicherung bei Verwendung der o.g. Plattformen wegen zu geringer Speicherkapazität und Rechenleistung (speziell beim Arduino Uno) kaum realisierbar ist, kommt bei diesen Projekten der schlanke, aber leistungsfähige Streaming-Dienst Pubnub zum Einsatz. Dieser ermöglicht gesicherte Publikationen und Subskriptionen und stellt eine Bibliothek für die Arduino-IDE zur Verfügung. Bevor es an die Umsetzung der genannten Projekte geht, sind allerdings einige Vorbereitungen erforderlich, die im ersten Kapitelabschnitt beschrieben werden. Vorbereitung der Projekte Installation Aduino-IDE Das beliebte Entwicklungssystem für den Arduino-Mikrokontroller ist sicher den meisten Lesern dieses Buches bekannt. Es wurde bereits millionenfach von Hobbybastlern und Makern installiert, weil keine andere Plattform ein so reichhaltiges Angebot von Bibliotheken und Programmbeispielen aufweist. Eine deutliche Aufwertung erhielt die Arduino-IDE durch die Unterstützung der WiFi-Chips ESP8266 und ESP32 des Herstellers Espressif. Für die Leser ohne bisherige Erfahrung mit Arduino folgt nun eine kurze Installationsanweisung:
● 172
Kapitel 6: Auch Alexa liebt die Arduino IDE
Abb. 6.1: Download der Arduino-IDE Die Entwicklungsplattform ist für alle gängigen PC-Betriebssysteme verfügbar und steht auf der Seite von Link [L6_1] zum Download bereit. Während der Installation in einen beliebigen Ordner werden mehrere Zusatzbibliotheken und Treiber angeboten, die alle installiert werden sollten. Danach ist das Entwicklungssystem bereits für die Bearbeitung der populären Boards wie Arduino Uno, Arduino Nano und ihre Verwandten einsatzbereit. Falls Ihre Firewall meckert, erlauben Sie der IDE den Zugriff auf das Netz, damit nachfolgende Installationen und Updates problemlos erfolgen. Zusätzlich finden Sie unter dem Menüpunkt "Resources" auf der Arduino-Homepage Dokumentationen wie "Getting Started", Tutorials und Referenzen. Nun gilt es, die Unterstützung für die ESP-Chips zu installieren.
● 173
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Kapitel 7: Hacks mit Schaltern Kapitel 7.1: Schneller Erfolg mit Wemo-Emulation Einleitung Wenn Sie schnell und mit geringem Aufwand ein Alexa-gesteuertes Gerät bauen möchten, ist dieser Hack genau richtig. Denn bei der hier angewandten Methode muss weder ein Alexa-Skill noch eine AWS-Lambda-Funktion erstellt werden. Stattdessen wird einfach ein am Markt etablierter Schalter emuliert, der bereits mit einem flexiblen Alexa-Skill ausgestattet ist. Es handelt sich dabei um den Wemo-Schalter von Belkin. Dieser lässt sich über die Cloud von Apps und von Alexa ansteuern. Findige Macher haben das Kommunikationsprotokoll zwischen Schalter und Cloud analysiert und eine entsprechende Emulations-Software für den ESP8266 erstellt. Da diese auf der Arduino-IDE abläuft, ist die Anwendung denkbar einfach und wenig aufwändig. Mit dieser Firmware können bis zu 14 Schalter emuliert werden, so dass auf dem ESP8266 viele Aktivitäten ansteuerbar sind. Allerdings ist die Kommunikation unidirektional, d.h. es werden lediglich Anweisungen entgegengenommen und der Transfer von lokal ermittelten Messwerten ist nicht möglich. Skill-Emulation Die ESP8266-Firmware aktiviert sofort nach dem Start einen oder mehrere Webserver (für jeden Schalter einen). Bei der Inbetriebnahme wird Alexa mit dem Befehl "Alexa, suche Devices" aufgefordert, nach neuen Geräten in seinem Umfeld zu suchen. Das Echo-Gerät sendet daraufhin einen UPnP (Universal Plug and Play)-Rundruf über UDP (User Datagram Protocol) aus und sucht damit nach Wemo-Schaltern. Diese melden sich mit ihrer URL und senden auf gezielte Anfrage von Alexa ihre Gerätedaten. Hat man mehrere Schalter in einer Applikation vorgesehen, erkennt Alexa nicht immer sofort alle Schalter, ein zweiter Suchbefehl komplettiert dann aber die Sammlung. Jetzt sind die in der ESP8266-Firmware definierten Schalter ansprechbar, z.B. mit "Alexa schalte Licht Bad an". Hierbei ist "Licht Bad" die Invokation und "an" die Utterance des Skills. Hat Alexa die Anweisung verstanden, antwortet sie mit einem trockenen "OK". Die nachfolgende Abbildung verdeutlicht die Kommunikation bei der Erkennung und Steuerung.
● 258
Kapitel 7: Hacks mit Schaltern
Abb. 7.1: Dialog mit Alexa (Quelle: [L7_3]) Jeder Schalter verfügt über eine individuelle Invokation, aber über dieselben Utterances "an" und "aus". Natürlich müssen damit nicht zwangsläufig Ein/Ausschaltvorgänge durchgeführt werden, sondern es sind beliebige Aktionen programmierbar, z.B. die Steuerung einer Motor-Laufrichtung etc. Zielsetzung Für diesen Hack habe ich die in [L7_1] und [L7_2] aufgeführten Beispiele für eine Lichtsteuerung umgeschrieben, die das Licht in vier Zimmern ein- und ausschalten soll. Neben der Einzelschaltung sollen auch alle Lampen gleichzeitig schaltbar sein. Damit enthält die Firmware 5 Schalter, die bei der Inbetriebnahme zuerst gesucht werden müssen und dann anwendbar sind. Inbetriebnahme:
"Alexa, suche Devices"
Steuerung: Licht Küche: Licht Zimmer: Licht Flur: Licht Bad: Alle Lichter:
"Alexa, "Alexa, "Alexa, "Alexa, "Alexa,
schalte schalte schalte schalte schalte
Licht Küche an/aus" Licht Zimmer an/aus" Licht Flur an/aus" Licht Bad an/aus" alle Lichter an/aus"
Hardware Zum Test und zur Demonstration dieses Hacks habe ich eine kleine Testplatine erstellt, deren Schaltung nachfolgend abgebildet ist:
● 259
Kapitel 8: Alexa steuert ein Gartenhaus
Kapitel 8: Alexa steuert ein Gartenhaus Zielsetzung und Projektüberblick Stellen Sie sich vor, Sie hätten sich die Aufgabe gestellt, ein komplexes IoT (Internet der Dinge)-Projekt zu realisieren. Sagen wir mal als Beispiel, die Gewächshäuser einer Gärtnerei zu überwachen und zu steuern. Dabei sollten z.B. die Innen-Temperatur und die Beleuchtung auf definierbare Sollwerte geregelt und die Feuchtigkeit von Innenluft und Pflanzenerde überwacht werden. Bei kritischen Messwerten müsste eine Alarmierung z.B. mittels eMail an den Betreiber erfolgen. Und als i-Tüpfelchen sollte das System sprachgesteuert diese Betriebsdaten bestimmen und abrufen können. Sie werden mir zustimmen: keine triviale Aufgabe! Im ersten Schritt die Machbarkeit prüfen: Profis strukturieren ein solches Projekt in einem Pflichtenheft, das eine definierte Lösung detailliert mit den zu erwartenden Aufwendungen, Kosten und Fertigstellungsterminen auflistet. Leider kennt man beim Projektstart nicht alle potentiellen Probleme und Risiken, so dass es vorteilhaft ist, die Machbarkeit in einer Vorstudie zu überprüfen und für die Umsetzung in ein reales Projekt die ersten Erfahrungen zu sammeln. Dieses Kapitel dokumentiert eine solche Machbarkeitsuntersuchung mit Hilfe eines kleinen Modell-Gartenhauses, das mit einer lebenden Pflanze bestückt ist, und beschreibt die eingesetzten Hard- und Software-Komponenten sowie die Ankopplung an Alexa. Bei einem kleinen Modell, bestückt mit einer Pflanze, könnte man die Aufgabe natürlich locker mit einem Rasperry Pi oder sogar einem ESP8266 lösen. Das würde allerdings nicht die potentielle Weitläufigkeit eines realen Projekts mit mehreren Gartenhäusern modellieren. Deshalb wird hierbei die Arbeitslast auf mehrere Schultern im Rahmen einer dreistufigen Architektur verteilt: Cloud-Stufe: Dient der Übernahme rechenintensiver Aufgaben in einem mit Hochleistungsrechnern bestückten Zentrum, hier wird Amazon AWS zur Sprachsteuerung eingesetzt. Edge-Stufe: Edge Computing bezeichnet im Gegensatz zum Cloud Computing die dezentrale Datenverarbeitung am Rand des Netzwerks, der sogenannten Edge (engl. für Rand oder Kante). Dabei werden beim Internet der Dinge die zahlreichen Sensor- und Aktor-Daten bereits vor Ort verarbeitet und lediglich konzentrierte Informationen an die Cloud weitergereicht. In diesem Projekt steuert ein Raspberry Pi das Gartenhaus, nimmt die Sensordaten entgegen, parametriert die Aktoren und kommuniziert mit den AWS-Diensten. Sensor-Stufe: Hier sind die Sensor- und Aktor-Systeme untergebracht. Diese liefern Betriebsdaten des zu steuernden Objektes und stellen die Aktoren auf ihre Sollpositionen. Diese Aufgaben übernehmen zwei ESP8266-Bausteine mit ihrer angeschlossenen Peripherie.
● 283
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Bitte denken Sie jetzt nicht: "Schon wieder ein Gartenhaus, bei diesem Autor geht nichts ohne Gartenhaus!" Für die Darstellung einer etwas komplexeren Aufgabenstellung ist die übersichtliche und geschlossene Welt eines solchen Modells fast ideal. Und da die meisten Leser dieses Buches sicher keine Lust verspüren, sich mit Aufwand ein Gartenhaus zu bauen, stelle ich dafür eine Node-RED-Variante mit einem Simulator zur Verfügung, der alle Funktionen dieses Projektes unterstützt und testbar macht. Doch zunächst das gesamte Projekt in der Übersicht.
Abb. 8.1: Überblick Projekt Gartenhaus Oben in der Cloud residieren die Amazon AWS-Applikationen, das Alexa Skills-Kit, die Lambda-Servicefunktion sowie der IoT Core mit Ding und Schatten. Ein Alexa-Gerät dient wieder als Ein/Ausgabestation für Sprachbefehle und -nachrichten, leitet diese an Lambda weiter bzw. empfängt von dort Antworten, während IoT Core mit seinem abgesicherten MQTT-Broker die Kommunikation mit den darunterliegenden Edge-Ebene übernimmt. Das Gartenhaus ist in IoT Core als Ding registriert, das in seinem Schatten stets die zuletzt aktuellen Daten vorhält, so dass Alexa auch dann auskunftsfähig ist, wenn die Verbindung zur Edge kurzzeitig unterbrochen wäre. Die lokale Vorverarbeitung in der Edge übernimmt ein Raspberry Pi mit einer Internet-Verbindung zur Cloud. Er verfügt über einen eigenen MQTT-Broker zur Kommunikation mit den peripheren Subsystemen der Sensor-Stufe. Die MQTT-Verbindung im Internet zur Cloud ist
● 284
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Kapitel 9 • Auch Roboter gehorchen Alexa Zielsetzung In diesem Projekt soll u.a. getestet werden, ob Alexa auch ein bewegtes Objekt steuern kann und die Reaktionsgeschwindigkeiten dafür kurz genug sind. Außerdem hat mich die Robotertechnik immer schon mit ihren zahlreichen Herausforderungen interessiert und nebenbei würde ein Erfolg sicher auch den Enkeln imponieren. Basis dafür ist ein im Handel erhältlicher Bausatz für einen kleinen Fahr-Roboter mit zwei Antriebsrädern und einem kleinen Bugrad. Dieser ist schnell aufgebaut und fordert dem Elektroniker keine "lästigen" mechanischen Arbeiten ab. Die Steuerung erfolgt mit einem ESP32, der mit seinem eingebetteten RTOS-Betriebssystem gut für Realzeitaufgaben geeignet ist. Zusätzlich ist interessant, ob dabei mittels Arduino-IDE das erforderliche Multitasking umgesetzt werden kann. Der Roboter und seine Steuerung sollen folgende – auch zeitkritische – Aufgaben erledigen: • Vorwärts- und Rückwärtsfahrt mit unterschiedlichen Geschwindigkeiten • Wählbare Fahrtrichtungen • Verhinderung von Kollisionen • Überwachung der Batteriespannung • Stabilisierung der Fahrtrichtung bei der Geradeausfahrt Der letztgenannte Punkt ist wichtig und erfordert eine Reglung, da beim Einsatz von zwei Motoren aufgrund von Fertigungstoleranzen nur ein unzureichender Gleichlauf stattfindet.
Abb. 9.1: So sieht der Rad-Roboter aus
● 334
Kapitel 9 • Auch Roboter gehorchen Alexa
Auf der Trägerplattform des Roboters sind vorne die Steuerplatine mit dem ESP32 und hinten die Leistungselektronik für die Motoren montiert. Im Schwerpunkt in der Mitte befindet sich der Block mit zwei leistungsstarken Lithium-Batterien und vorne sowie hinten spähen Sonarmodule nach Hindernissen. Geplant war zusätzlich ein Kompassmodul zur Stabilisierung der Fahrtrichtung, was sich aber leider nicht als praktikabel erwiesen hat. Redesign erforderlich Dabei hatte ich mir das mit dem Kompass als besonders elegantes Mittel zur Reglung der Fahrtrichtung vorgestellt. Bei Geradeausfahrt hätte sich die Steuerung die Startrichtung merken können, um diese dann bei der Fahrt einzuhalten. Oder bei der Kurvenfahrt nach einem Befehl "halb rechts" die Richtung um 45 Grad verändern können. Hoffnungsfroh nach dieser guten Idee testete ich sofort die gängigen Kompassmodule HMC5883 und MPU9250. Die arbeiteten auch auf separaten Testplatinen ganz ordentlich und zeigten die Himmelsrichtungen an, aber eingebaut im Roboter zeigten sie unabhängig von der Roboterrichtung immer die annähernd gleiche Gradzahl an. Es folgten zahlreiche Tests, auch mit Arduino-Hardware und verschiedenen Treibern, mit den gleichen Resultaten: auf der Testplatine gut, im Roboter mit konstanter Richtung. Es dauerte relativ lange, bis der Groschen fiel und ich die DC-Motoren mit ihren starken Permanentmagneten als Schuldige identifiziert hatte. Damit war der Kompass auf Magnetbasis ausgeschieden. Der MPU9250 hat jedoch neben seinem Kompass noch einen Beschleunigungsmesser und ein Gyrometer mit korrekter Arbeitsweise. Man hätte mittels Gyro auch die Richtungsänderung in Grad mathematisch durch Integration der Drehbewegung ermitteln können, aber das war mir für dieses Projekt zu kompliziert. Außerdem "rauschte" der Gyro und zusätzliche Filter wären erforderlich gewesen. Nach diesen Erfahrungen habe ich in Youtube neidvoll die Drohnenentwickler bewundert, die Ihre Geräte stabil in der Luft hielten. Also zurück zur mechanischen Klassik mit Lochscheibe am Roboterrad und Lichtschranke. Damit kann man durch Abzählen der "Löcher" die gefahrene Strecke bzw. mit deren Bezug zur Zeit die Geschwindigkeit des Rads ermitteln und damit ausregeln. Auf dieser Basis ist das Projekt weiterentwickelt worden, Einzelheiten dazu können Sie den nächsten Abschnitten entnehmen. Skill-Entwicklung Der Alexa-Skill ist wieder im Dialog und mit Einzelkommandos benutzbar, die Invokation ist "rad roboter". Um die Anzahl der Intents möglichst klein zu halten, sind 3 Slots für Geschwindigkeit, Winkel und Richtung eingesetzt. Da Steuerkommandos sicher in kurzen Abständen erforderlich sind, wurden die Sprachausgaben von Alexa möglichst kurz gehalten. Alle Befehle mit den resultierenden Alexa-Ausgaben und den Roboter-Aktivitäten können Sie der nachfolgenden Tabelle entnehmen.
● 335
Kapitel 10 • Alexa geht fremd
Kapitel 10 • Alexa geht fremd Bauen Sie sich doch selbst eine Alexa, sicher nicht um Geld zu sparen, vielleicht aber um neue Kenntnisse und zusätzliche Erfahrungen zu sammeln. Alle bisher vorgestellten Projekte benutzten zur Kommunikation mit Alexa ein Amazon-Gerät wie Alexa-Dot oder Alexa-Echo. Ist man sehr experimentierfreudig oder möchte ein Gerät mit Sprachsteuerung bauen, so kann man Alexa auch auf anderen Plattformen implementieren. Das ist zwar nicht sonderlich wirtschaftlich, denn einen Alexa-Dot erhält man bereits für 60 € oder bei Glück im Sonderverkauf für die Hälfte. Doch wenn ein Raspberry Pi unbenutzt als Schrankware verfügbar ist, könnte man diesen mit einer Alexa-Software zum nützlichen Gesprächspartner machen. In diesem Kapitel möchte ich Ihnen vier Lösungen vorstellen, die eine Alexa-Kommunikation auf alternativen Plattformen ermöglichen. Bei der ersten wird eine ziemlich umfangreiche Software mit wenig Aufwand auf einem Raspberry Pi 3 installiert. Diese Lösung unterstützt mehrere Sprachen, darunter auch Deutsch. Zudem lassen sich eigene Triggerworte definieren und die Lösung kann sogar auf die GPIO-Ports zugreifen und ist unmittelbar zur Steuerung nutzbar. Eine zweite Lösung, ESP32 Lyra, kommt von dem Chip-Hersteller Espressif und verwendet zur Steuerung den ESP32 mit einer Verstärkung durch einen digitalen Signalprozessor. Ein vielversprechender Ansatz, aber noch nicht ausgereift und trotz guter Unterstützung im Forum nur mit Schwierigkeiten zu implementieren. Vielleicht funktioniert es in einigen Monaten besser, wenn dieses Buch auf dem Markt ist. Eine weitere hochgerüstete Alternative kommt vom Startup-Unternehmen Matrix. Diese Firma hat ein Zusatzboard (Hat) für den Raspberry Pi entwickelt, das einige leistungsstarke Bauteile enthält und neben der Alexa-Kommunikation sogar eine Kamera-Unterstützung mit Bilderkennung leistet. Diese Lösung läuft prima und ist stabil. Ohne zusätzliche Hardware-Unterstützung ist dem Maker-Enthusiasten MrBuddyCasino gelungen, Alexa auf einem ESP32 zu installieren. Wegen der fehlenden Signalverarbeitung erkennt diese Lösung das Wake-Wort nicht, sondern die Kommunikation wird per Tastendruck eingeleitet. Trotzdem sehr beachtenswert!
Damit stehen einige Lösungen für Experimente oder zur Entwicklung sprachgesteuerter Geräte zur Verfügung. Also legen Sie los! 10.1: Alexa auf Raspberry Pi Gleich vorab: Diese Lösung ist nicht auf meinem Mist gewachsen, sondern basiert auf einer Entwicklung der Github-Aktivisten Henry Mendez und Patchbots. Ich halte sie für so interessant, dass ich an dieser Stelle gerne darüber berichte. Es geht, wie eingangs bereits erwähnt, um die Implementation der Alexa-Funktionalität auf einem Raspberry Pi 3. Nach einer erfolgreichen Installation übernimmt dieser die Funktionen eines Alexa-Dots, allerdings mit der Einschränkung, dass keine Musik abspielbar ist.
● 367
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Und diese Komponenten werden für eine Realisierung benötigt: • Raspberry Pi 3 mit Netzteil • Micro-SD-Karte mit mindestens 8 GB und hoher Schreib/Leseleitung (empfohlen Class 10 oder besser) • Tastatur, Maus und HDMI-Monitor • USB-Mikrofon • Lautsprecher mit Klinkenanschluss 3.5 mm (wenn man den Betrieb ohne Monitor plant) Die Installation wird in folgenden Schritten vollzogen: • Download der aktuellen Rasbian Stretch-Version und Abspeichern auf der SD-Karte • Einrichten Raspberry Pi • Anmelden eines Sprachgeräts beim Alexa Voice Service • Überspielen eines Github-Clones auf den Raspberry Pi • Installation der Software mittels Setup-Script • Einrichtung des Mikrofons mit dem Alsamixer • Erster Test • Bei Bedarf Wakeword auswechseln • GPIOs testen Das hört sich nach einiger Arbeit an, ist aber in 2-3 Stunden erledigt, wobei Wartezeiten für einige Tassen Kaffee beim Download der Software und deren Installation anfallen. Download und Einrichten Raspberry Pi Man kann vorab wählen, ob das Gerät mit voller Peripherie, also Maus, Tastatur, Mikrofon und Monitor, betrieben wird oder eine freistehende Version lediglich mit Mikrofon und Lautsprecher. Bei der ersten Variante wählt man die volle Desktop-Version von Rasbian Stretch, andernfalls die Lite-Version ohne eigenen Desktop. Bei der letztgenannten wird dann die Einrichtung mittels SSH-Klienten vom PC aus durchgeführt. Ich habe die Desktop-Full-Version gewählt, das Image entpackt und mittels der Utility Win32Diskmanager auf eine schnelle Mikro-SD-Karte kopiert. Nun gilt es noch, die Installation anzupassen, d.h. Sprache, Zeitzone, Hostname/Passwort etc. mittels Raspberry-Pi-Konfiguration einzustellen. Wenn dann noch der Zugang zum WLAN und ggf. über SSH eingerichtet ist, kann man zum nächsten Schritt übergehen.
● 368
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Index A Abtastung 27 Alexa-App 17 Alexa Guard 30 Alexa SDK für JavaScript 89 Alexa Service 133 Alexa Skills Kit 37 Alexa Sprachbox 133 AlsaMixer 377 Amazon Alexa 13 Amazon-Cloud 29 Analog-Digital-Converter 24 Apple Siri 13 Application Program Interface 105 Arbeitsspeicher 24 Arduino 173 ARN-Nummer 87 Atom 273 Authentisierung 405 AWS Account 42 AWS IoT Core 134 AWS Lambda 134
ESP32 Lyra 367 ESP32 LyraTD MSC 386 ESP8266 174, 181 Ethernet-Shield 238 eWeLink 269
F Filterung 27 Flash Briefing Skill 39 freeRTOS 225
G Gartenhaus 284 Gartenhausmodell 321 Gerätehersteller 14 Google Assistant 14
H Hidden-Markov-Modelle 28 HMC5883 335
I Itead 269
B Belkin 258
J
C
JavaScript Object Notation 55 JSON 106
C++ 189 Cepstrum 27 Custom Skill 38
D Deep Learning 28 Digital Media-Prozessor MM3725 23 DS18B20 137
L L293B 136 Lambda 48 LED-Shield 239 Lichtsteuerung 259 Lochrasterplatine 136
M E Echo 16 Echo Dot 16 Echo Plus 16 Echo Show 16 Echo Spot 16 Edge Computing 283 ESP32 174
● 410
Markup Language 124 MATRIX Labs 391 MATRIX Voice 391 Merkmalsvektor 27 Microsoft Cortana 14 Mikrofon 24, 225 MPU9250 335 MQTT 137
Index
MrBuddyCasino 403
N Neuronale Netze 28 Node-MCU 197 Node-RED 139
R Rad-Roboter 334 Raspberry Pi 137, 368 Raspbian Stretch 137 Rolle 100
S Skill-Design 49 Skillinator 120 Slot 74 Smart Home Skill 38 snowboy 379 Sonoff-Schalter 269 Speech Synthesis Markup Language 124 Sprachassistent 12 Sprachmodell 29 SSID 19 SSML 124 STM32F429 196
T Tasmota 276 Temperatursensoren 223 Testsimulator 129 Transformation 27
U Utterance 77
V Video Skill
38
W Wakeword 29 Wemo-Emulator 265 Wemo-Schalter 258 WireShark 33 WLAN 17
â—? 411
Raspberry Pi, Arduino und ESP kontrollieren
Sprachsteuerung von IoT-Projekten mit Amazon Alexa
Sprachsteuerung von IoT-Projekten mit Amazon Alexa gibt dem Leser einen tiefen Einblick in die Technik der Sprachsteuerung am Beispiel von Amazon Alexa. Es erklärt detailliert Schritt für Schritt, wie man Raspberry Pi, ESP8266/32 und Arduino mit einem Sprachassistenten verbindet und steuert. Dieses geschieht anhand von Projekten aus den Bereichen Hausautomation und Robotik. Walter Trojan begann seine berufliche Laufbahn als Fernmeldetechniker. Anschließend studierte er Nachrichtentechnik. Er war fast 40 Jahre bei einem IT-Hersteller tätig, arbeitete dort auf Großcomputern, im Systemmanagement und in der IT-Sicherheit. Hauptsächlich programmiert er in C und Pascal, hat aber keine Berührungsängste mit Java, JavaScript und Python.
Der Leser erfährt, wie man Heizkessel, Roboter und Gartenhäuser mit dieser modernen Mensch-Maschine-Schnittstelle kommandieren kann. Der Autor Walter Trojan führt dabei den Leser in die vielschichtige Welt der Amazon Web Services ein, wo er neben dem Alexa Skills Kit weitere Module wie AWS Lambda und IoT Core kennenlernt.
Das erwartet den Leser: Kapitel Kapitel Kapitel Kapitel Kapitel Kapitel Kapitel Kapitel Kapitel Kapitel
1: Sprachassistenten setzen sich durch 2: Alexa intern 3: Der erste Alexa Skill 4: Alexa Skills für Fortgeschrittene 5: Erster Hardware-Skill auf Raspberry Pi 6: Auch Alexa liebt die Arduino-IDE 7: Hacks mit Schaltern 8: Alexa steuert ein Gartenhaus 9: Auch Roboter gehorchen Alexa 10: Alexa geht fremd
ISBN 978-3-89576-340-3
Elektor-Verlag GmbH 52072 Aachen www.elektor.de
LEARN DESIGN SHARE
● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEA IGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● D HARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN N ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEA SIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● D