Skip to end of metadata
Go to start of metadata
Autor
Logo

Status

UNSTABLE

Version0.5.1
Min. LB Version

LB 1.0

Download
ZweckDieses Plugin installiert Kalliope auf dem LoxBerry und ermöglicht damit einen persönlichen Sprachassistenten, eine Sprachsteuerung des Miniservers und eine Sprachausgabe.
LanguagesEN, DE
 Version History...

Version 0.5.1

  •  Verbesserungen am Webfrontend
  • Unterstützung von globalen Variablen in Kalliope
  • Unterstützung von kalliope 5.2, Loxberry 1.2.5
  • Plugin Upgrade ermöglicht
  • kleinere Korrekturen und Fehlerbehebungen

Version 0.5.0-beta.1 (nur LB 1.0)

  • update for LoxBerry >1.0
  • updated to Kalliope 0.5.0

Version 0.3

  • Verbesserte Einstellungsseite auf dem LoxBerry inklusive Hinweisen zur Benutzung

Version 0.2

  • Kalliope 0.4.3
  • Einfache Plugin Einstellungsseite
  • Englisch und Deutsch

Version 0.1

  • erste öffentliche Version


Inhalt



Download

nicht mehr unterstützte  Version für veraltete LoxBerry Version:

LB 0.2.3 https://github.com/andweber/loxberry-plugin-kalliope/archive/v0.3.0.zip

Entwicklung, neuster Entwicklungsstand:

LB 1.0https://github.com/andweber/loxberry-plugin-kalliope/archive/v0.5.1.zip

Quellcode: https://github.com/andweber/loxberry-plugin-kalliope/

Hinweis zur Benutzung

In der Standardkonfiguration sendet Kalliope aufgezeichnete Sprache/Geräusche zur Spracherkennung an einen Cloud-Anbieter (siehe Erklärungen unter "Funktion des Plugins"). Eine Audioaufzeichnung zur Spracherkennung erfolgt nur nach dem Schlagwort <Kalliope>. Da die Schlagworterkennung im Deutschen jedoch noch fehleranfällig ist, können auch andere Mitschnitte erstellt werden.

Soll das Plugin nur zur Sprachausgabe für den Miniserver verwendet werden, dann am Besten kein Mikrofon anstecken, dann erfolgt auch keine Aufnahme. Ein deaktivieren der Spracherkennung im Webfrontend ist bisher nicht möglich.

Installation


Kalliope benötigt ein an den LoxBerry angeschlossenen Lautsprecher (HDMI oder Analog) und ein Mikrofon. Für die Einstellung von Mikrofon und Lautsprecher hilft das Plugin: ALSA Tools.

Die Spracherkennung erfolgt über Cloud-Anbieter es ist daher eine Verbindung zum Internet notwendig.

Das Plugin unterstützt in der derzeitigen Version noch kein Upgrade. Die Einstellungen gehen damit bei einer Neuinstallation verloren. Den LoxBerry nach der Neuinstallation neu starten.

Konfigurationsoptionen

Das Webfrontend erlaubt einen Test der Hardware (Mikrofon und Lautsprecher), die Anpassung der Einstellungen und einen Test der Funktion.

Das Plugin installiert bereits eine Auswahl an Zusatzmodulen und Verknüpfungen, darunter ein Modul für die Steuerung eines Miniservers. In der Kalliope Dokumentation befindet sich eine ausführliche Erklärung der verschiedenen Optionen.

Funktion des Plugins


Das Plugin stellt zunächst eine Standardinstallation von Kalliope auf dem LoxBerry zur Verfügung. Diese kann individuell angepasst und auch ohne Miniserver genutzt werden. Die Spracherkennung erfolgt über einen Cloud-Anbieter. Der Could-Anbieter kann konfiguriert werden. Dazu muss ein eigener Schlüssel erstellt werden. Kalliope unterstützt auch eine lokale Spracherkennung - allerdings ist dazu für deutsch Konfigurationsaufwand und ein manuelles Training notwendig. Kalliope lauscht permanent über das Mikrofon auf den Aufruf "Kalliope". Diese Erkennung erfolgt lokal auf dem LoxBerry. Kalliope fordert dann auf einen Sprachbefehl zu nennen. Dieser Teil wird aufgenommen und an einen Cloud-Anbieter zur Erkennung geschickt. Kalliope erhält den Sprachbefehl in Textform zurück und reagiert entsprechend der individualisierbaren Konfiguration. Ein Video unter   https://kalliope-project.github.io/ zeigt die Funktionsweise.

Steuerung des Miniservers

Das Plugin installiert zudem eine Erweiterung von Kalliope, welche es erlaubt den Miniserver über Sprachbefehle zu steuern. Insbesondere diese Erweiterung ist experimentell. Sie erlaubt mit Version 0.1.0 aber bereits eine primitive Sprachsteuerung.

Sprachbefehl:

Kalliope <auf Aufforderung warten> Schalte das <Name> an/aus

<Name> ist dabei die Eigenschaft "Beschreibung" eines Bausteins in der Loxone Config (also z.B. eines Tasters für Licht).

Welche Elemente zur Verfügung stehen, wird automatisch vom Miniserver abgefragt. Die Abfrage erfolgt jedoch derzeit noch bei jedem Sprachbefehl und erzeugt damit ggf. eine spürbare Belastung des Miniservers. Bei mehreren Miniservern wird derzeit nur der in der LoxBerry-Config hinterlegte 1. Miniserver verwendet.

Steuerung von anderen Geräten

Kalliope ist in der Lage beliebige Geräte über Web-Aufrufe zu steuern. Eine Konfiguration ist derzeit nur manuell möglich. Dabei müssen die Konfigurationsdateien auf dem LoxBerry unter:

/LoxBerry/config/plugins/kalliope_loxscontrol/brains

angepasst werden. Eine Erklärung gibt die Kalliope Dokumentation, derzeit nur in Englisch.  Auf diese Weise ist auch eine individuelle Steuerung des Miniservers möglich.

Sprachausgabe

Das Plugin kann als Sprachausgabe (TTS) für den Miniserver fungieren. Feste vordefinierte Ansagen können wie folgt ausgegeben werden:

Virtuellen Ausgang anlegen mit: http://admin:secret@<IP-des-Loxberry>:5000

Virtueller Ausgang Befehl:

Befehl bei ein: /synapses/start/order

HTTP-Methode bei EIN: POST

HTTP-Erweiterung: Content-Type: application/json

HTTP-POST-Befehl: {"order":"loxberry-install-finished"}


Der Zugang (admin:secret) und der Port (hier 5000) kann über das Webfrontend konfiguriert werden. Anstelle von "loxberry-install-finished" kann ein beliebiger Befehl aufgerufen werden. Die Definition ist bisher nicht über das Webfrontend möglich.

Auf dem Loxberry unter config/plugins/kalliope_loxscontrol/brains liegen die entsprechenden Definitionen. Das obige Beispiel befindet sich in der Datei: de_loxberry_install.yml. Weitere Erklärungen gibt die Kalliope Dokumentation derzeit nur in Englisch.

Über:

HTTP-POST-Befehl: {"order":"api-repeat-cmd Dies ist eine Beispielansage"}

lässt sich ein beliebiger Text ansagen (ab Version 0.3.1). 


Anpassung

Über Zusatzmodule (genannt Neuronen) und eine individualisierbare Verknüpfung von Sprachbefehlen mit Aktionen (genannt Synapsen), kann Kalliope angepasst werden. Im "Config"-Ordner des Plugins befindet sich der sogenannte "brain" von Kalliope und kann individuell angepasst werden.

Einrichtung in der Loxone Config Software


Für die Steuerung des Miniservers sind keine Anpassungen in der Loxone Config notwendig. Das Plugin lädt selbstständig die Konfiguration des Miniservers.

Soll das Plugin als Sprachausgabe verwendet werden, so erfolgt dies über entsprechende Virtuelle Ausgangsbefehle.

Roadmap

Eine aktuelle Liste ist auf https://github.com/andweber/loxberry-plugin-kalliope/ zu finden. Geplant sind:

  1. Die Konfiguration über das Webfrontend des LoxBerry
  2. Eine Erweiterung der Funktionalität der Sprachsteuerung

Fragen stellen und Fehler melden


Für Themen die das Plugin betreffen: https://github.com/andweber/loxberry-plugin-kalliope/

Für Themen, welche die Sprachsteuerung des Miniservers mit Kalliope betreffen: https://github.com/andweber/kalliope_neuron_loxscontrol



6 Comments

  1. Könntest du ein Beispiel für einen simplen TTS Rest-API Aufruf (um einen simplen String vorlesen lassen zu können) veröffentlichen? Ich war leider nicht im Stande dies zusammen zu bekommen. 

    1. also die Theorie für ein einfaches Beispiel geht wie folgt:

      Virtuellen Ausgang definieren. Adresse nach dem Schema:

      http://loxuser:loxpasswort@LoxberryIP:Port_der_Fernsteuerung

      (das Webfrontend bietet Beispiele mit korrekten Werten - nur noch nicht den gesamten Befehl -das korrigiere ich noch)

      Ausgangsbefehl definieren

      Befehl: /synapses/start/id/loxberry-install-finished

      HTTP-Methode bei EIN: POST

      Mein Loxone 7.4.4 sendet ein GET statt ein POST und scheitert damit? Ich habe noch nicht geprüft, ob dies ein bekannter Bug ist, bzw. wie dies bei neuen Versionen aussieht.

       

      Das Beispiel ruft einen vordefinierten Text auf. Man müßte aber auch direkt eine Order aufrufen können, das sollte wie folgt funktionieren:

      Befehl: /synapses/start/order

      HTTP-Methode bei EIN: POST

      HTTP-Erweiterung: Content-Type: application/json

      HTTP-POST-Befehl: {"order":"my order"}

       

      Es gibt dann ein Neuron https://github.com/bacardi55/kalliope-repeat welches ein Text wiederholt. Damit könnte man direkt einen Ausgangsbefehl erstellen, welcher Text ansagen läßt.

      Wie gesagt soviel zu Theorie - in der Praxis scheitere ich auch bereits am GET. Aber es würde mich freuen, wenn wir das zum Laufen bekommen.

       

      1. Okay, dabei kann ich behilflich sein. Habe es geschafft das Equivalent des Bash Befehls

        curl -i --user admin:secret -X POST http://<IP-des-Loxberrys>:5000/synapses/start/id/loxberry-install-finished

        von Loxone aus zu triggern. 

        Die Einstellungen sind wiefolgt: 

        Virtueller Ausgang

        Adresse: http://admin:secret@<IP-des-Loxberrys>:5000   ← Port 5000 scheint der Standardport von Kalliope zu sein.  

        Virtueller Ausgang Befehl

        Befehl bei ein: /synapses/start/id/loxberry-install-finished ← ist ein Get, darf aber anscheinend nicht leer sein, ansonsten passiert gar nix (Debug Log)
        HTTP Erweiterung bei Ein: Content-Type: application/json
        HTTP-Post-Befehl bei Ein: /synapses/start/id/loxberry-install-finished
        HTTP-Methode bei Ein: POST

         

        Und siehe da Kalliope spricht, ABER nur ein mal. Erst nach einem Neustart des Loxberrys funktioniert es wieder. Dieses Verhalten zeigt sich auch beim curl-Befehl. Kann es sein, dass sie auf eine Spracheingabe wartet und vorher keine weiteren Anfragen mehr annimmt. Ich war nämlich auch nicht immer in der Lage die Testbefehle im Webinterface abzuspielen. Der Loxberry wurde neu installiert und auf die aktuellste Version gebracht, anschließen nur die ALSA Tools und Kalliope drauf geladen. Miniserverversion ist bei mir die aktuellste drauf. Eventuell kannst du die o.g. Einstellungen mal in deine 7er Version übernehmen, vielleicht klappt es da ja auch.

         Toll wäre dann halt am Ende auch, wenn man dem Befehl Werte mitgeben könnte, sodass Kalliope diese Werte ausspricht. 

        1. ah super, da habe ich zu früh aufgegeben. Ich habe oben im Text jetzt die bessere Variante eingefügt. Werde dies auch im Webfrontend ergänzen. Damit ist der Aufruf eines Befehls möglich.

          Ich werde mal das repeat neuron mit installieren, damit sollten beliebige Werte möglich sein.

          Der Rest vielleicht besser auf GitHub.

        2. >Toll wäre dann halt am Ende auch, wenn man dem Befehl Werte mitgeben könnte, sodass Kalliope diese Werte ausspricht.

          Das sollte jetzt mit der aktuellen Github-Version möglich sein. Erklärung oben im Text. Achtung Upgrade funktioniert nicht gut, nach der Neuinstallation des Plugins, am Besten den Loxberry neu starten.

          Ich würde erwarten, dass man mit <v> auch Werte oder Text in das HTTP-POST-Befehl Feld in den Virtuellen Ausgangsbefehl übergeben kann. Bisher nicht getestet.

           

  2. Bei mir bricht die Installation mit folgender Fehlermeldung ab:


    CRITICAL: VirtualEnv was not created.
    CRITICAL: Fehler während der Script-Installation, die Installation wurde beendet.


    Verwendete Hardware: Raspberry Pi 3 B+

    Loxberry-Version: 1.2.5.1