Moin
Ich habe einen Rhasspy über Docker aufesetzt.
Der funktioniert soweit ganz gut. Bis das wenn ich über Fhem die slots aktualisiere diese jedesmal
verloren gehen.
Das IO Device MQTT übermittelt auch Device,Room und Value.
Ist auch in der Log zu sehen.
Parsed value: 1 for key: probability
2021.09.20 12:12:36 5: Parsed value: wohnzimmer for key: Room
2021.09.20 12:12:36 5: Parsed value: schalte die wohnzimmerlampe im wohnzimmer aus for key: rawInput
2021.09.20 12:12:36 5: Parsed value: aus for key: Value
2021.09.20 12:12:36 5: Parsed value: porcupine_raspberry-pi for key: customData
2021.09.20 12:12:36 5: Parsed value: schalte die wohnzimmerlampe im wohnzimmer aus for key: input
2021.09.20 12:12:36 5: Parsed value: SetOnOff for key: intent
2021.09.20 12:12:36 5: Parsed value: wohnzimmerlampe for key: Device
2021.09.20 12:12:36 5: Parsed value: default for key: siteId
2021.09.20 12:12:36 5: handleIntentSetOnOff called
2021.09.20 12:12:36 1: No device for >>wohnzimmerlampe<< found, especially not in room >>wohnzimmer<< (also not outside)!
Das dazu gehörige Device
defmod Sonoff_Blitzwolf_138 MQTT_DEVICE
attr Sonoff_Blitzwolf_138 userattr Licht Licht_map Light_in_out Light_in_out_map Tasmota_Fcmilia_Bulb_103 Tasmota_Fcmilia_Bulb_103_map structexclude
attr Sonoff_Blitzwolf_138 IODev myMqttBroker
attr Sonoff_Blitzwolf_138 alias Wohnzimmer_Stehlampe
attr Sonoff_Blitzwolf_138 genericDeviceType light
attr Sonoff_Blitzwolf_138 group come_in_and_out_switch
attr Sonoff_Blitzwolf_138 publishSet on off cmnd/tasmota_138/POWER
attr Sonoff_Blitzwolf_138 rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off
attr Sonoff_Blitzwolf_138 rhasspyName wohnzimmerlampe
attr Sonoff_Blitzwolf_138 rhasspyRoom wohnzimmer
attr Sonoff_Blitzwolf_138 room Gruppen,MQTT2_DEVICE,Rhasspy,Wohnzimmer
attr Sonoff_Blitzwolf_138 subscribeReading_Sensor tele/tasmota_138/SENSOR
attr Sonoff_Blitzwolf_138 subscribeReading_Setup tele/tasmota_138/STATE
attr Sonoff_Blitzwolf_138 subscribeReading_State stat/tasmota_138/POWER
Leider funktioniert es nicht.
Die Frage
Wird das Rhasspy(Device) über rhasspyName wohnzimmer(Device) zugeordnet. Equivalent zu rhasspyRoom?
Ist das rhasspyRoom und rhasspyName case-sensitiv?
Gruß
Klaus
Hast du nach der Änderung an den Attributen des Devices mal ein "update devicemap" im Rhasspy-Device gemacht?
Zitat von: drhirn am 20 September 2021, 12:28:46
Hast du nach der Änderung an den Attributen des Devices mal ein "update devicemap" im Rhasspy-Device gemacht?
Das wäre erst mal wichtig zu wissen.
Ansonsten (da auch schon fertig):
Zitat von: kl_ha am 20 September 2021, 12:24:51
Bis das wenn ich über Fhem die slots aktualisiere diese jedesmal
verloren gehen.
Schon das ist seltsam.
Welche Versionen verwendest du (FHEM-Modul, Rhasspy-Dienst)?
Zitat
Das IO Device MQTT übermittelt [...]
Bis auf das "aus" sieht das m.E. gut aus, das solltest du bei Gelegenheit mal auf englisch umstellen.
ZitatDas dazu gehörige Device
attr Sonoff_Blitzwolf_138 genericDeviceType light
attr Sonoff_Blitzwolf_138 rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off
attr Sonoff_Blitzwolf_138 rhasspyName wohnzimmerlampe
attr Sonoff_Blitzwolf_138 rhasspyRoom wohnzimmer
Warum gDT light, wenn das Ding nur on/off kann? (=> switch)
Nachtrag: wenn gDT gesetzt ist, brauchst du vermutlich das rhasspyMapping gar nicht explizit setzen.
Zitat
Die Frage
Wird das Rhasspy(Device) über rhasspyName wohnzimmer(Device) zugeordnet. Equivalent zu rhasspyRoom?
Ist das rhasspyRoom und rhasspyName case-sensitiv?
Zum einen: Ja, RHASSPY ist case-sensitive. Was letztendlich "verstanden" wurde, könnte man an einem list des RHASSPY-Devices sehen.
Hallo
Also ich habe ein "update all" gemacht. Dachte das esupdate devicemap mit drin ist.
Verwende Rhasspy 2.5.11 und die aktuellste Version(0.4.39) von Fhem-Rhasspy modul die ich auf Github bekommen kann.
Habe die rhasspy-de.cfg mit eingebunden, in dieser datei werden ja einige slots definiert, die sind dann auch dauerhaft.
Hier das list meines Rhasspy moduls.
CONFIGFILE ./FHEM/rhasspy-de.cfg
DEF baseUrl=http://ip:12101 devspec=genericDeviceType=.+ defaultRoom=wohnzimmer language=de fhemId=fhem1 prefix=rhasspy2 useGenericAttrs=0 encoding=utf-8
FUUID 613dfc3f-f33f-17e9-25a5-f47873f9c02befc5
IODev RhasspyMQTT
LANGUAGE de
LASTInputDev RhasspyMQTT
MODULE_VERSION 0.4.39
MSGCNT 33
NAME MyRhasspy
NR 569
RhasspyMQTT_MSGCNT 33
RhasspyMQTT_TIME 2021-09-20 23:28:59
STATE online
TYPE RHASSPY
baseUrl http://192.168.178.64:12101
defaultRoom wohnzimmer
devspec genericDeviceType=.+
encoding utf-8
fhemId fhem1
prefix rhasspy2
useGenericAttrs 0
Helper:
DBLOG:
intents:
logdb:
TIME 1632132734.00247
VALUE de.fhem1:GetNumeric,de.fhem1:GetTime,de.fhem1:SetOnOff
lastIntentPayload:
logdb:
TIME 1632173337.32822
VALUE {"Device":"wohnzimmerlampe","Room":"wohnzimmer","Value":"aus","customData":"porcupine_raspberry-pi","input":"schalte die wohnzimmerlampe im wohnzimmer aus","intent":"SetOnOff","lang":null,"probability":1,"rawInput":"schalte die wohnzimmerlampe im wohnzimmer aus","requestType":"voice","sessionId":"default-porcupine_raspberry-pi-cf6c06f5-f093-40dd-b35d-3e7211b9c795","siteId":"default"}
lastIntentTopic:
logdb:
TIME 1632173337.32822
VALUE hermes/intent/de.fhem1_SetOnOff
listening_wohnzimmer:
logdb:
TIME 1632173339.38542
VALUE 0
responseType:
logdb:
TIME 1632173337.32822
VALUE voice
state:
logdb:
TIME 1632173278.16945
VALUE online
training:
logdb:
TIME 1632173278.16945
VALUE Training completed in 7.01 second(s)
updateSlots:
logdb:
TIME 1632173270.28397
VALUE OK
voiceResponse:
logdb:
TIME 1632173337.32822
VALUE Da paßt irgend was nicht
READINGS:
2021-09-19 22:22:24 IODev RhasspyMQTT
2021-09-20 12:12:13 intents de.fhem1:GetNumeric,de.fhem1:GetTime,de.fhem1:SetOnOff
2021-09-20 23:28:57 lastIntentPayload {"Device":"wohnzimmerlampe","Room":"wohnzimmer","Value":"aus","customData":"porcupine_raspberry-pi","input":"schalte die wohnzimmerlampe im wohnzimmer aus","intent":"SetOnOff","lang":null,"probability":1,"rawInput":"schalte die wohnzimmerlampe im wohnzimmer aus","requestType":"voice","sessionId":"default-porcupine_raspberry-pi-cf6c06f5-f093-40dd-b35d-3e7211b9c795","siteId":"default"}
2021-09-20 23:28:57 lastIntentTopic hermes/intent/de.fhem1_SetOnOff
2021-09-20 23:28:59 listening_wohnzimmer 0
2021-09-20 23:28:57 responseType voice
2021-09-20 23:27:58 state online
2021-09-20 23:27:58 training Training completed in 7.01 second(s)
2021-09-20 23:27:50 updateSlots OK
2021-09-20 23:28:57 voiceResponse Da paßt irgend was nicht
TIMER:
MyRhasspy_null:
HASH MyRhasspy
MODIFIER null
NAME MyRhasspy_null
enable false
toDisable:
ConfirmAction
CancelAction
ChoiceRoom
ChoiceDevice
helper:
custom:
SetCustomIntentsTest:
function SetCustomIntentsTest
args:
siteId
Device
devicemap:
devices:
Sonoff_Blitzwolf_138:
intents:
rhasspyRooms:
wohnzimmer:
lng:
commaconversion 1
mutated_vowels:
Ä Ae
Ö Oe
Ü Ue
ß ss
ä ae
ö oe
ü ue
responses:
DefaultCancelConfirmation Habe abgebrochen
DefaultChangeIntentRequestRawInput wechseln zu $rawInput
DefaultChoiceNoOutstanding warte grade nicht auf eine Auswahl
DefaultConfirmation Gerne!
DefaultConfirmationBack also nochmal
DefaultConfirmationNoOutstanding warte grade nicht auf eine bestätigung
DefaultConfirmationReceived Ok, werde ich machen
DefaultConfirmationRequestRawInput bestätige $rawInput
DefaultConfirmationTimeout Tut mir leid, da hat etwas zu lange gedauert
DefaultError Da paßt irgend was nicht
NoActiveMediaDevice Tut mir leid, es ist kein Wiedergabegerät aktiv
NoDeviceFound Tut mir leid, ich konnte kein passendes Gerät finden
NoMappingFound Tut mir leid, ich konnte kein passendes Mäpping finden
NoMediaChannelFound Tut mir leid, der angefragte Kanal scheint nicht zu existieren.
NoNewValDerived Tut mir leid, ich konnte den Zielwert nicht ausrechnen
NoTimedOnDeviceFound Das gewählte Gerät unterstützt leider keine taimer Kommandos
NoValidData ich habe leider zu wenig Daten um den Vorgang auszuführen
RequestChoiceDevice Es kommen mehrere Geräte in Frage, bitte wähle zwischen $first_items oder $last_item
RequestChoiceRoom Es kommen mehrere Geräte in verschiedenen Räumen in Frage, wähle einen Raum von $first_items oder $last_item
SilentCancelConfirmation
duration_not_understood Tut mir leid, ich habe die Dauer nicht verstanden
reSpeak_failed Tut mir leid, ich kann mich nicht erinnern
timeRequest Es ist $hour Uhr $min
timerCancellation $label im $room gelöscht
weekdayRequest Heute ist $weekDay
Change:
brightness $deviceName ist auf $value gestellt
desired-temp Die Solltemperatur von $location beträgt $value Grad
humidity Die Luftfeuchtigkeit von $location beträgt $value Prozent
knownType $mappingType von $location beträgt $value Prozent
setTarget $device ist auf $value gesetzt
soilMoisture Die Bodenfeuchte von $location beträgt $value Prozent
unknownType Der Wert von $location beträgt $value Prozent
volume $deviceName ist auf $value gestellt
waterLevel Der Wasserstand von $location beträgt $value Prozent
battery:
0 Der Batteriestand von $location ist $value
1 Der Batteriestand von $location beträgt $value Prozent
temperature:
0 Die Temperatur von $location ist $value
1 Die Temperatur von $location beträgt $value Grad
timerEnd:
0 $label abgelaufen
1 $label im raum $room abgelaufen
timerSet:
0 $label im Raum $room ist gestellt auf $seconds sekunden
1 $label im Raum $room ist gestellt auf $minutetext $seconds
2 $label im Raum $room ist gestellt auf $minutetext
3 $label im Raum $room ist gestellt auf $hours stunden $minutetext
4 $label im Raum $room ist gestellt auf $hours uhr $minutes
5 $label im Raum $room ist gestellt auf morgen, $hours uhr $minutes
stateResponses:
inOperation:
0 $deviceName ist fertig
1 $deviceName läuft noch
inOut:
0 $deviceName ist ausgefahren
1 $deviceName ist eingefahren
onOff:
0 $deviceName ist ausgeschaltet
1 $deviceName ist eingeschaltet
openClose:
0 $deviceName ist geöffnet
1 $deviceName ist geschlossen
units:
unitHours:
0 stunden
1 eine stunde
unitMinutes:
0 minuten
1 eine minute
unitSeconds:
0 Beispiel 1a: einige Sekunden
1 Beispiel 1b: genau eine Sekunde
words:
off aus
on an
shortcuts:
tweaks:
Attributes:
IODev RhasspyMQTT
languageFile ./FHEM/rhasspy-de.cfg
rhasspyIntents SetCustomIntentsTest=SetCustomIntentsTest(siteId,Device)
rhasspyRoom Flur
room Rhasspy,Geräte
verbose 5
Und hier meine sentences
[de.fhem1:SetOnOff]
schalte (die | das) (wohnzimmerlampe|stehlampe){Device} im (wohnzimmer|schlafzimmer){Room} (an | ein | aus | on | off){Value}
Hmm, das Device wird nicht korrekt erkannt:
devicemap:
devices:
Sonoff_Blitzwolf_138:
intents:
rhasspyRooms:
wohnzimmer:
Das sollte eher so aussehen:
devicemap:
devices:
Aussenlicht_Garage:
alias aussenlicht garage
groups licht
names aussenlicht garage
rooms garten
intents:
GetOnOff:
GetOnOff:
currentVal state
type GetOnOff
valueOff off
SetOnOff:
SetOnOff:
cmdOff off
cmdOn on
type SetOnOff
[...]
rhasspyRooms:
[...]
garten:
[...]
aussenlicht garage Aussenlicht_Garage
Wie ist denn das Attribut "rhasspyMapping" in dein System gelangt? An sich müßte das mit verändertem prefix (rhasspy2) nämlich als "rhasspy2Mapping" gesetzt werden, damit diese RHASSPY-Instanz das Mapping an sich sieht. (dto. für die übrigen rhasspy.*-Attribute).
Seltsam ist nur, dass dann nicht das gDT "solo" ausgewertet wird, aber das liegt dann vermutlich daran, dass
{getAllSets('Sonoff_Blitzwolf_138')}
irgendwas unerwartetes zurückliefert (was vermutlich der Grund war, warum du überhaupt das manuelle Mapping gesetzt hast?).
EDIT: das MQTT-Device an sich ist m.E. auch nicht das Problem. Zumindest wird das bei mir im RHASSPY-list sauber angelegt, ganz gleich, ob mit oder ohne (passend benannte) rhasspy.*-Attribute und "update" als "devicemap" oder "all". Komisch...
Hallo
Habe es jetzt funktionieren gebracht.
Entscheidend meiner Meinung nach war das rhasspyName zu rhasspy2Name, rhasspyRoom zu rhasspy2Room und rhasspyMapping zu rhasspy2Mapping verändert habe.
Was noch entscheident war, das ich genericDeviceType gesetzt habe, ohne dies hatte es nicht funktioniert.
Zitat von: kl_ha am 22 September 2021, 10:53:58
Was noch entscheident war, das ich genericDeviceType gesetzt habe, ohne dies hatte es nicht funktioniert.
Falls das jemand nachbauen will: Das ist mAn. irreführend, weil das zwar _hier_ zutreffend ist, aber wegen der hier (dann unter dem richtigen Namen) explizit angegebenen rhasspy-Attribute der RHASSPY-Hash auch dann funktionsfähig hätte aufgebaut werden müssen, wenn die devspec (in der DEF) anderweitig passend gesetzt wird.
Vielleicht noch ein Wort zu den ganzen Optionen in der DEF, (v.a. zu dem useGenericAttrs=0, das ich bisher leider übersehen hatte):
Die meisten Optionen braucht man nicht, zu setzen, und die Beispiele in der commandref sind nur deswegen so gewählt, dass man sehen kann, was möglich wäre... Das mit "useGenericAttrs" war lange "experimentell" und ungetestet, aber (gerade) Anfänger sollten mAn. dieses feature ausdrücklich nicht (mehr) deaktivieren.
Werde mir (u.A.) die commandref nochmal vornehmen, da ist (v.a. auch in Bezug auf die genericDeviceType-Darstellung) manches noch verbesserungsfähig (@drhirn: explizit: mea culpa!).
@Beta-user
Erst mal danke für deine Hilfe und narürlich für die Arbeit.
Das ganze define habe aus github zusammenkopiert. Und dann rumprobiert.
define Rhasspy RHASSPY baseUrl=http://Rhasspy_IP:12101 devspec=genericDeviceType=.+ defaultRoom=wohnzimmer language=de fhemId=fhem1 prefix=rhasspy2 useGenericAttrs=0 encoding=cp-1252
Hier noch ein kleiner Anfangsspolperer von mir an dem ich länger saß.
Um die deutsche rhasspy-de.cfg einzubinden ist encoding=cp-1252 das falsche encoding und wirft eine Fehlermeldung "Da es keine korrekte JSON Datei wäre". Entweder man lässt encoding=cp-1252 weg da es per default encoding auf utf-8 gesetzt wird oder setzt es explizit auf utf-8.
Vielleicht hlft das den einen oder andreren.
Nochmal: Die meisten dieser ganzen Optionen sind (im Normalfall) eigentlich gar nicht dafür gedacht, gesetzt zu werden ::) ... Daher sollte man alles weglassen, was man nicht braucht, unabhängig davon, was irgendwo als Beispiel (für spezielle Fälle) zu finden ist.
Meine eigene DEF ist nur devspec und defaultRoom (läuft auf demselben Server, sonst braucht man noch baseUrl; bei "global" steht "language" auf "DE")...
Es würde daher helfen, keine "schlechten" Beispiele zu posten, die dann wieder jemand kopiert ;D .