SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai

Begonnen von Thyraz, 21 Juli 2018, 20:28:48

Vorheriges Thema - Nächstes Thema

jowe

Naja, im Prinzip sollte das über das Snips Modul in FHEM funktionieren.
Man muss halt den gleichen mqtt Broker für FHEM und Rhasspy verwenden. Bei mir empfängt das Snips Modul die Befehle von Rhasspy auch und führt auch den korrekten Befehl aus. Das dann aber halt in Dauerschleife. Ich muss dann entweder in FHEM die mqtt Verbindung kurz disconnecten oder rhasspy neu starten, um die Schleife zu unterbrechen

drhirn

Nachdem ich das Snips Modul ja überhaupt nicht mehr zum Laufen bekommen, habe ich mich dazu entschieden, die ganze Logik in Rhasspy abzubilden (sentences.ini, slots, ...). In FHEM baue ich dann einfach ein MQTT Device, das auf hermes/nlu/intent/+ hört. Da sollte dann im besten Fall einfach ein set device value ankommen. Und die Aktionen mache ich dann einfach mit DOIFs oder ähnlichem.
So die Theorie.

Aber alles, was ich bisher habe, ist ein Python-Script, mit dem ich sämtliche FHEM-Geräte aus einem bestimmten Raum in einen Rhasspy-Slot bekomme.

drhirn

@jowe: Zu deiner Dauerschleife: Das Snips-Modul empfängt ja Daten von der NLU. Die werden dann umgebaut (Device durch "Standardgerät" ersetzt) und wieder an die NLU gesendet. Außer es kommt in der MQTT Message "fhem.voiceCommand" oder "fhem.textCommand" vor. Ist jetzt nur eine Vermutung, aber kann es sein, dass die Schleife daher kommt, dass keiner der beiden Bestandteile mit- oder zurückgesendet wird? Ich bin leider nicht gut in Perl, um das jetzt auf die Schnelle analysieren zu können. Aber du vielleicht?

jowe

Ja, ich vermute auch, dass genau das das Problem ist. Leider bin ich programmiertechnischer Amateur und bei Perl steig ich erst Recht nicht durch. Ich hatte versucht, den Code zum erneuten Senden an die NLU zu entfernen, allerdings hat es dann garnicht mehr funktioniert. Dehalb bin ich einen ähnlichen Weg gegangen wie du es vor hast. Nur dass ich es über NodeRed in Verbindung mit einem DOIF gemacht habe. Das funktioniert auch in soweit, dass ich Lichter an und aus schalten kann. Aber Funktionalitäten, die auch FHEM Status berücksichtigen sollen funktionieren so halt nicht.
Und das hat die Snips Lösung doch zu einem Großteil ausgemacht: Wenn ich "Radio an" sage, wird erst im aktuellen Raum nach einem Device "Radio" gesucht und dann erst als Fallback im default-Raum. Und wenn ich "stopp" sage, wird das entsprechende Multimediadevice dafür ausgewählt, das aktuell etwas abspielt. usw.
Das ist über externen Code halt kaum zu bewerkstelligen. Deshalb wäre meiner Meinung nach immernoch super, wenn wir eine Lösung fänden, um Thyraz' Modul weiterhin nutzen zu können.
Hattest du denn in deiner sentences.ini die intents und die slots auch wie in Snips benannt? also z.B. so:

[de.fhem:SetOnOff]
$Device{Device} $Room{Room} $SetOnOff{OnOffValue}

drhirn

Ja, da gebe ich dir recht. Das mit "Licht an" und es geht genau da an, wo ich gerade bin, geht mir schon ab.
Ich habe mich gestern auch mal am Umbau des Moduls versucht. Bin aber nicht wirklich weit gekommen.

Und nein, ich habe die Slots/Sätze irgendwie benannt. Deswegen funktioniert bei mir wahrscheinlich auch gerade nichts. Oder es liegt an überhaupt etwas anderem. Ich habe dann testweise mal ein Gerät in Rhasspy "standardgerät" genannt und siehe da, das Modul hat wieder gearbeitet. Musste dann aber meine Versuche abbrechen.

laberlaib

Gude,

ich würde Euch gerne helfen und da mitgrübelnaber ich bekomme Rhasspy auf einem 3B gar nicht zum Laufen

Installation via dicker nach Anleitung. Allerdings findet er keine Geräte.
PS3Eye z.B.

Wie/worauf habt ihr das installiert?
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

drhirn


drcyber

die Option    --device /dev/snd:/dev/snd beim Docker-Start hast du aber schon verwendet?

btw sollten wir nicht langsam mal einen eigenen Thread für Rhasspy anfangen?
Raspberry Pi 3 mit 2x nanoCUL - Jeelink- LGW

drhirn

Zitat von: drcyber am 28 Juli 2020, 13:48:41
btw sollten wir nicht langsam mal einen eigenen Thread für Rhasspy anfangen?

Wäre irgendwie sinnvoll. Müsste nur jemand anfangen damit ;)

jowe

@laberlaib: Ich habe meine Snips-Satelliten so belassen wie sie waren, aktuell ist Snips-Hotword wohl noch die beste Hotword-Erkennung für Rhasspy. Rhasspy selber habe ich auf meinem Nas per Docker installiert. In den Satelliten musste dann nur noch die IP des MQTT Server entprechend von Snips auf Rhasspy angepasst werden. Vielleicht ist das ja eine Option für dich

drhirn