Modulentwicklung für Rhasspy Sprachassistent

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

Vorheriges Thema - Nächstes Thema

JensS

#1050
Wie sieht der Ablauf mitmosquitto_sub -v -t hermes/hotword/# -t hermes/dialogueManager/# -t hermes/asr/# -t hermes/audioServer/+/playFinished -t hermes/nlu/# -t hermes/error/# -t hermes/tts/# -t hermes/feedback/#aus?

p.s. Doofe Frage:
Hast du "Audio Playing" auf "Hermes MQTT" gestellt?
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.

Prof. Dr. Peter Henning

ZitatHast du "Audio Playing" auf "Hermes MQTT" gestellt?
Nein.Warum auch ?

Die Antwort auf die erste Frage: Check ich morgen mal.

LG

pah

JensS

#1052
Das Ganze hat dann doch spät abends meinen Ehrgeiz gepackt und daraus ist eine kleine TTS entstanden:#!/usr/bin/perl -w
use Net::MQTT::Simple;
use JSON;
use strict;

my $mqtt = Net::MQTT::Simple->new("localhost");
$mqtt->run(
    "hermes/tts/say" => sub {
        my ($topic, $message) = @_;
        my $tts_json = JSON->new->allow_nonref->decode( $message );
        my $siteId = $tts_json->{siteId};
        my $id = $tts_json->{id};
        my $sessionId = $tts_json->{sessionId};
        my $text = '"'.$tts_json->{text}.'"';
        my $ausgabe = {id => $id, sessionId => $sessionId, siteId => $siteId};
        my $sayFinish = JSON->new->utf8->encode( $ausgabe );
        qx(pico2wave -l "de-DE" -w test.wav $text);
        $mqtt->publish("hermes/tts/sayFinished" => $sayFinish);
        qx(aplay test.wav);
        my $playausgabe = {id => $id, sessionId => $sessionId};
        my $playFinish = JSON->new->utf8->encode( $playausgabe );
        $mqtt->publish("hermes/audioServer/$siteId/playFinished" => $playFinish);
    },
);

Bei der Base steht TTS auf "Hermes MQTT" und beim Satelliten ist nur "Audio Recording" und "Wake Word" aktiv. Die Sprachausgabe lasse ich mit aplay auf der Base ausgeben.mosquitto_sub -v -t hermes/hotword/# -t hermes/dialogueManager/# -t hermes/asr/# -t hermes/audioServer/+/playFinished -t hermes/nlu/# -t hermes/error/# -t hermes/tts/# -t hermes/feedback/#
hermes/hotword/alexa/detected {"modelId": "alexa", "modelVersion": "", "modelType": "personal", "currentSensitivity": 0.5, "siteId": "wohnzimmer", "sessionId": null, "sendAudioCaptured": null, "lang": null, "customEntities": null}
hermes/dialogueManager/sessionStarted {"sessionId": "wohnzimmer-alexa-4002e615-32b1-4e7a-8b22-0fc83098bcef", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/asr/startListening {"siteId": "wohnzimmer", "sessionId": "wohnzimmer-alexa-4002e615-32b1-4e7a-8b22-0fc83098bcef", "lang": null, "stopOnSilence": true, "sendAudioCaptured": true, "wakewordId": "alexa", "intentFilter": null}
hermes/asr/textCaptured {"text": "licht an", "likelihood": 0.9855946, "seconds": 5.811926366994157, "siteId": "wohnzimmer", "sessionId": "wohnzimmer-alexa-4002e615-32b1-4e7a-8b22-0fc83098bcef", "wakewordId": null, "asrTokens": [[{"value": "licht", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 6, "time": {"start": 0.0, "end": 1.3}}, {"value": "an", "confidence": 1.0, "rangeStart": 6, "rangeEnd": 9, "time": {"start": 1.30341, "end": 6.19}}]], "lang": null}
hermes/asr/stopListening {"siteId": "wohnzimmer", "sessionId": "wohnzimmer-alexa-4002e615-32b1-4e7a-8b22-0fc83098bcef"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/nlu/query {"input": "licht an", "siteId": "wohnzimmer", "id": null, "intentFilter": ["de.fhem:SetColor", "de.fhem:Wikipedia", "de.fhem:Fernsehprogramm", "de.fhem:Respeak", "de.fhem:SetNumeric", "de.fhem:RhasspySetTimer", "de.fhem:Status", "de.fhem:SetMute", "de.fhem:SetAllOff", "de.fhem:SetAllOn", "de.fhem:ViomiRhasspy", "de.fhem:RhasspyGetTimer", "de.fhem:WIKI", "de.fhem:GetTime", "de.fhem:GetNumeric", "de.fhem:GetAllOff", "de.fhem:GetOnOff", "de.fhem:Witze", "de.fhem:SetOnOff", "de.fhem:Wetter", "de.fhem:MediaControls", "de.fhem:GetWeekday", "de.fhem:Shortcuts"], "sessionId": "wohnzimmer-alexa-4002e615-32b1-4e7a-8b22-0fc83098bcef", "wakewordId": "alexa", "lang": null, "customData": "alexa", "asrConfidence": 0.9855946, "customEntities": null}
hermes/nlu/intentParsed {"input": "licht on", "intent": {"intentName": "de.fhem:SetOnOff", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.Device", "value": {"kind": "Unknown", "value": "licht"}, "slotName": "Device", "rawValue": "licht", "confidence": 1.0, "range": {"start": 0, "end": 5, "rawStart": 0, "rawEnd": 5}}, {"entity": "Value", "value": {"kind": "Unknown", "value": "on"}, "slotName": "Value", "rawValue": "an", "confidence": 1.0, "range": {"start": 6, "end": 8, "rawStart": 6, "rawEnd": 8}}], "sessionId": "wohnzimmer-alexa-4002e615-32b1-4e7a-8b22-0fc83098bcef"}
hermes/dialogueManager/endSession {"customData": "alexa","intentFilter": null,"sessionId": "wohnzimmer-alexa-4002e615-32b1-4e7a-8b22-0fc83098bcef","siteId": "wohnzimmer","text": "Ok - Licht im wohnzimmer ist eingeschaltet"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/asr/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/tts/say {"text": "Ok - Licht im wohnzimmer ist eingeschaltet", "siteId": "wohnzimmer", "lang": null, "id": "eaa7aa87-8bad-4648-894e-9a6912afa226", "sessionId": "wohnzimmer-alexa-4002e615-32b1-4e7a-8b22-0fc83098bcef", "volume": null}
hermes/tts/sayFinished {"sessionId":"wohnzimmer-alexa-4002e615-32b1-4e7a-8b22-0fc83098bcef","siteId":"wohnzimmer","id":"eaa7aa87-8bad-4648-894e-9a6912afa226"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/asr/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/asr/stopListening {"siteId": "wohnzimmer", "sessionId": "wohnzimmer-alexa-4002e615-32b1-4e7a-8b22-0fc83098bcef"}
hermes/dialogueManager/sessionEnded {"termination": {"reason": "nominal"}, "sessionId": "wohnzimmer-alexa-4002e615-32b1-4e7a-8b22-0fc83098bcef", "siteId": "wohnzimmer", "customData": "alexa"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/audioServer/wohnzimmer/playFinished {"id":"eaa7aa87-8bad-4648-894e-9a6912afa226","sessionId":"wohnzimmer-alexa-4002e615-32b1-4e7a-8b22-0fc83098bcef"}
Es gibt keine Dopplungen oder Timeouts.
Gruß Jens

p.s. Die Zeile "$mqtt->publish("hermes/tts/sayFinished" => $sayFinish);" habe ich etwas vorgezogen, das es bei einer längeren Sprachausgabe (>10sec) zu einem Timeout kommen würde.
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

#1053
Zitat von: Prof. Dr. Peter Henning am 28 Dezember 2021, 22:08:28
Nein.Warum auch ?
Weil im Rhasspy-Ökosystem jeder "seine" Rolle kennen muss...?

Nachdem ich noch einige Zeit über das Thema nachgedacht habe, meine ich auch, dass das mit der "doppelten" Ausgabe daran liegt, dass sich deine "base" (siteId: "default") weiter für zuständig für die Soundausgabe hält und halt nicht rechtzeitig "Futter" bekommt. Du willst aber ja gar nicht, dass sie (aus Rhasspy heraus) Sound ausgibt, sondern daran vorbei. Also muss der entsprechende Dienst für diesen Satelliten deaktiviert werden.
Das kann man darüber erreichen, dass eben entweder ein "externer Dienst" als Service angegeben wird, oder eben direkt die entsprechende SiteId _nicht_ im betreffenden Funktionsbereich als "Adressat" angegeben wird.

Da du anscheinend ein "headless" setup (Audio- Ein- und Ausgabe nicht über den zentralen Rhasspy-Server) anpeilst, würde ich einfach die defaults belassen, aber die SiteId's der "externen" Stellen nicht mit angeben. Dann kannst du halt nicht die Web-Oberfläche für den Text-Input nutzen, aber das geht ja auch über RHASSPY (da kann/muss man die siteId auch angeben).

Zitat von: Prof. Dr. Peter Henning am 28 Dezember 2021, 19:05:32
Kein Widerspruch.
[...]
Auch richtig. Allerdings ist die Doku von 10_RHASSPY.pm derzeit noch so unübersichtlich, dass man das sehr gut beschreiben müsste.
Bin prinzipiell für Vorschläge - auch zur Doku - offen.

Zitat
Das wechselt - müsste als Parameter à la siteid übergeben werden.
Einig. Jedes Ein- und Ausgabegerät braucht seine siteId.

Das ist nicht nur für die RHASSPY-interne Ordnung wichtig, sondern auch zur klaren Abgrenzung der Zuständigkeiten im Rhasspy-Ökosystem (s.o.).

Zitat
Richtig gedeutet. Die STT Transformation [...]
OK, damit ist das Bild erst mal für mich halbwegs klar.

Würde vorschlagen, für den "FHEM-Rhasspy-TTS/STT"-Funktionsteil ein neues Attribut einzuführen. Vorsichtshalber würde ich das mal generisch benennen, war erst geneigt, was mit "AMAD" zu wählen, aber es könnten dann ja auch andere dienste in Frage kommen. Ist halt komplettes Neuland, muss mal sehen, ob/was ich da zusammenschustern kann. Wenn es irgend geht, will ich aber nicht noch eine App installieren und mich mit irgendwelchen "Flows" belasten, von daher wäre es nett, wenn mich jemand mit "Testdaten" versorgen könnte.
Brauche für's erste:
- Wie kommt man von AMADDevice auf die passende AMADComBridge-Instanz (zweistufig, also gehe ich davon aus, dass man das aus dem/den AMADDevice-Instanzen ableiten kann?)
- Wie sehen die Events aus, wenn STT auf dem Adroiden abgeschlossen ist?

Damit sollte es in Schritt 1 möglich sein, einen Schlüssel "AMAD: siteIdA:AMAD-Devicename-A siteIdB:AMAD-Devicename-B" zu generieren. Für den TTS-Teil könnte es so aussehen: "TTS: siteIdA:"set $device <command> $text"  siteIdB:{perl($device,$text) }"
(Übergeben werden der aus der siteId abgeleitete Device-Name sowie der zu sprechende Text).

EDIT: Für die Weiterleitung wäre dann noch ein "sage MyCroft"-Schlüssel erforderlich...
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

Prof. Dr. Peter Henning

Langsam, ein alter Mann ist kein D-Zug.

Heute morgen hatte ich glücklicherweise etwas Anderes zu tun - Endredaktion meines neuen Buches, https://www.europa-verlag.com/Buecher/6611/WiderdieAngst.html

Zum Setting: Ich lasse Rhasspy derzeit im Docker laufen, mosquitto_sub ist darin nicht bekannt. Das lässt sich aber auch erreichen, indem ich ein MQTT2_DEVICE (XXX) auf alles subscribe - das habe ich gestern schon ausprobiert. Und keinerlei Nachrichten vom Dialog-Manager bekommen. Nochmal in Kürze

1. Versuch: TTS auf einen der mitgelieferten Dienste eingestellt, sagen wir nanoTTS:
- hermes/tts/say wird sowohl von meinem TTS-Service, als auch vom Test-Device XXX, als auch von nanoTTS empfangen.
- Ausgeführt von beiden Diensten
- Bestätigt sowohl von meinem TTS-Dienst (rot) als auch von nanoTTS (grün)
- Ergebnis: Rhasspy ist zufrieden, kein Timeout, alles in Butter

Zitat2021.12.29 15:20:21 4: MQTT2_DEVICE_Parse: MQTT2_XXX hermes/tts/say => { Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 15:20:21 1: {"text": "Das ist Test Nummer 1234", "siteId": "default", "lang": null, "id": "1a6eef5c-5314-43ae-baa4-b4be931c4d82", "sessionId": "", "volume": 1.0}
2021.12.29 15:20:21 4: MQTT2_DEVICE_Parse: MQTT2_XXX hermes/tts/sayFinished => {Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 15:20:21 1: {"siteId": "default", "id": "1a6eef5c-5314-43ae-baa4-b4be931c4d82", "sessionId": ""}
2021.12.29 15:20:21 4: MQTT2_DEVICE_Parse: MQTT2_XXX hermes/audioServer/default/playFinished => {Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 15:20:21 1: {"id": "1a6eef5c-5314-43ae-baa4-b4be931c4d82", "sessionId": "1a6eef5c-5314-43ae-baa4-b4be931c4d82"}

2021.12.29 15:20:21 4: MQTT2_DEVICE_Parse: MQTT2_XXX hermes/tts/sayFinished => {Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 15:20:21 1: {"siteId": "default", "id": "1a6eef5c-5314-43ae-baa4-b4be931c4d82", "sessionId": ""}
2021.12.29 15:20:25 4: MQTT2_DEVICE_Parse: MQTT2_XXX hermes/audioServer/default/playFinished => {Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 15:20:25 1: {"id": "1a6eef5c-5314-43ae-baa4-b4be931c4d82", "sessionId": "1a6eef5c-5314-43ae-baa4-b4be931c4d82"}

2. Versuch: TTS auf Hermes MQTT eingestellt:
- hermes/tts/say wird nur von meinem TTS-Service, als auch vom Test-Device XXX
- Ausgeführt 
- Bestätigt nur von meinem TTS-Dienst (rot)
- Ergebnis: Rhasspy reagiert nichjt,geht nach 30 Sekunden in Timeout

Zitat2021.12.29 15:23:40 4: MQTT2_DEVICE_Parse: MQTT2_XXX hermes/tts/say => { Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 15:23:40 1: {"text": "Das ist Test Nummer 1236", "siteId": "default", "lang": null, "id": "9b7a2deb-dd30-4280-b69e-a545591db943", "sessionId": "", "volume": 1.0}
2021.12.29 15:23:40 4: MQTT2_DEVICE_Parse: MQTT2_XXX hermes/tts/sayFinished => {Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 15:23:40 1: {"siteId": "default", "id": "9b7a2deb-dd30-4280-b69e-a545591db943", "sessionId": ""}
2021.12.29 15:23:40 4: MQTT2_DEVICE_Parse: MQTT2_XXX hermes/audioServer/default/playFinished => {Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 15:23:40 1: {"id": "9b7a2deb-dd30-4280-b69e-a545591db943", "sessionId": "9b7a2deb-dd30-4280-b69e-a545591db943"}

Keine Störung, nicht _eine_ weitere MQTT-Message dazwischen. Nix Dialogmanager, oder Fortsetzungsbefehl. Wirklich identische Bestätigungsmessages von nanoTTS und von mir. Die eine wird akzeptiert, die andere nicht :-((

Zum Post von Beta-User: Ich habe derzeit keine Satelliten dran, nur die Base. Ist ja auch noch alles in der Experimentalphase.


LG

pah

Beta-User

#1055
Hallo zusammen,
habe zwischenzeitlich auch etwas rumprobiert, dokumentiert ist mal wieder noch nichts...

Funktional haben wir es mAn. mit drei Bereichen zu tun, die sich nur in Teilen überschneiden. Um "alles" zu aktivieren, braucht man in der DEF einen "Babble"-Key, der auf eine Babble-Instanz verweist.
defmod RHASSPY RHASSPY baseUrl=[...] Babble=babble
Ohne die Babble-Anbindung geht einfach alles "ungefiltert" in die Rhasspy-NLU-Analyse und man kann auch den "filterFromBabble" in "rhasspySTT" nicht setzen.

attr RHASSPY rhasspySTT filterFromBabble=sage Mycroft\
AMADCommBridge=AMADBridge\
allowed=AMADDev_A
attr RHASSPY rhasspyTTS AMADDev_A=siteId=android_wohnzimmer ttsCommand={fhem("set $DEVICE ttsMsg $message")}


Mit dem Attribut "rhasspySTT" teilt man RHASSPY also mit, dass man AMAD.* für STT im Einsatz hat und es auf Events in der AMADCommBridge hören soll. Welches Device es war, steht hoffentlich zum gleichen Zeitpunkt auch schon in einem dortigen Reading, damit kann RHASSPY dann entscheiden, ob dieses Device (unter den komma-separierten) "allowed" ist und der Text verarbeitet werden soll.

Danach sollte geprüft werden, ob Babble Vorrang hat (so vorhanden und der filterFromBabble gesetzt ist). Wenn ja, erfolgt ein "Babble_Doit", wenn nein, wird der Text (um den Filter gekürzt) an Rhasspy-NLU weitergegeben. Dazu wird ein ähnlicher Mechanismus genutzt wie für die "normalen" msg-Dialoge, so dass man prinzipiell nur die RHASSPY-siteId für den NLU-Service in Rhasspy eintragen muss (falls noch nicht für den msg-Dialog erfolgt). Intern weiß RHASSPY anhand der sessionId, wohin welche Info zu gehen hat.

Das Attribut "rhasspyTTS" dient erst mal dazu, im Prinzip beliebigen Devices einen Text-Synthetisierungs-Kommand zuzuweisen und ihnen eine zusätzliche siteId zu erlauben.
Die wiederum braucht man, wenn man eine hotword-Message dazu nutzen will, den voiceInput zu aktivieren. Könnte bereits mit AMADDevices klappen, auch ohne dass man den ttsCommand explizit setzen müßte, (das ist hier nur als Beispiel gedacht, gehen müßte es mit FHEM-Kommandos und Perl).
Es gibt auch eine (vorrangige) Reading-basierte Zuordnung von siteId auf FHEM-Device, anhand Readings der Form siteId2ttsDevice_<siteId>, mit der man das (hoffentlich) im laufenden Betrieb dynamisch ändern könnte und auch den Key im Attribut nicht setzen muss...

...soviel zur Theorie, getestet ist erst mal - mehr oder weniger - nichts...
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

Prof. Dr. Peter Henning

Ist das Thema "Timer" jetzt eigentlich stabil? Ich würde das gerne mal mit dem vergleichen, was ich mit Babble/Rivescript gebaut habe.

LG

pah

Prof. Dr. Peter Henning

#1057
Ich habe den "kleinen TTS" von JensS ausprobiert (mit dem Unterschied, dass ich den Text nicht sprechen lasse, sondern einfach in eine Datei schreibe). Gleiches Ergebnis: śayFinished wird nicht akzeptiert.

Ein anderes Device am MQTT-Server erkennt auch die richtigen Messages:

ZitatMQTT2_DEVICE_Parse: MQTT2_XXX hermes/tts/say => { Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 20:42:53 1: {"text": "Noch mal, aber jetzt nur über MQTT", "siteId": "default", "lang": null, "id": "bc3e649f-379e-4e92-b055-de38acf35d6c", "sessionId": "", "volume": 1.0}
2021.12.29 20:42:53 4: MQTT2_DEVICE_Parse: MQTT2_XXX hermes/tts/sayFinished => {Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 20:42:53 1: {"id":"bc3e649f-379e-4e92-b055-de38acf35d6c","sessionId":"","siteId":"default"}
2021.12.29 20:42:53 4: MQTT2_DEVICE_Parse: MQTT2_XXX hermes/audioServer/default/playFinished => {Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 20:42:53 1: {"id":"bc3e649f-379e-4e92-b055-de38acf35d6c","sessionId":""}
2021.12.29 20:42:53 4: MQTT2_DEVICE_Parse: MQTT2_XXX hermes/tts/sayFinished => {Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 20:42:53 1: {"siteId":"default","sessionId":"","id":"bc3e649f-379e-4e92-b055-de38acf35d6c"}
2021.12.29 20:42:53 4: MQTT2_DEVICE_Parse: MQTT2_XXX hermes/audioServer/default/playFinished => {Log 1, $EVENT;;json2nameValue($EVENT) }
2021.12.29 20:42:53 1: {"id":"bc3e649f-379e-4e92-b055-de38acf35d6c","sessionId":""}

Kommt hier doppelt: Einmal vom "JensS-TTS-Service", und einmal von meinem.

Was mich etwas auf die Palme treibt: Beide Message-Paare kommen auch bei Rhasspy an. Aber, ums Verrecken, wieder mit einer anderen id. Woher kommt das? Ich tappe im Dunkel.


Zitat[ERROR:2021-12-29 20:43:23,422] rhasspyserver_hermes:
Traceback (most recent call last):
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/quart/app.py", line 1821, in full_dispatch_request
    result = await self.dispatch_request(request_context)
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/quart/app.py", line 1869, in dispatch_request
    return await handler(**request_.view_args)
  File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__main__.py", line 1699, in api_text_to_speech
    results = await asyncio.gather(*aws)
  File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__main__.py", line 1685, in speak
    say_chars_per_second=say_chars_per_second,
  File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__init__.py", line 617, in speak_sentence
    handle_finished(), messages, message_types, timeout_seconds=timeout_seconds
  File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__init__.py", line 995, in publish_wait
    result_awaitable, timeout=timeout_seconds
  File "/usr/lib/python3.7/asyncio/tasks.py", line 423, in wait_for
    raise futures.TimeoutError()
concurrent.futures._base.TimeoutError
[DEBUG:2021-12-29 20:42:53,413] rhasspyserver_hermes: Handling TtsSayFinished (topic=hermes/tts/sayFinished, id=3ad6cd22-1d74-4d65-95d4-b8767cdd7645)
[DEBUG:2021-12-29 20:42:53,400] rhasspyserver_hermes: Handling TtsSayFinished (topic=hermes/tts/sayFinished, id=3ad6cd22-1d74-4d65-95d4-b8767cdd7645)
[DEBUG:2021-12-29 20:42:53,387] rhasspyserver_hermes: Publishing 159 bytes(s) to hermes/tts/say
[DEBUG:2021-12-29 20:42:53,386] rhasspyserver_hermes: -> TtsSay(text='Noch mal, aber jetzt nur über MQTT', site_id='default', lang=None, id='bc3e649f-379e-4e92-b055-de38acf35d6c', session_id='', volume=1.0)
[DEBUG:2021-12-29 20:42:53,384] rhasspyserver_hermes: Subscribed to hermes/audioServer/default/playBytes/#
[DEBUG:2021-12-29 20:42:53,382] rhasspyserver_hermes: Subscribed to hermes/audioServer/Wohnzimmer/playBytes/#
[DEBUG:2021-12-29 20:42:53,381] rhasspyserver_hermes: Subscribed to hermes/error/audioServer/play
[DEBUG:2021-12-29 20:42:53,380] rhasspyserver_hermes: Subscribed to hermes/audioServer/GalaxyS6/playBytes/#
[DEBUG:2021-12-29 20:42:53,378] rhasspyserver_hermes: Subscribed to hermes/error/tts
[DEBUG:2021-12-29 20:42:53,377] rhasspyserver_hermes: Subscribed to hermes/tts/sayFinished
[DEBUG:2021-12-29 20:42:53,375] rhasspyserver_hermes: TTS timeout will be 30 second(s)

Das mosquitto-log hilft auch nicht weiter:
Zitat1640806973: New connection from 192.168.0.94 on port 1883.
1640806973: New client connected from 192.168.0.94 as Net::MQTT::Simple[YXHBGHGEWE] (c1, k60).
1640806973: Socket error on client Net::MQTT::Simple[YXHBGHGEWE], disconnecting.
1640807001: Client c16a640b-6e09-4162-a279-0e6adb148a83 has exceeded timeout, disconnecting.
1640807001: Socket error on client c16a640b-6e09-4162-a279-0e6adb148a83, disconnecting.
1640807005: Socket error on client Net::MQTT::Simple[EUFVQTOBDB], disconnecting.
1640807036: Client 56d85477-d812-4b85-ae87-122d0a8c704b has exceeded timeout, disconnecting.

Frustration...

LG

pah

JensS

#1058
@pah
Mich wundert, dass tts/say keine sessionId enthält. Kommt tts/say letztlich gar nicht vom DialogManager? Die sessionId ist zwar optional, ist aber in diversen Tests immer enthalten.

Beim RHASSPY-M2C sind die IP und der Port eingetragen, mit welchen du ein mosquitto_sub -h IP -p Port auf dem FHEM-Server starten kannst.

Wenn der M2C keine Info vom DialogManager erhält, tippe ich darauf, das die Topics nicht aboniert sind. Trage testweise die Topics des mosquitto_sub im M2C ein. Hier die Werte von meinem M2C:attr rhasspyMQTT2 clientOrder RHASSPY MQTT_GENERIC_BRIDGE MQTT2_DEVICE
attr rhasspyMQTT2 subscriptions hermes/intent/+ hermes/dialogueManager/sessionStarted hermes/dialogueManager/sessionEnded hermes/start hermes/nlu/intentNotRecognize
Für deine TTS müsste noch hermes/tts/say rein. Bestimmt ist das richtig eingetragen aber vergleichen schadet nicht.

Ein tcpdump auf den mqtt-Port des Docker-Hosts mit anschließender Auswertung in Wireshark oder TShark würde den Störenfried identifizieren.

Gruß Jens

p.s. Bin erstaunt, was die Rhasspy-Console so alles ausgibt. Hier ein Auszug mit der kleinen TTS:[DEBUG:2021-12-30 10:10:36,638] rhasspydialogue_hermes: <- DialogueEndSession(session_id='wohnzimmer-alexa-dd58a452-839c-4186-97c3-71cf4aec9c0f', text='Ok - Licht im wohnzimmer ist eingeschaltet', custom_data='alexa')
[DEBUG:2021-12-30 10:10:36,641] rhasspydialogue_hermes: -> HotwordToggleOff(site_id='wohnzimmer', reason=<HotwordToggleReason.TTS_SAY: 'ttsSay'>)
[DEBUG:2021-12-30 10:10:36,641] rhasspydialogue_hermes: Publishing 44 bytes(s) to hermes/hotword/toggleOff
[DEBUG:2021-12-30 10:10:36,643] rhasspydialogue_hermes: -> AsrToggleOff(site_id='wohnzimmer', reason=<AsrToggleReason.TTS_SAY: 'ttsSay'>)
[DEBUG:2021-12-30 10:10:36,644] rhasspydialogue_hermes: Publishing 44 bytes(s) to hermes/asr/toggleOff
[DEBUG:2021-12-30 10:10:36,644] rhasspydialogue_hermes: Say: Ok - Licht im wohnzimmer ist eingeschaltet
[DEBUG:2021-12-30 10:10:36,647] rhasspydialogue_hermes: -> TtsSay(text='Ok - Licht im wohnzimmer ist eingeschaltet', site_id='wohnzimmer', lang=None, id='8c5183d4-c083-4581-af07-6ea422c9a803', session_id='wohnzimmer-alexa-dd58a452-839c-4186-97c3-71cf4aec9c0f', volume=None)
[DEBUG:2021-12-30 10:10:36,647] rhasspydialogue_hermes: Publishing 224 bytes(s) to hermes/tts/say
[DEBUG:2021-12-30 10:10:36,648] rhasspydialogue_hermes: Waiting for sayFinished (id=8c5183d4-c083-4581-af07-6ea422c9a803, timeout=10.0)
[DEBUG:2021-12-30 10:10:36,652] rhasspyasr_kaldi_hermes: <- AsrToggleOff(site_id='wohnzimmer', reason=<AsrToggleReason.TTS_SAY: 'ttsSay'>)
[DEBUG:2021-12-30 10:10:36,653] rhasspyasr_kaldi_hermes: Disabled (AsrToggleReason.TTS_SAY)
[DEBUG:2021-12-30 10:10:39,954] rhasspydialogue_hermes: <- TtsSayFinished(site_id='wohnzimmer', id='8c5183d4-c083-4581-af07-6ea422c9a803', session_id='wohnzimmer-alexa-dd58a452-839c-4186-97c3-71cf4aec9c0f')
[DEBUG:2021-12-30 10:10:39,956] rhasspydialogue_hermes: -> HotwordToggleOn(site_id='wohnzimmer', reason=<HotwordToggleReason.TTS_SAY: 'ttsSay'>)
[DEBUG:2021-12-30 10:10:39,957] rhasspydialogue_hermes: Publishing 44 bytes(s) to hermes/hotword/toggleOn
[DEBUG:2021-12-30 10:10:39,958] rhasspydialogue_hermes: -> AsrToggleOn(site_id='wohnzimmer', reason=<AsrToggleReason.TTS_SAY: 'ttsSay'>)
[DEBUG:2021-12-30 10:10:39,959] rhasspydialogue_hermes: Publishing 44 bytes(s) to hermes/asr/toggleOn
[DEBUG:2021-12-30 10:10:39,960] rhasspydialogue_hermes: Session ended nominally: wohnzimmer-alexa-dd58a452-839c-4186-97c3-71cf4aec9c0f
[DEBUG:2021-12-30 10:10:39,961] rhasspydialogue_hermes: -> AsrStopListening(site_id='wohnzimmer', session_id='wohnzimmer-alexa-dd58a452-839c-4186-97c3-71cf4aec9c0f')
[DEBUG:2021-12-30 10:10:39,962] rhasspydialogue_hermes: Publishing 94 bytes(s) to hermes/asr/stopListening
[DEBUG:2021-12-30 10:10:39,965] rhasspyasr_kaldi_hermes: <- AsrToggleOn(site_id='wohnzimmer', reason=<AsrToggleReason.TTS_SAY: 'ttsSay'>)
[DEBUG:2021-12-30 10:10:39,965] rhasspyasr_kaldi_hermes: Enabled
[DEBUG:2021-12-30 10:10:39,967] rhasspydialogue_hermes: -> DialogueSessionEnded(termination=DialogueSessionTermination(reason=<DialogueSessionTerminationReason.NOMINAL: 'nominal'>), session_id='wohnzimmer-alexa-dd58a452-839c-4186-97c3-71cf4aec9c0f', site_id='wohnzimmer', custom_data='alexa')
[DEBUG:2021-12-30 10:10:39,967] rhasspydialogue_hermes: Publishing 155 bytes(s) to hermes/dialogueManager/sessionEnded
[DEBUG:2021-12-30 10:10:39,969] rhasspydialogue_hermes: -> HotwordToggleOn(site_id='wohnzimmer', reason=<HotwordToggleReason.DIALOGUE_SESSION: 'dialogueSession'>)
[DEBUG:2021-12-30 10:10:39,969] rhasspydialogue_hermes: Publishing 53 bytes(s) to hermes/hotword/toggleOn
[DEBUG:2021-12-30 10:10:39,972] rhasspyasr_kaldi_hermes: <- AsrStopListening(site_id='wohnzimmer', session_id='wohnzimmer-alexa-dd58a452-839c-4186-97c3-71cf4aec9c0f')
[DEBUG:2021-12-30 10:10:39,972] rhasspyasr_kaldi_hermes: Stopping listening (session_id=wohnzimmer-alexa-dd58a452-839c-4186-97c3-71cf4aec9c0f)
[DEBUG:2021-12-30 10:10:39,995] rhasspydialogue_hermes: <- AudioPlayFinished(id='8c5183d4-c083-4581-af07-6ea422c9a803', session_id='wohnzimmer-alexa-dd58a452-839c-4186-97c3-71cf4aec9c0f')
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

pah: Wie ist die Einstellung von "Audio Playing" an deiner Rhasspy-Zentrale? Bei mir steht die  auf "Disabled", und ich meine, das wäre auch für dein Setup mit "externalisierter Soundausgabe" die richtige.

Zitat von: Prof. Dr. Peter Henning am 29 Dezember 2021, 18:21:44
Ist das Thema "Timer" jetzt eigentlich stabil?
Mir sind keine Klagen bekannt - außer vielleicht der, dass die Doku verbesserungsfähig ist.
Letzter Stand dazu war der von drhirn aus https://forum.fhem.de/index.php/topic,113180.msg1148809.html#msg1148809:
ZitatErgebnis:
Keine Auffälligkeiten
(Da stehen auch Beispielsätze - einschl. des Abbrechens - drin.
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

Beim vorigen Logauszug hatte ich an der Base versehentlich die TTS auf "Disabled" gestellt, was der TTS-Ausgabe aber nichts ausmachte.
Hier ein Auszug mit TTS "Hermes MQTT".[DEBUG:2021-12-30 10:25:23,488] rhasspydialogue_hermes: <- DialogueEndSession(session_id='wohnzimmer-alexa-25f9f7bd-3cf0-40e0-a35f-c09915d5fcb4', text='Ok - Licht im wohnzimmer ist ausgeschaltet', custom_data='alexa')
[DEBUG:2021-12-30 10:25:23,490] rhasspydialogue_hermes: -> HotwordToggleOff(site_id='wohnzimmer', reason=<HotwordToggleReason.TTS_SAY: 'ttsSay'>)
[DEBUG:2021-12-30 10:25:23,491] rhasspydialogue_hermes: Publishing 44 bytes(s) to hermes/hotword/toggleOff
[DEBUG:2021-12-30 10:25:23,493] rhasspydialogue_hermes: -> AsrToggleOff(site_id='wohnzimmer', reason=<AsrToggleReason.TTS_SAY: 'ttsSay'>)
[DEBUG:2021-12-30 10:25:23,494] rhasspydialogue_hermes: Publishing 44 bytes(s) to hermes/asr/toggleOff
[DEBUG:2021-12-30 10:25:23,495] rhasspydialogue_hermes: Say: Ok - Licht im wohnzimmer ist ausgeschaltet
[DEBUG:2021-12-30 10:25:23,496] rhasspydialogue_hermes: -> TtsSay(text='Ok - Licht im wohnzimmer ist ausgeschaltet', site_id='wohnzimmer', lang=None, id='32004ce7-ade0-46e4-8f25-30a1f6265962', session_id='wohnzimmer-alexa-25f9f7bd-3cf0-40e0-a35f-c09915d5fcb4', volume=None)
[DEBUG:2021-12-30 10:25:23,497] rhasspydialogue_hermes: Publishing 224 bytes(s) to hermes/tts/say
[DEBUG:2021-12-30 10:25:23,497] rhasspydialogue_hermes: Waiting for sayFinished (id=32004ce7-ade0-46e4-8f25-30a1f6265962, timeout=10.0)
[DEBUG:2021-12-30 10:25:23,500] rhasspyasr_kaldi_hermes: <- AsrToggleOff(site_id='wohnzimmer', reason=<AsrToggleReason.TTS_SAY: 'ttsSay'>)
[DEBUG:2021-12-30 10:25:23,500] rhasspyasr_kaldi_hermes: Disabled (AsrToggleReason.TTS_SAY)
[DEBUG:2021-12-30 10:25:26,842] rhasspydialogue_hermes: <- TtsSayFinished(site_id='wohnzimmer', id='32004ce7-ade0-46e4-8f25-30a1f6265962', session_id='wohnzimmer-alexa-25f9f7bd-3cf0-40e0-a35f-c09915d5fcb4')
[DEBUG:2021-12-30 10:25:26,844] rhasspydialogue_hermes: -> HotwordToggleOn(site_id='wohnzimmer', reason=<HotwordToggleReason.TTS_SAY: 'ttsSay'>)
[DEBUG:2021-12-30 10:25:26,845] rhasspydialogue_hermes: Publishing 44 bytes(s) to hermes/hotword/toggleOn
[DEBUG:2021-12-30 10:25:26,847] rhasspydialogue_hermes: -> AsrToggleOn(site_id='wohnzimmer', reason=<AsrToggleReason.TTS_SAY: 'ttsSay'>)
[DEBUG:2021-12-30 10:25:26,847] rhasspydialogue_hermes: Publishing 44 bytes(s) to hermes/asr/toggleOn
[DEBUG:2021-12-30 10:25:26,848] rhasspydialogue_hermes: Session ended nominally: wohnzimmer-alexa-25f9f7bd-3cf0-40e0-a35f-c09915d5fcb4
[DEBUG:2021-12-30 10:25:26,849] rhasspydialogue_hermes: -> AsrStopListening(site_id='wohnzimmer', session_id='wohnzimmer-alexa-25f9f7bd-3cf0-40e0-a35f-c09915d5fcb4')
[DEBUG:2021-12-30 10:25:26,850] rhasspydialogue_hermes: Publishing 94 bytes(s) to hermes/asr/stopListening
[DEBUG:2021-12-30 10:25:26,852] rhasspydialogue_hermes: -> DialogueSessionEnded(termination=DialogueSessionTermination(reason=<DialogueSessionTerminationReason.NOMINAL: 'nominal'>), session_id='wohnzimmer-alexa-25f9f7bd-3cf0-40e0-a35f-c09915d5fcb4', site_id='wohnzimmer', custom_data='alexa')
[DEBUG:2021-12-30 10:25:26,853] rhasspydialogue_hermes: Publishing 155 bytes(s) to hermes/dialogueManager/sessionEnded
[DEBUG:2021-12-30 10:25:26,854] rhasspydialogue_hermes: -> HotwordToggleOn(site_id='wohnzimmer', reason=<HotwordToggleReason.DIALOGUE_SESSION: 'dialogueSession'>)
[DEBUG:2021-12-30 10:25:26,854] rhasspydialogue_hermes: Publishing 53 bytes(s) to hermes/hotword/toggleOn
[DEBUG:2021-12-30 10:25:26,859] rhasspyasr_kaldi_hermes: <- AsrToggleOn(site_id='wohnzimmer', reason=<AsrToggleReason.TTS_SAY: 'ttsSay'>)
[DEBUG:2021-12-30 10:25:26,860] rhasspyasr_kaldi_hermes: Enabled
[DEBUG:2021-12-30 10:25:26,862] rhasspyasr_kaldi_hermes: <- AsrStopListening(site_id='wohnzimmer', session_id='wohnzimmer-alexa-25f9f7bd-3cf0-40e0-a35f-c09915d5fcb4')
[DEBUG:2021-12-30 10:25:26,863] rhasspyasr_kaldi_hermes: Stopping listening (session_id=wohnzimmer-alexa-25f9f7bd-3cf0-40e0-a35f-c09915d5fcb4)
[DEBUG:2021-12-30 10:25:26,884] rhasspydialogue_hermes: <- AudioPlayFinished(id='32004ce7-ade0-46e4-8f25-30a1f6265962', session_id='wohnzimmer-alexa-25f9f7bd-3cf0-40e0-a35f-c09915d5fcb4')
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.

Prof. Dr. Peter Henning

So, ich habe jetzt noch ein paar weitere Tests gefahren. Rahmenbedingungen:

1. Alle eigenen MQTT2_CLIENTS abgekoppelt
2. Nur den "kleinen TTS-Service" von JensS angebunden
3. TTS auf Hermes MQTT gestellt

Variierte Parameter:

a.) interner MQTT-Server an Port 12183 oder externer MQTT-Server an Port 1883 -> Kein Unterschied
b.) "kleiner TTS" auf Maschine A oder auf Maschine B -> Kein Unterschied
c.) Audio Playing aplay oder disabled -> Kein Unterschied

Jedesmal wieder das gleiche Ergebnis: hermes/say wird vom "kleinen TTS" empfangen (und als Text in eine Datei geschrieben)
Die Antwort vom "kleinen TTS" wird von Rhasspy empfangen, aber irrerweise immer mit einer anderen id angezeigt, und Rhasspy geht nach 30 Sekunden in einen Timeout.

Beispiel:
ZitatTraceback (most recent call last):
...
    raise futures.TimeoutError()
concurrent.futures._base.TimeoutError
[DEBUG:2021-12-30 10:18:21,451] rhasspyserver_hermes: Handling TtsSayFinished (topic=hermes/tts/sayFinished, id=b29e6c7c-0675-471d-88b1-ea543bbc386c)
[DEBUG:2021-12-30 10:18:21,432] rhasspyserver_hermes: Publishing 147 bytes(s) to hermes/tts/say
[DEBUG:2021-12-30 10:18:21,432] rhasspyserver_hermes: -> TtsSay(text='Noch ein weiterer Test', site_id='default', lang=None, id='a37099f9-88c9-4c94-a991-0110a3cda6e8', session_id='', volume=1.0)

Der einzige Weg, den Timeout zu vermeiden, ist bisher, TTS nicht auf "Hermes MQTT" zu stellen. Sondern auf einen der internen TTS-Dienste. Dessen Ausgabe kann man zwar mit "Audio Playing"=disabled unterdrücken, das hat aber keinen Einfluss auf das Ergebnis.

Interessant ist der MQTT-Mitschnitt, wenn z.B. nanoTTS angekoppelt ist:
Zitat[DEBUG:2021-12-30 10:21:48,310] rhasspyserver_hermes: Handling AudioPlayBytes (topic=hermes/audioServer/default/playBytes/ae2cced7-0ace-4950-a6ef-605478a3e409, id=799aaaed-07f1-42d3-b454-aa2578c147c6)
[DEBUG:2021-12-30 10:21:48,192] rhasspyserver_hermes: Handling TtsSayFinished (topic=hermes/tts/sayFinished, id=799aaaed-07f1-42d3-b454-aa2578c147c6)
[DEBUG:2021-12-30 10:21:48,176] rhasspyserver_hermes: Publishing 141 bytes(s) to hermes/tts/say
[DEBUG:2021-12-30 10:21:48,175] rhasspyserver_hermes: -> TtsSay(text='Es grünt so grün', site_id='default', lang=None, id='ae2cced7-0ace-4950-a6ef-605478a3e409', session_id='', volume=1.0)

Hier kommt auch eine zweite Id ins Spiel - die das erste Mal bei sayFinished verwendet wird. Sie wird ebenfalls verwendet beim playBytes - aber dort taucht die erste id (nicht siteId !) als MQTT Knoten auf.

LG

pah

JensS

#1062
Da ist der Wurm drin...
Ich schlage vor, alle Instanzen + Docker + Images zu deaktivieren, löschen und komplett neu zu installieren.
Auf meiner Base ist das deb-Paket installiert.

Gruß Jens

p.s. Mir fällt auf, dass in deiner Log "rhasspyserver_hermes" und in meiner "rhasspydialogue_hermes" steht. Als DialogManager nutze ich "Rhasspy (Recommend)".

p.p.s. @pah Wie sind deine Erfahrungen mit der offline "Mozilla DeepSpeech" als STT? Kaldi funktioniert zwar aber wenn es besser gehen würde, wäre das nicht schlecht.
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.

Gisbert

Hallo Jörg,

der "senkrechte Strich" hat wieder bei mir zugeschlagen.
Die Antworten aus der Android-App waren einige Tage in Ordnung, d.h. wie erwartet. Heute bekomme ich aber als gesprochene Antwort anscheinend alle Optionen, die vorgesehen sind, inkl. der "senkrechten Striche".

Der Befehl wird ausgeführt, aber als Antwort bekomme ich in etwa das folgende:
ZitatZu Diensten senkrechter Strich Gerne senkrechter Strich Ok usw.
Die Reihenfolge kann u. U. auch anders sein.

In der Andriod-App steht unter "DIALOGUE" "EndSession text": Gerne!|wird erledigt|ok|jawohl|zu diensten - siehe auch Screenshot.

Kannst du dich der Sache annehmen?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Beta-User

Zitat von: Gisbert am 01 Januar 2022, 20:03:55
der "senkrechte Strich" hat wieder bei mir zugeschlagen.
Hmmm....

Leider habe ich Schierigkeiten, diese Fehlerbeschreibung in konkrete Code-Stellen umzusetzen.
Zum einen bin ich ziemlich sicher, dass nirgendwo eine Funktion verbaut ist, die einen vorhandenen "senkrechten-Strich-Text" erst auseinandernimmt und dann wieder anders zusammensetzt. Wenn es also unterschiedliche Ausgaben gibt, waren die auch bereits unterschiedlich notiert - irgendwo in deiner Konfiguration. Die kenne ich aber nicht im Detail. Das hier gepostete sieht nach "DefaultConfirmation" aus, und da hatte ich bisher keinen vergleichbaren Effekt bei mir beobachten können, wenn die Antwort aus den Standardroutinen generiert wird.

Das kann durchaus anders sein, wenn die response aus einen individuellen Mapping kommt, und da bin ich nämlich auch nicht sicher, dass das "shuffle" nicht an allen Stellen korrekt implementiert ist.

Daher brauche ich etwas spezfischere Info:

- Wenn das passiert, ist es immer so? Oder beim nächsten vergleichbaren Befehl an dasselbe Gerät wieder anders?
- Ist es die Antwort aus dem "Standard-Repertoire" oder ist sie gerätespezfisch (rhasspyMapping)? Wenn du was gerätespezifisches angegeben hast, würde ich empfehlen, dort was anzugeben, das sich vom Standard unterscheidet (sonst macht es so oder so keinen Sinn, außer zum debuggen...).
- wenn es wirklich aus dem Standard käme (was ich mir noch nicht recht vorstellen kann), und nach "kaputt" auch erst mal dauerhaft auf "kaputt" bleibt: Ist das Verhalten nach einem Neustart wieder "zufällig" (und mit einzelnen Antworten), oder gibt es (empfunden) keine erkennbare Logik hinter dem, was passiert?
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