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

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

Vorheriges Thema - Nächstes Thema

smart.builder

Hallo Zusammen,

ich bekomme alle Sprachantworten doppelt, wenn ein zweiter Satellit verbunden ist.
Also z.B. "Sag mir die Zeit" = "Es ist 20 Uhr ... Es ist 20 Uhr" oder "Ok ... Ok"
Mit dem Befehl say  +siteId erfolgt die Ausgabe auf dem Ziel-Satellit ebenfalls doppelt.
Die Ausgabe erfolgt immer richtig auf dem angesprochenem Satellit, also nicht auf beiden gleichzeitig.   
Wird der zweite Satellit ausgeschaltet, funktioniert alles ganz normal.

Mein System ist wie folgt aufgebaut:
MQTT: zentral auf dem Server
Snips Server: ohne Mikro/Lautsprecher - asr, injection, nlu, dialogue
Snips Satellite 1: Raspi mit Mikro/Lautsprecher - audio-server, hotword, tts
==> snips.toml: mqtt=server-ip, bind, audio angepasst - siteId: Satellite1
Snips Satellite 2: Raspi mit Mikro/Lautsprecher - audio-server, hotword, tts
==> snips.toml: mqtt=server-ip, bind, audio angepasst - siteId: Satellite2
Fhem: 1 Snips-Device


Weiß viellieicht jemand Rat?
Danke im Vorraus.

Gruß
Smart

PapaRiX

Hmm das einzige, was mir dazu einfällt, ist, dass die response über MQTT auf dem Topic hermes/dialogueManager/endSession publiziert wird.
siehe hier: https://snips.gitbook.io/documentation/ressources/messages-reference#end-session

Ab hier nur noch mutmaßungen:
Die Vermutung ist also, dass alle Snips-Geräte dieses Topic aboniert haben und damit auch alle Geräte reagieren.

Tut mir leid, das ist alles, was ich beitragen kann. Es ist keine Lösung aber zumindest der Versuch einer Ursachenfindung.
Vielleicht kennt sich hier ja noch jemand etwas besser damit aus...

smart.builder

Paparix, Danke für deinen Tip. Am DialogueManager lag es jedoch nicht.
Wie ich rausgefunden habe, führen mehrere parallel laufende "snips-tts" Dienste zu solchen Nebenwirkungen. Bei mir lief TTS auf jedem der Satelliten.
Beide generieren die Antwort und senden es an den Audio-Server mit der Ziel-SideId.
Daher habe ich den Dienst testweise auf einem der Satelliten beendet und siehe da, nur 1x Antwort.
Irgendwie ist es im Nachhinein auch logisch, wird jedoch in der Snips-Doku nicht erwähnt.
https://snips.gitbook.io/documentation/installing-snips/multi-device-setup-satellites

Zusammengefasst: Bei mehreren Satelliten den TTS-Dienst nur auf dem Server starten oder lokale MQTT-Broker verwenden.

Gruß
Smart

rih

Hallo,

habe eine Verständnisfrage: auf snips.ai gibt es ja ausser der FHEM-App inzwischen viele zusätzliche Apps, die man in den Assistenten integrieren könnte. Z.B. Rechner, Wikipedia, Timer usw. Bei vielen steht: einfach mit "sam install skills" installieren.

Ist es tatsächlich so einfach? Funktionieren diese Apps ohne weitere Voraussetzungen? Was wird ggf. zusätzlich benötigt? Hat schon jemand die eine oder andere App zusammen mit der FHEM-App ausprobiert?

Kann mich bitte jemand aufklären?

bennebartsch

Ich habe damit nicht wirklich gute Erfahrungen gemacht. Außerdem ist dann nicht alles zentral in FHEM. Meistens musst du die Apps nur hinzufügen und noch einen sam Befehl ausführen. Einige Apps fordern dann noch ein paar Infos. Steht aber oft auf der jeweiligen Github Seite der Apps.

Zitat von: rih am 28 November 2018, 23:14:40
Hallo,

habe eine Verständnisfrage: auf snips.ai gibt es ja ausser der FHEM-App inzwischen viele zusätzliche Apps, die man in den Assistenten integrieren könnte. Z.B. Rechner, Wikipedia, Timer usw. Bei vielen steht: einfach mit "sam install skills" installieren.

Ist es tatsächlich so einfach? Funktionieren diese Apps ohne weitere Voraussetzungen? Was wird ggf. zusätzlich benötigt? Hat schon jemand die eine oder andere App zusammen mit der FHEM-App ausprobiert?

Kann mich bitte jemand aufklären?

tomster

Ich hab auch Mal testweise eine Wetter-App installiert. War aber nicht nach meinem gusto. Bei der Installation wurde auch der snips-skill-server installiert. Nach Entfernen der App blieb der aber "aktiviert" und spamt mir das Logfile voll. Also hab ich ihn kurzer Hand manuell deaktiviert. Nun ist wieder Ruhe.

MadMax

Hallo,

mein Snips macht nicht ganz das was ich will, liegt aber bestimmt nicht am Fhem Modul.

Ich bekomme Slots aus und Intens die nicht zusammen passen.
Wenn ich sage "mach das Radio an" wird als Slot Radio als "Device" gefunden, aber im Intent "Sender_Titel" aber da gibt es diesen Slot gar nicht.
Wenn ich das in der Snips Web Console teste funktioniert es, wie in den Boldern im Anhang zu sehen ist.

Habt ihr ähnliche Effekte mal erlebt?
Woran kann das liegen?

Wenn ich aber sage "Schalte das Radio ein" funktioniert es, dann wird das Intent "SetOnOff" genommen.

Gruß
Max
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 5x SMA Wechselrichter, BYD HVM, SMA EVCharger, Daikin Wärmepumpe über CAN

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

bennebartsch

Hallo MadMax, da hängt wohl irgendwo eine alte App/ein altes Intent fest. Versuch mal Snips neu zu starten und "updateModel", sowie den Assistenten einmal updaten (mit sam oder manuell laden).
Wenn nichts davon hilft, frag doch mal im Snips Forum, da bist du mit dem Problem glaube ich noch besser aufgehoben :-)

weini

...bitte aber in der "richtigen" Reihenfolge: das updateModel kommt ganz am Ende, sonst überschreibt es das Assistenten Update wieder.

weini

Ich würde gerne mit dem textCommand Reading eine Integration mit Telegram herstellen.
Leider ist das wohl nur für die FHEM Snips App vorgesehen und funktioniert nicht für andere Apps. Ich fände es super, wenn ich z. B. mit "zeige die Einkaufsliste" mit die aktuell aufgenommene Einkaufsliste (eigene Snips App, läuft nicht über FHEM) über Telegram ansehen zu können.

Gibt es einen besonderen Grund, warum das textCommand Feature auf die FHEM App beschränkt ist?
Komme ich alternativ "einfach" über MQTT Messages an den NLU Output von anderen Apps?

obi

Hallo Thyraz,
das Snips modul ist echt super.

Ich habe noch einen Featurewunsch. Ein zusätzliches reading "playing_" für die einzelnen SiteIds um auch während der TTS Ansage z. B. den Mediaplayer stummzuschalten.

Ich habe dies auch schon in dem Modul hinzugefügt. Wäre toll wenn du dies übernehmen oder noch verbessern könntest:

Zeile 32+
hermes/audioServer/+/playFinished

Zeile 809+
# Audio Play Erkennung
    elsif ($topic =~ m/^hermes\/audioServer/) {
        my $data = SNIPS::parseJSON($hash, $message);
        my $room = roomName($hash, $data);

        if (defined($room)) {
            my %umlauts = ("ä" => "ae", "Ä" => "Ae", "ü" => "ue", "Ü" => "Ue", "ö" => "oe", "Ö" => "Oe", "ß" => "ss" );
            my $keys = join ("|", keys(%umlauts));

            $room =~ s/($keys)/$umlauts{$1}/g;

            if ($topic =~ m/playFinished/) {
                readingsSingleUpdate($hash, "playing_" . lc($room), 0, 1);
            }
        }
    }



Zeile 1010+
readingsSingleUpdate($hash, "playing_" . lc($siteId), 1, 1);

Danke

JensS

Hallo,

mein Samsung-TV kann nur über Infrarot gesteuert werden. Daher habe ich einen IR-Sender und eine Sub TVCodes dazu.
Im Fernbedienungsdevice vom Type remotecontrol übergebe ich die Sendertasten per notify der Sub z.B. {TVCodes("E0E020DF")}.
Nun habe ich der remotcontrol userattr snipsChannels:textField-long mit dem Inhalt ARD={TVCodes("E0E020DF")} a_r_d
ZDF={TVCodes("E0E0A05F")} z_d_f
TELE5={TVCodes("E0E020DF_E0E0906F_E0E016E9")} tele_5
hinzugefügt. Nach "Schalte Samsung auf ARD" bekomme ich die Meldung [Nlu] detected intent Thyraz:MediaChannels with probability 0.470 for input "schalte standstandardsendergerät auf ard"
und nichts passiert.
The session was ended because one of the component didn't respond in a timely manner
Was mache ich falsch?
defmod Fernbedienung_Samsung remotecontrol
attr Fernbedienung_Samsung userattr snipsChannels:textField-long
attr Fernbedienung_Samsung alias TV
attr Fernbedienung_Samsung rc_iconpath icons/remotecontrol
attr Fernbedienung_Samsung rc_iconprefix black_btn_
attr Fernbedienung_Samsung room Fernbed.,Snips
attr Fernbedienung_Samsung row00 E0E040BF:POWEROFF,E0E0807F:TV,E0E0807F:HDMI,E0E020DF_E0E0906F_E0E016E9:TELE5
attr Fernbedienung_Samsung row01 :blank,:blank,:blank,E0E020DF_E0E0A05F_E0E0A05F_E0E016E9:RBB
attr Fernbedienung_Samsung row02 E0E020DF:1,E0E0A05F:2,E0E0609F:3,E0E0A05F_E0E0906F_E0E016E9:Eurosport1
attr Fernbedienung_Samsung row03 E0E010EF:4,E0E0906F:5,E0E050AF:6,:blank
attr Fernbedienung_Samsung row04 E0E030CF:7,E0E0B04F:8,E0E0708F:9,:blank
attr Fernbedienung_Samsung row05 e0e034cb:TEXT,E0E08877:0,E0E0C837:PRECH,:blank
attr Fernbedienung_Samsung row06 :blank,:blank,:blank,:blank
attr Fernbedienung_Samsung row07 E0E0E01F:UP,E0E0F00F:MUTE,E0E048B7:CHUP,:blank
attr Fernbedienung_Samsung row08 :VOL,:blank,:PROG,:blank
attr Fernbedienung_Samsung row09 E0E0D02F:DOWN,E0E0D629:CH_LIST,E0E008F7:CHDOWN,:blank
attr Fernbedienung_Samsung row10 E0E058A7:MENU,:blank,E0E0F20D:GUIDE,:blank
attr Fernbedienung_Samsung row11 :blank,:blank,:blank,:blank
attr Fernbedienung_Samsung row12 e0e0d22d:TOOLS,E0E006F9:UP,e0e0f807:INFO,:blank
attr Fernbedienung_Samsung row13 E0E0A659:LEFT,E0E016E9:ENTER,E0E046B9:RIGHT,:blank
attr Fernbedienung_Samsung row14 E0E01AE5:RETURN,E0E08679:DOWN,E0E0B44B:EXIT,:blank
attr Fernbedienung_Samsung row15 E0E036C9:RED,E0E028D7:GREEN,E0E0A857:YELLOW,E0E06897:BLUE
attr Fernbedienung_Samsung row16 E0E0A25D:REWIND,E0E052AD:PAUSE,E0E0E21D:PLAY,E0E012ED:FF
attr Fernbedienung_Samsung snipsChannels ARD={TVCodes("E0E020DF")} a_r_d\
ZDF={TVCodes("E0E0A05F")} z_d_f\
TELE5={TVCodes("E0E020DF_E0E0906F_E0E016E9")} tele_5\
stumm={TVCodes("E0E0F00F")} stumm
attr Fernbedienung_Samsung snipsMapping GetOnOff:currentVal=Fernseher:state,valueOff=off,type=Lautstärke\
MediaControls:cmdFwd={TVCodes("E0E048B7")},cmdBack={TVCodes("E0E008F7")}
attr Fernbedienung_Samsung snipsName Samsung
attr Fernbedienung_Samsung snipsRoom Wohnzimmer


Gruß Jens

p.s. Wie kann ich die Lautstärkeregelung z.B. mit dem Perlbefehl stumm={TVCodes("E0E0F00F")} umsetzen?
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

c.radi

Hallo,

ich bin neu bei FHEM und versuche das SNIPS Modul zum laufen zu bekommen.
Beim Start erhalte ich eine Fehlermeldung:

2019.02.04 11:41:02 0: Excessively long <> operator at ./FHEM/10_SNIPS.pm line 21.


FHEM läuft unter Ubuntu 18.04 in einer VM. MQTT mit einem Tasmota Device läuft, und auch die SNIPS MQTT Anbindung ist aktiv.

Hat jemand eine Idee, was ich noch prüfen kann?

Danke udn Gruß
Christian

c.radi

Hallo,

mein Problem hat sich gelöst. Manchmal ist man ein bl..d. Ich habe beim kopieren der .pm Datei einen Fehler gemacht.

Gruß
Christian

thorsten9

Hallo.

Ich bin ebenfalls neu an FHEM und Snips dran, aber noch funktioniert es leider nicht.
Die MQTT-Verbindung von FHEM zu Snips funktioniert. UpdateModel und say ebenfalls.

In meinem Raum "Snips" hängen zwei Dummy Devices (Lampe und TV).

Dem Device "Lampe" sind folgende Attribute zugeordnet.
- room: Training,Wohnzimmer,Snips
- snipsName: Lampe,Deckenlicht
- snipsRoom: Wohnzimmer
- webCmd: on:off

Sage ich  "schalte die lampe im wohnzimmer ein" wird das von Snips erfolgreich verarbeitet (soweit ich das mit "sam watch" erkennen kann).
Aber der Status der Lampe ändert sich in FHEM nicht.

Wo könnte ich schauen um das Problem einzugrenzen?

Danke & Gruß
Thorsten