SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai

Begonnen von Thyraz, 21 Juli 2018, 20:28:48

Vorheriges Thema - Nächstes Thema

Thyraz

Bessere Antworten sind für die Zukunft geplant.
Bin mir hier aber noch nicht so sicher wie das genau aussehen soll.

Das Nachfragen über die Snips-interne Funktion indem man einen Slot als required markiert gefällt mir nicht so.
Wir haben hier immerhin schon Intents bei denen es je nach Kommando reicht 1-2 Slots anzusagen.
Aber es muss dann eben eine bestimmte Kombi sein.
Solche komplexeren Dinge lassen sich eigentlich erst in Fhem auswerten.

Auch bin ich persönlich kein Freund dieser Nachfragen.
Bedeutet nicht, dass sie im Modul nicht möglich sein sollen, aber wenn dann eben abschaltbar.

An Alexa hat mich am meisten genervt, dass sie manchmal nicht nur meinte das Wakeword gehört zu haben, sondern auch einen unvollständigen SmartHome Befehl.
Wenn das passiert z.B. während ein Film läuft oder sich Gäste lauter unterhalten, stellt die Gute gefühlt 10x die Frage welches Gerät man denn gemeint hat bevor sie aufgibt.

Mein Wunsch wäre eher ein kurzer Failed-Sound statt langer Sprache.
Wenn das passiert wiederholt man den Befehl eben noch einmal.
Aber da der Play Befehl zum Abspielen von Sounds noch nicht funktioniert wird das noch nichts. :P

Was ist denn der allgemeine Tenor hier?
Will die Mehrzahl Nachfragen wie ,,welches Gerät soll ich einschalten?", einen Fehler ,,Zum Einschalten muss ein Gerät genannt werden." oder reicht ein Fehlersound und wenn das oft vorkommt schaut man eben im Fhem Webinterface was Snips da immer falsch versteht?

@mssommer: einen Type gibt es aber auch hier.
Nur greift der zur Zeit noch nicht wenn man den Type nicht explizit nennt.
Also z.B. bei ,,Stelle die Lampe heller" statt ,,Helligkeit der Lampe erhöhen".
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

tomster

#91
So, nun bin ich dazu gekommen Dein Modul einmal auszuprobieren. Im Großen und Ganzen bleibt mir nur zu sagen: Ich bin begeistert!

Auch wenn ich bei der Spracherkennung mit dem einen oder anderen Wort (z.B. Spiegel) noch nicht klarkomme, so kann ich schon einmal über Snips eine Lampe ein-/ ausschalten. Ich hab mich selten so darüber gefreut, dass ein Licht angeht, wie vorhin ;-)

Ich hab zwar keinen Vergleich mit dem Aufwand, den eine Alexa/ Google-Sprachsteuerung in FHEM mit sich bringen würde, aber Snips ist wirklich schnell eingerichtet.

Nun muss ich mir nur noch Gedanken darüber machen, wie ich mit den Intents meinen Smart Mirror, respektive das dort angezeigte FTUI dazu bewege verschiedene Widgets anzuzeigen.
Danke Thyraz!

mark79

Zitat von: Thyraz am 08 August 2018, 10:12:43
Da bei mir das System in einem Proxmox Container läuft, wird zumindest das Host System tatsächlich praktisch nie neu gebootet. Aber auch der Snips Container hat glaub noch keinen Reboot erlebt seit der Installation.
Ich mach schon öfters neustarts, aber ich fummel wohl auch zu viel rum. :D
Das würde mich interessieren, das kannst du bei Gelegenheit mal testen. :)

Danke für die Rückmeldungen...  Dann wird es wohl am Kernel vom Orange PI/Rock64 liegen.
Irgendwo hatte ich auch gelesen, das die das mit einem Kernel update für den RPi gefixt haben.

Aber beim Orange PI ist das an sich kein Problem, wenn man ihn vom Strom nimmt, funktioniert das Micro ja.
Das hatte ich eh so vor, wenn keiner zuhause ist, das er dann via Sonoff Steckdose ausgeschaltet wird.

Nur beim Rock64 ist das doof. Weil das der Server ist und da kommen reboots schon mal vor und dann immer den USB Stecker raus ziehen ist doof.
Ich brauche dann ein anderes Micro.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

tomster

Mir ist gerade noch was aufgefallen:
Ich habe den Snips-Server mittels shell-command beendet, um die assistant-files zu ändern. Danach konnte aber den Server nicht mehr starten. Erst nach einem Neustart des RasPis ging er wieder.

Mach ich etwas falsch oder ist das ein Bug irgendwo?

Thyraz

@tomster wie stoppst und startest du Snips genau?
Nutzt du Polly als Stimme oder die Standardstimme von Snips?

Sind ja mehrere Services und ich weiß auch nicht was passiert wenn das normale snips-tts und snips-tts-polly gleichzeitig laufen.

Hatte damit bisher noch keine Probleme.
Ein sudo systemctl status snips* sollte auch aufzeigen ob alle Dienste die nötig sind laufen.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

tomster

#95
Ich stoppe und versuche wieder zu starten über die systemctl-Befehle.
Status funktioniert dann auch nicht. Starten lassen sich die snips-Server dann erst wieder nach einem Neustart.

Ist ein ziemlich "frisches" und unverbasteltes Stretch-Image auf einem RasPi 2. Kein Polly, nur die Default-Voice.

--edit--
Mit
$ sudo service snips-hotword restart
$ sudo service snips-audio-server restart

kann ich die beiden Server jedoch wieder starten...

kud

Stehe noch ein wenig auf dem Schlauch mit dem Erweitern von Snips.
Habe mir eine Rasenroboter gegönnt , welcher in FHEM eingebunden ist.
Dieser liefert diverse Readings wie Batterie in % , Voltage, mowerStatusTxt, ... also diverse Zahlen, Prozentangaben und Textmeldungen.
Wie kann ich diesen am besten in Snips einbinden?
In der Snipsconsole haben zB. "wie ist die Batterie im Rasenmäher" bei getnumeric eingegeben. Was ist jetzt das Device was der Type?
Wie sollte SnipsMapping aussehen? (Dieses Mapping könnte im Git vielleicht verständlicher beschrieben sein.. ich Dummie kapiers nicht ;-((
Danke für die Geduld.

Thyraz

Der Type wäre schon (wie voll ist die) ,,Batterie", bzw. andere Spracheingaben könnten ,,Batteriestand", ,,Ladezustand", ,,wie voll geladen ..." sein.

Dein Problem ist, dass es den Type bisher nicht gibt. ;)
Die Standard Intents auf die Weise durch euch zu erweitern wird so wohl auch nicht klappen,
da ja auch die passenden Antwortsätze im Modul definiert werden müssen.
Zudem soll ja demnächst nicht mehr geforked werden müssen.

Solche Sachen sollten wir also eher hier sammeln und ich schaue, dass alle geläufigen Sachen soweit mit in die Intents kommen.
Für Batterie hab ich mir das gleich mal notiert.

Du würdest dann also einfach wieder ein Mapping für GetNumeric vom Typ Batterie hinzufügen und entweder das Volt oder Prozent Reading als Quelle für den Ist-Wert wählen, je nachdem was die aussagekräftiger erscheint.

Für den Status Text, hätte ich noch eine Idee, die einen für einfache Sachen vom Erstellen eines CustomIntents + zugehöriger Perl Funktion bringt:
Einen Status Intent bei dem ihr die Antwort im Mapping bei jedem Gerät festlegen könnt also nach dem Motto:
Status=Temperatur beträgt [device:reading1] bei [device:reading2] Prozent Luftfeuchtigkeit. Batteriezustand ist [device:reading3]

Das würde recht viel Freiheit bringen.
Die Frage muss dann aber eben immer ,,Wie ist der Status von GerätXYZ" lauten.

Freie Fragen gibt es logischerweise nur durch eigene Intents und darin enthaltenen Slots und Beispielsätzen.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

shilbert

Danke für die bisherige Arbeit an dem Modul.

Jalousien hoch/runter , Markise rein/raus ist schon cool. Hatte immer das Problem, dass die Jalousien zwar automatisiert morgens/Sonnenaufgang hochgingen und abends runter aber wenn die Sonne voll reinscheint, dann musste ich doch in FHEM und runterfahren. Das kann ich jetzt ganz bequem per Spracheingabe.

Markise fuhr bei mir in Abhängigkeit von Regentropfen und Wind jetzt schon automatisch rein aber immer wenn ich das Haus verlassen habe, musste ich es über FHEM/Fernbedienung reinfahren. Jetzt kann ich das einfach von der Tür aus noch schnell ansagen und zacke. Großartig.

Das mit dem Rasenmäher wäre für mich auch wichtig. Als Startpunkt für eine echte SNIPS app habe ich folgenden Code gefunden.

https://github.com/BenWoodford/Robonect-Python

Man muss sich natürlich schon fragen wofür man Snips langfristig in dem Zusammenhang braucht. Batteriestatus-Abfrage ist schön und gut aber braucht man das ?

Ich will die meinen Mäher starten, stoppen, umschalten von auto/manuell und nach Hause schicken (Home).

Das lässt sich vermutlich bereit jetzt mit SetOnOFff abbilden. Notfalls muss für jedes Kommando ein FHEM dummy her was dann immer "angeschaltet" wird.


Befehle wie

Hey Snips, In welchem Modus ist der Mäher ?
Stelle den Modus auf Auto/Manuell
Starte den Mäher ?
Schicke den Mäher nach Hause (in die Ladestation)
Starte jetzt einen Mähauftrag
....

wäre schon schick.

kud

Zitat von: Thyraz am 10 August 2018, 21:26:18

Solche Sachen sollten wir also eher hier sammeln und ich schaue, dass alle geläufigen Sachen soweit mit in die Intents kommen.
Für Batterie hab ich mir das gleich mal notiert.


Ich glaube, dass wird dann zu statisch.
Könnte man nicht solche Sachen wie
           # Antwort falls mappingType matched
            if    ($mappingType =~ m/^(Helligkeit|Lautstärke|Sollwert)$/) { $response = $data->{'Device'} . " ist auf $value gestellt."; }
            elsif ($mappingType eq "Temperatur") { $response = "Die Temperatur von " . (exists $data->{'Device'} ? $data->{'Device'} : $data->{'Room'}$
            elsif ($mappingType eq "Luftfeuchtigkeit") { $response = "Die Luftfeuchtigkeit von " . (exists $data->{'Device'} ? $data->{'Device'} : $da$
            # Andernfalls Antwort falls type aus Intent matched
            elsif ($type =~ m/^(Helligkeit|Lautstärke|Sollwert)$/) { $response = $data->{'Device'} . " ist auf $value gestellt."; }
            elsif ($type eq "Temperatur") { $response = "Die Temperatur von " . (exists $data->{'Device'} ? $data->{'Device'} : $data->{'Room'}) . " b$
            elsif ($type eq "Luftfeuchtigkeit") { $response = "Die Luftfeuchtigkeit von " . (exists $data->{'Device'} ? $data->{'Device'} : $data->{'R$
        }

in eine Datei zB. Snips.cfg im FHEM-Hauptordner ablegen. Dort könnte man recht schnell über EditFiles Änderungen vornehmen.
zB.
Matchwort  |  Text vor dem Wert     |   Text hinter dem Wert
Temperatur|Die Temperatur beträgt|Grad
Luftfeuchte|Die Luftfeuchtigkeit beträgt|Prozent

Das ist nur ein Gedankenansatz um die Devices/Types/Rooms flexibel zu machen?

Roman

Hallo zusammen,

ich habe hier ein Problem mit Synonymen in Snips. Wenn ich die Doku richtig verstanden habe sollte Snips das Device zurückliefern, wenn ein Synonym benutzt wird. DIes ist bei mir aber nicht der Fall, somit geht die Verwendung von Synonymen nicht.

Beispiel:  Device_Name in FHEM ist Licht_Wohnzimmer ,
In Snips ist das Device Licht_Wohnzimmer und die Synonyme Wohnzimmerlampe,Wohnzimmerlicht definiert.

Folgende Ergebnisse bekommen ich nun bei folgenden Kommandos

schalte Licht Wohnzimmer aus -geht
{"sessionId":"c7a54d78-fb3c-4f8d-8b4b-71222c041dcb","customData":null,"siteId":"default","input":"schalte licht wohnzimmer aus","intent":{"intentName":"roman-snips:SetOnOff","probability":0.64635456},"slots":[{"rawValue":"licht wohnzimmer","value":{"kind":"Custom","value":"Licht_Wohnzimmer"},"range":{"start":8,"end":24},"entity":"de.fhem.Device","slotName":"Device"},{"rawValue":"aus","value":{"kind":"Custom","value":"aus"},"range":{"start":25,"end":28},"entity":"de.fhem.OnOffValue","slotName":"Value"}]}

schalte Wohnzimmerlicht an (geht nur weil ich den SnipsName auf Wohnzimmerlicht gesetz habe)
{"sessionId":"f5baa79f-efac-46d2-93a4-0f5d79f8be39","customData":null,"siteId":"default","input":"schalte wohnzimmerlicht an","intent":{"intentName":"roman-snips:SetOnOff","probability":0.8214465},"slots":[{"rawValue":"wohnzimmerlicht","value":{"kind":"Custom","value":"Wohnzimmerlicht"},"range":{"start":8,"end":23},"entity":"de.fhem.Device","slotName":"Device"},{"rawValue":"an","value":{"kind":"Custom","value":"an"},"range":{"start":24,"end":26},"entity":"de.fhem.OnOffValue","slotName":"Value"}]}

Wohzimmerlicht aus - geht nicht
{"sessionId":"4376554a-86ad-41fb-9272-db12ae426f07","customData":null,"siteId":"default","input":"wohnzimmerlicht aus","intent":{"intentName":"roman-snips:GetOnOff","probability":0.34989226},"slots":[{"rawValue":"aus","value":{"kind":"Custom","value":"aus"},"range":{"start":16,"end":19},"entity":"de.fhem.OnOffStatus","slotName":"Status"}]}

schalte Wohnzimmerlampe aus - geht nicht
{"sessionId":"7deee2c2-3945-4885-8ad6-7cf55108f55e","customData":null,"siteId":"default","input":"schalte wohnzimmerlampe aus","intent":{"intentName":"roman-snips:SetOnOff","probability":0.7276556},"slots":[{"rawValue":"wohnzimmerlampe","value":{"kind":"Custom","value":"Wohnzimmerlampe"},"range":{"start":8,"end":23},"entity":"de.fhem.Device","slotName":"Device"},{"rawValue":"aus","value":{"kind":"Custom","value":"aus"},"range":{"start":24,"end":27},"entity":"de.fhem.OnOffValue","slotName":"Value"}]     


folgene Mappings sind gesetzt
snipsMapping
SetOnOff=state,cmdOn=on,cmdOff=off
GetOnOff=state,valueOff=off

snipsName
Wohnzimmerlicht

snipsRoom
Wohnzimmer


Hat jemand eine Idee, wo mein Problem ist ?

Thyraz

Zitat von: shilbert am 11 August 2018, 08:14:07
Ich will die meinen Mäher starten, stoppen, umschalten von auto/manuell und nach Hause schicken (Home).


Das lässt sich vermutlich bereit jetzt mit SetOnOFff abbilden. Notfalls muss für jedes Kommando ein FHEM dummy her was dann immer "angeschaltet" wird.

Ja, Starten / Stoppen ist schon als Slot-Value im SetOnOff als Synonym vorhanden.
Das könntest du also schon abbilden.
Musst also auch nicht an- / ausschalten sagen, sondern kannst schon starten/stoppen verwenden.
Mit cmdOn und cmdOff kannst du dann die entsprechenden Befehle hinterlegen die dabei ausgeführt werden.

Zitat von: shilbert am 11 August 2018, 08:14:07
Hey Snips, In welchem Modus ist der Mäher ?
Stelle den Modus auf Auto/Manuell
Schicke den Mäher nach Hause (in die Ladestation)

Solche Sätze sind hingegen schon speziell.
Klar kannst du das über einen Dummy (z.B. "Mäher Automatik") und wieder SetOnOff realisieren.
Willst du aber wirklich anständige Sätze wie oben statt ein "Mäher Automatik einschalten"verwenden,
wirst du um einen Custom Intent der als Slot dann neben dem Device dann eben einen "Modus" für Auto/Manuell hat nicht herum kommen.
Nur so kommst du ja zu eigenen Beispielsätzen und Slots.

Ob du das mit dem nach Hause schicken auch ähnlich lösen willst,
oder ob ein "Stoppe den Mäher" ihn einfach auch gleich nach Hause schickt ist dann eine Frage der Vorlieben.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Thyraz

Zitat von: Roman am 11 August 2018, 23:07:27
Hallo zusammen,

ich habe hier ein Problem mit Synonymen in Snips. Wenn ich die Doku richtig verstanden habe sollte Snips das Device zurückliefern, wenn ein Synonym benutzt wird. DIes ist bei mir aber nicht der Fall, somit geht die Verwendung von Synonymen nicht.

Beispiel:  Device_Name in FHEM ist Licht_Wohnzimmer ,
In Snips ist das Device Licht_Wohnzimmer und die Synonyme Wohnzimmerlampe,Wohnzimmerlicht definiert.
Ich würde nicht versuchen Snips kryptische Namen wie Bezeichnungen mit Unterstrichen etc. beizubringen.
Die Zuordnung zum eigentlichen Device-Name sollte in FHEM mit dem snipsName stattfinden.

Synonyme sind eher dazu gedacht, das Gerät mit dem snipsName Wohnzimmerlampe auch als Deckenlampe, Deckenlicht, Wohnzimmerlicht ansprechen zu können.
Snips wird dann dennoch immer Wohnzimmerlampe als Device an FHEM schicken, womit über den snipsName dort das richtige Gerät gefunden wir.

Zitat von: Roman am 11 August 2018, 23:07:27
Folgende Ergebnisse bekommen ich nun bei folgenden Kommandos

schalte Licht Wohnzimmer aus -geht
{"sessionId":"c7a54d78-fb3c-4f8d-8b4b-71222c041dcb","customData":null,"siteId":"default","input":"schalte licht wohnzimmer aus","intent":{"intentName":"roman-snips:SetOnOff","probability":0.64635456},"slots":[{"rawValue":"licht wohnzimmer","value":{"kind":"Custom","value":"Licht_Wohnzimmer"},"range":{"start":8,"end":24},"entity":"de.fhem.Device","slotName":"Device"},{"rawValue":"aus","value":{"kind":"Custom","value":"aus"},"range":{"start":25,"end":28},"entity":"de.fhem.OnOffValue","slotName":"Value"}]}

schalte Wohnzimmerlicht an (geht nur weil ich den SnipsName auf Wohnzimmerlicht gesetz habe)
{"sessionId":"f5baa79f-efac-46d2-93a4-0f5d79f8be39","customData":null,"siteId":"default","input":"schalte wohnzimmerlicht an","intent":{"intentName":"roman-snips:SetOnOff","probability":0.8214465},"slots":[{"rawValue":"wohnzimmerlicht","value":{"kind":"Custom","value":"Wohnzimmerlicht"},"range":{"start":8,"end":23},"entity":"de.fhem.Device","slotName":"Device"},{"rawValue":"an","value":{"kind":"Custom","value":"an"},"range":{"start":24,"end":26},"entity":"de.fhem.OnOffValue","slotName":"Value"}]}

Wohzimmerlicht aus - geht nicht
{"sessionId":"4376554a-86ad-41fb-9272-db12ae426f07","customData":null,"siteId":"default","input":"wohnzimmerlicht aus","intent":{"intentName":"roman-snips:GetOnOff","probability":0.34989226},"slots":[{"rawValue":"aus","value":{"kind":"Custom","value":"aus"},"range":{"start":16,"end":19},"entity":"de.fhem.OnOffStatus","slotName":"Status"}]}

schalte Wohnzimmerlampe aus - geht nicht
{"sessionId":"7deee2c2-3945-4885-8ad6-7cf55108f55e","customData":null,"siteId":"default","input":"schalte wohnzimmerlampe aus","intent":{"intentName":"roman-snips:SetOnOff","probability":0.7276556},"slots":[{"rawValue":"wohnzimmerlampe","value":{"kind":"Custom","value":"Wohnzimmerlampe"},"range":{"start":8,"end":23},"entity":"de.fhem.Device","slotName":"Device"},{"rawValue":"aus","value":{"kind":"Custom","value":"aus"},"range":{"start":24,"end":27},"entity":"de.fhem.OnOffValue","slotName":"Value"}]     




folgene Mappings sind gesetzt
snipsMapping
SetOnOff=state,cmdOn=on,cmdOff=off
GetOnOff=state,valueOff=off

snipsName
Wohnzimmerlicht

snipsRoom
Wohnzimmer


Hast du zwischen den einzelnen Versuchen etwas in Snips geändert?
Es werden hier verschiedene Device Slot einträge angezogen:

Einmal :
"value":"Licht_Wohnzimmer"
im 2ten und letzten dann:
"value":"Wohnzimmerlicht"

Oder hast du zusätzlich zu deinem Eintrag noch meinen ursprünglichen Eintrag zur Wohnzimmerlampe in deinem Device Slot drin?
So, dass du je nachdem wie du es sprichst 2 verschiedene Devices zurückgeliefert bekommst.

Bei Beispiel 3 geht dann etwas anderes schief:
Er greift sich den falschen Intent (GetOnOff statt SetOnOff) auf.

Bei mir passiert das nicht wenn ich Deckenlampe aus sage.
Hast du den aktuellsten Stand der FHEM App in Snips geforked?
Oder hast du sonst noch andere Custom Intents oder Apps in deinem Snips Assistent die hier verwirren könnten?

Man kann das ja direkt in der Snips Console auf https://console.snips.ai testen.
Rechts im Fenster "Deckenlampe aus" eingeben.
Hier sollte ein SetOnOff Intent mit den entsprechenden Werten ausgeführt werden und nicht ein GetOnOff.

Sonst mal die App evtl. neu Forken (davor löschen und auch die geforkten Intents unter https://console.snips.ai/home/intents löschen).

Die nächste Änderung die ich mache, wird auf alle Fälle das automatische Injizieren der Device und Room Names bringen,
so dass ihr dann nicht mehr forken müsst.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Roman

Hallo Thyraz,

Zitat von: Thyraz am 12 August 2018, 11:38:47

Synonyme sind eher dazu gedacht, das Gerät mit dem snipsName Wohnzimmerlampe auch als Deckenlampe, Deckenlicht, Wohnzimmerlicht ansprechen zu können.
Snips wird dann dennoch immer Wohnzimmerlampe als Device an FHEM schicken, womit über den snipsName dort das richtige Gerät gefunden wir.

Sonst mal die App evtl. neu Forken (davor löschen und auch die geforkten Intents unter https://console.snips.ai/home/intents löschen).

Die nächste Änderung die ich mache, wird auf alle Fälle das automatische Injizieren der Device und Room Names bringen,
so dass ihr dann nicht mehr forken müsst.

Ich hab auf der Snips-Console nun alles gelöscht und werde das nochmal neu anlegen. Mein Problem lag wohl an einem anderen Verständnis des Mappings zwischen Sniips/FHEM.

Gruß
Roman

Thyraz

So... Hab die letzten Tage Zuhause schon fleißig an der neuen Version gebastelt,
welche von FHEM aus eure Device- und Room-Namen zum Snips Model hinzufügt (ASR Injection genannt) und somit das Forken unnötig macht.

Allerdings ist hierbei ein Problem aufgetaucht:
Die Wörter werden nur dem ersten Modul vom Snips bekannt gemacht: Der Spracherkennung (ASR).
Das nachfolgende Modul (NLU), dass den erkannten Text dann "verstehen" muss und die einzelnen Wörter in Slots und zugehörige Values aufteilt, bekommt leider keine Informationen über die Slot Erweiterungen.

Dadurch funktioniert das Ganze leider überhaupt nicht so wie erhofft.

Ein Beispiel:
Nehmen wir an ich habe das Gerät "Deckenlampe" als ein Standardwert in der FHEM App hinterlegt.
Zudem ein Beispielsatz "Wie ist die Temperatur von <Gerätename vom Typ Device>" für den Intent GetNumeric.

Mit einem entsprechenden Mapping kann ich nun per "Wie ist die Temperatur von Deckenlampe" die Farbtemperatur abrufen.

Würde ich jetzt "Wie ist die Temperatur der Leuchtkugel" sagen, würde die Spracherkennung das Wort Leuchtkugel gar nicht erst verstehen.
Daher wird es als nächster Schritt per ASR Injection der Spracherkennung bekannt gemacht.
Ab jetzt versteht mich die Spracherkennung (ASR) und übergibt den Satz "Wie ist die Temperatur von Deckenlampe" korrekt an den Parser (NLU).

Leider versteht dieser immer noch nicht, dass "Leuchtkugel" nun ein Wert vom Slot Type "Device" sein soll, da NLU nichts von der ASR Injection mitbekommt.
NLU erkennt vom Satzaufbau wohl, dass es sich um den Intent GetNumeric handelt, hält "Leuchtkugel" aber für ein unwichtiges Beiwort und befüllt den Slot "Device" bei den Daten die es an FHEM übergibt nicht.

Die ASR Injection hilft uns also erstmal doch nicht wirklich weiter.
Ich hab schonmal in der Snips Community geschrieben um zu sehen ob da was geplant ist.
Schaue auch mal die Dateistruktur der Assistenten genauer an, ob man die neuen Worte evtl. selbst einfügen kann (sofern das nicht irgendein unleserliches Binärformat ist).
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...