ioBroker Visualisierung mit lovelace – Teil 19 – Sprachsteuerung

In diesem Artikel zeige ich Dir die Einsatzmöglichkeiten der Sprachsteuerung der Lovelace Visualisierung.

In der Menüleiste der Lovelace-Visualisierung befindet sich seit neuestem ein neues Mikrofon-Symbol, mit dem die Sprachsteuerung aufgerufen werden kann.

Mit einem Klick auf das Symbol wird die neue View zur Sprachsteuerung geöffnet. In der View kannst Du entweder einen Text eingeben oder die Speech-To-Text Funktion verwenden. Die In das Feld eingegeben Texte können dann in ioBroker weiterverarbeitet werden.

Wenn wir uns nun die Objekte des Lovelace-Adapters ansehen, erkennen wir hier direkt einen neuen Datenpunkt conversion. In diesem Datenpunkt werden die Eingaben der Sprachsteuerung empfangen. Zudem können wir über diesen Datenpunkt auch antworten zur Verfügung stellen. Die Unterscheidung zwischen Frage und Antwort wird über ack-State gesteuert. Fragen werden mit dem State act=false empfangen. Antworten können wir per setState so direkt mit dem State act=true an die Visualisierung senden.

Im nächsten Schritt habe ich für die Sprachsteuerung ein neues Script angelegt, mit dem wir uns einen kleinen ChatBot aufbauen werden. Im folgenden Screenshot zeige ich Dir das Script, mit dem der Rasensprenger über die Sprachsteuerung gesteuert werden kann.

Den Beispiel-Chatbot kannst Du hier bequem direkt in Dein Script übernehmen:

on({id: 'lovelace.0.conversation', ack: false, change: 'any'}, obj => {
   if (obj.state.val.includes('Rasensprenger')) {    
      if (obj.state.val.includes('Rasensprenger an')) {
        setState('0_userdata.0.Devices.Bewaesserung.Rasensprenger1',true,true);
        setState('lovelace.0.conversation', "Rasensprenger eingeschaltet", true);
      }
      if (obj.state.val.includes('Rasensprenger aus')) {
        setState('0_userdata.0.Devices.Bewaesserung.Rasensprenger1',false,true);
        setState('lovelace.0.conversation', "Rasensprenger ausgeschaltet", true);
      }      
   } else {
      setState('lovelace.0.conversation', 'Ich habe Dich leider nicht verstanden 😵', true);
   }
});

Im Script erstellen wir uns einen Trigger (on-Subscription) auf den lovelace conversation Datenpunkt. Hierbei lösen wir den Trigger nur für Ereignisse mit dem ack-State false aus, da wir ja nur auf Fragen reagieren wollen. Im Script prüfen wir dann, ob Texte zur Steuerung unseres Rasensprengers enthalten sind. Wenn wir unsere definierten Keywords zur Steuerung von Aktoren finden, können wir dann die entsprechenden Aktionen ausführen. Zudem senden wir per setState(…) auch direkt eine Antwort an die Visualisierung. Hierbei ist es wichtig, den ack-State auf true zu setzen.

In den folgenden Screenshots zeige ich Dir, wie die Unterhaltung mit dem ChatBot funktioniert. Im ersten Screenshot siehst Du die Steuerung des Rasensprengers.

Im zweiten Screenshot konnte der Befehl nicht verstanden werden, da wir diesen Befehl im Script nach implementiert haben.

Grundsätzlich finde ich die Sprachsteuerung technisch sehr gut gelöst. Die Integration per Datenpunkt in ioBroker sowie die Umsetzung über das ack-State ist genial und ermöglicht so eine sehr einfache und flexible Steuerung und Implementierung eines eigenen ChatBots.

Die Frage für mich stellt sich nur darin, ob in einer Visualisierung wirklich eine Sprachsteuerung benötigt wird. Ich kann alle Aktoren direkt per Klick auf die jeweiligen Buttons aktivieren oder deaktivieren. Hier ist der zusätzliche Schritt über die Sprachsteuerung eigentlich eher umständlich. Ich bin mal auf euere Meinungen sowie vielleicht auch Einsatzzwecke gespannt, schreibt mir doch mal, wie ihr die Sprachsteuerung einsetzt.

Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.