Modulentwicklung für Rhasspy Sprachassistent

Begonnen von drhirn, 11 März 2021, 15:59:50

Vorheriges Thema - Nächstes Thema

Beta-User

Zitat von: drhirn am 31 März 2022, 14:59:58
Versteh ich jetzt nicht. Der Tweak macht ja genau das, was du eh schon eingebaut hast!? Oder hast du das wieder zurückgebaut?
Ja. Aber der default entspricht jetzt dem von dir gewünschten Verhalten, wenn nicht angewendet ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

drhirn

Wenn ich bei meinem Thermostat jetzt - nur zum Testen - einen abgeänderten SetNumeric über rhasspyMapping hinzufüge, habe ich dann beim Export des Mapping zwei SetNumeric Intents. Einer geht laut "list" dann auf desired-temp, der andere auf temperature. Anstatt den anderen zu ersetzen.

Ohne rhasspyMapping:

           intents:
             GetNumeric:
               desired-temp:
                 currentVal desired-temp
                 type       desired-temp
               temperature:
                 currentVal measured-temp
                 type       temperature
             SetNumeric:
               desired-temp:
                 cmd        desired-temp
                 currentVal desired-temp
                 maxVal     28
                 minVal     10
                 step       0.5
                 type       temperature


Mit rhasspyMapping:

           intents:
             GetNumeric:
               desired-temp:
                 currentVal desired-temp
                 type       desired-temp
               temperature:
                 currentVal measured-temp
                 type       temperature
             SetNumeric:
               desired-temp:
                 cmd        desired-temp
                 currentVal desired-temp
                 maxVal     28
                 minVal     10
                 step       0.5
                 type       temperature
               temperature:
                 cmd        desired-temp
                 currentVal desired-temp
                 maxVal     28
                 minVal     10
                 step       0.5
                 type       temperature

Beta-User

 :) Da ist wohl schon der Export kaputt...

Und das Überschreiben klappte auch "schon immer" nicht...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Beta-User

*grummel*
Diese "Sonderlocke" mit desired-temp war irgendwie hartnäckig beim "export", jetzt sollte das mit der svn-Version aber auch gehen. Weiß nur nicht, ob so ein "händisches" Device dann auch funktioniert oder ob das beim Finden der Antwort irgendein Problem gibt...

Weiter habe ich was reingeknödelt, das dann beim "Überschreiben" jeweils die Intents für sich überschreibt, das "falsche" Mapping von gestern sollte jetzt also dahingehend "korrekt" sein, dass kein 2. SetNumeric mehr erscheint. (ist aber nicht groß getestet, sondern schlimmstenfalls genauso kaputt wie bisher).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

drhirn

Nun, ich kann nur positives berichten.

Habe rhasspyMapping gelöscht -> Export wunderbar
Habe rhasspyMapping mit Export-Werten befüllt -> Export wunderbar
Habe einen Intent geändert -> Export wunderbar

Keine doppelten Einträge, keine "falschen" Einträge. Mein Kurztest sagt, es tut genau so, wie ich mir das gewünscht habe. Betonung auf "Kurztest". Danke dir!

Beta-User

Zitat von: drhirn am 01 April 2022, 08:48:00
Mein Kurztest sagt, es tut genau so, wie ich mir das gewünscht habe. Betonung auf "Kurztest". Danke dir!
:)
Danke zurück!

Gehe davon aus, dass der "Kurztest" ausreichend ist, das Problem liegt meistens eher in der Strukturierung (so war es m.E. auch hier). Unklar ist dann nur, ob der "händische" Intent dann auch funktioniert und v.a. auch die passende Antwort kommt. Diesen Teil des Codes hatte ich mir bisher nicht angeschaut, kann sein, dass wir da irgendwann noch eine Sonderlocke wg. desired-temp-type benötigen...
Für's erste können wir ja mal abwarten, ob/wann sich jemand beschwert :P .

Dann bin ich jetzt erst mal auf pah's Rückmeldung zur "kalten Pizza" gespannt ;D , und kau' ansonsten mal gedanklich ein bißchen auf dem "wann ist es sinnvoll, den vorgegebenen Intent zu verlassen"-Thema rum...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Beta-User

Vielleicht hier auch mal was leicht [OT]

Zitat von: drhirn am 30 März 2022, 10:41:52
Bzgl. Scenes wusste ich gar nicht, dass man die jetzt überhaupt steuern kann. Und auch nicht, wie. ;)
Mit einem gewissen Interesse verfolge ich ja hin und wieder, was in "Hogwarts" so los ist: https://community.rhasspy.org/t/hogwarts-assistant/2882

"Szenen" bzw. die Frage, wie man was abfragt, was man Rhasspy so sagt, wenn man was wissen will usw. sind ja echt spannende Geschichten - sowohl sprachlich wie eben auch hinsichtlich der Frage, wie man das "vercoded" bekommt... Und da freut es mich immer, wie vergleichsweise komfortabel man seine jeweiligen individuellen Anforderungen und Gewohnheiten mit dem Gespann FHEM+RHASSPY an und mit Rhasspy umgesetzt bekommt - kein Vergleich zu dem (durchaus interessanten) Verteilen von individualisierten Bruchstücken über (gefühlt) tausende Zeilen Code, wie sie z.B. im letzten Video zu sehen sind....
(Klar: irgendwo muss man festlegen, was wann geschehen soll, und das ist durchaus ein nicht unerheblicher Aufwand, aber der sollte halt für den "Konfigurator" möglichst gering ausfallen).

Wobei das mit dem passenden (schaurigen) Hintergrundgeräusch durchaus was hätte (wenn auch nicht für alle Mitbewohner... ;D )
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

drhirn

Bringt mich auf die Idee, dass man eigentlich auch mit SSH Audio-Files abspielen lassen könnte. Zumindest, wenn der Satellit ein Linux-Derivat ist. Bräuchte dann aber halt ein paar Änderungen an der Sound-Konfiguration, damit die Audioausgabe von Rhasspy nicht geblockt wird. Aber so könnte man dann auch die Timer-Ende Ausgabe abbrechen.

Beta-User

#1298
Zitat von: drhirn am 01 April 2022, 16:25:41
Bringt mich auf die Idee, dass man eigentlich auch mit SSH Audio-Files abspielen lassen könnte. Zumindest, wenn der Satellit ein Linux-Derivat ist. Bräuchte dann aber halt ein paar Änderungen an der Sound-Konfiguration, damit die Audioausgabe von Rhasspy nicht geblockt wird.
Doppelte Wege bzw. Varianten, die nur auf einem "Sonderweg" funktionieren, sind nicht soooo prickelnd. Irgendwie sah das in dem Video so aus, als wäre die doppelte Soundausgabe das Ergebnis einer Mischanweisung an den Audio-Server, aber das kann auch eine Fehlinterpretation sein.

Zitat
Aber so könnte man dann auch die Timer-Ende Ausgabe abbrechen.
Nur zur Sicherheit:
https://rhasspy.readthedocs.io/en/latest/reference/#audioserver_playfinished und das danach folgende
Zitat

       
  • hermes/audioServer/toggleOff (JSON)

            
    • Disable audio output
    • siteId: string = "default" - Hermes site ID
hattest du mal ausprobiert? Kann ja durchaus sein, dass der Audioserver das auch mitliest und nicht nur informatorisch am Ende raushaut...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JensS

#1299
mosquitto_pub -t 'hermes/audioServer/toggleOff' -m '{ "siteId": "default"}'beendet den Audio-Server.
Das bedeutet, dass keine Daten zwischen MQTT und z.B. aplay übergeben werden.
Eine laufende Ausgabe von aplay würde dabei nicht gestoppt.
Eine mögliche Lösung wäre, dass eine neue Session zum Intent [gib Ruhe] mit einer kurzen Antwort "ok" initiiert wird. Dass funktioniert aber nur, wenn ein Echo-Canceling vorhanden ist oder man schreit halt.  ;)
Eine andere Möglichkeit wäre neue playBytes-Anweisung mit einer kurzen (leeren) Audiodatei.

Zum Thema "Hogwarts" - hier braucht sich RHASSPY nicht verstecken und kann bei einer ähnlichen Darstellung ebenfalls Beachtung finden.

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Beta-User

Zitat von: JensS am 02 April 2022, 10:23:12
mosquitto_pub -t 'hermes/audioServer/toggleOff' -m '{ "siteId": "default"}'beendet den Audio-Server.
Das bedeutet, dass keine Daten zwischen MQTT und z.B. aplay übergeben werden.
Eine laufende Ausgabe von aplay würde dabei nicht gestoppt.
Klar, was bereits auf dem Satelliten in Richtung Soundkarte unterwegs ist, bekommt man damit nicht gestoppt.

Zitat
Eine andere Möglichkeit wäre neue playBytes-Anweisung mit einer kurzen (leeren) Audiodatei.
Hmm, wenn ich es richtig interpretiert habe, ging es darum, von FHEM aus "irgendwie" die grade laufende Ausgabe an einem beliebigen Satelliten abzubrechen. Dafür wäre Rhasspy als Input m.E. nicht zwingend, und es wäre auch nicht dramatisch, wenn es "ein wenig" dauert.

Nun ja, vielleicht hat da ja jemand eine Idee, ob sich aus diesem Fragment was basteln läßt...

Zitat
Zum Thema "Hogwarts" - hier braucht sich RHASSPY nicht verstecken und kann bei einer ähnlichen Darstellung ebenfalls Beachtung finden.
:)
Videos drehen ist jetzt nicht so meine Kernkompetenz, und an sich ging es eigentlich auch nicht um "Werbung" mit Hilfe einer "ähnlichen Darstellung", sondern einfach nur darum mitzuteilen, dass ich unsere Lösung einfach "cool" finde  8) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

drhirn

Eigentlich müssten wir ja nur die Wiederholungen abbrechen können. Wenn welche eingestellt sind. Das wäre dann ja wieder eine RHASSPY Geschichte.
Vorausgesetzt, als Ausgabe ist ein kurzes WAV konfiguriert, dass sich wiederholt.

JensS

Zitat von: Beta-User am 02 April 2022, 15:20:06
Hmm, wenn ich es richtig interpretiert habe, ging es darum, von FHEM aus "irgendwie" die grade laufende Ausgabe an einem beliebigen Satelliten abzubrechen.
Da stellt sich die Frage, wie der Abbruch initiiert werden soll.?
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Beta-User

Zitat von: drhirn am 02 April 2022, 16:12:35
Eigentlich müssten wir ja nur die Wiederholungen abbrechen können. Wenn welche eingestellt sind. Das wäre dann ja wieder eine RHASSPY Geschichte.
Vorausgesetzt, als Ausgabe ist ein kurzes WAV konfiguriert, dass sich wiederholt.
Wenn es nur um die Wiederholungen geht, ist das an sich kein größeres Problem: das at definiert sich jeweils selbst wieder, wenn ich das richtig im Kopf habe => delete-Befehl von FHEM aus bzw. CancelTimer-Intent, falls man Rhasspy zum Zuhören überreden kann... Man muss nur wissen, welche Textbausteinchen da verarbeitet wurden, um das (temporäre) at zu benennen  ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JensS

Kurze Frage - wie überrede ich das RHASSPY-Device, ein textCommand mit der siteId=wohnzimmer aufzurufen?
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.