FHEM Forum

FHEM => Frontends => Sprachsteuerung => Thema gestartet von: drhirn am 28 Juli 2020, 14:28:50

Titel: FHEM und Rhasspy
Beitrag von: drhirn am 28 Juli 2020, 14:28:50
Rhasspy ist ein Open Source offline Sprachassistent, der aus der Übernahme von Snips durch Sonos entstanden ist.

Für die Integration in FHEM gibt es ein Modul, welches auf dem Snips-Modul von Thyraz basiert.


Das Modul und die Anleitung sind hier zu finden: https://github.com/fhem/fhem-rhasspy (https://github.com/fhem/fhem-rhasspy)


Bitte beachtet, dass es sich dabei um ein Modul in Entwicklung handelt. Fehler sind nicht ausgeschlossen.
Eine Mitarbeit am Modul ist gerne gesehen!

Weitere Informationen:

Derzeit (ab 10.04.2021) läuft ein Test über alle Intents. Mitarbeit ist herzlich willkommen. Die betreffenden Beiträge sind hier:
Titel: Antw:FHEM und Rhasspy
Beitrag von: jowe am 28 Juli 2020, 21:45:51
So, ich habe mittlerweile Rhasspy zusammen mit dem Snips Modul ans Laufen bekommen.
Wichtig sind zwei Dinge, damit es funktioniert:
In Rhasspy müssen die Sätze in sentences.ini und die slots identisch zu den Benennungen in der Snips FHEM App angegeben werden. Also für An/Aus z.B. in der Sentences.ini
[de.fhem:SetOnOff]
$Device{Device} $Room{Room} $Value{Value}
$Value{Value} $Device{Device} $Room{Room}
$Value{Value} $Device{Device}
$Device{Device} $Value{Value}
$Room{Room} $Device{Device} $Value{Value}
$Device{Device} und $Device{Device} $Value{Value}
$Device{Device} und $Device{Device} $Room{Room} $Value{Value}


und im entsprechenden slot "Value" z.B.
(aktiv|aktivieren|an machen|an schalten|einschalten|ein|anschalten|aktiviere|anmachen|schließe|schließen|runter|zu|ausfahren|rausfahren|an):an
(ausschalten|ab|abschalten|deaktiviere|ausmachen|öffne|öffnen|auf|einfahren|reinfahren|hoch|aus machen|ausmachen|aus schalten|aus schalte|aus):aus


Damit es in FHEM keine Dauerschleife gibt, muss man noch in der Snips.pm als quick-and-dirty Lösung die Zeile 900 abändern, so dass anstatt =~ auf !~ geprüft wird, sollte dann so aussehen:
elsif ($topic eq "hermes/nlu/intentParsed" && ($message !~ m/fhem.voiceCommand/ || $message !~ m/fhem.textCommand/)) {
So scheint es zu funktionieren.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 29 Juli 2020, 09:11:24
Du hast aber einen "Snips-Satelliten", oder? Ich habe irgendwie so das Gefühl, die senden andere MQTT-Daten als ein "Rhasspy-Satellit".

Edit:
Oh, das funktioniert auch mit Rhasspy-Satelitten. Cool!

Super! Punkt 1 auf der Liste. Ich habe gestern noch an einer (unwichtigen) Lösung gebastelt, dass die "listening_"-Readings richtig geändert werden. Ist aber noch nicht marktreif. Und Text-Kommandos über das Snips-Modul gehen noch nicht.
Titel: Antw:FHEM und Rhasspy
Beitrag von: jowe am 29 Juli 2020, 09:46:14
Sollte eigentlich nicht so sein. Der Satellit sendet ja nur den Ton, NLU und ASR laufen ja auf der "Basis", das heißt die an das Snips Modul übergebenen MQTT Daten sollten identisch sein, egal von welchem Satelliten der Ton kam.
Ich habe ehrlich gesagt auch bisher fast ausschließlich mit der "Recognize" Funktion auf der Rhasspy-Webpage getestet, der Satellit sollte da also garnicht mit reinspielen

Edit: Meine Antwort kam zu langsam...

Zu deinem Edit: Die spezifischen Funktionen say, inject und textCommand werden vermutlich einige Änderungen am Snips-Modul benötigen. Ich vermute, das muss als Rhasspy-Modul umgeschrieben werden. Injection funktioniert ja komplett anders, als bei Snips. Und der workaround mit der Änderung in Zeile 900 ist ja auch nicht sehr schön, da muss auf jeden Fall auch noch was besseres her. Ich habe auch noch die Zeile auskommentiert, in der die geänderte payload (mit "Standardgerät"/"Standardwert"/ usw.) gesendet wird.
Ich bin jetzt erstmal froh, dass wenigstens das Schalten mit Kommandos funktioniert. Und als nächstes schau ich mal, ob ich die bescheidene Erkennungsrate bei Spracheingabe noch in den Griff bekomme. Die Erkennung ist aktuell bei mir noch viel schlechter als bei Snips
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 29 Juli 2020, 11:52:04
Zu meinem angesprochenen Thema mit den "listening_"-Readings: Rhasspy agiert da offenbar anders als Snips. Das Reading bleibt bei mir nur ganz kurz auf "1" und geht dann sofort wieder auf "0".
Wenn ich das richtig verstanden habe, soll das anzeigen, dass Snips gerade auf einen Sprachbefehl hört. Nach meiner Logik wäre das also alles zwischen hermes/dialogueManager/sessionStarted und hermes/dialogueManager/sessionEnded.

Ist im Modul leicht umgesetzt:

Die Zeilen 31 + 32

    hermes/hotword/+/detected
    hermes/hotword/toggleOn


durch

    hermes/dialogueManager/sessionStarted
    hermes/dialogueManager/sessionEnded


ersetzen.

Zeile 792
if ($topic =~ m/^hermes\/hotword/) {
durch
if ($topic =~ m/^hermes\/dialogueManager/) {

Zeile 802 bis 806

            if ($topic =~ m/detected/) {
                readingsSingleUpdate($hash, "listening_" . lc($room), 1, 1);
            } elsif ($topic =~ m/toggleOn/) {
                readingsSingleUpdate($hash, "listening_" . lc($room), 0, 1);
            }

durch

            if ($topic =~ m/sessionStarted/) {
                readingsSingleUpdate($hash, "listening_" . lc($room), 1, 1);
            } elsif ($topic =~ m/sessionEnded/) {
                readingsSingleUpdate($hash, "listening_" . lc($room), 0, 1);
            }
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 29 Juli 2020, 16:37:03
Ist außer mir auch noch jemand der Meinung, dass wir die Zeilen 831 (my $info, my $sendData;) bis inkl 900 (elsif ($topic eq "hermes/nlu/intentParsed" && ($message =~ m/fhem.voiceCommand/ || $message =~ m/fhem.textCommand/)) {) eigentlich gar nicht brauchen? Weil Rhasspy ja eigentlich nichts von Standardraum, Standardgerät, etc. weiß.
Zumindest ich hatte bisher gute Erfahrungen ohne diese Zeilen. Ich kann vom Rhasspi UI und mit FHEM set Snips textcommand ... Befehle absetzen, die dann auch interpretiert werden. Mehr habe ich noch nicht getestet.

Das mit dem Slot-Namen ([de.fhem:SetOnOff]) hat übrigens den Grund, dass das Modul nur auf Intents reagiert, die einen Doppelpunkt im Namen haben. War meine größte Erkenntnis heute.
Titel: Antw:FHEM und Rhasspy
Beitrag von: jowe am 29 Juli 2020, 16:40:52
Ja, ich habe die Zeilen vorher auch komplett bei mir gelöscht. Geht immernoch... Deine Änderung zum Thema Listening scheint bei mir aber noch nicht recht zu funktionieren. Habe es aber auch nur auf die Schnelle geändert, evtl. ist dabei was schief gelaufen
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 29 Juli 2020, 17:05:02
Geht bei mir auch nicht immer. Mir scheint, da werden MQTT Nachrichten durcheinander gewürfelt. Oder hin und wieder ausgelassen. Aber, theoretisch wär's richtig ;).
Titel: Antw:FHEM und Rhasspy
Beitrag von: drcyber am 31 Juli 2020, 10:56:17
Thx @ drhirn  für den neuen Thread :)

bei mir spricht jetzt Rhasspy mit FHEM, zumindest kommen in Fhem sachen an die ich Rhasspy sage.

dann weiß ich aber nichtmehr recht weiter..

also ich sage zb "schalte wohnzimmerlampe aus"

Fhem bekommt dann :


{"Device":"wohnzimmerlampe","Value":"aus","input":"wohnzimmerlampe aus","intent":"SetOnOff","probability":0.5,"requestType":"text","sessionId":"default-blueberry-8c3241d5-1414-4771-a5a6-469b38b77b64","siteId":"default"}



Die Wohnzimmerlampe in FHEM hat folgende Attribute (unter anderem)

snipsName wohnzimmerlampe
snipsRoom default
snipsMapping  ein=on,an=on,aus=off


stimmt das überhaupt so? bzw reicht das , oder stelle ich mir das zu einfach vor?

LG Markus
Titel: Antw:FHEM und Rhasspy
Beitrag von: jowe am 31 Juli 2020, 11:08:14
Hi drcyber,

die attribute sind so nicht korrekt. Bei mir sieht das für das Device HM_420E4D_Sw (=meine Wohnzimmerlampe) so aus:

attr HM_420E4D_Sw snipsColors hell=pct 100 dunkel=pct 10
attr HM_420E4D_Sw snipsMapping SetOnOff:currentVal=state,cmdOn=pct 20,cmdOff=off\
GetOnOff:currentVal=state,valueOff=off\
SetNumeric:currentVal=pct,cmd=pct,minVal=5,maxVal=100,step=5,type=Helligkeit\
GetNumeric:currentVal=pct,type=Helligkeit\
Status:response="Die Wohnzimmerlampe ist auf [HM_420E4D_Sw:pct]%"
attr HM_420E4D_Sw snipsName Wohnzimmerlampe
attr HM_420E4D_Sw snipsRoom Wohnbereich, Wohnzimmer,Wohnzimmer2


Gruß Jonas
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 31 Juli 2020, 13:23:03
So, da ich die nächsten zwei Wochen keine Zeit haben werde, lasse ich meinen aktuellen Stand der 10_SNIPS.pm mal hier. Ich seid herzlich eingeladen zu testen und daran weiter zu arbeiten.

Getestete Intents: SetOnOff, GetOnOff, GetNumeric
Gibt aber keinen Grund, warum die anderen nicht auch gehen sollten.

textCommand geht auch, liefert aber gerade keine korrekte Antwort. Da habe ich beim Aufräumen des Codes was verbastelt.

say geht nicht. Weil parseParams in 99% aller Fälle nicht richtig trennt. Warum auch immer.

Shortcuts gehen natürlich auch nicht

Die Intents (sentences.ini) müssen mit Doppelpunkt benannt werden. Also am Besten so, wie sie bei Snips hießen (de.fhem:SetOnOff, de.fhem:GetOnOff, etc.)

Meine sentences.ini sieht derzeit so aus (nur so als Beispiel, ist ein ziemlicher Saustall):


[de.fhem:SetOnOff]
(Radio|Boombox){Device} [(wohnzimmer|kueche|bad|küche|klo|klö){Room}] $OnOffValue{Value}

[de.fhem:GetOnOff]
($OnOffValue|ist:an){Status} (Radio|Boombox){Device} [(wohnzimmer|schlafzimmer){Room}] [$OnOffValue{Status}]

[de.fhem:GetNumeric]
(wie laut|wie ist die lautstärke){Type:Lautstärke} (Radio|Boombox){Device} [(im|in der|auf der|draußen|auf dem)] [(wohnzimmer|kueche|bad|küche|klo|klö){Room}]
(wie ist die|wie warm ist es){Type:Temperatur} [temperatur] [(thermometer){Device}] im [(wohnzimmer|kueche|bad|küche|klo|klö){Room}]
\[(wie|wie ist die)] (hell|helligkeit){Type:Helligkeit} (Radio|Boombox){Device} [(wohnzimmer|kueche|bad|küche|klo|klö){Room}]


Hin und wieder gibt's Probleme mit Umlauten. Habe aber noch nicht herausgefunden, warum und wann.

Gruß
Stefan
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 25 August 2020, 11:27:35
Ich habe im ersten Beitrag (https://forum.fhem.de/index.php/topic,113180.msg1074909.html#msg1074909) eine weiter umgebaute Version des Snips-Moduls angehängt. Einzig große Neuerung ist, dass vom Modul aus die Slots befüllt werden können. Pseudo-Injection sozusagen. Dazu werden alle snipsNames, -Rooms, -Colors, etc. aus den Attributen der Devices im Raum "Rhasspy" gesammelt und als JSON an die HTTP-API von Rhasspy gesendet.
Vorsicht: Bestehende Slots werden überschrieben!
Die Slots haben dann Namen wie de.fhem.Device, de.fhem.Room, etc.
Ein ASR+NLU Training ist dann aus dem Modul heraus auch möglich.

Damit updateSlots und trainRhasspy funktionieren, muss das Attribut rhasspyMaster gesetzt werden. Und zwar auf die URL des Rhasspy-Masters (z.B.: http://rhasspy.example.com:12101).

Außerdem heißt's nicht mehr "SNIPS", sondern "RHASSPY". Somit heißen auch die Attribute rhasspyName, rhasspyRoom, rhasspyMapping, etc.

Ansonsten noch immer die Probleme von oben. TextCommand geht aber.

Tests + Verbesserungen sind herzlich willkommen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: bennebartsch am 06 September 2020, 20:17:09
Habe gerade mal deine 10_RHASSPY.pm getestet. Klappt soweit ganz gut, nur irgendwie habe ich Probleme mit Geräten bei denen ich mehrere Namen vergeben habe:
attr licht rhasspyName Licht,Lampe
Es werden 2 Slots hinzugefügt, Licht und Lampe. Es funktioniert aber leider nur Lampe.

Wäre es nicht besser das rhasspyName attribut im Rhasspy Syntax zu schreiben:
attr licht rhasspyName (Lampe | Licht)
und dann die Slots so generieren:
(Lampe | Licht):licht
Titel: Antw:FHEM und Rhasspy
Beitrag von: bennebartsch am 07 September 2020, 12:31:21
Ich nehme alles zurück, mehrere Namen mit Komma funktionieren doch. Trotzdem fände ich es besser FHEM den Rhasspy Syntax beizubringen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 07 September 2020, 14:01:26
Warum fändest du das besser?
Das Problem ist dann nämlich, dass FHEM (bzw. das Modul) auch was mit licht anfangen können muss. Und woher soll FHEM/Rhasspy dann wissen, dass es den Slot/Namen mit licht ergänzen muss?
Titel: Antw:FHEM und Rhasspy
Beitrag von: bennebartsch am 16 September 2020, 13:20:57
Es geht nicht wirklich um die rhasspyName Attribute, sondern ehr ums Prinzip. Bei Shortcuts z.B. wäre es sehr hilfreich wenn ich nicht jedes Shortcut 5x kopieren muss sondern einfach den Rhasspy Syntax benutzen kann.
BTW: Shortcuts laufen bei mir mit deiner Version einwandfrei! Einziges Problem sind immer noch Umlaute


(einen kaffee | mach[e] mal kaffee) [bitte]={fhem "set jura cmd 1coffee";}
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 16 September 2020, 13:30:18
Ah, verstehe, was du meinst. Gut, das ging unter Snips ja auch schon nicht. Lässt sich sicher so einbauen (bei den Shortcuts). Mir fehlt nur leider gerade Zeit und Wissen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: bennebartsch am 16 September 2020, 14:47:15
Ich kümmere mich jetzt erstmal um das Problem mit den Umlauten. Es sieht so aus als würde Rhasspy die Umlaute anders ins MQTT schicken als Snips. Werde ich mir heute Abend nochmal genauer anschauen.
Danach widme ich mich dem Rhasspy Syntax für Shortcuts.

Custom Intents laufen allerdings auch wunderbar!
rhasspyChannels muss ich noch testen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 16 September 2020, 16:30:07
Ich hab hier noch eine andere Version. An der hab ich in letzter Zeit am meisten gemacht: https://github.com/drhirn/fhem-rhasspy/blob/master/10_STE.pm
Da funktioniert auch der "say"-Befehl (jetzt "speak").

Mir ist aber aufgefallen, dass SetNumeric Intents nicht funktionieren.
Titel: Antw:FHEM und Rhasspy
Beitrag von: bennebartsch am 16 September 2020, 16:52:20
Bei mir läuft SetNumeric mit deiner 10_RHASSPY wunderbar.
So sieht meine config grade aus:

[global]
artikel = [( der | die | das | den )]
end = [( kollege  | mein freund )]
SetStart = [ [ schalt[e] | stell[e] | mach[e] ] [<artikel>] ]
DeviceRoom = ($de.fhem.Device){Device} [im] [($de.fhem.Room){Room}]

[de.fhem:SetOnOff]
<global.SetStart> <global.DeviceRoom> $OnOffValue{Value} <global.end>

[de.fhem:GetNumeric]
(auf wieviel [prozent] steht | auf was steht)  [<global.artikel>] <global.DeviceRoom> <global.end>

[de.fhem:GetStatus]
(status | wie ist der status von) [<global.artikel>] <global.DeviceRoom> <global.end>

[de.fhem:SetNumeric]
<global.SetStart> <global.DeviceRoom> [auf] (0..100 | dunkel:10 | hell:100 | heller:100 | dunkler:10){Value} [Prozent] <global.end>

[de.fhem:Shortcut]
($de.fhem.Shortcuts){Shortcut} <global.end>

[de.fhem:home_status]
away = (ich bin dann mal weg | hau rein | bis später):away
home = (ich bin wieder da | boss is back):home
bed = (ich gehe jetzt ins bett | gute nacht):bed
sleep = (schlaf gut | bis morgen):sleep
(<away> | <home> | <bed> | <sleep>){status} <global.end>
Titel: Antw:FHEM und Rhasspy
Beitrag von: chicco am 17 September 2020, 21:41:31
Hallo zusammen,

ich kann zu Rhasspy eigentlich nix beitragen, denn ich habe es bisher nicht installiert.
Mein Snips funzt einfach zu gut, da gabs bisher keinen Bedarf Rhasspy zu benutzen.
Aber ich habe irgendwann mal die Rhasspy-Doku überflogen und bin hier am mitlesen - vielleicht braucht man es dann doch irgendwann...

Für die Shortcuts habe ich vielleicht was für euch:
Ich hatte Anfang des Jahres einen Shortcut-Generator für Snips gebaut, siehe hier:
https://forum.fhem.de/index.php/topic,89548.msg1016099.html#msg1016099 (https://forum.fhem.de/index.php/topic,89548.msg1016099.html#msg1016099)
Siehe auch die Beiträge #931 und #939
Da werden im Attribut "myShortcuts" shortcuts in variabler Form hinterlegt. Dann führt man ein "set Snips generateShortcuts" aus und dann hat man einen Haufen generierter Shortcuts im Attribut "shortcuts". Bei der Syntax für den Generator hatte ich mich übrigens an der Rhasspy-Syntax orientiert, nur die eckigen Klammern haben eine andere Bedeutung.
Bin mir nicht sicher ob es das ist was ihr sucht. Falls ja, könnt ihr euch ja daran orientieren oder Code kopieren.

Gruß
chicco
Titel: Antw:FHEM und Rhasspy
Beitrag von: bennebartsch am 19 September 2020, 14:21:21
Hey chicco, coole Idee! Allerdings würde ich das nicht in Kombination mit Rhasspy nutzen, da Rhasspy das alles schon wunderbar selber kann.

Bezüglich der Umlaute: Der Fehler liegt (wie vermutet) bei Rhasspy. Habe auf Github ein Issue eröffnet, die Lösung kam auch recht flott als Antwort.
https://github.com/rhasspy/rhasspy/issues/111
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 20 September 2020, 14:18:27
Hallo,
so, Sonntag, Kinder vor der Glotze...
Rhasspy installiert, auf deutsch und auch den dort internen MQTT-Server erreichbar gemacht.
docker run -d -p 12101:12101 \
      -p 12183:12183 \
      --name rhasspyDE \
      --restart unless-stopped \
      -v "$HOME/.config/rhasspy/profiles:/profiles" \
      -v "/etc/localtime:/etc/localtime:ro" \
      --device /dev/snd:/dev/snd \
      rhasspy/rhasspy \
      --user-profiles /profiles \
      --profile de

gemäß Anleitung bei Rhasspy
Dann wie bei Snips ein MQTT-Device in FHEM angelegt:
defmod mqtt_RHAPSSY_DE MQTT 192.168.178.20:12183
attr mqtt_RHAPSSY_DE group Technik
attr mqtt_RHAPSSY_DE room Rhapssy

10_RHASSPY von hier runtergeladen, auf den FHEM-Server kopiert, Reload 10_RHASSPY gemacht und Device angelegt:
defmod rhasspy_DE RHASSPY mqtt_RHAPSSY_DE Wohnzimmer
attr rhasspy_DE IODev mqtt_RHAPSSY_DE
attr rhasspy_DE room Rhapssy


Ohne jede weitere Optimierung: Welche Services brauch ich den jetzt, damit fhem das alles mitbekommt?
Mit den angehängten Einstellungen bekomme ich nur
Readings
transmission-state     incoming publish received     2020-09-20 14:09:43

Mein Uraltes Snips-Device hat ja viel mehr bekomen:
Readings    lastIntentPayload    {"Device":"vitrinenlicht","Value":"aus","input":"vitrinenlicht aus","intent":"SetOnOff","probability":null,"requestType":"voice","sessionId":"97899adb-49aa-474f-9edd-3e46d26828c9","siteId":"default"}    2019-03-22 16:31:56
lastIntentTopic    hermes/nlu/intentParsed    2019-03-22 16:31:56
u.v.m
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 21 September 2020, 08:51:13
Zitat von: laberlaib am 20 September 2020, 14:18:27
Ohne jede weitere Optimierung: Welche Services brauch ich den jetzt, damit fhem das alles mitbekommt?

Wie sehen deine Rhasspy-Sentences aus? Leg einen an, der [de.fhem:SetOnOff] heißt und dann sollte alles funktionieren.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 21 September 2020, 15:53:51
Wärt ihr so nett und würdet mal diese Version hier auf Herz und Nieren testen. An der 10_RHASSPY.pm mache ich nichts mehr.
https://github.com/drhirn/fhem-rhasspy/blob/master/10_STE.pm

Dafür müsste man halt ein eventuelles Rhasspy-Device löschen.

Wie weiter oben schon erwähnt, funktioniert hier der "say"-Befehl (heißt jetzt "speak"). Es gibt auch noch ein paar zusätzliche Intents (GetTime, GetWeekday). Und ich habe da v.a. etwas aufgeräumt. Auch wenn's noch immer ein ziemlicher Saustall ist.
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 21 September 2020, 17:05:42
...aber alles andere bleibt bei RHASSPY? room, mapping, etc?
Warum die Umbenennung?

€: Und wenn ich Slots, Values und so Anpassen muss, dann ist ja auch nur zum testen, ob die Verbindngen funktionieren doch etwas mehr notwendig...
Eigentlich könnte man dann doch so "generische" Slots, Sentence etc. als eine Art "Bibliotheken" auch sammeln? Weil bei Snips waren ja nur die Values dann individuell so weit ich mich erinnere.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 21 September 2020, 19:34:27
Ja, alles andere bleibt. Ich hab's nur vorläufig umbenannt, damit ich bei einem Fehler mit der alten Version vergleichen kann.

Die Sache mit dem Sentences, Slots, etc. sammeln ist eine gute Idee! Die sollten ja bei uns allen gleich sein. Werde morgen mal posten, was ich so habe. Ist noch nicht viel, weil ich der Sache noch nicht viel Zeit gewidmet habe.
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 25 September 2020, 12:36:51
Slot sind Casesensitive
device != Device
value != Value


Also ich hab eben das STE-Modul installiert und dann ohne "train" mal einen einfachen Versuch gestartet:
Sentence.ini:

[de.fhem:SetOnOff]
Stehlampe{device} im Wohnzimmer{room} an{value}


Das soll folgendes Device schalten:
defmod light_Stehlampe MQTT2_DEVICE zigbee_0xec1bbdfffe181343
attr light_Stehlampe rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentValue=state,valueOff=off
attr light_Stehlampe rhasspyName Stehlampe
attr light_Stehlampe rhasspyRoom Wohnzimmer
attr light_Stehlampe room Rhasspy,LIGHTER,MQTT2_DEVICE,Snips

Den Satz eingegeben und der intent wird an FHEM/STE weitgergeben. Ausgeführt wird allerdings nix. Mit verbose 5 ergibt das:

2020.09.25 12:27:17 5: publish received for hermes/intent/de.fhem:SetOnOff, {"input": "Stehlampe im Wohnzimmer an", "intent": {"intentName": "de.fhem:SetOnOff", "confidenceScore": 1.0}, "siteId": "default", "id": "8bf710a1-7fb7-4e57-9eab-ae1646e0678f", "slots": [{"entity": "device", "value": {"kind": "Unknown", "value": "Stehlampe"}, "slotName": "device", "rawValue": "Stehlampe", "confidence": 1.0, "range": {"start": 0, "end": 9, "rawStart": 0, "rawEnd": 9}}, {"entity": "room", "value": {"kind": "Unknown", "value": "Wohnzimmer"}, "slotName": "room", "rawValue": "Wohnzimmer", "confidence": 1.0, "range": {"start": 13, "end": 23, "rawStart": 13, "rawEnd": 23}}, {"entity": "value", "value": {"kind": "Unknown", "value": "an"}, "slotName": "value", "rawValue": "an", "confidence": 1.0, "range": {"start": 24, "end": 26, "rawStart": 24, "rawEnd": 26}}], "sessionId": "8bf710a1-7fb7-4e57-9eab-ae1646e0678f", "customData": null, "asrTokens": [[{"value": "Stehlampe", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 9, "time": null}, {"value": "im", "confidence": 1.0, "rangeStart": 10, "rangeEnd": 12, "time": null}, {"value": "Wohnzimmer", "confidence": 1.0, "rangeStart": 13, "rangeEnd": 23, "time": null}, {"value": "an", "confidence": 1.0, "rangeStart": 24, "rangeEnd": 26, "time": null}]], "asrConfidence": null, "rawInput": "Stehlampe im Wohnzimmer an", "wakewordId": null, "lang": null}
2020.09.25 12:27:17 5: Parsed value: 8bf710a1-7fb7-4e57-9eab-ae1646e0678f for key: sessionId
2020.09.25 12:27:17 5: Parsed value: 1 for key: probability
2020.09.25 12:27:17 5: Parsed value: Stehlampe im Wohnzimmer an for key: rawInput
2020.09.25 12:27:17 5: Parsed value: default for key: siteId
2020.09.25 12:27:17 5: Parsed value: Stehlampe for key: device
2020.09.25 12:27:17 5: Parsed value: SetOnOff for key: intent
2020.09.25 12:27:17 5: Parsed value: an for key: value
2020.09.25 12:27:17 5: Parsed value: Wohnzimmer for key: room
2020.09.25 12:27:17 5: Parsed value: Stehlampe im Wohnzimmer an for key: input
2020.09.25 12:27:17 5: handleIntentSetOnOff called

Und dann passiert nix.
Bescheidene Perl-Kenntnisse: Ich hab mal da hinter
1099 if (exists($data->{'Device'}) && exists($data->{'Value'})) {
Noch ein Log3 eingefügt, welches aber nie ausgegeben wird. D.h. das wird wohl nie true...

Ich bin mal was WE fort, drum kann ich erst Sonntagabend/Montag weiterforschen.

dann müsste doch das hier
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 28 September 2020, 10:46:01
Ah, jetzt wollte ich mir gerade deinen Beitrag vornehmen, weil ich endlich Zeit habe. Hat mich doch sehr gewundert, weil das alles richtig ausgesehen hat. Aber siehe da, ist eh schon gelöst :).
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 28 September 2020, 11:02:44
Dann hab ich was anderes zum Vornehmen:
Mehrsprachigkeit!
Das wäre ein Killerfeature und wohl sowas wie ein USP!

- Den Rhasspymaster kann ich ja in beliebigen VMs mehrfach laufen lassen, kein Ding.
- In FHEM mehrer MQTT-Connectoren und Rhasspymaster anlegen sollte auch funktionieren.
- Rhasspy-Satelliten auf 2 verschiedene Hotwords trainieren, die dann nur den jeweiligen Master aktvieren und Audio an diesen weitergeben, lässt sich evtl. mit MQTT darstellen (sonst eben zunächst mal zwei Satelliten)

- Aber zum Trainieren und v.a. zum Matchen werden in FHEM eben immer die gleichen Attribute genutzt. D.h. ich würde dem Deutschen Rhasspy auch die Spanischen Begriffe beibringen wollen - das wird das Sprachmodel nicht mitmachen/hart verwirren.

Also mein Vorschlag mehr oder weniger ins Blaue rein: Man kann dem Modul im define neben dem Standardraum und dem MQQT-Device noch ein Postfix mitgeben, welches dann an die Attributnamen angehängt wird.
define rhasspyDeutsch STE Wohnzimmer mqttConnectorDeviceZumDeutschenMaster DE
und
define rhasspySpanisch STE Salon mqttConnectorDeviceZumSpansichenMaster ES

und die attribute werden dann eben
attr rhasspyDeutsch rhasspyRoomDE
attr rhasspyDeutsch rhasspyNameDE

bzw.
attr rhasspySpanisch rhasspyRoomES
attr rhasspySpanisch rhasspyNameES


Default für das Postfix ist leer, so dass bestehende Installationen nichts angepasst werden müssen.

Positiver Mehrwert: man kann bei der Sprachausgabe drauf zurückgreifen: Ich lasse bspw. ansagen, wenn ich die Haustür öffne und ein Fenster offen ist. Da kann ich dann viel einfacher die Bezeichnungen der Fenster rauspflücken, wenn ich unterschiedliche Namensfelder für unterschiedliche Sprachen habe.

(Ich könnte sicherlich auch alles einfach einmal in FHEM und nochmal in den Rhasspyinstallationen pflegen. Aber das Ziel wäre ja, dass man nur eine Stelle hat, wo das zu tun ist und der Rest sozusagen generisch ist, so wie bei Snips es war. Und generische Sentence.ini werden gemeinsam erarbeitet).

€: Das STE-Device bekommt natürlich das FHEM-MQTT-Connector-Device als Attribut, nicht direkt die Rhasspy-IP.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 28 September 2020, 11:13:39
Verstehe, was du willst.
Sollte einfach zu lösen sein. Wir könnten den jeweiligen Raum einfach so benennen, wie das Device heißt.

Mir wäre aber lieber, wenn wir zuerst die derzeitige Funktionalität des Moduls überprüfen könnten. Ich hab ja wie gesagt, nicht viel Ahnung davon, was ich da mache ;). Wenn alles zu unserer Zufriedenheit läuft, können wir Funktionen dazu bauen. Bzw. kann das ja jeder selber mittels Pull-Request.

Ich habe z.B. derzeit noch das Problem, dass FHEM bei Lichtszenen doppelt reagiert.

Bei sowas:

defmod Beleuchtung LightScene lampe1 lampe2
attr Beleuchtung userattr rhasspyChannels:textField-long
attr Beleuchtung rhasspyChannels Esslicht=set Beleuchtung scene Esslicht\
Fernsehlicht=set Beleuchtung scene Fernsehlicht\
Computerlicht=set Beleuchtung scene Computerlicht
attr Beleuchtung rhasspyMapping SetOnOff:cmdOn=set Beleuchtung scene AllesAn,cmdOff=set Beleuchtung scene AllesAus
attr Beleuchtung rhasspyName beleuchtung
attr Beleuchtung room Rhasspy


bekomme ich zuerst "da ist etwas schiefgelaufen" und dann "ok". Das ist etwas irritierend. Ist das bei euch auch so?
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 28 September 2020, 18:17:11
Im Log sollte er doch anzeigen, was er genau versteht und welche Intents er aufruft etc. Dann sollte man aj erstmal sehen, ob der SetOnOff- oder der Mediachannels-Intent die Probleme macht, oder beide.
Rufst Du per Textcommand auf, so dass zumindets ein Problem bei Rhasspy ausgeschlossen werden kann und nur wirklich ein Intent aufgerufen wird?

Dann könntest Du auch (testweise) versuchen, alles über den MediaChannels-Intent abzuwickeln: also via den Channels "AnLicht" und "AusLicht".

Wie tief hast du den SNIPS zu STE geändert? Auf einer Skala von "Suchen-Ersetzen SNIPS>STE" bis zu komplettem Rewrite der einzelnen Funktionen?



Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 28 September 2020, 19:00:43
Zitat von: laberlaib am 28 September 2020, 18:17:11
Im Log sollte er doch anzeigen, was er genau versteht und welche Intents er aufruft etc. Dann sollte man aj erstmal sehen, ob der SetOnOff- oder der Mediachannels-Intent die Probleme macht, oder beide.
Rufst Du per Textcommand auf, so dass zumindets ein Problem bei Rhasspy ausgeschlossen werden kann und nur wirklich ein Intent aufgerufen wird?

Es hat mit dem Aufbau der handleIntentXY-Funktionen zu tun. Aber ich hab's noch nicht ganz durchschaut. Da wird irgendwie immer eine Antwort gesendet (letzte Zeile). Aber halt auch, wenn der Aufruf eigentlich passt. Und somit doppelt. Keine Ahnung, warum Thyraz das so gelöst hat. Es muss aber einen Grund geben. Bei Snips hat's ja funktioniert. Und ich bilde mir ein, bei meinem vorigen Modul auch.
Ist mir bis jetzt aber nur bei Sprachbefehlen aufgefallen. Bei Textbefehlen nicht.

Zitat von: laberlaib am 28 September 2020, 18:17:11
Wie tief hast du den SNIPS zu STE geändert? Auf einer Skala von "Suchen-Ersetzen SNIPS>STE" bis zu komplettem Rewrite der einzelnen Funktionen?

Mehr als Suchen-Ersetzen, weniger als kompletter Rewrite ;)
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 28 September 2020, 19:24:46
Mach halt mal verbose 5 im Modul und guck was das Log bringt.
Eigentlich ist die Ausgabe am Ende entweder Erfolg oder Fehler.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 28 September 2020, 19:51:58
Wenn's nur so einfach wär ;)

Hotword erkannt - Ausgabe "bling":

2020.09.28 19:44:47 5: publish received for hermes/dialogueManager/sessionStarted, {"sessionId": "wohnzimmer-default-41b6532a-2755-4882-ad6e-b6a12f3bb290", "siteId": "wohnzimmer", "customData": "default", "lang": null}
2020.09.28 19:44:47 5: Parsed value:  for key: intent
2020.09.28 19:44:47 5: Parsed value:  for key: rawInput
2020.09.28 19:44:47 5: Parsed value:  for key: input
2020.09.28 19:44:47 5: Parsed value: wohnzimmer-default-41b6532a-2755-4882-ad6e-b6a12f3bb290 for key: sessionId
2020.09.28 19:44:47 5: Parsed value: wohnzimmer for key: siteId
2020.09.28 19:44:47 5: Parsed value:  for key: probability


Intent erkannt - Ausgabe "da ist etwas schiefgegangen":

2020.09.28 19:44:50 5: publish received for hermes/intent/de.fhem:SetOnOff, {"input": "Licht an", "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": "OnOffValue", "value": {"kind": "Unknown", "value": "an"}, "slotName": "Value", "rawValue": "an", "confidence": 1.0, "range": {"start": 6, "end": 8, "rawStart": 6, "rawEnd": 8}}], "sessionId": "wohnzimmer-default-41b6532a-2755-4882-ad6e-b6a12f3bb290", "customData": null, "asrTokens": [[{"value": "Licht", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 5, "time": null}, {"value": "an", "confidence": 1.0, "rangeStart": 6, "rangeEnd": 8, "time": null}]], "asrConfidence": null, "rawInput": "licht an", "wakewordId": "default", "lang": null}
2020.09.28 19:44:50 5: Parsed value: 1 for key: probability
2020.09.28 19:44:50 5: Parsed value: wohnzimmer for key: siteId
2020.09.28 19:44:50 5: Parsed value: Licht an for key: input
2020.09.28 19:44:50 5: Parsed value: Licht for key: Device
2020.09.28 19:44:50 5: Parsed value: an for key: Value
2020.09.28 19:44:50 5: Parsed value: wohnzimmer-default-41b6532a-2755-4882-ad6e-b6a12f3bb290 for key: sessionId
2020.09.28 19:44:50 5: Parsed value: licht an for key: rawInput
2020.09.28 19:44:50 5: Parsed value: SetOnOff for key: intent
2020.09.28 19:44:50 5: handleIntentSetOnOff called
2020.09.28 19:44:50 5: Device selected: lightSceneWz
2020.09.28 19:44:50 5: rhasspyMapping selected: cmdOn=set lightSceneWz scene AllesAn,cmdOff=set lightSceneWz scene AllesAus
2020.09.28 19:44:50 5: Running command set lightSceneWz scene AllesAn on device lightSceneWz


Befehl ausgeführt - Ausgabe "ok"

2020.09.28 19:44:52 5: publish received for hermes/dialogueManager/sessionEnded, {"termination": {"reason": "nominal"}, "sessionId": "wohnzimmer-default-41b6532a-2755-4882-ad6e-b6a12f3bb290", "siteId": "wohnzimmer", "customData": "default"}
2020.09.28 19:44:52 5: Parsed value:  for key: intent
2020.09.28 19:44:52 5: Parsed value:  for key: rawInput
2020.09.28 19:44:52 5: Parsed value: wohnzimmer-default-41b6532a-2755-4882-ad6e-b6a12f3bb290 for key: sessionId
2020.09.28 19:44:52 5: Parsed value:  for key: input
2020.09.28 19:44:52 5: Parsed value: wohnzimmer for key: siteId
2020.09.28 19:44:52 5: Parsed value:  for key: probability


Wie gesagt, der Intent liefert die Standard-Ansage "Fehler". Danach wird der Befehl ausgeführt und die Session je nach Erfolg mit der definierten Ansage ("ok" in dem Fall) abgeschlossen.

Kann nicht schwer zu lösen sein. Aber mir fehlt gerade etwas die Zeit.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 29 September 2020, 10:58:03
Es scheint ja, als ob das bei dir nicht passiert. Und auf meiner Test-Maschine auch nicht, wie ich gerade festgestellt habe. Muss also eher was mit meiner FHEM-Installation zu tun haben. Irgendwie beruhigend, irgendwie auch nicht ;).
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 29 September 2020, 11:43:19
vgl. parsParam...  :/

Ich bin mir nicht sicher, ob ich ein ähnliches Verhalten mit den doppelten Ansagen bei SNIPS auch mal hatte - inzwischen verschwimmen da die Erinnerungen.
Aber mal ein wenig Detektiv sein:

Bei meinen Tests gebe ich immer noch in Rhasspy direkt die Sätze ein und verwende kein Audio. Aber das dürfte ja keine Rolle spielen.

im Grunde wird "STE_respond" nur 2x aufgerufen: einmal bei "STE_onmessage" wenn ein Shortcut vermutet wird und einmal als Bestätigung nach einem Standardintent.

Wenn Du nun sagst, dass das evtl. an deiner Installation liegt, dann eine mögliche Vermutung:
"STE_onmessage" wird "irgendwie" 2x aufgerufen (leider Blick ich nicht so ganz, wo das überhaupt aufgerufen wird):
also mal gucken, was da noch im Raum "Rhasspy" so rumfliegt?
(btw: seh ich das richtig in Zeile 317, dass das Userattribut dazu "shortcuts" heißen muss? das wäre ja unter rhasspyShortcuts (oder rhasspyShortcutsDE :p) besser aufgehoben)

D.h. man könnte mal dem ganzen MQTT-Verkehr zuhören, zum Glück gibts da ja was:
https://forum.fhem.de/index.php/topic,95918.0/all.html
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 29 September 2020, 11:54:58
"STE_onmessage" wird immer dann aufgerufen, wenn eine MQTT-Nachricht über hermes/intent/+, hermes/dialogueManager/sessionStarted oder hermes/dialogueManager/sessionEnded daher kommt.

Mir ist das bisher nur aufgefallen, wenn ich Spracheingaben mache. Bei Texteingaben habe ich ja keine Sprachausgabe.

Das mit shortcuts ist auch bei Thyraz so. Das passt schon. Gilt ja nur für das Snips-/Rhasspy-Device. Wie auch response. Habe ich übrigens noch gar nicht getestet.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 29 September 2020, 19:10:09
Also, das mit der doppelten Sprachausgabe scheint an den Satelliten zu liegen. Solange ich nur einen Master habe, klappt alles einwandfrei. Sobald ich einen Satellit hinzufüge, kommt irgendwo ein "OK" als Bestätigung daher. Ich befürchte, das kommt von Rhasspy.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 30 September 2020, 12:37:12
Die neue Version kann jetzt auch mit Shortcuts umgehen.

Dafür wird nach einem set [device] updateSlots ein neues Sentence-File mit dem Namen de.fhem.Shortcuts.ini angelegt und alle Shortcuts rein geschrieben.

Ich hab das mal auf die Schnelle mit denen getestet (ergeben keinen Sinn, macht aber nichts):

attr Ste shortcuts Wieviel Trauben ist es={return "es ist " . qx(date +%R) . "Trauben";;}\
Wieviel Orangen ist es={return "es ist " . qx(date +%R) . "Bananen";;}\
schreibe apfel auf die Einkaufsliste={return "Äpfel stehen auf der Einkaufsliste";;}
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 04 Oktober 2020, 10:36:01
Ich bin gerade an der Wakewordkonfiguration:

1) Welche Dienst könnt Ihr da empfehlen?
Ich hab gerade Porcupine, aber da es da nur Englische Wakewords gibt, ist das etwas schwietig für die ganze Familie. Bin also am rumspielen mit der Sensitiviät.

2) Wie kann ich den die Reaktionszeit erhöhen? Der wartet sehr lange auf Input nach dem er aktiviert wurde. Auch per Weboberfläche: aktiviert, dann spricht man sein Sätzchen und dann brauchts noch 2-5 Sekunden, bis der Befehl ausgeführt wird, da er noch aufzeichnet.

Gibts da n Trick?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 04 Oktober 2020, 11:55:56
Ich bin eigentlich mit Raven zufrieden. Habe aber noch nicht genügend Praxistests gemacht.

Bezüglich dem zweiten Punkt würde ich mal im Rhasspy-Forum fragen. Eventuell hat dort jmd. eine Idee.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 01 November 2020, 22:27:21
Als Wakeword nutze ich Snowboy(alexa_02092017.umdl), das geht fix und Alexa versteht jeden.

Die Aufzeichnung des Sprachbefehls sollte bei einer Sprechpause von ca. 0,5 Sekunden enden und sofort ausgeführt werden.
Da Rhasspy ziemlich lange bracht, um die Bestätigungstöne(WakeWAVE, Recorded WAVE) auszugeben, habe ich diese auskommentiert (# am Anfang).

Insgesamt bin ich sehr zufrieden mit dem Snips-Ersatz, welcher für meine Belange genügt.

Gibt es eine einfache Möglichkeit, Snips-Skills, wie z.B. Wikipedia zu implementieren?

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: Thargor am 03 November 2020, 22:27:52
Hallo zusammen,

ich bin jetzt versuchsweise auch mal auf den Rhasspy-Zug aufgesprungen. Meine Konfiguration besteht aus einem Rhasspy-Server auf dem NAS und einem Satellite (aktuell noch ein Raspi-4). Durch Trial and Error bin ich inzwischen soweit, dass ich bestimmte Devices an/ausschalten kann (Snowboy/Kaldi/NanoTTS). Da mir der SNIPS Hintergrund fehlt, habe ich noch nicht wirklich verstanden wie man das nun erweitern kann. Gibt es da irgendeine Anleitung?

Wie kann ich zum Beispiel erreichen, dass ich Lampen nicht nur An/Aus-Schalten kann, sondern auch bestimmte Helligkeiten oder Lichtszenen per Name setzen kann.

Meine Sentence.ini sieht aktuell so aus:

Zitat
[global]
artikel = [( der | die | das | den )]
end = [( kollege  | mein freund )]
SetStart = [ [ schalt[e] | stell[e] | mach[e] ] [<artikel>] ]
DeviceRoom = ($de.fhem.Device){Device} [im] [($de.fhem.Room){Room}]

[de.fhem:SetOnOff]
<global.SetStart> <global.DeviceRoom> $OnOffValue{Value} <global.end>

Eine Seite vorher habe ich folgenden Eintrag gefunden:

Zitat
[de.fhem:SetNumeric]
<global.SetStart> <global.DeviceRoom> [auf] (0..100 | dunkel:10 | hell:100 | heller:100 | dunkler:10){Value} [Prozent] <global.end>

Wie muss die entsprechende Reaktion in rhasspyMapping eintragen?

Kann mir hier jemand einen Schubs in die richtige Richtung geben?


Danke!

P.S: Woher kommen eigentlich die Antwortsätze "Mache ich doch sehr gerne" Sind die im Rhasspy-Modul fest kodiert?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 05 November 2020, 18:20:39
Hier mal das rhasspyMapping meiner dimmbaren Ikea-Lampe:SetOnOff:cmdOn=on,cmdOff=off
GetOnOff:currentVal=state,valueOff=off
SetNumeric:currentVal=pct,cmd=pct,minVal=5,maxVal=100,step=10,type=Helligkeit
GetNumeric:currentVal=pct,type=Helligkeit
Helligkeit:response="Die Ikea-Lampe ist auf [HUEDevice4:pct] Prozent eingestellt"

Für "heller" oder "dunkler" muss habe ich in der Sentence Change als Ubergabeparameter eingetragen.
[de.fhem:SetNumeric]
(($de.fhem.Room){Room}|($de.fhem.Device){Device}) [auf] (0..100){Value} [Prozent]
($de.fhem.Device){Device} (heller | dunkler){Change}

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 05 November 2020, 18:39:32
Du kannst dich generell an die Snips-Anleitung (https://github.com/Thyraz/Snips-Fhem) halten. Funktioniert alles gleich. Wenn nicht, steht's hier im Thread.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Thargor am 06 November 2020, 21:09:51
Ah, super. Da habe ich erstmal was zu lesen.

Funktioniert bei euch das Speak Kommando?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 07 November 2020, 09:49:06
Ja, in FHEM und im Web-Interface von RHASSPY.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Thargor am 09 November 2020, 10:06:11
Ich habe hier eine Server+Satellit Struktur (siehe Screenshot) und da klappt es leider nicht aus FHEM. Vom Satellit aus kann ich eine Sprachausgabe starten. Hat jemand auch so eine Struktur und kann die Sprachausgabe von FHEM starten?

Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 09 November 2020, 10:08:22
Wie sieht denn dein Befehl aus?
Muss so sein:
set <name> speak siteId="satellite" text="das ist ein test"
Titel: Antw:FHEM und Rhasspy
Beitrag von: Thargor am 09 November 2020, 10:14:01
Vielen Dank. Die ID habe ich natürlich nicht angegeben. So klappt es.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 20 November 2020, 15:24:59
Momentan bastle ich an einer Wetterabfrage über FHEM.
Dazu habe ich bisher zwei eigene Intents (Temperatur, Wind) erstellt. Diese kann ich einzeln und zusammen abfragen.
[de.fhem:Wetter]
Tagbezug = ( heute:0-7 | morgen:8-15 | übermorgen:16-23 )

wie wird die Temperatur <Tagbezug>{Temperatur}
woher weht der Wind <Tagbezug>{Wind}
wie wird <Tagbezug>{Temperatur} das Wetter <Tagbezug>{Wind}

Die dritte Abfrage ist blöd, da ich "Wie ist morgen das Wetter morgen" fragen muss.
Kann man eine erkannte Rule auf zwei Itents gleichzeitig anwenden, so dass ich das zweite "morgen" weglassen kann?

Gruß Jens

"attr Rhasspy rhasspyIntents Wetter=Wetter_Rhasspy(Temperatur,Wind,Niederschlag)"
defmod Openweather JsonMod https://api.openweathermap.org/data/2.5/forecast?lat=xx.xxxxxx&lon=xx.xxxxxx&unit=metric&exclude=daily&cnt=24&lang=de&appid=4ecc11bb9298ee1476c6a5xxxxxxxxxx
attr Openweather interval 05 00 * * *
attr Openweather readingList complete()
attr Openweather room Labor


sub Wetter_Rhasspy($){
my ($Temperatur,$Wind,$Niederschlag) = @_;
my $response;

if ($Temperatur ne ""){
my @Zeiten = split(/-/,$Temperatur);
my $Hoechststemp;
my $Tiefsttemp;

for (my $i=$Zeiten[0];$i<$Zeiten[1];$i++){
if ($i==$Zeiten[0]){$Hoechststemp = ReadingsNum("Openweather","list.$i.main.temp_max",0)};
if (ReadingsNum("Openweather","list.$i.main.temp_max",0) > $Hoechststemp){$Hoechststemp = ReadingsNum("Openweather","list.$i.main.temp_max",0)};
if ($i==$Zeiten[0]){$Tiefsttemp = ReadingsNum("Openweather","list.$i.main.temp_min",0)};
if (ReadingsNum("Openweather","list.$i.main.temp_max",0) < $Tiefsttemp){$Tiefsttemp = ReadingsNum("Openweather","list.$i.main.temp_min",0)};
}

$Hoechststemp = sprintf("%.0f",$Hoechststemp - 273.15);
$Tiefsttemp = sprintf("%.0f",$Tiefsttemp - 273.15);

$response = "Die Höchsttemperatur beträgt $Hoechststemp Grad Celsius und die Tiefsttemperatur $Tiefsttemp Grad";
};
if ($Temperatur ne "" && $Wind ne ""){$response = $response." - "};
if ($Wind ne ""){
my @Zeiten = split(/-/,$Wind);
my $Windrichtung = 0;
my $Windname;
my $Windstaerke = 0;
my $Windbezeichnung;
for (my $i=$Zeiten[0];$i<$Zeiten[1];$i++){
my $Windwert = ReadingsNum("Openweather","list.$i.wind.speed","");
if ($Windwert > $Windstaerke) {$Windstaerke = $Windwert};
};
if ($Windstaerke >= 0){ $Windbezeichnung = "herrscht Windstille"};
if ($Windstaerke > 0.2){ $Windbezeichnung = "weht ein leiser Zug"};
if ($Windstaerke > 1.5){ $Windbezeichnung = "weht eine leichte Brise"};
if ($Windstaerke > 3.3){ $Windbezeichnung = "weht eine schwache Brise"};
if ($Windstaerke > 5.4){ $Windbezeichnung = "weht eine mäßige Brise"};
if ($Windstaerke > 7.9){ $Windbezeichnung = "weht eine frische Brise"};
if ($Windstaerke > 10.7){ $Windbezeichnung = "weht ein starker Wind"};
if ($Windstaerke > 13.8){ $Windbezeichnung = "weht ein steifer Wind"};
if ($Windstaerke > 17.1){ $Windbezeichnung = "weht ein stürmischer Wind"};
if ($Windstaerke > 20.7){ $Windbezeichnung = "droht Sturm"};
if ($Windstaerke > 24.4){ $Windbezeichnung = "droht starker Sturm"};
if ($Windstaerke > 28.4){ $Windbezeichnung = "droht orkanartiger Sturm"};
if ($Windstaerke > 32.6){ $Windbezeichnung = "droht Orkan"};

$response = $response."Es $Windbezeichnung aus ";

for (my $i=$Zeiten[0];$i<$Zeiten[1];$i++){
$Windrichtung = $Windrichtung + ReadingsNum("Openweather","list.$i.wind.deg","");
};
$Windrichtung = $Windrichtung /  ($Zeiten[1] - $Zeiten[0]);
if ($Windrichtung >= 0){ $Windname = "Nord"};
if ($Windrichtung > 23){ $Windname = "Nordost"};
if ($Windrichtung > 68){ $Windname = "Ost"};
if ($Windrichtung > 113){ $Windname = "Südost"};
if ($Windrichtung > 158){ $Windname = "Süd"};
if ($Windrichtung > 203){ $Windname = "Südwest"};
if ($Windrichtung > 248){ $Windname = "West"};
if ($Windrichtung > 293){ $Windname = "Nordwest"};
if ($Windrichtung > 338){ $Windname = "Nord"};

$response = $response.$Windname;
};
if ($response eq ""){$response="keine Daten vorhanden"};
return $response;

}
Titel: Antw:FHEM und Rhasspy
Beitrag von: Thargor am 24 November 2020, 10:20:17
Danke für dein Beispiel. Das war Anregung mich auch mal damit zu beschäftigen.

Ich glaube nicht, dass man den <Tagbezug> zwei Tags zuweisen kann.

Was aber geht ist einen neuen Tag einzuführen:

attr Rhasspy rhasspyIntents Wetter=Wetter_Rhasspy(Temperatur,Wind,Niederschlag,Wetter)

wie wird das Wetter <Tagbezug>{Wetter}
wie wird <Tagbezug>{Temperatur}{Wetter} das Wetter


sub Wetter_Rhasspy($){
my ($Temperatur,$Wind,$Niederschlag,$Wetter) = @_;
my $response;

if ($Wetter ne "")
{
$Temperatur=$Wetter;
$Wind=$Wetter
}


Halte uns/mich bitte weiter auf dem Laufenden :-)
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 24 November 2020, 16:35:35
Danke für deinen Rat. Ich habe in der Zwischenzeit einiges über JSGF gelesen und keine Möglichkeit gefunden, das in der Sentences.ini umzusetzen.
Ich werd's so machen wie du vorgeschlagen hast. Die vielen verschiedenen Zeiträume und Antwortmöglichkeiten in eine sub zu quetschen, ist jetzt die Herrausforderung. Wenn was Brauchbares bei raus kommt, ersetze ich den Code im vorigen Post.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: thomy_h am 14 Dezember 2020, 12:26:30
Hallo zusammen,

bin auch gerade dabei, rhasspy mit fhem zum Laufen zu bringen. Dabei fiel mir folgendes auf:

Muss es in 10_STE.pm ab Zeile 362 (getDeviceByName) nicht !defined($room) statt !defined($device) heißen?


           if (!defined($room) || grep( /^$room$/i, @rooms)) {
                $device = $_;
           }


Begründung:
Das device soll doch sicher nur dann matchen, wenn der rhasspyRoom auch übereinstimmt, so der denn definiert wurde.
So wie es da steht, wird aber das erste device bei dem der rhasspyName stimmt gematcht, egal was im rhasspyRoom steht.
Das führt dann u.a. auch dazu, dass Aktionen ausgeführt werden, obwohl der genannte Raum gar nicht existiert.

z.B.

device1
rhasspyName licht
rhasspyRoom wohnzimmer

device2
rhasspyName licht
rhasspyRoom buero

Auf Intent SetOnOff("esszimmer", "licht", "an") geht das licht im wohnzimmer an. Vermutlich würde bei "licht" auch immer nur das "wohnzimmer" angehen, egal welchen Raum ich nenne. Das hab ich allerdings noch nicht getestet, bin erst am Anfang :)

Ändert man $device in $room, kommt auf o.g. Intent zumindest mal korrekt die response "da ist wohl etwas schiefgegangen", weil "licht" und "esszimmer" nicht existiert und auch "licht" ohne Raum nicht existiert.

ich hoffe ich hab nichts übersehen, ... ansonsten tolles Projekt :)
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 14 Dezember 2020, 12:47:05
Warum? Es wird ja das Device gesucht, nicht der Room. Wenn kein Room da ist, wir ein Standardraum genommen. Wenn ich das richtig sehe, der aus der siteId.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 14 Dezember 2020, 14:12:28
Hinter das Geheimnis des Standardraumes bin ich auch noch nicht gestiegen. In FHEM ist der letzte Parameter der STE-Bridge-Definition der Standardraum. Dabei ist es egal, welche siteId der Rhasspy hat. In der Konfiguration finde ich auch keinen Hinweis dazu. Ich bin mal wieder ratlos...
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 14 Dezember 2020, 14:17:43
Ah, ja, so war das. Der Standardraum ist der aus der Definition. Ich roste ein ;)
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 14 Dezember 2020, 14:46:19
Nun würde ich gern dem Satelliten SZ den Standardraum Schlafzimmer zuweisen - nur wie?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 14 Dezember 2020, 14:51:09
rhasspyRoom Attribut der Devices einfach so benennen, wie der Satellit heißt. MQTT-Messages vom Satelliten sollten ja mit einer siteId befüllt sein. Und die siteId hast du in den Einstellungen des Satelliten ja vergeben. Ist im Sprachbefehl also kein Raumname vorhanden, wird die siteId genommen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 14 Dezember 2020, 18:03:38
Danke, das war's! Bei "Licht an" geht jetzt im jeweiligen Standardraum das Licht an.
Titel: Antw:FHEM und Rhasspy
Beitrag von: cb2sela am 15 Dezember 2020, 15:54:53
Guten Abend,

kann mir mal jemand aufs Pferd helfen? Ich kenne die ganzen Vorgeschichten mit SNIPS nicht und kämpfe mich seit vielen Stunden von Hürde zu Hürde weiter.

Vorhandene Zutaten:

Ich habe die 10_STE.pm installiert und fehlende Dependencies (DateTime.pm und Pluggable.pm) behoben.

In Rhasspy gibt es diesen Sentence:
[de.fhem:SetOnOff]
light_name = (wohnzimmerlampe | garagenlicht) {name}
light_state = (an | ein | aus) {state}
schalte (die | das) <light_name> <light_state>

In FHEM habe ich angelegt:

define RhasspyMQTT MQTT 192.168.178.54:12183
define Rhasspy STE RhasspyMQTT Wohnzimmer
attr Rhasspy room Rhasspy
attr RhasspyMQTT room Rhasspy

und mein Gosund-Gerät noch angereichert:
attr MQTT2_SP111a room Rhasspy,MQTT2_DEVICE
attr MQTT2_SP111a rhasspyName Wohnzimmerlampe
attr MQTT2_SP111a rhasspyRoom Wohnzimmer
attr MQTT2_SP111a rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentValue=state,valueOff=off


Wenn ich zu Rhasspy sage "Schalte die Wohnzimmerlampe an" kommt in Fhem an:
{"input":"schalte die wohnzimmerlampe an","intent":"SetOnOff","name":"wohnzimmerlampe","probability":1,"rawInput":"schalte die wohnzimmerlampe an","requestType":"voice","sessionId":"default-terminator-1d5674a2-30d3-4f7e-babe-e8e1b1d088b8","siteId":"default","state":"an"}
aber er sagt mir "Da ist etwas schief gegangen" und es ändert sich nichts.

Im fhem.log bekomme ich:

2020.12.15 15:52:21 1: PERL WARNING: Use of uninitialized value in substitution (s///) at ./FHEM/10_STE.pm line 697.
2020.12.15 15:52:21 1: PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/10_STE.pm line 723.
2020.12.15 15:52:26 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_STE.pm line 312.
2020.12.15 15:52:26 1: PERL WARNING: Use of uninitialized value $attrString in split at ./FHEM/10_STE.pm line 569.


Was mache ich noch falsch?

Gibts noch irgendwo eine andere Doku außer der https://github.com/Thyraz/Snips-Fhem? Irgendwas Schritt für Schritt-mäßiges, das auch die ganzen Stolpersteine und geänderten Raumnamen etc. berücksichtigt?

Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 15 Dezember 2020, 16:20:03
Probier mal:


[de.fhem:SetOnOff]
schalte (die | das) (wohnzimmerlampe | garagenlicht){Device} (an | ein | aus){Value}
Titel: Antw:FHEM und Rhasspy
Beitrag von: cb2sela am 15 Dezember 2020, 18:14:27
Danke Dir.
Rhasspy ist durch die Änderung freundlicher geworden und sagt jetzt zwar "Mache ich doch sehr gerne" aber FHEM schaltet nicht. Angekommene Nachricht ist


{"Device":"wohnzimmerlampe","Value":"aus","input":"schalte die wohnzimmerlampe aus","intent":"SetOnOff","probability":1,"rawInput":"schalte die wohnzimmerlampe aus","requestType":"voice","sessionId":"default-terminator-f24d1e07-3ee1-4534-bcff-9fd5bc308be8","siteId":"default"}


Im fhem.log bekomme ich :


2020.12.15 18:12:42 1: devspec2array off\: Unmatched ( in regex; marked by <-- HERE in m/^( <-- HERE off\)$/ at fhem.pl line 1323.

2020.12.15 18:12:42 1: stacktrace:
2020.12.15 18:12:42 1:     main::devspec2array                 called by fhem.pl (1943)
2020.12.15 18:12:42 1:     main::CommandSet                    called by fhem.pl (1247)
2020.12.15 18:12:42 1:     main::AnalyzeCommand                called by ./FHEM/10_STE.pm (622)
2020.12.15 18:12:42 1:     main::STE_runCmd                    called by ./FHEM/10_STE.pm (1088)
2020.12.15 18:12:42 1:     main::STE_handleIntentSetOnOff      called by ./FHEM/10_STE.pm (793)
2020.12.15 18:12:42 1:     main::STE_onmessage                 called by fhem.pl (3814)
2020.12.15 18:12:42 1:     main::CallFn                        called by ./FHEM/00_MQTT.pm (550)
2020.12.15 18:12:42 1:     MQTT::__ANON__                      called by FHEM/GPUtils.pm (75)
2020.12.15 18:12:42 1:     GPUtils::GP_ForallClients           called by ./FHEM/00_MQTT.pm (560)
2020.12.15 18:12:42 1:     MQTT::Read                          called by fhem.pl (3814)
2020.12.15 18:12:42 1:     main::CallFn                        called by fhem.pl (755)
2020.12.15 18:12:42 1: default/icoEverything.png
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 15 Dezember 2020, 18:54:51
Versteh ich nicht. Kann ich nicht nachvollziehen. Sieht bei mir auch gleich aus, was via MQTT ankommt:
{"Device":"wohnzimmerlampe","Value":"aus","input":"schalte die wohnzimmerlampe aus","intent":"SetOnOff","probability":1,"rawInput":"schalte die wohnzimmerlampe aus","requestType":"voice","sessionId":"a1a85c82-3951-4acc-988d-3768ee17653f","siteId":"default"}

Kannst du bitte mal das Mapping ändern? Das GetOnOff weglassen.

attr MQTT2_SP111a rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off

Mich irritiert, dass "off" in der Fehlermeldung beanstandet wird.
Titel: Antw:FHEM und Rhasspy
Beitrag von: cb2sela am 15 Dezember 2020, 19:51:47
Sapperlot! Du bist gut! Ohne GetOnOff gehts! Erste Lampe erfolgreich per Spracheingabe gesteuert - ich bin begeistert! :)

Ich hatte das ursprüngliche Attribut einfach so oben in die Eingabezeile eingegeben. Inklusive des Backslash und der neuen Zeile, also so:

attr MQTT2_SP111a rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentValue=state,valueOff=off


Wie wäre es denn richtig gewesen?

Kannst Du mich noch in die richtige Richtung schubsen und auf Doku / Threads verweisen, was ich in Rhasspy und FHEM machen muss, um mir  z.B. die Temperatur eines Temperatursensors vorlesen zu lassen?

Arbeitet irgendjemand an einer Einsteiger-Doku für das Modul 10_STE.pm?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 15 Dezember 2020, 21:10:43
Ohne Backslash wäre richtig. Ein Mapping pro Zeile.

Es gibt leider - außer im GitHub von Thyraz - nirgends eine Doku. Aber lass dich nicht aufhalten ;)
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 16 Dezember 2020, 14:52:13
Es wird euch nicht freuen, aber ich habe gerade endlich die 10_STE.pm in 10_RHASSPY.pm umbenannt. Ihr müsstet also das Modul einbinden und euer Device ändern.
Funktional hat sich nichts verändert. Habe nur eine kurze CommandRef hinzugefügt.
Titel: Antw:FHEM und Rhasspy
Beitrag von: cb2sela am 16 Dezember 2020, 17:06:24
Ich arbeite grade an einer kleinen Getting Started Anleitung. Ich denke, dass die alten FHEM-Hasen die schon von SNIPS kommen vieles automatisch richtig machen, währen der Gelegenheits-FHEM-Nutzer wie ich von Fallstrick zu Fallstrick stolpert und dasteht wie der Ochs vorm Berg.

Bevor ich besagte Anleitung in den nächsten Tagen poste habe ich aber noch ein paar Fragen, die ich gerne klären möchte.

Bitte beachtet: Ich habe noch nie an öffentlichem / fremden Code mitgearbeitet. Wenn ich also irgendwelche Netiquetten verletze oder dumme Fragen habe, dann steinigt mich nicht gleich.

Fürs Erste habe ich noch ein paar Warnings und Fehler im Log:

2020.12.16 15:18:40 1: PERL WARNING: Use of uninitialized value in substitution (s///) at ./FHEM/10_STE.pm line 697.

Das ist die Zeile mit:
     ($data->{'intent'} = $decoded->{'intent'}{'intentName'}) =~ s/^.*.://;
Ursache imho: Nicht alle Datensätze enthalten einen Intent. Wenn ich mein Wakeword terminator sage kommt er einmal an dieser Stelle vorbei und $decoded enthält an dieser Stelle nur:
$VAR1 = {
          'customData' => 'terminator',
          'siteId' => 'default',
          'sessionId' => 'default-terminator-58ecbae3-d036-4d54-b404-20b2ee1969a4',
          'lang' => undef
        };
also weder einen intent noch probability, input oder rawinput.

Ich weiß nicht, ob es korrekt ist, dass Rhasspy schon mit dem wakeword alleine hier aufschlägt und ob sich das an der Quelle abstellen lässt. Ansonsten würde ich so etwas vorschlagen:



    698     # Standard-Keys auslesen
    699     # Wenn nur das Wakeword ankommt gibt es diverse Felder nicht im JSON. Diese Felder werden ggf. nicht befüllt.
    700     if (exists($decoded->{'intent'})) {
    701         ($data->{'intent'} = $decoded->{'intent'}{'intentName'}) =~ s/^.*.://;
    702         $data->{'probability'} = $decoded->{'intent'}{'confidenceScore'};
    703     }
    704     $data->{'sessionId'} = $decoded->{'sessionId'};
    705     $data->{'siteId'} = $decoded->{'siteId'};
    706     $data->{'input'} = $decoded->{'input'} unless !exists($decoded->{'input'});
    707     $data->{'rawInput'} = $decoded->{'rawInput'} unless !exists($decoded->{'rawInput'});


Nächste Warning:

2020.12.16 16:00:35 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_STE.pm line 312.
Das ist die Zeile mit:
    my @rows = split(/\n/, AttrVal($hash->{NAME},"shortcuts",undef));
$hash->{NAME} ist bei mir 'NAME' => 'Rhasspy' und AttrVal($hash->{NAME},"shortcuts",undef) ergibt in der Tat undef. Somit wird @rows nichts.
Muss ich zwingend ein attribut shortcuts setzen und wenn ja auf was?

Nächster:
PERL WARNING: Use of uninitialized value $attrString in split at ./FHEM/10_STE.pm line 569.
Das ist die Zeile:
my $attrString = AttrVal($device, $reading, undef);
Bei mir wird device = 'Rhasspy' und reading = 'response'
AttrVal('Rhasspy', 'reading', undef) wird wohl undef. Ich verstehe noch nicht genau, was hier schief läuft.

Viele Grüße
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 17 Dezember 2020, 15:15:03
Ich hab die Warnungen nicht immer. Eigentlich nur sehr selten. Weiß nicht genau, was man da tun müsste, um sie zu provozieren.

Hast du deine Änderung getestet?

Sind alles nur Warnungen - die so natürlich auch schon im Snips-Modul waren -, darum habe ich mich bisher nicht wirklich darum gekümmert. Nur bei denen, bei denen mein spärliches Perl-Wissen gereicht hat.
Titel: Antw:FHEM und Rhasspy
Beitrag von: cb2sela am 18 Dezember 2020, 14:43:23
Ich habe mir nun einen github account eingerichtet und lese mich grad noch in die Funktionsweise von git und github ein.

Meinen Senf zum Code würde ich dann über github bei Dir einkippen, damit dieser Thread hier nicht zugemüllt wird.

(Die besagten Warnings kann ich reproduzierbar erzeugen. Details dazu dann per github).
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 18 Dezember 2020, 16:09:56
Sehr gut!

Erster Pull Request ist schon gemerged. War auch mein erstes Mal ;).

Übrigens: Früher war die Zeitansage richtig so. Da hat sich wohl bei Rhasspy was geändert.
Titel: Antw:FHEM und Rhasspy
Beitrag von: cb2sela am 20 Dezember 2020, 10:56:11
Für alle Anfänger und Gelegenheits-FHEM-Nutzer wie mich, die gerne erste Schritte mit Rhasspy gehen möchten habe ich ein kleines gettingstarted geschrieben.

https://github.com/cb2sela/fhem-rhasspy-gettingstarted (https://github.com/cb2sela/fhem-rhasspy-gettingstarted)

Es reflektiert eine für mich persönlich funktionierende Anleitung Stand 2020-12 mit buster-lite-2020-08 auf zwei Raspberry PIs und soll die ersten Schritte für all diejenigen erleichtern, die sich zum ersten mal mit dem Thema beschäftigen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Sturi2011 am 21 Dezember 2020, 12:59:41
Hallo,

damit das Beispiel auch tatsächlich mit "ein" funktioniert,

1085              my $cmd = (($value eq 'an')||($value eq 'ein')) ? $cmdOn : $cmdOff;
1092              $numericValue = (($value eq 'an')||($value eq 'ein')) ? 1 : 0;

zumindest hat das bei mir geholfen...und war natürlich quatsch - in der Kurzdoku fehlt irgendwie das Thema Slots ;)

Klasse Arbeit.

Gruß Andreas
Titel: Antw:FHEM und Rhasspy
Beitrag von: Dreggwatz am 03 Januar 2021, 14:51:01
Hi zusammen und ein gutes Neues noch,

meine Frau hat bei einer Bekannten einen Narren an Alexa Sprachsteuerung gefunden und hätte dies bei uns auch gerne. Für mich kommt aber nur eine Offline Sprachsteuerung in Frage und überhaupt muss es bei mir über FHEM laufen damit ich auch alles ansteuern kann. Meine Wunschsprachein- und Ausgabe wäre in diversen Räumen ein SONOS ONE. Bevor ich mir aber so ein Teil zulege und schlussendlich es nicht funktioniert bin ich über Google und SNIPS hier gelandet.

Kann mir jemand kurzer Hand sagen ob mit einem RasPi4 mit FHEM, Rhasspy und mehreren SONOS die Sprachsteuerung realisierbar ist?

Ein PS3eye hab ich sogar noch im Keller rumfliegen... und könnte damit ja schon mal rumspielen bevor ich mich in Unkosten stürze

Danke
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 03 Januar 2021, 16:27:00
Hallo Dreggwatz,

Rhasspy funktioniert bei uns Zuhause als Offline-Sprachsteuerung (auch als Multiroomsystem) bestens.
Ob die SONOS sich allerdings überreden lassen, die Spracheingabe auf eine zentrale Rhasspy-Base zu leiten, kann ich nicht beantworten.
Zumindestens könntest du die SONOS in FHEM einbinden und dann mit Rhasspy steuern.

Mit deinem RasPi4 und einem Mikrofon kannst du Rhasspy betreiben. Leg einfach los und melde dich, falls Fragen auftauchen.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 03 Januar 2021, 18:28:25
Zitat von: JensS am 03 Januar 2021, 16:27:00Rhasspy funktioniert bei uns Zuhause als Offline-Sprachsteuerung (auch als Multiroomsystem) bestens.

Im Ernst? Welches Hardware-Setup? Welches Wakeword?
Bei mir täte es auch gut tun, ich bekomme nur kein Wakeword so hin, dass es zuverlässig und aus mehr als 10cm Entfernung funktioniert. Wohingegen das Snips-Hotword mit dem selben Setup einwandfrei seinen Dienst verrichten würde.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 03 Januar 2021, 19:24:47
Mit einen "ReSpeaker 2-Mics Pi HAT" und Snowboy als Wakeword-Engine läuft es recht flott. Als Wakeword nutze ich Alexa (https://github.com/Kitt-AI/snowboy/raw/master/resources/alexa/alexa-avs-sample-app/alexa.umdl (https://github.com/Kitt-AI/snowboy/raw/master/resources/alexa/alexa-avs-sample-app/alexa.umdl)). Bei alsamixer muss die Mikrolautstärke fast auf Maximum. Man kann Alexa normal ansprechen. Bei Nebengeräuschen (Fernseher etc.) muss man auch schon mal direkt werden...    "microphone": {
        "arecord": {
            "device": "default",
            "siteId": "Wohnzimmer",
            "udp_audio_host": "127.0.0.1",
            "udp_audio_port": "12202"
        },
        "system": "arecord"
    },
    "wake": {
        "satellite_site_ids": "Wohnzimmer",
        "snowboy": {
            "apply_frontend": true,
            "model": "alexa.umdl",
            "sensitivity": "0.50",
            "udp_audio": "127.0.0.1:12202"
        },
        "system": "snowboy"
    }
Das Eingangsdevice ist "PulseAudio Sound Server (default)".
Porcupine soll ja noch schneller und besser sein. Ich habe dazu aber keinen Wakeword-Generator gefunden.

Gruß Jens

p.s. Ergänzend als Hinweis für Suchende:
Bei alsamixer mit F6 die Soundkarte auswählen und mit Tab zur Aufnahmequelle wechseln.
Nach dem Festlegen der Lautstärke mitalsactl --file=/etc/voicecard/wm8960_asound.state storedauerhaft abspeichern (ReSpeaker 2-Mics Pi HAT).
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 03 Januar 2021, 20:03:56
Das ist eigentlich genau die Hardware, die ich auch verwende. Aber auch mit Snowboy wurde ich nicht glücklich. Morgen nochmal ausprobieren.

Könntest du deine wm8960_asound.state anhängen/posten bitte?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 04 Januar 2021, 09:28:09
Und dein Wakeword?
Titel: Antw:FHEM und Rhasspy
Beitrag von: Dreggwatz am 05 Januar 2021, 16:23:10
Danke für den Hinweis,
hab jetzt nach meinem Kenntnisstand alles installiert schein aber noch nicht ganz richtig konfiguriert zu sein. Jedenfalls funktioniert das wakeword nicht. Ich sehe bei Audio Recording (wenn der haken bei Audio statistics gesetzt ist) dass das Mikrofon Geräusche erkennt. Text to Speech gibt mir auch den Sound wieder.
Im Log sind aber einige Meldungen welche ich nicht deuten kann:


[DEBUG:2021-01-05 16:10:25,656] rhasspyprofile.download: text_to_speech.system larynx picotts = False
[DEBUG:2021-01-05 16:10:25,655] rhasspyprofile.download: speech_to_text.deepspeech.mix_weight >0 0 = False
[DEBUG:2021-01-05 16:10:25,654] rhasspyprofile.download: speech_to_text.kaldi.mix_weight >0 0 = False
[DEBUG:2021-01-05 16:10:25,653] rhasspyprofile.download: speech_to_text.pocketsphinx.mix_weight >0 0 = False
[DEBUG:2021-01-05 16:10:25,652] rhasspyprofile.download: speech_to_text.deepspeech.open_transcription True False = False
[DEBUG:2021-01-05 16:10:25,651] rhasspyprofile.download: speech_to_text.kaldi.open_transcription True False = False
[DEBUG:2021-01-05 16:10:25,651] rhasspyprofile.download: speech_to_text.pocketsphinx.open_transcription True False = False
[DEBUG:2021-01-05 16:10:25,650] rhasspyprofile.download: speech_to_text.system deepspeech pocketsphinx = False
[DEBUG:2021-01-05 16:10:25,629] rhasspyprofile.download: speech_to_text.system kaldi pocketsphinx = False
[DEBUG:2021-01-05 16:10:25,628] rhasspyprofile.download: Skipping acoustic_model/variances (/profiles/de/acoustic_model/variances)
[DEBUG:2021-01-05 16:10:25,627] rhasspyprofile.download: Skipping acoustic_model/transition_matrices (/profiles/de/acoustic_model/transition_matrices)
[DEBUG:2021-01-05 16:10:25,627] rhasspyprofile.download: Skipping acoustic_model/noisedict (/profiles/de/acoustic_model/noisedict)
[DEBUG:2021-01-05 16:10:25,626] rhasspyprofile.download: Skipping acoustic_model/mixture_weights (/profiles/de/acoustic_model/mixture_weights)
[DEBUG:2021-01-05 16:10:25,625] rhasspyprofile.download: Skipping acoustic_model/means (/profiles/de/acoustic_model/means)
[DEBUG:2021-01-05 16:10:25,624] rhasspyprofile.download: Skipping acoustic_model/mdef (/profiles/de/acoustic_model/mdef)
[DEBUG:2021-01-05 16:10:25,623] rhasspyprofile.download: Skipping acoustic_model/feature_transform (/profiles/de/acoustic_model/feature_transform)
[DEBUG:2021-01-05 16:10:25,622] rhasspyprofile.download: Skipping acoustic_model/feat.params (/profiles/de/acoustic_model/feat.params)
[DEBUG:2021-01-05 16:10:25,622] rhasspyprofile.download: Skipping g2p.fst (/profiles/de/g2p.fst)
[DEBUG:2021-01-05 16:10:25,621] rhasspyprofile.download: Skipping base_dictionary.txt (/profiles/de/base_dictionary.txt)
[DEBUG:2021-01-05 16:10:25,620] rhasspyprofile.download: speech_to_text.system pocketsphinx pocketsphinx = True
[INFO:2021-01-05 16:10:25,449] rhasspyserver_hermes: Started
[DEBUG:2021-01-05 16:10:25,449] rhasspyserver_hermes: Subscribed to hermes/intent/#
[DEBUG:2021-01-05 16:10:25,448] rhasspyserver_hermes: Subscribed to rhasspy/asr/default/default/audioCaptured
[DEBUG:2021-01-05 16:10:25,447] rhasspyserver_hermes: Subscribed to hermes/audioServer/default/audioSummary
[DEBUG:2021-01-05 16:10:25,446] rhasspyserver_hermes: Subscribed to hermes/hotword/+/detected
[DEBUG:2021-01-05 16:10:25,446] rhasspyserver_hermes: Subscribed to hermes/asr/textCaptured
[DEBUG:2021-01-05 16:10:25,445] rhasspyserver_hermes: Subscribed to hermes/nlu/intentNotRecognized
[DEBUG:2021-01-05 16:10:25,444] rhasspyserver_hermes: Subscribed to hermes/audioServer/default/audioSummary
[DEBUG:2021-01-05 16:10:25,444] rhasspyserver_hermes: Subscribed to rhasspy/asr/default/default/audioCaptured
[DEBUG:2021-01-05 16:10:25,443] rhasspyserver_hermes: Subscribed to hermes/nlu/intentNotRecognized
[DEBUG:2021-01-05 16:10:25,442] rhasspyserver_hermes: Subscribed to hermes/intent/#
[DEBUG:2021-01-05 16:10:25,441] rhasspyserver_hermes: Subscribed to hermes/asr/textCaptured
[DEBUG:2021-01-05 16:10:25,441] rhasspyserver_hermes: Subscribed to hermes/hotword/+/detected
[DEBUG:2021-01-05 16:10:25,440] rhasspyserver_hermes: Connected to MQTT broker
[DEBUG:2021-01-05 16:10:25,412] rhasspyserver_hermes: Connecting to localhost:12183 (retries: 2/10)
[ERROR:2021-01-05 16:10:24,410] rhasspyserver_hermes: mqtt connect
Traceback (most recent call last):
  File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__init__.py", line 289, in start
    self.client.connect(self.host, self.port)
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 937, in connect
    return self.reconnect()
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 1071, in reconnect
    sock = self._create_socket_connection()
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 3522, in _create_socket_connection
    return socket.create_connection(addr, source_address=source, timeout=self._keepalive)
  File "/usr/lib/python3.7/socket.py", line 727, in create_connection
    raise err
  File "/usr/lib/python3.7/socket.py", line 716, in create_connection
    sock.connect(sa)
OSError: [Errno 99] Cannot assign requested address
[DEBUG:2021-01-05 16:10:24,406] rhasspyserver_hermes: Connecting to localhost:12183 (retries: 1/10)
[ERROR:2021-01-05 16:10:23,403] rhasspyserver_hermes: mqtt connect
Traceback (most recent call last):
  File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__init__.py", line 289, in start
    self.client.connect(self.host, self.port)
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 937, in connect
    return self.reconnect()
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 1071, in reconnect
    sock = self._create_socket_connection()
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 3522, in _create_socket_connection
    return socket.create_connection(addr, source_address=source, timeout=self._keepalive)
  File "/usr/lib/python3.7/socket.py", line 727, in create_connection
    raise err
  File "/usr/lib/python3.7/socket.py", line 716, in create_connection
    sock.connect(sa)
OSError: [Errno 99] Cannot assign requested address
[DEBUG:2021-01-05 16:10:23,400] rhasspyserver_hermes: Connecting to localhost:12183 (retries: 0/10)
[DEBUG:2021-01-05 16:10:23,400] rhasspyserver_hermes: Starting core
[DEBUG:2021-01-05 16:10:23,396] rhasspyprofile.profile: Loading default profile settings from /usr/lib/rhasspy/rhasspy-profile/rhasspyprofile/profiles/defaults.json
[DEBUG:2021-01-05 16:10:23,394] rhasspyprofile.profile: Loading /profiles/de/profile.json
[DEBUG:2021-01-05 16:10:23,391] rhasspyprofile.profile: Loading /usr/lib/rhasspy/rhasspy-profile/rhasspyprofile/profiles/de/profile.json
[DEBUG:2021-01-05 16:10:23,342] rhasspyserver_hermes: Restarting Rhasspy


Gibts Probleme mit dem port 12183?

Hier meine config aus Rhasspy:

{
    "dialogue": {
        "system": "rhasspy"
    },
    "intent": {
        "system": "fsticuffs"
    },
    "microphone": {
        "system": "pyaudio"
    },
    "mqtt": {
        "enabled": "",
        "host": "****",
        "password": "****",
        "username": "****"
    },
    "sounds": {
        "system": "aplay"
    },
    "speech_to_text": {
        "system": "pocketsphinx"
    },
    "text_to_speech": {
        "system": "picotts"
    },
    "wake": {
        "porcupine": {
            "keyword_path": "terminator_raspberry-pi.ppn",
            "sensitivity": "1"
        },
        "system": "porcupine"
    }
}

MQTT Eintrag unkenntlich gemacht, passt aber...
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 05 Januar 2021, 17:33:55
Scheint alles zu passen. Es wird versucht, zum MQTT Server zu verbinden. Der braucht aber offenbar etwas länger. Danach klappt's aber.

Wenn du im GUI den "Wake Up"-Button verwendest und danach einen Befehl sprichst, klappt das?
Titel: Antw:FHEM und Rhasspy
Beitrag von: Dreggwatz am 05 Januar 2021, 18:36:38
Ja über den Button scheint es zu funktionieren, wenn ich die voreingestellten sentences spreche "wie spät ist es" und "wie ist die temperatur" erkennt er gettime und gettemperature.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 06 Januar 2021, 18:54:16
Hallo Dreggwatz,

versuche mal "Rhasspy Raven". Dort kannst du das Wakeword selbst reinsprechen. Ist zwar etwas langsamer aber zum Testen reichts.
Snow Boy ist auch ganz gut. Du solltest die sensitivity vorerst mit 0.5 oder weniger testen.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: Dreggwatz am 06 Januar 2021, 19:13:09
Ok, danke probiere ich gleich nochmal aus. Ungeachtet dessen bekomme ich in Fhem aber auch nichts geschaltet. Bzw. habe noch nicht verstanden wo/wie MQTT publish in Rhasspy funktioniert.

Das steht in sentences:
[de.fhem:SetOnOff]
schalte (den) (TestSchalter){Device} (ein | aus){Value}


Wenn ich den Wakeword button drücke und den Befehl spreche wird es erkannt und es erscheint de.fhem:SetOnOff on

Mit MQTT.fx hab ich die Erkennung auch gesehen:

hermes/asr/textCaptured

{"text": "schalte den testschalter ein", "likelihood": 0.49768850898533434, "seconds": 0.4859530610119691, "siteId": "default", "sessionId": "950b9e07-87fb-4f57-bf17-1c3248d01795", "wakewordId": null, "asrTokens": [[{"value": "<s>", "confidence": 1.000100016593933, "rangeStart": 0, "rangeEnd": 4, "time": {"start": 0.0, "end": 0.02}}, {"value": "schalte", "confidence": 1.000100016593933, "rangeStart": 4, "rangeEnd": 12, "time": {"start": 0.03, "end": 0.56}}, {"value": "den", "confidence": 1.000100016593933, "rangeStart": 12, "rangeEnd": 16, "time": {"start": 0.57, "end": 0.83}}, {"value": "testschalter", "confidence": 1.0, "rangeStart": 16, "rangeEnd": 29, "time": {"start": 0.84, "end": 1.64}}, {"value": "ein", "confidence": 1.0, "rangeStart": 29, "rangeEnd": 33, "time": {"start": 1.65, "end": 2.49}}, {"value": "</s>", "confidence": 1.0, "rangeStart": 33, "rangeEnd": 38, "time": {"start": 2.5, "end": 2.52}}]], "lang": null}


In Fhem sieht das MQTT_Device so aus:

Internals:
   CFGFN     
   FUUID      5ff566ec-f33f-8381-2d9b-72084113f9a86f28
   IODev      Mosquitto
   NAME       TestSchalter
   NR         5089
   STATE      off
   TYPE       MQTT_DEVICE
   OLDREADINGS:
   READINGS:
     2021-01-06 19:09:31   state           off
     2021-01-06 19:09:31   transmission-state incoming publish received
   message_ids:
   publishSets:
     :
       topic      /SmartHome/TestSchalter
       values:
         on
         off
         toggle
   sets:
     off       
     on         
     toggle     
   subscribe:
     /SmartHome/TestSchalter/#
     /SmartHome/TestSchalter/state
   subscribeExpr:
     ^\/SmartHome\/TestSchalter.*$
     ^\/SmartHome\/TestSchalter\/state$
   subscribeQos:
     /SmartHome/TestSchalter/#
     /SmartHome/TestSchalter/state 0
   subscribeReadings:
     /SmartHome/TestSchalter/State:
     /SmartHome/TestSchalter/state:
       cmd       
       name       state
Attributes:
   IODev      Mosquitto
   autoSubscribeReadings /SmartHome/TestSchalter/#
   publishSet on off toggle /SmartHome/TestSchalter
   rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off
   rhasspyName TestSchalter
   room       MQTT
   subscribeReading_state /SmartHome/TestSchalter/state
   webCmd     on:off:toggle


Mit MQTT.fx kann ich unter den jeweiligen subscribe /SmartHome/TestSchalter/state auch on off toggle schalten, vermute allerdings das MQTT mit Rhasspy nicht ordentliche konfiguriert ist... sieht jemand das Problem?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 06 Januar 2021, 19:54:29
Warum legst du ein extra MQTT-Device an und nimmst nicht das Rhasspy-Modul (https://github.com/drhirn/fhem-rhasspy)? Siehe auch erste Beitrag in diesem Thread.
Anleitung zum alten Snips-Modul ist hier, gilt aber immer noch größtenteils: https://github.com/Thyraz/Snips-Fhem (https://github.com/Thyraz/Snips-Fhem)
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 06 Januar 2021, 20:08:45
Ein paar Randinfos täten gut. Du kannst die IPs ja leicht abändern aber es muss erkenntlich sein, ob es sich um dieselben Geräte handelt...
MQTT-Server IP:Port (mosquitto o.a)
FHEM-Server: IP
Rhasspy-Bridge-Device in FHEM: komplettes List

Versuche erstmal ein dummy zu schalten:

define RhasspyDummySwitch dummy
attr RhasspyDummySwitch room Rhasspy
attr RhasspyDummySwitch rhasspyName Licht
attr RhasspyDummySwitch rhasspyRoom wohnzimmer
attr RhasspyDummySwitch rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off
attr RhasspyDummySwitch setList on off


Anschließend die Daten mit dem FHEM-Rhasspy-Device zu Rhasspy schicken.

set Rhasspy-Bridge updateSlots
set Rhasspy-Bridge trainRhasspy

Hier sicherheitshalber der Inhalt von senteces.ini:

[de.fhem:SetOnOff]
schalte (den|die|das) ($de.fhem.Device){Device} [($de.fhem.Room){Room}] (an|aus){Value}


Schalte das Licht im Wohnzimmer an - sollte dann zum Ergebnis führen.

Gruß Jens


Titel: Antw:FHEM und Rhasspy
Beitrag von: Dreggwatz am 07 Januar 2021, 16:14:48
Danke Euch,

ich bin in MQTT ganz frisch und dachte mir mit einem externen Broker (Mosquitto) wäre ich flexibler falls noch mehr MQQT Anwendung findet.
Was genau ist das Rhasspy-Bridge-Device? Das "RhasspyMQTT MQTT" oder "Rhasspy RHASSPY"


Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 07 Januar 2021, 16:56:17
Einen extra Mosquitto zu nehmen ist eine gute Entscheidung. Mit Rhasspy-Bridge-Device meine ich Rhasspy RHASSPY".  Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: Roman am 07 Januar 2021, 18:01:06
Hallo zusammen,

ich versuche mich auch gerade an Rhasspy und bin hier ein wenig am testen.
Prinzipiell klappt das Lampen schalten schon recht gut, aber ich möchte hier etwas flexibler sein was die möglichen sentences angeht.
Beispiel:
'Schalte die Wohnzimmerlampe an' oder 'schalte Wohnzimmerlicht an'  funktioniert.
'Schalte Licht im Wohnzimmer an' funktioniert nicht.

Bei den funktionierenden Kommandos wird 'Device' und 'Value' übergeben.
Bei den nicht funktionierenden Kommandos wird 'Room' und 'Value' übergeben, er hat in dem Fall ja kein Device.
Gibt es eine Möglichkeit, dass Rhasspy den 'genericDeviceType' (hier light, bzw. für Rollos 'blind' auswertet ?

sentences.ini
[de.fhem:SetOnOff]
(schalte|mach|mache) [(die | das)] $devices {Device} $values{Value}
(schalte|mach|mache) [Licht] [(im|an der|in der)] $rooms {Room} $values{Value}


Slot: devices
(wohnzimmerlampe | wohnzimmerlicht ):Licht_Wohnzimmer
(esszimmerlampe | esszimmerlicht ):Licht_Esszimmer
(kuechenlampe | kuechenlicht | küchenlicht | küchenlampe):Licht_Kueche

Slot:values
(aus | dunkel ):aus
(an | ein | hell ):an

Slot:rooms
esszimmer
wohnzimmer
(kueche|küche):


Logausgabe:
2021.01.07 16:34:37 5: publish received for hermes/intent/de.fhem:SetOnOff, {"input": "schalte Licht im esszimmer an", "intent": {"intentName": "de.fhem:SetOnOff", "confidenceScore": 1.0}, "siteId": "Master", "id": "1587544c-4396-4854-8378-1532945e1015", "slots": [{"entity": "rooms", "value": {"kind": "Unknown", "value": "esszimmer"}, "slotName": "Room", "rawValue": "esszimmer", "confidence": 1.0, "range": {"start": 17, "end": 26, "rawStart": 17, "rawEnd": 26}}, {"entity": "values", "value": {"kind": "Unknown", "value": "an"}, "slotName": "Value", "rawValue": "an", "confidence": 1.0, "range": {"start": 27, "end": 29, "rawStart": 27, "rawEnd": 29}}], "sessionId": "1587544c-4396-4854-8378-1532945e1015", "customData": null, "asrTokens": [[{"value": "schalte", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 7, "time": null}, {"value": "Licht", "confidence": 1.0, "rangeStart": 8, "rangeEnd": 13, "time": null}, {"value": "im", "confidence": 1.0, "rangeStart": 14, "rangeEnd": 16, "time": null}, {"value": "esszimmer", "confidence": 1.0, "rangeStart": 17, "rangeEnd": 26, "time": null}, {"value": "an", "confidence": 1.0, "rangeStart": 27, "rangeEnd": 29, "time": null}]], "asrConfidence": null, "rawInput": "schalte licht im esszimmer an", "wakewordId": null, "lang": null}
2021.01.07 16:34:37 5: Parsed value: esszimmer for key: Room
2021.01.07 16:34:37 5: Parsed value: Master for key: siteId
2021.01.07 16:34:37 5: Parsed value: schalte licht im esszimmer an for key: rawInput
2021.01.07 16:34:37 5: Parsed value: 1 for key: probability
2021.01.07 16:34:37 5: Parsed value: an for key: Value
2021.01.07 16:34:37 5: Parsed value: schalte Licht im esszimmer an for key: input
2021.01.07 16:34:37 5: Parsed value: 1587544c-4396-4854-8378-1532945e1015 for key: sessionId
2021.01.07 16:34:37 5: Parsed value: SetOnOff for key: intent
2021.01.07 16:34:37 5: handleIntentSetOnOff called
/code]

Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 07 Januar 2021, 18:12:10
Liegt daran, dass du kein Device übergibst.

So sollte es gehen:
(schalte|mach|mache) [Licht]{Device} [(im|an der|in der)] $rooms{Room} $values{Value}
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 07 Januar 2021, 18:33:28
Hallo Roman,

im Modul habe ich das nicht gesehen. Man könnte das aber über z.B. ein dummy+notify abbilden.

In der sentences.ini sollten keine Device- oder Raumnamen stehen. Diese werden von FHEM mit updateSlots übergeben und befinden sich dann in den Slotdateien de.fhem.Device und de.fhem.Room.
Das Gleiche gilt auch für Sendernamen, Farben und NumericTypen.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: Dreggwatz am 07 Januar 2021, 19:45:19
Zitat von: JensS am 06 Januar 2021, 20:08:45
Ein paar Randinfos täten gut. Du kannst die IPs ja leicht abändern aber es muss erkenntlich sein, ob es sich um dieselben Geräte handelt...
MQTT-Server IP:Port (mosquitto o.a)
FHEM-Server: IP
Rhasspy-Bridge-Device in FHEM: komplettes List

Versuche erstmal ein dummy zu schalten:

define RhasspyDummySwitch dummy
attr RhasspyDummySwitch room Rhasspy
attr RhasspyDummySwitch rhasspyName Licht
attr RhasspyDummySwitch rhasspyRoom wohnzimmer
attr RhasspyDummySwitch rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off
attr RhasspyDummySwitch setList on off


Anschließend die Daten mit dem FHEM-Rhasspy-Device zu Rhasspy schicken.

set Rhasspy-Bridge updateSlots
set Rhasspy-Bridge trainRhasspy

Hier sicherheitshalber der Inhalt von senteces.ini:

[de.fhem:SetOnOff]
schalte (den|die|das) ($de.fhem.Device){Device} [($de.fhem.Room){Room}] (an|aus){Value}


Schalte das Licht im Wohnzimmer an - sollte dann zum Ergebnis führen.

Gruß Jens

MQTT-Server IP:Port (mosquitto o.a)

Internals:
   DEF        10.0.0.10:1883
   DeviceName 10.0.0.10:1883
   FD         30
   FUUID      5ff35463-f33f-8381-6010-4a15cc3ff250097f
   NAME       Mosquitto
   NOTIFYDEV  global
   NR         188
   NTFY_ORDER 50-Mosquitto
   PARTIAL   
   STATE      opened
   TYPE       MQTT
   buf       
   msgid      22
   ping_received 1
   timeout    60
   READINGS:
     2021-01-07 19:40:03   connection      active
     2021-01-05 15:42:43   state           opened
   messages:
Attributes:
   group      MQTT
   icon       mqtt_broker
   room       MQTT,VCCU


FHEM-Server: IP
10.0.0.10:8083

Rhasspy-Bridge-Device in FHEM: komplettes List

Internals:
   CFGFN     
   FUUID      5ff5e679-f33f-8381-30e0-560e72e24fffccbe
   IODev      Mosquitto
   NAME       Rhasspy
   NR         7848
   STATE      ???
   TYPE       MQTT_DEVICE
   READINGS:
     2021-01-07 19:15:51   transmission-state unsubscription acknowledged
   message_ids:
   publishSets:
   sets:
   subscribe:
   subscribeExpr:
   subscribeQos:
   subscribeReadings:
     hermes/asr/startListening:
     hermes/asr/stopListening:
     hermes/asr/textCaptured:
     hermes/asr/toggleOff:
     hermes/asr/toggleOn:
     hermes/audioServer/default/audioFrame:
     hermes/audioServer/default/playBytes/49f66966-e544-4898-9d97-6f448fe2afc7:
     hermes/audioServer/default/playFinished:
     hermes/intent/de.fhem:SetOnOff:
     hermes/nlu/intentNotRecognized:
     hermes/nlu/intentParsed:
     hermes/nlu/query:
     hermes/tts/say:
     hermes/tts/sayFinished:
Attributes:
   IODev      Mosquitto
   rhasspyRoom Wohnzimmer
   room       Rhasspy


set Rhasspy updateSlots
set Rhasspy trainRhasspy

lässt sich nicht ausführen, da ein "set" vorhanden?!
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 07 Januar 2021, 19:51:51
attr Rhasspy rhasspyMaster http://10.0.0.10:12101
Falls dein Rhasspy auf derselben Maschine läuft.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Roman am 07 Januar 2021, 19:57:07
Zitat von: JensS am 07 Januar 2021, 18:33:28
Hallo Roman,

im Modul habe ich das nicht gesehen. Man könnte das aber über z.B. ein dummy+notify abbilden.

In der sentences.ini sollten keine Device- oder Raumnamen stehen. Diese werden von FHEM mit updateSlots übergeben und befinden sich dann in den Slotdateien de.fhem.Device und de.fhem.Room.
Das Gleiche gilt auch für Sendernamen, Farben und NumericTypen.

Gruß Jens

Hi,
Dank e für die Info, aber bei updateSlots bekomme ich noch folgenden Fehler
ZitatlastHttpApiResponse: ERROR: /api/slots: malformed or unsupported URL
ein Aufruf vom <Rhasspy-IP>:12101/api/slots im Browser aber klappt und ich bekomme alle slots angezeigt

Ich hab mich hier für die sentences und Slots an die rhasspy-Doku gehalten, und hatte das updateSlots so gar nicht auf dem Schirm.

ZitatSo sollte es gehen:
Code: [Auswählen]

(schalte|mach|mache) [Licht]{Device} [(im|an der|in der)] $rooms{Room} $values{Value}

dann wird als Device 'Licht' ausgegeben. Dann müsste ich allen Lampen den RhasspyNamen 'Licht' geben, dann funktioniert zwar das Schalten mit 'schalte Licht im Wohnzimmer an', aber nicht mehr mit 'Schalte Wohnzimmerlampe an'

Gruß
Roman
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 07 Januar 2021, 20:14:18
In FHEM hast du ein Device vom Typ RHASSPY. Ich gehe mal davon aus, dass es RhassyBridge heißt.
Dazu kommt der eigentliche Rhasspy-Server z.B.  rhasspy.
Nun musst du der RhasspyBridge die Adresse des Rhasspy-Servers mitgeben.
Das passiert mit attr RhasspyBridge rhasspyMaster http://rhasspy:12101
Anschließend in FHEM auf RhassyBridge gehen und set RhasspyBridge updateSlots
set RhasspyBridge trainRhasspy
aufrufen.

Danach hast du die Device in de.fhem.Device und kannst darauf mit ($de.fhem.Device) zugreifen. Mit dem anschließenden {Device} wird das erkannte Gerät an FHEM übergeben.
Das hat den großen Vorteil, dass die senteces.ini nicht angepasst werden muss, wenn Devices in FHEM geändert werden.
Das Gleiche gilt für Rooms etc..
[de.fhem:SetOnOff]
schalte (den|die|das) ($de.fhem.Device){Device} [($de.fhem.Room){Room}] (an|aus){Value}

In FHEM kannst du den Geräten mehrere Namen geben. Diese müssen mit einem Komma getrennt werden (ohne Leerzeichen dazwischen).


Titel: Antw:FHEM und Rhasspy
Beitrag von: Roman am 07 Januar 2021, 20:20:16
Hallo JensS,

danke, das war's, jetzt funktioniert auch updateSlots
und 'schalte Licht im <Raum> an' klappt nun auch.

Gruß
Roman
Titel: Antw:FHEM und Rhasspy
Beitrag von: Dreggwatz am 07 Januar 2021, 21:44:07
Zitat von: JensS am 07 Januar 2021, 19:51:51
attr Rhasspy rhasspyMaster http://10.0.0.10:12101
Falls dein Rhasspy auf derselben Maschine läuft.

Super Sache jetzt funktioniert es (zwar immer noch ohne wakeword) aber das dummy lies sich schon mal einschalten! Danke Dir  8)
Warum muss man beim RhasspyBridge einen Raum angeben? Nächste Hürde wird das wakeword...


Internals:
   CFGFN     
   DEF        Mosquitto Wohnzimmer
   FUUID      5ff76e08-f33f-8381-cd44-b3ae6fad3cdde2af
   IODev      Mosquitto
   MODULE_VERSION 0.2
   NAME       RhasspyBridge
   NOTIFYDEV  Mosquitto Wohnzimmer
   NR         16219
   STATE      ???
   TYPE       RHASSPY
   READINGS:
     2021-01-07 21:29:53   lastHttpApiResponse Training completed in 0.32 second(s)
     2021-01-07 21:35:12   lastIntentPayload {"Device":"Licht","Room":"Wohnzimmer","Value":"an","input":"schalte das Licht Wohnzimmer an","intent":"SetOnOff","probability":1,"rawInput":"schalte das licht wohnzimmer an","requestType":"voice","sessionId":"d1c733d0-95ad-48b6-8152-e5625bf8934f","siteId":"default"}
     2021-01-07 21:35:12   lastIntentTopic hermes/intent/de.fhem:SetOnOff
     2021-01-07 21:35:12   responseType    voice
     2021-01-07 21:35:12   transmission-state incoming publish received
     2021-01-07 21:35:12   voiceResponse   Mache ich doch sehr gerne
   helper:
     defaultRoom Wohnzimmer
   message_ids:
   subscribe:
     hermes/intent/+
     hermes/dialogueManager/sessionStarted
     hermes/dialogueManager/sessionEnded
   subscribeExpr:
     ^hermes\/intent\/([^/]+)$
     ^hermes\/dialogueManager\/sessionStarted$
     ^hermes\/dialogueManager\/sessionEnded$
   subscribeQos:
     hermes/dialogueManager/sessionEnded 0
     hermes/dialogueManager/sessionStarted 0
     hermes/intent/+ 0
Attributes:
   IODev      Mosquitto
   icon       mqtt_bridge_1
   rhasspyMaster http://10.0.0.10:12101
   room       Rhasspy
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 07 Januar 2021, 21:52:16
Na prima! Der Intent von "set RhasspyBridge speak hallo" muss einem Rhasspy zugeordnet werden. Bei einem Multiroomsystem ist dabei die Angabe einens Standardraums hilfreich.

Wakeword - du scheinst einen Dockercontainer zu nutzen. Kann sein, dass die Sprachdaten aus dem Container müssen und es nicht können. Da habe ich aber zu weinig Ahnung davon.
Versuche mal den Dockercontainer mit einer zweiten Portfreigabe im Container aufzurufen (-p 12202:12202). In Rhasspy kannst du dann auf den Port zugreifen:   "microphone": {
        "arecord": {
            "device": "default",
            "siteId": "default",
            "udp_audio_host": "127.0.0.1",
            "udp_audio_port": "12202"
        },
        "system": "arecord"
    },
    "wake": {
        "satellite_site_ids": "default",
        "snowboy": {
            "apply_frontend": true,
            "model": "alexa.umdl",
            "sensitivity": "0.50",
            "udp_audio": "127.0.0.1:12202"
        },
        "system": "snowboy"
    }

Statt 127.0.0.1 versuche auch 10.0.0.10.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 08 Januar 2021, 08:39:27
Wakeword: Selbes Problem bei mir. Das ist derzeit ein Show-Stopper. Es funktioniert hin und wieder. Aber sehr schlecht. Und nur, wenn's absolut ruhig ist, während ich das Wakeword aus kurzer Distanz laut spreche.
Habe zum Testen mal das snips-satellite auf exakt der selben Hardware installiert, das funktioniert super.
Keine Ahnung, wo das Problem ist. Könnte aber schon Docker sein. Port glaube ich aber nicht, sonst würde es nie funktionieren.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 08 Januar 2021, 16:03:02
Da ich kein Docker nutze, kann ich nur raten...
@drhirn
Bei deinem Rhasspy-Docker scheint die Mikrolautstärke zu niedrig eingestellt zu sein. Keine Ahnung, ob Docker direkt auf die Hardware zugreift. Wenn ja, müsste man die Lautstärke im Container anpassen.
docker exec -it rhasspy bash
In der Bash alsamixer aufrufen - vielleicht geht's.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 08 Januar 2021, 16:28:09
Die Sound-Hardware wird direkt durchgeschliffen. Hab gerade - wie von dir vorgeschlagen - alsamixer local und im Container verglichen. Sind identisch, obwohl ich gesten lokal die Settings geändert habe.

Wie hast du Rhasspy installiert? Virtual Env?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 08 Januar 2021, 16:35:36
Ich habe die Installation mit dem Debian-Paket https://rhasspy.readthedocs.io/en/latest/installation/#debian (https://rhasspy.readthedocs.io/en/latest/installation/#debian) durchgeführt und per Hand mit "rhasspy -p de" aufgerufen und konfiguriert.
Dass rhasspy auf bei einem Neustart gestartet wird, rufe ich es mit nohup über einen Cronjob auf.
ln -s /dev/null /root/nohup.out
crontab -e

In crontab folgende Zeile eingefügt:@reboot /usr/bin/nohup /usr/bin/rhasspy &


Gruß Jens

p.s. Für Suchende:
Das Debianpaket unter /opt abspeichern und mit "apt install /opt/rhasspy_..." aufrufen. Wenn man das im Homeverzeichnis macht, kommt es zu Berechtigungsproblemen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 08 Januar 2021, 16:36:57
Perfekt, danke. Ich probier das mal.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Dreggwatz am 08 Januar 2021, 16:54:07
ja drhirn probiere mal ob das besser läuft ;)
Ich habe jetzt den Docker komplett runtergeworfen und neu aufgespielt, diesmal ohne den Zusatzport 12183 da ich dies mit Mosquitto Broker wohl nicht brauche.
Auch hab ich erstmal die Zusatz wakeups in Porcupine weggelassen.
Das Snowboy wakeup funktioniert nun schon mal...
READINGS:
     2021-01-08 16:39:18   lastHttpApiResponse Training completed in 1.80 second(s)
     2021-01-08 16:46:50   lastIntentPayload {"Device":"Licht","Room":"Wohnzimmer","Value":"an","input":"schalte das Licht Wohnzimmer an","intent":"SetOnOff","probability":1,"rawInput":"schalte das licht wohnzimmer an","requestType":"voice","sessionId":"default-snowboy-629db0d0-e0ba-404a-ab91-30a7ccbd1473","siteId":"default"}
     2021-01-08 16:46:50   lastIntentTopic hermes/intent/de.fhem:SetOnOff
     2021-01-08 16:46:52   listening_wohnzimmer 0
     2021-01-08 16:46:50   responseType    voice
     2021-01-08 16:46:52   transmission-state incoming publish received
     2021-01-08 16:46:50   voiceResponse   Mache ich doch sehr gerne


@Jens
mit welcher Hardware hast Du Dein Multiroom aufgebaut?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 08 Januar 2021, 16:56:23
Eine Überlegung ist auch, das ganze über pulseaudio zu machen. Also Audio vom Host zum Container zu streamen. Das mache ich bei meinen Windows-Docker-Test-Instanzen so und funktioniert eigentlich super.
Aber zuerst ein Versuch mit dem Debian Paket. Dabei fällt mir wieder auf, wie langsam eigentlich so ein Pi Zero ist ;).
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 08 Januar 2021, 17:07:33
Zitat von: drhirn am 08 Januar 2021, 16:56:23
Dabei fällt mir wieder auf, wie langsam eigentlich so ein Pi Zero ist ;).
;D Lach, dafür macht er seinen Job aber ganz gut.

Bei mir läuft die Hauptinstanz auf einem Intel Celeron J1900 mit 8GB Ram und einer SSD sowie einem Billig-USB-Micro-Miko 8) . Ist zwar etwas älter aber dafür reichts locker.
Im Moment laufen ein RPI 3B+ und ein Zero jeweils mit einem "ReSpeaker 2-Mics Pi HAT". Es kommen natürlich noch ein paar Zero's dazu...
Ich habe mal einen BananaPi Zero probiert aber der wird kochend heiss.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 08 Januar 2021, 17:09:21
Ich hab den Master in einer Proxmox-VM. Die Satelliten sollen die Pi Zeros werden, die ich für Snips verwendet habe. Ebenfalls mit ReSpeaker 2-Mics Pi Hat.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 08 Januar 2021, 17:41:03
Zitat von: JensS am 08 Januar 2021, 16:35:36
Ich habe die Installation mit dem Debian-Paket https://rhasspy.readthedocs.io/en/latest/installation/#debian (https://rhasspy.readthedocs.io/en/latest/installation/#debian) durchgeführt und per Hand mit "rhasspy -p de" aufgerufen und konfiguriert.

Mir ist gerade eingefallen, warum ich das nie über das Debian-Paket gemacht habe:


The following packages have unmet dependencies:
libatlas3-base : Depends: libblas-common but it is not installable
E: Unable to correct problems, you have held broken packages.


Wie hast du das gelöst?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 08 Januar 2021, 17:53:26
root@rhasspy2:~# apt-cache search libblas-common
root@rhasspy2:~# apt-cache search libatlas3-base
libatlas3-base - Automatically Tuned Linear Algebra Software, generic shared
libblas-test - Basic Linear Algebra Subroutines 3, testing programs
root@rhasspy2:~# apt-get install libatlas3-base
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
libatlas3-base ist schon die neueste Version (3.10.3-8+rpi1).
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 64 nicht aktualisiert.
root@rhasspy2:~# cat /etc/apt/sources.list
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib rpi
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib rpi
root@rhasspy2:~#
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 08 Januar 2021, 17:59:11
Danke! Aber:


pi@...:~ $ cat /etc/apt/sources.list
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi



pi@...:~ $ sudo apt-get install libatlas3-base
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
libatlas3-base : Depends: libblas-common but it is not installable
E: Unable to correct problems, you have held broken packages.



pi@...:~ $ sudo apt-cache search libblas-common
pi@...:~ $

Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 08 Januar 2021, 18:31:55
p.s. apt install libatlas3-base=3.10.3-8+rpi1
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 08 Januar 2021, 18:52:04
Ist überall das selbe Problem. Leider gibt eine Internet Recherche auch nichts her. Aber ich komm schon noch drauf.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 08 Januar 2021, 19:19:35
 :) Da ich eine von Rhasspy jedesmal eine Bestätigung haben möchte, welches Gerät gerade geschalten wurde, habe ich eine sub in 99_myUtils.pm eingefügt:sub ResponseOnOff($){
my ($Geraet) = @_;
my $Name = $Geraet;
my $Raum;
my $Wert = lc(ReadingsVal($Geraet,"state","im unbekannten Status"));
$Name = (split(/,/,AttrVal($Geraet,"rhasspyName","error")))[0];
if (AttrVal($Geraet,"rhasspyRoom","error") ne "error"){$Raum = " im ".AttrVal($Geraet,"rhasspyRoom","error")};
$Wert=~s/.*on/eingeschaltet/;
$Wert=~s/.*off/ausgeschaltet/;
return "Ok - ".$Name.$Raum." ist ".$Wert
}

Aufgerufen wird das Ganze über ein responseMapping in SetOnOff.SetOnOff:cmdOn=on,cmdOff=off,response={ResponseOnOff($DEVICE)}
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 08 Januar 2021, 20:07:43
Zitat von: JensS am 08 Januar 2021, 18:31:55
p.s. apt install libatlas3-base=3.10.3-8+rpi1

Hehe, das P.S. kam leider zu spät. Da hatte ich es auch schon gefunden. Aber es ist die Lösung. Danke!
Titel: Antw:FHEM und Rhasspy
Beitrag von: Dreggwatz am 08 Januar 2021, 20:23:45
Ihr habt also PIs mit dem ReSpeaker 2-Mic HAT als Satelitten in den verschiedenen Räumen und geht darüber mit z.B. 3.5mm an einen aktiven LS oder Verstärker?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 08 Januar 2021, 20:26:37
Ich war etwas sparsamer und habe jeweils einen ausgebauten Notebooklautsprecher mit einer Klinke versehen.
Falls jemand eine Vorlage für einen 3D-Druck hat...
Titel: Antw:FHEM und Rhasspy
Beitrag von: Dreggwatz am 08 Januar 2021, 20:40:08
Ich möchte ja auch ein Multiroom aufbauen und z.B. Airplay zu nutzen, da müsste halt etwas mehr Sound rauskommen... Aber wenn ich mir überlege was ein so ein Sonos kostet.
Hab auch noch 2x JBL Control 1G in der Gararge rumliegen, mit einem kleinen Verstärker könnte ich mir da etwas günstiges für den Anfang aufbauen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 09 Januar 2021, 08:29:15
Zitat von: Dreggwatz am 08 Januar 2021, 20:23:45
Ihr habt also PIs mit dem ReSpeaker 2-Mic HAT als Satelitten in den verschiedenen Räumen und geht darüber mit z.B. 3.5mm an einen aktiven LS oder Verstärker?

Ich verwende die "CQRobot-Lautsprecher 8 Ohm 3 Watt für Arduino, JST-PH2.0-Schnittstelle" Amazon Link (https://smile.amazon.de/CQRobot-Electronics-JST-PH2-0-Interface-Electronic/dp/B0738NLFTG/ref=pd_all_pref_2/260-6949699-1691448?_encoding=UTF8&pd_rd_i=B0738NLFTG&pd_rd_r=886dc2de-9c3c-4294-bc33-2db8da699f8c&pd_rd_w=I7G0w&pd_rd_wg=acfor&pf_rd_p=a7bad41a-295f-4543-9b61-671d037e35b1&pf_rd_r=KBBZCS39CCG2PKY45F0D&psc=1&refRID=KBBZCS39CCG2PKY45F0D).

Klingen natürlich nicht sonderlich gut. Aber sie sollen auch nur Sprachausgabe machen. Und dafür reicht's.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 09 Januar 2021, 18:32:04
Gibt es eine Lösung für Umlaute in rhasspyName und rhasspyRoom?
Terrassentür und Büro wären solche Kandidaten.
Beim Büro könnte man Arbeitszimmer nehmen aber Terrassenportal hört sich blöd an...

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 10 Januar 2021, 13:23:33
Ich hab keine Probleme mehr mit Umlauten. Wurde in einer neueren Version von Rhasspy behoben. Weiß aber nicht mehr welche.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 10 Januar 2021, 21:01:41
Danke, mit der Version 2.5.8 klappts. Es gab allerdings einige Probleme mit nicht verfügbaren Paketen bei der Installation auf meinem AMD64-System. Diese habe ich per Hand heruntergeladenwget http://ftp.br.debian.org/debian/pool/main/g/gcc-6/libgfortran3_6.3.0-18+deb9u1_amd64.deb
wget http://ftp.debian.org/debian/pool/main/g/gcc-6/gcc-6-base_6.3.0-18+deb9u1_amd64.deb

und installiert. Anschließend lief die Rhasspy-Installation fehlerfrei durch.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 13 Januar 2021, 15:57:36
Ich habe mal angefangen, das Modul zu dokumentieren. Bzw. die Doku von Thyraz übernommen. CommandRef gab's eh schon. Jetzt aber ein bisschen ausführlicher.
Ist auf englisch. Hat sich als dumme Idee heraus gestellt. Aber da war's schon zu spät.

Bin noch nicht fertig, wird aber ständig ergänzt.

Mitarbeit ist herzlich willkommen. Außerdem gibt's am Schluss der Doku noch eine To-Do Liste ;).

https://github.com/drhirn/fhem-rhasspy/blob/master/README.md

Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 14 Januar 2021, 19:01:25
@drhirn
Ich hätt da noch ein kleines Python-Script zur Ansteuerung einer LED. Hast du einen Vorschlag, wos das am besten passt?
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 14 Januar 2021, 19:12:04
Du kannst ja einfach auf GitHub im Readme einen neuen Abschnitt "Tipps" oder so machen. Oder lass es hier und ich mach das morgen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 14 Januar 2021, 21:54:05
@drhirn

Anbei meine LED-Steuerung. Ist quick $ dirty...
Nach dem Wakeword wird die mittlere LED grün und anschließend bis zum Ende des Prozesses blau. Anschließend erlischt die LED wieder.
Man kann die Funktion durch einen kurzen Tastendruck auf den Button (de)aktivieren.
Drückt man 3 Sekunden, wird das Mikro aus- bzw. angeschaltet.
Hält man den Button 10 Sekunden gedrückt, leuchtet die LED für 2 Sekunden rot und der RPI wird heruntergefahren. Nach ca. 30 Sekunden kann man ihn dann vom Strom trennen.
Meine Programmierkenntnisse sind eher dürftig, so dass ich dich bitte, dir das Ganze mal anzuschauen und zu testen.

Gruß Jens

p.s. Die Abfrage bnutzt paho-mqtt, welches ich mitapt-get install python3-paho-mqttinstalliert habe.
p.p.s. LED.py ist neu.
p.p.p.s. Liegt jetzt hier: https://github.com/jens-schiffke/Rhasspy-LED (https://github.com/jens-schiffke/Rhasspy-LED)
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 15 Januar 2021, 08:03:26
Hast du das eh auf GitHub? Dann könnten wir ja einfach drauf verlinken?

Meine Programmierkenntnisse sind jetzt auch nicht gerade der Hit ;)
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 15 Januar 2021, 08:41:17
Zitat von: JensS am 14 Januar 2021, 21:54:05
Nach dem Wakeword wird die mittlere LED grün und anschließend bis zum Ende des Prozesses blau. Anschließend erlischt die LED wieder.

Welche LED? Bei mir leuchtet leider nichts.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 15 Januar 2021, 11:43:11
Zitat von: JensS am 08 Januar 2021, 19:19:35
Da ich eine von Rhasspy jedesmal eine Bestätigung haben möchte, welches Gerät gerade geschalten wurde, habe ich eine sub in 99_myUtils.pm eingefügt:

https://github.com/drhirn/fhem-rhasspy/blob/master/README.md#rhasspy-speaks-actual-state-of-device-after-switching-it
Titel: Antw:FHEM und Rhasspy
Beitrag von: jowe am 15 Januar 2021, 14:45:28
Ich habe mittlerweile auch mein FHEM von Snips auf Rhasspy umgestellt. Danke drhirn für deine Arbeit! Danke auch JensS für dein Codeschnippsel, ich habe das auch bei mir umgesetzt. Allerdings habe ich das Problem, dass meine Hue-Lampen noch am runter-/raufdimmen sind, wenn die Antwort schon kommt. Wenn ich also eine Lampe einschalte, kommt die Antwort dass die Lampe jetzt aus ist, da sie gerade erst mit dem hochdimmen beginnt. Und beim Ausschalten anders rum. Hat jemand eine Idee, wie ich das Antwort Script mit 1-2 Sekunden Verzögerung starten kann, ohne dabei FHEM zu blockieren?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 15 Januar 2021, 14:54:20
Ich habe dazu leider keine schlaue Idee. Wäre gut zu lösen, wenn FHEM die aktuelle Helligkeit der Lampe kennen würde. Aber das ist leider nicht der Fall.
Du könntest natürlich auch einfach einen at Befehl setzen, der die Sprachausgabe einfach später auslöst.

Aber wärst du so nett und würdest schreiben, was du für Hardware verwendest? Und welches Wakeword?
Titel: Antw:FHEM und Rhasspy
Beitrag von: jowe am 15 Januar 2021, 15:01:42
FHEM kennt die aktuelle Helligkeit. Nur haben Lampen halt eine transition time, während der die Helligkeit runter geregelt wird. Ich bekomme also die aktuelle Helligkeit während dem runter dimmen ausgegeben. Das lässt sich nur lösen, wenn die Sprachausgabe erst nach Ende des Dimmens erfolgt. Mittels sleep würde ich mir aber mein FHEM währenddessen blockieren soweit ich weiß. Vielleicht hat einer der Mitlesenden ja eine Idee dazu.
Ich nutze Rhasspy aktuell auf einem PI4 mit RespeakerArray V2 im Docker Container. Als Wakeword nutze ich ein mittels Raven selbst aufgezeichnetes. Ich bin mit der Wakeword Erkennung wie auch mit der Spracherkennung allerdings noch nicht wirklich zufrieden. Ich überlege, ob ich mir wieder einen Satelliten mit Snips-Hotword Erkennung einrichte und die Spracherkennung auf dem Pi mache. Hauptsächlich nutze ich aktuell die Befehle per TextCommand über Telegram bzw. über die Rhasspy-App. Das funktioniert super.
Ich hoffe auf weiter Verbesserungen bei Rhasspy in der Zukunft..
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 15 Januar 2021, 17:39:49
@jowe
Wenn du nur eine Rückmeldung des zu erwartenden Status haben möchtest, kannst du das mir einem zusätzlichen Reading lösen.
rhasspyMapping:SetOnOff:cmdOn={fhem("set $DEVICE on;setreading $DEVICE rhasspySTATE an")},cmdOff={fhem("set $DEVICE off;setreading $DEVICE rhasspySTATE aus")},response={my $Name = (split(/,/,AttrVal($DEVICE,"rhasspyName","error")))[0];my $Status = ReadingsVal($DEVICE,"rhasspySTATE","im unbekannten Status");return "Ok - $Name ist $Status"}Ist zwar ganz schön lang aber dafür flexibel.
Raven finde ich auch gut, weil man selbst das Wakeword einsprechen kann. Ist aber leider viiiiel zu langsam.

@drhirn
mic_hat ist nicht von mir, beinhaltet aber wichtige Dateien.
Was passiert, wenn du "python3 /opt/mic_hat/LED.py" ausführst.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 15 Januar 2021, 17:57:41
Zitat von: JensS am 15 Januar 2021, 17:39:49
Raven finde ich auch gut, weil man selbst das Wakeword einsprechen kann. Ist aber leider viiiiel zu langsam.

Ganz frisch, ein Wakeword-Generator für Snowboy: https://github.com/rhasspy/snowboy-seasalt
Funktioniert super.


Zitat von: JensS am 15 Januar 2021, 17:39:49
@drhirn
mic_hat ist nicht von mir, beinhaltet aber wichtige Dateien.
Was passiert, wenn du "python3 /opt/mic_hat/LED.py" ausführst.

Ha, lustig. Jetzt leuchtet doch die blaue LED. Aber nur, wenn mir Rhasspy antwortet. Und jetzt leuchtet's grün, dann blau. Und jetzt leuchtet's gar nicht mehr. Hä?
Komisches Verhalten. Werde ich dann weiter testen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 17 Januar 2021, 10:22:29
@drhirn
Und - wie leuchtet es jetzt? Was ist überhaupt aus der Wakeword-Erkennung geworden. Geht's jetzt auch über weitere Entfernung?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 17 Januar 2021, 10:27:58
Ich hab noch nicht weiter getestet.

Zum Thema Wakeword: Ich sag das nicht gerne. Aber ich war einfach zu blöd, im alsamixer die Werte für "capture" hoch zu schrauben (https://community.rhasspy.org/t/show-stopper-wakeword/2182/19). Seitdem funktioniert's zu gut. Ich muss da noch etwas tunen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Roman am 19 Januar 2021, 23:27:17
Hallo,

ist noch geplant einen Intent für Uhrzeiten / Stunden / Minuten / Sekunden zu integrieren ?
GetWeekDay / GetTime gibt es als Intent ja schon. Sowas wie 'SetTimer'

Rhasspy bietet so was ja schon an. Ich könnte das für das Stellen von Timern/Weckern/Errinnerungen gebrauchen (Die Killerapplikation für meine Frau um Alexa ablösen zu können, Sie nutzt das mehrmals am Tag)

Gruß
Roman
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 20 Januar 2021, 08:14:22
Ist für mich auch ein Killer-Feature. Ich persönlich sehe das aber als Funktion, die der Sprachassistent selber können muss. Unabhängig von FHEM. Wie eigentlich auch GetTime/GetWeekday. Die beiden waren eigentlich nur Tests von mir.

Rhasspy bietet das an? Hast du da einen Link für mich?

Ich hatte nicht geplant, einen Timer einzubauen. Ich denke aber gerne mal drüber nach. Vorschläge zur Lösung?
Kann sich aber natürlich jeder an dem Modul beteiligen. Ich übernehme das dann gerne.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 20 Januar 2021, 16:31:03
Ich hab in der neuesten Version (https://github.com/drhirn/fhem-rhasspy/commit/ab1e82b59ef6d1f903f00006ced61ad18c5cc3d6#diff-a4cf5a0beba85315038ffea3e3c8a8bca5fff8024ffb13c51f05cb1c62bb647b) einen rudimentären Timer eingebaut. Der setzt einfach einen at-Befehl und sagt nach der abgelaufenen Zeit "Timer abgelaufen".

Rhasspy-Sentence wäre z.B.:

[de.fhem:SetTimer]
\[stell|stelle] (taimer|countdown) [im|auf dem|auf der|in der] [$de.fhem.Room{Room}] auf (0..60){Value} (sekunden|minuten|stunden){Unit}


Könnt ihr das mal testen?
Titel: Antw:FHEM und Rhasspy
Beitrag von: Roman am 20 Januar 2021, 22:42:42
Hi,

danke für die neue Version, das ging ja unheimlich schnell. Ich hab's gleich mal ausprobiert.
Das klappt problemlos.

Das mit Rhasspy bietet das an, hab wohl beim überfiegen falsch gedeutet:
https://community.rhasspy.org/t/time-date-slots/1438/(2 (https://community.rhasspy.org/t/time-date-slots/1438/(2)
Hier ging es nur um die Slots und nicht um einen fertigen Timer.

Ich bin so gar nicht der Perl-Crack, ich kann mir mit Müh und Not zusammenbasteln was ich brauche, aber ideal wäre ein Intent (den man z.B. einem Dummy zuweist) und ein rhasspyMapping dazu um z.B. eine Funktion aus der 99_MyUtils mit den Parametern (Stunde Minute Sekunde) aufzurufen.

Dann wäre man beim Timer flexibel. Auch was das Ausgabegerät für die Meldung angeht,

Gruß
Roman
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 21 Januar 2021, 19:11:48
Ich bin mal einem ganz anderen Ansatz nachgegangen:

Es gibt ein mächtiges Modul names Talk2Fhem, dass mit Rhasspy zusammenarbeiten könnte.
Also habe ich eine Bridge definiert:define Talkbridge Talk2Fhem Stehlampe an = set Stehlampe on\
Stehlampe aus = set Stehlampe off
attr Talkbridge T2F_language DE
und einen neuen Rhasspy-Intent erstellt:attr Rhasspy rhasspyIntents Talker=Talker(Device,Time,Value)
Dazu in 99_myUtils.pm die sub zugefügt:sub Talker($$$){
my ($Geraet,$Zeitpunkt,$Zustand) = @_;
fhem("set Talkbridge ! $Geraet $Zeitpunkt $Zustand");
return "Ok - habe ich weitergegeben"
}
und der sentences.ini einen neuen Abschnitt eingetragen:[de.fhem:Talker]
knipse (die|den|das) ($de.fhem.Device){Device} [(um [0..23 Uhr] [0..59])]{Time} (an|aus){Value}

Fertig ist die Laube.
Bei "Alexa, knipse die Stehlampe um 19 Uhr 56 an" wird das Gerät, der Zeitpunkt und der gewollte Zustand an Talk2Fhem übergeben. Die Bridge definiert dann ein "at" und führt den Befehl zur gesagten Zeit aus.
Dann kommt natürlich eine Fehlermeldung von Rhasspy, weil keine Response-Nachricht definiert ist aber auch das kann Talk2Fhem.
Die Response-Nachricht ist in diesem Fall statisch, könnte aber auch von Talk2Fhem fallweise generiert werden.

Wie denkt Ihr darüber? Sollte man dem Ansatz nachgehen?

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 21 Januar 2021, 20:11:30
Das eine ist ja unabhängig vom anderen. Kann jeder machen, wie er will.

Du könntest auch einfach Kaldi auf "Open Transcription Mode" stellen und dann per MQTT abgreifen, was Rhasspy dir liefert. Die Intent-Erkennung machst du dann mit T2F.

Ich hatte T2F mal im Einsatz. Funktioniert sehr gut. Hab damals dann aber nicht mehr weiter gemacht. Und jetzt gefallen mir die Sentences/Slots von Rhasspy besser. Finde ich verständlicher. Hat aber beides Vor- und Nachteile.

Thyraz - der Ersteller des Snips-Moduls - ist ja auch zu T2F gewechselt.

Wie gesagt, Geschmacksache.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 23 Januar 2021, 10:12:38
@drhirn
Ok, war nur ein Gedanke. Meine anfänglichen Bedarfe an eine Sprachsteuerung waren das Schalten von Geräten und die Ausgabe von Readings. Das erfüllt dein Modul. Persönliche Anpassungen/Erweiterungen realisiere ich dann in extra Intents.

Momentan bin ich auf der Suche nach Infos zur Arbeitsweise von Rhasspy. Speziell versuche ich gerade herauszufinden, ob die Module zur Erkennung/Verarbeitung von Anweisungen/Antworten den RAM benutzen oder alles auf dem Datenträger zwischenspeichern - unabhängig vom Mosquitto.
Für den 2. Fall würde ich ein RAM-Laufwerk erstellen und die Tempverzeichnisse dorthin mounten. Das gäbe Geschwindigkeitsgewinn und eine längere Lebensdauer der SD.

Gruß Jens

p.s. Inotifywatch gab Auskunft... Hier der Dateizugriff (gekürzt) einer Rhasspy-Anweisung eines Satelliten inklusive Antwort.Datei: /dev/snd/timer
Datei: /tmp/#11790
Datei: /tmp/#11790
Datei: /tmp/#11790
Datei: /tmp/#11790
Datei: /dev/snd/timer
Datei: /tmp/#11790
Datei: /tmp/#11790
Datei: /tmp/#11790
Datei: /dev/snd/timer
Datei: /tmp/#11790
Datei: /tmp/#11790
Datei: /usr/bin/aplay
Datei: /lib/arm-linux-gnueabihf/ld-2.28.so
Datei: /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so
Datei: /lib/arm-linux-gnueabihf/librt-2.28.so
Datei: /usr/lib/arm-linux-gnueabihf/libasound.so.2.0.0
Datei: /lib/arm-linux-gnueabihf/libm-2.28.so
Datei: /lib/arm-linux-gnueabihf/libpthread-2.28.so
Datei: /usr/share/alsa/alsa.conf
Datei: /etc/alsa/conf.d
Datei: /usr/share/alsa/alsa.conf.d/10-rate-lav.conf
Datei: /usr/share/alsa/alsa.conf.d/10-samplerate.conf
Datei: /usr/share/alsa/alsa.conf.d/10-speexrate.conf
Datei: /usr/share/alsa/alsa.conf.d/50-arcam-av-ctl.conf
Datei: /usr/share/alsa/alsa.conf.d/50-jack.conf
Datei: /usr/share/alsa/alsa.conf.d/50-oss.conf
Datei: /usr/share/alsa/alsa.conf.d/50-pulseaudio.conf
Datei: /usr/share/alsa/alsa.conf.d/60-a52-encoder.conf
Datei: /usr/share/alsa/alsa.conf.d/60-upmix.conf
Datei: /usr/share/alsa/alsa.conf.d/60-vdownmix.conf
Datei: /usr/share/alsa/alsa.conf.d/98-usb-stream.conf
Datei: /etc/voicecard/asound_2mic.conf
Datei: /usr/lib/arm-linux-gnueabihf/alsa-lib/libasound_module_rate_samplerate.so
Datei: /usr/lib/arm-linux-gnueabihf/libsamplerate.so.0.1.8
Datei: /dev/snd/timer

Offensichtlich beschränkt sich Rhasspy auf die Erstellung einer einzelnen Datei mit # am Anfang im Verzeichnis /tmp. Den Zugriff aud /dev/pts/1 habe ich ignoriert, da es sich wohl um eine Pipe handeln sollte.
Mit folgender Erweiterung in /etc/fstab habe ich ein 50 MB großes RAM-Laufwerk erstellt und auf /tmp nach einem reboot gemounted:tmpfs    /tmp    tmpfs    defaults,size=50M      0       0
Die Swappartition hatte ich zuvor schon deaktiviert:
systemctl stop dphys-swapfile.service
systemctl disable dphys-swapfile.service
Titel: Antw:FHEM und Rhasspy
Beitrag von: Roman am 23 Januar 2021, 17:26:44
Hallo,

danke erst mal an die Antworten von drhirn und JensS, das hat mir schon mal sehr geholfen.
Das eigene intents mit attr Rhasspy rhasspyIntents mytimer=SetTimer (hour,min,sec) angelegt werden können war mir nicht bekannt (in der Doku stehen CustomIntents ja als ToDo)

Gruß
Roman
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 23 Januar 2021, 17:32:33
Und ich wusste nicht, dass es funktioniert. Drum hab ich's auf ToDo gesetzt ;)
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 23 Januar 2021, 17:39:50
Wichtig ist, dass es zum Abschluss immer ein return "irgendwas";gibt, sonst bleibt die Session lange ungeschlossen in der Luft hängen.
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 24 Januar 2021, 14:08:45
Manchmal möchte ich nochmal hören, was Rhasspy gerade sagte. Hier meine zusätzliche rhasspyIntents-Zeile dazu:Respeak=Respeak()
Code in 99_myUtils.pm:sub Respeak(){
my $name = "Rhasspy"; # Rhasspy durch eigenen Rhasspy-Device-Namen ersetzen
my $Response = ReadingsVal($name,"voiceResponse","Ich kann mich nicht mehr erinnern");
return $Response;
}

Aufgerufen wird's wie immer in sentences.ini[de.fhem:Respeak]
was hast du gesagt

Bei: "Was hast du gesagt?" wiederholt Rhasspy ihre letzte Meldung.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 29 Januar 2021, 12:12:42
Hi, kann mir jemand bei dem Problem helfen das ich keine antwort bekomme von FHEM/Rhasspy?

Ich habe einen Master auf meinem NUC laufen und einen Satelliten auf nem RPi3 incl. Respeak 2.
Wenn ich einen Befehl gebe wird dieser an FHEM übergeben z.B. "Wie warm ist es im Dach"
lastIntentPayload:
{"Room":"dach","Type":"Temperatur","input":"Temperatur im dach","intent":"GetNumeric","probability":1,"rawInput":"wie warm ist es im dach","requestType":"voice","sessionId":"288ff6a9-b064-4b36-9b60-817372ee6d05","siteId":"master"}

lastIntentTopic:
hermes/intent/de.fhem:GetNumeric

voiceResponse:
Die Temperatur von dach beträgt 19,1 Grad

Es kommt aber keine antwort an meinem Satelliten an.

Hat jemand eine Idee wie ich vorgehen kann? Ich bin mir auch nicht sicher ob das Problem an FHEM oder an Rhasspy liegt.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 29 Januar 2021, 12:18:48
Du musst in den Einstellungen deines Satelliten noch die siteId konfigurieren. Und dann beim Master unter "Speech to Text", "Intent Recognition", etc. auch. Im Moment geht die Sprachausgabe zum "master", also zum NUC.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 29 Januar 2021, 18:19:33
Hallo davedeluxe,

zum Vergleich habe ich die Konfigurationen meiner Basis und eines Satelliten angehangen. Vielleicht hilft dir's weiter.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 29 Januar 2021, 23:15:09
Danke das ist schon sehr hilfreich.
Ist es auch möglich mit einem internen MQTT? ICh wollte eigentlich keinen separaten mosqitto aufsetzen wenn möglich.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 30 Januar 2021, 08:24:53
Ohne Mosquitto geht's nicht. Bei der Rhasspy-Installation wird Mosquitto mit installiert und ofensichtlich für den internen MQTT genutzt.
Falls du bereits einen Mosquitto für andere Dinge nutzt, könntest du vielleicht eine zweite Instanz mit einem anderen Port starten.
Bei mir habe ich es so gehandhabt, dass mein Basis einen Mosquitto für Rhasspy hat und FHEM auf einem anderen Server läuft.
Du könntest auch MQTT2Server für Port 1883 nehmen und Mosquitto auf Port 1884 lauschen lassen. Es gibt der Wege viele...
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 30 Januar 2021, 08:26:05
Natürlich. Du musst dann nur am Master den Port freigeben. Steht alles in der Rhasspy Dokumentation (https://rhasspy.readthedocs.io/en/latest/).
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 30 Januar 2021, 20:39:29
Ich komme leider nicht weiter...
vielleicht kann sich mal jemand meine Config ansehen.

Also der master (192.168.66.51) läuft auf einem NUC ohne Audio Aus- oder Eingabe.
Der satellit-dach (192.168.66.240) läuft auf einem RPi 3 mit einem respeak2 und soll für die Audio Aus- und Eingabe zuständig sein.

FHEM ist mit dem master verbunden und führt auch Befehle aus die ich per Text- oder Spracheingabe am satellite-dach bzw. per Text am master eingebe.
Was ich absolut nicht zum Laufen kriege ist, das ich eine Sprachausgabe am satellite-dach bekomme.

Audio ansich funktioniert, ich bekomme nach Angabe des Hotword die "beeps" zu hören und auch wenn ich einen Text bei TTS eingebe bekomme ich diesen über die Lautsprecher am satellite-dach ausgegeben.

Anbei zwei Screenshots meiner Settings.

Vielen Dank schonmal!
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 30 Januar 2021, 20:55:49
master passt
satellite-dach:
Audio Recording - host: 127.0.0.1 port: 12202
Dialog Management - Satellite siteIds: satellite-dach

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 30 Januar 2021, 21:05:59
DANKE!
Endlich! Es spricht ;)
Titel: Antw:FHEM und Rhasspy
Beitrag von: cb2sela am 31 Januar 2021, 10:41:44
Guten Morgen,

kann mir jemand mit SetColor helfen? Ich habe erfolgreich alles Andere hinbekommen, aber die Farbtemperatur kriege ich nicht mittels SetColor hin.

Ich habe gemäß der Thyraz-Doku:
attr HUEDevice1 userattr rhasspyColors:textField-long

Dann das attribut rhasspyColors befüllt:
warm=ct 445
neutral=ct 300
kalt=ct 250


Meine IKEA-Tradfri hat folgendes rhasspyMapping:
SetOnOff:cmdOn=on,cmdOff=off
SetNumeric:currentVal=pct,cmd=pct,minVal=5,maxVal=100,step=10,type=Helligkeit
SetColor:currentVal=ct,cmd=ct


und in Rhasspy habe ich:
[de.fhem:SetColor]
(wohnzimmerlampe){Device} [Farbe] [auf] (warm|neutral|kalt){Value}


Ein funktionierendes "wohnzimmerlampe auf 15 Prozent" liefert:
2021-01-31 10:24:50 RHASSPY Rhasspy transmission-state: incoming publish received
2021-01-31 10:24:50 RHASSPY Rhasspy listening_wohnzimmer: 1
2021-01-31 10:24:57 RHASSPY Rhasspy transmission-state: incoming publish received
2021-01-31 10:24:57 RHASSPY Rhasspy lastIntentTopic: hermes/intent/de.fhem:SetNumeric
2021-01-31 10:24:57 RHASSPY Rhasspy lastIntentPayload: {"Device":"wohnzimmerlampe","Value":15,"input":"wohnzimmerlampe auf 15 Prozent","intent":"SetNumeric","probability":1,"rawInput":"wohnzimmerlampe auf fünfzehn prozent","requestType":"voice","sessionId":"default-bumblebee_raspberry-pi-79378dc8-a536-4e0a-a329-4d1c2e7f7cdd","siteId":"default"}
2021-01-31 10:24:57 RHASSPY Rhasspy voiceResponse: Mache ich doch sehr gerne
2021-01-31 10:24:57 RHASSPY Rhasspy responseType: voice
2021-01-31 10:24:58 HUEDevice HUEDevice1 reachable: 1
2021-01-31 10:24:58 HUEDevice HUEDevice1 lastseen: 2021-01-31T09:24Z
2021-01-31 10:24:59 RHASSPY Rhasspy transmission-state: incoming publish received
2021-01-31 10:24:59 RHASSPY Rhasspy listening_wohnzimmer: 0


Ein nicht funktionierendes "wohnzimmerlampe farbe auf kalt" liefert:
2021-01-31 10:25:32 RHASSPY Rhasspy transmission-state: incoming publish received
2021-01-31 10:25:32 RHASSPY Rhasspy listening_wohnzimmer: 1
2021-01-31 10:25:37 RHASSPY Rhasspy transmission-state: incoming publish received
2021-01-31 10:25:37 RHASSPY Rhasspy lastIntentTopic: hermes/intent/de.fhem:SetColor
2021-01-31 10:25:37 RHASSPY Rhasspy lastIntentPayload: {"Device":"wohnzimmerlampe","Value":"kalt","input":"wohnzimmerlampe Farbe auf kalt","intent":"SetColor","probability":1,"rawInput":"wohnzimmerlampe farbe auf kalt","requestType":"voice","sessionId":"default-bumblebee_raspberry-pi-1fb909dc-6242-4a5a-8274-9401092e41e1","siteId":"default"}
2021-01-31 10:25:37 RHASSPY Rhasspy voiceResponse: Da ist leider etwas schief gegangen.
2021-01-31 10:25:37 RHASSPY Rhasspy responseType: voice
2021-01-31 10:25:40 RHASSPY Rhasspy transmission-state: incoming publish received
2021-01-31 10:25:40 RHASSPY Rhasspy listening_wohnzimmer: 0


Vielen Dank vorab.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 31 Januar 2021, 10:45:50
edit: Unten stehendes ist falsch.

----------
Ich bin mir nicht sicher, aber kannst du's mal so versuchen:


warm=445
neutral=300
kalt=250
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 31 Januar 2021, 11:05:06
Bei mir funktioniert:

rhasspyColors:weiß=color_temp 250
normal=color_temp 400
gemütlich=color_temp 500
"color_temp" kann bei dir anders heißen. Schau einfach, welcher set-Befehl für den Farbwert zuständig ist (z.B. "normal=color FCFF99"). Anschließend "set Rhasspy updateSlots" nicht vergessen.

sentences.ini:[de.fhem:SetColor]
stelle [(die|den|das)] ($de.fhem.Device){Device}  [($de.fhem.Room){Room}] ($de.fhem.Color){Color}
zwingend erforderlich: "($de.fhem.Device){Device}" und "($de.fhem.Color){Color}"

rhasspyMapping:SetOnOff:cmdOn=on,cmdOff=off,response={ResponseOnOff($DEVICE)}
GetOnOff:currentVal=state,valueOff=off
SetNumeric:currentVal=brightness,cmd=brightness,minVal=0,maxVal=255,step=15,map=percent,type=Helligkeit
GetNumeric:currentVal=brightness,minVal=0,maxVal=255,map=percent,type=Helligkeit
"SetColor" taucht hier nicht auf.
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 31 Januar 2021, 11:16:59
Nimm das SetColor aus dem Mapping raus. Brauchst du nicht.
Titel: Antw:FHEM und Rhasspy
Beitrag von: cb2sela am 31 Januar 2021, 11:49:59
Danke Euch.
Zunächst musste ich in Rhasspy Value durch Color ersetzen, um überhaupt eine positive Reaktion zu bekommen:
[de.fhem:SetColor]
(wohnzimmerlampe){Device} [Farbe] [auf] (warm|neutral|kalt){Color}


RhasspyColors hat das ct durchaus gebraucht, also
warm=ct 445
neutral=ct 300
kalt=ct 250

weil ein Schalten ja auch per set HUEDevice1 ct 300 ging.

Was ich nicht verstehe: Warum geht es auch ohne SetColor im RhasspyMapping? Es geht sowohl ohne als auch mit SetColor?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 31 Januar 2021, 11:51:57
Das steht so im Modul. Mit "ct 300" weiß Rhasspy ja bereits, was zu mappen ist.

Übrigens...
In der sentences.ini sollten keine Device- oder Raumnamen stehen. Diese werden von FHEM mit updateSlots übergeben und befinden sich dann in den Slotdateien de.fhem.Device und de.fhem.Room.
Das Gleiche gilt auch für Sendernamen, Farben und NumericTypen.

Die Werte stehen dann in den Slotdateien des Rhasspy-Masters und man greift über Variablen auf die Daten zu.
z.B. "($de.fhem.Device){Device}" und "($de.fhem.Color){Color}"

(wohnzimmerlampe) und (warm|neutral|kalt) sollten durch ($de.fhem.Device){Device} und ($de.fhem.Color){Color} erstezt werden.

Gruß Jens

Titel: Antw:FHEM und Rhasspy
Beitrag von: Roman am 01 Februar 2021, 21:26:48
Hallo,

kennt jemand eine Möglichkeit die sentences mit 'Wildcards' auszustatten ?
Ich bastel gerade an einem Timer, was soweit schon ganz gut klappt. Mehrere Timer unterscheide ich aktuell durch anhängen eines timestamps.
Um mehrere Timer auch zu unterscheiden wäre auch ein Name des Timers super, auch zur Abfrage zur verbleibenden Laufzeit usw.
also ungefähr so was:
[de.fhem:RhasspySetTimer]
\[(stell | stelle)] [mir][(den|einen|meinen)] [a-z {Name}] Taimer {Device} [(auf|für|mir)] [(1..24){hour} (Stunde|Stunden)] [und] [(0..60) {min} (minute|minuten)] [und] [(0..60){sec} (sekunde|sekunden)]

Wobei Name irgendwas sein kann. In der Rhasspy Doku hab ich hierzu nichts gefunden, Nur sowas wie Alternativnamen, Ersetzungen von erkannten Worten.

Erkannt werden die Wörter aber. (auch wenn ich die nicht trainiert habe)
Im 'lastIntentPayload'  findet sich dann sowas
rawInput":"stelle den kartoffel taimer auf 10 Minuten"

Ich hab nur keine Idee wie ich die im Intent dann der Variablen 'Name' zuordnen kann.
Ich könnte jetzt zwar alle möglichen Wörter die  mir einfallen (Kuchen, Braten, Eier, Waschmaschine, Fenster zu machen usw.) in einen Slot packen und immer erweitern wenn was neues dazukommt, aber eine flexible Lösung wäre mit lieber.

Gruß
Roman


Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 02 Februar 2021, 20:08:02
Hallo Roman,

das sieht sehr interessant aus. Kannst du mal bitte deine profile.json posten? Nutzt du den "Open transcription mode"?
Auf jeden Fall kannst du den rawInput im Reading lastIntentPayload auswerten. Hier mal ein (Bei)Spielscript.

rhasspyIntents hinzufügen:Wikipedia=Wikipedia(Begriff)

sentences.ini:[de.fhem:Wikipedia]
erkläre mir was (Lampe | Fenster | Fahrrad){Begriff} ist


99_myUtils:
use Data::Dumper;
use JSON;
use LWP::UserAgent;

sub Wikipedia($){
my ($Input) = @_;
my $lastIntentPayload = $defs{Rhasspy}->{READINGS}{lastIntentPayload}{VAL};
my ($Begriff) = $lastIntentPayload =~ /rawInput\"\:\"erkl\äre\ mir\ was (.*?)(?= ist)/;
$Begriff =~ s/ /_/g;
$Begriff =~ s/ä/%C3%A4/g;
$Begriff =~ s/ö/%C3%B6/g;
$Begriff =~ s/ü/%C3%BC/g;
$Begriff =~ s/ß/%E1%BA%9E/g;
my $ua = LWP::UserAgent->new();
my $response = $ua->get("https://de.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=$Begriff");
my $content = $response->content;
my $ref = JSON->new->decode($content);
my ($jsonHash) = values %{ $ref->{'query'}->{'pages'} };
my $Response = $jsonHash->{'extract'};
$Response =~ s/\(/ /g;
$Response =~ s/\)/ /g;
$Response =~ s/\;/ /g;
$Response =~ s/\'/ /g;
$Response =~ s/\./ - /g;
$Response =~ s/\:/ /g;
$Response =~ s/\,/ /g;
$Response =~ s/\'/ /g;
$Response = lc $Response;
$Response = encode('utf-8',$Response);
return $Response;
}


Mit "Alexa, erkläre mit was Lampe ist" sollte eine zusammenfassende Erklärung zu hören sein

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 02 Februar 2021, 21:32:30
Zitat von: JensS am 14 Januar 2021, 21:54:05
@drhirn

Anbei meine LED-Steuerung. Ist quick $ dirty...
Nach dem Wakeword wird die mittlere LED grün und anschließend bis zum Ende des Prozesses blau. Anschließend erlischt die LED wieder.
Man kann die Funktion durch einen kurzen Tastendruck auf den Button (de)aktivieren.
Drückt man 3 Sekunden, wird das Mikro aus- bzw. angeschaltet.
Hält man den Button 10 Sekunden gedrückt, leuchtet die LED für 2 Sekunden rot und der RPI wird heruntergefahren. Nach ca. 30 Sekunden kann man ihn dann vom Strom trennen.
Meine Programmierkenntnisse sind eher dürftig, so dass ich dich bitte, dir das Ganze mal anzuschauen und zu testen.

Gruß Jens

p.s. Die Abfrage bnutzt paho-mqtt, welches ich mitapt-get install python3-paho-mqttinstalliert habe.
p.p.s. LED.py ist neu.
p.p.p.s. Liegt jetzt hier: https://github.com/jens-schiffke/Rhasspy-LED (https://github.com/jens-schiffke/Rhasspy-LED)

Funktioniert das auch mit dem Respeaker 4-Mic Hat?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 02 Februar 2021, 22:10:04
Hab ich noch nicht probiert, hat aber auch einen APA102. Mit num_led=13 sollte zumindestens 1 LED leuchten. Import RPi.GPIO as GPIO und den unteren Teil ab Button kannst du löschen, da es kein Button gibt.

Gruß Jens

p.s. Ich hatte dazu einen Thread "Rhasspy-LED-Service" eröffnet: https://forum.fhem.de/index.php/topic,117919.0.html (https://forum.fhem.de/index.php/topic,117919.0.html)
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 02 Februar 2021, 22:43:59
Danke, hat leider nicht geklappt.
Ich habe mir auch mal das wiki von Seeeds angesehen (https://wiki.seeedstudio.com/ReSpeaker_4_Mic_Array_for_Raspberry_Pi/)
da ist zwar alles schön beschrieben aber ich komm damit trotzdem nicht klar.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Roman am 02 Februar 2021, 23:56:07
Zitat von: JensS am 02 Februar 2021, 20:08:02
Hallo Roman,

das sieht sehr interessant aus. Kannst du mal bitte deine profile.json posten? Nutzt du den "Open transcription mode"?
Auf jeden Fall kannst du den rawInput im Reading lastIntentPayload auswerten. Hier mal ein (Bei)Spielscript.

Gruß Jens

Hallo JensS,

Open transcription mode nutze ich nicht, da dort ja keine CustomWords möglich sind, aber ich habe das 'base_dictonary.txt' das im PROFILE_DIR unter kaldi/ liegt in die 'kaldi_custom_words.txt' kopiert. Einstellungen in der profile.json hab ich gar keine gemacht, nur die normalen Einstellungen in der Web-Oberfläche.

Leider hab ich etwas Mist erzählt und war beim testen etwas verwirrt. Im 'lastIntendPayload' tauchen die unbekannten Wörter nur auf wenn diese als Textcommand übergeben wurden, nicht wenn diese gesprochen werden. (Teste meine sentences usw. zum großen Teil über Textcommand, da mich meine Frau und Tochter langsam für verrückt erklären  :) ).

Gesprochenen  Wörter tauchen in lastIntentPayload nur auf wenn diese auch irgendwie in den sentences enthalten sind. Also braucht's dann doch einen Slot mit möglichen Timer-Namen und das base_dictonary könnte ich mir sparen.

aber hier trotzdem mal meine profile.json
{
    "dialogue": {
        "satellite_site_ids": "hoernix1, Master",
        "system": "rhasspy",
        "volume": "0.4"
    },
    "intent": {
        "satellite_site_ids": "hoernix1, Master",
        "system": "fsticuffs"
    },
    "microphone": {
        "arecord": {
            "device": "jack"
        },
        "system": "arecord"
    },
    "mqtt": {
        "enabled": "true",
        "host": "192.168.156.5",
        "site_id": "Master"
    },
    "sounds": {
        "recorded": "${RHASSPY_PROFILE_DIR}/etc/wav/recorded.wav",
        "wake": "${RHASSPY_PROFILE_DIR}/etc/wav/wakeup.wav"
    },
    "speech_to_text": {
        "satellite_site_ids": "hoernix1, Master",
        "system": "kaldi"
    },
    "text_to_speech": {
        "nanotts": {
            "language": "de"
        },
        "satellite_site_ids": "hoernix1, Master"
    },
    "wake": {
        "porcupine": {
            "keyword_path": "bumblebee.ppn"
        },
        "system": "porcupine"
    }
}


Gruß
Roman
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 03 Februar 2021, 19:49:17
@Roman - verrückt aber smart  8)
Der Open transcription mode bedient ja auch die Intents aber durch die Vielzahl der bekannten Worte, wird fast nie der tatsächlich gesprochene Text erkannt. "schalte das Licht an" wird häufig als "schaltet das Licht ein" erkannt und ist somit noch nicht optimal für FHEM. Also bleibt's vorerst bei der bewährten Konfiguration. Ich würde gerne DeepSpeech ausprobieren, bekomme aber output_graph.pbmm nicht geladen. Aber es muss ja nicht alles gleichzeitig sein.

@davedeluxe
Ich habe noch ein 6-Mic-Array zu liegen. Dass sollte dem 4er entsprechen. Ich teste das mal die Tage...
Du könntest ja mal schauen, welche Fehler bei "python3 /opt/Rhasspy-LED/Rhasspy-LED/Rhasspy-LED.py" ausgeworfen werden.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 03 Februar 2021, 20:30:33
Zitat von: JensS am 03 Februar 2021, 19:49:17
@davedeluxe
Ich habe noch ein 6-Mic-Array zu liegen. Dass sollte dem 4er entsprechen. Ich teste das mal die Tage...
Du könntest ja mal schauen, welche Fehler bei "python3 /opt/Rhasspy-LED/Rhasspy-LED/Rhasspy-LED.py" ausgeworfen werden.

Gruß Jens

Ich habe zwischenzeitlich das gefunden, sieht gut aus und scheint zu laufen:
https://github.com/project-alice-assistant/HermesLedControl/wiki

Gruß Dave
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 03 Februar 2021, 20:33:53
Zitat von: JensS am 15 Januar 2021, 17:39:49
@jowe
Wenn du nur eine Rückmeldung des zu erwartenden Status haben möchtest, kannst du das mir einem zusätzlichen Reading lösen.SetOnOff:cmdOn={fhem("set $DEVICE on;setreading $DEVICE rhasspySTATE an")},cmdOff={fhem("set $DEVICE off;setreading $DEVICE rhasspySTATE aus")},response={my $Name = (split(/,/,AttrVal($DEVICE,"rhasspyName","error")))[0];my $Status = ReadingsVal($DEVICE,"rhasspySTATE","im unbekannten Status");return "Ok - $Name ist $Status"}Ist zwar ganz schön lang aber dafür flexibel.
Raven finde ich auch gut, weil man selbst das Wakeword einsprechen kann. Ist aber leider viiiiel zu langsam.

Hi, wenn ich
SetOnOff:cmdOn={fhem("set $DEVICE on;setreading $DEVICE rhasspySTATE an")},cmdOff={fhem("set $DEVICE off;setreading $DEVICE rhasspySTATE aus")},response={my $Name = (split(/,/,AttrVal($DEVICE,"rhasspyName","error")))[0];my $Status = ReadingsVal($DEVICE,"rhasspySTATE","im unbekannten Status");return "Ok - $Name ist $Status"}

nutze spuckt mir FHEM folgenden Fehler aus:
Please define $DEVICE first Please define $DEVICE first Unknown command my, try help. Unknown command return, try help.

Bei dir nicht?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 03 Februar 2021, 20:41:40
Bei meiner Stehlampe läuft's:
rhasspyMapping:
SetOnOff:cmdOn={fhem("set $DEVICE on;setreading $DEVICE rhasspySTATE an")},cmdOff={fhem("set $DEVICE off;setreading $DEVICE rhasspySTATE aus")},response={my $Name = (split(/,/,AttrVal($DEVICE,"rhasspyName","error")))[0];my $Status = ReadingsVal($DEVICE,"rhasspySTATE","im unbekannten Status");return "Ok - $Name ist $Status"}
GetOnOff:currentVal=state,valueOff=off
SetNumeric:currentVal=brightness,cmd=brightness,minVal=0,maxVal=255,step=15,map=percent,type=Helligkeit
GetNumeric:currentVal=brightness,minVal=0,maxVal=255,map=percent,type=Helligkeit


p.s. @davedeluxe
LED-Service: https://github.com/jens-schiffke/Rhasspy-LED/tree/main/Rhasspy-LED-4mic (https://github.com/jens-schiffke/Rhasspy-LED/tree/main/Rhasspy-LED-4mic)
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 05 Februar 2021, 10:08:18
WOWda hast du dich aber ran gehalten!
Herzlichen Dank für die Mühe, werde es schnellst möglich testen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 05 Februar 2021, 20:18:18
Weiß jemand ob es eine Möglichkeit gibt den Fully Kiosk Browser zur Spracheingabe für Rhasspy zu nutzen?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 06 Februar 2021, 18:12:06
Zitat von: davedeluxe am 05 Februar 2021, 20:18:18
Weiß jemand ob es eine Möglichkeit gibt den Fully Kiosk Browser zur Spracheingabe für Rhasspy zu nutzen?
Schon mal https://github.com/razzo04/rhasspy-mobile-app (https://github.com/razzo04/rhasspy-mobile-app) probiert?
Link zur apk:https://github.com/razzo04/rhasspy-mobile-app/releases/download/v1.7.0/app-release.apk (https://github.com/razzo04/rhasspy-mobile-app/releases/download/v1.7.0/app-release.apk)
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 06 Februar 2021, 18:17:01
Zitat von: JensS am 06 Februar 2021, 18:12:06
Schon mal https://github.com/razzo04/rhasspy-mobile-app (https://github.com/razzo04/rhasspy-mobile-app) probiert?
Ja, habe ich installiert, Befehle kann ich auch eingeben aber ich bekomme das Hotword nicht zum laufen und MQTT kann ich auch nicht verbinden da ich den internen MQTT nutze und somit kein User und Pass habe.

Ich habe das mit dem Hotword auch schon nach der Anleitung von razzo04 https://community.rhasspy.org/t/udp-wakeword-detection-with-rhasspy-mobile-app/1795/4 (https://community.rhasspy.org/t/udp-wakeword-detection-with-rhasspy-mobile-app/1795/4) probiert aber ich bekomm es nicht zum laufen.

Befehle kann ich senden, auch per Spracheingabe aber nicht per Hotword. Ich weiß nicht ob es daran liegt das ich MQTT nicht verbinden kann oder ob es davon unabhängig funktionieren müsste.
Titel: Antw:FHEM und Rhasspy
Beitrag von: rakete123 am 06 Februar 2021, 20:43:01
Mal ne Frage an alle die Rhasspy mit FHEM schon im Einsatz haben: Ist das alles eher eine Spielerei oder ist das im Alltag durchaus sinnvoll? Bastelprojekte habe ich aktuell genug und würde höchstens etwas Zeit investieren, wenn man damit wirklich die Basics per Sprache bedienen kann.
Wie lange ist denn die Verzögerung zwischen der Aufforderungen und der durchgeführten Aktion?
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 06 Februar 2021, 20:49:49
Hi,
ich habe mich da die letzten Tage rein gefuchst mit Hilfe aus dem Forum und der Rhasspy Community.
Es ist m.M. schon sehr weit fortgeschritten, relativ simpel aufzusetzen mit schnellen und sehr guten Resultaten.

Ich finde es lohnt sich absolut.

Grüße Dave
Titel: Antw:FHEM und Rhasspy
Beitrag von: Roman am 07 Februar 2021, 19:37:12
Hi,

ich hab mir für Rhasspy einen Timer gebastelt. Wer ihn mal testen/ausprobieren möchte die Konfig dazu.
Alarm gebe ich über ein eigenes Device aus (MyTTS) aber ein 'set RHASSPY speak .....' sollte ja auch funktionieren.
Dem Timer können Namen gegeben werden, müssen aber nicht.
Wird bei der Statusabfrage kein Name angegeben werden alle laufenden Timer angesagt


sentences.ini
[de.fhem:RhasspySetTimer]
\[(stell | stelle)] [mir][(den|einen|meinen)] [$de.fhem.Timer {Name}]  Taimer {Device} [(auf|für|mir)] [(1..24){hour} (Stunde|Stunden)] [und] [(0..60) {min} (minute|minuten)] [und] [(0..60){sec} (sekunde|sekunden)]

Einen Slot 'de.fhem.Timer' mit möglcihen Timernamen anlegen

[de.fhem:RhasspyGetTimer]
wie lange läuft  der [$de.fhem.Timer {Name}]  Taimer noch
Taimerstatus [$de.fhem.Timer {Name}]
Wann ist der [$de.fhem.Timer {Name}] Taimer fertig


rhasspyIntents
RhasspySetTimer=RhasspySetTimer(Device,hour,min,sec,Name)
RhasspyGetTimer=RhasspyGetTimer(Name)


99_myUtils.pm
# SetTimer Custom Intent
sub RhasspySetTimer($) {
my $response="OK";
my $timestamp=time();
  # Übergebene Parameter in Variablen speichern
  my ($Device,$hour,$min,$sec,$Name) = @_;
$hour=0 if !defined ($hour);
$min=0 if !defined ($min);
$sec=0 if !defined ($sec);
$Name="default" if !defined ($Name);
  # Standardantwort festlegen
  if ( $hour == 0 && $min == 0 && $sec == 0) {
  $response = " ";
  } else {
  my $duration_export = strftime('%H:%M:%S', $sec, $min, $hour, 1, 1, 1900);
  my $duration = $hour.".".$min.".".$sec;
my $timer = "RhasspyTimer_$Name"."_"."$duration";
  fhem("define $timer at +$duration_export set MyTTS volume 30 ;; set MyTTS tts :alarm_sound.mp3: $Name Timer abgelaufen ;; set MyTTS volume 35");
  $response="$Name Timer wurde gestellt";
};
  return $response;
};

# GetTimer Custom Intent
sub RhasspyGetTimer($) {
my ($Name)=@_;
$Name="default" if !defined ($Name);
my $response="";
my @timers=split /\n/,fhem("list RhasspyTimer_$Name.* state");
my $epoch=time;
my $restzeit="";
foreach my $timer (@timers) 
{
if ( $timer =~ /RhasspyTimer.*/ ) {
my ($namestring,$alarmtime) = (split /\s+/,$timer)[0,4];
my $trigger = (split /\s+/, fhem("list $namestring TRIGGERTIME"))[1];
my $name = (split /_/,$namestring)[1];
my $restepoch = int($trigger-$epoch);
my $restlaufzeit = strftime('%T', gmtime $restepoch);
my ($hour,$min,$sec) = split /:/,$restlaufzeit;
my ($uhrhour,$uhrmin) = (split /:/,$alarmtime)[0,1];
if ( $hour > 0) { $restzeit = " $hour stunden"};
if ( $min > 0) { $restzeit = $restzeit." $min minuten"};
if ( $hour > 0) { $restzeit = $restzeit." $sec sekunden"};
$response=$response." $name Timer alarmiert um $uhrhour Uhr $uhrmin in $restzeit";
} else {
$response="es ist kein $Name Timer gestellt";
}
};
return $response;
};
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 07 Februar 2021, 20:20:26
Hallo Roman,
prima, das übernehme ich gern. Wie füllt man [$de.fhem.Timer {Name}]?
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: Roman am 07 Februar 2021, 20:36:43
Hi Jens,
ich hab mir dazu in der Rhasspy-Webgui einen neuen Slot angelegt und mit meinen Timernamen befüllt
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 07 Februar 2021, 20:49:41
@drhirn
In deinem Testing-Branch gibt es eine neue Routine zur Übertragung von Wav-Dateien. Funktioniert das und ist das schon reif für den Master-Brunch?
Gruß Jens

@Roman
Klasse - funktioniert hervorragend! Die Set-Sub habe ich für mich etwas umgeschrieben, um eine Sprachmeldung des Satelliten zu erhalten: sub RhasspySetTimer($) {
my $response="OK";
my $timestamp=time();
  # Übergebene Parameter in Variablen speichern
  my ($Device,$hour,$min,$sec,$Name) = @_;
$hour=0 if !defined ($hour);
$min=0 if !defined ($min);
$sec=0 if !defined ($sec);
$Name="default" if !defined ($Name);
my $lastIntentPayload = $defs{Rhasspy}->{READINGS}{lastIntentPayload}{VAL};
my ($SiteId) = $lastIntentPayload =~ /siteId\"\:\"(.*?)(?=\")/;
  # Standardantwort festlegen
  if ( $hour == 0 && $min == 0 && $sec == 0) {
  $response = " ";
  } else {
  my $duration_export = strftime('%H:%M:%S', $sec, $min, $hour, 1, 1, 1900);
  my $duration = $hour.".".$min.".".$sec;
my $timer = "RhasspyTimer_$Name"."_"."$duration";
  fhem("define $timer at +$duration_export set Rhasspy speak siteId=\"$SiteId\" text=\"Achtung - der $Name Taimer ist abgelaufen\"");
  $response="$Name Taimer wurde gestellt";
};
  return $response;
};

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 08 Februar 2021, 08:13:29
Zitat von: Roman am 07 Februar 2021, 19:37:12
ich hab mir für Rhasspy einen Timer gebastelt. Wer ihn mal testen/ausprobieren möchte die Konfig dazu.

Ich hatte doch eh schon einen Timer ins Modul eingebaut.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 08 Februar 2021, 08:15:39
Zitat von: JensS am 07 Februar 2021, 20:49:41
@drhirn
In deinem Testing-Branch gibt es eine neue Routine zur Übertragung von Wav-Dateien. Funktioniert das und ist das schon reif für den Master-Brunch?

Nein. Leider nicht. Ich habe nicht raus bekommen, wie ich die WAV Dateien so kodiere, dass sie richtig am MQTT Server ankommen. Und dann hat mich ein anderes Projekt von Rhasspy abgelenkt ;)
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 08 Februar 2021, 19:47:55
Heureka - ist gaaanz einfach, wenn man's findet.
Die Datei werner1_Flasche.wav nach /opt/fhem/cache kopieren. Besitz anpassen mit "chown fhem /opt/fhem/cache/werner1_Flasche.wav", Code in 99_myUtils.pm kopieren, den Rhasspy-Devicenamen "$defs{Rhasspy}" sowie die MQTT-Sevrer-IP anpassen und "stelle einen Timer auf 10 Sekunden" sagen.  8)
# SetTimer Custom Intent
sub RhasspySetTimer($$$$$) {
my $response="OK";
my $timestamp=time();
  # Übergebene Parameter in Variablen speichern
  my ($Device,$hour,$min,$sec,$Name) = @_;
$hour=0 if !defined ($hour);
$min=0 if !defined ($min);
$sec=0 if !defined ($sec);
my ($lastIntentPayload) = $defs{Rhasspy}->{READINGS}{lastIntentPayload}{VAL};
my $ref = JSON->new->decode($lastIntentPayload);
my $SiteId = encode('utf-8',encode('cp-1252',$ref->{'siteId'}));
$Name = encode('utf-8',encode('cp-1252',$ref->{'Name'}));
$Name="Standard" if !defined ($Name);
my $atName = $Name;
$atName =~ s/ä/ae/g;
$atName =~ s/ö/oe/g;
$atName =~ s/ß/ss/g;
$atName =~ s/ü/ue/g;
  # Standardantwort festlegen
  if ( $hour == 0 && $min == 0 && $sec == 0) {
  $response = " ";
  } else {
  my $duration_export = strftime('%H:%M:%S', $sec, $min, $hour, 1, 1, 1900);
  my $duration = $hour.".".$min.".".$sec;
my $timer = "RhasspyTimer_$atName"."_"."$duration";
fhem("define $timer at +$duration_export { qx(/usr/bin/mosquitto_pub -h 192.168.100.1 -t \'hermes/audioServer/$SiteId/playBytes/$timestamp\' -f /opt/fhem/cache/werner1_Flasche.wav);;fhem(\'set Rhasspy speak siteId=\"$SiteId\" text=\"Achtung - der $Name Taimer ist abgelaufen\"\')}");
$response="$Name Taimer wurde gestellt";
};
  return $response;
};


Gruß Jens

p.s. Umlaute im Topic und im Timernamen werden nun auch übergeben
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 08 Februar 2021, 22:23:56
Hat jemand eine Möglichkeit parat wie man folgendes integrieren kann:

Bring! (Einkaufsliste)
Wikipedia fragen
Google fragen
Wolfram nutzen für z.B. Rechenaufgaben während man kocht (was sind 2/3 von 586g)
Wie ist das Wetter, brauch ich nen Schirm?

Das fehlt mir noch...
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 09 Februar 2021, 13:13:35
Zitat von: JensS am 08 Februar 2021, 19:47:55
Heureka - ist gaaanz einfach, wenn man's findet.

Und wo hast du 8ewnjksdf093jb42 her?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 09 Februar 2021, 18:35:48
Zitat von: drhirn am 09 Februar 2021, 13:13:35
Und wo hast du 8ewnjksdf093jb42 her?
Das ist eine Session-ID (d|m)einer Wahl. Guck mal hier: https://docs.snips.ai/reference/hermes (https://docs.snips.ai/reference/hermes)
Hab den Code nochmal überarbeitet und u.a.  Umlaute mit reingenommen, da ich in der Küche keinen Brötchen-Timer stellen konnte.
Nun bin ich auf der Suche nach einer Antwort auf die Frage, wie man den Namen des Devices rausbekommt, welches die sub aufruft.$defs{Rhasspy} bezieht sich auf mein RHASSPY-Device, welches zufällig Rhasspy heißt.
Jemand einen Tipp?

@davedeluxe
1. Solltest Du genauer erläutern...
2.+3. Geht nicht direkt aus Rhasspy ohne "Open transcription mode". Das ist noch fernes Land für mich.
4. Kopfrechnen ist eine Stärke von Rhasspy. Solch ein Intent benötigt wenig Code.
5. Ist möglich. Dazu hatte ich einen rudimentären Intent in diesem Thread erstellt. Müsste halt nur erweitert werden.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 10 Februar 2021, 08:36:16
Zitat@davedeluxe
1. Solltest Du genauer erläutern...
2.+3. Geht nicht direkt aus Rhasspy ohne "Open transcription mode". Das ist noch fernes Land für mich.
4. Kopfrechnen ist eine Stärke von Rhasspy. Solch ein Intent benötigt wenig Code.
5. Ist möglich. Dazu hatte ich einen rudimentären Intent in diesem Thread erstellt. Müsste halt nur erweitert werden.

Gruß Jens

1. Also ich würde gerne Bring! in FHEM einbinden, ich glaube aber das es an der nicht vorhandenen öffentlichen API hängt - wobei es für ioBroker anscheinend ein Modul gibt...
2+3 dann warte ich, hab mich da auch schon versucht dran zu machen aber da fehlt mir das know how.
4. Wenn ich so drüber nachdenke sollte es per myutils tatsächlich kein all zu großes Problem sein. Ich versuche mich mal dran auch wenn ich wenig Ahnund davon habe ;)
5. Schaue ich mir an, danke!
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 10 Februar 2021, 19:53:53
@davedeluxe
Bring! war im Forum bereits Thema. Am besten wäre ein separates Bring-Modul, auf das man zugreifen kann.
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 11 Februar 2021, 08:33:19
Könnte mir jemand hier helfen?
Ich habe wirklich keine ahung von der myUtils bzw. wie ich das korekt mache aber langsam wird es, also nicht zu kritisch sein :)
Ich möchte meinen Staubsauger steuern, das funktioniert auch FAST. Er Saugt die Räume die ich ihm nenne aber die unteren Befehle (Pause, Start, Stop) funktionieren nicht bzw. egal was ich davon sage, er pausiert immer.
# Sauger
sub rhasspySauger($$$) {
    # Übergebene Parameter in Variablen speichern
    my ($Artikel,$Room,$Value) = @_;

    # Standardantwort
    my $response = "Was willst du?";

if (defined $Artikel) {
fhem "set Roborock zone $Room";
        return "OK ich sauge $Artikel $Room";
}
if ( $Value = "pause") {
fhem "set Roborock pause";
return "OK Staubsauger pausiert";
}
if ( $Value = "start") {
fhem "set Roborock start";
return "OK Staubsauger startet";
}
if ( $Value = "laden") {
fhem "set Roborock charge";
return "OK Staubsauger fährt zur Ladestation";
}
return $response;
};


Ich denke das es einfach ein Problem mit der "if" Abfrage ist.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 11 Februar 2021, 08:45:06
Ich denke, du denkst viel zu kompliziert ;)

Für Start, Stop, Pause kannst du einfach einen MediaControls Intent aus dem Modul nehmen.
Und für die Zone bastelst du dir einen Custom Intent. Und das funktioniert ja schon.
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 11 Februar 2021, 08:49:20
 ::) Darin bin ich super
Danke :)

ABER ich brauch noch einen Befehl für "geh laden", den müsste ich in der myutils unterbringen - UND ich würde gerne verstehen wo mein Fehler liegt.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 11 Februar 2021, 09:01:09
Für Laden kannst du ja "zurück" nehmen.

Zu deinem If:
- Die Anwort wird immer "Was willst du" sein, weil du nie irgendwie eine andere Antwort definierst.
- Statt den vielen Ifs solltest du lieber switch oder if/else verwenden
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 11 Februar 2021, 17:22:15
@davedeluxe
Was drhirn schreibt, kann ich nur unterstreichen. Hier als Hilfestellung, was deinem Code gefehlt hätte  - jeder fängt mal an:sub rhasspySauger($$$) {
    # Übergebene Parameter in Variablen speichern
    my ($Artikel,$Room,$Value) = @_;

    # Standardantwort
    my $response = "Was willst du?";

if (defined $Artikel) {
fhem "set Roborock zone $Room";
#        return "OK ich sauge $Artikel $Room";
     $response = "OK ich sauge $Artikel $Room" #In der letzten Zeile kann, muss aber kein Semikolon stehen.
}; #Semikolon fehlt
if ( $Value eq "pause") { # Das = weist einer Variablen einen Wert zu. Um etwas zu vergleichen nutzt man == oder eq.
fhem "set Roborock pause";
# return "OK Staubsauger pausiert";
$response = "OK Staubsauger pausiert" #In der letzten Zeile kann, muss aber kein Semikolon stehen.
}; #Semikolon fehlt
if ( $Value eq "start") { # Das = weist einer Variablen einen Wert zu. Um etwas zu vergleichen nutzt man == oder eq.
fhem "set Roborock start";
# return "OK Staubsauger startet";
$response = "OK Staubsauger startet"
}; #Semikolon fehlt
if ( $Value eq "laden") { # Das = weist einer Variablen einen Wert zu. Um etwas zu vergleichen nutzt man == oder eq.
fhem "set Roborock charge";
# return "OK Staubsauger fährt zur Ladestation";
$response = "OK Staubsauger fährt zur Ladestation" #In der letzten Zeile kann, muss aber kein Semikolon stehen.
}; #Semikolon fehlt
return $response;
};

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: Cordula am 12 Februar 2021, 12:55:02
Ich beschäftige mich seit kurzem mit Rhasspy. Funktioniert auch soweit. Hab aber momentan zwei offene Punkte.
Bei den Wakewords habe ich schon verschiedene Module ausprobiert. Bin aber nicht wirklich zufrieden. Snowboy ist zu empfindlich und reagiert auf alles. Bei den anderen(Porcupine,Raven)  muss man häufig wiederholen. Hat hier jemand was, was funktioniert?
Zum zweiten stehe ich beim Thema Mapping auf dem Schlauch. In Rhasspy definiere ich die Sätze z.B.

[de.fhem:SetOnOff]
(schalte|mach|machs) [(den|die|das)] ($de.fhem.Device){Device} [(im |in der)] [($de.fhem.Room){Room}] (an|ein|hoch|aus|runter){Value}
(oeffne|schliesse){Value} [die] ($de.fhem.Device){Device} [(im |in der)] [($de.fhem.Room){Room}]

Wo erfolgt das Mapping, dass an|ein|oeffne = on und damit cmdOn zugeordnet ist und dass aus|schliesse|runter = off und damit cmdOff zugeordnet ist? Muss ich das selbst in MyUtils auswerten oder kann man das irgendwo einstellen?
Danke im voraus.

Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 12 Februar 2021, 13:00:39
Siehe erster Beitrag in diesem Thread oder https://github.com/drhirn/fhem-rhasspy
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 12 Februar 2021, 17:01:22
Hallo Cordula, willkommen im Forum und bei Rhasspy!
Um die Hotworderkennung zu justieren, reduziere den Wert Sensitivity. (z.B. 0.45). Ich nutze das Hotword Alexa, weil es mit 3 Silben daherkommt und dadurch gut zu erkennen ist.

Zur Erkennung von an|aus:
Rhasspy kennt im SetOnOff nur den Wert "an" für cmdOn. Alles andere wird als cmdOff gewertet.
((an|ein|hoch):an | (aus|runter):aus) {Value} sollte funktionieren, wobei "an|ein|hoch" durch den Doppelpunkt in "an" gewandelt wird. Die Off-Variante hat den Doppelpunkt nur zu besseren Ansicht.

Gruß Jens

p.s. Rhasspy kann auch Umlaute (öffne, schließe, etc.). Diese solltest Du auch nutzen, um eine gute Erkennung bzw. Sprachausgabe zu erhalten.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Cordula am 12 Februar 2021, 23:03:03
Hallo Jens, danke für die Tipps. Hab's gerade ausprobiert - Mapping funktioniert wie gewünscht, genauso die Umlaute. Mit der Sensitivity habe ich schon vorher rumgespielt, aber bisher bin ich noch nicht zufrieden. Probiere deinen Wert jetzt mal für längere Zeit aus. Wenn's mal wieder Probleme gibt, weiß ich ja, wo ich Hilfe finde.
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 13 Februar 2021, 12:01:45
Zitat von: JensS am 11 Februar 2021, 17:22:15
@davedeluxe
Was drhirn schreibt, kann ich nur unterstreichen. Hier als Hilfestellung, was deinem Code gefehlt hätte  - jeder fängt mal an:sub rhasspySauger($$$) {
    # Übergebene Parameter in Variablen speichern
    my ($Artikel,$Room,$Value) = @_;

    # Standardantwort
    my $response = "Was willst du?";

if (defined $Artikel) {
fhem "set Roborock zone $Room";
#        return "OK ich sauge $Artikel $Room";
     $response = "OK ich sauge $Artikel $Room" #In der letzten Zeile kann, muss aber kein Semikolon stehen.
}; #Semikolon fehlt
if ( $Value eq "pause") { # Das = weist einer Variablen einen Wert zu. Um etwas zu vergleichen nutzt man == oder eq.
fhem "set Roborock pause";
# return "OK Staubsauger pausiert";
$response = "OK Staubsauger pausiert" #In der letzten Zeile kann, muss aber kein Semikolon stehen.
}; #Semikolon fehlt
if ( $Value eq "start") { # Das = weist einer Variablen einen Wert zu. Um etwas zu vergleichen nutzt man == oder eq.
fhem "set Roborock start";
# return "OK Staubsauger startet";
$response = "OK Staubsauger startet"
}; #Semikolon fehlt
if ( $Value eq "laden") { # Das = weist einer Variablen einen Wert zu. Um etwas zu vergleichen nutzt man == oder eq.
fhem "set Roborock charge";
# return "OK Staubsauger fährt zur Ladestation";
$response = "OK Staubsauger fährt zur Ladestation" #In der letzten Zeile kann, muss aber kein Semikolon stehen.
}; #Semikolon fehlt
return $response;
};

Gruß Jens

Vielen Dank für die tolle Hilfe, das hilft mir absolut!
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 14 Februar 2021, 12:07:40
@Roman
Ich staune, was man alles timern kann.
Eier, Brötchen, Standard, Nudel, Kartoffel, Käse, Hähnchen, Kuchen, Pizza und der Slot füllt sich weiter. Jetzt weiß ich erst zu schätzen, was mein Kurzzeitwecker all die Jahre geleistet hat...
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 15 Februar 2021, 15:42:50
Hat jemand von euch die Rhasspy Mobile App (Android) am laufen incl. Hotword?
Ich komm da leider nicht weiter...
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 15 Februar 2021, 17:49:03
@davedeluxe
Ja, das geht, wenn bei der Basis auf die Spracherkennung verzichtest. Handy in alle Satellites siteIds eintragen.
UDP Audio (Input) 192.168.100.1:12203:Handy
Satellite siteIds: Handy

Und beim Handy:Enable MQTT an
Host 192.168.100.1
Port 1883
Username wer
Password wiso
SiteId Handy
Silence Detection an - Rest aus
Wake word an
UDP
192.168.100.1:12203

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: Roman am 15 Februar 2021, 23:05:35
Zitat von: JensS am 14 Februar 2021, 12:07:40
@Roman
Ich staune, was man alles timern kann.
Eier, Brötchen, Standard, Nudel, Kartoffel, Käse, Hähnchen, Kuchen, Pizza und der Slot füllt sich weiter. Jetzt weiß ich erst zu schätzen, was mein Kurzzeitwecker all die Jahre geleistet hat...

Hi JensS,

ja, Timer dürften bei uns mindestens die Hälfte der Sprachkommandos ausmachen. Lichter, Rollos usw. sind zwar nett, aber zum großen Teil anderweitig automatisiert. Erhöht den WAF auch um einiges. :)

Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 16 Februar 2021, 08:46:02
Zitat von: JensS am 15 Februar 2021, 17:49:03
@davedeluxe
Ja, das geht, wenn bei der Basis auf die Spracherkennung verzichtest. Handy in alle Satellites siteIds eintragen.
UDP Audio (Input) 192.168.100.1:12203:Handy
Satellite siteIds: Handy

Und beim Handy:Enable MQTT an
Host 192.168.100.1
Port 1883
Username wer
Password wiso
SiteId Handy
Silence Detection an - Rest aus
Wake word an
UDP
192.168.100.1:12203

Gruß Jens

Hi,
danke für die Infos aber was mache ich wenn ich den integrierten MQTT nutze bei dem ich ja weder user nach passwort kenne/habe?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 16 Februar 2021, 08:49:28
Keinen Benutzernamen und Passwort eintragen?
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 16 Februar 2021, 08:53:26
Zitat von: drhirn am 16 Februar 2021, 08:49:28
Keinen Benutzernamen und Passwort eintragen?

Mag er nicht  :-\
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 16 Februar 2021, 10:57:16
Zitat von: JensS am 15 Februar 2021, 17:49:03
@davedeluxe
Ja, das geht, wenn bei der Basis auf die Spracherkennung verzichtest. Handy in alle Satellites siteIds eintragen.
UDP Audio (Input) 192.168.100.1:12203:Handy
Satellite siteIds: Handy

Und beim Handy:Enable MQTT an
Host 192.168.100.1
Port 1883
Username wer
Password wiso
SiteId Handy
Silence Detection an - Rest aus
Wake word an
UDP
192.168.100.1:12203

Gruß Jens
Okay ich bin einen Schritt weiter:
user:user
pass:pass


Leider verstehe ich den Rest nicht...
Am Master habe ich es lt. der Anleitung von haxxor eingerichtet, da Rhasspy incl. MQTT per Docker läuft:
Port freigegeben: -p 20000:20000/udp
Es ist das Wakeword per Porcupine aktiviert:
UDP audio: 172.17.0.2:20000:honor20
Satellite siteIDs: honor20

Muss da noch etwas anderes aktiviert oder eingetragen werden? Audio Recording ist deaktiviert.
Bei den Satelliten, wo muss ich alle Satelliten eintragen?

Wenn ich das Hotword sage sehe ich schon das ich beim MQTT Server etwas tut:
{"modelId": "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/pvporcupine/resources/keyword_files/linux/jarvis_linux.ppn", "modelVersion": "", "modelType": "personal", "currentSensitivity": 0.5, "siteId": "honor20", "sessionId": null, "sendAudioCaptured": null, "lang": null}
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 16 Februar 2021, 12:08:34
UDP audio: 0.0.0.0:20000:honor20 sollte funktionieren. Mit "Satellites siteIds" meinte ich, dass honor20 bei der Basis in alle Dienste unter "Satellites siteIds" zugefügt werden soll. Das hast Du bestimmt schon gemacht.

p.s. Start wake word wäre natürlich auch eine Option.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 16 Februar 2021, 15:02:46
@drhirn
Für die Nutzung eigener Intents wäre die Übergabe von $hash super.
Bitte füge in RHASSPY_handleCustomIntent $hash an den Intent-Aufruf zu.            # Sub aus dem Custom Intent aufrufen
            eval {
                Log3($hash->{NAME}, 5, "Calling sub: $subName");

                no strict 'refs';
                $response = $subName->(@params, $hash);

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 16 Februar 2021, 18:22:12
Zitat von: JensS am 16 Februar 2021, 15:02:46
Bitte füge in RHASSPY_handleCustomIntent $hash an den Intent-Aufruf zu.

Erledigt. Aber jetzt müssen wir halt alle wahrscheinlich unsere Custom Intents anpassen, oder?

Ich fände es übrigens super, wenn du so Sachen einfach in einen GitHub-Fork machen würdest. Dann müsste ich nur ein Knöpfen drücken um das zu mergen. Und könnte es v.a. nicht vergessen ;).
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 16 Februar 2021, 18:24:33
Zitat von: drhirn am 16 Februar 2021, 18:22:12
Erledigt. Aber jetzt müssen wir halt alle wahrscheinlich unsere Custom Intents anpassen, oder?

Ich fände es übrigens super, wenn du so Sachen einfach in einen GitHub-Fork machen würdest. Dann müsste ich nur ein Knöpfen drücken um das zu mergen. Und könnte es v.a. nicht vergessen ;).

Ich frag einfach mal für die Nachwelt :)
Was bewirkt das?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 16 Februar 2021, 18:34:12
@drhirn
Danke, sieht gut aus. Da $hash am Ende steht, müssen keine Intents angepasst werden, können aber erweitert werden. Mit Github kenn ich mich nicht wirklich aus - würde die Möglichkeit aber begrüßen.
Wie kann man dort zusammen eine Datei bearbeiten? Oder gibt es dann ein extra Branch?

@davedeluxe
Dadurch kann man auf die Eigenschaften des Rhasspy-Devices zugreifen (z.B auf dessen Namen) und braucht diesen dann nicht in einem übernommenen CustomIntend anpassen. Wahrscheinlich werden eh viele das Teil "Rhasspy" nennen aber sicher ist sicher.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 16 Februar 2021, 18:39:12
Zitat von: JensS am 16 Februar 2021, 18:34:12
Wie kann man dort zusammen eine Datei bearbeiten? Oder gibt es dann ein extra Branch?

Ich kenn mich da leider auch nicht wirklich aus. Du kannst rechts oben mit der Schaltfläche einen eigenen "Fork" erstellen. In dem kannst du dann rumfuhrwerken, wie du willst. Und dann einen Push Request machen, wenn du das in "mein" GitHub eingefügt haben möchtest. Oder so.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 16 Februar 2021, 18:53:19
Ok, ich würde gern die mute-Funktion mit einbauen. Geht das für dich i.O.?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 16 Februar 2021, 19:06:58
Klar, lass dich nicht aufhalten
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 16 Februar 2021, 19:08:18
Ok - und nu?  ;)

edit: Klasse, ging ja schnell!
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 17 Februar 2021, 00:48:34
Hallo,

tolle Arbeit !
mit Docker - Container für RHASSPY & MARRY TTS funktioniert das wunderbar.

Eine Frage. Kann man den Befehl "Ein" auch aufnehmen ?
Bisher scheint nur "An" zu funktionieren.

Beim Ausschalten scheint "Aus" wie "Ab" (schalten) zu funktionieren.

Gruß Jörg

PS: Bei *mazon gibt es Witze. Da stehen meine Kinder drauf !
Ich hatte das (mit meinen rudimentären Perl-Kenntissen) in die 10_RHASSPY.PM gepackt.
Beim letzen Restore ist es aktuell nicht mehr drin, und 100 Witze in der 10_RHASSPY.PM ist keine sonderlich vernüftige Lösung.
Würde mich über einen bersseren Ansatz freuen. A la textdatei o.ä. ggf. auch nach Fritzchen, Chuck Norris, Blondienen -Witzen in der Anfrage.


..die Funktionen zu HUE & Musiksteuerung (bei mir Soundtouch von BOSE) habe ich noch nicht kompett implementiert.
Aktuell nur An / Aus.

Nochmals Gruß  Jörg

Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 17 Februar 2021, 07:59:32
Ich hab da einen Slot "OnOffValue"

(an|einschalten|ein|anschalten|aktiviere|aktivieren|anmachen|schließe|schließen|runter|zu|raus|ausfahren|rausfahren|läuft|rennt):an
(aus|ausschalten|ab|abschalten|deaktiviere|deaktivieren|ausmachen|öffne|öffnen|rauf|auf|rauf|rein|einfahren|reinfahren):aus

da funktioniert das mit "ein" schon.

Der wird dann z.B. so eingebunden:

[de.fhem:SetOnOff]
\[schalte|schalt] [(die | das | den)] $de.fhem.Device{Device} [$de.fhem.Room{Room}] $OnOffValue{Value}


Was hast du für ein Wakeword genommen?
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 17 Februar 2021, 10:19:00
Zitat von: JensS am 16 Februar 2021, 18:53:19
Ok, ich würde gern die mute-Funktion mit einbauen. Geht das für dich i.O.?

Hi, kannst du kurz beschreiben wie es funktioniert?
Mir fehlt es hier etwas an Dokumentation oder ich suche an der falschen Stelle :)

Des Weiteren würde mich interessieren ob ich Updates im Repo in das normale FHEM Update einbauen kann ala add update *.txt

Grüße, Dave
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 17 Februar 2021, 15:30:45
So, ACHTUNG!!!
Bevor ihr noch irgendwas mit dem Modul macht, macht bitte ein Backup eures Rhasspy-Profiles.

Mir hat's gerade die sentences.ini überschrieben. Aber ich weiß nicht, warum. Muss irgendeine Änderung in den letzten Tagen gewesen sein. Und ist wahrscheinlich passiert, als ich ein set Rhasspy udpateSlots gemacht habe.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 17 Februar 2021, 16:54:14
AttributeError: 'NoneType' object has no attribute 'items'
Kann ich bestätigen. Du hast
        header     => "Content-Type: application/json",
aus "RHASSPY_sendToApi" entfernt. Nun wird's in der API falsch erkannt.
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 17 Februar 2021, 17:16:54
Hui, gut gesehen!

Fieserweise funktionieren meine Aufrufe mit cURL auch nicht. Das hat die Ursachenforschung etwas schwer gemacht.

Danke!
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 17 Februar 2021, 17:19:57
@davedeluxe
sentences.ini:[de.fhem:mute]
Gute Nacht

[de.fhem:unmute]
Guten Morgen


Das mute bewirkt, das Rhasspy solange auf keine Anweisungen reagiert, bis man "Guten Morgen" sagt.
Der Hintergrund ist, dass sich Rhasspy manchmal ungefragt in Gespräche einmischt.

@drhirn
Gut, wenn es wieder ok ist.
Was denkst Du über die Verteilung per FHEM-update? Auch eine WIKI-Seite könnte ich mir vorstellen.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 17 Februar 2021, 17:24:27
Zitat von: JensS am 17 Februar 2021, 17:19:57
Was denkst Du über die Verteilung per FHEM-update? Auch eine WIKI-Seite könnte ich mir vorstellen.

Das würde vorraussetzen:

1. Schönen und richtigen Code nach den geltenden FHEM-Regeln
2. Jemand, der Support/Weiterentwicklung des Moduls übernimmt

Den ersten Punkt erfüllen wir nicht. Den zweiten will ich nicht übernehmen.

Mal ganz abgesehen davon, dass ich RHASSPY noch nicht als praxistauglich ansehe.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 17 Februar 2021, 17:35:59
@drhirn
Nun stell Dein Licht mal nicht unter den Scheffel.
Rhasspy funktioniert gut und zuverlässig. Auch die Entwicklung kommt Schritt für Schritt voran. Die Implementierung von "play" finde ich z.B. super. Aber klar, es ist eine große Verpflichtung.

@Jörg
Woher hast Du die Witze. Ich suche schon eine Weile nach einer Datenbank, die man per JSON o.ä. anzapfen kann.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 17 Februar 2021, 17:38:34
Zitat von: JensS am 17 Februar 2021, 17:35:59Nun stell Dein Licht mal nicht unter den Scheffel.

Da geht's eher um Zeit, die man haben muss.

Zitat
Rhasspy funktioniert gut und zuverlässig. Auch die Entwicklung kommt Schritt für Schritt voran.

Ich stecke noch immer mit dem Wakeword. Hört mich nicht. Schon gar nicht, wenn daneben Musik läuft. Auf den Fernseher reagiert Rhasspy aber sekündlich. Und macht dann irgendwas. Meistens den Fernseher ausschalten :D
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 17 Februar 2021, 17:44:55
Rhasspy denkt eben an Dich - zuviel Fernsehen ist ungesund.  ;)
Kannst du bitte Zeile 792     elsif ($topic =~ qr/^hermes\/intent\/.*:/ and $Mute_Wert ne 1) { ändern?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 17 Februar 2021, 17:46:51
Logisch.
Kannst du die Funktion noch irgendwie dokumentieren?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 17 Februar 2021, 17:49:57
Mein Ausländisch ist super schlecht. Daher auch die deutschen Variablen...
Kann ich es deutsch reinschreiben und Du übersetzt oder soll ich den Google-Übersetzer nehmen?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 17 Februar 2021, 17:51:23
Hehe

Schreib's hier her. Ich übernehm's dann und übersetze.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 17 Februar 2021, 17:56:01
sentences.ini:[de.fhem:mute]
Gute Nacht

[de.fhem:unmute]
Guten Morgen


Das mute bewirkt, das Rhasspy solange auf keine Anweisungen reagiert, bis man "Guten Morgen" sagt.
Der Hintergrund ist, dass sich Rhasspy manchmal ungefragt in Gespräche einmischt.

Meinst du sowas oder ein Kommentar im Modul?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 17 Februar 2021, 18:04:36
Passt schon.

Funktioniert bei mir allerdings nicht. Das Reading wird gesetzt, Rhasspy hört aber immer noch auf Befehle und führt diese aus.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 17 Februar 2021, 18:26:14
Du musst ein Update machen.  8)
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 17 Februar 2021, 18:34:11
Kein blöder Hinweis. Hatte ich zwar gemacht, aber ein Reload des Moduls vergessen. Danke.
Piepsen tut's halt immer noch. Aber das war klar. Sonst müsste man das Zuhören deaktivieren. Aber dann, wie gesagt, müsste man halt von wo anders wieder einschalten.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 17 Februar 2021, 18:43:23
Achja, ich habe die Piepser in meiner Rhasspy-Config rausgenommen, da ich die Signalisierung über die LEDs mache.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 17 Februar 2021, 21:21:56
Zitat von: JensS am 17 Februar 2021, 17:35:59
@drhirn
Nun stell Dein Licht mal nicht unter den Scheffel.
Rhasspy funktioniert gut und zuverlässig. Auch die Entwicklung kommt Schritt für Schritt voran. Die Implementierung von "play" finde ich z.B. super. Aber klar, es ist eine große Verpflichtung.

@Jörg
Woher hast Du die Witze. Ich suche schon eine Weile nach einer Datenbank, die man per JSON o.ä. anzapfen kann.

Gruß Jens


Hallo Jens,

die Witze habe ich selbst kurzfristig zusammen gestellt.
Habe die Date mal mit angefügt. 8)

Gruß Jörg
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 17 Februar 2021, 21:36:47
Zitat von: drhirn am 17 Februar 2021, 07:59:32
Ich hab da einen Slot "OnOffValue"

(an|einschalten|ein|anschalten|aktiviere|aktivieren|anmachen|schließe|schließen|runter|zu|raus|ausfahren|rausfahren|läuft|rennt):an
(aus|ausschalten|ab|abschalten|deaktiviere|deaktivieren|ausmachen|öffne|öffnen|rauf|auf|rauf|rein|einfahren|reinfahren):aus

da funktioniert das mit "ein" schon.

Der wird dann z.B. so eingebunden:

[de.fhem:SetOnOff]
\[schalte|schalt] [(die | das | den)] $de.fhem.Device{Device} [$de.fhem.Room{Room}] $OnOffValue{Value}


Was hast du für ein Wakeword genommen?

Hallo DrHirn,

Super, Vielen Dank.

Hat jetzt 1h gedauert bis ich das mit dem Slot gerafft habe, hab's dann doch gefunden.
Teste es nun.
Gibt es sonst noch Optimierungen wozu man Slots nutzen kann ?
Kann man eigentlich eine Interaktion hinbekommen ?
Mit Rückfrage von RHASSPY wenn etwas ungenau spezifiert wurde ?
z.B Wie wird das Wetter ?  Und erhält dann "Wann oder Wo ? " als Rückfrage.


Als Wake Word: Script: Snowboy & snowboy.umdl   - Wieso fragst Du? Selber habe ich noch kein Eigenes kreiert. Die alte Webseite unter ..snipe.ai ist weg. (Dazu gibt es aber einen docker-container. Den habe ich aber noch nicht probiert)

Gruß Jörg
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 18 Februar 2021, 07:49:23
Natürlich gibt's noch weiteres Optimierungs-Potential. Am besten hier nachsehen: https://rhasspy.readthedocs.io/en/latest/training/

Interaktionen sind mit dem Modul (noch) nicht möglich. Theoretisch geht das aber aber mit dem "Dialogue Manager": https://rhasspy.readthedocs.io/en/latest/reference/#dialogue-manager

Vergiss Snips. Das ist Geschichte. Deswegen gibt's ja RHASSPY ;).

Bzgl. Wakeword habe ich nur gefragt, weil ich noch keine optimale Lösung gefunden habe.
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 18 Februar 2021, 10:23:22
Guten Morgen,

ich habe hier mal ein Case für den Satelliten designed, vielleicht kann es ja jemand brauchen:
https://www.thingiverse.com/thing:4766696

Grüße Dave
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 18 Februar 2021, 16:42:17
@davedeluxe
Zitat von: davedeluxe am 18 Februar 2021, 10:23:22
ich habe hier mal ein Case für den Satelliten designed, vielleicht kann es ja jemand brauchen:
https://www.thingiverse.com/thing:4766696

Der Riemen ist aufgelegt und es orgelt...

Danke fürs Teilen!

@drhirn
Zitat von: drhirn am 18 Februar 2021, 07:49:23
Interaktionen sind mit dem Modul (noch) nicht möglich.
...
Vergiss Snips. Das ist Geschichte. Deswegen gibt's ja RHASSPY ;).
In der Geschichte von Snips gab es doch so eine Funktion - die manchmal sehr genervt hat.
Aktuell versuche ich eine Rückfrage anzufordern, wenn ein Gerät nicht genau zugeordnet werden kann. Wenn die Anweisung "Radio an" kommt, mehrere Radios in verschiedenen Räumen existieren aber nicht in dem Raum, von woaus gesprochen wurde. Ist ein wenig wirr - oder?

@Treibhaus
Deine Witze habe ich auf die Schnelle in einen Intent gebracht. Dazu muss die Datei unter /opt/fhem/cache/Witze_erzaehlen.txt gespeichert werden und die Rechte mit chown fhem:dialout /opt/fhem/cache/Witze_erzaehlen.txtangepasst werden.
Zu rhasspyIntents die ZeileWitze=Witze()zugügen und in sentences.ini:[de.fhem:Witze]
erzähle einen Witz
einfügen.
99_myUtils.pm:sub Witze(){
my $filename = '/opt/fhem/cache/Witze_erzaehlen.txt';
open(FH, "<", $filename) or die "Fehler beim oeffnen von $filename";
srand;
rand($.) < 1 && ($line = $_) while<FH>;
close(FH);
$line =~ m/"(.*?)"/;
$line = $1;
return $line;
}
Ist quick & dirty...

Gruß Jens

p.s. Wenn ich rausfinde, wie man speicherschonend die Zeilen zählen kann und nur eine bestimmte Zeile ausliest, ändere ich den Code hier.
p.p.s. ... ist geändert.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 18 Februar 2021, 17:46:48
Ich war so frei und hab die "Mute" Geschichte von Jens mal in einen eigenen Intent gepackt. Ist eine neue Branch (testing) auf GitHub. Man möge bitte berichten, ob das auch bei euch funktioniert.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 19 Februar 2021, 20:18:08
Zitat von: JensS am 18 Februar 2021, 16:42:17

@Treibhaus
Deine Witze habe ich auf die Schnelle in einen Intent gebracht. Dazu muss die Datei unter /opt/fhem/cache/Witze_erzaehlen.txt gespeichert werden und die Rechte mit



Hallo Jens,

Danke.  :D
Funktioniert auch wieder.
Die Textdatei = eine Zeile: Ein Witz    (musste geändert werden)

Gruß Jörg
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 19 Februar 2021, 20:45:13
@Treibhaus
Meinst du sowas?return "Ein Witz - ".$Witze_array[$Zufall];Gruß jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 19 Februar 2021, 20:45:58
Hallo,

aktuell läuft mein Master auf einem Rasp3 + USB Jabra 510 wunderbar.
Wake-Word : Script: Snowboy & Snowbox.umdl
Seit ca. 1 Woche versuche ich abwechselnd den ReSpeaker_Core_v2.0  | ReSpeaker 4-Mic Array for Raspberry Pi  gleichfalls über das Rhasspy-Docker-Image zum Laufen zu bekommen.
Diese extra Treiber sind installiert. aplay / arecord funktionieren auch.   

Bei Beiden funktioniert die  Wake-Word-Erkennung gar nicht.

ReSpeaker_Core_v2.0: Funktioniert nach Neustart die Spracherkennung (bei manuellen Wake-Word Start über das Frontend - Wake Up -Funktion) .  Kann ich zig mal wiederholen - Geht.
Spricht man das Wake-Up -Word ein. (ganz dicht am Micro:  Macht der, an dem ReSpeaker_Core_v2.0, angeschlossene Lautsprecher einen riesen Beep und die Spracherkennung nur noch Mist. .... Endet mit einem manuellen Neustart.

ReSpeaker 4-Mic Array for Raspberry Pi:
Ähnliche schlechte Spracherkennung : aber sofort. Tonausgabe über Klinke3,5mm an 8 Ohm Minilautsprecher sehr leise.

Ich würde mich sehr freuen wenn mich jemand mit Ideen unterstützen könnte.


Bei dem ReSpeaker 4-Mic Array for Raspberry Pi könnte ich mir notfalls ein Lösung ohne Docker vorstellen.
Bei dem  ReSpeaker_Core_v2.0 gabe es schon Probleme mit aktueller Software mit dem Debian Image (ich glaube das Aktuellste  war von 2018)

Ansonsten werde ich zu dem Matrix-Micro-HAT wechslen oder mir Jabras510 besorgen (Letztes funktioniert tadellos)

Eigentlich sollte das Ziel Sprachrichtungserkennung sein (bei mehrere Micros) als Optimierung und eine kleinere Bauform.
 

 
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 19 Februar 2021, 20:50:20
Zitat von: JensS am 19 Februar 2021, 20:45:13
@Treibhaus
Meinst du sowas?return "Ein Witz - ".$Witze_array[$Zufall];Gruß jens

Alles Gut.
Es funktioniert.

Das Textformat ist aktuell wie folgt und funktioniert mit deinem Script:

"Was ist braun und ist im Gefängnis? ,,, eine Knastanie , ha ha ha ha!";
"Warum lachst du? ,,,,, Warte ein bisschen. Du riechst es dann !";
"Tritt ein Mann auf einen Keks,,,, Ist nicht lustig !  Findet der Keks auch nicht !";


Gruß Jörg

PS: Das das vorhin im Code] war war ein versehen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 19 Februar 2021, 21:13:05
@Treibhaus
Der ReSpeaker_Core_v2.0 ist bei wieder vorerst in das Schubfach gewandert. Mit einem Distupgrade auf buster bekommt man ihn auf den aktuellen Stand. Mit der Installation von HermesLEDControl bekam ich die 6 Mikros zu laufen. Bei Seeedstudio gibt es keine Unterstützung für buster. Die Lautstärke kann man mit alsamixer gut einstellen.
Das 4-Mic Array würde ich nur am normalen Rpi anschließen. Wird aktuell von Seeedstudio unterstützt. Auch hier sollte alsamixer helfen.
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 19 Februar 2021, 22:45:50
Zitat von: JensS am 19 Februar 2021, 21:13:05
@Treibhaus
Der ReSpeaker_Core_v2.0 ist bei wieder vorerst in das Schubfach gewandert. Mit einem Distupgrade auf buster bekommt man ihn auf den aktuellen Stand. Mit der Installation von HermesLEDControl bekam ich die 6 Mikros zu laufen. Bei Seeedstudio gibt es keine Unterstützung für buster. Die Lautstärke kann man mit alsamixer gut einstellen.
Das 4-Mic Array würde ich nur am normalen Rpi anschließen. Wird aktuell von Seeedstudio unterstützt. Auch hier sollte alsamixer helfen.
Gruß Jens

Hallo Jens,

das 4-Mic Array ist am normalen Rpi angeschlossen.
Ich bezog mich auf 2 unterschiedliche Geräte.
Ich glaube ich mache auch vorerst mit diesem Setup weiter:
1. Schalte den Docker Container ab
2. Installiere RHASSSPY direkt. Eine andere Aufgabe soll es eh' nicht haben.

Gruß Jörg

Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 20 Februar 2021, 10:21:54
***NEUE VERSION***

Im GitHub gibt's eine neue Branch 0.2.0 (https://github.com/drhirn/fhem-rhasspy/tree/0.2.0). Das ist eine neue Version des Moduls, die BetaUser auf den neueren MQTT2_CLIENT angepasst hat. MQTT2_CLIENT braucht im Vergleich zum vorher verwendeten MQTT keine zusätzlichen Perl-Libraries.

Ihr müsst dazu ein MQTT2_CLIENT Device anlegen. Ist im README dokumentiert.

Würdet ihr die bitte gut testen? Ist nicht ganz auszuschließen, dass BetaUser und ich etwas übersehen haben.

Danke!
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 20 Februar 2021, 10:55:26
@drhirn
Kannst du bitte die Definition Schritt für Schritt erläutern.
Habe einen MQTT2_Client angelegt:define Rhasspy_MQTTBridge MQTT2_CLIENT 192.168.100.1:1883
Das Attribut clientOrder kann ich nirgends finden.
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 20 Februar 2021, 10:57:10
Das ist meiner:
defmod rhasspyMQTT2 MQTT2_CLIENT rhasspy:12183
attr rhasspyMQTT2 clientOrder RHASSPY MQTT_GENERIC_BRIDGE MQTT2_DEVICE


Deins stimmt also. FHEM aktuell?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 20 Februar 2021, 11:32:51
@drhirn
Ok, Rhasspy läuft mit der Test-Version.
Allerdings funktioniert die mute-Funktion nicht. Es wird nicht das nötige mute_Reading geschrieben.   READINGS:
     2021-02-20 11:29:44   lastIntentPayload {"Value":"on","input":"Gute on","intent":"setMute","probability":1,"rawInput":"gute nacht","requestType":"voice","sessionId":"c63f1bbb-f84a-4dae-a1b7-ea88628d849b","siteId":"Boden"}
     2021-02-20 11:29:44   lastIntentTopic hermes/intent/de.fhem_setMute
     2021-02-20 11:27:12   listening_Wohnzimmer 0
     2021-02-20 08:52:47   listening_kueche 0
     2021-02-20 07:41:32   listening_schlafzimmer 0
     2021-02-20 08:05:43   listening_wohnzimmer 0
     2021-02-19 19:50:03   mute_wohnzimmer 0
Ist jetzt aber sekundär. SetMute heißt das jetzt...
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 20 Februar 2021, 11:34:58
Ist eh eines da?
Aber mir ist aufgefallen, dass sich FHEMWEB nicht mehr automatisch aktiviert. Muss man immer F5 drücken. Liegt am Modul, ich weiß aber noch nicht, warum.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 20 Februar 2021, 12:58:35
Könnt ihr mal "shortcuts" testen bitte? Bei mir wird der Befehl nur noch vorgelesen. Bei euch auch?

Passiert bei euch nicht
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 20 Februar 2021, 21:15:35
Irgendwie wird mein ResponseOnOff($DEVICE) nicht mehr ausgeführt.
https://forum.fhem.de/index.php/topic,113180.msg1119611.html#msg1119611 (https://forum.fhem.de/index.php/topic,113180.msg1119611.html#msg1119611)
Es dauert lange, bis der Befehl ausgeführt wird. Ein Response findet nicht statt.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 21 Februar 2021, 18:46:41
Es sieht so aus, dass im Response-Mapping keine subs mehr aufgerufen werden - warum auch immer. Wenn ich response={return "Hallo"} schreibe, geht's.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 21 Februar 2021, 19:16:07
Weil die Subs im falschen Kontext aufgerufen werden. Im Log steht
Undefined subroutine &MQTT::RHASSPY::ResponseOnOff called at (eval 232) line 1.

Sollte eigentlich main::ResponseOnOff sein. Oder so.
Ich schau mir das morgen an.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 22 Februar 2021, 09:09:19
Ein Quick&Dirty Work-Around wäre, wenn du die sub einfach in MQTT::RHASSPY::ResponseOnOff umbenennst.

(Nur in der 99_myUtils; das Mapping kann so bleiben)

ODER ((c) BetaUser)

Die 99_myUtils so zu lassen, und das Mapping auf response={::ResponseOnOff($DEVICE)} zu ändern.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 22 Februar 2021, 13:40:07
BetaUser hat das Problem elegant gelöst: https://forum.fhem.de/index.php/topic,118926.msg1134695.html#msg1134695

Ich hab das in der Version 0.2.0 ausgebessert.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 22 Februar 2021, 17:31:36
Danke für die Weiterleitung aber ich habe mich dazu entschlossen, vorerst bei der Version aus meinem Fork zu bleiben.
Erstmal alles in die Luft zu werfen, um es dann hoffentlich richtig zusammen zu setzen ist nicht so mein Ding. Entwicklung bedeutet schrittweise vorzugehen.
Wenn das Modul in einem stabilen Zustand ist und hoffentlich noch deutsch unterstützt, teste ich gern.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 22 Februar 2021, 17:59:22
Naja, andererseits hätte ich ohne dich viele Fehler nicht gefunden. Außer uns beiden testet leider niemand.
Entwickeln tu ich aber sowieso mit der testing-branch. Die 0.2.0 sollte eigentlich eine "stabile Beta" sein.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Cordula am 23 Februar 2021, 11:20:32
Zwei Anmerkungen zum Intent SetTimer. Hier fehlt noch für die Räume die Umlautunterstützung. Dadurch wird z.B. auch das Reading timer_raum nicht auf 0 zurückgesetzt. Als zweites ist mir aufgefallen, dass wenn ich einen Raum angebe, versucht der Timer die Ausgabe auf einer siteId, die dem Raum entspricht. Wenn diese siteId nicht existiert, läuft das Ganze ins Leere. Hier fände ich es besser, dass wenn die siteId nicht existiert, die aufrufende siteId verwendet wird mit dem Zusatz des Raumes. Aber nur ein Vorschlag.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 23 Februar 2021, 13:33:21
Kannst du mir das bitte genauer erklären? Ich weiß nicht genau, was du meinst.
Und die Sache ist die: FHEM kennt die vorhandenen siteIDs nicht.

Ich hab gerade folgenden Satz getestet: "Timer im Bad auf 5 Sekunden"
Die siteId "Bad" gibt's bei mir nicht, einen rhasspyRoom "Bad" auch nicht. Somit wurde der Timer mit der siteId des Satelliten gesetzt, der die Nachricht empfangen hat. "Wohnzimmer" in meinem Fall.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Cordula am 23 Februar 2021, 14:35:06
Beispiel: Timer im Arbeitszimmer auf 30 Sekunden. rhasspyRoom Arbeitszimmer gibt es, aber keine siteId Arbeitszimmer. Timer/Reading wird gesetzt, aber keine Ausgabe am eingebenden Satellit. Hier der passende Logfileintrag: Created timer: defmod timer_Arbeitszimmer at +00:00:30 set Rhasspy speak siteId="Arbeitszimmer" text="taimer abgelaufen";;setreading Rhasspy timer_arbeitszimmer 0    mit der siteId Arbeitszimmer.
Umlaut ist klar oder soll ich das noch genauer erklären.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 23 Februar 2021, 14:40:11
Hehe, nein, Umlaut ist klar. Das ist in meiner Entwicklungsversion schon gelöst. Muss nur noch ordentlich getestet werden.

Und bezüglich siteId hab ich jetzt verstanden, um was genau es geht. Danke!
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 23 Februar 2021, 16:55:26
@drhirn
Zur Prüfung auf eine vorhandene siteId könnte man ein "set Rhasspy fetchSiteIDs" einbauen und z.B. ein Reading für die SetTimer-Abfrage füllen.sub fetchSiteIDs(){
my $RhasspyMaster = AttrVal("Rhasspy","rhasspyMaster",'http://127.0.0.1:12101')."/api/profile";
my $ua = LWP::UserAgent->new();
my $response = $ua->get("$RhasspyMaster");
my $content = $response->content;
my $ref = JSON->new->decode($content);
my $JSONString = encode('cp-1252',$ref->{'dialogue'}{'satellite_site_ids'});
fhem("setreading Rhasspy SatellitesIDs $JSONString");
}

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 23 Februar 2021, 17:01:28
Cool, schau ich mir an!
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 24 Februar 2021, 11:51:56
Hallo drhirn,

da ich deinen Professionalisierungsthread nicht stören will, ich darin aber diesen language-Teil gelesen habe:
Einen Wunsch, keinen Ahnung ob das geht:
Die Mehrsprachigkeit zielt jetzt ja soweit ich das nachvollziehen kann nur auf die Rhasspy-Ebene ab.

Was ich toll fände, wäre wenn es Mehrsprachigkeit auch auf der FHEM-Ebene gäbe:
Zwei Rhasspy-Devices anlegen, welche sich mit zwei unterschiedlichen Rhasspy-Mastern verbinden, sollte ja kein Problem sein.
Aber das bewusste Trainieren von wenigen Wörtern , um die Schwierigkeiten der Speech2Text-Fähigkeit zu erleichtern, wird dann durch nur ein Attribut rhasspyRoom /rhasspyName aufgeweicht. Beide Master erlenen dann "Stehlampe" obwohl der Engländer damit wenig anfangen kann. "Rhasspy weiß nicht, wie man folgenden Worte ausspricht...".

Könnte man also in Abhängigkeit einer Sprachdefinition in der DEF auch unterschiedliche, mehrere Raumattribute zur Verfügung stellen?
rhasspyRoomDE, rhasspyRoomEN

(Ich hatte zu Beginn des Threads schon einmal gewünscht, konnte das aber so nicht in der Überarbeitung sehen, drum Wünsch ichs noch einmal - sonst müsste ich das Modul wohl immer forken und sozusagen ein zweites Modul jedes mal per Suchen & Ersetzen daraus generieren).

(Bei uns hat der Wechselunterricht angefangen so dass ich endlich wieder Zeit für so etwas habe).
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 24 Februar 2021, 12:16:37
Hatte deinen Wunsch noch im Hinterkopf.

Du wirst um zwei 10_RHASSPY Devices nicht herum kommen.
Stört Rhasspy ja nicht, wenn da "fremdsprachige" Wörter in den Slots sind. Kennt halt die Wörter einfach nicht. Es ist nicht schön, das gebe ich zu. Dafür musst du bei den FHEM-Devices nicht mehrere Attribute befüllen.

Aber ich werde es weiter im Hinterkopf behalten, eine Lösung kann nicht das Drama sein.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 24 Februar 2021, 13:04:15
In einem anderen Thread taucht gerade die Frage nach Implementation von genericDeviceType auf.
Dieses Attribut nutze ich für einige eigene Intents.
99_myUtils.pmsub GetAllOff($$){
my ($Raum,$Typ) = @_;
if ( !defined $Raum || length($Raum) == 0 ) {$Raum = 'Haus'};
my $Ansprache;
if ($Typ eq "light"){$Ansprache = "Es sind alle Lampen im $Raum ausgeschaltet"}else{$Ansprache = "Es sind alle Fenster im $Raum geschlossen"};
my $Response = "";
my @Lampen = split /\n/,fhem("list .*:FILTER=genericDeviceType=$Typ");
for (my $w=0;$w<@Lampen;$w++){
if ( lc(InternalVal($Lampen[$w],'STATE','Fehler')) ne "off"
and lc(InternalVal($Lampen[$w],'STATE','Fehler')) ne "closed"
and InternalVal($Lampen[$w],'STATE','Fehler') ne "0"
and (AttrVal($Lampen[$w],'rhasspyRoom','Haus') eq $Raum or $Raum eq 'Haus')){
my $Name = (split(/,/,AttrVal($Lampen[$w],"rhasspyName","Fehler")))[0];
$Response = $Response." $Name im ".AttrVal($Lampen[$w],'rhasspyRoom','Haus')." - ";};
};
if ($Response ne "" and $Typ eq "light"){$Ansprache = "Folgende Lampen sind eingeschaltet - "}
elsif ($Response ne "" and $Typ eq "window"){$Ansprache = "Folgende Fenster sind geöffnet - "};
return $Ansprache.$Response;
}

sub SetAllOff($$){
my ($Raum,$Typ) = @_;
if ( !defined $Raum || length($Raum) == 0 ) {$Raum = 'Haus'};
my $Ansprache;
if ($Typ eq "light"){$Ansprache = "Es sind bereits alle Lampen im $Raum ausgeschaltet"}else{$Ansprache = "Es sind bereits alle Rollos im $Raum geschlossen"};
my $Response = "";
my @Lampen = split /\n/,fhem("list .*:FILTER=genericDeviceType=$Typ");
for (my $w=0;$w<@Lampen;$w++){
if ( lc(InternalVal($Lampen[$w],'STATE','Fehler')) ne "off"
and lc(InternalVal($Lampen[$w],'STATE','Fehler')) ne "closed"
and InternalVal($Lampen[$w],'STATE','Fehler') ne "0"
and (AttrVal($Lampen[$w],'rhasspyRoom','Haus') eq $Raum or $Raum eq 'Haus')){
my $Name = (split(/,/,AttrVal($Lampen[$w],"rhasspyName","Fehler")))[0];
$Response = $Response." $Name im ".AttrVal($Lampen[$w],'rhasspyRoom','Haus')." - ";
fhem("set $Lampen[$w] off") if $Typ eq "light";
fhem("set $Lampen[$w] closed") if $Typ eq "blind";
};
};
if ($Response ne "" and $Typ eq "light"){$Ansprache = "Folgende Lampen wurden ausgeschaltet - "}
elsif ($Response ne "" and $Typ eq "window"){$Ansprache = "Folgende werden geschlossen - "};
return $Ansprache.$Response;
}

sub SetAllOn($$){
my ($Raum,$Typ) = @_;
if ( !defined $Raum || length($Raum) == 0 ) {$Raum = 'Haus'};
my $Ansprache;
if ($Typ eq "light"){$Ansprache = "Es sind bereits alle Lampen im $Raum eingeschaltet"}else{$Ansprache = "Es sind bereits alle Rollos im $Raum geöffnet"};
my $Response = "";
my @Lampen = split /\n/,fhem("list .*:FILTER=genericDeviceType=$Typ");
for (my $w=0;$w<@Lampen;$w++){
if ( lc(InternalVal($Lampen[$w],'STATE','Fehler')) ne "on"
and lc(InternalVal($Lampen[$w],'STATE','Fehler')) ne "open"
and InternalVal($Lampen[$w],'STATE','Fehler') ne "1"
and (AttrVal($Lampen[$w],'rhasspyRoom','Haus') eq $Raum or $Raum eq 'Haus')){
my $Name = (split(/,/,AttrVal($Lampen[$w],"rhasspyName","Fehler")))[0];
$Response = $Response." $Name im ".AttrVal($Lampen[$w],'rhasspyRoom','Haus')." - ";
fhem("set $Lampen[$w] on") if $Typ eq "light";
fhem("set $Lampen[$w] open") if $Typ eq "blind";
};
};
if ($Response ne "" and $Typ eq "light"){$Ansprache = "Folgende Lampen wurden eingeschaltet - "}
elsif ($Response ne "" and $Typ eq "window"){$Ansprache = "Folgende werden geöffnet - "};
return $Ansprache.$Response;
}

sentences.ini:[de.fhem:GetAllOff]
sind alle ((Lichter|Lampen){Type:light}|(Fenster){Type:window}) [im (Haus | $de.fhem.Room){Room}] (gelöscht|aus|an|zu|geschlossen)

[de.fhem:SetAllOff]
(schließe|lösche) alle ((Lichter|Lampen){Type:light}|(Rollos){Type:blind}) [im (Haus | $de.fhem.Room){Room}]

[de.fhem:SetAllOn]
(schalte|öffne) alle ((Lichter|Lampen){Type:light}|(Rollos){Type:blind}) [im (Haus | $de.fhem.Room){Room}] [an]

rhasspyIntents:GetAllOff=GetAllOff(Room,Type)
SetAllOff=SetAllOff(Room,Type)
SetAllOn=SetAllOn(Room,Type)
Gruß Jens

p.s. list .*:FILTER=genericDeviceType=$Typ hat den Nachteil, dass ich mindestens zwei Devices des jeweiligen Types brauche aber ist halt mal wieder "quick & dirty".
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 24 Februar 2021, 15:15:31
Wär's nicht einfacher, ein DOIF/structure/notify mit einem Sprachbefehl zu steuern? Dann bräuchtest die 99_myUtils.pm nicht extra.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 24 Februar 2021, 15:49:52
@drhirn
Alle Rhasspy-subs habe eh in einer extra 99_myRhasspyUtils.pm. Ist über die Zeit gewachsen...

@Beta-User
Die Snps-Version lief gut und drhirn hat es auch gut angefangen. Natürlich hat sich die Welt inzischen weitergedreht und einiges muss angepasst werden. Nur so vieles mit einmal war mir dann doch zu heftig.
Die sub, welche ich in diesem Thread stelle, find ich für mich ganz praktisch. Sie sind natürlich laienhaft geschrieben. Vielleicht hilt es dem Einen oder Anderen - auch nur als Anregung.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 24 Februar 2021, 15:52:42
Ich meinte nur. Vielleicht willst auch außerhalb von Rhasspy mal wissen, ob alle Fenster zu sind. Oder alle Lampen ausschalten, wenn du das Haus verlässt.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 24 Februar 2021, 19:58:33
Zitat von: drhirn am 24 Februar 2021, 15:52:42
Ich meinte nur. Vielleicht willst auch außerhalb von Rhasspy mal wissen, ob alle Fenster zu sind. Oder alle Lampen ausschalten, wenn du das Haus verlässt.
Gute Idee - der Gedanke ist mir tatsächlich noch nicht gekommen. Mittlerweile sind viele Spachanweisungen (auch im Hinblick auf den WAF) in den Alltag eingezogen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 25 Februar 2021, 00:35:56
Hallo JenS, DrHirn,

bei der Tonausgabe benutz Ihr Espeak oder MarryTTS ?
Gibt es etwas Besseres ?
Ich glaube ich würde gerne mal eine online Sprachausgabe kurzfristig testen wollen. (ist nicht was ich will)
Aber könnte die Akzeptanz erhöhen :-)

Gruß jörg
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 25 Februar 2021, 00:46:17
Hallo,

da gibt es die Wikipedia - Erweiterung.....

Bei der habe ich das Problem, das der Begriff wohl nicht erkannt wird.
Scrrenshot als Anhang.
Vielleicht weiss jemand Abhilfe ?

Gruß Jörg
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 25 Februar 2021, 00:51:22
@Treibhaus
Deine Witze habe ich auf die Schnelle in einen Intent gebracht. Dazu muss die Datei unter /opt/fhem/cache/Witze_erzaehlen.txt gespeichert werden und die Rechte mit chown fhem:dialout /opt/fhem/cache/Witze_erzaehlen.txtangepasst werden.
Zu rhasspyIntents die ZeileWitze=Witze()zugügen und in sentences.ini:[de.fhem:Witze]
erzähle einen Witz
einfügen.
99_myUtils.pm:sub Witze(){
my $filename = '/opt/fhem/cache/Witze_erzaehlen.txt';
my @Witze_array = undef;
my $Zeile = 0;
open(FH, '<', $filename) or die $!;
while(<FH>){
   my $Witz = $_ =~ m/"(.*?)"/;
   my $Witz = $1;
   @Witze_array[$Zeile] = $Witz;
   $Zeile++
}
close(FH);
my $Zufall = int(rand($Zeile+1));
return $Witze_array[$Zufall];
}
Ist quick & dirty...

Gruß Jens

p.s. Wenn ich rausfinde, wie man speicherschonend die Zeilen zählen kann und nur eine bestimmte Zeile ausliest, ändere ich den Code hier.



Hallo,

hier dann die passende witze.txt-Datei zum script

Gruß Jörg
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 25 Februar 2021, 09:13:53
Zitat von: drhirn am 24 Februar 2021, 12:16:37
Hatte deinen Wunsch noch im Hinterkopf.

Du wirst um zwei 10_RHASSPY Devices nicht herum kommen.
Stört Rhasspy ja nicht, wenn da "fremdsprachige" Wörter in den Slots sind. Kennt halt die Wörter einfach nicht. Es ist nicht schön, das gebe ich zu. Dafür musst du bei den FHEM-Devices nicht mehrere Attribute befüllen.

Aber ich werde es weiter im Hinterkopf behalten, eine Lösung kann nicht das Drama sein.

Danke.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 25 Februar 2021, 10:30:49
@Treibhaus
Tonausgabe: Da bin ich auf deine Erfahrungen gespannt. Ich nutze aktuell PicoTTS.
Wikipedia: Funktioniert in der Form nur in Zusammenspiel mit "Open transcription mode". Der liefert mir derzeit aber alles mögliche, nur nicht was gesprochen wurde. Rhasspy kennt sonst nur die antrainierten Worte der sentences.ini sowie der Slots. [de.fhem:Wikipedia]
erkläre mir was (Wetter | Wikipedia | ($de.fhem.Device)){Begriff} ist

... erkennt deine z.B. bereits bekannten rhasspyDevices.
Witze: Der ursprüngliche Post ist geändert. https://forum.fhem.de/index.php/topic,113180.msg1133690.html#msg1133690 (https://forum.fhem.de/index.php/topic,113180.msg1133690.html#msg1133690)(Hab mir ein gebrauchtes Kochbuch gekauft...)

Gruß Jens

p.s. Wenn du in deiner Witzedatei auf " und "; verzichtest, wird folgender Teil überflüssig:$line =~ m/"(.*?)"/;
$line = $1;
Eine Online-Witzedatenbank mit JSON-Anbindung wäre schöner.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 25 Februar 2021, 15:33:11
Kurze Umfrage: Verwendet jemand von euch Shortcuts? Und wenn ja, wofür?
Titel: Antw:FHEM und Rhasspy
Beitrag von: Cordula am 25 Februar 2021, 21:50:14
Hab noch nie shortcuts verwendet.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Thargor am 26 Februar 2021, 11:27:46
Zitat von: drhirn am 20 Januar 2021, 16:31:03
Ich hab in der neuesten Version (https://github.com/drhirn/fhem-rhasspy/commit/ab1e82b59ef6d1f903f00006ced61ad18c5cc3d6#diff-a4cf5a0beba85315038ffea3e3c8a8bca5fff8024ffb13c51f05cb1c62bb647b) einen rudimentären Timer eingebaut. Der setzt einfach einen at-Befehl und sagt nach der abgelaufenen Zeit "Timer abgelaufen".

Rhasspy-Sentence wäre z.B.:

[de.fhem:SetTimer]
\[stell|stelle] (taimer|countdown) [im|auf dem|auf der|in der] [$de.fhem.Room{Room}] auf (0..60){Value} (sekunden|minuten|stunden){Unit}


Könnt ihr das mal testen?

Ich bin gerade mal wieder am Rhasspy basteln, habe die neuste Version eingespielt und den Timer in Rhasspy angelegt.
Der Befehl wird auch erkannt, an FHEM gemeldet, es wird auch ein reading in FHEM angelegt und es gibt eine akustische Bestätigung, dass der Timer angelegt wurde - allerdings bekomme ich kein "Timer abgelaufen" zurück. Woran kann das liegen bzw. wie kann ich das Debuggen?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 26 Februar 2021, 12:32:17
Indem du z.B. mal nachschaust, ob ein AT angelegt wurde und was da drinnen steht. Da passiert die ganze "Magie".
Titel: Antw:FHEM und Rhasspy
Beitrag von: Thargor am 26 Februar 2021, 12:59:39
Zitat von: drhirn am 26 Februar 2021, 12:32:17
Indem du z.B. mal nachschaust, ob ein AT angelegt wurde und was da drinnen steht. Da passiert die ganze "Magie".

Vielen Dank für die schnelle Antwort!

Das AT wird angelegt, allerdings wird die SiteID mit dem Raum [$de.fhem.Room{Room}] gefüllt (bei mir Wohnzimmer):
defmod timer_Wohnzimmer at +00:00:10 set rhasspy speak siteId="Wohnzimmer" text="taimer abgelaufen";;setreading rhasspy timer_wohnzimmer 0

Da muss aber die siteID (bei mir "satellite") rein, damit es dort auch abgespielt wird.
Muss ich da noch irgendwas konfigurieren?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 26 Februar 2021, 13:18:18
Welches Gerät - mit welcher siteId - nimmt denn die Sprache entgegen? Dort, wo du reinredest, wird auch die Ausgabe stattfinden. Wenn nicht, könnte es daran liegen, dass Rhasspy noch nicht fertig konfiguriert ist. Die siteIds der Satelliten müssen in der Base in den diversen Settings eingetragen werden.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Thargor am 26 Februar 2021, 13:34:18
Zitat von: drhirn am 26 Februar 2021, 13:18:18
Welches Gerät - mit welcher siteId - nimmt denn die Sprache entgegen? Dort, wo du reinredest, wird auch die Ausgabe stattfinden. Wenn nicht, könnte es daran liegen, dass Rhasspy noch nicht fertig konfiguriert ist. Die siteIds der Satelliten müssen in der Base in den diversen Settings eingetragen werden.

Der Intent kommt in rhasspy mit der korrekten siteid an:   

ZitatlastIntentPayload: {"Room":"Wohnzimmer","Unit":"sekunden","Value":10,"input":"stelle taimer im Wohnzimmer auf 10 sekunden","intent":"SetTimer","probability":1,"rawInput":"stelle taimer im wohnzimmer auf zehn sekunden","requestType":"voice","sessionId":"satellite-snowboy-22ab9da9-64c7-4014-ae30-3e6daecf64d0","siteId":"satellite"}

Aber das AT wird mit der falschen SiteID angelegt ...
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 26 Februar 2021, 13:44:14
Ah, du stellst einen Timer für das Wohnzimmer. Ja, das ist derzeit noch ein Problem. Wurde hier im Thread (https://forum.fhem.de/index.php/topic,113180.msg1134947.html#msg1134947) von Cordula schon angesprochen. Da bin ich dran.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 26 Februar 2021, 19:23:24
@drhirn
Shortcuts nutze ich z.B. zur Steuerung von Geräten, deren Status nicht festlegbar ist.Ton wechseln={TVCodes("E0E0F00F");;return "ok"}In dem Fall ein toggle per IR-send.
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 27 Februar 2021, 16:59:43
Zitat von: JensS am 29 Januar 2021, 18:19:33
Hallo davedeluxe,

zum Vergleich habe ich die Konfigurationen meiner Basis und eines Satelliten angehangen. Vielleicht hilft dir's weiter.

Gruß Jens

Ich will jetzt auch auf ein Master-Satellite-System umsteigen.
Als Satellite habe ich hier ein Pi-Zeros und ReSpeaker2-Hat.

Aus der offiziellen Rhasspy-Anleitung werde ich nicht schlau, daher: Was muss ich da jetzt installieren? Einfach alles und dann gemäß dem Anhang konfigurieren?
Oder kann man ressourcensparender (aber trotzdem einfach) installieren?
Auf einem Zero würde das bedeuten, ich installiere alles auf einem RPi3 da das sonst eewig dauert (Kerneldowngrade!) und schieb die SD-Karte dann in den Zero.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 27 Februar 2021, 18:21:58
@laberlaib
Zero guckst du hier:https://login.owncube.cloud/index.php/s/pdaweKnikZy4NAW (https://login.owncube.cloud/index.php/s/pdaweKnikZy4NAW)
Ist zwar ein paar Tage alt, sollte aber laufen (Zero + Buster + Rhasspy-2.5.8 ).
root:raspberry
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 27 Februar 2021, 20:46:01
Danke, das vereinfacht und beschleunigt die Einrichtung natürlich deutlich.
Runtergeladen.
Aber was läuft da nun genau? Sind da ReSpeaker2-Treiber schon drauf? Ist das die Docker Version?

Und auch nochmal zum Verständis: Was müsste ich nun machen, um das selber zu installieren?
(Jetzt erstmal einen Master auf Proxmox an den Start bringen. Da läuft schon ewig ein Snips drauf, nur zur Sprachausgabe)
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 28 Februar 2021, 08:57:33
@laberlaib
Das Image hat den Treiber und die LED-Ansteuerung drauf sowie eine Rhasspy-Installation ohne Docker.
Zur allg. Installation gibt's reichlich Quellen:
https://forum.fhem.de/index.php/topic,113180.0.html (https://forum.fhem.de/index.php/topic,113180.0.html)
https://rhasspy.readthedocs.io/en/latest/installation/ (https://rhasspy.readthedocs.io/en/latest/installation/)
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 28 Februar 2021, 09:24:48
Danke.
Allgemeine Installation ist kein Problem, das ganze läuft ja bei mir schon. Ich hatte nur im Hinterkopf, dass es mal eine spezielle, abgespeckte Intallation für Satelliten gab.
Aber das scheint ja nicht (mehr?) der Fall zu sein - einfach alles immer druff und dann halt nicht einschalten.

Ich hab jetzt mal meine alte komplettinstallation als Satellite konfigurier und einen Master auf Proxmox installiert. Da ich das alte Rhasspy- und MQTT2-Device in FHEM nicht löschen wollte, erst einmal parallel - da hat mich dann das clientOrder-Attribute geärgert.
Jetzt gehts aber und ich mach mich mal ans Verbinden der Systeme...

Edit: Ich glaube, ich hol mir mal Wiki-Schreibrechte...
Wie viele kleine Dummheiten ich gemacht habe und dafür Zeit verloren habe...
1) Installation auf dem Rasp: Neustart nach update & upgrade vergessen => docker Installation gescheitert.
2) Auf Proxmox erst mit einem Ubuntu 18 ISO versucht => veraltete Lib
3) Das o.g. clientOrder-Attribute welches global gilt
4) Satellite an Master: der MQTT-Server läuft nicht auf 1883 sondern auf 12183

Aber jetzt einfach mal einen Spanischen Master erstellen und rumspielen...
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 28 Februar 2021, 10:53:48
@drhirn
Ist die 0.2.0 oder die testing aktuell stable? Kann man's im Produktiv-System testen?
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 28 Februar 2021, 11:11:55
Stable sind's beide noch nicht. Am ehesten aber die 0.2.0.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 28 Februar 2021, 11:36:34
Zitat von: laberlaib am 27 Februar 2021, 16:59:43
Auf einem Zero würde das bedeuten, ich installiere alles auf einem RPi3 da das sonst eewig dauert (Kerneldowngrade!) und schieb die SD-Karte dann in den Zero.

Nimm das für die ReSpeaker Installation: https://github.com/HinTak/seeed-voicecard
Da brauchst kein Kernel-Downgrade
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 28 Februar 2021, 11:39:33
€: Problem gelöst: Ein Rhasspy-Device muss wohl RHASSPY heißen, s.u.

Also das mit den Satelliten ist ja schon genial: ich änder einfach den MQTT-Server auf den anderen Rhasspy-Master und zack, Sprache umgestellt.
Ob man einen Satelliten auch auf zwei Master je Wakeword umbiegen kann muss ich mal schauen - aber das hta Zeit, die Hardwareramschkiste reicht für n Haufen Satelliten.
ABER
@drhirn: Ich habe ein Problem mit der Benachrichtigung.
Ich nutze 0.2 und habe also 2 MQTT2_DEVICES, eins zu jedem Server.
Beide verbinden, das seh ich auf dem Rhasspyserver
Via Verbose 5 kommt auch im Logfile die Kommunikation an.
Aber es wird nichts ausgelöst - der Intent wird von Rhasspy erkannt und weitergegeben. Aber im Rhasspydevice kommt nichts an.

MQTT2_DEVICES:
entweder mit De oder Es
Zitatdefmod RhasspyMasterEsMQTT2 MQTT2_CLIENT 192.168.2.106:12183
attr RhasspyMasterEsMQTT2 clientOrder RHASSPYMASTERDE RHASSPYMASTERES MQTT_GENERIC_BRIDGE MQTT2_DEVICE
attr RhasspyMasterEsMQTT2 room Rhasspy

RHASSPY: (entweder mit DE oder ES)
Zitatdefmod RHASSPYMASTERDE RHASSPY RhasspyMasterDeMQTT2 Wohnzimmer
attr RHASSPYMASTERDE IODev RhasspyMasterDeMQTT2
attr RHASSPYMASTERDE rhasspyMaster http://192.168.2.104:12101
attr RHASSPYMASTERDE room Rhasspy
attr RHASSPYMASTERDE webCmd trainRhasspy:updateSlots

Training funktioniert, wbei ich den spanischen von Hand anpasse. Insbesondere die Values müssen ja auf "an" und "aus" gemappt werden.

Ich bilde mir ein, dass es funktioniert hatte, als ich noch einen Master mit dem Namen RHASSPY hatte...
(Jetzt beim schreiben glaube ich auch gelesen zu haben, dass der Name noch nicht anders sein darf)
€: den Deutschen in RHASSPY umbenannt und es klappt sogar mit beiden - also der Spanier darf weiterhin RHASSPYMASTERES heißen.

€: Keiner in der Kirche und alle hier am Tippen? Danke für den Tipp mit dem Treiber.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 28 Februar 2021, 11:51:49
Zitat von: laberlaib am 28 Februar 2021, 11:39:33
€: Keiner in der Kirche und alle hier am Tippen?
Kirche 2.x ist heutzutage online.   ;)

@drhirn: Hab die gestrige Version von Beta-User installiert. Läuft alles - bis auf die Shortcuts natürlich. "Ton wechseln" wird nicht ausgeführt. Angeblich erhalte ich eine Fehlermeldung über die Sprachausgabe. Das findet nicht statt.2021.02.28 11:43:22 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionStarted => {"sessionId": "Wohnzimmer-alexa-0675bbe1-92b6-43a7-b15f-8e048f481bd3", "siteId": "Wohnzimmer", "customData": "alexa", "lang": null}
2021.02.28 11:43:22 5: Parsed value: Wohnzimmer-alexa-0675bbe1-92b6-43a7-b15f-8e048f481bd3 for key: sessionId
2021.02.28 11:43:22 5: Parsed value: Wohnzimmer for key: siteId
2021.02.28 11:43:24 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_Shortcuts => {"input": "Ton wechseln", "intent": {"intentName": "de.fhem:Shortcuts", "confidenceScore": 1.0}, "siteId": "Wohnzimmer", "id": null, "slots": [], "sessionId": "Wohnzimmer-alexa-0675bbe1-92b6-43a7-b15f-8e048f481bd3", "customData": null, "asrTokens": [[{"value": "Ton", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 3, "time": null}, {"value": "wechseln", "confidence": 1.0, "rangeStart": 4, "rangeEnd": 12, "time": null}]], "asrConfidence": null, "rawInput": "ton wechseln", "wakewordId": "alexa", "lang": null}
2021.02.28 11:43:24 5: Parsed value: 1 for key: probability
2021.02.28 11:43:24 5: Parsed value: Wohnzimmer-alexa-0675bbe1-92b6-43a7-b15f-8e048f481bd3 for key: sessionId
2021.02.28 11:43:24 5: Parsed value: ton wechseln for key: rawInput
2021.02.28 11:43:24 5: Parsed value: Ton wechseln for key: input
2021.02.28 11:43:24 5: Parsed value: Shortcuts for key: intent
2021.02.28 11:43:24 5: Parsed value: Wohnzimmer for key: siteId
2021.02.28 11:43:24 5: handleIntentShortcuts called with Ton wechseln key
2021.02.28 11:43:24 5: cmd selected: Ich habe dich nicht verstanden
2021.02.28 11:43:52 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionEnded => {"termination": {"reason": "timeout"}, "sessionId": "Wohnzimmer-alexa-0675bbe1-92b6-43a7-b15f-8e048f481bd3", "siteId": "Wohnzimmer", "customData": "alexa"}
2021.02.28 11:43:52 5: Parsed value: Wohnzimmer for key: siteId
2021.02.28 11:43:52 5: Parsed value: Wohnzimmer-alexa-0675bbe1-92b6-43a7-b15f-8e048f481bd3 for key: sessionId
Gruß Jens

p.s. Aleaxa versteht mich nicht mehr.
SetMute - Reading wird nicht gesetzt und ich erhalte "Ich habe dich nicht verstanden."
Der Fehler saß mal wieder vorm Bildschirm. Hatte in sentences.ini "VALUE" statt "Value" geschrieben...2021.02.28 12:07:27 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionStarted => {"sessionId": "Wohnzimmer-alexa-3434978d-b496-42e5-8bd6-e8444a6bdddc", "siteId": "Wohnzimmer", "customData": "alexa", "lang": null}
2021.02.28 12:07:27 5: Parsed value: Wohnzimmer-alexa-3434978d-b496-42e5-8bd6-e8444a6bdddc for key: sessionId
2021.02.28 12:07:27 5: Parsed value: Wohnzimmer for key: siteId
2021.02.28 12:07:30 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_SetMute => {"input": "Gute on", "intent": {"intentName": "de.fhem:SetMute", "confidenceScore": 1.0}, "siteId": "Wohnzimmer", "id": null, "slots": [{"entity": "VALUE", "value": {"kind": "Unknown", "value": "on"}, "slotName": "VALUE", "rawValue": "nacht", "confidence": 1.0, "range": {"start": 5, "end": 7, "rawStart": 5, "rawEnd": 10}}], "sessionId": "Wohnzimmer-alexa-3434978d-b496-42e5-8bd6-e8444a6bdddc", "customData": null, "asrTokens": [[{"value": "Gute", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 4, "time": null}, {"value": "on", "confidence": 1.0, "rangeStart": 5, "rangeEnd": 7, "time": null}]], "asrConfidence": null, "rawInput": "gute nacht", "wakewordId": "alexa", "lang": null}
2021.02.28 12:07:30 5: Parsed value: 1 for key: probability
2021.02.28 12:07:30 5: Parsed value: Gute on for key: input
2021.02.28 12:07:30 5: Parsed value: SetMute for key: intent
2021.02.28 12:07:30 5: Parsed value: Wohnzimmer for key: siteId
2021.02.28 12:07:30 5: Parsed value: Wohnzimmer-alexa-3434978d-b496-42e5-8bd6-e8444a6bdddc for key: sessionId
2021.02.28 12:07:30 5: Parsed value: gute nacht for key: rawInput
2021.02.28 12:07:30 5: Parsed value: on for key: VALUE
2021.02.28 12:07:30 5: cmd selected: Ich habe dich nicht verstanden
2021.02.28 12:07:30 5: handleIntentSetMute called
2021.02.28 12:07:30 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/endSession => {"sessionId":"Wohnzimmer-alexa-3434978d-b496-42e5-8bd6-e8444a6bdddc","siteId":"Wohnzimmer","text":"Ich habe dich nicht verstanden"}
2021.02.28 12:07:30 5: Parsed value: Wohnzimmer-alexa-3434978d-b496-42e5-8bd6-e8444a6bdddc for key: sessionId
2021.02.28 12:07:30 5: Parsed value: Wohnzimmer for key: siteId
2021.02.28 12:07:32 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionEnded => {"termination": {"reason": "nominal"}, "sessionId": "Wohnzimmer-alexa-3434978d-b496-42e5-8bd6-e8444a6bdddc", "siteId": "Wohnzimmer", "customData": "alexa"}
2021.02.28 12:07:32 5: Parsed value: Wohnzimmer for key: siteId
2021.02.28 12:07:32 5: Parsed value: Wohnzimmer-alexa-3434978d-b496-42e5-8bd6-e8444a6bdddc for key: sessionId


@Beta-User:
Hab noch ein wenig probiert...Internals:
   DEF        Rhasspy_MQTT Wohnzimmer
   FUUID      5f959ded-f33f-9d8f-5523-cd4ee245ab39f7f6
   IODev      rhasspyMQTT2
   LASTInputDev rhasspyMQTT2
   MODULE_VERSION 0.2
   MSGCNT     123
   NAME       Rhasspy
   NOTIFYDEV  Rhasspy_MQTT Wohnzimmer
   NR         311
   STATE      hermes/intent/de.fhem_GetTime
   TYPE       RHASSPY
   rhasspyMQTT2_MSGCNT 123
   rhasspyMQTT2_TIME 2021-02-28 12:21:20
   OLDREADINGS:
   READINGS:
     2021-02-28 12:21:17   lastIntentPayload {"input":"Ton wechseln","intent":"Shortcuts","probability":1,"rawInput":"ton wechseln","requestType":"voice","sessionId":"Wohnzimmer-alexa-514cac6c-e2bf-4682-9934-29658e094b98","siteId":"Wohnzimmer"}
     2021-02-28 12:21:17   lastIntentTopic hermes/intent/de.fhem_Shortcuts
     2021-02-28 12:21:20   listening_Wohnzimmer 0
     2021-02-28 12:21:17   responseType    voice
     2021-02-28 12:02:31   siteIds         Boden,Schlafzimmer,Wohnzimmer,Küche,handy
     2021-02-28 11:30:54   test            Zamioculcas zamiifolia, selten gebrauchte Trivialnamen sind Glücksfeder, Kartonpapier-Palme, ,,die Zz-Pflanze" oder irreführend ,,Zamie", ist die einzige Art der monotypischen Pflanzengattung Zamioculcas, die zur Familie der Aronstabgewächse (Araceae) gehört. Sie gilt als pflegeleichte Zimmerpflanze.
     2021-02-28 12:03:02   training        Training completed in 6.16 second(s)
     2021-02-28 11:32:55   updateSlots     OK
     2021-02-28 12:21:17   voiceResponse   Ich habe dich nicht verstanden
   helper:
     defaultRoom Wohnzimmer
     Shortcuts:
     shortcuts:
       Ton wechseln:
         NAME       Rhasspy
         perl       '{TVCodes("E0E0F00F")}'

Sprachmeldung kommt - Ton wechselt nicht.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 28 Februar 2021, 12:25:08
Zitat von: drhirn am 28 Februar 2021, 11:36:34
Nimm das für die ReSpeaker Installation: https://github.com/HinTak/seeed-voicecard
Da brauchst kein Kernel-Downgrade

Hat den Treiber schon jemand probiert?
https://community.rhasspy.org/t/hardware-that-can-rival-google-home-echo-in-terms-of-voice-recognition-and-speaker-sound-if-money-is-not-an-issue/2426/6
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 28 Februar 2021, 12:48:31
@Beta-Useri="Ton wechseln" p={TVCodes("E0E0F00F")} n="Rhasspy" r="Ton ist gewechselt"
Funktioniert - Ton wird gewechselt. Ein Device ist für den Fernseher nicht definiert, da dieser keine Rückgabe über seinen aktuellen Status geben kann. Daher hatte ich es ohne und nit "n" versucht. Allerdings erhalte ich kein Response.

p.s.
i="Ton wechseln" p={TVCodes("E0E0F00F"); return "ok"}
funktioniert
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 28 Februar 2021, 17:41:28
@drhirn:
Betreff MediaControls:
Ich hab hier https://github.com/drhirn/fhem-rhasspy#mediacontrols keine Anleitung für die Mediacontrols gefunden, drum mal im Code geschaut.
Folgende Annahme:
Ich muss in den Slot "Command" irgendwie stop, vor, zurück,play oder pause schreiben? Also minimal in der sentences.ini etwa sowas:
Zitat[de.fhem:MediaControls]
Musik (stop){Command}
Musik (vor){Command}
Musik (zurück){Command}
Musik (pause){Command}
Musik (start:play){Command}

Und für "lauter" und "leiser" nimmt man dann ein "SetNumeric"-Intent.
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 01 März 2021, 08:41:50
Zitat von: Treibhaus am 25 Februar 2021, 00:46:17
Hallo,

da gibt es die Wikipedia - Erweiterung.....

Bei der habe ich das Problem, das der Begriff wohl nicht erkannt wird.
Scrrenshot als Anhang.
Vielleicht weiss jemand Abhilfe ?

Gruß Jörg

Hi, wo hast du das gefunden?
Ich brauche auch dringend mehr Abfragemöglichkeiten ala Wikipedia, google oder sogar Wolfram - Meine Kinder haben Fragen! :)
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 01 März 2021, 10:08:00
Zitat von: laberlaib am 28 Februar 2021, 17:41:28
Ich muss in den Slot "Command" irgendwie stop, vor, zurück,play oder pause schreiben? Also minimal in der sentences.ini etwa sowas:

Ich habe kein Gerät, mit dem ich das testen könnte.

Aber das sentences-File müsste eher so aussehen:


[de.fhem:MediaControls]
(starte|start){Command:play} die wiedergabe [$de.fhem.Device{Device}]
(stoppe|stop){Command:stop} die wiedergabe [$de.fhem.Device{Device}]
(pausiere){Command:pause} die wiedergabe [$de.fhem.Device{Device}]
(nächstes|nächster){Command:vor} (lied|titel) [$de.fhem.Device{Device}]
(vorheriges|voriges|vorheriger|voriger){Command:zurück} (lied|titel) [$de.fhem.Device{Device}]


Und das Mapping im FHEM-Device:

MediaControls:cmdPlay=play,cmdPause=pause,cmdStop=stop,cmdFwd=next,cmdBack=previous


Beim Mapping musst du halt die richtigen Befehle für dein Gerät eintragen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 01 März 2021, 13:49:40
Danke.
Dein Hinweis mit dem Ersetzen ist gut; es klappt auch meine Variante, aber wenn man mehrere Möglichkeiten haben will, dann ist es auf Deine Weise doch übersichtlicher.
https://rhasspy.readthedocs.io/en/latest/training/#tags

Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 01 März 2021, 17:01:21
Und da ich ab und an den Professionalliserungsthread überfliege:

Bevor Ihr da jetzt ein "useAlexaRooms" oder so bastelt wäre mein Vorschlag ja, wenn man den namen der rhasspyRoom und rhasspyName einfach selber angeben kann. Wenn man dann was eigenes angibt, z.B. in den Attributen via leerzeichengetrennte Liste, dann muss man eben auch selber dafür sorgen, dass man ggfs. in globel die userattrs dazu fügt (so macht das anscheinend ja auch das Modul selbst).

Zitatattr RHASSPYDEVICE rhasspyUseOwnNamespace meineRaumnamen meineNamennamen
Zitatattr global userattr meineRaumnamen meineNamennamen
und in den subs irgendwas ala:
Zitatmy $roomAttribute = split(' ', AttrVal($_,"rhasspyUseOwnNamespace","rhasspyRoom rhasspyName")(0)
my $nameAttribute = split(' ', AttrVal($_,"rhasspyUseOwnNamespace","rhasspyRoom rhasspyName")(1)
(ich hab nicht wirklich Ahung von Perl).
Dann könnten die 2% die 2 Sprachn gleichzeit nutzen, die Begriffe dazu gut trennen.
Man bekommt nämlich sonst sehr sehr viele "Rhasspy do not know how to pronounce" Hinweise angezeigt. Die Deutschen können Spanisch anscheind nicht gut lesen...

Ach und: Du machst Dir hier ne Heidenarbeit. Ich hoffe, Dir macht das auch Spass! Danke in jeden Fall für alles. Und ich kann auch gut abwarten, bis Du eine halbwegs fertige Version hast - dann fuchs ich mich eben auch mal in Perl rein und bau da selber dran rum.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 01 März 2021, 17:04:20
Das hat Beta-User schon in Angriff genommen. Nur für dich ;)

Wir wollen aber zuerst wieder eine stabile Version bekommen. Und dann bauen wir am Sprach-Feature weiter.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 02 März 2021, 11:22:45
Zitat von: davedeluxe am 08 Februar 2021, 22:23:56
Hat jemand eine Möglichkeit parat wie man folgendes integrieren kann:

Bring! (Einkaufsliste)
Wikipedia fragen
Google fragen
Wolfram nutzen für z.B. Rechenaufgaben während man kocht (was sind 2/3 von 586g)
Wie ist das Wetter, brauch ich nen Schirm?

Das fehlt mir noch...

Hallo,

das hatte ich Letztens gefunden.Eventuell ist hier etwas dabei.

https://github.com/gidocarper/rhasspy-skills-test/tree/master/skills (https://github.com/gidocarper/rhasspy-skills-test/tree/master/skills)

z.B. Rechenfunktionen (der einfachen Art)
Witze begrenzt brauchbar da auf engl.
Spritpreisangabe (benötigte API-Registrierung)

Ich habe davon noch nichts implementieren können (zeitlich).
Gruß Jörg
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 02 März 2021, 11:30:17
Zitat von: davedeluxe am 01 März 2021, 08:41:50
Hi, wo hast du das gefunden?
Ich brauche auch dringend mehr Abfragemöglichkeiten ala Wikipedia, google oder sogar Wolfram - Meine Kinder haben Fragen! :)

Hallo,

das war ein Inhalt von JensS etwas eher hier im Beitragsverlauf:
https://forum.fhem.de/index.php/topic,113180.msg1128500.html#msg1128500 (https://forum.fhem.de/index.php/topic,113180.msg1128500.html#msg1128500)

Gruß Jörg
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 02 März 2021, 14:15:24
Zitat von: JensS am 02 Februar 2021, 20:08:02
Hier mal ein (Bei)Spielscript.

rhasspyIntents hinzufügen:Wikipedia=Wikipedia(Begriff)

sentences.ini:[de.fhem:Wikipedia]
erkläre mir was ist {Begriff}


99_myUtils:
use Data::Dumper;
use JSON;
use LWP::UserAgent;

sub Wikipedia($){
my ($Input) = @_;
my $lastIntentPayload = $defs{Rhasspy}->{READINGS}{lastIntentPayload}{VAL};
my ($Begriff) = $lastIntentPayload =~ /rawInput\"\:\"erkl\äre\ mir\ was (.*?)(?= ist)/;
$Begriff =~ s/ /_/g;
$Begriff =~ s/ä/%C3%A4/g;
$Begriff =~ s/ö/%C3%B6/g;
$Begriff =~ s/ü/%C3%BC/g;
$Begriff =~ s/ß/%E1%BA%9E/g;
my $ua = LWP::UserAgent->new();
my $response = $ua->get("https://de.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=$Begriff");
my $content = $response->content;
my $ref = JSON->new->decode($content);
my ($jsonHash) = values %{ $ref->{'query'}->{'pages'} };
my $Response = $jsonHash->{'extract'};
$Response =~ s/\(/ /g;
$Response =~ s/\)/ /g;
$Response =~ s/\;/ /g;
$Response =~ s/\'/ /g;
$Response =~ s/\./ - /g;
$Response =~ s/\:/ /g;
$Response =~ s/\,/ /g;
$Response =~ s/\'/ /g;
$Response = lc $Response;
$Response = encode('utf-8',$Response);
return $Response;
}


Hi JensS,

funktioiert das bei dir genau so? Ich habe es mir genau so eingerichtet aber ich bekomme keine Antwort, lediglich in meiner Log wird etwas gemeckert:

Use of uninitialized value $Begriff in substitution (s///) at ./FHEM/99_myUtilsRhasspy.pm line 54. bis Zeile 58
Use of uninitialized value $Begriff in concatenation (.) or string at ./FHEM/99_myUtilsRhasspy.pm line 60
Use of uninitialized value $Response in substitution (s///) at ./FHEM/99_myUtilsRhasspy.pm line 65. bis Zeile 72
Use of uninitialized value $Response in lc at ./FHEM/99_myUtilsRhasspy.pm line 73.


Zeile 54 bis 73:
$Begriff =~ s/ /_/g;
$Begriff =~ s/ä/%C3%A4/g;
$Begriff =~ s/ö/%C3%B6/g;
$Begriff =~ s/ü/%C3%BC/g;
$Begriff =~ s/ß/%E1%BA%9E/g;
my $ua = LWP::UserAgent->new();
my $response = $ua->get("https://de.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=$Begriff");
my $content = $response->content;
my $ref = JSON->new->decode($content);
my ($jsonHash) = values %{ $ref->{'query'}->{'pages'} };
my $Response = $jsonHash->{'extract'};
$Response =~ s/\(/ /g;
$Response =~ s/\)/ /g;
$Response =~ s/\;/ /g;
$Response =~ s/\'/ /g;
$Response =~ s/\./ - /g;
$Response =~ s/\:/ /g;
$Response =~ s/\,/ /g;
$Response =~ s/\'/ /g;
$Response = lc $Response;


Auch [de.fhem:Wikipedia]
erkläre mir was ist {Begriff}

scheint Probleme zu machen, da er so "ist" als Begriff nutzt.

Hast du eine Idee?

Grüße, Dave
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 02 März 2021, 18:18:26
Die Wikipedia war lediglich ein Beispiel-Intent für User, welche den Open transcriptions mode nutzen.

Sonst ist das nicht brauchbar, da zu wenig Begriffe erkannt werden würden. Man müsste alle definieren...

[de.fhem:Wikipedia]
erkläre mir was (Lampe | Fenster | Fahrrad){Begriff} ist

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 03 März 2021, 10:42:36
Zitat von: JensS am 02 März 2021, 18:18:26
Die Wikipedia war lediglich ein Beispiel-Intent für User, welche den Open transcriptions mode nutzen.

Sonst ist das nicht brauchbar, da zu wenig Begriffe erkannt werden würden. Man müsste alle definieren...

[de.fhem:Wikipedia]
erkläre mir was (Lampe | Fenster | Fahrrad){Begriff} ist

Gruß Jens

Ja, das war auch so verstanden.
Eine Ausgabe des Textes habe ich allerdings trotzdem nicht. Obwohl der Begriff erkannt wird.
(mag ggf. an Umlauten liegen) .. das habe ich hier noch nicht weiter getestet.

Gruß Jörg
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 03 März 2021, 11:06:55
Hallo JensS,

bei "GetWeekday" habe ich die 10_RHASSPY.pm für mich geändert.
Um den Tag(Namen) und Datumstag,  Monats(Namen) und Jahr anzugeben.
= Montag , 1. März, 2021

Funktioniert mit dem Monat März  ( ä) nicht = Keine Tonausgabe:
  $response = "Heute ist " . DateTime->now(locale => $language)->day_name . " , " .  DateTime->now(locale => $language)->day . "., " . DateTime->now(locale => $language)->month_name . DateTime->now(locale => $language)->year;

Ausgabe: Logfile-fhem:    RhasspyBridge voiceResponse: Heute ist Mittwoch , 3., M�rz2021


Nehme ich das "...month_name" raus, funktioniert es = Tonausgabe - Datumsangabe wird gesprochen.
    $response = "Heute ist " . DateTime->now(locale => $language)->day_name . " , " .  DateTime->now(locale => $language)->day . "., " . DateTime->now(locale => $language)->year;

Ausgabe: Logfile-fhem: RhasspyBridge voiceResponse: Heute ist Mittwoch , 3., 2021

Die Local-Settings auf beiden Rechnern:  de_DE.UTF-8  (falls das interessiert ). Eigentlich ist es ja nur der RHASSPY-Rechner.

1. Woran kann es liegen ? Was müsste ich ändern ?
2. Vielleicht ist diese Änderung  "Heute ist Mittwoch , 3. März, 2021"  wert es dahin gehend in der 10_RHASSSPY.pm zu ändern. (wenn 1. behoben ist)  ;)
Gruß Jörg
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 03 März 2021, 11:17:23
Thema Rolladen-Steuerung:

Hier kann ich die Rolladen rauf & runter fahren.
Dazu nutze ich das 
rhasspyMapping   SetOnOff:cmdOn=down,cmdOff=up

Hat jetzt den Nachteil, dass sich während einer Fahrtr (Auf oder AB) die Rollade nicht stoppen lässt.
Somit würde ein Stop Befehl fehlen.

Zudem währe es in einigen Situationen auch sinnvoller direkt eine Höhe/Prozentangabe einzusprechen.

Hat das jemand schon dahingehend realisiert ?
Gruß Jörg
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 03 März 2021, 11:23:00
MediaControls und SetNumeric nehmen
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 03 März 2021, 15:24:59
Zitat von: Treibhaus am 02 März 2021, 11:22:45
Hallo,

das hatte ich Letztens gefunden.Eventuell ist hier etwas dabei.

https://github.com/gidocarper/rhasspy-skills-test/tree/master/skills (https://github.com/gidocarper/rhasspy-skills-test/tree/master/skills)

z.B. Rechenfunktionen (der einfachen Art)
Witze begrenzt brauchbar da auf engl.
Spritpreisangabe (benötigte API-Registrierung)

Ich habe davon noch nichts implementieren können (zeitlich).
Gruß Jörg

Danke, sieht interessant aus, scheintert aber direkt beim Start:
python3 action-calculator.py
Traceback (most recent call last):
  File "skills/calculator/action-calculator.py", line 5, in <module>
    from rhasspyhermes_app import EndSession, HermesApp
ModuleNotFoundError: No module named 'rhasspyhermes_app'


Mit python3.7 action-calculator.py
scheint es zu starten aber wenn ich ihm eine Rechenaufgabe stelle kommt kein Output wobei er es scheinbar korrekt zuordnet:

CalculatorAddition
    3 first
    4 second


Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 03 März 2021, 15:36:36
Ich finde das merkwürdig, dass bei den meisten von den Skills die requirements.txt leer ist. Weil zumindest hermes_python (https://pypi.org/project/hermes-python/) solltest du brauchen. Steht z.B. auch in der vom Musik-Player-Skill (https://github.com/gidocarper/rhasspy-skills-test/blob/master/skills/musicplayer/requirements.txt).
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 03 März 2021, 15:40:59
Zitat von: drhirn am 03 März 2021, 15:36:36
Ich finde das merkwürdig, dass bei den meisten von den Skills die requirements.txt leer ist. Weil zumindest hermes_python (https://pypi.org/project/hermes-python/) solltest du brauchen. Steht z.B. auch in der vom Musik-Player-Skill (https://github.com/gidocarper/rhasspy-skills-test/blob/master/skills/musicplayer/requirements.txt).

Danke, jetzt komme ich zumindest ein paar Zeilen weiter:
python skills/calculator/action-calculator.py
  File "skills/calculator/action-calculator.py", line 48
    async def CalculatorAddition(intent: NluIntent):
        ^
SyntaxError: invalid syntax
Titel: Antw:FHEM und Rhasspy
Beitrag von: Cordula am 05 März 2021, 12:43:27
Beim Intent GetNumeric habe ich noch Probleme, wenn der Raum Umlaute enthält. Eventuell ist das Problem ja schon behoben. Hier die Details:
[de.fhem:GetNumeric]
wie ist die (luftfeuchtigkeit){Device} {Type:Luftfeuchtigkeit} [im] ($de.fhem.Room){Room}
(wie ist die|wie warm ist es) {Type:Temperatur} [temperatur][im|auf dem|in der] ($de.fhem.Room){Room}

attr Kueche.Heizung rhasspyMapping GetNumeric:currentVal=Temperatur,type=Temperatur
attr Kueche.Heizung rhasspyName Temperatur
attr Kueche.Heizung rhasspyRoom Küche

Frage: wie ist die temperatur in der küche
erkannt wird: [de.fhem:GetNumeric] Küche Room, Temperatur Type
Die Ausgabe ist korrekt, aber es wird für die Temperatur das falsche Device abgefragt.
Hier die Ausgabe des Logfiles:
2021.03.05 12:33:22 5: Parsed value: Temperatur for key: Type
2021.03.05 12:33:22 5: Parsed value: GetNumeric for key: intent
2021.03.05 12:33:22 5: Parsed value: arbeitszimmer-Okay Kalle-a929c805-4ca0-4b1d-aff7-40e3472ce880 for key: sessionId
2021.03.05 12:33:22 5: Parsed value: arbeitszimmer for key: siteId
2021.03.05 12:33:22 5: Parsed value: Temperatur temperatur in der Küche for key: input
2021.03.05 12:33:22 5: Parsed value: 1 for key: probability
2021.03.05 12:33:22 5: Parsed value: wie ist die temperatur in der küche for key: rawInput
2021.03.05 12:33:22 5: Parsed value: Küche for key: Room
2021.03.05 12:33:22 5: handleIntentGetNumeric called
2021.03.05 12:33:22 5: Device selected: Aussenstation
2021.03.05 12:33:22 5: rhasspyMapping selected: currentVal=temperature,type=Temperatur

Das gleiche Problem besteht auch für die Abfrage der Luftfeuchtigkeit und auch, wenn ich den Raum Gästezimmer für die Temperatur und die Luftfeuchtigkeit abfrage.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 05 März 2021, 12:59:30
Ihr mit euren Umlauten immer...
Könnt ihr die Räume nicht einfach Esswerkstatt und Freundezimmer nennen? :D

Ich schau mir das an.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Cordula am 05 März 2021, 13:15:10
Wäre für dich sicher einfacher, aber für die Akzeptanz Stichwort WAF kommt das glaube ich aber nicht so gut an.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 05 März 2021, 13:29:43
Zeigst du mir noch das Device Aussenstation bitte?
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 05 März 2021, 14:31:59
Vielleicht kann damit ja jemand was anfagen:
https://github.com/philipp2310/snips-bring-shopping

Habe mich daran versucht zumindest mal den Befehl raus zu bekommen wie man einen Artikel per Browserzeile hinzufügt/entfernt,
das würde ja schon reichen um etwas in der MyUtils zu basteln ABER ich hab dafür scheinbar zu wenig Ahnung.

Grüße Dave
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 05 März 2021, 15:17:26
Zitat von: davedeluxe am 05 März 2021, 14:31:59
Vielleicht kann damit ja jemand was anfagen:
https://github.com/philipp2310/snips-bring-shopping

Habe mich daran versucht zumindest mal den Befehl raus zu bekommen wie man einen Artikel per Browserzeile hinzufügt/entfernt,
das würde ja schon reichen um etwas in der MyUtils zu basteln ABER ich hab dafür scheinbar zu wenig Ahnung.

Grüße Dave

Für die Einkaufsliste habe ich mir gestern was mit dem PostMe-Modul zusammengeklickt. Das ist der rudimentäre Anfang.
Zusammen mit Telegram/Jabber ist das dann auch mit der Außenwelt verbunden.

Zitatattr RHASSPYMASTERDE Einkaufsliste=rhasspyShoppinglist(Product,Action)

Zitatsub rhasspyShoppinglist($$){
   my ($product, $action) = @_;
   my $device = "pm_PostIt";
   my $list = "Einkaufen";
   my $response;
   
   if ($action eq "add"){
      $response = fhem("set $device add $list $product");
   }
   if ($action eq "remove"){
      $response = fhem("set $device remove $list $product");
   }
   if ($action eq "get"){
      
      $response =  fhem("get $device list $list");
   }
   return $response;
}

Sentences.ini
Zitat[de.Stude:Einkaufsliste]
Setze ($de.Stude.Einkaufen){Product} auf die Einkaufsliste{Action:add}
Nehme ($de.Stude.Einkaufen){Product} von der Einkaufsliste{Action:remove}
Welche Produkte sind auf der Einkaufsliste{Action:get}

Slots
ZitatBier
Joghurt
Toastbrot
Wurst
Käse
Eier
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 05 März 2021, 15:47:10
@laberlaib
cool  8) Man beachte auch die Reihenfolge des Slots. Kannst Du bitte die Definitionen/Anpassungen von PostMe und Telegram/Jabber in dein Post reinschreiben? Günstig wäre auch als Code # statt Zitat. Das kopiert sich besser.  ;)

@drhirn && Beta-User
Die Möglichkeiten von Rhasspy sind u.a. durch CustomIntents erweiterbar. Ist es möglich/ratsam, die Erweiterungen in separate .pms in einem Unterordner RHASSPY zu legen und diese über Github zentral zur Verfügung zu stellen? So könnte man sich sein Rhasspy, je nach Bedarf, durch wenige Anpassungen zusammenstellen.

@davedeluxe
Die Snips-Skills sind leider nicht wirklich brauchbar. Diese arbeiten separat und nicht über FHEM. Man müsste dazu extra FHEM-Module schreiben, bzw. extra Intents.
Einfache RechenIntents wie drei plus sieben sollten dabei kein Problem darstellen. Anders sieht es aus, wenn Rhasspy die Mathe-Hausaufgeben eines 11.-klässlers machen soll.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 05 März 2021, 15:57:11
Zitat von: JensS am 05 März 2021, 15:47:10
Die Möglichkeiten von Rhasspy sind u.a. durch CustomIntents erweiterbar. Ist es möglich/ratsam, die Erweiterungen in separate .pms in einem Unterordner RHASSPY zu legen und diese über Github zentral zur Verfügung zu stellen? So könnte man sich sein Rhasspy, je nach Bedarf, durch wenige Anpassungen zusammenstellen.

Interessante Idee! Wobei ich's fast schöner finden würde, wenn man das Ganze in Python macht und von dort aus Kommandos an FHEM schickt. Dann könnte man zum einen einen eventuell entstehenden Skill-Store nützen, zum anderen hätten auch Rhasspy-Nutzer, die nicht FHEM verwenden, was davon.
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 05 März 2021, 16:19:48
Zitat von: laberlaib am 05 März 2021, 15:17:26
Für die Einkaufsliste habe ich mir gestern was mit dem PostMe-Modul zusammengeklickt. Das ist der rudimentäre Anfang.
Zusammen mit Telegram/Jabber ist das dann auch mit der Außenwelt verbunden.

Sentences.ini
Slots

Ja so hatte ich mir das vorgestellt nur für Bring!, da wir das nutzen.
Leider schaffe ich es nicht mir einen API Befehl zu basteln.
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 05 März 2021, 17:03:48
Zitat von: JensS am 05 März 2021, 15:47:10
@laberlaib
cool  8) Man beachte auch die Reihenfolge des Slots. Kannst Du bitte die Definitionen/Anpassungen von PostMe und Telegram/Jabber in dein Post reinschreiben? Günstig wäre auch als Code # statt Zitat. Das kopiert sich besser.  ;)
Reiner Zufall, die Reihenfolge :)
Ich bohr' das im Laufe des Wochenendes mal auf, dann mach ich das. So ist das eher ein PoC da z.B. PostMe die Liste einfach direkt kommagetrennt speichert und wenn man die sich dann vorlesen lässt, dann klingt das doof. (Wobei das bei mir eh kein Nutzen finden wird, da die Liste zweisprachig geführt wird und Rhasspy-TTS-de_De mit ausländischer Aussprache sich eher lächerlich als verständlich macht).

Zu PostMe + Telegramm ist eh eng verzahnt, dass kann man dort besser nachlesen.
Ich nutze Jabber da ich ja in der Opensourcewelt bleiben möchte. Und da hab ich dann einfach ein notify was auf Nachrichten reagiert. Das ist dann im Grunde auch nichts anderes als eine Fallunterscheidung und auch eher rudimentär.


Zitat von: drhirn am 05 März 2021, 15:57:11
Interessante Idee! Wobei ich's fast schöner finden würde, wenn man das Ganze in Python macht und von dort aus Kommandos an FHEM schickt. Dann könnte man zum einen einen eventuell entstehenden Skill-Store nützen, zum anderen hätten auch Rhasspy-Nutzer, die nicht FHEM verwenden, was davon.
So etwas kann ich gut nachvollziehen, aber für mich gilt fast eher das umgekehrte: Ich will nicht Daten in zwei Systemen pflegen und finde es schön, alles in FHEM zu haben und Rhasspy als reines zu konfigurierendes Werkzeug zu nutzen. Drum wollte ich schon mal Fragen, ob/wie man die Funktionen in der 30_RHASSPY.pm auch außerhalb nutzen kann. Dann würde ich versuchen ein Sub zu erstellen, welches auf Basis beliebiger Attribute Rhasspyslots füllt. Dann würde ich einen Dummy "Rhasspyslots" erstellen, Userattribute rein und dann z.b. sagen, dass die erste Zeile der Slotname ist und dannach alles Slotinhalte. Dann könnte ich da bspw. alle in Frage kommenden Produkte abspeichern.

Wohlgemerkt gilt das für Daten. Für Skills/Intents die keine eigenen Daten brauchen gilt das natürlich nicht - allerdings kann ich Python noch weniger als Perl
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 05 März 2021, 17:32:25
@Beta-User
Danke für deine Antwort. Je mehr man sich mit Rhasspy beschäftigt, um so mehr Ideen kommen einen. Ist halt ein Schweizer Taschenmesser mit ungeahnten Möglichkeiten, die nur durch den Sprachwortschatz eingeschränkt sind.
Das Thema Rhasspy-Mobile-App hatten wir hier angerissen: https://forum.fhem.de/index.php/topic,113180.msg1132723.html#msg1132723 (https://forum.fhem.de/index.php/topic,113180.msg1132723.html#msg1132723) ff.
Gruß Jens

p.s. Habe gerade deine aktuelle 10_RHASSPY.pm inkl. rhasspy-de.cfg heruntergeladen und installiert. Edit: Leider findet Rhasspy meine Stehlampe nicht mehr. Ich habe nachgeschaut; sie steht wie eh und je im Wohnzimmer. Habe die Definition vom RHASSPY-Device um "de" erweitert - nun läuft's. Wer lesen kann, ist halt klar im Vorteil...
2021.03.05 18:15:56 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionStarted => {"sessionId": "Wohnzimmer-alexa-bb83e517-b4d0-4818-9f3a-191951502bc4", "siteId": "Wohnzimmer", "customData": "alexa", "lang": null}
2021.03.05 18:15:56 5: Parsed value: Wohnzimmer-alexa-bb83e517-b4d0-4818-9f3a-191951502bc4 for key: sessionId
2021.03.05 18:15:56 5: Parsed value: Wohnzimmer for key: siteId
2021.03.05 18:16:00 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_SetOnOff => {"input": "Stehlampe an", "intent": {"intentName": "de.fhem:SetOnOff", "confidenceScore": 1.0}, "siteId": "Wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.Device", "value": {"kind": "Unknown", "value": "Stehlampe"}, "slotName": "Device", "rawValue": "stehlampe", "confidence": 1.0, "range": {"start": 0, "end": 9, "rawStart": 0, "rawEnd": 9}}, {"entity": "Value", "value": {"kind": "Unknown", "value": "an"}, "slotName": "Value", "rawValue": "an", "confidence": 1.0, "range": {"start": 10, "end": 12, "rawStart": 10, "rawEnd": 12}}], "sessionId": "Wohnzimmer-alexa-bb83e517-b4d0-4818-9f3a-191951502bc4", "customData": null, "asrTokens": [[{"value": "Stehlampe", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 9, "time": null}, {"value": "an", "confidence": 1.0, "rangeStart": 10, "rangeEnd": 12, "time": null}]], "asrConfidence": null, "rawInput": "stehlampe an", "wakewordId": "alexa", "lang": null}
2021.03.05 18:16:00 5: Parsed value: stehlampe an for key: rawInput
2021.03.05 18:16:00 5: Parsed value: 1 for key: probability
2021.03.05 18:16:00 5: Parsed value: an for key: Value
2021.03.05 18:16:00 5: Parsed value: Stehlampe for key: Device
2021.03.05 18:16:00 5: Parsed value: Wohnzimmer-alexa-bb83e517-b4d0-4818-9f3a-191951502bc4 for key: sessionId
2021.03.05 18:16:00 5: Parsed value: Stehlampe an for key: input
2021.03.05 18:16:00 5: Parsed value: Wohnzimmer for key: siteId
2021.03.05 18:16:00 5: Parsed value: SetOnOff for key: intent
2021.03.05 18:16:00 5: handleIntentSetOnOff called
2021.03.05 18:16:00 5: Device selected:
2021.03.05 18:16:00 5: cmd selected: Ich habe dich nicht verstanden
2021.03.05 18:16:00 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/endSession => {"sessionId":"Wohnzimmer-alexa-bb83e517-b4d0-4818-9f3a-191951502bc4","siteId":"Wohnzimmer","text":"Ich habe dich nicht verstanden"}
2021.03.05 18:16:00 5: Parsed value: Wohnzimmer-alexa-bb83e517-b4d0-4818-9f3a-191951502bc4 for key: sessionId
2021.03.05 18:16:00 5: Parsed value: Wohnzimmer for key: siteId
2021.03.05 18:16:02 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionEnded => {"termination": {"reason": "nominal"}, "sessionId": "Wohnzimmer-alexa-bb83e517-b4d0-4818-9f3a-191951502bc4", "siteId": "Wohnzimmer", "customData": "alexa"}
2021.03.05 18:16:02 5: Parsed value: Wohnzimmer for key: siteId
2021.03.05 18:16:02 5: Parsed value: Wohnzimmer-alexa-bb83e517-b4d0-4818-9f3a-191951502bc4 for key: sessionId


p.p.s. fetchSideIds: Küche wird als K�che angezeigt
Titel: Antw:FHEM und Rhasspy
Beitrag von: Cordula am 05 März 2021, 23:52:31
@drhirn
Hier die Attribute von Aussenstation
attr Aussenstation rhasspyMapping GetNumeric:currentVal=temperature,type=Temperatur
attr Aussenstation rhasspyName Temperatur
attr Aussenstation rhasspyRoom Vorgarten

Reicht dir das oder brauchst du ein komplettes List?
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 06 März 2021, 11:09:39
@Beta-User
Wie sieht dann mein Respeak aus?sub Respeak(){
my $name = "Rhasspy"; # Rhasspy durch eigenen Rhasspy-Device-Namen ersetzen
my $Response = ReadingsVal($name,"voiceResponse","Ich kann mich nicht mehr erinnern");
return $Response;
}


Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 06 März 2021, 12:54:22
Ich nutz gerade die Version 0.2.
Probleme macht mir Rhasspy selbst: da funktioniert irgend etwas nicht mit den Satelliten und den Wakewords und dann gehts auf 102% Prozessorauslastung im Master und das geht auch nur durch einen Neustart weg. Anyway - ein Problem für später wenn ich einen weiteren Raspi habe und auch testen und rumspielen kann.

Aber ich habe mir in die 10_RHASSPY.pm eine Funktion "updateArbitrarySlots" gebaut und da ich keinen Githubaccount habe und auch "Patch einreichen" auf der zu lernen Liste steht, hier mal eine Anregung:
(Das ist meine aktuelle Arbeitsversion, ohne Kommentare und ohne alles - sowieso wenig selber erfunden als nur kopiert)

sub RHASSPY_updateArbitrarySlots($) {
    my ($hash) = @_;
    my $method = "POST";
    my $contenttype = "application/json";

my $json;
    my $deviceData;
    my $url = "/api/slots";

my $name = $hash->{NAME};
my @tokens;
my $slotDevice;
my $slotAttribute;

Log3($hash->{NAME}, 5, "slotDeviceAttribute: ". AttrVal($name,"rhasspySlotData",undef));
my @slotsDeviceAttribute = split(/\n/, AttrVal($name,"rhasspySlotData",undef));
foreach (@slotsDeviceAttribute) {
@tokens = split(':', $_);

$slotDevice = @tokens[0];
$slotAttribute = @tokens[1];

Log3($hash->{NAME}, 5, "Own Device With Slots: $slotDevice");
Log3($hash->{NAME}, 5, "Own Attribute With Slots: $slotAttribute");

my ($slotName, $slotContent) = split(':',AttrVal($slotDevice,$slotAttribute,undef));
my @slotContent = split(',', $slotContent);

$deviceData->{$slotName} = \@slotContent if @slotContent > 0;
}
$json = eval { toJSON($deviceData) };


    Log3($hash->{NAME}, 5, "Updating Rhasspy Slots with data: $json");
     
      RHASSPY_sendToApi($hash, $url, $method, $json);
 
}


Des Weiteren muss man das Set erweitern

updateArbitrarySlots => q{},

und ein Attribut hinzufügen:
    $hash->{AttrList}    = "IODev defaultRoom rhasspyIntents:textField-long shortcuts:textField-long rhasspyMaster response:textField-long rhasspySlotData:textField-long " . $readingFnAttributes;
und das Set aufrufbar machen:
elsif ($command eq "updateArbitrarySlots") {
        return RHASSPY_updateArbitrarySlots($hash);
    }


Dann kann man im Rhasspydevice im Attribut rhasspySlotData Device:Attribute-Kombinationen angeben, wo dann nach Slotlisten in der Form "Name:Einhalt, Inhalt2,Inhalt3" gesucht wird.
So kann ich alle Produkte für die Einkaufsliste direkt in FHEM pflegen statt in Rhasspy. Ob sich das bei mir durchsetzt weiß ich noch nicht, gerade halte ich es für sinnvoll.
Datensammler

defmod du_rhasspyData dummy
attr du_rhasspyData userattr slotTiere:textField-long slotEinkaufen:textField-long slotMusik:textField-long
attr du_rhasspyData room Rhasspy
attr du_rhasspyData slotEinkaufen Testen:Zucker,Mehl
attr du_rhasspyData slotMusik Musik:No Woman no Cry, Everybody Dance now!, Eazy Duz It, Brille
attr du_rhasspyData slotTiere Tiere:Hund,Katze,Maus
attr du_rhasspyData widgetOverride userattr:textField-long

Zusätzliches Attribut im Rhasspydevice
attr RHASSPYMASTERDE rhasspySlotData du_rhasspyData:slotTiere\
du_rhasspyData:slotEinkaufen\
du_rhasspyData:slotMusik
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 06 März 2021, 13:06:52
@Beta-User
Alternative 2.a) hatte ich genau so gemacht. Nur mit "Rhasspy" statt qq{Rhasspy}. Da muss ich mich langsam an die neue Schreibweise gewöhnen. Allerdings bringt shift nichts - es wird immer die Ersetzung bei undef gemacht. Sobald ich "Rhasspie" schreibe, hat Alexa Alzheimer.
rhasspyIntents: Respeak=Respeak(NAME)
sub:sub Respeak {
my $name = shift // "Rhasspie";
my $Response = ReadingsVal($name,"voiceResponse","Ich kann mich nicht mehr erinnern");
return $Response;
}

Gruß Jens

p.s. Die letzte Änderung von RHASSPY_handleCustomIntent hat's auch noch nicht gebracht. Immerhin wird schon die Anzahl von @params übergeben. Evtl. ein Problem mit einem mehrdimensionalen Array?
2021.03.06 16:25:40 5: Parsed value: wie spät ist es for key: input
2021.03.06 16:25:40 5: Parsed value: wie spät ist es for key: rawInput
2021.03.06 16:25:40 5: Parsed value: 1 for key: probability
2021.03.06 16:25:40 5: Parsed value: Wohnzimmer for key: siteId
2021.03.06 16:25:40 5: handleIntentGetTime called
2021.03.06 16:25:40 5: Response: Es ist 16 Uhr 25
2021.03.06 16:25:40 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/endSession => {"sessionId":"Wohnzimmer-alexa-a71d493b-1789-4de5-a644-23a1e822a0ad","siteId":"Wohnzimmer","text":"Es ist 16 Uhr 25"}
2021.03.06 16:25:40 5: Parsed value: Wohnzimmer-alexa-a71d493b-1789-4de5-a644-23a1e822a0ad for key: sessionId
2021.03.06 16:25:40 5: Parsed value: Wohnzimmer for key: siteId
2021.03.06 16:25:43 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionEnded => {"termination": {"reason": "nominal"}, "sessionId": "Wohnzimmer-alexa-a71d493b-1789-4de5-a644-23a1e822a0ad", "siteId": "Wohnzimmer", "customData": "alexa"}
2021.03.06 16:25:43 5: Parsed value: Wohnzimmer for key: siteId
2021.03.06 16:25:43 5: Parsed value: Wohnzimmer-alexa-a71d493b-1789-4de5-a644-23a1e822a0ad for key: sessionId
2021.03.06 16:25:45 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionStarted => {"sessionId": "Wohnzimmer-alexa-ed704306-b766-4cc0-8151-1937f8b9c9b8", "siteId": "Wohnzimmer", "customData": "alexa", "lang": null}
2021.03.06 16:25:45 5: Parsed value: Wohnzimmer for key: siteId
2021.03.06 16:25:45 5: Parsed value: Wohnzimmer-alexa-ed704306-b766-4cc0-8151-1937f8b9c9b8 for key: sessionId
2021.03.06 16:25:48 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_Respeak => {"input": "was hast du gesagt", "intent": {"intentName": "de.fhem:Respeak", "confidenceScore": 1.0}, "siteId": "Wohnzimmer", "id": null, "slots": [], "sessionId": "Wohnzimmer-alexa-ed704306-b766-4cc0-8151-1937f8b9c9b8", "customData": null, "asrTokens": [[{"value": "was", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 3, "time": null}, {"value": "hast", "confidence": 1.0, "rangeStart": 4, "rangeEnd": 8, "time": null}, {"value": "du", "confidence": 1.0, "rangeStart": 9, "rangeEnd": 11, "time": null}, {"value": "gesagt", "confidence": 1.0, "rangeStart": 12, "rangeEnd": 18, "time": null}]], "asrConfidence": null, "rawInput": "was hast du gesagt", "wakewordId": "alexa", "lang": null}
2021.03.06 16:25:48 5: Parsed value: Respeak for key: intent
2021.03.06 16:25:48 5: Parsed value: Wohnzimmer-alexa-ed704306-b766-4cc0-8151-1937f8b9c9b8 for key: sessionId
2021.03.06 16:25:48 5: Parsed value: was hast du gesagt for key: input
2021.03.06 16:25:48 5: Parsed value: was hast du gesagt for key: rawInput
2021.03.06 16:25:48 5: Parsed value: 1 for key: probability
2021.03.06 16:25:48 5: Parsed value: Wohnzimmer for key: siteId
2021.03.06 16:25:48 5: handleCustomIntent called with Respeak key
2021.03.06 16:25:48 5: Calling sub:  Respeak( 1)
2021.03.06 16:25:48 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/endSession => {"sessionId":"Wohnzimmer-alexa-ed704306-b766-4cc0-8151-1937f8b9c9b8","siteId":"Wohnzimmer","text":"Ich kann mich nicht mehr erinnern"}
2021.03.06 16:25:48 5: Parsed value: Wohnzimmer-alexa-ed704306-b766-4cc0-8151-1937f8b9c9b8 for key: sessionId
2021.03.06 16:25:48 5: Parsed value: Wohnzimmer for key: siteId
2021.03.06 16:25:50 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionEnded => {"termination": {"reason": "nominal"}, "sessionId": "Wohnzimmer-alexa-ed704306-b766-4cc0-8151-1937f8b9c9b8", "siteId": "Wohnzimmer", "customData": "alexa"}
2021.03.06 16:25:50 5: Parsed value: Wohnzimmer-alexa-ed704306-b766-4cc0-8151-1937f8b9c9b8 for key: sessionId
2021.03.06 16:25:50 5: Parsed value: Wohnzimmer for key: siteId
2021.03.06 16:25:59 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionStarted => {"sessionId": "Wohnzimmer-alexa-80289a9b-7f96-4f19-9574-d026d2b7a9be", "siteId": "Wohnzimmer", "customData": "alexa", "lang": null}
2021.03.06 16:25:59 5: Parsed value: Wohnzimmer for key: siteId
2021.03.06 16:25:59 5: Parsed value: Wohnzimmer-alexa-80289a9b-7f96-4f19-9574-d026d2b7a9be for key: sessionId
2021.03.06 16:26:02 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_SetAllOn => {"input": "schalte alle light im aussen", "intent": {"intentName": "de.fhem:SetAllOn", "confidenceScore": 1.0}, "siteId": "Wohnzimmer", "id": null, "slots": [{"entity": "Type", "value": {"kind": "Unknown", "value": "light"}, "slotName": "Type", "rawValue": "lampen", "confidence": 1.0, "range": {"start": 13, "end": 18, "rawStart": 13, "rawEnd": 19}}, {"entity": "de.fhem.Room", "value": {"kind": "Unknown", "value": "aussen"}, "slotName": "Room", "rawValue": "aussen", "confidence": 1.0, "range": {"start": 22, "end": 28, "rawStart": 23, "rawEnd": 29}}], "sessionId": "Wohnzimmer-alexa-80289a9b-7f96-4f19-9574-d026d2b7a9be", "customData": null, "asrTokens": [[{"value": "schalte", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 7, "time": null}, {"value": "alle", "confidence": 1.0, "rangeStart": 8, "rangeEnd": 12, "time": null}, {"value": "light", "confidence": 1.0, "rangeStart": 13, "rangeEnd": 18, "time": null}, {"value": "im", "confidence": 1.0, "rangeStart": 19, "rangeEnd": 21, "time": null}, {"value": "aussen", "confidence": 1.0, "rangeStart": 22, "rangeEnd": 28, "time": null}]], "asrConfidence": null, "rawInput": "schalte alle lampen im aussen", "wakewordId": "alexa", "lang": null}
2021.03.06 16:26:02 5: Parsed value: aussen for key: Room
2021.03.06 16:26:02 5: Parsed value: Wohnzimmer for key: siteId
2021.03.06 16:26:02 5: Parsed value: 1 for key: probability
2021.03.06 16:26:02 5: Parsed value: light for key: Type
2021.03.06 16:26:02 5: Parsed value: SetAllOn for key: intent
2021.03.06 16:26:02 5: Parsed value: schalte alle lampen im aussen for key: rawInput
2021.03.06 16:26:02 5: Parsed value: schalte alle light im aussen for key: input
2021.03.06 16:26:02 5: Parsed value: Wohnzimmer-alexa-80289a9b-7f96-4f19-9574-d026d2b7a9be for key: sessionId
2021.03.06 16:26:02 5: handleCustomIntent called with SetAllOn key
2021.03.06 16:26:02 5: Calling sub:  SetAllOn( 2)
2021.03.06 16:26:02 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/endSession => {"sessionId":"Wohnzimmer-alexa-80289a9b-7f96-4f19-9574-d026d2b7a9be","siteId":"Wohnzimmer","text":"Not enough arguments for main::SetAllOn at (eval 53800) line 1, near \u00222) \u000a\u0022\u000a"}
2021.03.06 16:26:02 5: Parsed value: Wohnzimmer-alexa-80289a9b-7f96-4f19-9574-d026d2b7a9be for key: sessionId
2021.03.06 16:26:02 5: Parsed value: Wohnzimmer for key: siteId
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 07 März 2021, 09:41:05
Zitat von: Cordula am 05 März 2021, 23:52:31
Reicht dir das oder brauchst du ein komplettes List?

Passt so, danke!

Es sieht danach aus, als ob das in der aktuellsten Version dank Beta-User kein Problem mehr ist. Zumindest waren meine Test erfolgreich.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 07 März 2021, 19:49:11
@alle
Hat jemand Larynx als TTS mit de-thorsten am laufen?
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 08 März 2021, 08:22:55
Zitat von: JensS am 07 März 2021, 19:49:11
@alle
Hat jemand Larynx als TTS mit de-thorsten am laufen?
Gruß Jens

Hallo Jens,

ja, gerade getestet.
Auf Raspberry Pi 4 Model B Rev 1.1
Zum Download benötigte ich LAN. WLAN brach ab.
Es dauert bei 1. Sätzen allerdings etwas lange bis die Ausgabe kommt. Bei Wiederholungen ist es dann kürzer bis zur Antwort.
(Gewohnt kurz).
Wechsel direkt wieder zurück zu MarryTTS ;)

Gruß Jörg


PS: Habe es nochmals wiederholt. Ich wollte Dir mal eine Soundausgabe zukommen lassen.
Von MarryTTS auf Larynx umgestellt. FOLGE: TIMEOUT ERROR.  Funktioniert also gerade nicht mehr. :-\

Gebe aber nicht auf.
Im 2. Anlauf (wieder per LAN) hat es funktioniert:
Folgenden Text habe ich vorgeben bei dem es allerdings zum Timeout kam, jedoch trotzdem ausgebenen wurde:
Zitat"Hallo Jens. Ich hoffe es geht Dir gut ? Hier einmal ein Test: , Ich schalte das Küchenlicht an und fahre die Rolladen im Wohnzimmer runter."
Diese Tonausgabe (Anhang) ergab dann etwas komplett Sinnfreies. Wahrscheinblich wegen des Timeouts . Aber ein lustiges Ergebnis.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 08 März 2021, 18:37:04
Hallo Jörg,
danke, das klingt interessant. Wie hast das installiert? Ich bekomme auch immer einen Timeout - allerdings vor einer möglichen Ausgabe...
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 09 März 2021, 10:45:07
Zitat von: JensS am 08 März 2021, 18:37:04
Hallo Jörg,
danke, das klingt interessant. Wie hast das installiert? Ich bekomme auch immer einen Timeout - allerdings vor einer möglichen Ausgabe...
Gruß Jens

Hallo Jens,

ich habe nicht besonderes gemacht.
Rhasspy läuft beim mir per Docker (genau wie MarryTTS).
Zu Larynx habe ich per Menü gewechselt. Danach folgt die Aufforderung das 4 oder 5 Dateien geladen werden müssen.
(Dies hat wie erwähnt nicht per Wlan funktioniert)
Somit habe ich auf LAN umgestellt. Sicherheitshalber nochmal zwischen den TTS gewechselt - (neustarten musste ich da das LAN örtlich woanders war auch)
Anschliessend hat der Download der Dateien zügig funktioniert.
Save & restart von Rhasspy (kommt sowieso) und dann hat es schon (per Lan ) funktioniert
.. nur per Wlan später nicht  ...  aber dann per Lan (fast wieder -  'lag wahrscheinlich aber am langen Text)

Gruß



Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 09 März 2021, 16:34:37
Kurzer Zwischenstand von mir (v0.4.2beta):

- Timer: Ist ein Timer in einem Raum gewünscht, für den keine siteId existiert, wird er zwar gesetzt, aber die Sprachausgabe zum Ende erfolgt dann dort, wo der Befehl zum Setzen gesprochen wurde
- Umlaute: Kann keine Probleme mehr feststellen
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 09 März 2021, 19:07:18
Hallo Jörg,

danke für deine Info's. Habe nun auch auf MaryTTS umgestellt. Die Ausgabe ist jedenfalls besser als PicoTTS un NanoTTS.

@Beta-User
Meine Tests musste ich wieder einstellen, da meine CustomIntents mit Übergabe von Werten (z.B. SetAllOff) nur Fehler gebracht haben.

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 10 März 2021, 12:13:05
Die Respeak-Sache von JensS ist im Code der 0.4.2beta eingebaut.

Wenn man einen Rhasspy-Satz wie z.B.

[de.fhem:ReSpeak]
was hast du gesagt
ich hab dich nicht verstanden

erstellt, wiederholt FHEM/Rhasspy die zuletzt gesprochene Ausgabe (also den Inhalt des Readings voiceResponse).
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 10 März 2021, 17:06:39
@Beta-User
Läuft - danke, für die Anpassungen.
p.s. Wenn ich bei GetAllOff keinen Raum mitgebe, wird mir "room" übergeben. Bisher hatte ich das undef in "Haus" gewandelt - nun halt "room".

@drhirn
response="Text" war die ursprüngliche Syntax bzw. response={my $Name = (split(/,/,AttrVal($DEVICE,"rhasspyName","error")))[0];my $Status = ReadingsVal($DEVICE,"state","im unbekannten Status");return "Ok - $Name ist $Status"}
Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 11 März 2021, 09:18:19
@JensS: Kannst du mir bitte mal deine aktuellen Custom-Intents posten?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 11 März 2021, 10:10:12
Eine Erkenntnis, die ich euch nicht vorenthalten will: Ich habe gerade unglaublich gute Erfolge mit der Kombination Raspberry Pi 3A+ und ReSpeaker 2-MIC Hat. Hab einfach mal ins Blaue installiert (Docker) ohne irgendwelche Alsa-Settings zu ändern. Reagiert einwandfrei auf das Wakeword und die Ausgaben kommen sehr schnell. Hat doch etwas mehr Power als ein Pi Zero. Und ist durchaus leistbar. Kann ich nur empfehlen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 13 März 2021, 10:10:41
Zitat von: drhirn am 11 März 2021, 09:18:19
@JensS: Kannst du mir bitte mal deine aktuellen Custom-Intents posten?
Die muss ich erst mal alle anpassen - dann gern.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Hardlife am 23 März 2021, 11:24:41
Hi liebe Mitstreiter...

Ich experimentiere seit ein paar Wochen auch mit Rhasspy und mache auch schon Fortschritte.
Leider komme ich momentan nicht weiter und wollte Euch und Unterstützung bitten.

Folgendes "Problem":

Meine Konfiguration:

Vielen liebe Dank für Eure Unterstützung.

Mein MQTT-Device in FHEM (Mosquitto läuft am selben Server wie FHEM):
define FHEM_Mosquito_MQTT_IO_Handler MQTT 127.0.0.1:1883 USER PASSWORD

Mein Rhasspy-Device in FHEM:
define Rhasspy RHASSPY FHEM_Mosquito_MQTT_IO_Handler Wohnzimmer
attr Rhasspy room Rhasspy
attr Rhasspy rhasspyMaster http://192.168.0.29:12101
attr Rhasspy rhasspyRoom Wohnzimmer,Schlafzimmer


Ein zu Testzwecken angelegter Schalt-Dummy (der funktioniert):
define RhasspyDummySwitch_Fensterbank_SZ_LED_Stripe dummy
attr RhasspyDummySwitch_Fensterbank_SZ_LED_Stripe room Rhasspy
attr RhasspyDummySwitch_Fensterbank_SZ_LED_Stripe rhasspyName Fensterbank
attr RhasspyDummySwitch_Fensterbank_SZ_LED_Stripe rhasspyRoom Schlafzimmer
attr RhasspyDummySwitch_Fensterbank_SZ_LED_Stripe rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off
attr RhasspyDummySwitch_Fensterbank_SZ_LED_Stripe setList on off
define RhasspyDummySwitch_Fensterbank_SZ_LED_Stripe_on_off notify RhasspyDummySwitch_Fensterbank_SZ_LED_Stripe:.* {if (ReadingsVal("RhasspyDummySwitch_Fensterbank_SZ_LED_Stripe","state","") eq "on") {fhem("set Fensterbank_SZ_LED_Stripe RGB FF0051")} elsif (ReadingsVal("RhasspyDummySwitch_Fensterbank_SZ_LED_Stripe","state","") eq "off") {fhem("set Fensterbank_SZ_LED_Stripe off")}}


Ein um Atribute erweitertes bereits vorher vorhandenes Device (funktioniert trotz updateSlots nicht):
define Intertechno_2 dummy
attr Intertechno_2 alias Fernseher&nbspund&nbspNES
attr Intertechno_2 cmdIcon ein:Restart aus:Shutdown
attr Intertechno_2 devStateIcon ein:on:aus aus:off:ein
attr Intertechno_2 eventMap on:ein off:aus
attr Intertechno_2 group Fernseher
attr Intertechno_2 icon it_television@1AEBAD
attr Intertechno_2 room Schlafen
attr Intertechno_2 webCmd aus:ein
attr Intertechno_2 sortby 5
attr Intertechno_2 rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off
attr Intertechno_2 rhasspyName Fernseher
attr Intertechno_2 rhasspyRoom Schlafzimmer
define Intertechno_2_On notify Intertechno_2:on "sudo /usr/local/sbin/send.py -p 369 -t 1 1064981 &"
define Intertechno_2_Off notify Intertechno_2:off "sudo /usr/local/sbin/send.py -p 369 -t 1 1064980 &"


Meine Sentences.ini:
[de.fhem:SetOnOff]
(schalte|mach|mache) (das) (Kino){Device} (an|aus){Value}
(schalte|mach|mache) (das) (Licht){Device} (an|aus){Value}
(schalte|mach|mache) (die) (Fensterbank){Device} (an|aus){Value}
(schalte|mach|mache) (das) (Schläfchen){Device} (an|aus){Value}
(schalte|mach|mache) (den) (Stern){Device} (an|aus){Value}
(schalte|mach|mache) (den) (Fernseher){Device} (an|aus){Value}

[de.fhem:GetNumeric]
(wie ist die|wie warm ist es){Type:Temperatur} [temperatur] [(thermometer){Device}] [(am|im|in der)] [(wohnzimmer|bad|schlafzimmer|balkon|draussen){Room}]

[de.fhem:GetTime]
wie spät ist es
sag mir die uhrzeit
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 23 März 2021, 11:40:21
Zitatattr Intertechno_2 room Schlafen

Alle Devices müssen in den room Rhasspy.
Warum das Trainieren klappt, kann ich Dir nicht sagen.
Titel: Antw:FHEM und Rhasspy
Beitrag von: Hardlife am 23 März 2021, 16:23:21
Zitat von: laberlaib am 23 März 2021, 11:40:21
Alle Devices müssen in den room Rhasspy.
Warum das Trainieren klappt, kann ich Dir nicht sagen.

Vielen vielen Dank.
Ich habe mich echt dumm und dämlich gesucht...

Liebe Grüße,
Hardlife
Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 25 März 2021, 09:46:52
Zitat von: JensS am 10 März 2021, 17:06:39
@Beta-User
Läuft - danke, für die Anpassungen.
p.s. Wenn ich bei GetAllOff keinen Raum mitgebe, wird mir "room" übergeben. Bisher hatte ich das undef in "Haus" gewandelt - nun halt "room".

@drhirn
response="Text" war die ursprüngliche Syntax bzw. response={my $Name = (split(/,/,AttrVal($DEVICE,"rhasspyName","error")))[0];my $Status = ReadingsVal($DEVICE,"state","im unbekannten Status");return "Ok - $Name ist $Status"}
Gruß Jens

Guten Morgen,

wie generiert man Text -> Sprachausgabe nach den neuen Updates. D.h.erzeugt eine Sprachausgabe ?
Die alte Funktion mit einem einfachen  response="Text"  funktioniert nun nicht mehr.
ich würde gerne die Witze-Ausgabe wieder aktivieren und meine priv. "Wer hat als nächstes Geburtag"-Ausgabe.

Gruß Jörg

PS1: Ansonsten bin ich auch bei der Version 4.6a.
PS2: Gerne verschieben (ggf. Modulentwicklung ?? )
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 25 März 2021, 14:19:45
Ist 0.4.6a die aktuell "stabilste"?
also immer die, die man erhält, wenn man hier
https://github.com/drhirn/fhem-rhasspy
hin geht?

Ich frage insbesondere, da ich alles neu installieren muss und dann auch gleich mal eine testinstallation parallel mache. Dafür würde ich gerne den letzten Stand nehmen. Derzeit bin ich noch bei 0.2.
Mir hats Rhasspy komplett zerschossen: nach der NLU gibt immer ein Timeout, egal Master-Satellite, alles auf einem System, docker oder deb...
ich glaube, ich habe mich böse verkonfiguriert...
Titel: Antw:FHEM und Rhasspy
Beitrag von: JensS am 25 März 2021, 18:31:14
@laberlaib
Wie sieht deine profile.json aus?

Gruß Jens
Titel: Antw:FHEM und Rhasspy
Beitrag von: laberlaib am 25 März 2021, 21:54:35
Zitat von: JensS am 25 März 2021, 18:31:14
@laberlaib
Wie sieht deine profile.json aus?

Gruß Jens

Ich wollte die gerade kopieren und hab noch einmal rumgespielt... Jetzt scheints zu klappen. Das hiesse 3 Tage Fehlersuche inkl. Neuinstallation Basis (die laufen auf Proxmox, also war das einfach auf Basis von hinterlegten Ubuntutemplates) und Satelliten (dauerte ewig weil RPi und Respeaker) für 2 Klicks....
Jetzt trau ich mich nicht die profile.json dran zu hängen... :p
Wenn ich das nicht am Wochenende stabil bekomme, dann frag ich hier noch einmal.

Bei mir lief alles super, aber ich will ja Mehrsprachigkeit. Und klar, das müssen die Satelliten dann auch beherrschen.
Also hier mal angefangen: https://community.rhasspy.org/t/mulitple-satellites-and-multiple-masters/2502
Durch die Funktion Satelliten zu gruppieren sollte man viele verteilen können und es wäre egal, ob die sich gleichzeitig hören. Perfekt.
Man kann den Dialogmanager auf Hotwords einschränken, auf welche er reagieren kann. Ich hab das zwar nur hardcodiert geschafft, aber es hat geklappt.

Jetzt will ich natürlich nicht je zwei Satelliten nebeneinander haben, einmal Deutsch, einmal Spanisch. Also ist mein Ziel derzeit (neben dem langfristigen, das mir mal im Code anzuschauen, siehe Thread in der rhasspy Community) das Ganze via MQTT-Bridging hinzubekommen (meine bisherigen Anstrengungen siehe auch dort drüben).
Aber dann ist alles kollabiert... Wenn das jetzt wieder geht, dann bau ich den Rest in der Osterwoche mal zusammen - jetzt bin ich wieder Feuer&Flamme!

Also, welche FHEM-Rhasspy-Version soll ich den nun nehmen?
Und falls drhirn/Beta-User soweit lesen: der Group-seperator wird in die site-id eingetragen und so trennt sich Gruppen- und Raumnamen. Entweder kann man das in den FHEM-rhasspyRoom-Attributen irgendwie mitgeben, oder aber man muss eben die site_id (Gruppe-Trenner-Name) und den echten Namen eintragen; einmal zu lernen und einmal falls man keinen Raum sagt und man den Raum, wo sich der Satellit befindet meint. Wenn ich sowas mal ernsthaft braucht, formuliere ich das besser.


Titel: Antw:FHEM und Rhasspy
Beitrag von: Treibhaus am 26 März 2021, 16:56:22
Zitat von: Treibhaus am 25 März 2021, 09:46:52
Hallo noch einmal,
muss noch eimal nachfragen:

wie generiert man Text -> Sprachausgabe nach den neusten Updates. D.h.erzeugt eine Sprachausgabe ?
Die alte Funktion mit einem einfachen  response="Text"  funktioniert nun nicht mehr.
ich würde gerne die Witze-Ausgabe wieder aktivieren und meine priv. "Wer hat als nächstes Geburtag"-Ausgabe.

Gruß Jörg

Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 26 März 2021, 18:49:14
Beta-Users Antwort ist im anderen Thread: https://forum.fhem.de/index.php/topic,119447.msg1143414.html#msg1143414
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 10 April 2021, 11:10:47
Es geht gerade darum, das Modul mal ausgiebig der Reihe nach zu testen und v.a. die Dokumentation zu vervollständigen (bzw. zu verbessern). Ich hatte also in einem anderen Thread vorgeschlagen, dass wir die Intents der Reihe nach durchgehen und die Ergebnisse der Tests hier dokumentieren. Das hier gesammelte Wissen wird dann in die Doku übernommen.

Ich starte daher mal mit den ersten Intents und werde sie im ersten Beitrag dieses Threads auch verlinken.

Ausgangspunkt ist die Version 0.4.7b des Moduls: https://github.com/drhirn/fhem-rhasspy/tree/0.4.7b

Würde mich sehr freuen, wenn ihr mich da mit Tests und Korrekturen unterstützen könntet.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 10 April 2021, 11:12:32
SetOnOff

Device:

defmod Stehlampe dummy
attr Stehlampe group Lampen,Stehlampen
attr Stehlampe icon light_floor_lamp
attr Stehlampe rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentVal=state,valueOff=off
attr Stehlampe rhasspyName Stehlampe
attr Stehlampe rhasspyRoom Büro
attr Stehlampe room Büro,Rhasspy
attr Stehlampe webCmd on:off


Sentences:

[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}


Testergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 10 April 2021, 11:16:30
SetOnOffGroup:

Devices:

defmod Deckenlampe FS20 1234 13
attr Deckenlampe eventMap off:dim0% on:dim100%
attr Deckenlampe genericDeviceType light
attr Deckenlampe group Deckenlampen,Lampen
attr Deckenlampe icon light_pendant_light
attr Deckenlampe model fs20di
attr Deckenlampe room Rhasspy,Wohnzimmer
attr Deckenlampe webCmd dim:on:off


defmod Leselicht FS20 1234 11
attr Leselicht group Lampen
attr Leselicht icon light_office_desk
attr Leselicht rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off
attr Leselicht rhasspyName Leselicht
attr Leselicht room Wohnzimmer,Rhasspy


defmod Stehlampe dummy
attr Stehlampe group Lampen,Stehlampen
attr Stehlampe icon light_floor_lamp
attr Stehlampe rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentVal=state,valueOff=off
attr Stehlampe rhasspyName Stehlampe
attr Stehlampe rhasspyRoom Büro
attr Stehlampe room Büro,Rhasspy
attr Stehlampe webCmd on:off


Sentences:

[de.fhem:SetOnOffGroup]
(schalte|stelle|mache) alle $de.fhem.Group{Group} (:){Room:global}([$de.fhem.Room{Room}]) (an|ein){Value:on}
(schalte|stelle|mache) alle $de.fhem.Group{Group} (:){Room:global}([$de.fhem.Room{Room}]) (aus){Value:off}


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 10 April 2021, 11:21:12
GetOnOff

Device:

defmod Stehlampe dummy
attr Stehlampe group Lampen,Stehlampen
attr Stehlampe icon light_floor_lamp
attr Stehlampe rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentVal=state,valueOff=off
attr Stehlampe rhasspyName Stehlampe
attr Stehlampe rhasspyRoom Büro
attr Stehlampe room Büro,Rhasspy
attr Stehlampe webCmd on:off


Sentences:

[de.fhem:GetOnOff]
ist [der|die|das] $de.fhem.Device{Device} [$de.fhem.Room{Room}] (an|ein){Status:on}
ist [der|die|das] $de.fhem.Device{Device} [$de.fhem.Room{Room}] (aus){Status:off}
(läuft){Status} $de.fhem.Device{Device} [$de.fhem.Room{Room}]


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 10 April 2021, 11:45:02
GetTime

Device:
Nicht notwendig

Sentences

[de.fhem:GetTime]
wie spät [ist es]
sag mir die uhrzeit


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 10 April 2021, 11:50:23
GetWeekday

Device:
Keines notwendig

Sentences:

[de.fhem:GetWeekday]
weißt du welcher Tag heute ist
kannst du mir [bitte] sagen welcher Tag heute ist [bitte]
könntest du mir [bitte] sagen welcher Tag heute ist
kannst du mir [bitte] den [heutigen] Tag sagen
welcher [wochentag|tag] ist heute
welchen [wochentag|tag] haben wir heute


Ergebnis:
Keine Auffälligkeiten, aber definitiv ausbaufähig (vollständiges Datum).
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 10 April 2021, 11:52:47
reSpeak

Device:
Keines notwendig

Sentences:

[de.fhem:ReSpeak]
was hast du gesagt


Ergebniss:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 10 April 2021, 11:58:53
SetMute

Device:
Keines notwendig

Sentences:

[de.fhem:SetMute]
(gute nacht){Value:on}
(guten morgen){Value:off}


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 11 April 2021, 10:05:50
GetState

Device:

defmod Deckenlampe dummy
attr Deckenlampe group Deckenlampen,Lampen
attr Deckenlampe icon light_pendant_light
attr Deckenlampe readingList pct
attr Deckenlampe rhasspyGroup Deckenlampen,Lampen
attr Deckenlampe rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentVal=state,valueOff=off\
GetState:response="Helligkeit ist bei [Deckenlampe:pct] Prozent"
attr Deckenlampe rhasspyName Deckenlampe
attr Deckenlampe rhasspyRoom Wohnzimmer
attr Deckenlampe room Rhasspy,Wohnzimmer
attr Deckenlampe setList on off pct
attr Deckenlampe webCmd pct:on:off
attr Deckenlampe widgetOverride pct:slider,0,1,100 on:noArg off:noArg


Sentences:

[de.fhem:GetState]
wie ist der status [(der|des)] $de.fhem.Device{Device} [(im|in der|auf der|draußen|auf dem)] [$de.fhem.Room{Room}]


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 11 April 2021, 14:32:43
MediaChannels

Device:

defmod Fernseher dummy
attr Fernseher devStateIcon on:10px-kreis-gruen:off off:10px-kreis-rot:on
attr Fernseher group Multimedia
attr Fernseher icon rc_TV2
attr Fernseher readingList volume channel launchApp
attr Fernseher rhasspyChannels ARD=channel 201\
ZDF=channel 202\
ORF 1=channel 203\
ORF 2=channel 204\
Netflix=launchApp Netflix\
SkyOnline=launchApp SkyOnline\
YouTube=launchApp YouTube
attr Fernseher rhasspyGroup Multimedia
attr Fernseher rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentVal=state,valueOn=on\
SetNumeric:currentVal=volume,cmd=volume,minVal=0,maxVal=100,step=1,type=volume\
GetNumeric:currentVal=volume,type=volume
attr Fernseher rhasspyName Fernseher,TV
attr Fernseher rhasspyRoom Wohnzimmer
attr Fernseher room Rhasspy,Wohnzimmer
attr Fernseher setList on:noArg off:noArg channel:select,201,202,203,204 volume:slider,0,1,100 launchApp:select,Netflix,SkyOnline,YouTube
attr Fernseher webCmd on:off


Sentences:

[de.fhem:MediaChannels]
(Starte|start) den ($de.fhem.MediaChannels){Channel} auf dem ($de.fhem.Device){Device} im ($de.fhem.Room){Room}
($de.fhem.MediaChannels){Channel} [im|auf der|auf dem|in der] [$de.fhem.Room{Room}] starten
(Spiele|spiel) Playlist ($de.fhem.MediaChannels){Channel} [auf dem|in dem|im] [$de.fhem.Device{Device}] [im|auf der|auf dem|in der] [$de.fhem.Room{Room}]
(Spiele|spiel) den Favorit ($de.fhem.MediaChannels){Channel}
(schalte|wechsle) [($de.fhem.Device){Device}] [im|auf der|auf dem|in der] [$de.fhem.Room{Room}] [um] auf [den Kanal] ($de.fhem.MediaChannels){Channel}
(Sender|Kanal) auf ($de.fhem.MediaChannels){Channel} (schalten|wechseln)
(schalte|wechsle) Kanal vom ($de.fhem.Device){Device} auf ($de.fhem.MediaChannels){Channel}
Sender vom ($de.fhem.Device){Device} auf ($de.fhem.MediaChannels){Channel} (wechseln|schalten)
(Schalte|Schalt) ($de.fhem.Device){Device} um auf ($de.fhem.MediaChannels){Channel}
($de.fhem.MediaChannels){Channel} [($de.fhem.Room){Room}]
\[schalt|stell] ($de.fhem.Device){Device} [($de.fhem.Room){Room}] auf ($de.fhem.MediaChannels){Channel}


Ergebnis:
Keine Auffälligkeiten
Meine Sentences gehören aufgeräumt
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 11 April 2021, 16:45:58
MediaControls

Device:

defmod Sonos dummy
attr Sonos devStateIcon play:audio_play pause:audio_pause stop:audio_stop next:audio_ff previous:audio_rew
attr Sonos group Multimedia
attr Sonos icon sonos_play1
attr Sonos readingList power volume
attr Sonos rhasspyGroup Multimedia
attr Sonos rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off,response="Okidoki"\
GetOnOff:currentVal=state,valueOff=off\
GetNumeric:currentVal=volume,type=volume\
SetNumeric:currentVal=volume,minVal=-50,maxVal=-20,cmd=volume,step=0.5,type=volume\
MediaControls:cmdPlay=play,cmdPause=pause,cmdStop=stop,cmdBack=previous,cmdFwd=next
attr Sonos rhasspyName Sonos
attr Sonos rhasspyRoom Wohnzimmer
attr Sonos room Rhasspy,Wohnzimmer
attr Sonos setList volume:slider,-50,0.5,-20,1 power:select,on,off play:noArg stop:noArg pause:noArg next:noArg previous:noArg


Sentences:

[de.fhem:MediaControls]
(starte|start){Command:cmdPlay} [die wiedergabe] [$de.fhem.Device{Device}] [$de.fhem.Room{Room}]
(spiele|spiel) Musik{Command:cmdPlay} [$de.fhem.Device{Device}] [$de.fhem.Room{Room}]
(stoppe|stop){Command:cmdStop} [die wiedergabe] [$de.fhem.Device{Device}] [$de.fhem.Room{Room}]
(pausiere){Command:cmdPause} [die wiedergabe] [$de.fhem.Device{Device}] [$de.fhem.Room{Room}]
(nächstes|nächster){Command:cmdFwd} (lied|titel) [$de.fhem.Device{Device}] [$de.fhem.Room{Room}]
(vorheriges|voriges|vorheriger|voriger){Command:cmdBack} (lied|titel) [$de.fhem.Device{Device}] [$de.fhem.Room{Room}]


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 13 April 2021, 12:03:45
GetNumeric - desired-temp

Device:

defmod thermWohnzimmer dummy
attr thermWohnzimmer group Temperatur
attr thermWohnzimmer icon temp_inside
attr thermWohnzimmer rhasspyMapping GetNumeric:currentVal=measured-temp,type=temperature\
GetNumeric:currentVal=desired-temp,part=0,type=desired-temp
attr thermWohnzimmer rhasspyName Heizung
attr thermWohnzimmer rhasspyRoom Wohnzimmer
attr thermWohnzimmer room Rhasspy,Wetter

setstate thermWohnzimmer 2021-04-13 12:01:20 desired-temp 22.5 °C
setstate thermWohnzimmer 2021-04-11 17:59:45 measured-temp 18.3


Sentences:

[de.fhem:GetNumeric]
#Soll-Temperatur
\[wie ist die] (soll temperatur|wunsch temperatur|ziel temperatur){Type:desired-temp} [vom|des|von der|der] [($de.fhem.Device){Device}] [im|auf der|in der|auf dem] [$de.fhem.Room{Room}]
(wie (hoch|warm) ist|auf wie viel grad ist|auf was ist die){Type:desired-temp} (der|die|das) $de.fhem.Device{Device} [im|auf der|in der|auf dem] [$de.fhem.Room{Room}] gestellt


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 13 April 2021, 12:15:24
GetNumeric - temperature

Device:

defmod thermWohnzimmer dummy
attr thermWohnzimmer group Temperatur
attr thermWohnzimmer icon temp_inside
attr thermWohnzimmer rhasspyMapping GetNumeric:currentVal=measured-temp,type=temperature\
GetNumeric:currentVal=desired-temp,part=0,type=desired-temp
attr thermWohnzimmer rhasspyName Heizung
attr thermWohnzimmer rhasspyRoom Wohnzimmer
attr thermWohnzimmer room Rhasspy,Wetter

setstate thermWohnzimmer 2021-04-13 12:01:20 desired-temp 22.5 °C
setstate thermWohnzimmer 2021-04-11 17:59:45 measured-temp 18.3


Sentences:

[de.fhem:GetNumeric]
#Ist-Temperatur
(wie warm ist es|wie ist die Temperatur){Type:temperature} [vom|des|von der|der] [$de.fhem.Device{Device}] [im|auf der|in der|auf dem] [$de.fhem.Room{Room}]


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 13 April 2021, 12:23:56
SetTimer

Kein Device notwendig

Sentences:

[de.fhem:SetTimer]
labels=( Wecker | Eieruhr | Kartoffeltaimer | Teetaimer | Taimer)
# Timer auf eine Stunde, 20 Minuten und 3 Sekunden
# Timer auf eine Stunde
# Timer auf drei Minuten
\[<labels>{Label}] [in|im|in der|auf der] [$de.fhem.Room{Room}] (in|auf) [((1..60){Hour!int} (stunde|stunden))] [und] [((1..60){Min!int} (minute|minuten))] [und] [((1..60){Sec!int} (sekunde|sekunden))]

# Timer auf ein einviertel Stunden
\[<labels>{Label}] [in|im|in der|auf der] [$de.fhem.Room{Room}] (in|auf) (1..60){Hour!int} (einviertel{Min:15}|einhalb{Min:30}|dreiviertel{Min:45}) (stunde|stunden)

# Timer auf ein einhalb Minuten
\[<labels>{Label}] [in|im|in der|auf der] [$de.fhem.Room{Room}] (in|auf) (1..60){Min!int} (einviertel{Sec:15}|einhalb{Sec:30}|dreiviertel{Sec:45}) (minute|minuten)

# Timer auf eine viertel/halbe/dreiviertel Stunde
\[<labels>{Label}] [in|im|in der|auf der] [$de.fhem.Room{Room}] (in|auf) ((eine viertel){Min:15}|(eine halbe){Min:30}|(eine dreiviertel){Min:45}) (stunde)

# Timer auf eine viertel/halbe/dreiviertel Minute
\[<labels>{Label}] [in|im|in der|auf der] [$de.fhem.Room{Room}] (in|auf) ((eine viertel){Sec:15}|(eine halbe){Sec:30}|(eine dreiviertel){Sec:45}) (minute)

# Timer auf 12 Uhr 15
\[<labels>{Label}] [in|im|in der|auf der] [$de.fhem.Room{Room}] (in|auf|um) (1..24){Hourabs!int} uhr [(1..60){Min!int}]

# Timer löschen
# Stoppe den Timer
(lösche|entferne|stoppe){CancelTimer} [den|die] [<labels>{Label}]  [in|im|in der|auf der] [$de.fhem.Room{Room}]
\[<labels>{Label}] [in|im|in der|auf der] [$de.fhem.Room{Room}] (abbrechen|stoppen|löschen){CancelTimer}


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 13 April 2021, 12:46:15
GetNumeric - volume

Device:

defmod Fernseher dummy
attr Fernseher devStateIcon on:10px-kreis-gruen:off off:10px-kreis-rot:on
attr Fernseher group Multimedia
attr Fernseher icon rc_TV2
attr Fernseher readingList volume channel launchApp
attr Fernseher rhasspyChannels ARD=channel 201\
ZDF=channel 202\
ORF 1=channel 203\
ORF 2=channel 204\
Netflix=launchApp Netflix\
SkyOnline=launchApp SkyOnline\
YouTube=launchApp YouTube
attr Fernseher rhasspyGroup Multimedia
attr Fernseher rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentVal=state,valueOn=on\
SetNumeric:currentVal=volume,cmd=volume,minVal=0,maxVal=100,step=1,type=volume\
GetNumeric:currentVal=volume,type=volume\
Status:response={my $tvstate=ReadingsVal($DEVICE,'state','off');;my $volume=ReadingsVal($DEVICE,'volume',0);; my $app=ReadingsVal($DEVICE,'launchApp','nichts');;my $tvstatet='ausgeschaltet';; if ($tvstate eq 'on') {$tvstatet='eingeschaltet'};;return qq($DEVICE ist $tvstatet, die Lautstärke beträgt $volume und es läuft $app);;}
attr Fernseher rhasspyName Fernseher,TV
attr Fernseher rhasspyRoom Wohnzimmer
attr Fernseher room Rhasspy,Wohnzimmer
attr Fernseher setList on:noArg off:noArg channel:select,201,202,203,204 volume:slider,0,1,100 launchApp:select,Netflix,SkyOnline,YouTube
attr Fernseher webCmd on:off


Sentences:

[de.fhem:GetNumeric]
(wie laut|wie ist die lautstärke){Type:volume} [vom|der|von der|des] $de.fhem.Device{Device}  [(im|in der|auf der|draußen|auf dem)] [$de.fhem.Room{Room}]


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 13 April 2021, 17:16:47
GetNumeric - airHumidity

Device:

defmod tempOutside dummy
attr tempOutside group Temperatur
attr tempOutside icon temp_outside
attr tempOutside rhasspyMapping GetNumeric:currentVal=temperature,part=0,type=temperature\
GetNumeric:currentVal=humidity,part=0,type=airHumidity
attr tempOutside rhasspyName tempOutside
attr tempOutside rhasspyRoom Draußen
attr tempOutside room Rhasspy,Wetter

setstate tempOutside 2021-04-11 17:33:31 humidity 41 %
setstate tempOutside 2021-04-11 16:52:43 temperature 23.4 °C


Sentences:

[de.fhem:GetNumeric]
#airHumidity
(wie [hoch] ist die luftfeuchtigkeit|wie feucht ist es|welche luftfeuchtigkeit zeigt){Type:airHumidity} [der|die|das] [$de.fhem.Device{Device}] [im|auf der|in der|auf dem] [$de.fhem.Room{Room}]


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 13 April 2021, 17:59:58
GetNumeric - battery

Device:

defmod Staubsauger dummy
attr Staubsauger devStateIcon start:audio_play pause:audio_pause stop:audio_stop resume:audio_play charge:control_home
attr Staubsauger group Haushaltsgeräte
attr Staubsauger icon vacuum_top
attr Staubsauger readingList batteryPercent fan_power
attr Staubsauger rhasspyMapping SetOnOff:cmdOn=start,cmdOff=charge\
GetOnOff:currentVal=state,cmdOff=charge\
GetNumeric:currentVal=batteryPercent,type=battery\
GetNumeric:currentVal=fan_power,map=percent,type=setTarget
attr Staubsauger rhasspyName Staubsauger
attr Staubsauger room Rhasspy,Wohnzimmer
attr Staubsauger setList fan_power:slider,0,1,255 start:noArg pause:noArg stop:noArg resume:noArg charge:noArg

setstate Staubsauger 2021-04-13 17:36:29 batteryPercent 65
setstate Staubsauger 2021-04-13 17:35:59 fan_power 77


Sentence:

[de.fhem:GetNumeric]
#battery
(wie ist der akku stand){Type:battery} [vom|des|von der|von dem] $de.fhem.Device{Device} [(im|in der|auf der|draußen|auf dem)] [$de.fhem.Room{Room}]


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 13 April 2021, 18:08:03
GetNumeric - setTarget

Device:

defmod Staubsauger dummy
attr Staubsauger devStateIcon start:audio_play pause:audio_pause stop:audio_stop resume:audio_play charge:control_home
attr Staubsauger group Haushaltsgeräte
attr Staubsauger icon vacuum_top
attr Staubsauger readingList batteryPercent fan_power
attr Staubsauger rhasspyMapping SetOnOff:cmdOn=start,cmdOff=charge\
GetOnOff:currentVal=state,cmdOff=charge\
GetNumeric:currentVal=batteryPercent,type=battery\
GetNumeric:currentVal=fan_power,map=percent,type=setTarget
attr Staubsauger rhasspyName Staubsauger
attr Staubsauger room Rhasspy,Wohnzimmer
attr Staubsauger setList fan_power:slider,0,1,255 start:noArg pause:noArg stop:noArg resume:noArg charge:noArg

setstate Staubsauger 2021-04-13 17:36:29 batteryPercent 65
setstate Staubsauger 2021-04-13 17:35:59 fan_power 77


Sentence:

[de.fhem:GetNumeric]
#setTarget
(auf wie viel|auf was|wie hoch) ist [der|die|das] (kraft|saug leistung){Type:setTarget} [vom|des|von der|von dem] $de.fhem.Device{Device} [(im|in der|auf der|auf dem)] [$de.fhem.Room{Room}] [gestellt]


Ergebnis:
Keine Auffälligkeiten
Bei Gelegenheit könnte man die Antwort optimieren. "Staubsauger ist auf 77 gestellt" ist nicht optimal.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 13 April 2021, 18:28:19
GetNumeric - soilMoisture

Device:

defmod Palme dummy
attr Palme group Pflanzen
attr Palme icon weather_pollen
attr Palme readingList moisture
attr Palme rhasspyMapping GetNumeric:currentVal=moisture,type=soilMoisture
attr Palme rhasspyName Palme
attr Palme room Schlafzimmer,Rhasspy
attr Palme stateFormat moisture

setstate Palme 2021-04-13 18:18:43 moisture 98


Sentence:

[de.fhem:GetNumeric]
#soilMoisture
(wie [hoch] ist die boden feuchte|wie feucht ist die erde|welche boden feuchte zeigt){Type:soilMoisture} [der|die|das|des] [$de.fhem.Device{Device}] [im|auf der|in der|auf dem] [$de.fhem.Room{Room}]


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 14 April 2021, 09:39:19
GetNumeric - waterLevel

Device:

defmod Zisterne dummy
attr Zisterne icon well
attr Zisterne readingList waterLevel
attr Zisterne rhasspyMapping GetNumeric:currentVal=waterLevel,type=waterLevel
attr Zisterne rhasspyName Zisterne,Brunnen,Tank
attr Zisterne rhasspyRoom Garten,Draußen
attr Zisterne room Garten,Rhasspy
attr Zisterne stateFormat waterLevel

setstate Zisterne 2021-04-14 09:23:28 waterLevel 80


Sentence:

[de.fhem:GetNumeric]
#waterLevel
(wie [hoch] ist der wasser stand|wie viel wasser ist){Type:waterLevel} $de.fhem.Device{Device} [im|auf der|in der|auf dem] [$de.fhem.Room{Room}]


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 14 April 2021, 13:36:25
SetColor

Device:

defmod Stimmungsleuchte dummy
attr Stimmungsleuchte devStateIcon {Color::devStateIcon($name,"rgb","Color","pct","state")}
attr Stimmungsleuchte group Lampen
attr Stimmungsleuchte icon light_party
attr Stimmungsleuchte readingList pct rgb
attr Stimmungsleuchte rhasspyColors rot=rgb FF0000\
grün=rgb 00FF00\
blau=rgb 0000FF
attr Stimmungsleuchte rhasspyGroup Lampen
attr Stimmungsleuchte rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentVal=state,valueOff=off\
GetNumeric:currentVal=pct,type=brightness
attr Stimmungsleuchte rhasspyName Stimmungsleuchte
attr Stimmungsleuchte rhasspyRoom Wohnzimmer
attr Stimmungsleuchte room Rhasspy,Wohnzimmer
attr Stimmungsleuchte setList on off pct rgb
attr Stimmungsleuchte webCmd rgb:pct:on:off
attr Stimmungsleuchte widgetOverride pct:slider,0,1,100 on:noArg off:noArg rgb:colorpicker,RGB

setstate Stimmungsleuchte 2021-04-14 13:32:11 rgb 00FF00


Sentence:

[de.fhem:SetColor]
\[setze|färbe] $de.fhem.Device{Device} [$de.fhem.Room{Room}] [auf die Farbe] $de.fhem.Color{Color}


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 14 April 2021, 16:32:03
SetNumeric - general

Device:

defmod Stimmungsleuchte dummy
attr Stimmungsleuchte devStateIcon {Color::devStateIcon($name,"rgb","Color","pct","state")}
attr Stimmungsleuchte group Lampen
attr Stimmungsleuchte icon light_party
attr Stimmungsleuchte readingList pct rgb
attr Stimmungsleuchte rhasspyColors rot=rgb FF0000\
grün=rgb 00FF00\
blau=rgb 0000FF
attr Stimmungsleuchte rhasspyGroup Lampen
attr Stimmungsleuchte rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentVal=state,valueOff=off\
GetNumeric:currentVal=pct,type=brightness\
SetNumeric:currentVal=pct,cmd=pct,minVal=0,maxVal=255,step=1,type=brightness
attr Stimmungsleuchte rhasspyName Stimmungsleuchte,Stimmungslampe
attr Stimmungsleuchte rhasspyRoom Wohnzimmer
attr Stimmungsleuchte room Rhasspy,Wohnzimmer
attr Stimmungsleuchte setList on off pct rgb
attr Stimmungsleuchte webCmd rgb:pct:on:off
attr Stimmungsleuchte widgetOverride pct:slider,0,1,255 on:noArg off:noArg rgb:colorpicker,RGB

setstate Stimmungsleuchte 2021-04-14 16:30:34 pct 25


Sentence:

[de.fhem:SetNumeric]
#general
(stelle|schalte) [der|die|das|den] $de.fhem.Device{Device} [im|auf der|in der|auf dem] [$de.fhem.Room{Room}] auf (0..100){Value!int} [prozent{Unit:percent}]


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 14 April 2021, 16:36:24
SetNumeric - brightness

Device:

defmod Stimmungsleuchte dummy
attr Stimmungsleuchte devStateIcon {Color::devStateIcon($name,"rgb","Color","pct","state")}
attr Stimmungsleuchte group Lampen
attr Stimmungsleuchte icon light_party
attr Stimmungsleuchte readingList pct rgb
attr Stimmungsleuchte rhasspyColors rot=rgb FF0000\
grün=rgb 00FF00\
blau=rgb 0000FF
attr Stimmungsleuchte rhasspyGroup Lampen
attr Stimmungsleuchte rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentVal=state,valueOff=off\
GetNumeric:currentVal=pct,type=brightness\
SetNumeric:currentVal=pct,cmd=pct,minVal=0,maxVal=255,step=1,type=brightness
attr Stimmungsleuchte rhasspyName Stimmungsleuchte,Stimmungslampe
attr Stimmungsleuchte rhasspyRoom Wohnzimmer
attr Stimmungsleuchte room Rhasspy,Wohnzimmer
attr Stimmungsleuchte setList on off pct rgb
attr Stimmungsleuchte webCmd rgb:pct:on:off
attr Stimmungsleuchte widgetOverride pct:slider,0,1,255 on:noArg off:noArg rgb:colorpicker,RGB

setstate Stimmungsleuchte 2021-04-14 16:30:34 pct 25


Sentence:

[de.fhem:SetNumeric]
#brightness
(stelle|schalte|erhöhe|mache) $de.fhem.Device{Device} [$de.fhem.Room{Room}] [um] [(0..255){Value}] [prozent{Unit:percent}] (heller){Change:lightUp}
(stelle|schalte|senke|mache) $de.fhem.Device{Device} [$de.fhem.Room{Room}] [um] [(0..255){Value}] [prozent{Unit:percent}] (dunkler){Change:lightDown}


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 14 April 2021, 16:48:30
SetNumeric - volume

Device:

defmod Fernseher dummy
attr Fernseher devStateIcon on:10px-kreis-gruen:off off:10px-kreis-rot:on
attr Fernseher group Multimedia
attr Fernseher icon rc_TV2
attr Fernseher readingList volume channel launchApp
attr Fernseher rhasspyChannels ARD=channel 201\
ZDF=channel 202\
ORF 1=channel 203\
ORF 2=channel 204\
Netflix=launchApp Netflix\
SkyOnline=launchApp SkyOnline\
YouTube=launchApp YouTube
attr Fernseher rhasspyGroup Multimedia
attr Fernseher rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentVal=state,valueOn=on\
SetNumeric:currentVal=volume,cmd=volume,minVal=0,maxVal=100,step=1,type=volume\
GetNumeric:currentVal=volume,type=volume\
GetState:response={my $tvstate=ReadingsVal($DEVICE,'state','off');;my $volume=ReadingsVal($DEVICE,'volume',0);; my $app=ReadingsVal($DEVICE,'launchApp','nichts');;my $tvstatet='ausgeschaltet';; if ($tvstate eq 'on') {$tvstatet='eingeschaltet'};;return qq($DEVICE ist $tvstatet, die Lautstärke beträgt $volume und es läuft $app);;}
attr Fernseher rhasspyName Fernseher,TV
attr Fernseher rhasspyRoom Wohnzimmer
attr Fernseher room Rhasspy,Wohnzimmer
attr Fernseher setList on:noArg off:noArg channel:select,201,202,203,204 volume:slider,0,1,100 launchApp:select,Netflix,SkyOnline,YouTube
attr Fernseher webCmd on:off


Sentences:

#volume
\[(stelle|ändere)] [die] lautstärke{Type:volume} [vom|von der|von dem|des] [$de.fhem.Device{Device}] [im|auf der|in der|auf dem] [$de.fhem.Room{Room}] (auf|um) (0..100){Value!int} [prozent{Unit:percent}]
(stelle|schalte|mache) [$de.fhem.Device{Device}] [$de.fhem.Room{Room}] [um] [(0..10){Value!float}] [dezibel{Unit}|prozent{Unit:percent}] (lauter|höher){Change:volUp}
(stelle|schalte|mache) [$de.fhem.Device{Device}] [$de.fhem.Room{Room}] [um] [(0..10){Value!float}] [dezibel{Unit}|prozent{Unit:percent}] (leiser|niedriger){Change:volDown}


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 15 April 2021, 16:24:33
SetNumeric - temperature

Device:

defmod thermWohnzimmer dummy
attr thermWohnzimmer group Temperatur
attr thermWohnzimmer icon temp_inside
attr thermWohnzimmer readingList measured-temp desired-temp
attr thermWohnzimmer rhasspyMapping SetOnOff:cmdOn=desired-temp 22.5,cmdOff=desired-temp 0\
GetOnOff:currentVal=desired-temp,valueOff=0\
GetNumeric:currentVal=measured-temp,type=temperature\
GetNumeric:currentVal=desired-temp,part=0,type=desired-temp\
SetNumeric:currentVal=desired-temp,cmd=desired-temp,part=0,minVal=0,maxVal=23,step=0.5,type=temperature
attr thermWohnzimmer rhasspyName Heizung
attr thermWohnzimmer rhasspyRoom Wohnzimmer
attr thermWohnzimmer room Rhasspy,Wetter
attr thermWohnzimmer setList desired-temp
attr thermWohnzimmer stateFormat measured-temp °C / desired-temp °C

setstate thermWohnzimmer 2021-04-15 16:22:53 desired-temp 5.5
setstate thermWohnzimmer 2021-04-11 17:59:45 measured-temp 18.3


Sentences:

#temperature
(stelle|schalte|mache) $de.fhem.Device{Device} [$de.fhem.Room{Room}] [um] [(0..30 [komma:. 1..9]){Value!customFloat}] [grad{Unit}] (höher|wärmer){Change:tempUp}
(stelle|schalte|mache) $de.fhem.Device{Device} [$de.fhem.Room{Room}] [um] [(0..30 [komma:. 1..9]){Value!customFloat}] [grad{Unit}] (niedriger|kälter|kühler){Change:tempDown}


Ergebnis:
Funktioniert grundsätzlich. Kommazahlen lassen sich aber in Rhasspy nur abbilden, wenn man einen Custom-Converter verwendet. Siehe dazu: https://github.com/drhirn/fhem-rhasspy/tree/0.4.9#custom-converter-to-use-real-numbers
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 16 April 2021, 17:24:30
SetNumeric - setTarget

Device:

defmod RolladenWzLi dummy
attr RolladenWzLi alias Rollo
attr RolladenWzLi genericDeviceType blind
attr RolladenWzLi group Rollläden
attr RolladenWzLi readingList pct
attr RolladenWzLi rhasspyMapping SetOnOff:cmdOn=pct 100,cmdOff=pct 0\
GetOnOff:currentVal=pct,valueOff=pct 0\
GetNumeric:currentVal=pct,type=setTarget\
SetNumeric:currentVal=pct,cmd=pct,map=percent,minVal=0,maxVal=100,type=setTarget\

attr RolladenWzLi room Wohnzimmer,Rhasspy
attr RolladenWzLi setList pct

setstate RolladenWzLi 2021-04-16 17:22:39 pct 30


Sentences:

#setTarget
(stelle|schalte|mache) $de.fhem.Device{Device} [$de.fhem.Room{Room}] [um] [(0..100){Value!float}] [prozent{Unit:percent}] [weiter] (höher|rauf){Change:setUp}
(stelle|schalte|mache) $de.fhem.Device{Device} [$de.fhem.Room{Room}] [um] [(0..100){Value!float}] [prozent{Unit:percent}] [weiter] (niedriger|runter){Change:setUp}


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 16 April 2021, 17:26:42
GetNumeric - brightness

Device:

defmod Deckenlampe dummy
attr Deckenlampe group Deckenlampen,Lampen
attr Deckenlampe icon light_pendant_light
attr Deckenlampe readingList pct
attr Deckenlampe rhasspyGroup Deckenlampen,Lampen
attr Deckenlampe rhasspyMapping SetOnOff:cmdOn=on,cmdOff=off\
GetOnOff:currentVal=state,valueOff=off\
GetNumeric:currentVal=pct,type=brightness
attr Deckenlampe rhasspyName Deckenlampe
attr Deckenlampe rhasspyRoom Wohnzimmer
attr Deckenlampe room Rhasspy,Wohnzimmer
attr Deckenlampe setList on off pct
attr Deckenlampe webCmd pct:on:off
attr Deckenlampe widgetOverride pct:slider,0,1,100 on:noArg off:noArg

setstate Deckenlampe off
setstate Deckenlampe 2021-04-11 09:35:24 pct 62
setstate Deckenlampe 2021-04-14 10:21:58 state off


Sentence:

[de.fhem:GetNumeric]
#brightness
(wie hell ist|wie hell leuchtet|helligkeit){Type:brightness} $de.fhem.Device{Device}  [(im|in der|auf der|draußen|auf dem)] [$de.fhem.Room{Room}]


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 16 April 2021, 17:41:01
Custom Intent


attr Rhasspy rhasspyIntents Calculation=rhasspyCalc(Number1,Number2,Operator)


99_myUtils.pm

sub rhasspyCalc{
  my $val1 = shift // return;
  my $val2 = shift // return;
  my $op = shift // return;

  my $response = "Dafür muss ich nochmal in die Nachhilfe";

  if ($op eq "plus") {
    $response = "Das Ergebnis ist " . ($val1 + $val2);
  }

  if ($op eq "minus") {
    $response = "Das Ergebnis ist " . ($val1 - $val2);
  }

  if ($op eq "mul") {
    $response = "Das Ergebnis ist " . ($val1 * $val2);
  }

  if ($op eq "div") {
    $response = "Das Ergebnis ist " . ($val1 / $val2);
  }

  $response =~ s/\./,/ig;
  return $response;
}


Sentence:

[de.fhem:Calculation]
(was macht|was ergibt|was ist) (0..10){Number1} ([plus|und]{Operator:plus}|[minus|weniger]{Operator:minus}|[mal|multipliziert mit]{Operator:mul}|[durch|geteilt durch|dividiert durch]{Operator:div}) (0..10){Number2}


Ergebnis:
Keine Auffälligkeiten
Titel: Antw:FHEM und Rhasspy
Beitrag von: rakete123 am 16 April 2021, 20:43:44
Sagt mal, wie ändere ich denn diesen "ekelhaften" Ton der abgespielt wird, wenn Porcupine das Hotword erkennt?

Edit: Ah gefunden ;-) Gibts da ein paar coole Ideen?

Und: Muss ich die sentences auch am satellite pflegen oder nur am master?
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 16 April 2021, 21:19:00
Sentences/Slots/etc. musst du nur an der Base anlegen
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 19 April 2021, 16:49:42
Ihr, die ihr mit Computern sprecht. Wie ihr wisst, wird fhem-rhasspy ja beim nächsten FHEM-Monatsrückblick (https://forum.fhem.de/index.php/topic,120232.msg1147143.html#msg1147143) vorgestellt.

Daher wäre es total super, wenn ihr mir noch ein paar Punkte schreiben könntet, die
- für euch nicht klar sind
- für euch nicht funktionieren
- man verbessern könnte

Auch (bzw. v.a.), was die Dokumentation betrifft.

Hat jemand von euch meine ganzen Beispiele in diesem Thread mal durchgespielt? Wenn ja, hat das geklappt?

Und falls euch sonst noch was einfällt, was euch bezüglich des Moduls beschäftigt (Kritik, Vorschläge, Lob&Tadel) nur her damit.

Danke!
Titel: Antw:FHEM und Rhasspy
Beitrag von: rakete123 am 19 April 2021, 17:51:02
Ich paar Tage brauch ich noch. SetOnOff geht aber ;-)
Kann man eigentlich nach dem Hotword irgendwie abbrechen? Also wenn man doch nichts sagen will.
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 19 April 2021, 18:00:40
Naja, gar nichts sagen. Oder, wenn's schnell gehen soll, einen Blödsinn. ;)
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 29 April 2021, 16:26:09
Habe gerade eine Quelle für lizenzfreie Sound-Files gefunden: https://soundbible.com

Da eignet sich z.B. das hier gut für den Timer: https://soundbible.com/1787-Annoying-Alarm-Clock.html
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 04 Mai 2021, 11:22:21
INFO

Ich habe das GitHub-Repository nach https://github.com/fhem/fhem-rhasspy verschoben.

Das ursprüngliche gibt's zwar noch. Ist aber Read-Only und nur aus sentimentalen Gründen (vorläufig) noch vorhanden. Bitte nicht mehr verwenden.
Titel: Antw:FHEM und Rhasspy
Beitrag von: rakete123 am 07 Mai 2021, 20:05:25
Hallo zusammen,
wie würde man denn eine WEtter Ansage machen? Sowas wie "Wie ist das Wetter draußen?" oder "Wie warm ist es draußen?"
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 10 Mai 2021, 10:10:07
Das kommt drauf an, wie dein Device aussieht.

Wenn's ein simpler Aussenthermometer ist, nimmst du einfach den genericDeviceType thermometer und gibst ihm noch den Raum "draußen".

Wenn's ein Wetter-Device ist, kannst du mit Shortcuts arbeiten.

Oder du erstellst dir einen Intent mit einer 99_RHASSPY_Utils_....

Ich hab das z.B. so testweise gemacht:


sub getWeather {
    my $name = shift;
    my $json = shift;
    my $hash = $defs{$name};
    my $weatherDev = 'weatherProplanta';
    my $data;

    my $response = RHASSPY::getResponse($hash, 'NoValidData');

    if ( !eval { $data  = decode_json($json) ; 1 } ) {
        Log3($name, 1, "JSON decoding error, $json seems not to be valid JSON data:  $@");
        return "Error! $json seems not to be valid JSON data!";
    }
   
    my $day = 0;
    if ($data->{Day}){$day = $data->{Day}};
    my $weatherReading = "fc".$day."_weather12";
    my $weather = ReadingsVal($weatherDev,$weatherReading,undef);
    if ($weather){
        $response = qq(das wetter ist $weather);
        if ($day > 0){$response = qq(das wetter wird $weather)}
    }
    return $response;
}
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 12 Mai 2021, 09:03:13
Guten Morgen,

leider treibt Rhasspy die Familie langsam in den Wahnsinn.
Ich habe in einigen Räumen einen Satelliten stehen, als wakeword nutze ich aktuell Porcupine mit dem Wakeword "Jarvis" und seit neustem auch mal "Hey google".
Die Sensitivity steht auf 0.4.
Wenn ich das Hotword sage reagiert er in 50-70% der Fälle - okay...
Was aber viel schlimmer ist, wenn man sich im Raum unterhält, der Fernseher oder das Radio läuft reagiert er ständig und nein es wird selten über "Jarvis" oder "Google" gesprochen.
Anschließend erkennt er irgendetwas und stellt entweder nen Timer welcher dann mitten in der Nacht los geht oder es kommt nur die Bestätigung "OK" so das ich nachsehen muss in welchem Raum er jetzt grade irgendein Device aktiviert hat.
Manchmal saugt er auch einfach mal das Erdgeschoss - nett gemeint aber meistens zum falschen Zeitpunkt.

Hat jemand eine Idee bzw. eine gute Einstellung dafür?
Titel: Antw:FHEM und Rhasspy
Beitrag von: rakete123 am 12 Mai 2021, 09:10:20
Hallo,

habe das gleiche Problem wie davedeluxe. Bei mir fahren ständig die Rollos hoch und runter :-D
Teilweise durchs TV/Radio ausgelöst, teilweise wenn sich einfach Menschen unterhalten.

mfg
Marcel
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 12 Mai 2021, 09:11:18
Nein, leider keine funktionierende Idee.

Ich hab das Problem auch. Hatte ich aber mit Snips und Alexa auch schon. Du kannst nur zwei Dinge machen:
1. Mit der Sensitivity spielen
2. Die Silence Detection bei Speech2Text anpassen

Und dich im Rhasspy Forum umsehen. Vielleicht findest du da was hilfreiches. Falls ja, ich wäre brennend daran interessiert.
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 12 Mai 2021, 09:16:54
Okay,
dann bin ich wenigstens nicht der Einzige :)

@rakete123 das mit den Rolläden hatte ich auch, da habe ich mir ein eigenes Intent gebaut für und lass es nur zeit- bzw. helligkeitbasiert zu, das er Rollos bedienen darf.
z.B.  wenn es draußen noch/schon hell ist darf er sie nicht runter fahren. Wenn man es ihm innerhalb von 2 min nochmal sagt, macht er es aber doch.

Vielleicht hilft dir das.
Titel: Antw:FHEM und Rhasspy
Beitrag von: rakete123 am 13 Mai 2021, 09:01:43
Sag mal ist das eigentlich dein Entwurf? https://www.thingiverse.com/thing:4766696
Der gleiche Name? Zufall?

Edit: Falls ja, wie hast du den Lautsprecherstoff befestigt? Und kannst du Schrauben empfehlen? Bin noch recht neu im 3D Drucker Business und irgendwie noch etwas einfallslos. :-D
Titel: Antw:FHEM und Rhasspy
Beitrag von: davedeluxe am 13 Mai 2021, 09:46:34
Hi, ja das ist von mir.
Ich habe den Deckel ringsum mit etwas Klebstoff eingeschmiert, den Stoff etwas größer gelassen und auf den Deckel gelegt.
Anschließend den Deckel falschrum eingesetzt so das der Stoff vom Gehäuse angedrückt wird.
Sobald der Kleber fest ist, den überstehenden Stoff abschneiden und den Deckel korrekt einsetzen.
Ggf. an der Kante den Stoff leicht mit nem kleinen Schraubenzieher rein schieben.
Ich hoffe das war einigermaßen verständlich :)
Ansonsten mach ich dir gerne Bilder davon.

Die Schrauben hatte ich von kleinen Servos übrig...

Gutes Gelingen!

Grüße Dave
Titel: Antw:FHEM und Rhasspy
Beitrag von: drhirn am 21 Mai 2021, 09:34:17
Ich schließe diesen Thread, damit's nicht zu unübersichtlich wird. Für weitere Fragen bitte einfach einen neuen aufmachen.