FHEM > Sprachsteuerung

Rhasspy, mein Weg zu neuen Ufern: es läuft

(1/17) > >>

Gisbert:
Hallo,

rhasspy.service ist definiert und gestartet. Ich bekomme aber keine Verbindung zum vorgesehenen MQTT-Broker:

--- Code: ---Internals:
   BUF       
   Clients    :RHASSPY:MQTT_GENERIC_BRIDGE:MQTT2_DEVICE:
   ClientsKeepOrder 1
   DEF        192.168.1.46:12183
   DeviceName 192.168.1.46:12183
   FUUID      61978527-f33f-e986-ee32-8a8fd1dc8a8f3bb5
   NAME       rhasspyMQTT2
   NEXT_OPEN  1637358155.69727
   NR         1207
   PARTIAL   
   STATE      disconnected
   TYPE       MQTT2_CLIENT
   clientId   rhasspyMQTT2
   connecting 1
   nextOpenDelay 5
   MatchList:
     1:RHASSPY  ^.
     2:MQTT_GENERIC_BRIDGE ^.
     3:MQTT2_DEVICE ^.
   OLDREADINGS:
   READINGS:
     2021-11-19 22:42:30   state           disconnected
   helper:
     bm:
       MQTT2_CLIENT_Attr:
         cnt        4
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        19.11. 19:55:00
         max        0.0426030158996582
         tot        0.0429978370666504
         mAr:
           set
           rhasspyMQTT2
           username
           gis23
       MQTT2_CLIENT_Define:
         cnt        3
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        19.11. 20:22:10
         max        0.0440831184387207
         tot        0.116586923599243
         mAr:
           HASH(0x55ba99ded1e0)
           rhasspyMQTT2 MQTT2_CLIENT 192.168.1.46:12183
       MQTT2_CLIENT_Set:
         cnt        147
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        19.11. 19:55:14
         max        0.0351588726043701
         tot        0.076606273651123
         mAr:
           HASH(0x55ba99ded1e0)
           rhasspyMQTT2
           password
           zfmgs23
       MQTT2_CLIENT_connect:
         cnt        260110
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        19.11. 21:26:44
         max        0.0252149105072021
         tot        71.8889908790588
         mAr:
           HASH(0x55ba99ded1e0)
Attributes:
   clientOrder RHASSPY MQTT_GENERIC_BRIDGE MQTT2_DEVICE
   room       Rhasspy
   subscriptions hermes/intent/+ hermes/dialogueManager/sessionStarted hermes/dialogueManager/sessionEnded
   username   gis23
--- Ende Code ---

Wenn ich auf der Seite <ip-or-hostname-of-mqtt-server>:12101 den MQTT-Server mit Port 1883 einstelle, dann läuft rhasspy.service ohne Fehler, auch die Android-App bekommt mit Port 1883 eine Verbindung hin.

Ich habe bisher keine MQTT2-Devices sondern nutze MQTT_DEVICE mit dem Mosquitto-Broker.

Viele Grüße​ Gisbert​

Edit: Titel geändert.

Beta-User:
Hallo zurück :) .

Schnelle Lösung - DEF auf die richtige IP:Port-Kombi einstellen:

--- Code: ---192.168.1.46:1883
--- Ende Code ---
(falls das dieselbe Maschine ist, würde ich über localhost:1883 gehen)

Längerfristiges Thema:
Eigentlich war "meine Lösung" nicht gut, es ist nach meinen zwischenzeitlichen Erfahrungen m.E. sinnvoller, für Rhasspy dessen internen MQTT-Server zu verwenden. Vermutlich muss man dafür einfach in der service-file die Angaben zum Server komplett weglassen.

Empfehlung daher:
- für einen ersten Erfolg obige Änderung auf Port 1883 umstellen und dann über "wie spät ist es" freuen;
- dann Doks checken, wie man den internen Server aktiviert oder austesten, ob meine Annahme stimmt und dann die DEF wieder auf den Wert "12183" ändern, der per default von Rhasspy verwendet wird;
- für den internen MQTT-Server von Rhasspy kannst du dann auch die clientOrder auf RHASSPY beschränken. Die anderen Angaben sind nur relevant, wenn man den MQTT2_CLIENT noch für was anderes verwenden will.

Gisbert:
Hallo Jörg,

ich hab versucht Doku über den internen MQTT-Broker zu finden, war aber erfolglos.
Ich werde dann erst mal mit port 1883 weitermachen.

Viele​ Grüße​ Gisbert​

Gisbert:
Hallo Jörg,

der nächste Cliffhanger - rhasspy.service und Android laufen, auch der Webserver, aber ich nicht die leiseste Ahnung wie Töne/Gesprochenes beim Webserver oder der Android-App zur Anwendung kommen.
Was immerhin geht in der Webpage (port 12101:
Text to regognize --> wie spät ist es --> führt zu GetTime
Aber schon Text to speak --> wie spät ist es --> führt zu "AudioServerException: Command '['aplay', '-q', '-t', 'wav']' returned non-zero exit status 1."
Wo setze ich denn hier an?

In Fhem habe ich einem Device das Attribut rhasspyName gegeben.

Die nächste Hürde, wo gebe ich aber das ein (Beispiel)?

--- Code: ---SetOnOff:cmdOn=on,cmdOff=off
SetOnOff:cmdOn=on,cmdOff=off,response="Sir yes Sir"
SetOnOff:cmdOn=on,cmdOff=off,response="$DEVICE now [$DEVICE:state]"

--- Ende Code ---
Ok, gefunden, eine Datei de.fhem.SetOnOff.ini im Ordner intents anlegen.
Ist "de.fhem" im Namen und im Inhalt der Datei zwingend erforderlich oder nur zufällig so?
In der mitgelieferten Datei ist dazu enthalten:

--- Code: ---[de.fhem:SetOnOff]
\[(schalte|mache|stelle)] [den|die|das] $de.fhem.Device{Device} [im|in der|auf dem|auf der] [$de.fhem.Room{Room}] (an|ein){Value:on}
\[(schalte|mache|stelle)] [den|die|das] $de.fhem.Device{Device} [im|in der|auf dem|auf der] [$de.fhem.Room{Room}] (aus){Value:off}
--- Ende Code ---
$de.fhem.Device{Device} ist damit der rhasspyName gemeint?

Ich glaube, das Brett wird für mich immer dicker, immerhin ein positiver Beitrag zur CO2-Vermeidung ;D

Viele Grüße Gisbert

Beta-User:

--- Zitat von: Gisbert am 20 November 2021, 19:23:40 ---der nächste Cliffhanger - rhasspy.service und Android laufen, auch der Webserver, aber ich nicht die leiseste Ahnung wie Töne/Gesprochenes beim Webserver oder der Android-App zur Anwendung kommen.

--- Ende Zitat ---
Also:
Die "Basics" auf der Rhasspy-Server- und App-Seite scheinen also zu stehen. Das ist doch schon mal was. Da deine "base" (EDIT: headless) läuft, ist da gar keine Audio-Hardware, die an der siteId "base" was ausgeben könnte. Du kannst also auch "Audio playing" auf "Disabled" setzen.
RHASSPY wird immer (mind.) an die siteId sound schicken, die den "Mach was"-Input geliefert hat. Also lass erst mal diesen Teil außen vor.


--- Zitat ---In Fhem habe ich einem Device das Attribut rhasspyName gegeben.

Die nächste Hürde, wo gebe ich aber das ein (Beispiel)?

--- Ende Zitat ---
Erst mal wieder kleinere Schritte machen:
- Das Device hat einen (bekannten) genericDeviceType? Und ist von der devspec in RHASSPY erfasst? => "set <RHASSPY> update" und dann mal ein "list <RHASSP>" anschauen. Dort sollte unter "helper->devicemap" das Gerät zu finden sein.


--- Zitat ---Ok, gefunden, eine Datei de.fhem.SetOnOff.ini im Ordner intents anlegen.
Ist "de.fhem" im Namen und im Inhalt der Datei zwingend erforderlich oder nur zufällig so?

--- Ende Zitat ---
Kurzfassung: Nein.
Der Dateiname ist im Prinzip beliebig, es macht aber Sinn, das so zu organisieren, dass man auch was wiederfindet...

--- Zitat ---$de.fhem.Device{Device} ist damit der rhasspyName gemeint?

--- Ende Zitat ---
:) Ja. Langfassung dazu:
$de.fhem.Device{Device} ist ein "slot", also eine art Variable innerhalb Rhasspy. Alle "slots" findest du, wenn du auf das "CD-Symbol" im Rhasspy-Web-Interface klickst. Dort dann aber ohne den "Kenner" $. RHASSPY füllt einen Teil der slots aus den Angaben, die du auch in "devicemap" im list siehst.

Dabei ist die Zusammensetzung wie folgt:
"de"     => LANGUAGE der RHASSPY-Instanz
"fhem" => fhemId der RHASSPY-Instanz (es kann mehrere Instanzen geben, z.B. für mehrere User/mehrere Sprachen)
"Device" => (einer) der Gerätenamen, unter denen RHASSPY das Ziel identifizieren kann und einer FHEM-Device-Instanz zuordnen (es können auch mehrere rhasspyNames vergeben werden).


--- Zitat ---Ich glaube, das Brett wird für mich immer dicker, immerhin ein positiver Beitrag zur CO2-Vermeidung ;D

--- Ende Zitat ---
Für mich sieht es eher danach aus, als würde gleich der Groschen vollends fallen ;D . Nach meiner bisherigen Erfahrung ist der Rest ein Kinderspiel, wenn erst mal klar ist, wie die vielen Bausteinchen zusammenspielen :) .

Danach beginnt dann die Feinarbeit. Man kann dann z.B. statt
--- Code: ---[de.fhem:SetOnOff]
\[(schalte|mache|stelle)] [(den|die|das)] $de.fhem.Device{Device} [[(im|in der|auf dem|auf der) $de.fhem.Room{Room}] (an|ein){Value:on}
\[(schalte|mache|stelle)] [(den|die|das)] $de.fhem.Device{Device} [[(im|in der|auf dem|auf der) $de.fhem.Room{Room}] (aus){Value:off}
--- Ende Code ---
Kurzformen verwenden, indem man die on/off-Alternativen zusammenfasst oder statt des "alle Gerätenamen"-slots einen verwendet, der nur die Namen listet, die auch wirklich "on/off" können:

--- Code: ---[de.fhem:SetOnOff]
\[(schalte|mache|stelle)] [den|die|das] $de.fhem.Device-SetOnOff{Device}|) [[(im|in der|auf dem|auf der)] $de.fhem.Room{Room}] ( (an|ein){Value:on} | (aus){Value:off})
--- Ende Code ---

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln