DIY Smart Camper Control
Die Sprachsteuerung in unseren Peugeot Boxer Camper Van
=> Telegram Support- und Infogruppe zum Projekt.
Schritt für Schritt
Anleitung
In unserem Camper Van ist eine hochmoderne elektronische DIY Steuerung verbaut, diese wurde hier ausführlich beschrieben, die sämtliche verbauten elektrischen Geräte steuern und überwachen kann. Neben der Steuerung über Home Assistant (MQTT) und einer speziell entwickelten Android App soll der Camper Van auch über Sprache steuerbar sein. Weiter soll es möglich sein, auch gesprochene Nachrichten oder Warnungen auszugeben. Hier soll dieses optionale Steuerungskonzept, auf Grundlage der existierenden DIY Camper Steuerungshardware, vorgestellt werden. Grundlage ist das folgende Interface, dass bereits vorhanden ist und natürlich weiter genutzt werden soll.
Die Schnittstellen im Überblick

CamperVan Service:
Der CamperVan Service ist das zentrale Herzstück wenn es um die Kommunikation zur Außenwelt geht. Hier laufen alle Befehlsketten zusammen.
CamperVanSpeech Service:
Der CamperVanSpeech Service ist eine eigene Komponente die auf dem Raspberry PI läuft und die Spracherkennung sowie das Umsetzen von Sprachbefehlen in einem Dialog übernimmt. Weiter übernimmt er die TextToSpeech (TTS) Audioausgabe auf dem Raspberry PI.
Web Interface:
Das Web Interface ist ein im CamperVan Service integriertes Interface. Da es für den CamperVan Service selbst transparent ist, dieser weiß selbst nicht über welches Interface er konkret kommuniziert, kann es auch als eigenständige Komponente betrachtet werden.
MQTT:
Der MQTT Broker ist eine externe Komponente die entweder auf dem Raspberry PI selbst läuft, oder auf einem externen System installiert ist. Der CamperVan Service kann das MQTT Interface völlig transparent in sein Kommunikationskonzept einbinden sodass es intern keine Rolle mehr spielt ob die Kommunikation über MQTT oder das Web Interface stattfindet. Genau genommen kennt der CamperVan Service das konkrete Interface noch nicht einmal.
Home Assistant:
Home Assistant ist eine eigenständige und beliebte externe Software. Sie wird durch das MQTT Interface vollständig unterstützt. Alles was über das eigene Web Interface möglich ist, kann auch über MQTT, also Home Assistant, realisiert werden.
Android:
Die Android App Camper Control ist ebenfalls eine eigenständige externe Software die auf beliebigen Android Geräten (Handy, Tablet, Autoradio) lauffähig ist. Aktuell ist es die am weitesten entwickelte Software zur Kommunikation mit der smarten DIY Camper Steuerung. Die Android App unterstützt sämtliche Funktionen und zeigt eindrucksvoll was alles möglich ist.
Python:
Über die Scriptsprache Python kann das Web Interface ebenfalls angesprochen werden, wo insbesondere der EventHandler zur Nutzung einlädt.
Der CamperVan Service ist das zentrale Herzstück wenn es um die Kommunikation zur Außenwelt geht. Hier laufen alle Befehlsketten zusammen.
CamperVanSpeech Service:
Der CamperVanSpeech Service ist eine eigene Komponente die auf dem Raspberry PI läuft und die Spracherkennung sowie das Umsetzen von Sprachbefehlen in einem Dialog übernimmt. Weiter übernimmt er die TextToSpeech (TTS) Audioausgabe auf dem Raspberry PI.
Web Interface:
Das Web Interface ist ein im CamperVan Service integriertes Interface. Da es für den CamperVan Service selbst transparent ist, dieser weiß selbst nicht über welches Interface er konkret kommuniziert, kann es auch als eigenständige Komponente betrachtet werden.
MQTT:
Der MQTT Broker ist eine externe Komponente die entweder auf dem Raspberry PI selbst läuft, oder auf einem externen System installiert ist. Der CamperVan Service kann das MQTT Interface völlig transparent in sein Kommunikationskonzept einbinden sodass es intern keine Rolle mehr spielt ob die Kommunikation über MQTT oder das Web Interface stattfindet. Genau genommen kennt der CamperVan Service das konkrete Interface noch nicht einmal.
Home Assistant:
Home Assistant ist eine eigenständige und beliebte externe Software. Sie wird durch das MQTT Interface vollständig unterstützt. Alles was über das eigene Web Interface möglich ist, kann auch über MQTT, also Home Assistant, realisiert werden.
Android:
Die Android App Camper Control ist ebenfalls eine eigenständige externe Software die auf beliebigen Android Geräten (Handy, Tablet, Autoradio) lauffähig ist. Aktuell ist es die am weitesten entwickelte Software zur Kommunikation mit der smarten DIY Camper Steuerung. Die Android App unterstützt sämtliche Funktionen und zeigt eindrucksvoll was alles möglich ist.
Python:
Über die Scriptsprache Python kann das Web Interface ebenfalls angesprochen werden, wo insbesondere der EventHandler zur Nutzung einlädt.
Das offene TTS- und SDS-Konzept
Wie oben dargestellt und beschrieben ist das TextToSpeech (TTS) und SpeechDialogSystem (SDS) Interface für alle Teilnehmer transparent. Es gibt keinen Master der hier eine kontrollierende Rolle einnimmt. Genau genommen ist jeder Teilnehmer durch das einfache Kommunikationsprotokoll, dazu komme ich im Folgenden noch, in der Lage, die Rolle der Spracherkennung und/oder Sprachausgabe zu übernehmen und den CamperVan Service, und/oder Home Assistant, mit Kommandos oder Daten zu füttern.
Dieses offene Konzept, es ist an keine spezielle Campersteuerung gebunden, bringt einige Vorteile mit sich, denn Handys, Tablets usw. werden in erster Linie die TTS umsetzen und ein Autoradio möglicherweise auch die Spracherkennung. Da es keine Begrenzung an Teilnehmern gibt, können alle Geräte die eine Sprachausgabe unterstützen diese Funktion gleichzeitig ausführen und brauchen keinen Master der die Koordination übernimmt. Auf der anderen Seite können aber genauso gut mehrere Geräte die Spracherkennung übernehmen, ja sogar den Sprachdialog implementieren. Ein solches Konzept sollte keine Grenzen haben, lediglich bei der Sprachdialogsteuerung muss man darauf achten, dass nicht mehrere Geräte den gleichen Sprachschatz umsetzen und den CamperVan Service, Home Assistant und/oder jede andere beliebige Steuerung so mit mehrfachbefehlen ansteuern. Nicht zuletzt ist dieses Konzept noch nicht mal auf Freizeitfahrzeuge begrenzt, denn alles ist frei konfigurierbar und so könnte man auch alles Mögliche andere, sofern eine moderne Schnittstelle vorhanden ist, per Sprache steuern.
Dieses offene Konzept, es ist an keine spezielle Campersteuerung gebunden, bringt einige Vorteile mit sich, denn Handys, Tablets usw. werden in erster Linie die TTS umsetzen und ein Autoradio möglicherweise auch die Spracherkennung. Da es keine Begrenzung an Teilnehmern gibt, können alle Geräte die eine Sprachausgabe unterstützen diese Funktion gleichzeitig ausführen und brauchen keinen Master der die Koordination übernimmt. Auf der anderen Seite können aber genauso gut mehrere Geräte die Spracherkennung übernehmen, ja sogar den Sprachdialog implementieren. Ein solches Konzept sollte keine Grenzen haben, lediglich bei der Sprachdialogsteuerung muss man darauf achten, dass nicht mehrere Geräte den gleichen Sprachschatz umsetzen und den CamperVan Service, Home Assistant und/oder jede andere beliebige Steuerung so mit mehrfachbefehlen ansteuern. Nicht zuletzt ist dieses Konzept noch nicht mal auf Freizeitfahrzeuge begrenzt, denn alles ist frei konfigurierbar und so könnte man auch alles Mögliche andere, sofern eine moderne Schnittstelle vorhanden ist, per Sprache steuern.
Das JSON Protokoll
Da die komplette Kommunikation JSON basiert ist, für die Umsetzung nach MQTT habe ich ein eigenes Video erstellt, sind auch die TTS und SDS Kommandos einfache JSON Strukturen:
Für die Sprachausgabe
{"Speech":{"TTS":["Text1","Text2","usw."]}}
Für die Spracherkennung
{"Speech":{"SDS":["Erkanntes Wort","Erkannter Satz","usw."]}}
Ein Gerät welches die Sprachausgabe (TTS) unterstützt wird die Texte im Array TTS der Reihe nach ausgeben/vorlesen. Text1 usw. kann dabei ein Wort oder ein ganzer Satz sein.
Bei der Spracherkennung ist es genau anders rum und im Array SDS werden die erkannten Wörter oder Sätze der Reihe nach aufgelistet. Das SDS System wird die Daten dann entgegen nehmen und entsprechend verarbeiten.
Ein Gerät was den entsprechenden JSON Datensatz nicht verarbeiten kann, ignoriert ihn einfach. So wird ein Handy oder Tablet was nur eine Sprachausgabe implementiert zwar die TTS Daten verarbeiten, die SDS Daten aber ignorieren. Das sollte das ganze System sehr offen für alles halten.
Bei der Spracherkennung ist es genau anders rum und im Array SDS werden die erkannten Wörter oder Sätze der Reihe nach aufgelistet. Das SDS System wird die Daten dann entgegen nehmen und entsprechend verarbeiten.
Ein Gerät was den entsprechenden JSON Datensatz nicht verarbeiten kann, ignoriert ihn einfach. So wird ein Handy oder Tablet was nur eine Sprachausgabe implementiert zwar die TTS Daten verarbeiten, die SDS Daten aber ignorieren. Das sollte das ganze System sehr offen für alles halten.
Die Sprachdialogsteuerung (SDS)
Wie oben schon beschrieben war eines der Ziele bei der Entwicklung des Sprachdialoges, dass dieser völlig unabhängig von unserer Camper Steuerung sein soll und so alles, von den zu sprechenden Sequenzen, bis hin zu den Aktionen die darauf folgen, völlig frei einstellbar sein soll. Es gibt weder Wörter, Sätze die vorgeschrieben wären, noch sind irgendwelche Abhängigkeiten zu dem zu steuernden Gerät vorhanden. Viel mehr noch, der Sprachdialog ist so frei konfigurierbar, dass er an jede x-beliebige Umgebung angepasst werden kann. Alles was es braucht, ist ein Netzwerkinterface über das kommuniziert werden kann und eine Gegenstelle die das oben benannte einfache JSON Konstrukt versteht. Bei der Einfachheit, es sind ja nur 2 triviale Strukturen, sollte das aber für jede halbwegs moderne Steuerung kein Problem darstellen.
Wer schon mal mit Sprachsteuerungen gearbeitet hat, der weiß, dass jeder so seine eigene Art der Kommunikation anwendet und wenn es nicht darauf hinauslaufen soll irgendwelche vorgegebenen Sequenzen auswendig zu lernen, dann bleibt eigentlich nur ein System, dass völlig frei an die persönlichen Vorlieben anpassbar ist. Es muss aber eben auch so viel Intelligenz besitzen, dass überflüssige Dinge, wie z.B. Höflichkeitswörter, erkannt und ausgeblendet werden können. Ein Satz wie "Hallo mein allerliebster Camper, könntest Du bitte für mich das Board Licht anmachen“ muss zum gleichen Ergebnis führen wie „Camper Board Licht einschalten“. Genau das wurde in dem Sprachdialog den ich hier vorstelle umgesetzt. Und natürlich noch viel mehr, wie in der folgenden Videobeschreibung deutlich wird.
Videoanleitung zur Sprachdialogsteuerung
Diese Videoanleitung ist als Bedienungsanleitung erstellt worden und soll vermitteln wie die Sprachdialogsteuerung konkret in eurer eigenen Umgebung eingesetzt werden kann. Ich habe versucht alle Aspekte zumindest mal anzuschneiden, die Möglichkeiten sind aber so umfangreich, dass selbst in einem Video mit Überlänge, wie diesem, nicht alles bis ins Detail gezeigt werden kann. Bei Fragen also gerne in der Telegram Gruppe nachfragen.
Camper Control Android App zur Sprachsteuerung
Der Einstellungsdialog der Camper Control Android App bietet neben der Möglichkeit die Sprachsteuerung auf dem Autoradio, dem Handy oder einem Tablet, zu nutzen auch erweiterte Tools um Sprachdialoge einfach zu testen. So müssen die zu testenden Dialoge nicht immer wieder wiederholt werden und können einfach über das Textfeld getestet werden.

(1) Sprachausgabe aktivieren. Die Sprachausgabe läuft eigenständig im Hintergrund, so sind gesprochene Nachrichten der smarten Camper Steuerung auch zu hören wenn sich die App im Hintergrund befindet.
(2) Eingabefeld zur Eingabe von Text der testweise gesprochen werden soll.
(3) Schaltfläche zum starten der Sprachausgabe.
(4) Spracherkennung aktivieren.
(5) Die Spracherkennung kann über die Option PTT (PushToTalk) so konfiguriert werden, dass die Sprechtaste am Lenkrad oder einem Headset zum Starten der Spracherkennung genutzt wird. Wird ein solcher Knopf angelernt findet sich hier der dazugehörige Gerätecode.
(6) Konfigurationsoptionen welche Spracherkennung zur Verwendung kommen soll. Standard = Cloudbasierte Erkennung (beste Ergebnisse), Offline = Lokale Offline Spracherkennung über den Internen Erkenner, oder einer anderen Offline Erkennung über Sherpa.
(7) Konfiguration zum Sherpa Offline Spracherkennungsmodul.
(8) Optionen für die Spracherkennung:
- Hintergrund = Die Spracherkennung ist immer aktiv, auch wenn die App im Hintergrund ist
oder das Gerät den Bildschirm abschaltet.
- Aktiv = Die Spracherkennung ist nur aktiv wenn die App sichtbar im Vordergrund läuft.
- PTT = Die Spracherkennung muss aktiv über einen PTT Knopf am Lenkrad oder Headset
aktiviert werden. In diesem Modus schaltet sich die Spracherkennung nach einer
erfolgreichen Erkennung oder nach einem Timeout selbstständig wieder ab.
(9) Testknopf für die Push To Talk Funktion:
(10) In diesem Feld wird der erkannte Sprachdialog als Text wiedergegeben. Der Text ist während der Erkennung kursiv und nach Abschluss der Erkennung normal dargestellt. In das Feld können auch eigene Texte ohne sie zu sprechen eingegeben werden.
(11) Sendet den Text im Erkennungsfeld zu testzwecken an die Sprachdialogsteuerung. So können Texte mehrfach oder ohne sie konkret zu sprechen an die Sprachdialogsteuerung gesendet und getestet werden.
(2) Eingabefeld zur Eingabe von Text der testweise gesprochen werden soll.
(3) Schaltfläche zum starten der Sprachausgabe.
(4) Spracherkennung aktivieren.
(5) Die Spracherkennung kann über die Option PTT (PushToTalk) so konfiguriert werden, dass die Sprechtaste am Lenkrad oder einem Headset zum Starten der Spracherkennung genutzt wird. Wird ein solcher Knopf angelernt findet sich hier der dazugehörige Gerätecode.
(6) Konfigurationsoptionen welche Spracherkennung zur Verwendung kommen soll. Standard = Cloudbasierte Erkennung (beste Ergebnisse), Offline = Lokale Offline Spracherkennung über den Internen Erkenner, oder einer anderen Offline Erkennung über Sherpa.
(7) Konfiguration zum Sherpa Offline Spracherkennungsmodul.
(8) Optionen für die Spracherkennung:
- Hintergrund = Die Spracherkennung ist immer aktiv, auch wenn die App im Hintergrund ist
oder das Gerät den Bildschirm abschaltet.
- Aktiv = Die Spracherkennung ist nur aktiv wenn die App sichtbar im Vordergrund läuft.
- PTT = Die Spracherkennung muss aktiv über einen PTT Knopf am Lenkrad oder Headset
aktiviert werden. In diesem Modus schaltet sich die Spracherkennung nach einer
erfolgreichen Erkennung oder nach einem Timeout selbstständig wieder ab.
(9) Testknopf für die Push To Talk Funktion:
(10) In diesem Feld wird der erkannte Sprachdialog als Text wiedergegeben. Der Text ist während der Erkennung kursiv und nach Abschluss der Erkennung normal dargestellt. In das Feld können auch eigene Texte ohne sie zu sprechen eingegeben werden.
(11) Sendet den Text im Erkennungsfeld zu testzwecken an die Sprachdialogsteuerung. So können Texte mehrfach oder ohne sie konkret zu sprechen an die Sprachdialogsteuerung gesendet und getestet werden.
Konkrete Beispiele aus der Praxis
To be continued ...




