RHASSPY INTENT HANDLER FOR OPENHAB (RHINO)

Zur Verbindung von Rhasspy, einem Sprachassistenten, und openHAB, habe ich ein kleines Python-Programm geschrieben, was die erkannten Befehle von Rhasspy verarbeitet und mit Hilfe von openHAB auswertet. Das Programm läuft in einem Docker-Container.

Das Tool kann auf github heruntergeladen werden: https://github.com/vanseforge/rhino

Hier noch die Beschreibung von github auf Deutsch:

RHINO (RHASSPY INTENT HANDLER FOR OPENHAB) ist ein einfacher Intent-Handler für Rhasspy mit einer Verbindung zu openHAB. Einige Skills sind bereits eingebaut und es ist auch möglich, eigene Skills zu schreiben (Ordner „ext_modules“).

Verfügbare Skills:

Licht an/ausschalten
Erzählen eines Witzes
Gaming-Modus aktivieren
"Tagesschau in 100 s" abspielen
Außentemperatur abfragen
Wetter abfragen
Uhrzeit/Tag abfragen
Würfeln
Hallo, Guten Morgen, Gute Nacht, Danke sagen
Einen Timer starten

Installation und Konfiguration

Installation

Klone diese Repository:

git clone https://github.com/vanseforge/rhino

Navigiere zu dem geklonten Verzeichnis, in dem sich die Dockerdatei befindet.

Docker-Befehlszeile:

docker image build -t rhino .
docker run -d -v dein_ordner/settings.yml:/usr/app/rhino/rhino/settings.yml,dein_ordner/ext_modules:/usr/app/rhino/rhino/ext_modules --name rhino rhino

Die Datei settings.yml sollte auf die eigene Einstellungsdatei verweisen. Der Ordner ext_modules sollte auf einen Ordner mit den eigenen Skills verweisen (optional).

In Rhasspy müssen die Sätze für die verwendeten Intents geschreiben werden. Ein Beispiel befindet sich im Ordner rhasspy_sentences. Die Übersetzung der Licht-Namen in die openHAB-Items muss im „sentence file“ in Rhasspy vorgenommen werden.
Konfiguration

Die Einstellungen in der Datei settings.yml anpassen.

Beispiel für settings.yml:

general:
  timezone: 'Europe/Berlin'
  locale: 'de_DE.UTF-8'
  language: 'de'
  alarm_sound: 'alarm.wav'
openHAB:
  http_url: 'http://10.0.0.3:8080'
  items:
    outside_temperature: 'HeatPump_Temperature_1'
    weather_condition: 'Weather_OWM_Condition'
    gaming: 'Gaming'
rhasspy:
  http_url: 'http://10.0.0.2:12101'
  websocket_url: 'ws://10.0.0.2:12101'

Wie man eigene Skills (Fähigkeiten) schreibt

Es muss nur eine Funktion erstellt werden, die den Namen des Intenss trägt und zwei Parameter hat (Daten von Rhasspy und die Site-ID). Die Daten von Rhasspy sind der JSON-String von Rhasspy und die Site-ID ist die ID des Rhasspy-Satelliten.

Beispiel

def Test(data, siteId):
  text = "Ich bin eine Testfunktion für ein Benutzermodul"
  print("TEST!")
  speak(text, siteId)

Kommentar hinterlassen

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