SEPIA-Framework / sepia-docs

Documentation and Wiki for SEPIA. Please post your questions and bug-reports here in the issues section! Thank you :-)
https://sepia-framework.github.io/
236 stars 16 forks source link

Interne Keywords überschreiben (z.B. Musik, Lautstärke, etc) #90

Open gafk opened 3 years ago

gafk commented 3 years ago

Ist es möglich, intern belegte Keywords zu überschreiben bzw. interne "Services" zu deaktivieren?

Hintergrund: Ich habe div. smarte Lautsprecher, die ich in Openhab eingebunden habe. Diese können über einen Switch ein/aus geschaltet werden, nach dem einschalten spielt über eine Rule dann Musik. Ebenfalls gibt es zu jedem Lautsprecher eun Dimmer Item für die Lautstärke. Exemplarisch mal die Item Defintionen zweier Lautsprecher:

Switch WZ_Musik "Musik" ["sepia-type=music_player", "sepia-room=livingroom", "sepia-name=Musik"] Dimmer WZ_Lautstärke "Lautstärke ["sepia-type=music_player", "sepia-room=livingroom", "sepia-name=Lautstärke"] Switch KU_Musik "Musik" ["sepia-type=music_player", "sepia-room=kitchen", "sepia-name=Musik"] Dimmer KU_Lautstärke "Lautstärke ["sepia-type=music_player", "sepia-room=kitchen", "sepia-name=Lautstärke"]

Wenn ich jetzt versuche, diese Items über SEPIA zu steuern (z.B. "Schalte Musik in der Küche ein" oder "Setze Lautstärke im Wohnzimmer auf 50"), versucht SEPIA den internen Musikplayer zu starten bzw. die eigene Lautstärke einzustellen. Ich vermute "Musik" und "Lautstärke" sind interne Keywords?

Mein Workaround sind derzeit jede Menge Custom Commands, die müssen dann aber auch Wortgenau gesprochen werden und machen das ganze weniger "smart" :-)

fquirin commented 3 years ago

Das ist das klassische Cross-Talk Problem, was Amazon hauptsächlich umgeht, mit der Funktion erste explizit einen Service (Skill) zu starten und sich dann ausschließlich in dieser Domain zu bewegen. Was theoretisch klappen müsste ist, dass du zunächst explizit in die Smart-Device Steuerung gehst via z.B. "Smarthome Steuerung". Dann fragt SEPIA was du dort machen willst, was du mit "Schalte Musik in der Küche ein" fortsetzen könntest (SEPIA fragt "welches Gerät" versteht aber auch Raum und Aktion im selben Satz).

Der User kann momentan integrierte Services nicht komplett deaktivieren. Was geht, aber etwas aufwendiger ist, ist einen eigenen Service zu erstellen, der den existierenden überschreibt, indem er mit einem regulären Ausdruck alle möglichen Befehle abfängt und dann umleitet.

Ich versuche mal was ich noch optimieren kann, wenn Musik und Lautstärke zusammen mit Raumnamen erwähnt werden. Ich vermute der interne Musikplayer gewinnt da nur knapp das NLU scoring.

gafk commented 3 years ago

Alles klar, so was ähnliches dachte ich mir schon... Aktuell habe ich einen ganz guten Workaround mittels diverser personal commands. Aber wenn das in Zukunft auch einfacher geht, wäre das natürlich super.

Bzgl. der personal commands: Wenn ich im Client auf Teach -> Manager gehe, ist die Reihenfolge der Commands quasi zufällig. Das ist bei einer Vielzahl von Kommandos nicht optimal. Ich denke eine alphabetische Sortierung wäre hier vielleicht eine sinnvolle Verbesserung!?

fquirin commented 3 years ago

Wenn ich im Client auf Teach -> Manager gehe, ist die Reihenfolge der Commands quasi zufällig. Das ist bei einer Vielzahl von Kommandos nicht optimal. Ich denke eine alphabetische Sortierung wäre hier vielleicht eine sinnvolle Verbesserung!?

Guter Punkt, ja. Im Moment ist es so, dass die Befehle zufällig ausgelesen werden von der Datenbank (in 20er Paketen glaube ich). Wahrscheinlich müsste ich die Sortierung da schon anfordern sonst sind die nachher in der richtigen Reihenfolge aber nicht vollständig :thinking: . Habs mal auf die Liste gesetzt, kann aber etwas dauern, da ich gerade ziemlich viel mit dem Audio-Recorder experimentiere ^^.

JiroMusik commented 3 years ago

Bitte auf jeden Fall irgendwas in die Richtung umsetzen. Nach Möglichkeit kann ich mich auch gerne daran beteiligen. Ich verwende hier aktuell openHAB 3 und das Teufel Raumfeld System bzw die Spotify Bridge Am liebsten hätte ich wie in openHAB einfach ein Equipment/Objekt "Multiroom" (möglichst auch mit Synonymen) mit den wichtigsten Unterpunkten "SpotifyPlayer" (Play/Pause) und "Lautstärke".

Vielleicht hat ja jemand Ratschläge wie man solch ein Multiroom System am natürlichsten in SEPIA integriert. Leider finde ich mich in diesem System bisher überhaupt nicht zurecht. Habe jetzt per TeachIt ein paar Sätze eingerichtet aber es wird komplett ignoriert. Wieso werden manuell eingepflegte Sätze nicht allgemein per Scoring auf High gesetzt?

Bonus: Lautstärkeregelung / Raum und Zonenkonfiguration

fquirin commented 3 years ago

Sorry, bisschen spät der Kommentar, aber ich habe das Problem nicht vergessen, versprochen. Die neue Audio-Lib für SEPIA ist etwas aus dem Ruder gelaufen, aber ein Ende ist endlich in Sicht und danach gehts wieder an die Smart-Home Funktionen, versprochen :-)

Wieso werden manuell eingepflegte Sätze nicht allgemein per Scoring auf High gesetzt?

Das ist der Fall. Matches oder "fast" identische Sätze haben immer höchste Priorität, Problem ist höchstens das "fast". Bei kurzen Sätzen kann ein anderes Wort schon viel ausmachen in der Score :-(. Hast du das Problem, dass selbst eindeutige Matches nicht den richtigen Befehl ausführen? Das dürfte nicht passieren!