FHEM Forum

FHEM => Frontends => Sprachsteuerung => Thema gestartet von: drhirn am 17 November 2022, 17:22:52

Titel: [Rhasspy] rhasspySpecials - confirm ignoriert $Value
Beitrag von: drhirn am 17 November 2022, 17:22:52
Hi,

habe gerade zum ersten Mal heuer die Heizung eingeschalten und dabei ist mir aufgefallen, dass RHASSPY zwar brav nachfragt, ob es wirklich soll. In der Frage aber leider die Anzahl Grad vergisst:
RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/tts/say => {"text": "Soll heizung wirklich auf  Grad gestellt werden?", "siteId": "wohnzimmer.pc", "lang": null, "id": "dc655243-01ee-46d0-a0b7-aa59c469a673", "sessionId": "wohnzimmer.pc-porcupine_raspberry-pi-518d1ab0-119d-4af7-bde3-fe518b1c4a51", "volume": null}

Definiert ist das ganze so:

attr hmThermostatWz_Climate rhasspyMapping SetNumeric:step=0.5,cmd=desired-temp,type=desired-temp,maxVal=23,minVal=10,currentVal=desired-temp\
SetOnOff:cmdOn=desired-temp 22.5,cmdOff=desired-temp off\
attr hmThermostatWz_Climate rhasspySpecials confirm: SetNumeric="Soll $target wirklich auf $Value Grad gestellt werden?" SetOnOff="Soll ich die $target wirklich $Value schalten?"


Und die Kommunikation davor sieht so aus:

2022.11.17 17:14:59 5: Response is: Soll heizung wirklich auf  Grad gestellt werden?
2022.11.17 17:14:59 5: [Rhasspy] setting  Timer: Rhasspy_wohnzimmer.pc-porcupine_raspberry-pi-518d1ab0-119d-4af7-bde3-fe518b1c4a51 2022-11-17 17:15:19
2022.11.17 17:14:59 5: [Rhasspy] getNeedsConfirmation is true on device level, response is Soll heizung wirklich auf  Grad gestellt werden?
2022.11.17 17:14:59 5: [Rhasspy] getNeedsConfirmation called, regex is hmThermostatWz_Climate
2022.11.17 17:14:59 5: Device selected (by hash, with room and name): hmThermostatWz_Climate
2022.11.17 17:14:59 5: room is identified using siteId as wohnzimmer
2022.11.17 17:14:59 5: handleIntentSetNumeric called
2022.11.17 17:14:59 5: Parsed value: grad for key: Unit
2022.11.17 17:14:59 5: Parsed value: stelle die heizung bitte auf einundzwanzig grad for key: rawInput
2022.11.17 17:14:59 5: Parsed value: porcupine_raspberry-pi for key: customData
2022.11.17 17:14:59 5: Parsed value: stelle die heizung bitte auf 21 grad for key: input
2022.11.17 17:14:59 5: Parsed value: 1 for key: confidence
2022.11.17 17:14:59 5: Parsed value: 21 for key: Value
2022.11.17 17:14:59 5: Parsed value: SetNumeric for key: intent
2022.11.17 17:14:59 5: Parsed value: wohnzimmer.pc for key: siteId
2022.11.17 17:14:59 5: Parsed value: wohnzimmer.pc-porcupine_raspberry-pi-518d1ab0-119d-4af7-bde3-fe518b1c4a51 for key: sessionId
2022.11.17 17:14:59 5: Parsed value: heizung for key: Device
2022.11.17 17:14:59 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_SetNumeric => {"input": "stelle die heizung bitte auf 21 grad", "intent": {"intentName": "de.fhem:SetNumeric", "confidenceScore": 1.0}, "siteId": "wohnzimmer.pc", "id": null, "slots": [{"entity": "de.fhem.Device-SetNumeric", "value": {"kind": "Unknown", "value": "heizung"}, "slotName": "Device", "rawValue": "heizung", "confidence": 1.0, "range": {"start": 11, "end": 18, "rawStart": 11, "rawEnd": 18}}, {"entity": "rhasspy/number", "value": {"kind": "Number", "value": 21}, "slotName": "Value", "rawValue": "einundzwanzig", "confidence": 1.0, "range": {"start": 29, "end": 31, "rawStart": 29, "rawEnd": 42}}, {"entity": "Unit", "value": {"kind": "Unknown", "value": "grad"}, "slotName": "Unit", "rawValue": "grad", "confidence": 1.0, "range": {"start": 32, "end": 36, "rawStart": 43, "rawEnd": 47}}], "sessionId": "wohnzimmer.pc-porcupine_raspberry-pi-518d1ab0-119d-4af7-bde3-fe518b1c4a51", "customData": "porcupine_raspberry-pi", "asrTokens": [[{"value": "stelle", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 6, "time": null}, {"value": "die", "confidence": 1.0, "rangeStart": 7, "rangeEnd": 10, "time": null}, {"value": "heizung", "confidence": 1.0, "rangeStart": 11, "rangeEnd": 18, "time": null}, {"value": "bitte", "confidence": 1.0, "rangeStart": 19, "rangeEnd": 24, "time": null}, {"value": "auf", "confidence": 1.0, "rangeStart": 25, "rangeEnd": 28, "time": null}, {"value": "21", "confidence": 1.0, "rangeStart": 29, "rangeEnd": 31, "time": null}, {"value": "grad", "confidence": 1.0, "rangeStart": 32, "rangeEnd": 36, "time": null}]], "asrConfidence": 1.0, "rawInput": "stelle die heizung bitte auf einundzwanzig grad", "wakewordId": "porcupine_raspberry-pi", "lang": null}
2022.11.17 17:14:59 5: Parsed value: 0.75 for key: confidence


Hab ich da was falsch gemacht?

Danke!
Stefan
Titel: Antw:[Rhasspy] rhasspySpecials - confirm ignoriert $Value
Beitrag von: Beta-User am 17 November 2022, 17:31:57
Hmm, auf die Schnelle könnte es daran liegen, dass bei on/off $Value verwendet wird und bei numerischen Angaben $value? (Müßte aber in den Code schauen, testen geht vermutlich schneller).
Titel: Antw:[Rhasspy] rhasspySpecials - confirm ignoriert $Value
Beitrag von: drhirn am 17 November 2022, 17:48:13
Du meinst so? Oder habe ich dich falsch verstanden?
attr hmThermostatWz_Climate rhasspySpecials confirm: SetNumeric="Soll $target wirklich auf $Value Grad gestellt werden?" SetOnOff="Soll ich die $target wirklich $value schalten?"
Geht nämlich auch nicht.
Titel: Antw:[Rhasspy] rhasspySpecials - confirm ignoriert $Value
Beitrag von: Beta-User am 17 November 2022, 17:50:12
Anders rum...
Titel: Antw:[Rhasspy] rhasspySpecials - confirm ignoriert $Value
Beitrag von: drhirn am 17 November 2022, 17:51:42
Hmpf, sorry. Trotzdem keine Änderung.
Titel: Antw:[Rhasspy] rhasspySpecials - confirm ignoriert $Value
Beitrag von: Beta-User am 18 November 2022, 06:53:31
Hmm, also $Value müßte doch eigentlich passen, die Frage ist, an welcher Stelle das verloren geht bzw. nicht sauber übergeben/aufgelöst wird.

Im Moment habe ich #2454 in Verdacht, die sollte vermutlich noch eine Abfrage enthalten und dann so aussehen:
$Value  = $words->{$data->{Value}} if defined $data->{Value} && defined $words->{$data->{Value}};
Titel: Antw:[Rhasspy] rhasspySpecials - confirm ignoriert $Value
Beitrag von: drhirn am 18 November 2022, 09:03:08
Ja, so funktioniert's. Super!
Titel: Antw:[Rhasspy] rhasspySpecials - confirm ignoriert $Value
Beitrag von: Beta-User am 18 November 2022, 09:17:10
Thx für's testen, ich check's bei Gelegenheit ein (falls du es nicht machen magst).

Frage noch: wenn da eine (nach DE-Verständnis) Komma-Zahl (z.B. 22.5) rauskommt - wird die dann sauber in Sprache übersetzt? (Es müßte eigentlich dann noch "hintendrein" auch sauber weitergehen, aber getestet habe ich das auch noch nicht).
Titel: Antw:[Rhasspy] rhasspySpecials - confirm ignoriert $Value
Beitrag von: drhirn am 18 November 2022, 09:27:01
Ja, das funktioniert.

Hab's eingecheckt.