FHEM Forum

FHEM => Frontends => Sprachsteuerung => Thema gestartet von: Thyraz am 21 Juli 2018, 20:28:48

Titel: SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 21 Juli 2018, 20:28:48
Was ist Snips
Snips ist ein Sprachassistent ähnlich Siri oder Alexa.

Die Besonderheit an Snips ist, dass es nach der Installation komplett Offline betrieben wird.
Es wir also keine Sprache zur Erkennung an einen Server im Internet geschickt.

Die Anbindung weiterer Räume ist über sogenannte "Satelliten" möglich.
Dies kann z.B. ein Pi Zero mit Mikro und Lautsprecher sein.

https://snips.ai

Was ist mit dem Modul möglich
Mit von mir vorgefertigten Intents können:
- Geräte geschaltet werden
- der Status von Geräten abgefragt werden
- Stellwerte für Dimmer, Rollläden, Thermostate gesendet werden (oder was sich eben sonst auf einen numerischen Wert setzen lässt)
- Numerische Werte abgefragt werden wie z.B. Temperatur, Luftfeuchtigkeit, ...
- Multimedia Befehle (Play, Pause, ...) gesendet werden
- Wiedergabe oder Wechsel von Sendern / Favoriten / Kanälen / ...
- Lichtfarbe z.B. von HUE Lampen ändern

Dies wird über ein Attribut ähnlich dem von Homebridge und AlexaFhem bekannten homebridgeMapping gesteuert.

Zusätzlich gibt es die Möglichkeit,
eigene Intents einzubinden und dann die per Sprache übergebenen Parameter (z.B. Gerät, Wert, ...) an eigene Perl-Funktionen zu übergeben.
Dies entspricht mehr oder weniger den erweiterten Möglichkeiten im CustomSkill von AlexaFhem, womit sich auch ausgefallenere Wünsche realisieren lassen sollten.

Außerdem ist TextToSpeech möglich und bald auch die Wiedergabe von Audiodateien.

Was brauche ich für Hardware?
Snips lässt sich unter Linux bisher auf einem Raspberry mit Raspbian (Debian Stretch), oder auf x86 unter Debian Stretch nutzen.

https://snips.gitbook.io/documentation/installing-snips
https://snips.gitbook.io/documentation/advanced-configuration/advanced-solutions

Man braucht zusätzlich ein Mikrofon, nach Möglichkeit ein Mikrofon-Array / Far-Field Microphone wie z.B. das ReSpeaker Mic Array.
Als sehr gute Lösung für kleines Geld hat sich hier das "PS3 Eye" herausgestellt. Eine Webcam mit 4 Mikrofonen, welche unter Linux ohne extra Treiber als Micro erkannt wird. Ist bei Amazon für knappe 10€ erhältlich.
Zusätzlich noch einen Lautsprecher für die Sprachausgabe.

Installation in FHEM
Modul hier herunterladen:
https://github.com/Thyraz/Snips-Fhem

DIE README AUF GITHUB LESEN! ;)
Denn die erklärt was alles konfiguriert werden muss und wie.

Beispiele

Definition in FHEM (genauer erklärt in Readme auf Github):

define SnipsMQTT MQTT <ip-or-hostname-of-snips-machine>:1883
define Snips SNIPS SnipsMQTT Wohnzimmer


Attribut snipsMapping von einem Dimmer bei mir:

SetOnOff:cmdOn=on,cmdOff=off
GetOnOff:currentVal=state,valueOff=off
SetNumeric:currentVal=brightness,cmd=dim,step=20,type=Helligkeit
GetNumeric:currentVal=brightness,type=Helligkeit


Attribut snipsMapping von einem Thermometer bei mir:

GetNumeric:currentVal=temperature,type=Temperatur
GetNumeric:currentVal=humidity,type=Luftfeuchtigkeit
Status:response=Die Temperatur beträgt [ThermoWZ:temperature] Grad bei [ThermoWZ:humidity] Prozent Luftfeuchtigkeit.


Die einzelnen Intents, das zugehörige Mapping und dessen Optionen sind auch in der Readme auf Github erklärt.

Troubleshooting
Sollte das Ganze nicht wie gewollt funktionieren, empfiehlt es sich zuerst die Readings im Snips Device anzuschauen.
Hier sollte (nachdem ihr über Snips einen Befehl gesprochen habt) 2 Readings auftauchen:
- lastIntentTopic
- lastIntentPayload
Ansonsten bekommt man noch weitere Infos wenn man beim Snips Device Verbose 5 einstellt und schaut ob bei Sprachbefehlen etwas im Log auftaucht.

Sollte auch hier nichts kommen, auch beim MQTT Server Device Verbose 5 einstellen und schauen ob da etwas im Log erscheint.
Wenn nicht, erstmal hier ansetzen und schauen warum das MQTT Device nicht funktioniert.

Wenn die Readings im Modul ankommen aber dennoch nichts passiert, hängt es höchstwahrscheinlich an der Konfiguration des zu schaltenden Geräts.
Hier nochmal kontrollieren ob es im Raum Snips ist und die Attribute snipsName, snipsRoom und snipsMapping passen.

Bei Fragen zum Mapping bitte ein list vom Snips Device und des nicht funktionierenden Geräts mit posten.

Versionsverlauf / Änderungen
03.09.2018: Neue Syntax say-Befehl. Möglichkeit Perl-Code in Commands und für Readings zu verwenden.
30.08.2018: Neuer Intent MediaChannels
29.08.2018: Neuer Intent MediaCommands
26.08.2018: Attribut errorResponse eingeführt ("disabled" deaktivert die Fehlerrückmeldungen)
26.08.2018: Unbekannte Intents werden ignoriert, damit sich das Modul nicht mit parallel installierten Snips-Apps beißt
24.08.2018: Cmds und Readings im Mapping können nun auch im Format Device:Reading bzw. Device:cmd auf andere Geräte verweisen.
23.08.2018: Readings "listening_*" hinzugefügt, damit man z.B. Musik muten kann während Snips lauscht
22.08.2018: Neuer Intent "Status"
18.08.2018: Neuer Set-Befehle "textCommand" um Snips über Text zu steuern (z.B. mit TelegramBot)
17.08.2018: Über Fhem automatisch eure Geräte- und Raumnamen in den Assistenten injizieren. Forken der App nicht mehr nötig.
17.08.2018: Neues snipsMapping Format. Siehe Github Readme und Beispiele in diesem Post
26.07.2018: Abfrage von numerischen Werten nur über Raum und Type ohne das Gerät explizit nennen zu müssen
25.07.2018: Custom Intents können nun in eigenen 99_myUtils Perl-Funktionen verarbeitet werden
23.07.2108: Die Intent-Option map und part funktionieren jetzt
21.07.2108: Erste Beta veröffentlich

Was in der aktuellen Version noch nicht geht
- Der Play Befehl zum Abspielen von Audiodateien geht bisher noch nicht (TextToSpeech geht aber schon)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: borsti67 am 21 Juli 2018, 21:38:34
Das klingt ja höchst interessant! Wie viel "Power" muss des SNIPS-Server denn haben? Spracherkennung ist ja doch "etwas" aufwendiger, es fällt mir schwer zu glauben, dass da ein Pi o.ä. für reichen soll...
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 22 Juli 2018, 10:41:04
Bei mir läuft es auf dem NUC, daher kann ich nicht genau sagen.,
Aber da Snips das Maker-Kit mit einem Pi3 verkauft, sollte das schon problemlos laufen denke ich. 😉
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 22 Juli 2018, 15:04:59
Das sollte locker auf ein Pi2/3 laufen, ich habe es auf ein Rock64 im Betrieb.
Die CPU Auslastung auf einen Core beträgt etwa 35% mit ca. 160 MB Ram Verbrauch.

Zu empfehlen ist derzeit wirklich ein Pi3 oder irgendwas anderes was auf armv7 basiert.
Aus dem Grund weil es ein Pyhton Paket nur für armv7 und mac gibt und die Standart Skills wie Wetter, Timer etc. dieses Python_Hermes Paket benötigt.

Das PS3 Eye Micro kann ich auch empfehlen.

Thyraz hat was wirklich was brauchbares hingezaubert mit einer super Dokumentation! :)

@Thyraz schau dir das mal an, das ist eine asound.conf für das PS3 Eye:
https://gist.github.com/AfzalivE/54214bf437ca1775b5b8e7934cc137db
https://me.m01.eu/blog/2014/07/an-asoundrc-alsa-config-for-the-ps3-eye/

Es könnte gut sein, das dass MIC durch slave.channels 4 noch besser wird. :)
Ich versuche das gerade einzubinden...

EDIT: So gehts bei mir:

cat /etc/asound.conf
pcm.!default {
  type asym
  playback.pcm {
    type plug
    slave.pcm "hw:1,0"
  }
  capture.pcm {
    type plug
    slave.pcm "hw:0,0"
    slave.channels 4
    ttable {
    0.0 30.0
    1.1 30.0
  }
}
}

Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 22 Juli 2018, 15:44:34
Ok, werde das auch mal versuchen.

Bin mir aber nicht sicher, ob Snips die 4 Micros nicht automatisch nutzt.
Zumindest bei mit kann ich in der Eingabeaufforderung mit arecord nur dann was aufnehmen wenn ich die 4 Channels per Parameter angebe.

Ansonsten kommt gleich der Fehler falsche Anzahl Kanäle.
Kann also sein, dass Snips das selbst irgendwie erkennt.

edit: Bin mir mittlerweile eigentlich recht sicher, dass die Erkennung automatisch funktioniert.
Die Blogeinträge bei Snips zeigen das auch nie und da sind auch einige Beispiele für die asound.conf zu sehen.
Auch mit ReSpeaker oder PS3 Eye.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 23 Juli 2018, 09:02:00
Ich hab die "FHEM App" im Snips Store nochmal aktualisiert.

Habe bemerkt, dass man für die Intents keine verkürzten Beispielsätze verwenden sollte, die nur aus den einzelnen Slots bestehen.
Also für SetOnOff z.B. "Deckenlampe aus".

Wenn man sonst weitere eigene Intents erstellt und diese ebenfalls so kurz gehaltene Beispielsätze haben, verschluckt sich Snips scheinbar recht schnell.
Habe daher jetzt nur besser ausgeprägte Beispielsätze verwendet.

Die Kurzformen funktionieren im laufenden Betrieb nacher weiter problemlos,
sie sollten wohl nur nicht für die Sprachanalyse vom Assistenten verwendet werden.

Wer die App also schon bei sich drin hat, evtl nochmal neu importieren (davor euren Device-Slot exportieren und danach wieder importieren falls ihr schon eigene Geräte hinzugefügt habt).
Kann sein, dass ihr nicht nur die FHEM App löschen müsst, sondern auch den SetOnOff Intent wenn ihr den geforked habt.
(console.snips.ai -> Reiter "My Intents")
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: laberlaib am 23 Juli 2018, 10:05:50
Ich finde das gerade beim durchsehen der Anleitung nicht (und wenn es nicht so ist, dann weise mich darauf hin, dann lösche ich das hier wieder):
Man muss nicht nur die App sondern auch die Intents "forken", da diese sonst weiterhin unter "Thyraz:xyz" laufen.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 23 Juli 2018, 11:15:55
Ich bin bisher immer davon ausgegangen, dass der Prefix immer der eigene Accountname ist.
Werde das nochmal testen ob das evtl. doch eine falsche Annahme war.

Oder hast du eine laufende Snips Installation und hattest schon das Problem, dass bei dir da Thyraz drin stand?

Wenn dem so sein sollte, nehme ich den Prefix doch wieder raus aus der Definition.
Dann schneide ich einfach den Anfang vom Intent bis einschließlich dem ersten Doppelpunkt ab und das Problem sollte beseitigt sein...

Warum man um das forken dennoch nicht herum kommen dürfte:
Anders kann man die SlotTypes nicht editieren. Und in dem Device Slot muss man ja seine Gerätebezeichnungen nachtragen damit die Wörter nachher erkannt werden.


edit: Hab es gerade getestet, du hast recht.
Das wirft aber auch die nächste Frage auf:
Wenn ihr z.B. nur den SetOnOff Intent forked und die Geräteliste dort anpasst, wirkt sich das auch auf die anderen Intents aus?
Oder müsst ihr alle Intents forken damit die wieder den gleichen (euren lokalen) Slottype verwenden?

Verwirrrend. ;)

Werde ich ein wenig mit rumspielen müssen und die Anleitung anpassen.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 23 Juli 2018, 12:57:29
Ok, der Prefix wird nicht mehr benötigt:

Neues Modul von Github laden, Fhem neu starten oder Modul neu laden mit reload.
Dann Definition vom Snips Device in Fhem anpassen:

Alte Def:

define Snips SNIPS <MQTTDevice> <Prefix> <DefaultRoom>


Neue Def:

define Snips SNIPS <MQTTDevice> <DefaultRoom>


Doku auf Github ist auch angepasst.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 23 Juli 2018, 14:49:06
Hmm. So richtig klappt das noch nicht.
Habe folgendes eingerichtet.
define SnipsMQTT MQTT 192.168.1.139:1883
define Snips SNIPS 192.168.1.139 Snips

Bei dem Tempsensor welcher das Reading temperature liefert
habe ich die Attribute
room Snips, Temperaturen
snipsMapping GetNumeric=temperature,type=Temperatur
snipsname garten
snipsroom Garten

gesetzt.

Sam watch gibt folgendes aus.

[Asr] captured text "wie ist die temperatur im garten" in 3.0s
[14:36:16] [Asr] was asked to stop listening on site default
[14:36:16] [AudioServer] was asked to play a wav of 93.1 kB with id 'e0069cbc-0255-4d51-90e9-9251566b6f0b' on site default
[14:36:17] [AudioServer] finished playing wav with id 'e0069cbc-0255-4d51-90e9-9251566b6f0b'
[14:36:17] [Nlu] was asked to parse input wie ist die temperatur im garten
[14:36:17] [Nlu] detected intent Thyraz:GetNumeric with probability 1.000 for input "wie ist die temperatur im garten"
              Slots ->
                 Type -> Temperatur
                 Room -> Garten
[14:36:17] [Dialogue] New intent detected Thyraz:GetNumeric with probability 1.000
              Slots ->
                 Type -> Temperatur
                 Room -> Garten
[14:36:23] [Dialogue] session with id '18b48dfa-c58c-48c6-9f08-5eda2dfc517b' was ended on site default. The session was ended because one of the component didn't respond in a timely manner

Das wars kein Wort zu hören.

Hab ich irgend etwas vergessen oder nicht richtig umgesetzt?

Jetzt habe ich mal die Snips Definition geändert

define Snips SNIPS SnipsMQTT Snips

Ergebnis sam watch:

[Asr] captured text "wie ist die temperatur im garten" in 3.0s
[14:54:23] [Asr] was asked to stop listening on site default
[14:54:23] [AudioServer] was asked to play a wav of 93.1 kB with id '595e46dc-1689-4068-a648-d5f152b40ea3' on site default
[14:54:24] [AudioServer] finished playing wav with id '595e46dc-1689-4068-a648-d5f152b40ea3'
[14:54:24] [Nlu] was asked to parse input wie ist die temperatur im garten
[14:54:24] [Nlu] detected intent Thyraz:GetNumeric with probability 1.000 for input "wie ist die temperatur im garten"
              Slots ->
                 Type -> Temperatur
                 Room -> Garten
[14:54:24] [Dialogue] New intent detected Thyraz:GetNumeric with probability 1.000
              Slots ->
                 Type -> Temperatur
                 Room -> Garten
[14:54:24] [Dialogue] was ask to end session with id 884735f4-d579-4b31-82bf-6c95032cbc3d by saying 'Da ist etwas schief gegangen.'
[14:54:24] [Tts] was asked to say "Da ist etwas schief gegangen."

Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 23 Juli 2018, 15:43:31
Also die untere Definition vom Snips Modul sieht besser aus.
Nur der DefaultRoom sollte nicht Snips lauten, sondern so wie der Raum in dem das Mikro steht.

Wenn du keinen Raum dazu sagst (und es mehrere Treffer gibt) geht Snips davon aus, dass der gemeint ist in dem gesprochen wird.
https://github.com/Thyraz/Snips-Fhem/blob/master/README.md#modul-installation
Dazu braucht es eben die Info wo Snips denn eigentlich steht.

Es sollte also etwa so aussehen:
Zitat
define Snips SNIPS SnipsMQTT Wohnzimmer

Bei deinem zweiten Quote siehst du dann, dass er den Garten als Room interpretiert und den Type als Temperatur.
FHEM hat das auch mitbekommen und geantwortet: "Da ist etwas schief gegangen." ist schon eine Antwort vom Modul.

Was dann passiert, fehlte hier noch oben unter Was in der aktuellen Beta noch nicht geht.
Hatte das im anderen Snips Thread erwähnt, aber hier dann vergessen.

Man kann aktuell noch nicht den Status zu einem Raum abfragen ohne das Gerät explizit zu nennen.
Du müsstest das also so anpassen:
Zitatroom Snips, Temperaturen
snipsMapping GetNumeric=temperature,type=Temperatur
snipsname Thermometer
snipsroom Garten

Und dann fragen: Wie ist die Temperatur vom Thermometer im Garten?

Die vereinfachte Form "Wie ist die Temperatur im Garten" kommt bald.
Hier muss ich noch einbauen in diesem Fall alle Mappings von Geräten mit snipsName "Garten" nach einem type=Temperatur zu durchsuchen und dann diesen Wert zurückzuliefern.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 23 Juli 2018, 17:06:34
Jetzt höre ich die korrekte Ausgabe  :)

Die Definition von Snips wie folgt geändert.

define Snips SNIPS SnipsMQTT Wohnzimmer

Nicht mit IP angeben, da Snips ja wahrscheinlich mit dem MQTT-Device korrespondiert.


You make my Day ! 8)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 23 Juli 2018, 17:18:41
Ohje, sorry da hab ich dich ja total auf den falschen Dampfer geschickt.
Hab die falsche Zeile von oben kopiert gehabt und es gar nicht gemerkt.  :-X

Ja, Snips ist ein Client-Modul für das FHEM MQTT Modul.
Es verarbeitet und sendet also nur darüber die MQTT Nachrichten.
Daher ist auch das MQTT Device nötig.

Zu den zwei Werten:
An sich sollte das gehen. Das war auch mit ein Grund für die "type" Option im Mapping.

Erweitere mal das snipsMapping von dem Gerät so:

GetNumeric=temperature,type=Temperatur
GetNumeric=humidity,type=Luftfeuchtigkeit


Dann sollte an sich mit Wie ist die Luftfeuchtigkeit vom Thermometer im Garten die Feuchte herauszubekommen sein.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 23 Juli 2018, 17:20:44
Da warst Du schneller als ich....
Habs gerade rausbekommen .. ;-)

Ich freu mich auf die weitere Entwicklung. Top.

Spiele gerade mit dem Snips Namen. Also "Thermometer" funktioniert immer.
Wenn ich diesen in "Sensor" umbenenne erkennt Snips "Senne sofa" ;-((
...und ich habe versucht ohne Akzent und langsam zu sprechen?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 24 Juli 2018, 08:24:24
Das liegt daran, dass die möglichen Einträge für den Slot "Device" im Intent "GetNumeric" Snips bekannt sein müssen.
Snips erlaubt für die Slots nur Wörter die es dafür kennt.

Dies ist bei anderen "Assistenten" ja auch so. Damit die Erkennung für die SmartHome Geschichten so gut klappt, sind die Namen bekannt.
Bei Alexa kennt der Assistent z.B. die Geräte weil man sie bei ihm anlernt.

Dies macht man bei Snips ja so direkt nicht, weswegen wir die Geräteliste aktuell händisch erweiteren müssen.
Sofa ist bereits als ein Synonym für Bogenlampe/Stehlampe/Sofalampe im Device Slot eingetragen.
Daher kommt das dann zustande. ;)

Daher in der Readme der Hinweis, dass man beim Erstellen des Assistenten die Geräteliste um die eigenen Gerätenamen erweitern kann:
https://github.com/Thyraz/Snips-Fhem#assistent-erstellen
Sprich App und Intent forken und dann die Namen dort eintragen.

Sollte ich evtl. so umformulieren, dass man dies nicht nur kann, sondern auch wirklich tun sollte. ;)
Und ebenfalls im später folgenden Kapitel wie man die Geräte zu konfigurieren hat (z.B. mit snipsName), nochmal darauf hinweisen,
dass der Name im Device Slot hinzugefügt werden muss, damit Snips ihn dann auch versteht.

Der Slot Device wird übrigens von allen Intents (SetOnOff, GetOnOff, SetNumeric, GetNumeric) geshared.
Es reicht also die Liste bei einem der Intents zu öffnen und den neuen Wert hinzuzufügen.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 24 Juli 2018, 08:52:09
Danke für die Ausführung.
Wenn ich die App "forke" bekomme ich aber Deine Änderungen nicht mehr eingespielt. Hab ich das so richtig verstanden?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 24 Juli 2018, 09:12:52
Ja, ich hoffe aber hier nur selten Änderungen machen zu müssen.
Und wenn, dann werde ich das hier schreiben und auch im Changelog im Post 1 vermerken.
Der Aufwand für dich wäre in dem Fall dieser:

in console.snips.ai den Device Slot öffnen und unten auf Export drücken.
Dann öffnet sich ein Fenster mit einem Textlisting das man sich rauskopieren kann.

Danach löschst du die geforkten Intents und die geforkte App aus deinem Acount.
Nun wieder die FHEM App runterladen (dann hast du den neusten Stand) und die Intents forken.
Dann in einem der Intents wieder auf Bearbeiten des Device Slots klicken.
Hier nun Import wählen und vorhin kopierten Text einfügen.

Danach kannst du den Assistenten mit Sam (oder durch herunterladen und manuell entpacken/kopieren) auf deiner Snips Installation aktualisieren.

Denke das sollte dann im Fall der Fälle in 2-3 Minuten erledigt sein.
Das gehört sicher auch noch in die Doku als Punkt "Assistent updaten"
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 24 Juli 2018, 10:44:58
Ok, die Sache wird doch noch einfacher. 8)

Habe gerade eben das hier entdeckt:
https://snips.gitbook.io/documentation/advanced-configuration/asr/dynamic-vocabulary

Man kann die Slots auch auf dem Zieldevice über MQTT Nachrichten um weitere Wörter erweiteren.
Der Assistent aktualisiert danach automatisch sein Sprachmodell.

Ich könnte also alle snipsNames (von Geräten im Raum Snips) sowie auch die roomNames über das Modul sammeln.
Dann könnte man über ein set mySnips updateIntentSlots o.Ä. einfach die Slots befüllen.

Dann müsste ihr überhaupt nichts mehr forken, was den Einrichtungsaufwand nochmal minimieren würde.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: MadMax am 24 Juli 2018, 11:16:04
Hallo,

sehr geile Geile sache!
Ich bin begeistert, genau das habe ich gesucht.

Aber leider funktioniert dies nicht bei mir.
Snieps sagt immer das etwas schief gegangen ist.

Im Fehm Log steht.
2018.07.24 11:09:07 5: publish received for hermes/intent/MadMax:SetOnOff, {"sessionId":"c00588ca-245b-44b8-8313-9e385de51e1f","customData":null,"siteId":"default","input":"licht im wohnzimmer einschalten","intent":{"intentName":"MadMax:SetOnOff","probability":0.873276},"slots":[{"rawValue":"licht","value":{"kind":"Custom","value":"licht"},"range":{"start":0,"end":5},"entity":"de.fhem.Device","slotName":"Device"},{"rawValue":"wohnzimmer","value":{"kind":"Custom","value":"Wohnzimmer"},"range":{"start":9,"end":19},"entity":"de.fhem.Room","slotName":"Room"},{"rawValue":"einschalten","value":{"kind":"Custom","value":"an"},"range":{"start":20,"end":31},"entity":"de.fhem.OnOffValue","slotName":"Value"}]}
2018.07.24 11:09:07 5: received message '{"sessionId":"c00588ca-245b-44b8-8313-9e385de51e1f","customData":null,"siteId":"default","input":"licht im wohnzimmer einschalten","intent":{"intentName":"MadMax:SetOnOff","probability":0.873276},"slots":[{"rawValue":"licht","value":{"kind":"Custom","value":"licht"},"range":{"start":0,"end":5},"entity":"de.fhem.Device","slotName":"Device"},{"rawValue":"wohnzimmer","value":{"kind":"Custom","value":"Wohnzimmer"},"range":{"start":9,"end":19},"entity":"de.fhem.Room","slotName":"Room"},{"rawValue":"einschalten","value":{"kind":"Custom","value":"an"},"range":{"start":20,"end":31},"entity":"de.fhem.OnOffValue","slotName":"Value"}]}' for topic: hermes/intent/MadMax:SetOnOff
2018.07.24 11:09:07 5: Intent: SetOnOff
2018.07.24 11:09:07 5: Parsed value: licht for slot: Device
2018.07.24 11:09:07 5: Parsed value: Wohnzimmer for slot: Room
2018.07.24 11:09:07 5: Parsed value: an for slot: Value
2018.07.24 11:09:07 5: handleIntentSetOnOff called


mein Licht zum testen.

snipsMapping SetOnOff=state,valueOff=off,cmdOn=on,cmdOff=off,GetOnOff=off,valueOff=on
snipsName licht
snipsRoom wohnzimmer

habe ich was falsch, gemacht?

Gruß
Max
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: MadMax am 24 Juli 2018, 11:55:38
Alles klar, Error in Front of Display...

das Device muss ja in den Raum Snips...

Sorry...

Aber echt super das ganze, danke
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 25 Juli 2018, 16:40:27
Wie verwenden die meisten von euch die Lichtsteuerung per Sprache?

Habt ihr mehrere per FHEM schaltbare Lampen in den Räumen?
Sollte sowas wie "Licht ausschalten" also mehrere Lampen  im aktuellen Raum deaktivieren?

Wenn ja, wäre "Licht" ja an sich kein einzelnes Device.
Man müsste also auch beim OnOff Intent noch "Gerätetypen" haben statt nur einzelne Geräte.

Ähnlich wie bei GetNumeric wo ich ja auch plane, dass Frage nach "Wie ist die Temperatur im Wohnzimmer" automatisch das Device mit dem passenden snipsMapping findet ohne das Gerät Thermometer nennen zu müssen.

Klar kann man sich da aktuell auch schon irgendwie behelfen (Dummy Licht anlegen, "Licht" als Namen im Snips Device-Slot hinzufügen, Alle Lichter per Notify abschalten wenn Dummy geschaltet wird).
Aber das ist ja schon recht umständlich.

Wenn das für euch Sinn macht / gewünscht ist, müsste ich noch einen 4ten Slot "Type" im SetOnOff Intent hinzufügen (bisher Device, Room, Value).
Hier dann mal als ersten Wert "Licht" hinzufügen und als Synonyme "Lampen, Lichter, Alle Lampen, Alle Lichter".

Dann wüsste ich, dass wenn der Slot Type (mit dem Wert Licht) statt der Slot Device belegt ist,
ich mir alle Geräte mit passendem snipsRoom und snipsMapping SetOnOff=state,cmdOn=on,cmdOff=off,type=Licht heraussuchen muss.

Ihr müsstet dann halt die App und Intents nochmal neu forken damit das auch bei euch klappt.

P.S. die Funktion eigene Intents mit Perl-Funktionen in einer 99_MyUtils.pm zu verknüpfen sollte soweit fertig sein. :)
Muss das nur noch heute Abend etwas ausführlicher testen und ne kleine Anleitung verfassen.
Dann stell ich die Version zum Download auf Github.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 25 Juli 2018, 17:19:21
Hmm..

zZeit steuere ich meine Hues über Alexa und entsprechender Gruppierung zB. Wohnzimmer.
So gesehen macht der 4. Slot einen Sinn. Jedoch wenn Jemand einen kompletten Raum mit Licht und Schaltern ausschalten will geht das auch nicht.
Vielleicht wäre die Geschichte mit einem Notify doch flexibler.

Das mit dem Forken finde ich nicht besonders elegant. (besonders wenn man eigentlich den Ablauf bei Snips nocht nicht vollständig verstanden hat like me ;-)
Schicke wäre schon, wie von Dir angesprochen, wenn man die Devices von FHEM updaten könnte.

Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 25 Juli 2018, 21:19:00
Zitat von: kud am 25 Juli 2018, 17:19:21
Jedoch wenn Jemand einen kompletten Raum mit Licht und Schaltern ausschalten will geht das auch nicht.

Du meinst wenn man zusätzlich zu den Lichtern noch Geräte ausschalten will?

Zitat von: kud am 25 Juli 2018, 17:19:21
Vielleicht wäre die Geschichte mit einem Notify doch flexibler.

Klar. Frei programmierbar ist immer flexibler, aber ein gewisser Grundstock an Funktionalität erwartet man auch irgendwie von einem Sprachassistenten.
Das "Alle Lampen aus" bekommen wahrscheinlich Siri und Alexa auch hin.
Aber ich stelle es mal zurück und grübel noch ein wenig darüber.

Zitat von: kud am 25 Juli 2018, 17:19:21
Das mit dem Forken finde ich nicht besonders elegant. (besonders wenn man eigentlich den Ablauf bei Snips nocht nicht vollständig verstanden hat like me ;-)
Schicke wäre schon, wie von Dir angesprochen, wenn man die Devices von FHEM updaten könnte.

Das kommt noch, aber am Wochenende geht es erstmal 2 Wochen in den Urlaub und davor wird das nichts mehr. ;)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 25 Juli 2018, 22:17:10
Ok, hier ist die neue Version zum Erstellen eigener Custom Intents.
Von Github downloaden, nach /opt/fhem/FHEM kopieren und dann ein reload 10_Snips.pm oder shutdown restart durchführen.

Das Ganze dient dazu, eigene Abfragen mit Snips erstellen zu können, die über das normale Schalten oder Nummern abfragen hinaus geht.
Auch die Möglichkeit Fragen natürlicher formulieren zu können ist ein weiterer Vorteil.

So lassen sich die Tage bis zur nächsten Restmüll-Leerung im Kalender sicher auch mit dem GetNumeric Intent ermitteln.
Die Frage dazu müsste aber reichlich komisch formuliert werden. (Wie hell ist der Restmüll wäre z.B. eine mögliche Variante  ;D)

Über einen eigenen Intent mit selbst definierten Beispielsätzen wäre hingegen so etwas möglich:
Hey Snips, wann wird der Restmüll abgeholt.


Als kleines Beispiel erstellen wir hier einen Intent der zwei Werte addieren kann.
Evtl. hilft dies auch ein wenig besser zu verstehen wie die Intents und auch Snips funktionieren.

Auf console.snips.ai:
Zitat
Create new app: Sprache "German", Name "CustomIntents"
Den eigenen Assistant auswählen, add App wählen -> My Apps -> Only show apps with actions deaktivieren -> Ap CustomIntents hinzufügen
(Die App bereits vor dem Erstellen des Intents zum Assistenten hinzuzufügen ist wichtig, sonst sind nicht alle Standard Slottypes wie z.B. snips/number verfügbar, hat mich einige Nerven gekostet das rauszufinden.)
CustomIntents -> Edit App
Create new Intent: Name "Calculation"
Add Slot: Name "Number1", Type "snips/number"
Add Slot: Name "Number2", Type "snips/number"
Add Slot: Name "Operator", Type Add Slot -> Name "Operator"

Im neuen Slottype auf Import und dort einfügen:

plus,
geteilt, geteilt durch
mal,
minus,


Close

Auf die 3 Punkte rechts neben Training Examples klicken -> Import Examples
Dort einfügen:

Was ist das Ergebnis von [5](Number1) [plus](Operator) [4](Number2)
Was ergibt [5](Number1) [plus](Operator) [4](Number2)
Was gibt [5](Number1) [plus](Operator) [4](Number2)
Was macht [5](Number1) [plus](Operator) [4](Number2)
Wieviel ist [5](Number1) [plus](Operator) [4](Number2)

Save drücken

Damit sind wir mit dem neuen Intent fertig und aktualisieren den Assistant auf dem Snips Rechner (runterladen/entpacken oder über sam install assistant).

Nun in Fhem im Snips Device das Attribut "snipsIntents" mit folgendem Inhalt füllen:

Calculation=snipsCalc(Number1,Operator,Number2)"


Danach in eurer 99_myUtils.pm eine neue sub einfügen:

# Calculation Intent
sub snipsCalc($$$) {
# Übergebene Parameter in Variablen speichern
my ($val1, $operator, $val2) = @_;

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

if ($operator eq "plus") {
# Antwort überschreiben mit dem Ergebnis
$response = "Das Ergebnis ist " . ($val1 + $val2);
}

# Antwort an das Snipsmodul übergeben
return $response;
}


Danach solltet ihr auf die Spracheingabe Was ist 4 plus 4 die Antwort Das Ergebnis ist 8 erhalten.

Noch ein Hinweis zum Erstellen eigener Intents:
Wählt als Beispielsätze eher ausführliche Sätze als allzu kurze Varianten (z.B. Schalte die Deckenlampe im Wohnzimmer aus).
Anhand der Beispielsätze erstellt Snips das Sprachmodell für den Assistenten.
Haben nun einige Intents Beispielsätze welche ausschließlich aus den Werten der einzelnen Slots bestehten (z.B. "Deckenlampe Wohnzimmer aus" was Device/Room/Value entspricht),
wird Snips irgendwann Probleme bekommen hier ein sinnvolles Modell zu kreieren.

Das merkt man daran, dass die Kurzformen in einigen Intents dann plötzlich nicht mehr funktionieren.
Gegenteilig zu dem was man vermuten würde, führt also gerade das Vermeiden der Kurzformen als Beispielsätze dazu,
dass die Kurzformen später alle einwandfrei funktionieren (Über die möglichen Werte der Slots erkennt Snips den Intent dann problemlos).

Das kommt die Tage auch noch in die Doku mit rein, heute Abend aber nicht mehr. ;)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: der-Lolo am 25 Juli 2018, 22:59:41
Wahrscheinlich kann man doch gut mit LightScene arbeiten, oder?

Zitat von: kud am 25 Juli 2018, 17:19:21
Hmm..

zZeit steuere ich meine Hues über Alexa und entsprechender Gruppierung zB. Wohnzimmer.
So gesehen macht der 4. Slot einen Sinn. Jedoch wenn Jemand einen kompletten Raum mit Licht und Schaltern ausschalten will geht das auch nicht.
Vielleicht wäre die Geschichte mit einem Notify doch flexibler.

Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 26 Juli 2018, 09:50:10
Super Sache. Das mit den Restmüll werde ich am Wochenende mal probieren. :)

Ganze Räume schalte ich mit dem MSwitch Modul von Byte. Aber mit Lightscene würde das auch gehen.
Oder eine structure, wenn alle Geräte den selben state für on/off besitzen.

Zitat von: Thyraz am 25 Juli 2018, 22:17:10
Haben nun einige Intents Beispielsätze welche ausschließlich aus den Werten der einzelnen Slots bestehten (z.B. "Deckenlampe Wohnzimmer aus" was Device/Room/Value entspricht),
wird Snips irgendwann Probleme bekommen hier ein sinnvolles Modell zu kreieren.

Das merkt man daran, dass die Kurzformen in einigen Intents dann plötzlich nicht mehr funktionieren.
Gegenteilig zu dem was man vermuten würde, führt also gerade das Vermeiden der Kurzformen als Beispielsätze dazu,
dass die Kurzformen später alle einwandfrei funktionieren (Über die möglichen Werte der Slots erkennt Snips den Intent dann problemlos).
Mich hatte das schon gewundert, warum "hey snips, Wohnzimmer an" nicht funktionierte. Es kam immer, "da ist leider etwas schief gelaufen".

Ich musste es dann immer umformulieren, etwas so: "hey snips, schalte bitte das Wohnzimmer an", dann ging es.

Du meinst die Training Examples. Da habe ich auch kurze Sachen drin, wie:
Wohnzimmer an
Staubsauger an
Küche an

Aber auch etwas längere Sätze... heißt also, die kurzen wie oben, sollten lieber raus?
Stattdessen lieber längere Sätze mit verschiedenen Synonymen für an/aus bilden?

Muss man eigentlich beides formulieren für "an" und "aus", oder reicht es wenn man es nur für "an" hinterlegt?

Hast du eigentlich ein Timer umgesetzt? Die vorgefertigten Skills oder Apps gehen ja leider nicht, auf unserer Hardware. Habe zwei Module ausprobiert...
Das ist die meist genutzte Funktion bei uns, jedenfalls in der Küche...


Viele Grüße
Mark
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 26 Juli 2018, 11:06:05
Zitat von: mark79 am 26 Juli 2018, 09:50:10
Super Sache. Das mit den Restmüll werde ich am Wochenende mal probieren. :)

Ich hab hier in der Doku auch nochmal was eingetragen dazu:
https://github.com/Thyraz/Snips-Fhem/blob/master/README.md#f%C3%BCr-fortgeschrittene-eigene-custom-intents-erstellen-und-in-fhem-darauf-reagieren


Zitat von: mark79 am 26 Juli 2018, 09:50:10
Mich hatte das schon gewundert, warum "hey snips, Wohnzimmer an" nicht funktionierte. Es kam immer, "da ist leider etwas schief gelaufen".

Ich musste es dann immer umformulieren, etwas so: "hey snips, schalte bitte das Wohnzimmer an", dann ging es.

Du meinst die Training Examples. Da habe ich auch kurze Sachen drin, wie:
Wohnzimmer an
Staubsauger an
Küche an

Ich hab die kurzen Sätze mittlerweile rausgeschmissen, nachdem ich das gemerkt habe.
Aber durch das Forken kommen die Änderungen halt nicht bei dir an.
Du müsstest an sich deine Devices (und evtl. Räume falls du die verändert hast) exportieren,
dann geforkte App und geforkte Intents aus deinem Account löschen (nicht nur aus dem Assistenten).

Da merkt man mal wieder wie bescheiden die aktuelle Lösung mit dem forken ist. ;)

Ob die Kurzformen nach Änderungen an den Beispielsätzen gehen kann man übrigens auch direkt auf snips.console.ai testen:
Einfach mal "Deckenlampe an" rechts in der Seitenleiste eingeben.
Im JSON Gebilde darunter sollte dann der Slot Device und der Slot Value entsprechend auftauchen.

Zitat von: mark79 am 26 Juli 2018, 09:50:10
Muss man eigentlich beides formulieren für "an" und "aus", oder reicht es wenn man es nur für "an" hinterlegt?
Nein, verschiedene Werte der Slots sind egal.
Es geht eher um Beispiele wie:
- Mache die Deckenlampe im Wohnzimmer aus
- Schalte die Deckenlampe im Wohnzimmer aus

Zitat
Hast du eigentlich ein Timer umgesetzt? Die vorgefertigten Skills oder Apps gehen ja leider nicht, auf unserer Hardware. Habe zwei Module ausprobiert...
Das ist die meist genutzte Funktion bei uns, jedenfalls in der Küche...

Vor lauter Programmieren am Modul hab ich noch nichtmal meine Geräte alle in Snips eingebunden. ;D

Aber das wäre ja auch eine hervorragende Übung für einen Custom Intent. ;)
Hey Snips, stelle einen Timer auf 6 Minuten
In der Perl Funktion ein AT oder Internal Timer starten und beim Zeitende ein Snip say Timer fertig ausführen. :)

edit: Wobei Timer stellen ja auch irgendwie eine Grundfunktionalität der meisten Assistenten ist.
Evtl. sollte ich das auch mal als Standard-Intent mit ins Modul aufnehmen.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 26 Juli 2018, 11:45:25
Was mir gerade einfällt.

Ist es möglich über Snips eine Spracheingabe zu machen und NUR über FHEM (TTS oä.) ausgeben zu lassen?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 26 Juli 2018, 12:01:45
Also das Snips TTS Modul überhaupt nicht zu verwenden, sondern alle Ausgaben des Snips Moduls auf ein FHEM TTS Modul umzuleiten?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 26 Juli 2018, 12:11:54
Zitat von: Thyraz am 26 Juli 2018, 12:01:45
Also das Snips TTS Modul überhaupt nicht zu verwenden, sondern alle Ausgaben des Snips Moduls auf ein FHEM TTS Modul umzuleiten?
Ja. Denn ich habe schon einen guten/lauten Lautsprecher am FHEM-Pi dran ;-)

Das wäre die Lösung hier zu Hause wo ich Internet habe. Im Garten sieht es anders aus. Da sollte ein Pi mit FHEM und Snips ohne Internetanbindung laufen.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 26 Juli 2018, 12:23:47
Was gibt es denn in FHEM bisher für TextToSpeech Lösungen?
Nur das hier: https://fhem.de/commandref_DE.html#Text2Speech ?

Kann ich mir irgendwann mal anschauen ob das nicht recht einfach umsetzbar wäre.

Dann könnte man Snips einfach das Endsession Kommando ohne Text schicken und dafür dem TTS Modul den Text.
Das Problem ist halt, dass Snips ja auch eigene Sounds abspielt (Hotword erkannt, Erkennung fehlgeschlagen, ...).

Die würden dann eben untergehen, was durchaus zu Verwirrung führen kann.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 26 Juli 2018, 12:33:41
Naja. Das das "Mikrofon" sagt, dass es was nicht verstanden hat ist doch ok.

Oder man macht erst gar keinen Lautsprecher an den Snips-Pi dran ;-)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 26 Juli 2018, 12:43:11
Ah ok, du wolltest dennoch einen Lautsprecher dran machen.
Ich dachte den lässt du weg.

Mit Verwirrung meinte ich, dass diese Sounds dann eben nicht zu hören sind.
Und die einzuhaltende Pause zwischen "Hey Snips" und dem Text den man sagen will ist eben genau die Länge des Sounds. ;)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 26 Juli 2018, 16:58:50
@kud man kann den Sound übers Netzwerk weiterleiten, mit Pulseaudio:
https://wiki.ubuntuusers.de/PulseAudio/
https://wiki.archlinux.org/index.php/PulseAudio/Examples#PulseAudio_over_network
https://snips.gitbook.io/documentation/ressources/sound-setup-linux
Aber selbst habe ich das noch nicht ausprobiert.

Zitat von: Thyraz am 26 Juli 2018, 11:06:05
Ich hab die kurzen Sätze mittlerweile rausgeschmissen, nachdem ich das gemerkt habe.
Aber durch das Forken kommen die Änderungen halt nicht bei dir an.
Du müsstest an sich deine Devices (und evtl. Räume falls du die verändert hast) exportieren,
dann geforkte App und geforkte Intents aus deinem Account löschen (nicht nur aus dem Assistenten).
Da merkt man mal wieder wie bescheiden die aktuelle Lösung mit dem forken ist. ;)
Alles klar, danke für die Erklärung! Dann werde ich das am besten neu forken und vorher meine Sachen exportieren und umschreiben. :)

Zitat von: Thyraz am 26 Juli 2018, 11:06:05
Nein, verschiedene Werte der Slots sind egal.
Es geht eher um Beispiele wie:
- Mache die Deckenlampe im Wohnzimmer aus
- Schalte die Deckenlampe im Wohnzimmer aus

Ich hatte natürlich beides eingetragen.  ;D

Zitat von: Thyraz am 26 Juli 2018, 11:06:05
Vor lauter Programmieren am Modul hab ich noch nichtmal meine Geräte alle in Snips eingebunden. ;D

Aber das wäre ja auch eine hervorragende Übung für einen Custom Intent. ;)
Hey Snips, stelle einen Timer auf 6 Minuten
In der Perl Funktion ein AT oder Internal Timer starten und beim Zeitende ein Snip say Timer fertig ausführen. :)

edit: Wobei Timer stellen ja auch irgendwie eine Grundfunktionalität der meisten Assistenten ist.
Evtl. sollte ich das auch mal als Standard-Intent mit ins Modul aufnehmen.
Ja neue Geräte kommen schon mit der Zeit dort rein. Ich habe auch erst gerade mal 5-6 Stück drin.
Macht auch bisher noch wenig sinn, weil ich bisher nur ein snips Gerät habe und der steht dazu noch im Flur.
Wie viele snips Geräte hast du eigentlich? :)

Das mit Timer mal schauen, ob ich das am WE hinkriege. Erstmal wollte ich den Abfallkalender einbinden.
Dann wird mir das bestimmt auch klarer, wie man solche Sachen wie den Timer umsetzt.

Hast du eigentlich schon mal darüber nachgedacht wie man die Lautstärke per Fhem ändern könnte? Also das Nachts die Lautstärke runtergefahren wird und Tagsüber erhöht wird?
Per Snips/mqtt geht das wohl anscheinend noch nicht, ich habe jedenfalls in der Doku und Github nichts gefunden.
Aber man könnte es per Crontab umsetzen, mit dem Befehl geht das bei mir:  amixer -c1 sset 'PCM' 80%
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 26 Juli 2018, 17:17:52
Zitat von: mark79 am 26 Juli 2018, 16:58:50
Wie viele snips Geräte hast du eigentlich? :)
Bisher auch nur das eine Device.
Aber ein Pi, ein weiteres PS3 Eye und Lautsprecher stehen schon im Büro und warten darauf irgendwann als erster Satellit installiert zu werden. ;)

Zitat von: mark79 am 26 Juli 2018, 16:58:50
Das mit Timer mal schauen, ob ich das am WE hinkriege. Erstmal wollte ich den Abfallkalender einbinden.
Dann wird mir das bestimmt auch klarer, wie man solche Sachen wie den Timer umsetzt.

Ja, wenn du das einmal gemacht hast ist das mit Sicherheit kein Hexenwerk mehr.
Der Ablauf ist ja immer der selbe. Du brauchst:
- einen Intent in deinem Snips Assistent der beim Sprechen eines Texts eben Intent-Name + Slot-Werte ins MQTT schiebt
- in FHEM eine Zeile im snipsIntents Attribut, welches diesem Intent-Namen eine Perlfunktion zuweist
- Eine Perl Funktion in deiner 99_myUtils.pm welche die Slot-Werte als Parameter übergeben bekommt

In der Funktion kannst du dann machen was du willst.
Du kannst anhand der Parameter Geräte schalten, Readings abfragen, Readings setzen, Timer starten, Werte berechnen, ...
Am Ende kannst du dann noch einen Text als Rückgabewert zurückliefern, welchen Snips dann als TTS ausgibt.
Dies kann ein einfaches "Ok" sein, falls der Intent nur Sachen schaltet und eine Bestätigung reicht.
Es kann aber auch ein ganzer Satz sein, welcher berechnete Werte oder was auch immer enthält.

Zitat von: mark79 am 26 Juli 2018, 16:58:50
Hast du eigentlich schon mal darüber nachgedacht wie man die Lautstärke per Fhem ändern könnte? Also das Nachts die Lautstärke runtergefahren wird und Tagsüber erhöht wird?

Ja, da mich das auch nervt, dass das bisher nicht geht. ;)
Der aktuelle Plan: Ein Python Script schreiben (Ähnlich snips-tts-polly), welches auf volume topics im MQTT lauscht und daraufhin mit dem AlsaMixer die Lautstärke verändert.
Dann könnte man das bequem bei einem "set Snips volume 50" volume Nachrichten über MQTT publishen und ich bräuchte keinen weiteren Kommunikationskanal neben MQTT zum Snips Rechner.


Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 26 Juli 2018, 17:48:25
Neues kleines Update auf Github:

Das Abfragen von numerischen Werten ohne die Nennung eines bestimmten Device-Namens ist nun möglich.
Snips sucht dann über den Raum und den Type nach einem passenden Gerät.

Dafür muss der type im snipsMapping gesetzt sein.

Beispiel snipsMapping eines Thermometers:

GetNumeric=temperature,type=Temperatur


Beispielfrage an Snips:
Wie ist die Temperatur im Wohnzimmer
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 26 Juli 2018, 18:36:08
Jetzt machst Du aber vor Deinem Urlaub Dampf. TOP und Daumen hoch :)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 26 Juli 2018, 18:40:44
Zitat von: Thyraz am 26 Juli 2018, 17:17:52
Bisher auch nur das eine Device.
Aber ein Pi, ein weiteres PS3 Eye und Lautsprecher stehen schon im Büro und warten darauf irgendwann als erster Satellit installiert zu werden. ;)
Ich erwarte auch noch ein Orange Pi, am besten ich bestell mir schon mal ein Mikro, bevor die alle weg sind oder die im Preis steigen. :D

Zitat von: Thyraz am 26 Juli 2018, 17:17:52
Ja, wenn du das einmal gemacht hast ist das mit Sicherheit kein Hexenwerk mehr.
Der Ablauf ist ja immer der selbe. Du brauchst:
- einen Intent in deinem Snips Assistent der beim Sprechen eines Texts eben Intent-Name + Slot-Werte ins MQTT schiebt
- in FHEM eine Zeile im snipsIntents Attribut, welches diesem Intent-Namen eine Perlfunktion zuweist
- Eine Perl Funktion in deiner 99_myUtils.pm welche die Slot-Werte als Parameter übergeben bekommt

In der Funktion kannst du dann machen was du willst.
Du kannst anhand der Parameter Geräte schalten, Readings abfragen, Readings setzen, Timer starten, Werte berechnen, ...
Am Ende kannst du dann noch einen Text als Rückgabewert zurückliefern, welchen Snips dann als TTS ausgibt.
Dies kann ein einfaches "Ok" sein, falls der Intent nur Sachen schaltet und eine Bestätigung reicht.
Es kann aber auch ein ganzer Satz sein, welcher berechnete Werte oder was auch immer enthält.

Für dich ist das sicherlich leicht. :) Ich kann leider kein Perl und in die 99_myUtils.pm,
habe ich bisher kaum was selber rein geschrieben, sondern nur Sachen rein kopiert und dann ergänzt. :D
Jedoch deine Beispiele helfen schon enorm... und ich muss mal anfangen, das zu lernen.

Du hast schon ein Bespiel im Git und ich habe mal versucht (vorher gegoogelt) es zu erweitern. Aber Fhem wirft mir einen Fehler aus:

# Abfall Intent
sub snipsAbfall($) {
    # Übergebene Parameter in Variablen speichern
    my $type = @_;

    # Standardantwort festlegen
    my $response = "Das kann ich leider nicht beantworten";

    if ($type eq "Restmuell") {
        # Wert aus Reading lesen
        my $days = ReadingsVal("MyAbfallDevice","Restmuell_days, undef);
        # Antwort überschreiben mit dem Ergebnis
        $response = "Der Restmuell wird in $days abgeholt";
    }
    elsif ($type eq "Altpapier") {
# Wert aus Reading lesen
        my $days = ReadingsVal("MyAbfallDevice","Altpapier_days, undef);
        # Antwort überschreiben mit dem Ergebnis
        $response = "Das Altpapier wird in $days abgeholt";
    }
   
    # Antwort an das Snipsmodul zurück geben
    return $response;
}


ERROR:

syntax error at ./FHEM/99_myUtils.pm line 37, near "$response = "Der Restmuell " Global symbol "$days" requires explicit package name (did you forget to declare "my $days"?) at ./FHEM/99_myUtils.pm line 37. Global symbol "$days" requires explicit package name (did you forget to declare "my $days"?) at ./FHEM/99_myUtils.pm line 39. BEGIN not safe after errors--compilation aborted at ./FHEM/99_myUtils.pm line 210.


Wenn ich dein Original Code nehme, kommt der Fehler nicht.
Ich habe gedacht, nimmst du das hier noch mit rein:
my $days = @_;

Dann kommt das hier:
syntax error at ./FHEM/99_myUtils.pm line 38, near "$response = "Der Restmuell " BEGIN not safe after errors--compilation aborted at ./FHEM/99_myUtils.pm line 211.

Geht das überhaupt so oder muss ich den Code komplett für jede Tonne übernehmen und nur umschreiben, für Restmüll, Gelbe Tonne, Altpapier Tonne... Sorry, wie gesagt ich bin ein Perl bzw. Programmier noob. :D

Zitat von: Thyraz am 26 Juli 2018, 17:17:52
Ja, da mich das auch nervt, dass das bisher nicht geht. ;)
Der aktuelle Plan: Ein Python Script schreiben (Ähnlich snips-tts-polly), welches auf volume topics im MQTT lauscht und daraufhin mit dem AlsaMixer die Lautstärke verändert.
Dann könnte man das bequem bei einem "set Snips volume 50" volume Nachrichten über MQTT publishen und ich bräuchte keinen weiteren Kommunikationskanal neben MQTT zum Snips Rechner.
Ja so was wäre natürlich noch cooler! :)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 26 Juli 2018, 19:28:29
Ich glaube ich es nun verstanden, so wie oben kann dies ja nicht gehen.

Ich bräuchte dazu mehrere Einträge in der 99_myUtils.pm, passend zu den snipsIntent wie:
snipsAbfall
snipsGelbeTonne
snipsAltPapier

Ich setzte das mal um und Freitag wirds getestet. :)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 26 Juli 2018, 20:49:10
Oh, da hab ich dich auf die falsche Fährte geführt.
Da ist ein Anführungszeichen verschütt gegangen bei dem Beispielcode auf Github.

Bei ReadingsVal hat der String für den Readingsnamen am Ende kein Anführungszeichen.

Versuch es mal so:

# Abfall Intent
sub snipsAbfall($) {
    # Übergebene Parameter in Variablen speichern
    my ($type) = @_;

    # Standardantwort festlegen
    my $response = "Das kann ich leider nicht beantworten";

    if ($type eq "Restmuell") {
        # Wert aus Reading lesen
        my $days = ReadingsVal("MyAbfallDevice","Restmuell_days", undef);
        # Antwort überschreiben mit dem Ergebnis
        $response = "Der Restmuell wird in $days abgeholt";
    }
    elsif ($type eq "Altpapier") {
        # Wert aus Reading lesen
        my $days = ReadingsVal("MyAbfallDevice","Altpapier_days", undef);
        # Antwort überschreiben mit dem Ergebnis
        $response = "Das Altpapier wird in $days abgeholt";
    }
   
    # Antwort an das Snipsmodul zurück geben
    return $response;
}


Dadurch kam Perl wohl total durcheinander.
Sehe auf die Schnelle (ungetestet) sonst gerade keinen Fehler mehr.

Und an sich solltest du nur eine Perl-Funktion brauchen, solange du das in Snips auch nur in einen Intent rein hast (der dann für den Slot mehrere mögliche Wörter wie Restmüll/Altpapier,... hat).


edit:
Und ein bisschen Perl lernen schadet nie bei FHEM. ;)
Hatte bevor ich zu FHEM kam auch noch nie eine Zeile Perl gesehen.

Irgendwann wechselt man dann halt vermehrt in Notifies und DOIFs per geschwungenen Klammern auf die Perl-Ebene.
Dann kamen die ersten eigenen Funktionen die ich wegen Mehrfachverwendung in  die 99_myUtils ausgelagert habe.
Danach dann etwas komplexere Funktionen in Perl die anders nicht mehr zu realisieren waren.
Als letztes dann ein paar Änderungen an alten verwaisten Modulen über die ich mich in den Aufbau der FHEM-Module reingefuchst habe.
Und geendet hat es jetzt eben mit dem ersten eigenen Modul, nachdem es für Snips noch nichts gab, ich es aber unbedingt ausprobieren wollte. :)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 26 Juli 2018, 23:05:37
Zitat von: Thyraz am 26 Juli 2018, 20:49:10
Oh, da hab ich dich auf die falsche Fährte geführt.
Da ist ein Anführungszeichen verschütt gegangen bei dem Beispielcode auf Github.

Bei ReadingsVal hat der String für den Readingsnamen am Ende kein Anführungszeichen.

Das ist mir nicht aufgefallen. Jedenfalls geht es jetzt, ohne Fehler, danke dir! :)

Ich habe in der Console eine CustomIntents APP erstellt, darin zwei Intents, einmal der Taschenrechner bzw. Calc und der Abfallkalender. Nur dort kommt das nächste Problem...

Und zwar scheint Snips die Training Examples nicht zuordnen zu können. Also man sieht das an der fehlenden Farbe und am record request. Dort stimmt die Antwort nicht:

{
  "input": "wann wird die blaue tonne geleert",
  "intent": {
    "intentName": "mark79:Abfallkalender",
    "probability": 1
  },
  "slots": []
}


Ich habe mal ein paar Screenshots von zwei Bespielen angelegt:
https://www.dropbox.com/sh/3ui8azkvnpoyhmu/AABugzNtHB7nJEq-63ZZ31wka?dl=0

Ich verstehe noch nicht wirklich, wo (in der Console) was hin muss. Stehe sozusagen wie ein Ochs vorm Berg, trotz des Calc Beispiels.  ???
Ich kann ja bestimmt die zwei Tonnen (Restmuell und graue Tonne) in ein Intent rein werfen? und wenn ja,
gehören die (Restmuell und graue Tonne) jeweils unter dem Slot Namen oder unter dem Type? Das habe ich noch nicht ganz verstanden...

Ich habe beides ausprobiert, aber das scheint er nicht nutzen zu wollen. Irgendwas scheint noch zu fehlen, oder falsch zu sein.

Zitat von: Thyraz am 26 Juli 2018, 20:49:10
edit:
Und ein bisschen Perl lernen schadet nie bei FHEM. ;)
Hatte bevor ich zu FHEM kam auch noch nie eine Zeile Perl gesehen.

Irgendwann wechselt man dann halt vermehrt in Notifies und DOIFs per geschwungenen Klammern auf die Perl-Ebene.
Dann kamen die ersten eigenen Funktionen die ich wegen Mehrfachverwendung in  die 99_myUtils ausgelagert habe.
Danach dann etwas komplexere Funktionen in Perl die anders nicht mehr zu realisieren waren.
Als letztes dann ein paar Änderungen an alten verwaisten Modulen über die ich mich in den Aufbau der FHEM-Module reingefuchst habe.
Und geendet hat es jetzt eben mit dem ersten eigenen Modul, nachdem es für Snips noch nichts gab, ich es aber unbedingt ausprobieren wollte. :)
Das scheinst du recht schnell gelernt zu haben! *daumenhoch* Hast du mit einem Perl Buch unterm Kopfkissen geschlafen?  ;)

Die fehlenden Perl Kenntnisse merkt man zwischendurch leider immer wieder, das frisst dann auch Zeit.
Notifys und DOIFs habe ich auch anfangs benutzt, mittlerweile lieber MSwitch, das ist einfacher und es sieht ordentlicher aus.
Aber ich werde mich damit mal mehr mit beschäftigen, am besten an kleinen beispielen... :)


Viele Grüße
Mark
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 26 Juli 2018, 23:23:13
Du musst die Slots für die ersten paar Sätze händisch Zuordnen.
In den Beispielsätzen das entsprechende Wort mit der Maus markieren und dann kommt ein Popup.

Wahrscheinlich ist das alles was dir fehlt. 😉

Ist ein wenig versteckt, evtl. muss das auch noch in die Anleitung rein.
Wenn man dann auf Save drückt sollte es danach klappen.

Mein Calc Beispiel mit den importierten Beispielsätzen, importiert die Zuordnung gleich mit (ist in dem zu kopierenden Text in Klammern mit drin), daher geht es dort.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 26 Juli 2018, 23:31:19
Ahhhh händisch zuweisen, ja so was erfährt man wohl, wenn man das Wiki ließt.  ::)  ;D

Jetzt geht es, noch mals vielen Dank!!! https://www.dropbox.com/s/wol87goo88roynx/Snips%20Console%20for%20Voice%20Assistants.png?dl=0

Ausprobieren ob es klappt, kann ich aber erst morgen. Ich gebe dann noch mal bescheid. :)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 27 Juli 2018, 07:56:32
Ja, tief in der von mir auf Github verlinkten Doku zum Erstellen eines neuen Intents ist es drin:
https://snips.gitbook.io/documentation/console/set-intents#create-a-new-intent

Aber das Dokument ist halt von Snips selbst und die verweisen da dann auf die Erstellung von Actions und die Möglichkeit einen Skill für Bares um Unmengen Beispielsätze erweitern zu lassen usw.
Das mag teilweise mehr verwirren als helfen. ;)

Denke wir sollten da irgendwann mal eine abgespeckte Form der Anleitung in der FHEM Doku haben.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 27 Juli 2018, 10:15:08
Vielen Dank für das super Modul und für das "Finden" von Snips. Sowas habe ich mir schon sehr lange gewünscht und ich bin echt begeistert von den Möglichkeiten!

Ich lese schon seit mehreren Jahren im Forum mit, das Snips-Modul bringt mich aber jetzt dazu, meinen ersten Kommentar zu verfassen  :)
Heute Morgen habe ich meine ersten Lampen per Sprache geschaltet, für mich kommt eine Amazon/Google/Apple Lösung dafür zu Hause nicht in Frage. Deshalb nochmal Danke für diese super Lösung! In den nächsten Tagen werde ich mich dann mal in das Thema Erweiterung mittels myUtils einarbeiten.

Eine Idee für die evtl. etwas fernere Zukunft hätte ich noch:
Der NLU-Teil von Snips kann soweit ich in der NLU-Doku richtig verstanden habe auch eigenständig genutzt werden (und ist mittlerweile sogar Open-Source). Es gibt das Modul Babble, das natürliche Spracheingaben in Befehle für FHEM umwandelt.
Super wäre es, wenn man den ja ohnehin schon eingelernten Snips-NLU ebenfalls für z.B. Befehle per Telegram nutzen könnte. Da das Snips-TTS ja im Snips-Modul schon zur Textausgabe genutzt werden kann vermute ich, dass dies in die andere Richtung ebenfalls relativ einfach möglich sein müsste, richtig? Also beliebigen Text über das Snips-Modul an Snips weiterreichen, entsprechend Aktionen in FHEM auszulösen und die Antworten statt per TTS z.B. über Telegram auszugeben.

Gruß Jonas
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 27 Juli 2018, 10:29:52
Zitat von: jowe am 27 Juli 2018, 10:15:08
Eine Idee für die evtl. etwas fernere Zukunft hätte ich noch:
Der NLU-Teil von Snips kann soweit ich in der NLU-Doku richtig verstanden habe auch eigenständig genutzt werden (und ist mittlerweile sogar Open-Source). Es gibt das Modul Babble, das natürliche Spracheingaben in Befehle für FHEM umwandelt.
Super wäre es, wenn man den ja ohnehin schon eingelernten Snips-NLU ebenfalls für z.B. Befehle per Telegram nutzen könnte. Da das Snips-TTS ja im Snips-Modul schon zur Textausgabe genutzt werden kann vermute ich, dass dies in die andere Richtung ebenfalls relativ einfach möglich sein müsste, richtig? Also beliebigen Text über das Snips-Modul an Snips weiterreichen, entsprechend Aktionen in FHEM auszulösen und die Antworten statt per TTS z.B. über Telegram auszugeben.

Das verstehe ich nicht. Was hat die Spracheingabe mit TELEGRAM zu tun ???
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 27 Juli 2018, 10:46:00
@Jonas freut mich, dass es bei dir auch läuft. :)


@kud
NLU ist nicht die Spracheingabe selbst, sondern "Natural Language Understanding".
Das Modul ist hinter die Spracherkennung gehängt und zerlegt den erkannten Text in die Intents und Slots.

Das Problem dürfte sein, dass NLU eben auf die Daten aus dem Assistenten zurückgreift.
Man müsste alles was Telegram verstehen soll auch dort einpflegen.

Sprich dein Telegram kann dann nur das, was auch dein Snips kann.
Aber wenn das passt wäre das evtl. schon möglich.
Vorteil wäre eben nur eine Datenhaltung was Intents und zu verstehende Worte angeht.

Bin mir aber nicht sicher ob NLU wirklich reagiert, wenn die übergebene sessionID auf keine gerade in Snips aktive session verweist.
Ansonsten könntest du das schon jetzt nutzen.

Einfach mit den Standard MQTT Modulen von FHEM Messages auf den SnipsMQTT Server publishen.
Wie die Nachricht aussehen sollte sieht man hier.
https://snips.gitbook.io/documentation/ressources/hermes-protocol#nlu

Danach sollte man den geparsten Inhalt über MQTT sehen können.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 27 Juli 2018, 11:21:08
ZitatSprich dein Telegram kann dann nur das, was auch dein Snips kann.
Ja, genau. Das ist natürlich so. Aber wie du schon schreibst ist der große Vorteil, dass ich die Devices/Intents etc. nur in Snips (ein)pflegen muss und dann mit der gleichen Logik entweder per Spracheingabe oder per Texteingabe (Telegram war ja nur ein Beispiel dafür) die gleichen Geräte steuern kann.

Das Auslesen des Textes aus Telegram sollte nicht so schwierig sein, aber das Weiterreichen des Textes per MQTT ist (für mich) schwieriger, da das dann auf die Perl-Ebene geht. Ich werde mir den Code deines Moduls anschauen, im Prinzip sollte die Logik ja die Gleiche sein, wie das Weiterreichen an das Snips-TTS. Vielleicht bekomme ich ja was zusammengebastelt.

Danke Gruß Jonas
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 27 Juli 2018, 12:09:40
Ich muss sagen, der Gedanke den persönlichen Assistenten sowohl per Sprache als auch per Text steuern zu können gefällt mir durchaus. :)
Denn darauf läuft die Idee ja an sich hinaus, oder?

Man könnte das also viel weiter treiben als nur NLU herauszulösen.

Nehmen wir an, ich füge dem Snips Modul ein Befehl "execute" hinzu, dem man einen beliebigen Text übergeben kann.
Den jagt das Modul dann über MQTT durch NLU und initiiert mit den Daten danach selbst ein Intent Publish auf MQTT wie das Snips normal macht nachdem der User was gesagt hat.

Als SessionID gebe ich dabei nicht einen Identifier an wie ihn Snips formatiert, sondern sowas wie fhem.<UniqueID>
Auf diesen Intent Reagiert das Fhem Snips-Modul dann wie auf jeden normalen Intent der von Snips kommt.
Also entweder mit den StandardIntents wie SetOnOff oder auch mit eigenen Custom Intents vom User.
Fhem würde also z.B. entweder Lampen schalten oder die aktuelle Temperatur in einem Raum bestimmen.

Am Ende habe ich im Modul dann ja immer eine Textantwort die ich an Snips zurück übergebe.
Hier könnte ich nochmal überprüfen ob die sessionID mit "fhem." beginnt.
In diesem Fall könnte ich den zurückgegebenen Text in ein Reading execResponse schreiben statt ihn an Snips zu übergeben.

Danach reicht an sich ein DOIF welches auf Events des Readings msgText vom TelegramBot lauscht.
Diesen Text würde man dann an set Snips execute ... übergeben.

Der DOELSIF Zweig würde wiederum auf Events vom Reading execResponse des Snips Device warten und den Inhalt dann mit Telegram als Antwort an den User schicken.

Der Assistent hätte also wirklich das selbe Verhalten über Text oder über Sprache.
Titel: Multiassistent
Beitrag von: laberlaib am 27 Juli 2018, 12:48:10
Ich will nicht dirket vom Modul ablenken, aber finde keine besseren Ort um euch meine Multiassistentenkonfiguration zu präsentieren:

07.08.2018: Edith sagt mir, dass irgendwas an der Anleitung unten Glück war - jetzt bekomme ich das so nicht mehr hin... Ich aktualisiere, sobald sich was tut.

tl;dr
Multiassistent mit mehreren Assistentenserver allerdings nur einem Mikrofon pro Raum per MQTT-Bridging der audioServer statt gemeinsamer Nutzung eines MQTT-Brokers.

Alles in einem Teststadium. Bei mir hat es mindestens 10 Minuten funkioniert, was allerdings nicht heisst, dass im Hintergrund irgendein Loop gerade Buffer volllaufen lässt und alles zusammenbricht.

Da meine Frau Spanierin ist und ich gerne ähnliche Apps auf unterschiedliche Assistenen verteilen würde (derzeit landet alles Unverständliche auf der Einkaufsliste da der Slot einen sehr umfangreichen Wortschatz besitzt), hätte ich gerne mehrere Assitenten ohne aber in jedem Zimmer zwei Satelliten zu installieren. Snips bewirbt das auch auf ihrere Webseite, allerdings ohne Beispiel (https://forum.fhem.de/index.php/topic,87897.msg819688.html#msg819688).

Ich hatte einfach mal alles auf einem MQTT-Broker zusammengeschalten, allerdings funktioniert das nicht, da der Hotworddetektor nur "los" sagt, die angeschlossenen Assistenten wohl nicht zwischen den Hotwords selbst unterscheiden (obwohl es sowas wie eine HotwordID gibt, die hatte bei mir allerdings keine Auswirkungen).

Ich hab das jetzt mit Linuxhalbwissen (copy&paste/"sudo apt-get..."), MQTT Anlesen und Hermes Studieren (https://snips.gitbook.io/documentation/ressources/hermes-protocol) folgendermaßen realisiert und es funktioniert in meiner Testinstallation (2 Assistenen auf 2 RPis und einem Satelliten auf einem RP0):
Da der Snips-Audio-Server einfach per MQTT das Mikrofon streamt sowie Audioinformationen über MQTT bezieht und abspielt habe ich die Audio-Server-Topics im MQTT gebridgt. Das Schöne ist, dass man diesen Servern per "bind" eine eigene ID geben kann (vgl. Anleitung zur Satellite-Konfiguration (https://snips.gitbook.io/documentation/advanced-configuration/platform-configuration#example-of-configuration-file-for-one-main-device-in-the-living-room-and-one-satellite-small-device-in-the-bedroom).

Zwei Assistenten parallel auf einem RPi beherrsche ich nicht und kenne auch die Leistungsfähigkeit nicht. U.U. könnte man sich ja einen Snips-Assistenten-Server mit virtuellen Instanzen aufbauen.

Also Schritt für Schritt:

1) Zwei Assistenen auf zwei PIs installieren und einem davon dann ein eigenes Hotword spendieren.
https://snips.gitbook.io/documentation/advanced-configuration/wakeword/personal-wakeword

2) Auf den Satelliteservern alle anderen Snips-Services ausschalten oder aber gar nicht installieren
sudo systemctl stop snips-*
sudo systemctl start snips-audio-server


3) Den Satellitenaudioservern per "bind" in der snips.toml eigene Namen geben.
https://snips.gitbook.io/documentation/advanced-configuration/platform-configuration#example-of-configuration-file-for-one-main-device-in-the-living-room-and-one-satellite-small-device-in-the-bedroom

4) Auf den Satelliten das MQTT-Audioservertopic an die Assistenen bridgen:
https://stackoverflow.com/questions/48982780/bridging-an-mqtt-broker-to-2-remote-mqtt-brokers-simultaneously
Bei mir heißt der Satellite noch aus der Testkonfiguration heraus "bedroom@mqtt", also habe ich eine private Kofigurationsdatei für mosquitto hinterlegt, welche ebenfalls geladen wird und die Bridges enthält:
sudo nano /etc/mosquitto/conf.d/conf_priv.conf
und darin dann:

# Privates Configfile für mosquitto auf dem Zero
connection Bridge2RP3
address 192.168.2.109:1883
topic hermes/audioServer/bedroom/# both

connection Bridge2RP2
address 192.168.2.104:1883
topic hermes/audioServer/bedroom/# both


(meine Assistenen laufen je auf einem RP2 und einem RP3, daher kommen die Namen für die Connections).

4a) ich musste immer den Satelliten neu starten, damit mosquitto die Änderungen übernommen hat, evtl. gehts auch mit systemctl restart o.ä.

5) auf den Assistenten mit
mosquitto_sub -v -h 127.0.0.1 -p 1883 -t hermes/audioServer/bedroom/#'
könnt Ihr Euch anzeigen lassen, was auf dem Topic dann so los ist. Da das ein Stream ist, sollte der Bildschirm nur so tanzen.

Wenn man jetzt mit
sam watch
das Geschehen beobachtet, dann bekommen zwar beide Assistenten mit, wenn das der andere aktiviert wird, da ja alles auf dem "bedroom-topic" am Ende bei beiden landet und der aktivierte Assistent ja Rückgabewerte schickt. Allerdings arbeitet der nicht aktivierte Assistent keine Abfragen ab.

Die Assistentenaudioserver werde ich dann auch per "bind" von default auf was anderes umstellen und dann auch bridgen.

Vielleicht geht das alles auch einfacher und man kann 2 Assistenten auf einer Maschine installieren, die Leistungs soll ja auch für Multiroom/Multidialog reichen, allerdings habe ich dazu keine Anleitung gefunden und bin nicht wissend genug, an anderen Stellschrauben rumzuspielen.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: ChrisK am 27 Juli 2018, 13:38:07
Zitat von: jowe am 27 Juli 2018, 10:15:08
...für mich kommt eine Amazon/Google/Apple Lösung dafür zu Hause nicht in Frage. Deshalb nochmal Danke für diese super Lösung!...
Dem kann ich mich erstmal nur anschließen (unabhängig davon ob es bei mir gehen wird oder nicht).

Ich habe fhem auf einem Ubuntu-HTPC installiert und dort soll es auch weiterhin laufen.
Jetzt stelle ich mir die Frage, ob ich Snips dort auch installiert kriege. Die Installation wird für Pi, Android, iOS und Debian beschrieben.
Wenn ich nach "snips.ai ubuntu" suche, finde ich auch nicht wirklich was.

Hat das jemand schon mal probiert?
Wenn es nicht geht, dann ist es so, würde aber trotzdem gerne rausfinden, ob ich schon aufgeben soll oder weiter suchen soll ;)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 27 Juli 2018, 14:01:23
Zitat von: Thyraz am 27 Juli 2018, 12:09:40
Ich muss sagen, der Gedanke den persönlichen Assistenten sowohl per Sprache als auch per Text steuern zu können gefällt mir durchaus. :)
Denn darauf läuft die Idee ja an sich hinaus, oder?
....
Der Assistent hätte also wirklich das selbe Verhalten über Text oder über Sprache.

Ja, genau so hatte ich das gemeint. Das käme meiner Vorstellung eines digitalen Assistenten schon sehr nah.
Babble und Telegram ChatBot waren mir bisher zu großer Aufwand (insbesondere bei der Pflege), aber Snips mit vielleicht sogar Multi-Turn-Dialog scheint das auch alles abzudecken, und das auch noch (gefühlt) einfacher und flexibler. Dadurch hätte meiner Meinung nach FHEM einen enormen Komfortfaktor hinzugewonnen

Und wenn ich noch weiter träumen darf: ASR-Injection in Verbindung mit FHEM könnte (jedenfalls für mich) das ultimative Feature werden. In FHEM laufen alle Informationen zusammen: Kalender und  Kontakte über Nextcloud, Telefonie über Fritzbox, Filmdatenbank aus Kodi, Musikdatenbank in der Squeezebox, Wetterinformationen, RSS Feeds... Wenn sich diese Informationen gezielt abfragen lassen und zu Steuerungszwecken nutzen lassen, ist verdammt viel möglich.

@laberlaib: Das klingt sehr interessant. Langfristig gehe ich davon aus, dass jeder Bewohner einen eigenen Assistenten brauchen wird. Fragen wie "wann fährt mein Bus zur Arbeit?" z.B. müssen ja personenabhängig beantwortet werden.

@ChrisK: Ich habe mein FHEM auf einem Qnap-Nas als Docker-Image laufen und Snips auf einem PI3.
Da ich diverse Problemberichte über nicht funktionierende Snips-Installationen auf diversen Plattformen gelesen habe, habe ich mir einen PI3 und die Playstation-Kamera mit Mikrofon besorgt. FHEM verbindet sich ja über mqtt mit Snips, FHEM und Snips müssen also nicht auf dem gleichen Gerät laufen. Wenn das alles mal rund läuft werde ich mal schauen, ob ich für den Snips-Server ein Dockerimage auf meine Nas bekomme. Dann dient der Pi halt einfach als Satellit für Snips.
Aber da der PI mit Snips ohnehin nicht ausgelastet ist, ist die Frage ob sich das überhaupt lohnt ...
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 27 Juli 2018, 16:30:14
Ubuntu könnte Probleme machen im Moment.
Die sind da einfach noch recht am Anfang ihrer Entwicklung. ;)
Denke mal das wird mit der Zeit auch auf mehr Linux Systemen laufen.

Dazu noch News zwecks Debian auf AMD64:
Mit der aktuellen Version haben die von Snips auf Stretch umgestellt.

Das aktuelle Update scheint in den Jessie Quellen gar nicht mehr drin zu sein.
Wer neu auf einer X86 Plattform installiert also jetzt Stretch und doch nicht Jessie verwenden.

Habe eben auch die Doku entsprechend angepasst.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: ChrisK am 27 Juli 2018, 16:33:43
Danke Euch beiden!
Dann gehe ich das eher mit einem Pi3 an und löse das Ganze vom Server.

Aber erstmal die Zeit finden... In der Zwischenzeit lese ich hier gespannt mit ;)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: der-Lolo am 27 Juli 2018, 16:38:12
Hier wurde ja schon gefragt ob man die Soundausgabe auch umleiten kann...
Klar, die quittierungs und Signal Töne brauchen einen Speaker am Pi - wenn aber eine antwort als Text kommt kann man dann auf anderen geräten wiedergeben? Sonos z.b.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: MadMax-FHEM am 27 Juli 2018, 17:19:08
So ich hab ja im "alten Thread" schon fleißig mitgelesen und nun auch in diesem!

Klingt super!

Lokal wär mir auch lieber...
...wobei ich mich aktuell bereits für Alexa und gegen Google entschieden hatte... ;)

Hatte da auch einen längeren Test laufen...

Ich bin ja schon vor diesem Modul/dieser Möglichkeit über diverse Dinge gestolpert, z.B.:

https://www.minidsp.com/applications/usb-mic-array/uma-8-rpi-diy-amazon-echo

oder:

https://www.matrix.one/products/creator

bzw. eher das hier:

https://www.matrix.one/products/voice

Ich weiß vom Preis her total teuer (verglichen mit dem PS3-Eye etc.) aber trotzdem die Frage:

würden solche "Supermikrophone" auch funktionieren?

Das hier sollte ja problemlos gehen!?

https://www.seeedstudio.com/ReSpeaker-6-Mic-Circular-Array-Kit-for-Raspberry-Pi-p-3067.html

Tja und wenn ich dann mal wieder (viel) Zeit hab werde ich einen Test aufsetzen: Alexa "gegen" das Modul hier ;)

Danke schon mal, Joachim
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 27 Juli 2018, 17:29:58
https://medium.com/snips-ai/benchmarking-microphone-arrays-respeaker-conexant-microsemi-acuedge-matrix-creator-minidsp-950de8876fda

Hier haben die von Snips diverse Mikrofone getestet die wohl auch liefen.
Matrix Voice ist wohl etwas speziell hat pah mal erwähnt, da es nicht als Standard-Micro erkannt wird, sondern irgendwie anders erkannt wird.

Im Test sieht man aber, dass das PS3 Eye mit seinen 4 Micros gar nicht so schlecht abschneidet...
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: MadMax-FHEM am 27 Juli 2018, 17:36:56
Super! Vielen Dank!

Gruß, Joachim
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 29 Juli 2018, 15:50:53
Hallo Thyraz,

kannst du bitte noch mal helfen. :) Das mit dem Abfallkalender will nicht funktionieren.

Ich habe snips nun so weit gebracht, das er auf die 99_myUtils.pm zu zugreifen scheint.
Allerdings beantwortet er jeden Satz mit "wann wird das Altpapier abgeholt, geleert etc." mit: "Das kann ich leider nicht beantworten".

Ich vermute der Fehler liegt in der 99_myUtils.pm. Weil er das Reading des Abfall Device nicht auslesen kann.

Schreibe ich {snipsAbfall("Restmuell")}; in die Fhem Commandozeile kommt das hier:
Das kann ich leider nicht beantworten

Das gleiche bei {snipsAbfall("Altpapier")};
Das kann ich leider nicht beantworten

Das "Abfall" Device ist im Room "Snips"
Reading:
USBAbfuhrBlau-Altpapier_days 12
USBAbfuhrGrau-Restmuell_days 2


Das "Snips" Device:
snipsIntents Abfallkalender=snipsAbfall(Abfall)

99_myUtils.pm
# Abfall Intent
sub snipsAbfall($) {
    # Übergebene Parameter in Variablen speichern
    my $type = @_;

    # Standardantwort festlegen
    my $response = "Das kann ich leider nicht beantworten";

    if ($type eq "Restmuell") {
        # Wert aus Reading lesen
        my $days = ReadingsVal("Abfall","USBAbfuhrGrau-Restmuell_days", undef);
        # Antwort überschreiben mit dem Ergebnis
        $response = "Der Restmuell wird in $days abgeholt";
    }
    elsif ($type eq "Altpapier") {
        # Wert aus Reading lesen
        my $days = ReadingsVal("Abfall","USBAbfuhrBlau-Altpapier_days", undef);
        # Antwort überschreiben mit dem Ergebnis
        $response = "Das Altpapier wird in $days abgeholt";
    }
   
    # Antwort an das Snipsmodul zurück geben
    return $response;
}


snips-watch:
[16:32:42] [Dialogue] New intent detected mark79:Abfallkalender with probability 1.000
              Slots ->
                 Tonne -> Altpapier


Event Monitor:
2018-07-29 16:32:42 SNIPS Snips transmission-state: incoming publish received
2018-07-29 16:32:42 SNIPS Snips lastIntentTopic: hermes/intent/mark79:Abfallkalender
2018-07-29 16:32:42 SNIPS Snips lastIntentPayload: {"sessionId":"78cca138-c096-4da8-8ad8-921c1b5d4ab8","customData":null,"siteId":"default","input":"wann wird das altpapier abgeholt","intent":{"intentName":"mark79:Abfallkalender","probability":1.0},"slots":[{"rawValue":"altpapier","value":{"kind":"Custom","value":"Altpapier"},"range":{"start":14,"end":23},"entity":"Abfall","slotName":"Tonne"}]}


Viele Grüße
Mark
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 29 Juli 2018, 19:11:35
Mit dem Code funktioniert das, es fehlte die "[ 0 ]" nach dem $type
# Abfall Intent
sub snipsAbfall($) {
    # Übergebene Parameter in Variablen speichern
    my @type = @_;
    # Standardantwort festlegen
    my $response = "Das kann ich leider nicht beantworten";

    if ($type[0] eq "Restmuell")
    {
        # Wert aus Reading lesen
        my $days = ReadingsVal("Abfall","USBAbfuhrGrau-Restmuell_days", undef);
        #my $days = "12"; # debug
        # Antwort überschreiben mit dem Ergebnis
        $response = "Der Restmuell wird in $days Tagen abgeholt";
    }
    elsif ($type[0] eq "Altpapier") {
        # Wert aus Reading lesen
        my $days = ReadingsVal("Abfall","USBAbfuhrBlau-Altpapier_days", undef);
        #my $days = "11"; # debug
        # Antwort überschreiben mit dem Ergebnis
        $response = "Das Altpapier wird in $days Tagen abgeholt";
    }
   
    # Antwort an das Snipsmodul zurück geben
    return $response;
}


Der Dank geht an Gerd, er hat das ganze ausgefuchst.
Noch mal vielen Dank!!! :)

Testen kann ich das gerade leider nicht, weil das Micro derzeit nicht funktioniert.

Die Abfrage via fhem cmd funktioniert jedoch:
{snipsAbfall("Restmuell")};
Der Restmuell wird in 2 Tagen abgeholt
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Maista am 29 Juli 2018, 19:24:37
Hallo zusammen,

was mich aber trotzdem interessieren würde,
warum das mit einem Array funktioniert?!
Bin nicht der Experte aber im Original-Code wird der Wert aus fhemweb
in die Variable mit $type = @_; übergeben.
In der Variable steht aber nur eine "1" drin?!
$type in Klammer setzen hat auch nichts gebracht.

Werden z.B. drei Werte übergeben und an drei unterschiedlichen Variablen übergeben funktioniert das.

{snipsCalc(1,"plus",2)}

Zumindest mit
# Snips Calculation Intent
sub snipsCalc($$$) {
# Übergebene Parameter in Variablen speichern
my ($val1, $operator, $val2) = @_;

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

if ($operator eq "plus") {
  # Antwort überschreiben mit dem Ergebnis
  $response = "Das Ergebnis ist " . ($val1 + $val2);
}

# Antwort an das Snipsmodul übergeben
return $response;
}


Über Aufklärung wäre ich sehr dankbar  ;D

Sonnige Grüße

Gerd
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Maista am 29 Juli 2018, 19:42:51
Hat mir keine Ruhe gelassen.
In diversen Modulen geschaut.
Dachte ich hatte das ausprobiert, aber scheinbar doch nicht.

Mit ($type) = @_;

funktioniert es!

Also (gezeigter Code fragt so natürlich keine Readings von FHEM ab)

# Abfall Intent
sub snipsAbfall($) {
    # Übergebene Parameter in Array speichern , Variable klappt nicht
    my ($type) = @_; # debug
  Log 1,"SNIPS0 Variable $type"; # debug
    # Standardantwort festlegen
    my $response = "Das kann ich leider nicht beantworten";
  Log 1,"SNIPS1 $type"; # debug

    if ($type eq "Restmuell")
    {
        # Wert aus Reading lesen
        #my $days = ReadingsVal("Abfall","USBAbfuhrGrau-Restmuell_days", undef);
        my $days = "12"; # debug
        # Antwort überschreiben mit dem Ergebnis
        $response = "Der Restmuell wird in $days abgeholt";
  Log 1,"SNIPS2 $type $days"; # debug
    }
    elsif ($type eq "Altpapier") {
        # Wert aus Reading lesen
        #my $days = ReadingsVal("Abfall","USBAbfuhrBlau-Altpapier_days", undef);
        my $days = "11"; # debug
        # Antwort überschreiben mit dem Ergebnis
        $response = "Das Altpapier wird in $days abgeholt";
  Log 1,"SNIPS3 $type $days"; # debug
    }
   
    # Antwort an das Snipsmodul zurück geben
    return $response;
}


Was ist der Unterschied zwischen

($type) = @_;

und

$type = @_;


??

Gruss Gerd
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 29 Juli 2018, 21:46:49
Zitat von: Maista am 29 Juli 2018, 19:42:51

Was ist der Unterschied zwischen

($type) = @_;

und

$type = @_;


Das erste ist eine Zuweisung im Scalaren Kontext.
Ein Array (und das ist was eine Funktion eben übergeben bekommt, auch wenn es wie hier nur ein Element ist) liefert dabei die Anzahl der Elemente die es beinhaltet zurück.

Du kannst die Anzahl der Elemente in einem Array also immer durch Zuweisung an eine scalare Variable ($nameOfScalar) abfragen.

Das zweite Beispiel ist eine Zuweisung im List Kontext.
Lists sind eine kommagetrennte Liste von Werten die von der Syntax her in Klammern geschrieben werden.

Das kann zum Beispiel so aussehen:

my ($var1, $var2, $var3) = (1, 2, 3);


Im List Kontext liefert das Array nicht die Anzahl der Elemente, sondern eine List welche die Elemente beinhaltet.

Mit mehreren Werten sieht das evtl. auch logischer aus als mit einem Element. ;)

$type = @_[0] ist hier gefährlicher. Es greift direkt auf das erste Element im Array zu.
Wenn da kein Element drin ist knallt es. Würde ungetestet mal schätzen, dass das reicht um Fhem crashen zu lassen.

Mit dem List Assign wäre die Variable $type in dem Fall einfach undef.

Hoffe diese Ausführung hilft mehr, als dass sie verwirrt. ;)
[/code]
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Maista am 29 Juli 2018, 22:12:36
Hallo Thyraz

Ohje. Jetzt wo du es sagst.

Ich hatte das glaube ich auch schon probiert gehabt aber da hatten wohl noch die
Anführungszeichen  beim Aufruf gefehlt.

Ich habe zwar schon einige Programme im Geschäft für mich geschrieben aber meist nur sporadisch.
Aber wenn man das nicht immer macht verlässt einem die Macht  ;)

Das habe ich auch schon benutzt um die Anzahl von Prüflinge zu bekommen.
Aber nach dem ich ein Jahr nichts mehr gemacht habe ist das wissen verdunstet  :-\

Danke noch mal fürs auffrischen

Gruss Gerd
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 31 Juli 2018, 10:00:44
Ich habe Snips jetzt seit dem Wochenende im Wohnzimmer in Betrieb. Es funktioniert bisher das Ein-/Ausschalten von Lampen, Abfrage der Helligkeit und Abfrage der Temperaturen in den verschiedenen Räumen. Das ist schon mal super und sehr praktisch!

Allerdings hatte ich am Wochenende mehrfach das Problem, dass Snips während Gesprächen irrtümlicherweise das Wakeword erkannt hat und dann mit "Da ist etwas schief gelaufen" antwortet. Das führt bei den Familienmitgliedern und Gästen doch "etwas" zu Irritationen :). Hat sonst noch jemand dieses Problem? Ich vermute, ich muss da mal mit verschiedenen Wakewords experimentieren (ich habe es bisher bei "Hey Snips" belassen).

Was ich bisher noch nicht hinbekommen habe ist die SetNumeric Funktion bei meinen Lampen, sowohl bei Hue wie auch beim Homematic Dimmer.
GetNumeric funktioniert mit

GetNumeric=pct,type=Helligkeit

Aber wie müsste das SetNumeric bei Hue-Lampen aussehen? So funktioniert es jedenfalls nicht (abgeändertes Beispiel aus der git-Beschreibung):
SetNumeric=pct,cmd=pct,minVal=0,maxVal=100,step=25,map=percent

Ich verstehe aktuell auch nicht, wofür der erste Teil "SetNumeric=pct" genutzt wird. Folgende Variationen hatte ich noch ausprobiert und hatte keinen Erfolg:

SetNumeric=brightness,cmd=pct,minVal=0,maxVal=100,step=25,map=percent
SetNumeric=pct,cmd=pct,minVal=0,maxVal=100,step=25,map=percent,type=Helligkeit

Hat das jemand ans Laufen bekommen?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 31 Juli 2018, 22:06:27
Zitat von: jowe am 31 Juli 2018, 10:00:44
Allerdings hatte ich am Wochenende mehrfach das Problem, dass Snips während Gesprächen irrtümlicherweise das Wakeword erkannt hat und dann mit "Da ist etwas schief gelaufen" antwortet. Das führt bei den Familienmitgliedern und Gästen doch "etwas" zu Irritationen :).

Kann ich jetzt gar nicht nachvollziehen.  ;D
Hatte damit bisher noch gar keine Probleme, mal sehen wie sichbdas entwickelt.
Es gibt ja einen Parameter bei Snips den man einstellen kann, wie sensibel er auf das Hotword achtet.
Damit soll man false Positives reduzieren können, evtl. reagiert Snips dann etwas schlechter bei Hintergrundgeräuschen. Ist ein Wert von 0.0 bis 1.0. Standard liegt in der Mitte bei 0.5

Was hast du denn für ein Mikro?

Allgemein wäre es auch denkbar, die Hotword-Erkennung z.B. gegen SnowBoy oder Ähnliches auszutauschen, so modular wie Snips ist.

Zitat
Was ich bisher noch nicht hinbekommen habe ist die SetNumeric Funktion bei meinen Lampen, sowohl bei Hue wie auch beim Homematic Dimmer.
GetNumeric funktioniert mit

GetNumeric=pct,type=Helligkeit

Aber wie müsste das SetNumeric bei Hue-Lampen aussehen?
Also ich hab eine meiner Hue Lampen so laufen:

SetOnOff=pct,cmdOn=on,cmdOff=off
GetOnOff=pct,valueOff=0
GetNumeric=pct,type=Helligkeit
SetNumeric=pct,cmd=pct,step=10

Sag mal Bescheid ob das bei dir klappt.
Wenn ja, muss ich mal nach dem Urlaub testen warum es mit den zusätzlichen Optionen nicht geht.
Sind an sich hier zwar nicht nötig (0 bis 100 ist der Standard im Modul und die Umrechnung des Wertebereichs auf 0 bis 100 Prozent ändert ja auch nichts), sollte aber auch nicht stören.

Falls es damit auch nicht geht, wäre ein list von der Lampe interessant, sowie ein Log mit Verbose 5 im Snips Device, wenn du ,,Stelle <Lampenname> auf 50" sagst.

P.S.
Der erste Teil hinter SetNumeric ist das Reading mit dem das Modul den aktuellen Wert des Geräts zurücklegen kann. Das ist zum Beispiel wichtig, wenn du Snips sagst es soll eine Lampe 10% heller machen. Ohne den alten Wert zu kennen lässt sich der neue nicht berechnen.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 31 Juli 2018, 23:58:33
Hi Thyraz,
danke für die Tipps.
Weißt du wo ich die Empfindlichkeit einstellen kann? Ich habe auf die Schnelle nur beim Integrieren eines "personal hotword" die Möglichkeit gefunden. Ich nutze das PS3Eye als Mikro, versuche damit aber den gesamten Wohn-/Essbereich und Küche abzudecken. Evtl. ist es sinnvoller, zwei Satelliten mit jeweils einem Eye einzusetzen und das Level jeweils etwas zu senken.

mit SetNumeric=pct,cmd=pct,step=10 funktioniert jetzt bei mir. Wenn ich sage "Schalte Lampe auf 20" geht es, wenn ich aber sage "Schalte Lampe auf 20 Prozent" funktioniert es nicht. Ich vermute dass es hauptsächlich daran bei mir lag, dass die Tests fehlgeschlagen waren.
Und sobald ich map=percent oder maxVal/minVal hinten dran hänge funktioniert es garnicht mehr.

Eine letzte Frage noch: kann ich einem Device auch mehrere setNumeric zuweisen? Beim GetNumeric kann ich ja den type angeben, geht das beim Set auch? Ich würde gerne bei meinen HUE's auch die Farbtemperatur einstellen können, also z.B. "Mache Lampe wärmer" soll ct erhöhen. Aber wenn ich SetNumeric=ct,cmd=ct,step=100,type=Temperatur eingebe ändert sich trotzdem nur die Helligkeit.

So, danke für die ganze Hilfe und das Modul und jetzt wünsche ich Dir erstmal einen schönen Urlaub. Die wichtigsten Funktionen laufen ja jetzt, denke das Feintunig kann getrost warten. Ich finde es jetzt schon genial, was ich mit dem Modul machen kann. Und das bei eigentlich recht geringem Einrichtungsaufwand.

Gruß Jonas
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 01 August 2018, 14:10:31
Das mit der Sensibilität fürs Hotword ist hier beschrieben:
https://snips.gitbook.io/documentation/advanced-configuration/platform-configuration

Unter Wakeword -> Sensibility


Zu SetNumeric:
Bei mir geht es gar nicht wenn ich ,,Schalte" sage.
Das liegt daran, dass ich das in keinem Beispielsatz drin habe,
,,Schalte" aber bei sehr vielen Beispielsätzen von SetOnOff drin ist.
Snips tendiert bei mir bei einem ,,Schalte Deckenlampe auf 20" daher zu SetOnOff.
Kommt dann in Fhem zu einem Fehler weil der OnOff Value Slot nicht belegt ist.

Kommt einfach daher, dass ich das selbst so nicht sage und mi das daher als Beispiel so nicht eingefallen ist.
Ist das etwas, das du so normal verwenden würdest?
Für mich war Schalten eher ein Begriff für einen ,,digitalen" (ein/aus) Zustand.

Im SetNumeric Intent finden sich viele Beispiele mit ,,Stelle", ,,Dimme" usw. 
es sollte aber auch die einfache Variante mit ,,Deckenlampe auf 20" gehen.
Falls dir das mit ,,Stelle" einfacher über die Lippen kommt, teste ich mal ob ein paar Beispielsätze in die Richtung helfen und Snips da nicht mit SetNumeric/SetOnOff durcheinander kommt. ;)

Ob mit oder ohne Prozent macht bei mir keinen Unterschied, solange mal=percent nicht gesetzt ist.
Kannst du mal testen ob das bei dir evtl. auch eher am ,,Schalte" liegt?
Sprich, ob es dann auch mit Prozent geht?


Dann noch zwecks mehreren SetNumeric Intents in einem Device:
Das sollte an sich schon funktionieren, habe da nur noch eine Kleinigkeit vergessen.

Ich hatte den Slot für relative Änderungen zum aktuellen Wert (Slot ,,Change" mit rauf/runter/heller/dunkler/wärmer/kälter...) schon so aufgebaut, dass ich unterschiedliche Werte für rauf/heller/wärmer... übermittelt bekomme um das zu unterscheiden.
Allerdings ist das eben kein echter ,,Type"-Slot da ich hier ja auch eine Richtungsinformation habe mit wärmer oder kälter.

Ich werde also schauen müssen ob der Type Slot bei der Frage angegeben wurde,
und wenn nicht ihn im Fhem-Modul nachträglich setzen falls er aus dem Wert vom ,,Value" oder ,,Change" Slot ableitbar ist.

Hab das mal in meine Todo Liste aufgenommen, damit ich es nicht vergesse.

Was aber schon jetzt gehen sollte: Den Type Slot explizit zu nennen:
,,Stelle die Temperatur der Deckenlampe wärmer"
Werde als Synonym von Temperatur auch noch Farbtemperatur aufnehmen.

Was noch zu beachten ist:
Wenn ich mich recht erinnere gewinnt bei mehreren passenden Intents aktuell immer der erste in der Liste, es sei denn ein darauf folgender passt besser (Kein type beim ersten Intent, passender Type beim nächsten).

Ich würde den SetNumeric für Helligkeit also weiter oben platzieren als den für Temperatur.
Sonst ändert ein, ,,Deckenlampe auf 20" die Farbtempertur statt die Helligkeit. ;)



Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: laberlaib am 01 August 2018, 14:16:10
[gelöscht da beim Abschicken beantwortet]

Wie schalte ich den am besten ein Radio?
Das wäre ja ein "SetArbitraryIntent":
"Spiele im Badezimmer [Room] auf dem Radio [Device] SWR3 [Value]."

Edith:
Ich möchte das nicht unbedingt mit einem Customintent lösen, da in dem Modul ja bereits ein schönes Raummatching implementiert ist.

Frage zum Raummatching: ich muss meine Satelliten dann so nennen, wie ich die snipsRoom-Attribute vergeben habe? Zumindest lese ich das so aus der 10_SNIPS.pm
193      $room = $data->{'siteId'};

Ich verstehe Perl nur ungefähr aber die Übergabe der Slots auf die CustomIntentfunktion geschieht ja irgendwie aus "data" heraus (vgl. Zeilen 393 ff). Und darin steckt auch die 'siteID'.
D.h. ich könnte mir auch eine eigene Raumerkennung basteln?
snipsIntents:
RadioIntent=snipsRadio(Sender,siteID)
und wenn nun die Annahme von oben zu Zeile 193 stimmt, dann einfach Fallunterscheidung und die jeweiligen Squeezeboxen schalten.

Oder was passiert denn, wenn ein Customintent mit fehlendem Slot aufgerufen wird?
Also z.B. lautet der Intent
RadioIntent=snipsRadio(Sender,Raum)
und ich rufe ihn auf mit
Zitat"Hey Snips! Schalte das Radio mal auf Bassdrive."
wobei Bassdrive als Senderslot bekannt ist und der Raumslot weggelassen wurde.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 01 August 2018, 15:24:18
Danke für den Link, hatte es irgendwie geschafft diese Seite in der Doku zu übersehen. Ich werde die nächsten Tage mal beobachten, ob sich an der fehlerhaften Hotword Erkennung dadurch etwas ändert.

Guter Einwand mit dem "schalte". Das ist in der Tat nicht wirklich logisch. Ich werde das heute Abend mal mit "stelle" ausprobieren. Ich denke da braucht es dann auch keine Beispielsätze mit "schalte", sonst wird die Erkennung von tatsächlichem Ein-/Ausschalten ja evtl. auch etwas ungenauer. Und vermutlich wird sich auf Dauer ohnehin keiner die Mühe machen, vollständige Sätze zu verwenden wenn es ausreichend ist, stattdessen "Lampe auf 20" zu sagen.

Das Einstellen der Lichttemperatur probiere ich dann heute Abend mal aus. Bin gespannt ob das klappt.

Und der Hinweis mit der Reihenfolge der Intents ist super, das hatte ich bisher nicht auf dem Schirm, klingt aber plausibel.

Ich werde mir dann als Nächstes die CustomIntents vornehmen und schauen wie weit ich damit komme.
Das Thema Musik abspielen ist bei mir wie bei laberlaib auch das nächste Top-Feature, ich möchte gerne auf meinen Squeezeboxen per Zuruf wenigstens das Abspielen starten/stoppen.
Das Steuern von Harmony Hub Szenen wäre dann längerfristig das Sahnehäubchen. Wenn das funktioniert, ist bei mir schonmal das Meiste meiner Geräte zu Hause per Snips bedienbar.
Aber ich muss ehrlich gestehen, je mehr man überlegt, desto mehr Ideen kommen. Lightscenes schalten wäre auch noch toll, Timer/Wecker setzen zu können, Verknüpfen mit Homemode bzw. Residents ("Hey Snips, gute Nacht" macht alle Geräte, Lichter etc. aus, schaltet "do-not-disturb" Modus an usw...).
Das Modul hat definitiv extrem viel Potenzial...
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 01 August 2018, 20:45:38
@laberlaib ja, Satelliten sollten heißen wie die snipsNames.

Du bringst mich da auf einen Punkt der problematisch wird wenn man die Snips Fhem-App nicht mehr Forken muss. Im Moment habt ihr durch das Forken alle den SlotType der in den Standard Intents als Room benutzt wird. Der heißt de.fhem.Room.

Wenn du nun einen neuen Intent erstellst, solltest du einen Slot von diesem Typ hinzufügen können.
Ohne das Forken wird der SlotType aber nicht mehr in deinem Account auftauchen. Einen eigenen mit eigenem Namen zu erstellen würde bedeuten, dass du die Räume von Hand pflegen musst, statt sie per Inject aus Fhem automatisch zu bekommen. Bei Räumen nicht so wild, aber wenn du in einem CustomIntent Devices nutzen willst wird es weit nerviger.

Wenn es soweit ist, werde ich mal testen ob es hilft wenn man gleichnamige SlotTypes in seiner CustomIntent App hat. Also auch de.fhem.Room, de.fhem.Device usw.
Da der Inject über diesen Identifier läuft, könnte das klappen.

Dann könnte ich sogar eine CustomApp Vorlage im Snips AppStore hochladen,
welche die Standard SlotTypes beinhaltet.

Zu deiner Frage zwecks siteId:
Das könnte sogar momentan klappen.
Die ganzen Einträge in data sind alle auf der gleichen Hierarchie-Ebene.
Also sowohl siteId, was der Name des aktuellen Satelliten ist (Aber Achtung: der Wert ist ,,default" beim Hauptdevice) als auch die einzelnen Slot Values.
Aber siteId ist eigentlich nicht für den Endnutzer gedacht gewesen.
Vorschlag: Ich ändere den CustomIntent so ab, dass er bei der Anwesenheit eines Slot namens ,,Room" auch prüft ob der Slotwert per Sprache übergeben wurde, ansonsten belegt er ihn mit dem Namen des Raums in dem der angesprochene Satellit steht.
Genau das macht die Perl-Funktion ,,roomName" bei den anderen Intents.

Dann könntet ihr bei euren Custom Intents einen Slot namens ,,Room" integrieren und dafür den SlotType de.fhem.Room wählen.
Der CustomIntent müsste dann so definiert sein:
RadioIntent=snipsRadio(Channel,Room)
Bei ,,Schalte um auf S.W.R.3" würde er den aktuellen Raum übergeben.
,,Schalte im Büro auf S.W.R.3 um" kann hingegen auch vom Wohnzimmer ausgeführt werden.

Ein Slot mit dem Namen ,,Room" hätte hier also eine Sonderbehandlung,
was mich nicht komplett glücklich macht, aber dass alle Endnutzer in allen CustomIntents die selbe Fallunterscheidung zwischen Room und siteId machen müssen klingt nach einer doofen Alternative. ;)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 01 August 2018, 21:17:10
Zum Thema Multimedia Intent:

Ja, das ist etwas das ich auch brauche und wäre sicher ein guter Standard Intent.
Bin mir nur nicht sicher ob das wirklich funktioniert?

Die Sendernamen heißen ja in den Geräten nicht so wie man sie sprechen will.
Oder man muss evtl. Sendernummern statt Sendernamen übergeben.

Wenn man Pech hat sogar in jedem Raum auf eine andere Weise, da man unterschiedliche Player hat.
Weiß nicht so recht ob sich das mit einem generischen Mapping abdecken lässt, oder ob eine eigene Perl-Funktion in der ich solche Fallunterscheidungen machen kann nicht der bessere Weg ist.

Edit für Harmony Hub:
Hier müsste man (wenn man sich Dummies sparen will) ja pro Intent ein snipsName vergeben können,
anstatt nur einen pro Fhem Device
Homebridge unterstützt sowas ja zum Beispiel.
Müsste dann etwa so aussehen:

GetOnOff=activity,valueOn=radio,name=Radio
SetOnOff=activity,cmdOn=activity radio,cmdOff=activity PowerOff,name=Radio
GetOnOff=activity,valueOn=fernsehen,name=Fernsehen
SetOnOff=activity,cmdOn=activity fernsehen,cmdOff=activity PowerOff,name=Fernsehen


Hab die Idee mal auf die Todo Liste gepackt.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: laberlaib am 01 August 2018, 22:21:58
Zitat von: Thyraz am 01 August 2018, 20:45:38
Also sowohl siteId, was der Name des aktuellen Satelliten ist (Aber Achtung: der Wert ist ,,default" beim Hauptdevice) als auch die einzelnen Slot Values.
Aber siteId ist eigentlich nicht für den Endnutzer gedacht gewesen.
Vorschlag: Ich ändere den CustomIntent so ab, dass er bei der Anwesenheit eines Slot namens ,,Room" auch prüft ob der Slotwert per Sprache übergeben wurde, ansonsten belegt er ihn mit dem Namen des Raums in dem der angesprochene Satellit steht.
Genau das macht die Perl-Funktion ,,roomName" bei den anderen Intents.
Den Raum über die siteID zu bestimmen macht auch keinen wirklichen Sinn da ich dann aus dem Bad das Büro gar nicht mehr beschallen kann, weil ich ja im Bad bin.
D.h. ich müsste, auch wenn ein Intent mit einem leeren Slot richtig gestartet werden würde (wird er das? siehe oben?), immer auch die siteID übergeben und uzr Flalunterscheidung nutzen. Richtig kann man das eigentlich nur vor dem Aufruf der eigenen Funktion machen. Auch wenn es dann zu

Zitat von: Thyraz am 01 August 2018, 20:45:38
Ein Slot mit dem Namen ,,Room" hätte hier also eine Sonderbehandlung,
was mich nicht komplett glücklich macht, aber dass alle Endnutzer in allen CustomIntents die selbe Fallunterscheidung zwischen Room und siteId machen müssen klingt nach einer doofen Alternative. ;)
kommt.

Zitat von: Thyraz
Die Sendernamen heißen ja in den Geräten nicht so wie man sie sprechen will.
Das kann man doch über Synonyme direkt in Snips lösen? Ich muss das eh mal mit einem ausländischen, spanischen, Assistenten versuchen: Rollladen als Slotvalue und "persiana" und gucken, ob snips das blickt.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: der-Lolo am 02 August 2018, 11:19:35
Die SiteID des Satelliten benutzen nur wenn keine SiteID im befehl vorhanden ist wäre eine lösung, oder? Bzgl. der ansteuerung anderer Module gibt es sicher auch die möglichkeit die Maintainer Kollegen zu fragen ob sie nicht einen Slot für Snips in Ihren Modulen bereitstellen können. Schade das justme im Urlaub ist, er wäre sicher gerne behilflich.
Schaut euch bitte auch im Wiki die DevelopmentGuidelindesAV an...

https://wiki.fhem.de/wiki/DevelopmentGuidelinesAV (https://wiki.fhem.de/wiki/DevelopmentGuidelinesAV)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: laberlaib am 02 August 2018, 11:42:50
Zitat von: der-Lolo am 02 August 2018, 11:19:35
Die SiteID des Satelliten benutzen nur wenn keine SiteID im befehl vorhanden ist wäre eine lösung, oder?[/url]
Das was Du vorschlägst macht das Modul für dessen Intents wo es auch die Bedeutung der einzelnen Slots kennt (Room ist der Raum) aber nicht für eigene.

Das Modul kennt alle Werte aus dem Json, welches Snips generiert. D.h. Slot-Value Paare und auch ein Paar SiteID-"siteID".
Beim Aufruf eines eigenen Intents wird einfach eine eigene Perlfunktion aufgerufen und an diese die definierten Slots bzw. Werte übergeben.
D.h. jegliche Intelligenz für Quervergleiche und "Wenn-Vorhanden-dann-dies-oder-das" muss bereits in das Modul und kann nicht erst in der Funktion erfolgen.
Außer man übergibt dieser erstmal alles und wertet dann aus:
RadioIntent=snipsRadio(Sender,Raum,siteID)
Allerdings - und dafür reicht mein Perl nicht aus - weiß ich nicht, wie das Modul bei der Zuweisung Slots=>Funktionsaufruf (Modul Zeile 393ff) mit einem leeren Slot umgeht. Dies wäre ja der Fall, wenn ich keinen Raum bezeichne.

Bei der eigenen Funktion müsste man dann zunächst die Reihenfolge der Parameter geschickt wählen (die nicht-verpflichtende Angabe immer hinten, also (Sender, siteID, Raum)), dann die Länge der Übergabe prüfen und dann Fallunterscheidung.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 02 August 2018, 12:02:54
@laberlaib: ja man kann einen Slot auch bei CustomIntents leer lassen.
Die Variable ist dann einfach ,,undef".

In Perl kann man das dann z.B. So abfragen:


if (defined($room)) {
  #Raum Variable benutzen
} else {
  # Ohoh, kein Raum angegeben
}



Wenn ich in 2 Wochen zurück bin, gibt es aber die andere Lösung, dass ihr immer einen room bekommt, sofern ihr einen Slot namens Room im CustomIntent habt.

Ich hab gestern noch etwas gegrübelt und muss mal schauen wie DOIF und andere Module das mit der Bereitstellung von ,,globalen" Variablen machen.
Dort gibt es dann ja auch Variablen wie $DEVICE $EVENT die innerhalb des Aufrufs vom Endnutzer abgefragt werden können.

Wenn ich das so hinbekomme, müsste man keine Sonderbehandlung bei den normal übergebenen Variablen machen.
Es gäbe einfach die Regel, dass man die Variablen $ROOM und $DEVICE innerhalb der Perl Funktionen verwenden kann.
Hat man keine Slots namens Room und Device im CustomIntent sind sie eben undef, sonst mit den passenden Werten belegt.

Hat man meinen Intent mit den Slots Room, Device und Value,
müsste man an sich auch nur Value an die Perl Funktion übergeben, Room und Device bekäme man ja frei Haus über die globalen Variablen:

MyCustomIntent=snipsCustomFunction(Value)


sub($) {
  my ($value) = @_;
 
  # do something with $ROOM, $DEVICE and $value

  return "blabla";
}


$ROOM wäre wie folgt belegt:
Ist der Slot ,,Room" vom Intent belegt, wird dieser Raumname verwendet.
Sonst kommt der Wert von siteId rein. Ist siteId ,,default" (Haupt-Device) wird stattdessen der Defaultroom aus eurer Snips-Device Definition genommen.

$DEVICE wäre der Inhalt vom Slot ,,Device" im Intent.
Dabei wird wie in der Reihenfolge gesucht:
- Gibt es ein Device mit dem passenden Namen in dem betreffenden Room
- Gibt es sonst ein Device mit dem passenden Namen in einem anderen Raum
Der Wert wäre dann auch nicht der snipsName, sonder der echte Device-Name, damit ihr den Namen nicht mehr selbst auflösen könnt.
Nur so könnt ihr dann ja auch set Befehle etc. ausführen.

Klingt das soweit gut?

Gedanken zu Multimedia folgen später, jetzt wird erstmal eine große Sandburg gebaut.  ;D

Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: laberlaib am 02 August 2018, 12:51:26
Sandburgen ftw!

Bestimmte Angaben einfach immer ermitteln weil es besser vorher funktioniert und zu 80% benötigt werden klingt für mich sehr gut, danke. Und warten kann ich gut, Hardware will ja auch gebaut werden.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 02 August 2018, 22:47:10
So, zu Multimedia Steuerung:
Da hier viele verschiedene Funktionen zusammen kommen,
(welche auch sehr unterschiedlichen Beispielsätzen benötigen)
wird es hier ein paar Intents brauchen.

On/Off eines Players ist ja kein Problem und wird über den SetOnOff Intent abgedeckt.

Lautstärke ist auch heute schon als ein Type in SetNumeric integriert.

Das nächste was es braucht wären dann Befehle für Play/Pause/Stop/Forward/... mal sehen was das noch so abdecken sollte.
Der Intent könnte dann z.B. MediaControls heißen.
Optionen wären dann eben cmdplay, cmdPause usw. um möglichst flexibel zu bleiben.

Bei Channels bin ich nach wie vor nicht 100% sicher.
Synonyme werden da nicht helfen fürchte ich, da sie in die falsche Richtung funktionieren.
Sie machen aus mehreren gesprochenen Werten einen Hauptwert der an Fhem geschickt wird.

Wir bräuchten ja aber eher einen gesprochenen Wert (z.B. S.W.R.3) der dann im Fhem als verschiedene Werte an die Multimedia Player übergeben wird.
Snips kennt die Geräte aber ja gar nicht und weiß somit nicht was wann übergeben werden müsste.

Es müsste also schon über ein gerätespezifisches Mapping laufen.
snipsMapping würde schon passen, aber das kann je nach Anzahl der Senser schnell unübersichtlich werden.

Ein Beispiel wie das Mapping aussehen könnte:

MediaChannels=currentStation,cmd=favorite,channels=S.W.R.3:1|S.W.R.1:2

Bei einem ,,Schalte das Radio auf S.W.R.3 um" würde dann ein set <radio> favorite 1 ausgeführt werden.

Irgendwelche besseren Ideen dazu?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: laberlaib am 03 August 2018, 09:06:06
Ohne allzulange nachzudenken über Auswirkungen:
Man könnten, um die Portierbarkeit von snippsMapping zwischen den Geräten und die Übersichtlichkeit zu gewährleisten das Ganze u.U.  in ein Attribut auslagern:
MediaChannels=currentStation,cmd=favorite,channels="snipsSlotMapping"
und dann im Attribut snipsSlotMapping die Wertpaare
S.W.R.3:1
HR3:2

(alle Namen aus den Fingern gesaugt, und Trenn- und Erkennungszeichen ohne Rücksicht gewählt. Kommagetrennt, Zeilenweise o.ä. ist ja eher programmierabhängig).

Das könnte man dann auch relativ generisch einsetzen, z.B. falls noch weitere Slots dazukommen (playMode [Stereo/Syncron/Mono o.ä.], welche ebenfalls geräteabhängige Werte möchten. Ob man dann ein snipsSlotMapping pro Slot bräuchte oder einfach annimmt, diese werden sich schon nicht überschneiden und alle Wertpaare in ein Attribut reinhängt wäre egal.

Das bringt mich gleich auf den Gedanken was passiert, wenn es cmd-Befehle gibt, welche sich aus mehreren Slots und zusammensetzen bzw. nach dem eigentlichen Slot noch eine Angabe brauchen? Bespielsweise (<> sind Bezüge zu Slots).
set <device> play <channel> <playMode>
oder
set <device> play <channel> volume 30

Will man sowas berücksichtigen und dann evtl. in einem snipsCmdMapping unterbringen? Müssten in diesem dann alle Slots abgreifbar sein?
Gibt's die oben genannten Anwendungsfälle überhaupt?

Aber vielleicht hat man dann auch zu viele Stellschrauben und konfiguriert sich zwischen Snips, Snips-Console, Snips-Slots, CustomIntents und den zig snipsAttributen einen Wolf und weiß nicht mehr, wo man was eigentlich findet.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 03 August 2018, 15:04:44
Versuche gerade eine HUEGroup per Snips zu schalten/Dimmen/Farbe/Szene wechseln .
Bisher erfolglos. Hat schon Jemand dieses am Laufen?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 03 August 2018, 15:37:43
@kud, kannst du mal ein list der Huegroup posten und dein aktuelles Mapping?

Und wie steuert man die Group per Fhem Kommandozeile an, so dass es funktioniert.
set <groupname> pct 50 oder so?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 03 August 2018, 16:45:51
@laberlaib:

Ja, das Auslagern in ein extra Attribut habe ich mir auch schon überlegt.
Müsste man ja auch nicht im Intent benennen, sondern könnte einen festen Namen haben.
snipsMediaChannels oder so.

Würde ich aber ungern fest als weiteres globales Attribut in jedes FHEM Device zwingen.
Müsste man dann per Attribut userattr erstmal für die jeweiligen Devices anlegen.

Da bräuchte man dann auch keine anderen Trennzeichen sondern könnte wieder so etwas machen:
S.W.R.3=1,S.W.R.1=2


Zu den weiteren Fragen mit playmode etc:
Gibt es da ein Real-World Szenario wo man zum Channel-Wechsel was anderes mitgeben muss als Parameter?
Wenn es Senderspezifisch (also beim selben Sender auch immer gleich) wäre, könnte man das ja sogar im Mapping anhängen hinter die 1 oder 2 anhängen.

Oder meintest du wirklich einen anderen Slot den man mit spricht?
Ist die Frage ob das dann nicht eher ein weiterer Befehl wäre der getrennt gesprochen wird.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 03 August 2018, 17:02:17
Zitat von: kud am 03 August 2018, 15:04:44
Versuche gerade eine HUEGroup per Snips zu schalten/Dimmen/Farbe/Szene wechseln .
Bisher erfolglos. Hat schon Jemand dieses am Laufen?
Habs noch einmal recherchiert. Falls das auch noch Jemand braucht.
In der HueBridge das Attribut "createGroupReadings" auf 1 setzen dann erscheinen auch alle passenden Readings in der Gruppe und man kann via Snips analog Licht an/aus schalten.

Was könnte man denn noch und vor allem mit welchen Mappings mit der Lichtergruppe anstellen?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 04 August 2018, 22:05:38
Das mit dem Sender wählen wird doch ganz hübsch glaube ich. :)

Hab da noch ein wenig gegrübelt, da eines der Probleme für mich war wie man ,,Spiele S.W.R.3" dem richtigen Gerät zuordnet, wenn man mehr als 1 Gerät mit MediaChannels Intent in einem Raum hat.

Aber mit dem Attribut zur Channel-Konfiguration (wie von laberlaib angedacht) lässt sich das recht einfach lösen.
Per Copy & Paste aus meiner Todo List:

ZitatAttribut snipsMediaChannels muss über usrattr im Gerät zur Verfügung gestellt werden (textField-long).
Anhand der eingerichteten Channels kann das passende Gerät gefunden werden.
,,Spiele S.W.R.3" sucht dann nach einem Device, welches im aktuellen Raum sitzt und sowohl ein MediaChannels Mapping besitzt, als auch in snipsMediaChannels S.W.R.3 eingetragen hat.
Dadurch kann mit ,,Spiele S.W.R.3" und ,,Schalte zu Z.D.F." einmal das Radio und einmal der Fernseher adressiert werden ohne das Gerät nennen zu müssen.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 07 August 2018, 23:29:55
Habt ihr eigentlich keine Probleme mit dem PS3 Eye? Oder rebootet ihr nicht so oft? :D

Ich hatte zuerst Probleme auf dem Rock64 Board, das es mal lief und dann irgendwann nicht mehr. Dann hatte ich davon irgendwann die Schnauze voll.
Heute habe ich den Orange Pi Zero (armv7) erhalten, wo das PS3 Eye MIC auch rumgezickt hat.

Was ich jetzt herausgefunden habe, das wenn man das PS3 Eye MIC erst nach dem Systemstart anschließt funktioniert es.

Rebootet man jedoch mit angeschlossenen PS3 Eye MIC, geht das Micro nicht mehr.
Es ist keine Soundaufnahme Möglich. Weder mit arecord noch der snips-audio-server startet dann.

Jetzt wird es ganz bekloppt... Schaltet man den Orange PI Zero aus und nimmt ihm vom Strom und gibt ihm wieder Saft (mit angeschlossen USB PS3 Micro), geht das Micro nach dem Systemstart.
Das habe ich jetzt mehrfach ausprobiert.

Solche Probleme findet man auch im Netz:
https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=14903
https://www.raspberrypi.org/forums/viewtopic.php?f=38&t=15851&p=160394#p160394

Ich habe versucht den USB Port zu resetten, aber das hat nicht geholfen: https://gist.github.com/zlot/1d867b7d941abde3f02636a54a1f8495

Würde mich mal interessieren ob das auf x86 Hardware oder Raspberry auch so ist?!

Ist bestimmt ein Kernel Problem, wobei mich stutzig macht, das wenn der Strom komplett getrennt wird, das es dann geht...
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag 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.

Kann daheim mal testen wie sich das verhält wenn ich ein Reboot des gesamten Systems mache.

Werde außerdem ja auch einen weiteren Satelliten auf einem Pi installieren.
Mal sehen ob das Problem dann auch auftritt.

Wobei ich das wahrscheinlich von mir aus so schnell nicht bemerkt hätte,
da man ein Linux System ja eigentlich so gut wie nie neu starten muss.
Und wenn ich es wegen Problemen doch mal machen muss, gehe ich meist den Weg das System auch kurz stromlos zu machen. (shutdown now -> neu einschalten.)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: msommer am 08 August 2018, 10:24:41
Ich hab das Modul jetzt auf einem Pi mit einem alten Jabra Speak 410 seit einer Woche laufen und muss sagen das kommt meiner Vorstellung von einer flexiblen Smarthome Sprachsteuerung mit FHEM bis jetzt am nächsten. Definitiv flexibler als Google Home oder Alexa und dabei auch noch ohne Cloud-zwang  :)

Was mir am Snips Modul im Moment am meisten fehlt ist ein Feedback, das über "OK" und "da ist etwas schief gegangen"  hinaus geht. Also die Information ob Snips mich nicht nur verstanden, sondern auch richtig verstanden hat.
Ich hab hier testweise bei mir schon ein bischen gebastelt, aber das Problem ist dass der SetNumeric Intent Mapping keinen "type" hat wie bei GetNumeric. Daher klingen meine Antworten noch recht dämlich.
Mein Vorschlag wäre den "type" ganz aus dem GetNumeric Mapping rauszunehmen und dafür ein zusätzliches "snipsType" Attribut einzuführen. Das könte man dann an mehreren Stellen nutzen.

Was noch cool wäre... Für Fehler die auf fehlende Werte (zB room) zurückzuführen sind, wäre es nett Snips beim User einfach nach dem Wert nachfragen zu lassen. Theoretisch müsste das über die "continueSession" Funktion von Snips funktionieren.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 08 August 2018, 12:48:50
@mark79: Also ich habe bisher etliche Neustarts hinter mir und habe mit einem Pi3 in Verbindung mit PS3eye keine Probleme gehabt.
@msommer: Fehlende Werte kann man meiner Meinung nach doch mit dem Schalter "Slot required" im Intent-Fenster abfragen lassen. Bei aktiviertem Schalter kann man dort eine Frage formulieren, die kommt wenn dem Slot kein Wert zugewiesen wurde. Habe aber ehrlich gesagt nie geprüft, ob die Nachfrage tatsächlich kommt. Kann ich evtl. heute Abend mal ausprobieren.

Mein Problem ist derzeit die Soundausgabe am Pi: beim Anschließen eines Lautsprechers über Klinke habe ich ein extremes Brummen, Audioausgabe über Bluetooth per Bluez-Alsa wollte bei mir noch nicht funktionieren und mein Hifiberry läuft leider nicht mit dem Pi3..
Mein Versuch, einen PI1 B+ mit Hifiberry als Satellit zu verwenden ist leider auch gescheitert, da irgendwie die Hotword-Erkennung nicht funktioniert hat.
Hat jemand von euch schon einen Satellit erfolgreich eingerichtet oder den Snips-Sound über Bluetooth ausgegeben?
Die Satellit-Einrichtung sollte ja eigentlich recht einfach anhand der Anleitung von hier
https://www.smb-tec.com/blog/is-it-google-aiy-nah-its-snips (https://www.smb-tec.com/blog/is-it-google-aiy-nah-its-snips)
gehen. Funktioniert halt leider bei mir so nicht...
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: laberlaib am 08 August 2018, 13:57:41
Zitat von: mark79 am 07 August 2018, 23:29:55
Habt ihr eigentlich keine Probleme mit dem PS3 Eye? Oder rebootet ihr nicht so oft? :D
Ich habe ein PS3 Eye am RP3 und keine Probleme.
Nix besonderes gemacht, werde bald mal die o.g. Channeleinstellung versuchen.

Aber ich hab jetzt mal Motion-Project installiert sowie einen squeezelite-client. Jetzt hab ich im Wohnzimmer auf einem Pi fas alles, was ich brauche.

ZitatDie Satellit-Einrichtung sollte ja eigentlich recht einfach anhand der Anleitung von hier
https://www.smb-tec.com/blog/is-it-google-aiy-nah-its-snips
gehen. Funktioniert halt leider bei mir so nicht...
Da gibt's auch einen Link auf snips.ai, weiter oben im Thread. Man muss ja eigentlich nur die beiden snips.tomls editieren, die audio-Server bind'en, Hotworderkennung auf beide Devices anpassen und den MQTT-Server beim Satellite umstellen. Bei mir hat das geklappt.

Aber ich will den intent weiterleiten, so dass ich einen Satelliten an mehrere Assistenten anbinden kann, das klappt leider gerade nicht so, wie ich es oben mal beschrieben hatte.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: tomster am 08 August 2018, 16:04:55
Das klingt ziiiiemlich interessant! Ich häng mich hier Mal rein...
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 08 August 2018, 22:30:57
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".
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: tomster am 09 August 2018, 16:11:37
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!
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 09 August 2018, 18:32:44
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.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: tomster am 09 August 2018, 19:07:37
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?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 09 August 2018, 20:18:26
@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.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: tomster am 09 August 2018, 20:39:27
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...
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 10 August 2018, 18:30:12
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.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 10 August 2018, 21:26:18
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.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: shilbert am 11 August 2018, 08:14:07
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 (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.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 11 August 2018, 10:50:31
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?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag 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.

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 ?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 12 August 2018, 10:59:53
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.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 12 August 2018, 11:38:47
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.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Roman am 12 August 2018, 22:47:42
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
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 14 August 2018, 17:33:30
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).
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 14 August 2018, 20:14:09
Noch ein Hinweis falls jemand Snips auch auf einem X86 System installiert hatte zu dem Zeitpunkt als man noch Jessie statt Stretch verwenden musste:

Gestern wurde eine neue Version vom NLU Modul veröffentlicht, welche ein Update auf die aktuelle Version nötig macht,
sobald man einen neuen Assistenten installieren will (NLU funktioniert sonst nicht mehr).
Mittlerweile ist Stretch ja Pflicht.

Hier mein Weg wie ich mein Jessie System auf Stretch upgedated habe.
Danach dann die neuste Snips Version installiert:


Backup vom System machen

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

sudo nano /etc/apt/sources.list
Hier überall jessie durch stretch ersetzen.
Sollte dann etwa so aussehen:

deb http://ftp.debian.org/debian stretch main contrib non-free
deb http://ftp.debian.org/debian stretch-updates main contrib non-free
deb http://security.debian.org stretch/updates main contrib non-free

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

reboot

sudo systemctl stop snips*
sudo apt-get purge mosquitto
sudo apt-get autoremove
sudo apt-get install mosquitto 

sudo nano /etc/apt/sources.list.d/snips.list
Hier auch jessie durch stretch ersetzen.
Könnte so aussehen:
deb https://debian.snips.ai/stretch stable main

sudo apt-get update
sudo apt-get upgrade snips-platform-voice

reboot

Assistenten updaten/installieren
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 16 August 2018, 15:20:24
Habe die letzten 2 Abende an einem Python Script gebastelt, dass man ähnlich wie snips-tts-polly als Service auf dem Snips Rechner laufen lassen kann,
Um bei einem ASR Inject auch automatisch NLU um die neuen Wörter zu erweitern.
Danach interpretiert Snips die nachträglich hinzugefügten Wörter (Geräte- / Raumbezeichnungen) dann endlich korrekt.

Das Script fängt hierfür die MQTT Nachrichten zum ASR Inject ab und patched damit die NLU Files im Assistenten Verzeichnis.

Muss das mal noch ein wenig weiter testen und evtl. finden sich hier auch noch 1-2 Betatester.
Sieht aber aus als ob das funktionieren würde. :)

Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 17 August 2018, 16:44:35
Um meinen Monolog fortzuführen:  ;D

Danke für die Angebote zwecks Betatest.
Aber ich habe gestern Abend doch nochmal an einer anderen Lösung gearbeitet, nachdem die per händischem Inject hinzugefügten Wörder in NLU doch nicht ganz so zuverlässig gearbeitet haben.

Irgendeine Komponente die ich nicht patchen kann scheint da noch reinzuspucken.

Hatte dann eine andere Idee:
Ich bekomme ja über MQTT nicht nur den geparsten Intent zurück, sondern auch den originalen Satz den ASR erkannt hat.

Habe das dann so umgebaut, dass ich in diesem Satz Gerät und Raum gegen Dummywerte austausche die schon in der FHEM App hinterlegt sind und daher von NLU problemlos erkannt werden.
Also aus "Deckenlampe im Wohnzimmer um 10 Prozent heller machen" wird dann "Standardgerät im Standardraum um 10 Prozent heller machen".

Danach schicke ich diesen Satz wieder an NLU, der dann wunderbar geparsed wird.
In dem JSON das ich daraufhin erhalte, tausche ich dann die Werte von Raum und Gerät wieder gegen die gesprochenen aus.

So umgehe ich das Thema NLU Inject komplett, da NLU die neu per ARS Inject angelernten Wörter nie zu sehen bekommt.
Und es erspart euch einen extra Python Service installieren zu müssen.

Werde das heute Abend mal weiter testen, denke aber das dürfte recht schnell einen Stand annehmen den ich releasen kann.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: der-Lolo am 17 August 2018, 21:54:55
Nur damit Du Dir nicht albern vorkommst - es lesen schon noch Leute mit ;-)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 17 August 2018, 22:44:27
@Thyraz ich bin derzeit mit zigbee2mqtt ausgelastet, weil mich dort ein Fehler fuckst.
Aber ich habe noch Interesse an Snips und wenn ich das behoben habe, werde ich mir wieder Snips vorknöpfen. :)

Ich hatte die Tage mal eine S905X Box mit Coreelec (Kodi) ein Chroot mit Debian installiert und dort Snips installiert.
Weil wir darüber TV schauen und da wäre es ganz cool, wenn dort auch Zeitgleich eine Spracheingabe funktioniert. Dann spart man sich ein Gerät.
Nur arbeitet das wieder mit Pulseaudio und dort muss ich mich erst reinarbeiten.

Für das Problem mit dem PS3 Eye habe ich wohl auch eine Lösung gefunden: https://github.com/mvp/uhubctl
Der Tipp kam hier aus dem Forum, damit kann man einzelne USB Ports aus/einschalten, also Stromlos machen.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 18 August 2018, 00:30:59
Die neue Version ist jetzt auf Github verfügbar.

ACHTUNG: FHEM SKILL MUSS GELÖSCHT/NEU HINZUGEFÜGT WERDEN UND SNIPSMAPPING HAT SICH GEÄNDERT
Daher bitte genau lesen, diese Version ist leider nicht abwärtskompatibel. ;)

Aber der Reihe nach:

1) Das Format vom snipsMapping Attribut hat sich etwas geändert:
Der Name des Intents und die Optionen werden jetzt mit einem Doppelpunkt getrennt.
Es gibt dafür bei Intents die den aktuellen Wert rücklesen müssen nun die Option currentVal.


Beispiel voher:

GetNumeric=pct,type=Helligkeit


Beispiel neues Format:

GetNumeric:currentVal=pct,type=Helligkeit


Dies müsst ihr leider bei allen Geräten die ihr schon hinzugefügt habt ändern.
Sorry für die Umstände, aber das aktuelle Format wäre mit den kommenden neuen Standardintents immer sinnloser geworden, da es teilweise einfach keinen zugehörigen Wert zum zurücklesen gibt.


2) Die Attribute snipsName und snipsRoom sind jetzt erstmal zwingend bei jedem Device notwendig.
Der Fehm-Device-Name wird nicht mehr erkannt um die Spracherkennung nicht durcheinander bringen (viele haben hier ja eher kryptische Namen.
Ihr könnt dafür jetzt im snipsName Attribut kommagetrennt mehrere Namen für das Gerät festlegen:

Beispiel:
attr <device> snipsName Deckenlampe,Wohnzimmerlampe,Kronleuchter

Mehreren Geräten den gleichen Namen zuzuordnen ist weiterhin kein Problem.
Ihr solltet sie halt über verschiedene snipsRooms ansprechen können.


3) Ihr müsst die FHEM App in eurem Snips Assistenten nicht mehr forken.
Eure Gerätenamen werden vom FHEM Modul in euren Assistenten "injiziert".
Nach der heutigen Anpassung werdet ihr hier also nichts mehr ändern müssen.

Dazu müsst ihr erstmal snips-asr-inject auf dem Snips Rechner installieren falls ihr das noch nicht getan habt:
https://github.com/Thyraz/Snips-Fhem#wichtig-asr-injection-installieren

Dann auf https://console.snips.ai/home/apps die bisherige FHEM App löschen.
Ebenfalls die eventuell geforkten Intents löschen: https://console.snips.ai/home/intents
Unter https://console.snips.ai/home/slot-types zumindest die Slot Types de.fhem.Device und de.fhem.Room löschen.

Danach könnt ihr die aktuelle Version der FHEM App neu hinzufügen:
Auf http://console.snips.ai eine neue App aus dem Store zu eurem Assistenten hinzufügen.
Oben den Haken only show apps with actions entfernen und nach FHEM suchen.
Dann die App hinzufügen. (Diesmal nicht mehr forken)

Kopiert danach euren Assistenten wieder auf euren Snips Rechner wie in der Github Readme zum Modul beschrieben und startet Snips neu.

4) Neuer set Befehl updateModel für das Modul:
Dieser set Befehl erstellt eine Liste mit all euren snipsNames und snipsRoom und fügt sie der Spracherkennung eures Snips Assistenten hinzu.
Snips ist also danach in der Lage die Wörter zu verstehen.

Da dies lokal auf den aktuell auf eurem Snips Rechner installierten Assistenten eingespielt wird,
müsst ihr updateModel erneut ausführen falls ihr einen neuen Assistenten (oder eine neue Version eures Assistenten) einspielt.

Ebenfalls solltet ihr updateModel erneut ausführen wenn ihr neue Geräte zu Snips hinzugefügt habt, oder Geräte- und Raumbezeichnungen verändert habt, damit Snips die neuen Wörter lernt.


Hoffe das war alles. :)
Doku auf Github und hier im ersten Post sollten auch angepasst sein.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 18 August 2018, 18:01:35
Hi Thyraz,
Vielen Dank für das Modul! Bin sehr gespannt auf die inject Funktion. Soweit ich das auf Discord verstanden habe hast du damit als Erster überhaupt inject in einem Modul verwendet. Daher wie gesagt vielen Dank. Werde leider erst in den nächsten Tagen zum Testen kommen, werde dann aber Mal Feedback geben wie es funktioniert
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 18 August 2018, 23:08:54
Nächstes Update auf Github verfügbar:

Hab die Idee von jowe umgesetzt, dass man Snips per Text-Kommandos steuern kann.
Hatte das eigentlich eher mit geringerer Prio auf der Todo-Liste,
aber mit dem Feature muss ich mir bei der Modul-Entwicklung und den resultierenden Tests nicht mehr den Mund fusselig reden. ;)

Es gibt einen neues set Befehl textCommand über den man Snips (genauer gesagt das NLU Modul) mit Befehlen füttern kann.
Die Antwort erfolgt dann in das Reading textResponse.

Könnte man z.B. mit Telegram verbinden (DOIF Definition):

([Telegram:"msgText.*"])
  (set Snips textCommand [Telegram:msgText])
DOELSEIF ([Snips:"textResponse.*"])
  (set Telegram msg [Snips:textResponse])


Dann werden Nachrichten die über Telegram an Fhem gesendet werden an NLU weitergeleitet, das Kommando in Fhem verarbeitet und die Antwort wieder an Telegram zurückgesendet.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 19 August 2018, 15:24:13
Hi Thyraz,

ich habe Snips aktualisiert (apt-get) und die neuen Änderung vorgenommen, auch in der Console alles gelöscht und neu hinzufügt.

Aber nun ist die Texterkennung um einiges schlechter geworden und Snips versteht mich kaum mehr.
Muss man diesen erst wieder trainieren oder habe ich irgendwo was falsch gemacht?

Ich habe den Satz aus 1 Meter Entfernung: "Hey Snips, schalte die Stehlampe an" an die 5x gesagt, aber richtig erkannt hat er es nicht.

[14:44:50] [Hotword] detected on site default, for model hey_snips
[14:44:50] [Asr] was asked to stop listening on site default
[14:44:50] [Hotword] was asked to toggle itself 'off' on site default
[14:44:50] [Dialogue] session with id '9c0bc822-e6cb-42e3-9ee0-3b8f369bcf4a' was started on site default
[14:44:51] [Asr] was asked to listen on site default
[14:44:55] [Asr] captured text "schalte die stellen * ein" in 4.0s
[14:44:55] [Asr] was asked to stop listening on site default
[14:44:57] [Nlu] was asked to parse input "schalte die stellen unknownword ein"
[14:44:57] [Nlu] detected intent Thyraz:SetOnOff with probability 0.349 for input "schalte die stellen * ein"
              Slots ->
                 Value -> an
[14:44:57] [Dialogue] New intent detected Thyraz:SetOnOff with probability 0.349
              Slots ->
                 Value -> an
[14:44:57] [Nlu] was asked to parse input "schalte die stellen unknownword ein"
[14:44:57] [Nlu] detected intent Thyraz:SetOnOff with probability 0.349 for input "schalte die stellen * ein"
              Slots ->
                 Value -> an
[14:44:57] [Dialogue] was ask to end session with id 9c0bc822-e6cb-42e3-9ee0-3b8f369bcf4a by saying 'Da ist etwas schief gegangen.'
[14:44:57] [Tts] was asked to say "Da ist etwas schief gegangen."
[14:44:57] [Dialogue] session with id '9c0bc822-e6cb-42e3-9ee0-3b8f369bcf4a' was ended on site default. The session ended as expected
[14:44:57] [Asr] was asked to stop listening on site default
[14:44:57] [Hotword] was asked to toggle itself 'on' on site default
[14:45:02] [Hotword] detected on site default, for model hey_snips
[14:45:02] [Asr] was asked to stop listening on site default
[14:45:02] [Hotword] was asked to toggle itself 'off' on site default
[14:45:02] [Dialogue] session with id '3ce46e28-8a66-444b-8337-1e50f45c497c' was started on site default
[14:45:03] [Asr] was asked to listen on site default
[14:45:06] [Asr] captured text "an" in 3.0s
[14:45:06] [Asr] was asked to stop listening on site default
[14:45:08] [Nlu] was asked to parse input "an"
[14:45:08] [Nlu] detected intent Thyraz:SetOnOff with probability 0.580 for input "an"
              Slots ->
                 Value -> an
[14:45:08] [Dialogue] New intent detected Thyraz:SetOnOff with probability 0.580
              Slots ->
                 Value -> an
[14:45:08] [Nlu] was asked to parse input "an"
[14:45:08] [Nlu] detected intent Thyraz:SetOnOff with probability 0.580 for input "an"
              Slots ->
                 Value -> an
[14:45:08] [Dialogue] was ask to end session with id 3ce46e28-8a66-444b-8337-1e50f45c497c by saying 'Da ist etwas schief gegangen.'
[14:45:08] [Tts] was asked to say "Da ist etwas schief gegangen."
[14:45:08] [Dialogue] session with id '3ce46e28-8a66-444b-8337-1e50f45c497c' was ended on site default. The session ended as expected
[14:45:08] [Asr] was asked to stop listening on site default
[14:45:08] [Hotword] was asked to toggle itself 'on' on site default
[14:45:14] [Hotword] detected on site default, for model hey_snips
[14:45:14] [Asr] was asked to stop listening on site default
[14:45:14] [Hotword] was asked to toggle itself 'off' on site default
[14:45:14] [Dialogue] session with id 'f4fa1acc-2321-4465-9e36-a0ed77b0caa9' was started on site default
[14:45:15] [Asr] was asked to listen on site default
[14:45:19] [Asr] captured text "das wohnzimmerlampe an" in 3.0s
[14:45:19] [Asr] was asked to stop listening on site default
[14:45:21] [Nlu] was asked to parse input "das wohnzimmerlampe an"
[14:45:21] [Nlu] detected intent Thyraz:GetOnOff with probability 0.488 for input "das wohnzimmerlampe an"
              Slots ->
                 Status -> an
[14:45:21] [Dialogue] New intent detected Thyraz:GetOnOff with probability 0.488
              Slots ->
                 Status -> an
[14:45:24] [Nlu] was asked to parse input "das 'standardgerät' an"
[14:45:24] [Nlu] detected intent Thyraz:GetOnOff with probability 0.663 for input "das 'standardgerät' an"
              Slots ->
                 Device -> Standardgerät
                 Status -> an
[14:45:24] [Dialogue] was ask to end session with id f4fa1acc-2321-4465-9e36-a0ed77b0caa9 by saying 'Da ist etwas schief gegangen.'
[14:45:24] [Tts] was asked to say "Da ist etwas schief gegangen."
[14:45:24] [Dialogue] session with id 'f4fa1acc-2321-4465-9e36-a0ed77b0caa9' was ended on site default. The session ended as expected
[14:45:24] [Asr] was asked to stop listening on site default
[14:45:24] [Hotword] was asked to toggle itself 'on' on site default
[14:45:29] [Hotword] detected on site default, for model hey_snips
[14:45:29] [Asr] was asked to stop listening on site default
[14:45:29] [Hotword] was asked to toggle itself 'off' on site default
[14:45:29] [Dialogue] session with id '64d7ed83-2f0d-43f2-866c-f0834fdd5221' was started on site default
[14:45:30] [Asr] was asked to listen on site default
[14:45:35] [Asr] captured text "schalte die wohnzimmerlampe ab" in 4.0s
[14:45:35] [Asr] was asked to stop listening on site default
[14:45:36] [Nlu] was asked to parse input "schalte die wohnzimmerlampe ab"
[14:45:36] [Nlu] detected intent Thyraz:SetOnOff with probability 0.975 for input "schalte die wohnzimmerlampe ab"
              Slots ->
                 Value -> aus
[14:45:36] [Dialogue] New intent detected Thyraz:SetOnOff with probability 0.975
              Slots ->
                 Value -> aus
[14:45:36] [Nlu] was asked to parse input "schalte die 'standardgerät' ab"
[14:45:36] [Nlu] detected intent Thyraz:SetOnOff with probability 1.000 for input "schalte die 'standardgerät' ab"
              Slots ->
                 Device -> Standardgerät
                  Value -> aus
[14:45:36] [Dialogue] was ask to end session with id 64d7ed83-2f0d-43f2-866c-f0834fdd5221 by saying 'Ok'
[14:45:36] [Tts] was asked to say "Ok"
[14:45:36] [Dialogue] session with id '64d7ed83-2f0d-43f2-866c-f0834fdd5221' was ended on site default. The session ended as expected
[14:45:36] [Asr] was asked to stop listening on site default
[14:45:36] [Hotword] was asked to toggle itself 'on' on site default


Internals:
   IODev      myBroker
   NAME       WZ_Stehlampe
   NR         152
   STATE      OFF
   TYPE       MQTT_DEVICE
   READINGS:
     2018-08-19 01:53:17   state           OFF
     2018-08-19 14:58:32   transmission-state subscription acknowledged
   message_ids:
   publishSets:
     :
       topic      cmnd/4ch/POWER4
       values:
         ON
         OFF
   sets:
     OFF       
     ON         
   subscribe:
     stat/4ch/POWER4
   subscribeExpr:
     ^stat\/4ch\/POWER4$
   subscribeQos:
     stat/4ch/POWER4 0
   subscribeReadings:
     stat/4ch/POWER4:
       cmd       
       name       state
Attributes:
   DbLogExclude .*
   IODev      myBroker
   KU_Kaffee  Nacht_Schaltung
   WZ_Alexa   WZ_abends_on
   WZ_Bilderrahmen WZ_TV_Abends
   WZ_Stehlampe WZ_TV_Abends
   alias      Stehlampe
   devStateIcon ON:FS20.on OFF:FS20.off
   eventMap   { dev=>{ 'true'=>'on', 'false'=>'off' }, usr=>{ '^on$'=>'true', '^off$'=>'false' }, fw=>{ '^on$'=>'on', '^off$'=>'off' } }
   group      Licht
   icon       light_floor_lamp
   publishSet ON OFF cmnd/4ch/POWER4
   room       3_Wohnzimmer,Snips
   snipsMapping SetOnOff:valueOff=OFF,cmdOn=ON,cmdOff=OFF

   snipsName  Bogenlampe, Stehlampe
   snipsRoom  Wohnzimmer
   stateFormat state
   subscribeReading_state stat/4ch/POWER4
   useSetExtensions 1
   userattr   KU_Kaffee KU_Kaffee_map WZ_Alexa WZ_Alexa_map WZ_Bilderrahmen WZ_Bilderrahmen_map WZ_Stehlampe WZ_Stehlampe_map lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0 structexclude
   webCmd     ON:OFF


Dann gibt es bei mir ein Problem mit updateModel. Wenn ich das ausführe, rennt snips-asr-injection auf allen CPU 4 Cores Amok und die Last steigt über 6. Das hört nicht mehr auf, ich hatte es 10 Minuten laufen und dann den Snips Container neugestartet.
Das lässt sich immer wieder reproduzieren.

Wenn ich /usr/bin/snips-asr-injection -v per Console starte und updateModel über Fhem auslöse, bekomme ich das hier angezeigt:

[16:45:20.003202] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T125136" with date time 2018-08-19T12:51:36Z
[16:45:20.003358] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T115125" with date time 2018-08-19T11:51:25Z
[16:45:20.003536] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T125057" with date time 2018-08-19T12:50:57Z
[16:45:20.003635] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T124706" with date time 2018-08-19T12:47:06Z
[16:45:20.003721] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T115106" with date time 2018-08-19T11:51:06Z
[16:45:20.003805] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T131410" with date time 2018-08-19T13:14:10Z
[16:45:20.003890] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T121344" with date time 2018-08-19T12:13:44Z
[16:45:20.003974] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T121000" with date time 2018-08-19T12:10:00Z
[16:45:20.004059] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T144423" with date time 2018-08-19T14:44:23Z
[16:45:20.004152] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180818T205802" with date time 2018-08-18T20:58:02Z
[16:45:20.004242] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T123346" with date time 2018-08-19T12:33:46Z
[16:45:20.004323] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T120947" with date time 2018-08-19T12:09:47Z
[16:45:20.004810] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T142949" with date time 2018-08-19T14:29:49Z
[16:45:20.005017] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180818T200921/inj_20180819T115153" with date time 2018-08-19T11:51:53Z
[16:45:20.005504] DEBUG:snips_asr_injection_hermes::prepare: Copying model to inject at path "/var/lib/snips/injections/20180818T200921/inj_20180819T144520"
[16:45:20.145607] DEBUG:snips_asr_injection_hermes::core   : Number of new words: 0
[16:45:20.145729] DEBUG:snips_asr_injection_hermes         : Generating missing words pronunciations
[16:45:22.212165] DEBUG:snips_asr_injection_hermes::core   : Updating pronunciations' graph
[16:45:22.212349] DEBUG:snips_asr_injection_hermes::core   : Updating entities' graph
[16:45:22.214879] DEBUG:snips_asr_injection_hermes::core   : Injections performed with success
[16:45:22.218956] DEBUG:snips_asr_injection_hermes::core   : Number of new words: 0
[16:45:22.219079] DEBUG:snips_asr_injection_hermes         : Generating missing words pronunciations
[16:45:25.801882] DEBUG:snips_asr_injection_hermes::core   : Updating pronunciations' graph
[16:45:25.801984] DEBUG:snips_asr_injection_hermes::core   : Updating entities' graph
[16:45:25.803531] DEBUG:snips_asr_injection_hermes::core   : Injections performed with success
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 19 August 2018, 19:46:47
Da geht wohl wirklich was beim ASR Inject schief.

Du hast ja wahrscheinlich auch schon diese Zeilen in deinen zitierten Logzeilen gesehen:
Zitat
schalte die stellen unknownword ein
Da das Anlernen nicht geklappt hat, erkennt er den ersten Teil von "Stehlampe" notgedrungen zu "stellen", beim zweiten Teil ist er dann ratlos. ;)

Und wenn das ASR nicht geklappt hat ist auch logisch, dass Snips dich nicht mehr versteht.
Ich hab praktisch alle Device-Namen aus der Snips-Fhem-App rausgenommen, da die richtigen Namen ja vom ASR Inject kommen sollen.
Snips-Fhem ist im Auslieferungszustand jetzt also ziemlich ahnungslos was Gerätebezeichnungen angeht...

Ist jetzt die Frage ob das ein Bug seitens meines Moduls ist, sprich ob ich Blödsinn an ASR schicke und das somit nur schiefgehen kann,
oder ob das ein Bug seitens Snips ist (die hohe Prozessorlast ist zumindest mal komisch).


Kannst du mal im Snips-Modul das verbose Attibut auf 5 setzen und dann updateModel nochmal ausführen?
Dann die Logausgaben (im Fhem Logfie) hier posten?
An sich sollte da irgendwo Injecting data to ASR: ... vorkommen.
Da sollte man den JSON String sehen den ich an ASR Inject übergebe.

Dann sieht man ob das in Ordnung aussieht und ich kann mal bei mir testen was passiert wenn ich den gleichen String bei mir an ASR sende.


Was du außerdem mal testen kannst:
(Zuerst Snips mit sudo systemctl stop snips* beenden.)
Alle Injections werden unter /var/lib/snips/injections abgelegt.
Hier einfach mal alle Unterordner löschen.
Dann den Assistenten unter /usr/share/snips/assistent am Besten auch nochmal löschen und neu aufspielen.
Entweder händisch runterladen und nach /usr/share/snips/assistent kopieren, oder über sam install assistant falls sam installiert ist.

Danach den Rechner neu starten und den ASR Inject über set <snipsDevice> updateModel nochmal ausführen.
Evtl. ist ja nur irgendwas an dem letzten Inject korrupt und das Rücksetzen hilft.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 20 August 2018, 10:13:59
Hi Thyraz,
ich habe heute Morgen die neue Version eingespielt.
Bei mir hat das inject leider auch noch nicht funktioniert, habe allerdings auch nicht viel Zeit zum ausprobieren gehabt. Mir ist allerdings aufgefallen, dass der Set Befehl "textCommand" nicht zur Verfügung steht. Auch in der 10_SNIPS.pm auf git finde ich die Funktion nicht. Kann es sein, dass auf git nicht die aktuellste Version liegt?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 20 August 2018, 13:01:48
Ohje, tatsächlich.  :o

Hab gerade die aktuelle Version von meinem Handy aus vom FHEM Server geladen und auf Github gepushed.

Aber ich glaub die Änderung war nur das mit textCommand, nichts was updateModel betrifft.
Falls es damit auch nicht geht, auch mal die Schritte mit Verbose 5 ausführen wie in meiner Antwort an mark79.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 20 August 2018, 14:04:43
Super, danke. Ich hoffe ich komme heute Abend oder morgen dazu, die Version einzuspielen und kurz zu testen. Melde mich dann wieder.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 20 August 2018, 15:00:47
Also mein Logeintrag sieht so aus
Injecting data to ASR: {"operations":[["add",{"de.fhem.Device":["rasenmäher","Temperatur","Wasser","Sensor","Licht"]}],["add",{"de.fhem.Room":["Wohnzimmer","Küche","Treppe","Garten","garten","Keller","Büro"]}]]

Spracheingabe : Wie ist die Temperatur im Wohnzimmer"

Sam-Watch :
[Asr] captured text "wie ist die temperatur im unknownword wärmer" in 3.0s
...
[Nlu] was asked to parse input wie ist die temperatur im unknownword wärmer


In meinem Verzeichnis /var/lib/snips gibt es nur ein Unterverzeichnis skills . Mehr ist nicht drin und ja ich habe apt-get install -y snips-asr-injection
ausgeführt.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: tomster am 20 August 2018, 15:01:23
Ich hab grad die neue Version gezogen. Mit 2 Testdevices hat die "Injection" augenscheinlich wunderbar funktioniert.
Cooles Feature!
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: tomster am 20 August 2018, 15:03:30
Zitat von: kud am 20 August 2018, 15:00:47
Also mein Logeintrag sieht so aus
Injecting data to ASR: {"operations":[["add",{"de.fhem.Device":["rasenmäher","Temperatur","Wasser","Sensor","Licht"]}],["add",{"de.fhem.Room":["Wohnzimmer","Küche","Treppe","Garten","garten","Keller","Büro"]}]]

Spracheingabe : Wie ist die Temperatur im Wohnzimmer"

Sam-Watch :
[Asr] captured text "wie ist die temperatur im unknownword wärmer" in 3.0s
...
[Nlu] was asked to parse input wie ist die temperatur im unknownword wärmer


In meinem Verzeichnis /var/lib/snips gibt es nur ein Unterverzeichnis skills . Mehr ist nicht drin und ja ich habe apt-get install -y snips-asr-injection
ausgeführt.

Hast Du im FHEM-Snips-Device Mal ein set <Snips-Device> updateModel durchgeführt?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 20 August 2018, 15:30:43
 8) Sonst käme doch der Logeintrag Injecting ASR .... doch gar nicht .
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 20 August 2018, 16:29:44
Ich konnte nicht abwarten und habe per VPN die aktuelle 10_Snips.pm eingespielt. Und Dank der neuen textCommand Funktion konnte ich gerade von unterwegs testen: Funktioniert! Ich bin begeistert!
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 20 August 2018, 18:24:58
@jowe, heißt aber leider nicht, dass es mit ASR (also über Sprache) ebenfalls klappt.
Teste das daheim am Besten auch noch einmal.


@kud ich teste das mit dem String bei mir später auch mal.
In dem Verzeichnis sollte normal nach jedem Inject ein Unterordner erstellt werden mit dem Inhalt des Injects.

Der ASR Inject bricht also wohl ab.

@tomster schön, dass es bei dir klappt.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 20 August 2018, 18:51:42
Ich habe bisher nicht darauf geachtet aber bei meinem SNIPS Device ist STATE auf "???" hat das was zu bedeuten?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 20 August 2018, 21:28:14
Hallo Thyraz,

danke erstmal für die Tipps. Ich kann das auf dem Rechner, wo es Probleme macht erst Mittwoch wieder ausprobieren.
Vermutlich reicht es aber, wenn ich den Inhalt vom Verzechniss /var/lib/snips/injections/* lösche. Ich werde dann berichten. :)

Ich habe Snips gerade auf einem anderen Rechner (orange pi) frisch installiert und dort tritt der Fehler nicht auf.
Die Spracherkennung ist nun auch wieder normal. :)

[18:53:01] [Nlu] was asked to parse input "wie ist die temperatur vom thermometer im wohnzimmer"
[18:53:01] [Tts] was asked to say "Die Temperatur von thermometer beträgt 23 Grad."
[18:55:46] [Asr] captured text "Schalte den bilderrahmen aus" in 3.0s

Schon cool und macht es wirklich einfacher, die Sachen dort einzupflegen. :)


Viele Grüße
Mark
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Roman am 20 August 2018, 21:50:32
Hallo Thyraz,

auch von mir einmal Dank für das tolle Modul. Nach anfänglichen Problemen läuft das schon ganz gut.
Lichter, Rollos steuern , Temperaturen abfragen klappt inzwischen einwandfrei. Mit meinen Fensterkontakten (On-Wire) kämpfe ich noch etwas.

Das neue textCommand ist auch super,  der WAF ist beim testen viel besser, da ich nicht immer mit Snips reden muss ;)

Gruß
Roman
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 20 August 2018, 22:53:31
Ok hier mal ein Update für die, bei denen der Inject nicht funktioniert:

Ich hab es mal mit dem Injectstring von kud bei mir getestet und das klappt problemlos.
Hatte davor /var/lib/snips/injections gelöscht, einen neuen Assistenten aufgespielt und dann den inject gemacht.

Danach ist /var/lib/snips/injections wieder mit einem Unterverzeichnis erschienen und Snips/ASR hat den Satz "Schalte den Rasenmäher ein" problemlos verstanden.

Jetzt ist die Frage woran das noch liegen kann.
Hätte da einmal die Umlaute in Verdacht, könnte aber natürlich auch ein Bug im ASR Inject Modul von Snips sein.

Am Besten mal Folgendes versuchen falls es bei euch nicht geht:
- Kontrollieren ob /var/lib/snips/injections wirklich nicht exisitiert

- Im Terminal auf dem Snips Rechner einen Inject direkt über den MQTT Server (mosquitto) posten der keine Unlaute beinhaltet:

mosquitto_pub -h localhost -t hermes/asr/inject -m '{"operations":[["add",{"de.fhem.Device":["Deckenlampe"]}]]}'


- Schauen ob /var/lib/snips/injections jetzt existiert

- Falls ja, testen ob Sips das Wort Deckenlampe jetzt versteht (z.B. "Schalte die Deckenlampe ein")
Falls ihr kein Gerät namens Deckenlampe für Snips in Fhem konfiguriert habt, wird dennoch ein "Da ist etwas schief gegangen" als Antwort kommen.
Aber im Reading lastIntentPayload sieht man ja den erkannten Text unter dem key "input". Hier sollte Bogenlampe richtig erkannt worden sein, falls der Inject geklappt hat

Falls das klappt:
Testet mal ob der Inject über Fhem klappt wenn ihr keine Umlaute (neben äöü wäre auch ß noch ein Kandidat) in den Geräte- und Raumbezeichnungen habt.
Oder fügt erstmal nur ein Gerät in den FHEM Raum "Snips" ein.
Im Erfolgsfall müsste man mal genauer analysieren was da schief geht und was der Unterschied zu den Systemen anderer User ist.

Sollte das alles schief gehen, sollten wir mal sammeln auf was für Systemen ihr Snips laufen lasst.
Evtl. ist hier ja ein Bug bei einer bestimmten Prozessorarchitektur zu erkennen.
Dann müsste man das mal in der Snips Community posten.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 20 August 2018, 23:39:52
Noch ein paar Antworten / Bemerkungen zu Posts von heute:

Zitat von: kud am 20 August 2018, 15:00:47
Also mein Logeintrag sieht so aus
Injecting data to ASR: {"operations":[["add",{"de.fhem.Device":["rasenmäher","Temperatur","Wasser","Sensor","Licht"]}],["add",{"de.fhem.Room":["Wohnzimmer","Küche","Treppe","Garten","garten","Keller","Büro"]}]]

Ich würde das Gerät nicht Temperatur, sondern Thermometer nennen.
Temperatur ist ja der "Type" aus dem GetNumeric Intent.
Der vollständige Satz wäre an sich "Wie ist die Temperatur vom Thermometer im Wohnzimmer".
Wenn du "Wie ist die Temperatur im Wohnzimmer" sagst, soll hier das Device als Slot wegfallen. Es bleiben Type und Room.
Das Modul sucht dann nach dem Gerät mit einem GetNumeric Intent mit type=Temperatur im aktuellen Raum und liefert dessen Wert zurück.

Wenn du nun einen Slot Type und einen Slot Device mit dem selben möglichen Wert (Temperatur) hast, könnte das zu Verwirrung seitens Snips führen (evtl. auch nicht, aber ich würde das Glück nicht herausfordern und Temperatur nicht zusätzlich als Gerätenamen anlernen. ;))

Zitat von: kud am 20 August 2018, 18:51:42
Ich habe bisher nicht darauf geachtet aber bei meinem SNIPS Device ist STATE auf "???" hat das was zu bedeuten?

Bedeutet nur, dass ich bisher den state im Modul noch nicht beschreibe.
Dies scheint FHEM mit 3 Fragezeichen zu quittieren. ;)
Werde das vorerst nach erfolgreichem Laden auf "initialized" setzen bevor was Sinnvolleres kommt.

Zitat von: Roman am 20 August 2018, 21:50:32
Mit meinen Fensterkontakten (On-Wire) kämpfe ich noch etwas.

Das neue textCommand ist auch super,  der WAF ist beim testen viel besser, da ich nicht immer mit Snips reden muss ;)

Ja, ich nerve meine Frau abends auch weniger seit ich nicht dauernd beim Modul testen vor mich hin brabbel. :P

Was willst du denn genau fragen bei den Fensterkontakten?
Ist das <Gerätename> geöffnet als Frage sollte schon funktionieren.

Wie ich Abfragen nach Gerätegruppen einbinden will (passt das noch in GetNumeric mit eigenem Slot, oder muss es eher ein eigener Intent sein? Muss das mal genauer durchdenken.) bin ich mir noch nicht sicher, falls du eher etwas in der Art "Sind alle Fenster geschlossen" oder "Wieviele Fenster sind geöffnet" versuchst.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 21 August 2018, 09:34:46
Also nach langen probieren exestierte in /var/lib/snips noch immer kein Unterverzeichnis. Hab dann Snips komplett gelöscht und die Installation wiederholt.
Die Installation von snips-asr-injection dauerte dieses mal erheblich länger und voila das Verzeichnis wurde angelegt und es klappt so wie bisher und zwar mit Injection ;-)
Danke. Tolle Arbeit. :D
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 21 August 2018, 11:10:22
@kud Super, freut mich. :)
Dann können wir uns ja neuen Features und Intents widmen.  ;D


@all
2 weitere Neuerungen die ich glaub vergessen hatte:

1) Bei SetNumeric muss bei relativen Wertänderungen nun der Type (Helligkeit / Temperatur / ...) nicht mehr direkt gesagt werden,
wenn der Type aus dem Wortlaut der Änderung bestimmt werden kann.

Nehmen wir an ihr habt eine Lampe mit Helligkeit und Temperatur SetNumeric Intent.
Bisher ging:
"Stelle die Lampe auf 20" hat sich den ersten SetNumeric Eintrag im Mapping gegriffen.
Meist dürfte da bei einer Lampe die zu regelnde Helligkeit drin stehen.

"Temperatur der Lampe wärmer stellen" hat dagegen nach einem SetNumeric mit type Option Temperatur gesucht.
An sich muss man die Temperatur ja aber nicht explizit sagen, da "wämer/kälter" ja schon aussagen, dass es sich um einen Temperaturwunsch handelt.

Ihr könnt also in Zukunft direkt "Lampe wärmer stellen" sagen.

2) Bei GetNumeric kann man nun als Type auch noch "Batterie" angeben.
Damit sind dann Fragen wie "Wie ist der Batteriestand von <Gerät>" oder "Batteriestatus <Gerät>", ... möglich.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 21 August 2018, 11:49:16
Bei mir funktioniert es sehr gut, sowohl über textCommand (hatte ja gestern schon geklappt) wie auch Spracheingabe.
Ich habe noch die Raumnamen analog wie bei den Device Namen mit Synonymen ergänzt, funktioniert tadellos. Vielleicht kannst du das in deiner Doku noch ergänzen.

Eine Frage noch:
Hat sich bei den customIntents etwas geändert? Ich kann seit dem Update die Custom intents nicht mehr auslösen. Muss ich bei der Definition evtl. auch "=" durch ":" ersetzen?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 21 August 2018, 12:30:49
Die Möglichkeit mehrere Räume zu nennen hab ich bisher extra noch Verschwiegen,
da ich mir noch nicht angeschaut habe, wie sich das auf die Erkennung des aktuellen Raumes auswirkt. ;)

Solange man den Raumnamen mit ansagt (oder kein anderes Gerät mit selbem snipsName in einem anderen Raum besteht) sollte das alles passen und das richtige Gerät gefunden werden.

Zu den CustomIntents:
Ich hab da nur einen zum Test drin bei mir, der klappt noch (Weiterhin mit Gleichzeichen).

Kannst du mal verbose 5 beim Snips Device setzen und das Kommando mal absetzen?

Bei mir sieht das so aus:


2018.08.21 12:25:47.805 5: set textCommand - value: Was ist 5 plus 4
2018.08.21 12:25:47.807 5: Parsed value:  for key: siteId
2018.08.21 12:25:47.807 5: Parsed value: Was ist 5 plus 4 for key: input
2018.08.21 12:25:47.807 5: Parsed value:  for key: sessionId
2018.08.21 12:25:47.808 5: Parsed value:  for key: probability
2018.08.21 12:25:47.808 5: Parsed value:  for key: intent
2018.08.21 12:25:47.809 5: sending message to NLU: {"id":"{\u0022Device\u0022:null,\u0022Room\u0022:null,\u0022input\u0022:\u0022Was ist 5 plus 4\u0022,\u0022sessionId\u0022:null,\u0022siteId\u0022:null}","input":"Was ist 5 plus 4","sessionId":"fhem.textCommand"}
2018.08.21 12:25:47.814 5: publish received for hermes/nlu/intentParsed, {"id":"{\"Device\":null,\"Room\":null,\"input\":\"Was ist 5 plus 4\",\"sessionId\":null,\"siteId\":null}","input":"Was ist 5 plus 4","intent":{"intentName":"Thyraz:Calculation","probability":0.93374974},"slots":[{"rawValue":"5","value":{"kind":"Number","value":5.0},"range":{"start":8,"end":9},"entity":"snips/number","slotName":"Number1"},{"rawValue":"plus","value":{"kind":"Custom","value":"plus"},"range":{"start":10,"end":14},"entity":"Operator","slotName":"Operator"},{"rawValue":"4","value":{"kind":"Number","value":4.0},"range":{"start":15,"end":16},"entity":"snips/number","slotName":"Number2"}],"sessionId":"fhem.textCommand"}
2018.08.21 12:25:47.815 5: Parsed value: Calculation for key: intent
2018.08.21 12:25:47.815 5: Parsed value: plus for key: Operator
2018.08.21 12:25:47.815 5: Parsed value: Was ist 5 plus 4 for key: input
2018.08.21 12:25:47.815 5: Parsed value: 5 for key: Number1
2018.08.21 12:25:47.815 5: Parsed value: 0.93374974 for key: probability
2018.08.21 12:25:47.815 5: Parsed value: fhem.textCommand for key: sessionId
2018.08.21 12:25:47.815 5: Parsed value:  for key: siteId
2018.08.21 12:25:47.815 5: Parsed value: 4 for key: Number2
2018.08.21 12:25:47.817 5: handleCustomIntent called
2018.08.21 12:25:47.817 5: snipsIntent selected: Calculation=snipsCalc(Number1,Operator,Number2)
2018.08.21 12:25:47.817 5: Calling sub: main::snipsCalc


Evtl. sieht man ja was schief geht.

Edit: deine CustomIntents App hast du aber weiterhin in deinem Assistenten drin?
Nicht, dass du das neu aufgesetzt hast wegen der nicht mehr zu forkenden FHEM App und die gar nicht mehr drin ist (so ging es mir gerade).
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: tomster am 21 August 2018, 12:50:53
Zitat von: Thyraz am 20 August 2018, 18:24:58
@tomster schön, dass es bei dir klappt.

Find ich auch ;-)
Nur der Ordnung halber als Ergänzung:
Ich hab seit gestern meine Snips- und den FHEM-Server auf einem Thin-Client unter Debian laufen. Ein RasPi ist nur als Satellit konfiguriert und liefert den Mikrofon-Input.
Deshalb habe ich keine "alte" App oder Intents, die noch rumschwirren könnten. Quasi "Clean Install". Kann also sein, dass es bei meinem Setup funzt, auf einer reinen RasPi-Lösung (noch) nicht. Vielleicht gibt es ja ein Rechte-Poblem, wenn die Injections nicht im entsprechenden Ordner angelegt werden (*kristallkugelisier*)?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: RoBra81 am 21 August 2018, 13:54:35
Hallo,

wenn ich Zeit finde möchte ich das Modul u.U. auch mal ausprobieren. Daher eine Frage: funktioniert das Modul mit dem neuen MQTT2_SERVER (https://fhem.de/commandref.html#MQTT2_SERVER)?

Ronny
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 21 August 2018, 14:03:00
@Thyraz: Fehler lag bei mir :-[.
Ich hatte beim Löschen der goforkten Intents der "alten" FHEM APP meine CustomIntents umbenannt, damit ich diese nicht aus Versehen mitlösche (Es hatten sich eine Menge Intents mit gleichem Namen in meinem Account angesammelt). Habe dann vergessen die Intents danach wieder zurück umzubenennen. Jetzt läufts wieder, Danke!
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 21 August 2018, 14:19:00
Zitat von: RoBra81 am 21 August 2018, 13:54:35
Hallo,

wenn ich Zeit finde möchte ich das Modul u.U. auch mal ausprobieren. Daher eine Frage: funktioniert das Modul mit dem neuen MQTT2_SERVER (https://fhem.de/commandref.html#MQTT2_SERVER)?

Ronny

Ich habe es nicht getestet würde aber defintiv davon abraten.

Das Problem ist, dass bei Snips wirklich alle Kommunikation über MQTT läuft.
Auch die Audiodaten.
Und da der Hotword Detector IMMER lauschen muss, läuft da konstant eine Menge an Daten über den MQTT Bus.

Würde das lieber in der eigenen MQTT Instanz laufen lassen die Snips mit installiert, anstatt FHEM damit zu belasten.
Vor allem sollte der MQTT Server auf dem selben Rechner laufen wie Snips, sonst schiebt man die Audiodaten auch noch konstant durchs Netz.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: RoBra81 am 21 August 2018, 14:38:06
Ah, okay, verstehe, das passt - das SNIPS soll voraussichtlich auf einem separatem Raspi laufen, auf dem dann auch Mosquitto läuft und das FHEM verbindet sich mittels MQTT-Modul dann nur damit...
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Roman am 21 August 2018, 20:12:40
Hallo Thyraz,

Zitat von: Thyraz am 20 August 2018, 23:39:52

Was willst du denn genau fragen bei den Fensterkontakten?
Ist das <Gerätename> geöffnet als Frage sollte schon funktionieren.

Wie ich Abfragen nach Gerätegruppen einbinden will (passt das noch in GetNumeric mit eigenem Slot, oder muss es eher ein eigener Intent sein? Muss das mal genauer durchdenken.) bin ich mir noch nicht sicher, falls du eher etwas in der Art "Sind alle Fenster geschlossen" oder "Wieviele Fenster sind geöffnet" versuchst.

Zur Info: klappt nun, bin mir nur nicht sicher warum :(. braucht Snips nach dem Inject etwas Zeit, bis alles richtig erkannt wird ?
Vorgehen: Device konfiguriert (SnipsMapping, Name und Raum) , Update Model, Testen - ging nicht.
                Dann 1 Stunde später nochmal getestet - geht.

Gruß
Roman
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 21 August 2018, 20:29:04
Gute Frage evtl. dauert es kurz.

Aber nach ein paar Minuten hab ich es schon getestet und da ging es dann.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: bennebartsch am 22 August 2018, 10:59:25
Finde das Modul sehr interessant! Ich nutze aktuell Google Home Minis bin damit aber nicht zufrieden, da unflexibel und online.
Kann jemand was zur Erkennungsrate sagen? Ist diese mit einem ReSpeaker Mic oder PS3 EYE vergleichbar mit Amazon/Google?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 22 August 2018, 20:42:40
Hallo bennebartsch,

ich kann zum ReSpeaker nichts sagen, nutze nur das PS3 Eye bisher.
Mit dem habe ich aber keine Probleme mit der Erkennung.

Habe bei uns im Wohnbereich auch von weiter weg noch etwas bessere Ergebnisse als mit meinem Echo Dot.

Wozu ich bisher noch nicht so viel Erfahrung gesammelt habe, ist wie es bei viel Hintergrundgeräuschen aussieht.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 22 August 2018, 21:38:58
Hab einen neuen Intent hinzugefügt: Status

Ihr könnt den Antworttext von Snips frei festlegen und Werte aus FHEM nach dem Schema [Device:Reading] einfügen.
Damit sollte sich recht einfach eine Zusammenfassung zu einem Gerät basteln lassen, ohne einen Custom Intent erstellen zu müssen.
Kommas im Text müssen mit einem Backslash escaped werden, da sie im Mapping normal als Trennzeichen zwischen den Optionen agieren.

Beispiel zum triggern: Hey Snips, Status vom Rasenmäher

Beispiel eines Mappings:

Status:response=Status vom Rasenmäher ist [Rasenmaeher:state]. Der Batteriestand beträgt [Rasenmaeher:battery] Prozent.


Eine genauere Beschreibung ist auch noch in der Github Readme bei den Intents zu finden.

Installation erfolgt wie ab jetzt bei jedem Update:
- Assistent von console.snips.ai herunterladen und installieren (oder über sam install assistant) damit ihr die neuste FHEM App habt.
- Neues Snips Modul von Github einspielen
- Fhem neu starten
- set <snipsDevice> updateModel ausführen
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: tomster am 23 August 2018, 09:31:20
Servus Thyraz,

wenn Du schon dabei bist:
Könntest Du auch einen Intent Zeige ... (an) einfügen?
Das wäre für mein SmartMirror-Projekt geradezu ideal.
So wie ich das App-System auf console.snips.ai verstanden habe, gingen eigene Intents nur, wenn ich deine App forke. Dann fehlen mir aber aber die von Dir zukünftig gemachten Änderungen. Das wär ja auch wieder plöd.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 23 August 2018, 09:36:44
Hi tomster,

nein Custom Intents gehen weiterhin. Du fügst sie jetzt nur in eine eigene App ein anstatt die FHEM App wie früher zu forken.
Ich habe mir dafür eine App mit dem Namen CustomIntents angelegt und dort alle eigenen Intents abgelegt.

Die App dann einfach auch deinem Assistenten hinzufügen.

Danach dann wie gehabt über das Attribut snipsIntents mit einer eigenen Perl Funktion verknüpfen.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: eurolift am 23 August 2018, 15:30:16
Hallo Thyraz,
ich habe Snips auch aktualisiert,aber Snips reagiert nicht auf mein ASR Inject

Injecting data to ASR: {"operations":[["add",{"de.fhem.Device":["Thermometer"]}],["add",{"de.fhem.Room":["Wohnzimmer"]}]]}

Die Datei injections wird angelegt ,nach set <snipsDevice> updateModel. Snips selber reagiert auf Hotword ,es gibt aber zu Fhem keine Reaktion.Brauch dann auch wieder eine Weile bis der Raspi wieder bereit ist.Habe alle Vorschläge durchgeführt ,sogar alles platt gemacht und von vorne angefangen.
Trotzdem ein super Modul .Soll mal in meinem Womo seine Dienste tun.
Viele Grüsse Eurolift :)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: GuidoS am 23 August 2018, 15:56:43
Hallo zusammen,

ich habe die Artikel mit Interesse gelesen und finde den Ansatz echt super. - Habe selbst Alexa und Co im Einsatz. Ich würde auch gern das Projekt weiter verfolgen, aber hat sich jemand mit den Kosten mal auseinandergesetzt ? So wie ich das verstehe ist ab Oktober die Einführung von Tokens geplant... habs nur überflogen... oder wird es weiterhin eine kostenfreie Version gegeben und Snips verkauft die HW .. Mach ja nur Sinn, wenn es weiterhin OpenSource & kostenfrei wäre... oder für kleines Geld.
Der Entwickler der FHEM App erhält ja schon fleißig Air-Token 😊.

Hat sich jemand mit den Kosten näher auseinandergesetzt?

VG

Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 23 August 2018, 17:53:19
Zitat von: GuidoS am 23 August 2018, 15:56:43
Hat sich jemand mit den Kosten näher auseinandergesetzt?

Ich muss gestehen, ich verstehe diese Token Geschichte auch noch nicht so recht.
Bekomme übrigens leider auch keine Tokens durch euch, da man dazu Apps mit Actions braucht. :p
Wir binden FHEM ja aber direkt über den MQTT Bus an.

Ich habe gerade in der Snips Community nachgefragt um etwas Licht ins Dunkel zu bekommen.
Für mich sieht es so aus, als ob man hauptsächlich für das vernetzte Snips AIR die Tokens braucht.
Es geht auch sicher um Apps die verkauft/gekauft werden können.
Snips will zusätzlich ja auch bestimmte Services verkaufen (Sprachmodelle, Big Data für Beispielsätze, ...)

Aber mal sehen was auf meine Frage da zurück kommt.

Zitat von: eurolift am 23 August 2018, 15:30:16
Hallo Thyraz,
ich habe Snips auch aktualisiert,aber Snips reagiert nicht auf mein ASR Inject

Vor dem Inject reagiert Snips aber auf deine Fragen?
Also z.B. "Schalte das Standardgerät ein".

Das sollte als eingehender Payload in den Readings des Moduls auftauchen.
Und geht nach dem Inject gar nichts mehr? Auch nach einem Reboot?
Oder gehen die Fragen ohne Inject  danach immer noch problemlos?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: kud am 23 August 2018, 18:07:55
@Thyraz
Ist schon irre was in Du in kurzer Zeit umgesetzt hast. Großes Dankschön dafür und auch für die Geduld bei Problemen.
Bei meiner Installation läuft per Sprachsteuerung mit Snips schon viel mehr als mit meiner "geliebten" Alexa.
Hoffe, dass es bei Snips bei einem freien Projekt bleibt...

Ps. Auch viele Grüße von meinem Rasenmäher ;-)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 23 August 2018, 19:05:53
Na dann auf zum nächsten Update. ;)

1) Es wird jetzt pro Zimmer aus dem ihr Snips triggert ein neues Reading erzeugt:
listening_wohnzimmer
listening_buero

usw.
Die Readings gehen auf 1 wenn in dem Raum das Hotword erkannt wurde und auf 0 nachdem Snips euch geantwortet hat.

Man kann darauf z.B. mit einem Notifiy reagieren um die Musik im Zimmer zu muten damit einen Snips besser versteht, bzw. um die darauf folgende Sprachausgabe besser hören zu können.

Mir ist dabei aufgefallen, dass sich snips-tts-polly noch nicht ganz wie das original TTS-Modul verhält.
Wer Polly zur Sprachausgabe nutzt, sollte die neue Version von snips-tts-polly.py von hier einspielen:
https://github.com/Thyraz/snips-tts-polly

2) Bei SetNumeric kann man eine Lautstärke nun auch verändern ohne ein Device angeben zu müssen.
Dies ist für ein einfaches "lauter" oder "Lautstärke auf 30" gedacht.
Als Raum wird dann der aktuelle genommen (in dem Snips steht) und als Gerät das erste in diesem snipsRoom mit einem Lautstärke Mapping gefunden wird.

Solange man nur ein Gerät pro Raum mit einem Lautstärke Mapping hat (z.B. die Anlage über die sowohl Radio, CD, Fernsehen, Musikstreaming, ... läuft), erspart man sich das etwas umständlichere "Mach die Anlage lauter".

Das ist dann ähnlich bequem wie bei Alexa & Co.

Das war dann sozusagen die Vorarbeit für die nächsten Mediengeschichten.
MediaControls und MediaChannels Intents sollen als nächstes folgen.

Für das erste bisher vorgesehen:
- Play/weiter
- Pause
- Stop
- Vor|Skip Forward
- Zurück|Skip Backward
Gibt es da noch Existenzielles was beim ersten Release nicht fehlen darf?

Start von Sendern etc. läuft dann über den zweiten Intent (MediaChannels)


Installation wie letztes mal:
- Assistent von console.snips.ai herunterladen und installieren (oder über sam install assistant) damit ihr die neuste FHEM App habt.
- Neues Snips Modul von Github einspielen
- Fhem neu starten
- set <snipsDevice> updateModel ausführen
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 23 August 2018, 19:19:38
Zitat von: Thyraz am 19 August 2018, 19:46:47
Da geht wohl wirklich was beim ASR Inject schief.

Du hast ja wahrscheinlich auch schon diese Zeilen in deinen zitierten Logzeilen gesehen:Da das Anlernen nicht geklappt hat, erkennt er den ersten Teil von "Stehlampe" notgedrungen zu "stellen", beim zweiten Teil ist er dann ratlos. ;)

Und wenn das ASR nicht geklappt hat ist auch logisch, dass Snips dich nicht mehr versteht.
Ich hab praktisch alle Device-Namen aus der Snips-Fhem-App rausgenommen, da die richtigen Namen ja vom ASR Inject kommen sollen.
Snips-Fhem ist im Auslieferungszustand jetzt also ziemlich ahnungslos was Gerätebezeichnungen angeht...

Ist jetzt die Frage ob das ein Bug seitens meines Moduls ist, sprich ob ich Blödsinn an ASR schicke und das somit nur schiefgehen kann,
oder ob das ein Bug seitens Snips ist (die hohe Prozessorlast ist zumindest mal komisch).


Kannst du mal im Snips-Modul das verbose Attibut auf 5 setzen und dann updateModel nochmal ausführen?
Dann die Logausgaben (im Fhem Logfie) hier posten?
An sich sollte da irgendwo Injecting data to ASR: ... vorkommen.
Da sollte man den JSON String sehen den ich an ASR Inject übergebe.

Dann sieht man ob das in Ordnung aussieht und ich kann mal bei mir testen was passiert wenn ich den gleichen String bei mir an ASR sende.


Was du außerdem mal testen kannst:
(Zuerst Snips mit sudo systemctl stop snips* beenden.)
Alle Injections werden unter /var/lib/snips/injections abgelegt.
Hier einfach mal alle Unterordner löschen.
Dann den Assistenten unter /usr/share/snips/assistent am Besten auch nochmal löschen und neu aufspielen.
Entweder händisch runterladen und nach /usr/share/snips/assistent kopieren, oder über sam install assistant falls sam installiert ist.

Danach den Rechner neu starten und den ASR Inject über set <snipsDevice> updateModel nochmal ausführen.
Evtl. ist ja nur irgendwas an dem letzten Inject korrupt und das Rücksetzen hilft.

Hi Thyraz,

ich habe das nun noch mal probiert auf dem Rock64. Aber den Fehler, krieg ich nicht weg. :(

Zuerst hatte ich:
/var/lib/snips/injections/* gelöscht
Alle snips-* Pakete mit apt-get remove --purge gelöscht sowie die Verzeichnisse und danach Snips neuinstalliert.
Einen neuen Debian Stretch Container erstellt und Snips frisch installiert.

Das hat alles nichts geholfen.
Auf dem Orange Pi Zero hatte ich die Probleme nicht. Da lief aber auch eine andere Fhem Instanz.
Entweder es liegt an Fhem, oder was ich noch vermute evtl. an der Prozessor Architektur, weil der Rock64 ist armv8 und Orange Pi armv7.

Fhem Log:
2018.08.23 19:07:43 5: set updateModel - value:
2018.08.23 19:07:43 5: Injecting data to ASR: {"operations":[["add",{"de.fhem.Device":["Bilderrahmen"]}]]}


root@stretch:~# snips-watch -vvv
[code][17:07:10] Watching on localhost:1883 (MQTT)
[17:07:43] [Asr] an injection of 1 words for 1 entities has been requested
[17:07:45] [Asr] was asked to reload its model


root@stretch:/home/snips# /usr/bin/snips-asr-injection -v
[17:07:33.212225] DEBUG:snips_common_cli::cli: conf lookup: snips-asr-injection.model -> Ok(None)
[17:07:33.212487] DEBUG:snips_common_cli::cli: conf lookup: snips-common.model -> Ok(None)
[17:07:33.212616] DEBUG:snips_common_cli::cli: conf lookup: snips-asr-injection.assistant -> Ok(None)
[17:07:33.212668] DEBUG:snips_common_cli::cli: conf lookup: snips-common.assistant -> Ok(None)
[17:07:33.212783] DEBUG:snips_common_cli::cli: conf lookup: snips-asr-injection.user_dir -> Ok(None)
[17:07:33.212839] DEBUG:snips_common_cli::cli: conf lookup: snips-common.user_dir -> Ok(None)
[17:07:33.212970] DEBUG:snips_common_cli::cli: conf lookup: snips-asr-injection.bus -> Ok(None)
[17:07:33.213021] DEBUG:snips_common_cli::cli: conf lookup: snips-common.bus -> Ok(None)
[17:07:33.213067] DEBUG:snips_common_cli::cli: conf lookup: snips-asr-injection.mqtt -> Ok(None)
[17:07:33.213159] DEBUG:snips_common_cli::cli: conf lookup: snips-common.mqtt -> Ok(None)
[17:07:33.213529] DEBUG:snips_common_cli::cli: conf lookup: snips-asr-injection.mqtt_username -> Ok(None)
[17:07:33.213614] DEBUG:snips_common_cli::cli: conf lookup: snips-common.mqtt_username -> Ok(None)
[17:07:33.213665] DEBUG:snips_common_cli::cli: conf lookup: snips-asr-injection.mqtt_password -> Ok(None)
[17:07:33.213712] DEBUG:snips_common_cli::cli: conf lookup: snips-common.mqtt_password -> Ok(None)
[17:07:33.213793] DEBUG:snips_common_cli::cli: conf lookup: snips-asr-injection.mqtt_tls_hostname -> Ok(None)
[17:07:33.213890] DEBUG:snips_common_cli::cli: conf lookup: snips-common.mqtt_tls_hostname -> Ok(None)
[17:07:33.216513] INFO :snips_asr_injection_hermes: Launch with default model: "/usr/share/snips/assistant/custom_asr" and user dir: "/var/lib/snips"
[17:07:33.217617] DEBUG:snips_asr_injection_hermes: asr injection started

[17:07:43.353730] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180823T165338/inj_20180823T170004" with date time 2018-08-23T17:00:04Z
[17:07:43.354009] DEBUG:snips_asr_common::model   : did filter "/var/lib/snips/injections/20180823T165338/inj_20180823T165641" with date time 2018-08-23T16:56:41Z
[17:07:43.354177] DEBUG:snips_asr_injection_hermes::prepare: Copying model to inject at path "/var/lib/snips/injections/20180823T165338/inj_20180823T170743"
[17:07:43.496801] DEBUG:snips_asr_injection_hermes::core   : Number of new words: 0
[17:07:43.496951] DEBUG:snips_asr_injection_hermes         : Generating missing words pronunciations
[17:07:45.499968] DEBUG:snips_asr_injection_hermes::core   : Updating pronunciations' graph
[17:07:45.500075] DEBUG:snips_asr_injection_hermes::core   : Updating entities' graph
[17:07:45.501753] DEBUG:snips_asr_injection_hermes::core   : Injections performed with success


Hast du noch eine Idee?
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: eurolift am 23 August 2018, 19:53:05
Hallo Thyraz
Also in den  Readings des Moduls passiert nichts.Ich sage das Hotword das wird bestätigt.Sage meinen Text und wird auch bestätigt.

[19:51:03] Watching on localhost:1883 (MQTT)
[19:51:10] [Hotword] detected on site default, for model hey_snips
[19:51:10] [Asr] was asked to stop listening on site default
[19:51:10] [Hotword] was asked to toggle itself 'off' on site default
[19:51:10] [Dialogue] session with id '7e581ff9-6ad8-4618-8ab7-3d79f7ff2705' was started on site default
[19:51:10] [AudioServer] was asked to play a wav of 41.1 kB with id '6f44e119-7406-4d54-b6c2-eb36db22019f' on site default
[19:51:11] [AudioServer] finished playing wav with id '6f44e119-7406-4d54-b6c2-eb36db22019f'
[19:51:11] [Asr] was asked to listen on site default
[19:51:13] [Asr] captured text "wie ist die temperatur von wohnzimmer" in 2.0s
[19:51:13] [Asr] was asked to stop listening on site default
[19:51:13] [AudioServer] was asked to play a wav of 93.1 kB with id 'fe985f64-3c21-4b87-877e-3bd300f5e61a' on site default
[19:51:15] [AudioServer] finished playing wav with id 'fe985f64-3c21-4b87-877e-3bd300f5e61a'
[19:51:15] [Nlu] was asked to parse input "wie ist die temperatur von wohnzimmer"
Tschüss Eurolift
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 23 August 2018, 20:52:03
Zitat von: mark79 am 23 August 2018, 19:19:38
Hast du noch eine Idee?

Ehrlich gesagt auch nicht.  :-\

Ich würde mal die Logs in Discord (Snips Community) posten und um Hilfestellung bitten.
Eben auch die Frage stellen ob die Plattform der Grund sein kann.

Evtl. sehen die anhand der Logs auch etwas, bzw. haben noch Tips was man noch versuchen kann.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 23 August 2018, 20:59:41
Zitat von: eurolift am 23 August 2018, 19:53:05
[19:51:13] [Asr] captured text "wie ist die temperatur von wohnzimmer" in 2.0s

Ok, aber der Inject hat ja wohl funktioniert.
Der Raumname Wohnzimmer ist im Auslieferungzustand in der FHEM App nicht enthalten.

Jetzt ist die Frage warum FHEM nichts empfängt.
Stelle mal im Snips Modul auf Verbose 5 und schau ob im FHEM Log was komm wenn du den Satz nochmal sagst.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: mark79 am 23 August 2018, 21:10:02
Zitat von: Thyraz am 23 August 2018, 20:52:03
Ehrlich gesagt auch nicht.  :-\

Ich würde mal die Logs in Discord (Snips Community) posten und um Hilfestellung bitten.
Eben auch die Frage stellen ob die Plattform der Grund sein kann.

Evtl. sehen die anhand der Logs auch etwas, bzw. haben noch Tips was man noch versuchen kann.

Im Discord (support-general) habe ich nachgefragt, warte jedoch noch auf eine Antwort.

Ich werde den Orange Pi, wo Snips drauf läuft morgen mal mit nehmen und dann das Fhem auf dem Rock64 Board testen, welches Probleme macht. Dort lief Snips ja in ein LXC Container auf dem Rock64 Board.
Wenn das dann geht, also das snips-asr-injection auf dem Orange Pi Zero nicht amok rennt, dann wird es wohl an der armv8 Plattform liegen.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: eurolift am 23 August 2018, 22:28:04
Hallo  Thyraz
Im Log  erscheint nichts wenn ich den Satz sage.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 24 August 2018, 08:02:10
@eurolift:

Bin mir jetzt nicht sicher ob bei dir wirklich in Snips was hängt oder ob es eher in FHEM ist.
In snips-watch sieht man leider nicht die eigentlichen MQTT Nachrichten, weswegen das schwer zu interpretieren ist.

Kannst du mal auf dem Snips Rechner die MQTT Console öffnen und dann den Sprachbefehl wiederholen?
Die Logausgabe dann hier mal posten:


mosquitto_sub -v -h localhost -t hermes/hotword/# -t hermes/intent/# -t hermes/tts/# -t hermes/audioServer/default/playFinished -t hermes/asr/# -t hermes/dialogueManager/# -t hermes/nlu/#


Achja und ein list vom Snips Device wäre auch gut.
Da sieht man ob die registrierung vom Snips Modul als Client von deiner 00_MQTT Serverinstanz geklappt hat und deine Snips-Modul-Instanz die richtigen Topics abonniert hat.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: eurolift am 24 August 2018, 09:03:10
Hallo Thyraz
hier die Liste

ii  snips-analytic 0.58.3       armhf        Snips Analytics CLI
ii  snips-asr      0.58.3       armhf        Snips Automatic Speech Recognitio
ii  snips-asr-inje 0.58.3       armhf        A CLI tool to manage words inject
un  snips-asr-inje <none>       <none>       (no description available)
un  snips-asr-serv <none>       <none>       (no description available)
ii  snips-audio-se 0.58.3       armhf        Snips audio server
ii  snips-dialogue 0.58.3       armhf        A cli tool to run Snips Dialogue
ii  snips-hotword  0.58.3       armhf        A cli tool to run Snips Hotword a
un  snips-kaldi    <none>       <none>       (no description available)
ii  snips-kaldi-at 0.21.9       armhf        Snips/Kaldi C/C++ wrapper
ii  snips-nlu      0.58.3       armhf        Snips snips-nlu command line inte
ii  snips-platform 0.58.3       armhf        Base package for configuration
ii  snips-platform 0.58.3       armhf        Metapackage for snips-platform vo
un  snips-queries  <none>       <none>       (no description available)
ii  snips-tts      0.58.3       armhf        Snips TTS CLI
ii  snips-watch    0.58.3       armhf        CLI tool to monitor what the snip

beim aufrufen deines Codes kommt
-bash: mosquitto_sub: command not found

Danke Eurolift
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 24 August 2018, 09:18:26
Hallo eurolift,

mit list war list NameDesSnipsDevice in der Fhem Eingabezeile gemeint. ;)

Wegen Mosquitto: Evtl. installiert Snips nur das MQTT Servermodul und keine Client-Pakete.
Versuche mal, ob es funktioniert nachdem du die nachinstallierst:


sudo apt-get install mosquitto-clients
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: eurolift am 24 August 2018, 09:55:36
Erstmal Danke für Deine Mühe!!!
Also MQTT Servermodul nachinstalliert

-bash: hermes/asr/stopListening: No such file or directory
root@PI3:~# hermes/audioServer/default/playFinished {"id":"0cc5c45d-74d6-4251-99fd-89e0cf81a16f","siteId":"default","sessionId":null}
-bash: hermes/audioServer/default/playFinished: No such file or directory
root@PI3:~# hermes/nlu/query {"input":"wie ist die temperatur vom wohnzimmer","intentFilter":null,"id":"de83166f-70c5-4328-bf56-909978fa8db0","sessionId":"c2ce83c2-ce82-4391-8f81-8fbe60cf8b3e"}
-bash: hermes/nlu/query: No such file or directory
root@PI3:~# hermes/dialogueManager/sessionEnded {"sessionId":"c2ce83c2-ce82-4391-8f81-8fbe60cf8b3e","customData":null,"termination":{"reason":"timeout"},"siteId":"default"}
-bash: hermes/dialogueManager/sessionEnded: No such file or directory
root@PI3:~# hermes/asr/stopListening {"siteId":"default","sessionId":null}
-bash: hermes/asr/stopListening: No such file or directory
root@PI3:~# hermes/hotword/toggleOn {"siteId":"default","sessionId":null}
-bash: hermes/hotword/toggleOn: No such file or directory
root@PI3:~# hermes/asr/inject {"operations":[["add",{"de.fhem.Device":["Thermometer"]}],["add",{"de.fhem.Room":["Wohnzimmer"]}]]}
-bash: hermes/asr/inject: No such file or directory
root@PI3:~# hermes/asr/reload (null)
-bash: syntax error near unexpected token `null'

List zeigt das
Internals:
   DEF        SnipsMQTT Raum
   IODev      SnipsMQTT
   MODULE_VERSION 0.2
   NAME       sniepe
   NOTIFYDEV  SnipsMQTT Raum
   NR         156
   STATE      subscription acknowledged
   TYPE       SNIPS
   READINGS:
     2018-08-24 09:39:07   transmission-state subscription acknowledged
   helper:
     defaultRoom Raum
   message_ids:
   subscribe:
     hermes/intent/+
     hermes/nlu/intentParsed
   subscribeExpr:
     ^hermes\/intent\/([^/]+)$
     ^hermes\/nlu\/intentParsed$
   subscribeQos:
     hermes/intent/+ 0
     hermes/nlu/intentParsed 0
Attributes:
   IODev      SnipsMQTT
   stateFormat transmission-state

Eurolift
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 24 August 2018, 12:11:11
Hi eurolift,

so ganz werde ich aus dem oberen Teil deines Posts noch nicht schlau.
Was machen all die Bash Errors dazwischen?

Das sollte doch einfach eine Ausgabe des MQTT Traffics sein und keine Befehle die in der Shell ausgeführt wurden.  :o
Außerdem scheint am Anfang etwas zu fehlen, an sieht weder die Nachrichten vom Hotword noch vom ASR.

Was defintiv komisch ist:
NLU bekommt ein Query, dass es den Satz parsen soll.
Es kommt aber keine Antwort von NLU zurück.
Stattdessen kommt vom Sessionmanager dann irgendwann die Meldung, dass er die Sitzung aufgrund eines Timeouts beendet.

DANACH kommt dann ein ASR inject rein?


Zum List vom FHEM Modul:
Das scheint zumindest nicht die neuste Version zu sein, da unter "subscribe" mittlerweile mehr Topics auftauchen sollten.

Also versuchen wir es mal der Reihefolge nach:
- Lade das neuste 10_Snips.pm von Github nach /opt/fhem/FEHM
- Starte Fhem komplett neu
- Schaue ob das SnipsDevice in FHEM verbose 5 gesetzt hat
- Lade den Assistenten neu von console.snips.ai auf die Snips Installation runter
- Starte Snips neu (oder einfach den Rechner)
- Dann starte auf dem Snips Rechner im Terminal wieder diesen Befehl:
mosquitto_sub -v -h localhost -t hermes/hotword/# -t hermes/intent/# -t hermes/tts/# -t hermes/audioServer/default/playFinished -t hermes/asr/# -t hermes/dialogueManager/# -t hermes/nlu/#
- Führe danach "set <snipsDevice> updateModell" in Fhem aus
- Warte etwas
- Spreche nochmal den Satz "wie ist die temperatur vom wohnzimmer"

Dann den Text aus dem Terminalfenster kopieren und falls im Fhem Log was aufgetaucht ist das auch noch hier posten.

Man sollte dann an sich im Terminal zuerst ein
hermes/asr/inject {"operations":[["add",{"de.fhem.Device":["Thermometer"]}],["add",{"de.fhem.Room":["Wohnzimmer"]}]]}
hermes/asr/reload (null)

sehen,
gefolgt von der Hotword Erkennung, dann was ASR als Text erkannt hat und danach dann die Übergabe an NLU.
Am Ende dann hoffentlich noch eine Rückmeldung von NLU über den erkannten Intent und die Slotwerte statt eines Timeouts...
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: eurolift am 24 August 2018, 12:39:23
Hallo Thyraz


root@PI3:~# mosquitto_sub -v -h localhost -t hermes/hotword/# -t hermes/intent/# -t hermes/tts/# -t hermes/audioServer/default/playFinished -t hermes/asr/# -t hermes/dialogueManager/# -t hermes/nlu/#
hermes/asr/inject {"operations":[["add",{"de.fhem.Device":["Thermometer"]}],["add",{"de.fhem.Room":["Wohnzimmer"]}]]}
hermes/asr/reload (null)
hermes/hotword/default/detected {"siteId":"default","modelId":"hey_snips","modelVersion":"hey_snips_3.1_2018-04-13T15:27:35_model_0019","modelType":"universal","currentSensitivity":0.5}
hermes/asr/stopListening {"siteId":"default","sessionId":"1948899e-2e98-43b8-b037-be26f7a60bf6"}
hermes/hotword/toggleOff {"siteId":"default","sessionId":"1948899e-2e98-43b8-b037-be26f7a60bf6"}
hermes/dialogueManager/sessionStarted {"sessionId":"1948899e-2e98-43b8-b037-be26f7a60bf6","customData":null,"siteId":"default","reactivatedFromSessionId":null}
hermes/audioServer/default/playFinished {"id":"483f9366-ad61-48a7-b04a-8ff6c7266802","siteId":"default","sessionId":null}
hermes/asr/startListening {"siteId":"default","sessionId":"1948899e-2e98-43b8-b037-be26f7a60bf6"}
hermes/asr/textCaptured {"text":"wie ist die temperatur von wohnzimmer","likelihood":0.0032803658,"seconds":3.0,"siteId":"default","sessionId":"1948899e-2e98-43b8-b037-be26f7a60bf6"}
hermes/asr/stopListening {"siteId":"default","sessionId":"1948899e-2e98-43b8-b037-be26f7a60bf6"}
hermes/audioServer/default/playFinished {"id":"6e8b28b1-4fac-4fd2-b8c5-c44e4fec57fc","siteId":"default","sessionId":null}
hermes/nlu/query {"input":"wie ist die temperatur von wohnzimmer","intentFilter":null,"id":"b1ff32f9-a738-4b66-b203-fca7c8b3d44f","sessionId":"1948899e-2e98-43b8-b037-be26f7a60bf6"}
hermes/dialogueManager/sessionEnded {"sessionId":"1948899e-2e98-43b8-b037-be26f7a60bf6","customData":null,"termination":{"reason":"timeout"},"siteId":"default"}
hermes/asr/stopListening {"siteId":"default","sessionId":null}
hermes/hotword/toggleOn {"siteId":"default","sessionId":null}


log von FHEM
2018.08.24 12:35:19 5: Injecting data to ASR: {"operations":[["add",{"de.fhem.Device":["Thermometer"]}],["add",{"de.fhem.Room":["Wohnzimmer"]}]]}
2018.08.24 12:35:39 5: publish received for hermes/hotword/default/detected, {"siteId":"default","modelId":"hey_snips","modelVersion":"hey_snips_3.1_2018-04-13T15:27:35_model_0019","modelType":"universal","currentSensitivity":0.5}
2018.08.24 12:35:39 5: Parsed value:  for key: input
2018.08.24 12:35:39 5: Parsed value:  for key: sessionId
2018.08.24 12:35:39 5: Parsed value: default for key: siteId
2018.08.24 12:35:39 5: Parsed value:  for key: probability
2018.08.24 12:35:39 5: Parsed value:  for key: intent
2018.08.24 12:36:00 5: publish received for hermes/hotword/toggleOn, {"siteId":"default","sessionId":null}
2018.08.24 12:36:00 5: Parsed value:  for key: probability
2018.08.24 12:36:00 5: Parsed value:  for key: intent
2018.08.24 12:36:00 5: Parsed value:  for key: sessionId
2018.08.24 12:36:00 5: Parsed value:  for key: input
2018.08.24 12:36:00 5: Parsed value: default for key: siteId

Gruss Eurolift
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: ChrisK am 24 August 2018, 12:56:06
Ich wollte mich zwischendurch für das Modul und die ganze Arbeit bedanken!
Gestern aufgesetzt und nach kurzer Zeit schon lauffähig. Jetzt muss ich ein bisschen Fleißarbeit leisten und alle zu schaltenden Devices mit den richtigen Attributen bestücken.

Ein Hinweis für den Fall, dass es jemand anderes auch betrifft:
Ich arbeite nicht mit sam, lade den Assistenten also manuell herunter und kopiere ihn auf den Pi.
Beim Entpacken (mit WinRar unter Windows 10) wird aus dem ":" in den Ordner-Namen ein "_" (also z.B. slot_filler_Thyraz_GetNumeric und slot_filler_Thyraz_GetOnOff). Das hat erstmal dazu geführt, dass snips nichts machen wollte. Aber im log stand, dass der Ordner nicht gefunden werden konnte, deswegen war die Lösungssuche relativ einfach.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 24 August 2018, 13:16:48
@eurolift

Sehr komisch Geschichte...

Das sieht jetzt an sich alles sehr gut aus bis zu dem Punkt:

hermes/nlu/query {"input":"wie ist die temperatur von wohnzimmer","intentFilter":null,"id":"b1ff32f9-a738-4b66-b203-fca7c8b3d44f","sessionId":"1948899e-2e98-43b8-b037-be26f7a60bf6"}


Diese Message wird vom Session Manager gepostet um NLU anzutiggern.
Laut Doku hier: https://snips.gitbook.io/documentation/ressources/hermes-protocol#nlu sollte NLU immer antworten.
Entweder mit hermes/nlu/intentParsed oder mit hermes/nlu/intentNotRecognized.

Da von NLU aber keine Antwort kommt bleiben an sich nur 2 Möglichkeiten:
- NLU hat einen fiesen Bug
oder
- NLU läuft gar nicht und kann deshalb nicht antworten

kannst du mal

sudo systemctl status snips-nlu

auf dem Snips Rechner eingeben und schauen was dabei raus kommt?

Mann kann NLU auch mal testweise händisch im Terminal statt als Service in Hintergrund laufen lassen.
Dann sieht man ob es überhaupt richtig startet und ob es irgendwann Fehler ausspuckt:


sudo systemctl stop snips-nlu
sudo snips-nlu -v


Falls NLU fehlerfrei startet (sollte dann irgendwann mit "idle" stehen bleiben) einfach nochmal "wie ist die temperatur von wohnzimmer" sagen und schauen was NLU so ins Terminal ausgibt.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 24 August 2018, 13:26:01
Zitat von: ChrisK am 24 August 2018, 12:56:06
Ich wollte mich zwischendurch für das Modul und die ganze Arbeit bedanken!
Gestern aufgesetzt und nach kurzer Zeit schon lauffähig.
Freut mich.  :)

Zitat von: ChrisK am 24 August 2018, 12:56:06
Beim Entpacken (mit WinRar unter Windows 10) ...
Ja, sowas geht öfters in die Hose. ;)
Am Besten niemals ein Archiv für Linux auf einem Windows Rechner entpacken.

Einfach die gepackte Datei auf den Linux Rechner schieben und dort an den Zielort extrahieren.
In der Snips Doku löblicherweise sogar beschrieben wie ich eben gesehen habe:
https://snips.gitbook.io/documentation/console/deploy-your-assistant#deploy-your-assistant-manually-without-sam
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: GuidoS am 24 August 2018, 13:41:53
Hi ,

habe gerade mit der Installation angefangen .. Snips Server läuft nur das FHEM Modul bekomme ich nicht zum laufen

FHEM LOG:
reload: Error:Modul 10_SNIPS deactivated:
Excessively long <> operator at ./FHEM/10_SNIPS.pm line 21.

2018.08.24 13:32:55 0: Excessively long <> operator at ./FHEM/10_SNIPS.pm line 21.

2018.08.24 13:33:09 1: reload: Error:Modul 10_SNIPS deactivated:
Excessively long <> operator at ./FHEM/10_SNIPS.pm line 21.

2018.08.24 13:38:44 0: Excessively long <> operator at ./FHEM/10_SNIPS.pm line 21

Beim Versuch :
define Snips SNIPS SnipsMQTT Wohnzimmer
--> Cannot load module SNIPS

Hat jemand ein ähnliches Problem ?

Danke & VG

Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: ChrisK am 24 August 2018, 13:53:04
Zitat von: Thyraz am 24 August 2018, 13:26:01
Einfach die gepackte Datei auf den Linux Rechner schieben und dort an den Zielort extrahieren.
In der Snips Doku löblicherweise sogar beschrieben wie ich eben gesehen habe:
https://snips.gitbook.io/documentation/console/deploy-your-assistant#deploy-your-assistant-manually-without-sam
Danke für den Hinweis.
Ich habe gestern ziemlich lange damit verbracht, herauszufinden wie man ohne SAM den Assistenten rüber kriegt. Wenn ich Deinen Link jetzt so sehe, frage ich mich, was ich gemacht habe  ::)  ;)

Hat eigentlich jemand schon ein eigenes WakeWord probiert/umgesetzt? Gibt es dazu Erfahrungen?
Das wird vermutlich einer der nächsten Punkte bei mir sein, sobald einige Devices funktionieren.

Die Doku hierzu habe ich zumindest gefunden ;)
https://snips.gitbook.io/documentation/advanced-configuration/wakeword/personal-wakeword
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: eurolift am 24 August 2018, 14:02:21
Hallo Thyraz

root@PI3:~# sudo systemctl status snips-nlu
● snips-nlu.service - Snips NLU
   Loaded: loaded (/lib/systemd/system/snips-nlu.service; enabled; vendor preset
   Active: activating (auto-restart) (Result: exit-code) since Fri 2018-08-24 13
  Process: 5199 ExecStart=/usr/bin/snips-nlu (code=exited, status=1/FAILURE)
Main PID: 5199 (code=exited, status=1/FAILURE)

Aug 24 13:59:40 PI3 systemd[1]: snips-nlu.service: Unit entered failed state.
Aug 24 13:59:40 PI3 systemd[1]: snips-nlu.service: Failed with result 'exit-code

Eurolift
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 24 August 2018, 14:08:23
Ok, läuft also nicht.
Damit ist auch klar, warum nichts funktioniert. ;)

Dann wie oben beschrieben händisch starten und schauen ob hier was hilfreicheres ausgespuckt wird.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: eurolift am 24 August 2018, 14:09:43
Hey Snips Hallo Thyraz

mit
sudo systemctl stop snips-nlu
sudo snips-nlu -v

kommt das im Terminal



[14:03:38.478515] DEBUG:snips_nlu_hermes::billing: Received Response { status: Created, version: Http11, headers: {"Content-Length": "0", "Date": "Fri, 24 Aug 2018 12:03:38 GMT"} }
[14:03:39.686207] ERROR:snips_nlu                : Cannot open slot filler metadata file '"/usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_Thyraz:GetNumeric/metadata.json"'
-> caused by: No such file or directory (os error 2)

[14:03:39.686320] ERROR:rumqtt::client           : 081d5e26dfc840adb523f414268d8351 Disconnected: (Error(SyncMpsc(Disconnected), State { next_error: None, backtrace: None }))
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: ChrisK am 24 August 2018, 14:15:34
Zitat von: eurolift am 24 August 2018, 14:09:43
[14:03:38.478515] DEBUG:snips_nlu_hermes::billing: Received Response { status: Created, version: Http11, headers: {"Content-Length": "0", "Date": "Fri, 24 Aug 2018 12:03:38 GMT"} }
[14:03:39.686207] ERROR:snips_nlu                : Cannot open slot filler metadata file '"/usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_Thyraz:GetNumeric/metadata.json"'
-> caused by: No such file or directory (os error 2)

[14:03:39.686320] ERROR:rumqtt::client           : 081d5e26dfc840adb523f414268d8351 Disconnected: (Error(SyncMpsc(Disconnected), State { next_error: None, backtrace: None }))
Das war die Meldung, die ich in diesem Fall bekommen habe:
Zitat von: ChrisK am 24 August 2018, 12:56:06
Ein Hinweis für den Fall, dass es jemand anderes auch betrifft:
Ich arbeite nicht mit sam, lade den Assistenten also manuell herunter und kopiere ihn auf den Pi.
Beim Entpacken (mit WinRar unter Windows 10) wird aus dem ":" in den Ordner-Namen ein "_" (also z.B. slot_filler_Thyraz_GetNumeric und slot_filler_Thyraz_GetOnOff). Das hat erstmal dazu geführt, dass snips nichts machen wollte. Aber im log stand, dass der Ordner nicht gefunden werden konnte, deswegen war die Lösungssuche relativ einfach.

Vielleicht guckst Du also mal, ob die Verzeichnisse bei Dir korrekt heißen bzw. existieren.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: Thyraz am 24 August 2018, 14:19:36
Er findet eine Datei in einem Ordner mit einem Doppelpunkt im Namen nicht. ;)

Das hört sich ein wenig an wie das Problem, das ChrisK ein paar Posts weiter oben beschrieben hat.
Evtl. das Zip File auch unter Windows anstatt unter Linux entpackt?

Wenn ja dann auch mal so versuchen:
https://snips.gitbook.io/documentation/console/deploy-your-assistant#deploy-your-assistant-manually-without-sam


edit: zu langsam. ;)
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: eurolift am 24 August 2018, 14:24:23
OK ich versuch es. Erstmal DANKE an alle.Meld mich dann  :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: eurolift am 24 August 2018, 14:34:44
Hurra es funktioniert.Entpacken muss ich wohl noch üben ;D
Danke nochmal Eurolift
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: jowe am 24 August 2018, 14:43:51
Hi Thyraz,
das Modul läuft weiterhin super bei mir, die neue Status Funktion ist auch top!
Ich hätte noch einen Wunsch: Ich möchte gerne per Dummy für meinen Satelliten die hotword-detection ein- und ausschalten können, dafür müsste ich laut Snips Doku
hermes/hotword/<hotwordId>/toggleOff publishen. Könntest du in deinem Modul ermöglichen, benutzerdefinierte Kommandos durchzureichen? Also z.B. per set SNIPS publish hermes/hotword/<hotwordId>/toggleOff oder so ähnlich?
Hintergrund: Da ich immernoch sehr viele fehlerhafte Hotword-Erkennungen habe, möchte ich gerne z.B. bei Besuch die gesamte Erkennung abschalten können.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 24 August 2018, 14:59:14
Du kannst das heute schon über das MQTT Modul machen, welches du ja zusätzlich zum Snips Device anlegen musstest.
Da hat es einen set Befehl zum publishen drin.

Aber da das  mit der Hotword Detection eine gute Idee ist, kommt das auf die Todo Liste.
Also ein set Befehl, der dann set <snipsDevice> microphone off bzw. on heißen könnte.

Könnte man auch einen Intent dafür machen nach dem Schema:
- Hey Snips, hör mal weg
- Hey Snips, halt dir mal 5 Minuten die Ohren zu
- Hey Snips, Mikrofon im Wohnzimmer für 6 Stunden abschalten

oder so ähnlich. :P

Ist nur noch die Frage wie ich die hotwordId rausbekomme, ohne dass der User davor erstmal Snips ansprechen muss.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 24 August 2018, 23:02:16
Nutzt ihr auch die snips-asr-google? Verstehe ich das richtig, das die "normale" asr kein Deutsch kann? Bekomme immer folgenden Fehler:

Aug 24 22:56:21 pi snips-asr-google[5725]: thread '<unnamed>' panicked at 'missing field `access_token` at line 4 column 1', snips-asr-google/snips-asr-google-lib/src/google_auth.rs:410:22
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Wal am 25 August 2018, 07:31:50
Nein, die snips-asr kann deutsch. Wenn ich möchte das Amazon oder Google Daten von mir bekommen sollen, würde ich nicht mit Snips arbeiten.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: shilbert am 25 August 2018, 09:12:18
Läuft  :)

Zumindest was den Status des Rasenmähers angeht. Mit dem alten Modul liefen auch die Jalousien. Die tun es aktuell nicht mehr. Scheint irgendwie an den Räumen zu liegen.

Injection müsste geklappt haben ...

Zitathermes/asr/inject {"operations":[["add",{"de.fhem.Device":["Rasenmäher","Jalousie","Markise"]}],["add",{"de.fhem.Room":["Wohnzimmer","Garten","Küche"]}]]}
hermes/asr/reload (null)

Allerdings scheint bei den Slots Standardraum und Standarddevice übermittelt zu werden.

Das zugehörige Device wäre

ZitatIODev
   
ZWAVE1
alias                   Rollo Küche
room                  Küche,LichtRollo,Snips
snipsMapping     SetOnOff:cmdOn=on,cmdOff=off
snipsName         Jalousie
snipsRoom         Küche

Zitat[09:02:15] [Asr] captured text "jalousie küche runter" in 2.0s
[09:02:15] [Asr] was asked to stop listening on site wohnzimmer
[09:02:15] [AudioServer] was asked to play a wav of 93.1 kB with id 'b92e878d-a674-4f51-aeea-88da0227e288' on site wohnzimmer
[09:02:16] [AudioServer] finished playing wav with id 'b92e878d-a674-4f51-aeea-88da0227e288'
[09:02:16] [Nlu] was asked to parse input "jalousie küche runter"
[09:02:16] [Nlu] detected intent Thyraz:SetNumeric with probability 0.910 for input "jalousie küche runter"
              Slots ->
                 Change -> runter
[09:02:16] [Dialogue] New intent detected Thyraz:SetNumeric with probability 0.910
              Slots ->
                 Change -> runter
[09:02:17] [Nlu] was asked to parse input "'standardgerät' 'standardraum' runter"
[09:02:17] [Nlu] detected intent Thyraz:SetNumeric with probability 0.783 for input "'standardgerät' 'standardraum' runter"
              Slots ->
                 Device -> Standardgerät
                   Room -> Standardraum
                 Change -> runter
[09:02:17] [Dialogue] was ask to end session with id 65a791cc-ed8f-463f-b4b4-a7bf44b3b845 by saying 'Da ist etwas schief gegangen.'
[09:02:17] [Tts] was asked to say "Da ist etwas schief gegangen."
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 25 August 2018, 11:21:16
@Thyraz: Danke für den Hinweis, ich dachte ich bräuchte noch ein zusätzliches Snips-device um die MQTT Befehle zu publishen. Hotword Erkennung ein- und ausschalten funktioniert einwandfrei mit
set SnipsMQTT publish hermes/hotword/default/toggleOff und
set SnipsMQTT publish hermes/hotword/default/toggleOn

Perfekt!
Kleiner Nachtrag: oben Beschriebenes Vorgehen funktioniert wohl leider doch nicht, Snips reagiert doch weiterhin auf das Hotword

Zum Thema PS3 Eye und Respeaker: Ich habe beide Varianten. Ich habe das Gefühl, dass der Respeaker etwas besser funktioniert. Aber ein großer Unterschied ist es nicht. Ich habe den Respeaker mit einem PI0 und dem Adafruit Speaker (der gleiche wie im Makers Kit) als Satellite laufen und bin begeistert über die geringe Größe. Allerdings bekomme ich einige Sachen noch nicht hin, leider ist die Doku zum Makers Kit nicht wirklich umfangreich:
Lautstärke des Lautsprechers stellt sich nach Reboot wieder auf Maximum, trotz sudo alsactl store.
Den Button auf dem Board kann ich noch nicht nutzen, da ich es noch nicht hinbekomme bei Tastendruck ein mqtt-publish auszulösen
Die drei LEDs bekomme ich auch noch nicht gezielt angesteuert

Übrigens braucht der Respeaker keine eigene Stromversorgung, funktioniert super mit Stromversorgung über den Pi.
Alles in Allem würde ich aber trotzdem eher den Respeaker anstatt das Eye3 empfehlen. Zumal die o.g. Themen lösbar sein sollten. Vielleicht hilft das ja jemandem bei der Wahl eines geeigneten Micros.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 25 August 2018, 11:37:32
Zitat von: Wal am 25 August 2018, 07:31:50
Nein, die snips-asr kann deutsch. Wenn ich möchte das Amazon oder Google Daten von mir bekommen sollen, würde ich nicht mit Snips arbeiten.
Habe mich auch schon gewundert. Dann ist die SNIPS Dokumentation aber nicht gerade aktuell.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 14:13:33
Zitat von: shilbert am 25 August 2018, 09:12:18
Mit dem alten Modul liefen auch die Jalousien. Die tun es aktuell nicht mehr. Scheint irgendwie an den Räumen zu liegen.
Injection müsste geklappt haben ...
Allerdings scheint bei den Slots Standardraum und Standarddevice übermittelt zu werden.

Das mit Standardraum / Standardgerät ist normal.
ASR versteht die neuen Wörter nach dem Inject wohl, NLU aber nicht.
Daher trickse ich hier, indem ich NLU nochmal mit Dummy-Wörtern füttere die es kennt.

Bei deiner Logausgabe sieht man ja, dass NLU bei dem Satz "jalousie küche runter" nur einen Slot (Change) mit "runter" erkennt.

Beim zweiten NLU-Aufruf in deiner Logausgabe der von FHEM kommt: "standardgerät standardraum runter" erkennt er dann alle 3 Slots: Room, Device und Change.
Raum und Device ersetze ich in den empfangen Daten dann wieder mit den ursprünglichen Werten bevor ich weitermache.


Warum es bei dir momentan fehlschlägt:
Im Logeintrag siehst du, dass er den Intent SetNumeric erkennt. Du hast aber nur SetOnOff konfiguriert.
Bin mir jetzt nicht sicher ob ich da eher was ändern sollte dran...

Wenn du "öffne" oder "schließe" statt "runter" oder "rauf" sagst, sollte es jetzt schon gehen.
Da die öffne/schließe Wörter aus dem Value Slot von SetOnOff sind.

Rauf und Runter habe ich aktuell dem "Change" Slot bei SetNumeric zugewiesen, da ich andere Beispielsätze im Kopf hatte:
"Fahre den Rollladen 20 Prozent runter"
Aber ob man das wirklich so sagt?
Evtl. wäre rauf/runter doch eher ein Kandidat für SetOnOff, da es ja an sich das selbe wie Öffnen/Schließen ist.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 14:32:57
Ok, hab das kurz geändert.

Öffne/Rauf und Schließe/Runter sollten nun als SetOnOff Befehl erkannt werden.
Dazu den Assistenten neu installieren, damit ihr die neuste Version der FHEM App habt,
und die neue 10_Snips.pm von Github einspielen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 14:36:39
Zitat von: jowe am 25 August 2018, 11:21:16
@Thyraz: Danke für den Hinweis, ich dachte ich bräuchte noch ein zusätzliches Snips-device um die MQTT Befehle zu publishen. Hotword Erkennung ein- und ausschalten funktioniert einwandfrei mit
set SnipsMQTT publish hermes/hotword/default/toggleOff und
set SnipsMQTT publish hermes/hotword/default/toggleOn

Perfekt!
Kleiner Nachtrag: oben Beschriebenes Vorgehen funktioniert wohl leider doch nicht, Snips reagiert doch weiterhin auf das Hotword

Du übergibst hier nur den Intent auf dem published werden soll, aber keine eigentliche Nachricht.
Laut Doku muss als Payload die siteId geschickt werden die stummgeschaltet werden soll.

Schätze mal das müsste so aussehen:
set SnipsMQTT publish hermes/hotword/default/toggleOff {"siteId": "default"}
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 25 August 2018, 15:40:31
Brauche ich für SNIPS einen eigenen MQTT Broker? Habe auf meinem PI bereits Mosquitto MQTT und in FHEM einen Broker angelegt. Einfach beim define von SNIPS meinen bestehenden MQTT Broker angeben und fertig?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 25 August 2018, 15:58:47
Habe ich da was zerschossen?
sam watch
bash: snips-watch: Kommando nicht gefunden.

Jedoch sam status etc funtionieren...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 25 August 2018, 16:12:41
Zitat von: kud am 25 August 2018, 15:58:47
Habe ich da was zerschossen?
sam watch
bash: snips-watch: Kommando nicht gefunden.

Jedoch sam status etc funtionieren...

versuch mal "sudo apt-get install --reinstall snips-watch"
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 16:12:46
Zitat von: bennebartsch am 25 August 2018, 15:40:31
Brauche ich für SNIPS einen eigenen MQTT Broker? Habe auf meinem PI bereits Mosquitto MQTT und in FHEM einen Broker angelegt. Einfach beim define von SNIPS meinen bestehenden MQTT Broker angeben und fertig?

An sich kannst du auch einen existierenden verwenden.
Soll Snips auf dem selben Rechner laufen?

Snips schickt auch alle Audiodaten konstant über den MQTT Broker.
Würde (falls es ein anderer Rechner ist) eher einen extra Broker installieren, da du sonst dauernd diesen Netzwerktraffic für die Audiodaten hast.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 16:13:53
Zitat von: kud am 25 August 2018, 15:58:47
Habe ich da was zerschossen?
sam watch
bash: snips-watch: Kommando nicht gefunden.

Jedoch sam status etc funtionieren...

snips-watch wird glaub nicht standardgemäß mitinstalliert.
Hast du es schon drauf gehabt?

edit: Falls ja, hat bennebartsch ja eine mögliche Lösung gebracht...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 25 August 2018, 16:15:57
Zitat von: Thyraz am 25 August 2018, 16:12:46
An sich kannst du auch einen existierenden verwenden.
Soll Snips auf dem selben Rechner laufen?

Snips schickt auch alle Audiodaten konstant über den MQTT Broker.
Würde (falls es ein anderer Rechner ist) eher einen extra Broker installieren, da du sonst dauernd diesen Netzwerktraffic für die Audiodaten hast.

Ja, SNIPS läuft auf dem Pi, auf dem auch der Broker läuft.
Noch eine Frage: SNIPS soll auf einem PI laufen, an dem ein PS3 Eye angeschlossen ist. Leider ist der PI ziemlich weit von meinen Lautsprechern entfernt. Kann ich die Audioausgabe auch über einen der Sattelliten (RPI Zero) realisieren?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 25 August 2018, 17:15:25
Habe genau dieses Problem und schlage mich schon seit 2 Tagen mit Pulseaudio rum. Eine ...Software. Wäre schön wenn alsa das von Haus aus mitbrächte.
Nun. Was ich bereits realisiert habe ist, dass der Pulseaudioserver auf  dem Pi mir dem Lautsprecher läuft.
Wenn ich den Snips-pulseaudio sage -- server PimitLautsprecher geht das komplette Audio auf den Server inklusive Mikrofon ;-(( Blöd.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 25 August 2018, 17:19:01
Zitat von: kud am 25 August 2018, 17:15:25
Habe genau dieses Problem und schlage mich schon seit 2 Tagen mit Pulseaudio rum. Eine ...Software. Wäre schön wenn alsa das von Haus aus mitbrächte.
Nun. Was ich bereits realisiert habe ist, dass der Pulseaudioserver auf  dem Pi mir dem Lautsprecher läuft.
Wenn ich den Snips-pulseaudio sage -- server PimitLautsprecher geht das komplette Audio auf den Server inklusive Mikrofon ;-(( Blöd.

Werde mich da auch gleich mal dransetzen, wenn ich SNIPS erstmal dazu bekomme irgendetwas zu schalten...

Ist das normal?:
2018.08.25 16:52:36 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 201.
2018.08.25 16:52:36 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 224.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mark79 am 25 August 2018, 17:26:16
@Thyraz das Problem scheint wohl wirklich armv8 bzgl snips-asr-injection zu sein.

Ich habe den Orange Pi Zero (armv7) mal hier hin mitgenommen und mit dem Fhem verbunden, dort stieg die CPU Last von snips-asr-injection nicht. Heißt also, das Fhem und dein Modul nicht das Problem sind. :)

Im Discord Channel hat marc noch etwas geschrieben, das er glaubt das es evtl. an LXC liegt:   
marc
@Mark79 this is going to be a little hard for me to reproduce 😅 .. i would rather blame some underlying lib used by the container than the armv8 architecture

Ich habe Snips dann mal im Hostsystem installiert und dort tritt das Problem auch auf.
Ich habe es reportet und mal schaun was dabei raus kommt...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 25 August 2018, 17:28:23
Da wäre auch interessant ob die Lautstärke pro Ausgabe (evtl. Tageszeitabhängig) angepasst werden kann. Bis jetzt mach ich das mit dem Alsamixer.
Das nervt mich auch an Alexa welche zu nachtsschlafender Zeit auf den Befehl "Schalte das Licht aus" das ganze Haus mit "OK" wieder wachmacht. ;-((
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mark79 am 25 August 2018, 17:32:22
Zitat von: kud am 25 August 2018, 17:28:23
Da wäre auch interessant ob die Lautstärke pro Ausgabe (evtl. Tageszeitabhängig) angepasst werden kann. Bis jetzt mach ich das mit dem Alsamixer.
Das nervt mich auch an Alexa welche zu nachtsschlafender Zeit auf den Befehl "Schalte das Licht aus" das ganze Haus mit "OK" wieder wachmacht. ;-((
Du könntest das Zeitgesteuert per Crontab machen: amixer -c1 sset 'PCM' 80%
Oder per System Befehl mit Fhem.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 25 August 2018, 17:39:08
Auf dem Snipsrechner läuft kein FHEM.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mark79 am 25 August 2018, 17:47:55
Dann mit System Befehl von Fhem + https://www.google.de/search?q=ssh+befehl+absetzen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 25 August 2018, 18:22:13
Ich habe das bis hierher aus der Anleitung hinbekommen.
Jetzt hängt es an:
E: Paket snips-asr-injection kann nicht gefunden werden.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 25 August 2018, 18:40:58
Hatte ich auch. Einfach neu installieren.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 25 August 2018, 19:03:46
Nach purge, reboot und Neuinstallation kommt nun Folgendes:
Paketlisten werden gelesen... Fertig
Abh▒ngigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
snips-platform-voice ist schon die neueste Version (0.58.3).
Probieren Sie ▒apt --fix-broken install▒, um dies zu korrigieren.
Die folgenden Pakete haben unerf▒llte Abh▒ngigkeiten:
snips-tts : H▒ngt ab von: libttspico-utils (>= 1.0) soll aber nicht installiert werden
E: Unerf▒llte Abh▒ngigkeiten. Versuchen Sie ▒apt --fix-broken install▒ ohne Angabe eines Pakets (oder geben Sie eine L▒sung an).


Werde die Kiste wohl komplett plattmachen und neu hochziehen müssen.
Weil das: apt --fix-broken install auch wieder nur den gleichen Fehler ergibt.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 25 August 2018, 19:54:44
Zitat von: Neuhier am 25 August 2018, 19:03:46
Nach purge, reboot und Neuinstallation kommt nun Folgendes:
Paketlisten werden gelesen... Fertig
Abh▒ngigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
snips-platform-voice ist schon die neueste Version (0.58.3).
Probieren Sie ▒apt --fix-broken install▒, um dies zu korrigieren.
Die folgenden Pakete haben unerf▒llte Abh▒ngigkeiten:
snips-tts : H▒ngt ab von: libttspico-utils (>= 1.0) soll aber nicht installiert werden
E: Unerf▒llte Abh▒ngigkeiten. Versuchen Sie ▒apt --fix-broken install▒ ohne Angabe eines Pakets (oder geben Sie eine L▒sung an).


Werde die Kiste wohl komplett plattmachen und neu hochziehen müssen.
Weil das: apt --fix-broken install auch wieder nur den gleichen Fehler ergibt.

Habe das selbe Problem. Vermute es liegt daran dass ich kein Raspian Stretch habe. Kann das sein?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 19:58:40
Was für ein System setzt du denn ein? Stretch ist bei Snips mittlerweile Pflicht, man erhält auch keine neuen Snips Versionen mehr unter Jessie.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 20:03:53
Zitat von: bennebartsch am 25 August 2018, 16:15:57
Ja, SNIPS läuft auf dem Pi, auf dem auch der Broker läuft.
Noch eine Frage: SNIPS soll auf einem PI laufen, an dem ein PS3 Eye angeschlossen ist. Leider ist der PI ziemlich weit von meinen Lautsprechern entfernt. Kann ich die Audioausgabe auch über einen der Sattelliten (RPI Zero) realisieren?

Ich bin mir nicht sicher, ob man das nicht auch Snips-intern hinbekommen könnte.
Also auf dem Pi Zero auch Snips installieren aber nur den snips-audio Dienst laufen lassen.
In der Snips Config auf dem Zero dann den MQTT Server von dem eigentlichen Snips Rechner angeben.

Also an sich wie einen Satelliten installieren, nur eben auch als "default" siteId rennen lassen.
Auf dem eigentlichen Snips Rechner dann eben den snips-audio Dienst deaktivieren.

Dadurch, dass bei Snips alles als getrennte Module läuft, die nur per MQTT miteinander reden,
könnte das durchaus klappen.

Dann muss man gar nicht mit pulseaudio arbeiten, sondern kann auf dem Zero den Sound ganz normal lokal über alsa spielen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 20:12:09
Zitat von: kud am 25 August 2018, 17:28:23
wäre auch interessant ob die Lautstärke pro Ausgabe (evtl. Tageszeitabhängig) angepasst werden kann.

Hab ich auch auf der Todo-Liste:

Einen kleinen Python Service schreiben den man auf dem Snips-Rechner laufen lässt und der auch auf MQTT Nachrichten lauscht.
Dann könnte man im FHEM Modul einen "volume" Befehl einführen, welcher z.B. ein Topic hermes/audio/changeVolume mit einem Payload {"volume": "80"} schickt.

Der Python Service würde dieses Topic abonnieren und dann die Lautstärke entsprechend ändern mit amixer -c1 sset 'PCM' 80%
Dann läuft weiter alles über MQTT und man braucht keine parallelen Übertragungswege wie z.B. SSH.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 25 August 2018, 20:19:30
Habe extra Stretch draufgemacht, weil das auf der Seite im GIT so angegeben war.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 20:26:05
X86 oder Raspberry?

Ich musste für auf meinem NUC noch folgendes machen:

Zitat
Non-Free Packages für Debian freischalten:
sudo nano /etc/apt/sources.list
in jeder Zeile hinter "contrib" ein "non-free" anhängen

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install lsb-release apt-transport-https ca-certificates libttspico-utils alsa-utils

edit: Seh gerade, dass ich das schon auf GIT geschrieben habe, hast also evtl. schon probiert...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 25 August 2018, 21:40:10
Raspi3 mit 8GB SD-Karte und Stretch.
Bin Deiner Anleitung und den dort enthaltenen Links gefolgt.
Aber das Paket "snips-asr-injection" wird nicht gefunden, warum auch immer...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 21:53:16
Aber hast du mal geschaut ob die non-free Pakete in deiner sources.list mit aufgeführt sind?
Raspbian Stretch hat den Eintrag soweit ich weiß standardgemäß drin.
Aber eine normale Stretch Installation nicht.

libttspico-utils läuft unter den non-free Packages und wird ohne diesen Eintrag nicht gefunden.
Sah bei mir vom Fehler damals genauso aus wie bei dir.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 25 August 2018, 22:03:21
In der  /etc/apt/sources.list oder in der /etc/apt/sources.list.d/snips-list?
Denke mal, in der 2.
Mache ich und berichte.  8)


Kein Paket zu finden - reboot und neuer Versuch.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 22:07:33
Ne, in der ersten.

libttspico-utils ist kein Paket von Snips, sondern ein Standardpaket das bei Debian installiert werden kann.
Snips nutzt das eben und es muss daher als Voraussetzung installiert sein.

Es ist daher über die normalen Apt Sourcen zu finden und nicht über die Snips-Sourcen.
Das Problem, dass dieses Paket nicht installiert werden kann, ist daher auch erstmal unabhängig von Snips.

Aus irgendwelchen Lizenzgründen liegt es aber eben nicht in der main source von Debian, sondern in non-free
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 25 August 2018, 22:14:08
deb http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
deb-src http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free$


Ist die erste Liste.
Da ist non-free aber Standard drin.


Nachtrag: oder geht das prinzipiell nicht mit Stretch-Lite?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 22:33:03
Hm.. das Package war bei Raspbian wohl schonmal verschwunden:
https://github.com/google/aiyprojects-raspbian/issues/119

Ist die Frage ob das eben wieder der Fall ist.
Wenn ja könnte die dort beschriebene Lösung evtl. helfen:
Zitat
First, I installed libttspico-data using apt-get in Raspbian.

Then, I downloaded and installed the armhf versions of the packages libttspico0 and libttspico-utils from the Debian Stretch package index:
https://packages.debian.org/stretch/armhf/libttspico0/download
https://packages.debian.org/stretch/armhf/libttspico-utils/download
They must be installed in that order, because the first package is a dependency of the second one
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 August 2018, 23:53:03
Neues Update, zu finden wie immer auf Github.
Die FHEM App hat sich nicht geändert diesmal, es reicht also das Modul einzuspielen und FHEM neu zu starten.

Ihr könnt beim snipsMapping überall wo ihr ein cmd oder Reading angeben müsst nun auch device:cmd bzw. device:reading angeben.

Das Gerät kann sich so Infos aus anderen Geräten holen, bzw. set Kommandos in anderen Geräten ausführen.
Das war nötig um die Harmony Geräte bei mir zum Laufen zu bekommen. ;)

Man lege sich einen Dummy an wie z.B. SnipsRadioDummy (room = Snips, snipsName = Radio, snipsRoom z.B. Wohnzimmer) und gebe ihm folgendes mapping:

SetOnOff:cmdOn=Harmony01:activity Radio,cmdOff=Harmony01:off
GetOnOff:currentVal=Harmony01:activity,valueOn=Radio


Damit kann man dann die Radio Activity ein bzw. ausschalten, als auch über Snips "Ist das Radio eingeschaltet" abfragen.


Ich hatte auch kurzzeitig darüber nachgedacht, dass man mehrere Mappings in einem Gerät unterbringen kann,
damit man sich die Dummies spart.
Aber einige kommende Intents (wie z.B. MediaChannels) brauchen dann ja auch eigene Attribute pro Gerät um z.B. die unterstützten Channelnames anzugeben.

Ich glaube da fährt man auf Dauer mit den Dummies doch sauberer.

Doku auf Github ist noch nicht aktualisiert was diese Neuerung betrifft.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Wal am 26 August 2018, 09:55:42
Ich habe Snips jetzt mal auf einem X86, RPI3 und einem Odroid XU4 mit einem ReSpeaker Mic Array v2.0 installiert und getestet. Die CPU-Last von Snips-ASR geht nach gesprochenem Hotword, bei mir wie folgt hoch :
X86 <10%
RPI3 >90%
XU4 <50%
Ich habe auch bemerkt, das mit einem RPI3 ab und zu der Befehl länger als 3sec. braucht, um ausgeführt zu werden.
Obwohl Snips für RPI3 optimiert ist, denke ich das er zu schwach ist. Ich werde beim XU4 wegen der Größe bleiben, da ich mir ein Snips-Dot bauen möchte.
Ich mußte Snips wegen fehlender Pakete auch drei mal unterschiedlich installieren, es werden aber immer diese Pakete gebraucht:
lsb-release
apt-transport-https
ca-certificates
systemd
systemd-sysv
libttspico-utils
alsa-utils
dirmngr
mosquitto

snips-asr
snips-audio-server
snips-dialogue
snips-hotword
snips-nlu
snips-tts
snips-asr-injection

die Snips-Pakete werden je nach Hardware nicht immer bei einem "sudo apt-get install snips-platform-voice" mit installiert.

P.S. mit dem ReSpeaker Mic Array v2.0 habe ich eine Erfolgsrate über 95% ohne Hintergrundgeräusche und über 80% mit Hintergrundgeräusche(Fernseher).

Danke an Thyraz
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: shilbert am 26 August 2018, 11:03:50
Hallo zusammen,

Das funktioniert ja alles soweit gut für die Jalousien.

Problem 1)

Meine Fragen wie "Wie ist die Temperatur draussen ?" wird offenkunding mit Intent GetNumeric erkannt und läuft ins Leere -->"Da ist was schiefgegangen".

Die Frage "Temperatur draussen ?" wird mit Intent Status erkannt und läuft. Bei SnipsMapping habe ich daher drin

Status:response=Draussen sind es [Aussentemp:Temperatur] Grad.
GetNumeric:currentVal=Aussentemp:Temperatur

Das Device ist bei mir "Aussentemp" und hat folgende Readings
Zitat
Aussentemp  15.1   
Temperatur    15
state              Aussentemp 15.1

Kann ich auch über GetNumeric die Antwort wie bei Status erhalten ?

Problem 2)

Rasenmäher:

"Wie ist der Status vom Rasenmäher" funktioniert

"Was macht der Rasenmäher" funktioniert (nachvollziehbar) nicht.

Hier sind wir sicher an einem Punkt an dem in der FHEM App "Was macht" als Statusabfrage gewertet werden müsste. Dazu gibt es aber reichlich Fälle.

Wie ist hier die Lösung ? Eigene custom App anlegen und dort die entsprechenden Sätze unterbringen ?

Ich habe im Snips store die von mir geschriebene App "Robonect" hinterlegt und in meinen Assistenten eingebunden.

Wenn ich jetzt frage "Was macht der Rasenmäher?" prozessieren beide Apps die Spracheingabe und reagieren beide drauf.

Zitat10:55:05] [Asr] captured text "was macht der rasenmäher" in 2.0s
[10:55:05] [Asr] was asked to stop listening on site wohnzimmer
[10:55:05] [AudioServer] was asked to play a wav of 93.1 kB with id '0c889191-7bfe-4ad1-824e-a38d1c0eb76e' on site wohnzimmer
[10:55:06] [AudioServer] finished playing wav with id '0c889191-7bfe-4ad1-824e-a38d1c0eb76e'
[10:55:06] [Nlu] was asked to parse input "was macht der rasenmäher"
[10:55:06] [Nlu] detected intent shilbert:GetStatusMower with probability 1.000 for input "was macht der rasenmäher"
              Slots ->
                 Device -> Rasenmäher
[10:55:06] [Dialogue] New intent detected shilbert:GetStatusMower with probability 1.000
              Slots ->
                 Device -> Rasenmäher
[10:55:06] [Dialogue] was ask to end session with id 3f6775af-d293-4da9-b470-0157e5d4103a by saying 'Die Batterie von Ohnezahn ist 96% geladen. Der Rasenmäher ist im Modus zu Hause und parkt'
[10:55:06] [Tts] was asked to say "Die Batterie von Ohnezahn ist 96% geladen. Der Rasenmäher ist im Modus zu Hause und parkt"
[10:55:06] [Nlu] was asked to parse input "was macht der 'standardgerät'"
[10:55:06] [Nlu] detected intent Thyraz:Status with probability 0.306 for input "was macht der 'standardgerät'"
              Slots ->
                 Device -> Standardgerät
[10:55:06] [Dialogue] was ask to end session with id 3f6775af-d293-4da9-b470-0157e5d4103a by saying 'Status vom Rasenmäher ist parken. Der Batteriestand beträgt 96 Prozent.'
[10:55:06] [Tts] was asked to say "Status vom Rasenmäher ist parken. Der Batteriestand beträgt 96 Prozent."
[10:55:06] [AudioServer] was asked to play a wav of 222.9 kB with id '455a02d9-ee83-40a8-b4c4-cee33ed406ba' on site wohnzimmer
[10:55:07] [AudioServer] was asked to play a wav of 200.3 kB with id '73b23df3-8ed5-4858-a8e8-f336361125fe' on site wohnzimmer

Ich hatte auch schon das Problem, dass bei bestimmten Spracheingaben die korrespondierende App korrekt geantwort und die FHEM App damit nicht anfangen kann.

Beispiel: "Hey Snips. Stelle den Rasenmäher auf manuell".

--> Robonect App reagiert darauf. FHEM app spricht "Da ist etwas schief gegangen"

Zitat10:57:44] [Asr] was asked to stop listening on site wohnzimmer
[10:57:44] [AudioServer] was asked to play a wav of 93.1 kB with id 'f679e8f7-9a28-4cf8-8048-7bc279aca2ff' on site wohnzimmer
[10:57:45] [AudioServer] finished playing wav with id 'f679e8f7-9a28-4cf8-8048-7bc279aca2ff'
[10:57:45] [Nlu] was asked to parse input "unknownword auf manuell"
[10:57:45] [Nlu] detected intent shilbert:SetModeMower with probability 0.823 for input "unknownword auf manuell"
              Slots ->
                 Value -> manuell
[10:57:45] [Dialogue] New intent detected shilbert:SetModeMower with probability 0.823
              Slots ->
                 Value -> manuell
[10:57:45] [Nlu] was asked to parse input "unknownword auf manuell"
[10:57:45] [Nlu] detected intent shilbert:SetModeMower with probability 0.823 for input "unknownword auf manuell"
              Slots ->
                 Value -> manuell
[10:57:45] [Dialogue] was ask to end session with id fcc6b8a1-4304-4eae-90ef-0a9edd8eb305 by saying 'Da ist etwas schief gegangen.'
[10:57:46] [Tts] was asked to say "Da ist etwas schief gegangen."
[10:57:46] [AudioServer] was asked to play a wav of 68.5 kB with id '622ba707-fddf-4026-9d42-5a3640d62f13' on site wohnzimmer
[10:57:47] [Dialogue] was ask to end session with id fcc6b8a1-4304-4eae-90ef-0a9edd8eb305 by saying 'Ohnezahn ist jetzt im manuellen Modus'
[10:57:47] [Tts] was asked to say "Ohnezahn ist jetzt im manuellen Modus"
[10:57:47] [AudioServer] was asked to play a wav of 78.2 kB with id '7d9cce69-ed84-4293-a72f-dac817a9860f' on site wohnzimmer
[10:57:48] [AudioServer] finished playing wav with id '622ba707-fddf-4026-9d42-5a3640d62f13'
[10:57:48] [Tts] finished speaking with id 'a1eeba45-d492-4db5-b9f0-a64a2e019ba5'
[10:57:51] [AudioServer] finished playing wav with id '7d9cce69-ed84-4293-a72f-dac817a9860f'
[10:57:51] [Tts] finished speaking with id '118c629d-c6f1-45ce-bea2-66e316132ad5'

Auffällig ist, dass offenbar kein Intent processing in der FHEM app stattfindet aber FHEM dennoch "Da ist etwas schiefgegangen" spricht.

Irgendeine Idee wie man die Interaktion/Überschneidung bei Verwendung von verschiedenen Apps in einem Assistenten verhindern/lösen kann ?

Möglicherweise ist das ein Thema für Snips.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: shilbert am 26 August 2018, 11:21:03
Es scheint wohl eine intentNotRecognised topic zu geben bei snips. Ich überlege ob es nicht sinnvoll wäre wenn die FHEM app nicht einfach "still bleibt" wenn etwas nicht erkannt wird. Der WAF von "Da ist etwas schiefgegangen" ist in meinem Umfeld überschaubar :-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 26 August 2018, 11:52:24
Hat jemand eine Idee für die Anpassung der Snips-Lautstärke?
Der Befehl von der Console { system ('ssh remotecontrol@192.168.1.157 amixer -c0 sset \'PCM\' 11%')} funktioniert.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: shilbert am 26 August 2018, 12:41:05
"Was macht der Rasenmäher" wird von der FHEM app nicht als Statusabfrage interpretiert. Ich habe daher auf der Snips console eine FHEMcustom app angelegt und dort den GetStatus intent geforkt. Aus dem geforkten Intent habe ich alle Beispielsätze rausgeschmissen und nur den Beispielsatz "Was macht der Rasenmäher" reingeschrieben. Neuen Assistent runtergeladen und schwupps wird das korrekt erkannt.

Ich würde daraus schliessen, dass man über die custom App individuellere Sätze definieren kann und so die FHEM app erweitern kann ??

Es hat nicht funktioniert wenn man in dem geforkten Intent "SetOnOff"  "reinfahren und rausfahren" (für die Markise) hinzufügen will.

Eventuell wäre zu überlegen ob man das in die originale FHEM app mit reinnimmt. rein für aus und raus für ein ?


Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 26 August 2018, 13:10:56
Kann ich eigentlich an einem Gerät (z.B. Intel NUC) mehrere Mikros (PS3 EYE) anschließen? Wenn ja, wie?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: shilbert am 26 August 2018, 14:16:39
Noch ein Beispiel für 2 Apps und problematischer Interaktion

"Wie spät ist es" wird korrekt abgearbeitet aber FHEM app scheint sich auch mit dem intent zu beschäftigen und sagt dann "Da ist etwas schief gegangen". Kann die FHEM app erkennen, dass sie mit dem "wie spät ist es" nix anfangen kann und das dann "still ignorieren" :-) Ich kann Da ist etwas schief gegangen schon nicht mehr hören :-)

Zitat14:12:34] [Asr] captured text "wie spät ist es" in 2.0s
[14:12:34] [Asr] was asked to stop listening on site wohnzimmer
[14:12:34] [AudioServer] was asked to play a wav of 93.1 kB with id 'd051777a-f110-4799-84d1-98d69083567e' on site wohnzimmer
[14:12:36] [AudioServer] finished playing wav with id 'd051777a-f110-4799-84d1-98d69083567e'
[14:12:36] [Nlu] was asked to parse input "wie spät ist es"
[14:12:36] [Nlu] detected intent domi:currentTime with probability 1.000 for input "wie spät ist es"
[14:12:36] [Dialogue] New intent detected domi:currentTime with probability 1.000
[14:12:36] [Dialogue] was ask to end session with id 68dc2a94-4f48-4f35-9594-b160fc682988 by saying 'Gerade ist es 14 Uhr 12 .'
[14:12:36] [Tts] was asked to say "Gerade ist es 14 Uhr 12 ."
[14:12:36] [Nlu] was asked to parse input "wie spät ist es"
[14:12:36] [Nlu] detected intent domi:currentTime with probability 1.000 for input "wie spät ist es"
[14:12:36] [Dialogue] was ask to end session with id 68dc2a94-4f48-4f35-9594-b160fc682988 by saying 'Da ist etwas schief gegangen.'
[14:12:36] [Tts] was asked to say "Da ist etwas schief gegangen."
[14:12:36] [AudioServer] was asked to play a wav of 87.3 kB with id 'c937e3e0-1b74-4415-9fd7-f6af204b5456' on site wohnzimmer
[14:12:36] [AudioServer] was asked to play a wav of 68.5 kB with id 'a34cb5e3-7da0-4281-92da-790480a5bcf0' on site wohnzimmer
[14:12:39] [AudioServer] finished playing wav with id 'c937e3e0-1b74-4415-9fd7-f6af204b5456'
[14:12:39] [Tts] finished speaking with id 'd927434a-33ac-4285-abbd-1f862d818ad4'
[14:12:41] [AudioServer] finished playing wav with id 'a34cb5e3-7da0-4281-
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Wal am 26 August 2018, 17:44:17
Zitat von: shilbert am 26 August 2018, 14:16:39
Ich kann Da ist etwas schief gegangen schon nicht mehr hören :-)

Das kannst du in der 10_SNIPS.pm ändern, aus einem "Da ist etwas schief gegangen."  wird ein "".
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: shilbert am 26 August 2018, 18:02:52
Die Änderung hab ich zwischenzeitlich vorgenommen :-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 26 August 2018, 21:31:14
Zitat von: shilbert am 26 August 2018, 11:03:50
Problem 1)

Meine Fragen wie "Wie ist die Temperatur draussen ?" wird offenkunding mit Intent GetNumeric erkannt und läuft ins Leere -->"Da ist was schiefgegangen".

Die Frage "Temperatur draussen ?" wird mit Intent Status erkannt und läuft. Bei SnipsMapping habe ich daher drin

Status:response=Draussen sind es [Aussentemp:Temperatur] Grad.
GetNumeric:currentVal=Aussentemp:Temperatur

Das Device ist bei mir "Aussentemp" und hat folgende Readings   
Kann ich auch über GetNumeric die Antwort wie bei Status erhalten ?
Die Frage ist: Worüber kann/soll Snips "draußen" identifizieren?
Ist das der snipsRoom?
Wie lautet der snipsName?

Wenn man ein GetNumeric mit Type=Temperatur hat, kann man das Device weglassen bei der Frage.
Das Modul sucht dann im Raum nach einem passenden Mapping.

Ich hab z.B. ein Device mit snipsName Thermometer und snipsRoom Garten.
Da kann ich fragen: "Wie warm ist es im Garten" statt der Langversion "Wie ist die Temperatur vom Thermometer im Garten".

Da bei mir auch die Frage "Wie warm ist es Garten" klappt, sollte auch "Wie warm ist es draußen" klappen, wenn der snipsRoom "Draußen" heißt.

Zitat von: shilbert am 26 August 2018, 11:03:50
Rasenmäher:
"Wie ist der Status vom Rasenmäher" funktioniert

"Was macht der Rasenmäher" funktioniert (nachvollziehbar) nicht.

Der Status-Intent  hat als einziger Intent übrigens einen Beispielsatz nur aus dem Device-Slot bestehend.
"Hey Snips, Rasenmäher" sollte also auch den Status liefern.

Was macht ...  ist wahrscheinlich nicht die gängigste Art nach dem Status zu fragen. ;)
Hab es gerade mit Siri und Alexa probiert und die verstehen mich auch nicht wenn ich so versuche einen Gerätestatus abzufragen.
Bin mir daher jetzt nicht sicher ob das wirklich als Standard-Beispielsatz in den Status Intent gehört...

Zitat von: shilbert am 26 August 2018, 12:41:05
Ich habe daher auf der Snips console eine FHEMcustom app angelegt und dort den GetStatus intent geforkt. Aus dem geforkten Intent habe ich alle Beispielsätze rausgeschmissen und nur den Beispielsatz "Was macht der Rasenmäher" reingeschrieben. Neuen Assistent runtergeladen und schwupps wird das korrekt erkannt.
Aber damit ist das für dich wahrscheinlich auch zu verkraften.
Gute Idee übrigens. :)

Zitat von: shilbert am 26 August 2018, 12:41:05
Eventuell wäre zu überlegen ob man das in die originale FHEM app mit reinnimmt. rein für aus und raus für ein ?

rein/raus/einfahren/ausfahren/reinfahren/rausfahren ist ab sofort im SetOnOff,
eingefahren/ausgefahren im GetOnOff eingetragen.

Zitat von: shilbert am 26 August 2018, 14:16:39
Noch ein Beispiel für 2 Apps und problematischer Interaktion

Schau ich mir gleich mal an.
Wäre natürlich logischer, wenn das FHEM-Modul nur reagiert, wenn es ein Standard-Intent oder ein bekannter Custom-Intent ist.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 26 August 2018, 21:41:31
Zitat von: bennebartsch am 26 August 2018, 13:10:56
Kann ich eigentlich an einem Gerät (z.B. Intel NUC) mehrere Mikros (PS3 EYE) anschließen? Wenn ja, wie?

Technisch ja, Snips unterstützt aber glaub nur ein Micro pro Device/Satellite.
Klar, man könnte auf dem NUC in VMs mehrere Satellites parallel laufen lassen und jeweils ein USB-Device an eine VM weiterleiten...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 26 August 2018, 21:56:45
Zitat von: shilbert am 26 August 2018, 14:16:39
Noch ein Beispiel für 2 Apps und problematischer Interaktion

"Wie spät ist es" wird korrekt abgearbeitet aber FHEM app scheint sich auch mit dem intent zu beschäftigen und sagt dann "Da ist etwas schief gegangen". Kann die FHEM app erkennen, dass sie mit dem "wie spät ist es" nix anfangen kann und das dann "still ignorieren" :-) Ich kann Da ist etwas schief gegangen schon nicht mehr hören :-)

Ok, neue Version auf Github.

Für unbekannte Intents sollte keine Antwort ausgegeben und auch kein endSession geschickt werden.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 26 August 2018, 22:55:18
Zitat von: Thyraz am 26 August 2018, 21:41:31
Technisch ja, Snips unterstützt aber glaub nur ein Micro pro Device/Satellite.
Klar, man könnte auf dem NUC in VMs mehrere Satellites parallel laufen lassen und jeweils ein USB-Device an eine VM weiterleiten...

Schade, klingt nach einer unschönen Lösung... Meinst du man könnte per pulseaudio etc die beiden Mikros vereinen und dann an SNIPS weitergeben?
Für die, die auch gefühlt jeden Tag das Modul updaten:

#!/bin/bash
git pull
sudo cp FHEM/10_SNIPS.pm /opt/fhem/FHEM/
sudo chown fhem:dialout /opt/fhem/FHEM/10_SNIPS.pm
sudo service fhem restart
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 26 August 2018, 23:00:18
Wäre es evtl. möglich für On-Off Devices noch einen Toggle zu integrieren?
Quasi so:
Licht Badezimmer ein -> on
Licht Badezimmer aus -> off
Licht Badezimmer -> toggle

Wäre super!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 26 August 2018, 23:02:04
Ich hoffe, dass wir dem Initiator von Snips-FHEM nicht zu oft nerven bzw. anmotzen.
In so kurzer Zeit so viel auf die Beine zu stellen ist schon bemerkenswert.
Vielleicht sollten die Leute , welche Snips nach der Uhrzeit fragen mal Alexa nach dem Status vom Rasenmäher fragen.... "Tut mir leid ich kann kein Gerät Gerät Rasenmäher finden" etc.... Die nette Dame weiß gar nichts was FHEM betrifft. Da ist Snips-FHEM , mit richtiger Einrichtung, meilenweit voraus.
Ich hoffe der Entwickler "T" hat noch genug Geduld und Power. Ich freue mich jedenfalls über jede Neuerung. Und ganz objektiv vergleicht mal die Möglichkeiten mit Alexa und Google...;-)

 
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 26 August 2018, 23:05:09
Und nochmal ein kleines Update, bevor es in die Kiste geht.

Ihr könnt mit attr <snipsDevice> errorResponse Oh oh was ist da passiert den Fehlertext der als Antwort ausgegeben wird anpassen.
Wenn ihr das Attribut auf "disabled" setzt, wird im Fehlerfall kein Text ausgegeben.

Damit erspart ihr euch das Editieren der Strings bei jeder neuen Version.  :P

edit: Keine Angst kud, so schnell lass ich mich nicht nerven. ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 26 August 2018, 23:15:39
Zitat von: bennebartsch am 26 August 2018, 22:55:18
Schade, klingt nach einer unschönen Lösung... Meinst du man könnte per pulseaudio etc die beiden Mikros vereinen und dann an SNIPS weitergeben?

Muss ich leider passen, hab pulseaudio selbst noch nie eingesetzt.

Evtl. mal in der Snips-Community fragen ob sich jemand schon einmal an sowas (mehrere Micros in einem Device) versucht hat,
oder ob es evtl. doch schon von Haus aus irgendwie mit Snips möglich ist.

Zitat von: bennebartsch am 26 August 2018, 23:00:18
Wäre es evtl. möglich für On-Off Devices noch einen Toggle zu integrieren?
Quasi so:
Licht Badezimmer ein -> on
Licht Badezimmer aus -> off
Licht Badezimmer -> toggle

Wäre super!

Nur den Gerätenamen zu sagen ruft schon den Status Intent auf.
Es müsste also über Wörter wie "toggle" oder Ähnliches im Satz getriggert werden.

Ist aber sicher mit irgendwelchen Beispielsätzen + etwas Programmieraufwand im Modul möglich sowas umzusetzen.
Da ich mir das selbst nicht so recht vorstellen kann: Nutzt man das wirklich? Also ein "Hey Snips, toggle Deckenlampe".

Normal will man ja was Bestimmtes erreichen und sagt dann eher ein/aus anstatt zu überlegen ob ich jetzt einfach den anderen Zustand will. ;)
Bei der Automatisierung von irgendwelchen Aufgaben mag ein Toggle ja recht sinnvoll sein,
bei einem Sprachbefehl kommt mir das eher schwer von den Lippen.

Sprich: Wenn ihr mich vom Sinn überzeugt setze ich das gern auf die Todo Liste.  :P
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 26 August 2018, 23:24:00
Zitat von: Thyraz am 26 August 2018, 23:15:39
Muss ich leider passen, hab pulseaudio selbst noch nie eingesetzt.

Evtl. mal in der Snips-Community fragen ob sich jemand schon einmal an sowas (mehrere Micros in einem Device) versucht hat,
oder ob es evtl. doch schon von Haus aus irgendwie mit Snips möglich ist.

Nur den Gerätenamen zu sagen ruft schon den Status Intent auf.
Es müsste also über Wörter wie "toggle" oder Ähnliches im Satz getriggert werden.

Ist aber sicher mit irgendwelchen Beispielsätzen + etwas Programmieraufwand im Modul möglich sowas umzusetzen.
Da ich mir das selbst nicht so recht vorstellen kann: Nutzt man das wirklich? Also ein "Hey Snips, toggle Deckenlampe".

Normal will man ja was Bestimmtes erreichen und sagt dann eher ein/aus anstatt zu überlegen ob ich jetzt einfach den anderen Zustand will. ;)
Bei der Automatisierung von irgendwelchen Aufgaben mag ein Toggle ja recht sinnvoll sein,
bei einem Sprachbefehl kommt mir das eher schwer von den Lippen.

Sprich: Wenn ihr mich vom Sinn überzeugt setze ich das gern auf die Todo Liste.  :P

Ich werde die Snips Community mal dazu befragen, trotzdem Danke!
Also bis vorgestern hatte ich noch 2 Google Home Minis (dank dir endlich nicht mehr!) und ich habe immer gerne einfach nur "Licht Badezimmer" oder "Licht Küche" gesagt um es zu "togglen". Ist natürlich Geschmackssache... Deine Entscheidung, du baust ja dieses wunderbare Modul!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 27 August 2018, 08:16:41
Ok, damit kann ich das Anliegen nachvollziehen. :)

Es geht also weniger darum einen Befehl zum togglen zu haben,
sondern eher darum ein noch kürzeren Sprachbefehl zu haben (und bei Sprachbefehlen ist auf Dauer kürzer immer besser. ;))

Wie gesagt, belegt die Ansage nur vom Devicenamen (oder Raum + Device) eigentlich der Status Intent.
Klar könnte man nun sagen, wenn das Gerät kein Status Mapping hat, dann versuche es erstmal mit SetOnOff.

Das Problem liegt hier aber in der Funktionsweise von Snips:
Es hat kein Wissen über dein Smarthome, sondern entscheidet allein über den gesprochenen Satz (mithilfe des NLU Moduls) welcher Intent gemeint ist.

Ich müsste also bevor ich bei einem einkommenden Befehl zu dem Code für den entsprechenden Intent springe, erstmal eine komplizierte Sonderbehandlung einführen.
Diese müsste prüfen ob im Falle eines Status-Intents wirklich nur das Device (und nicht etwa "Status Gerät") genannt wurde, kein Status Mapping existiert und dafür SetOnOff konfiguriert ist.
Dann den Intent von Status auf SetOnOff umbiegen.

Das ist ne Menge Extrawurst nur um ein kurzes Wort wie "an/aus" einzusparen. :P

Zusätzlich wird es für den User schwieriger zu verstehen wie sein Sprachassistent denn nun tickt.
Mal antwortet er mit dem aktuellen Status, beim nächsten Gerät schaltet er plötzlich ein/aus.
Kann eigentlich nur der verstehen, der die Diskussion hier mitgelesen hat. ;)

Ich würde aktuell eher dazu neigen den Status Intent so auszubauen, dass er versucht auch antworten zu können wenn kein Status Mapping erstellt wurde.
Man könnte das Mapping dann erstmal nach GetOnOff durchsuchen und wenn es das auch nicht gibt nach GetNumeric.
Als letzter Fallback evtl. sogar den State vom Gerät nutzen.

Dann eine entsprechende Rückmeldung wie "Deckenlampe ist eingeschaltet".

Es hat noch einen weiteren Grund warum mir ein lesender Befehl bei der Ansage nur vom Gerät lieber ist als ein setzender:
Wenn Snips nicht den ganzen Satz versteht ist es mir schon passiert, dass eben der Status Intent aufgerufen wurde.
In solch einem Fehlerfall ist es mir lieber, wenn ich nur die Ansage über den Status bekomme, als dass das Gerät ungewollt geschaltet wird.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Wal am 27 August 2018, 12:56:47
Schön wäre ein:

"Licht ein"
"Wo?"
"Wohnzimmer"
o.
"Temperatur"
"Wo?"
"Draussen"

Auf Rückmeldungen könnte ich verzichten es genügt ein OK, es sei denn ich wünsche ein Status, wie im zweiten Beispiel.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 27 August 2018, 13:52:43
Hi Wal :)

das dürfte auch wieder eine Geschmacksfrage sein.

Ich habe das Konzept bisher so umgesetzt, dass Snips beim Nicht-Nennung eines Raumes immer davon ausgeht,
dass der aktuelle Raum gemeint ist.
Mir hat an Snips eben gerade gefallen, dass es Multiroom-tauglich ist.

Mir erschien es wichtiger im aktuellen Raum kurz und knackig das Licht mit "Licht an" anschalten zu können.
Zitat
"Licht ein"
"Wo?"
"Wohnzimmer"
dauert durch das hin und her IMO weit länger als einfach "Licht im Wohnzimmer einschalten" zu sagen.
Da bin ich schneller zum Lichtschalter gelaufen, auch wenn das nicht als smarte Lösung gelten mag. ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 27 August 2018, 15:45:37
Danke für deine ausführliche Antwort. Jetzt verstehe ich wo das Problem liegt, ist also mit SNIPS nicht ganz so leicht umzusetzen. Ist ja auch kein Problem, damit kann ich leben!

Ich weiß ich nerve dich vermutlich schon, aber was hälst du davon Farben zu integrieren (RGB, RGBW)? So in etwa:
Schalte LED auf Blau -> set LED rgb 0000FF
Schalte LED auf Rot   -> set LED rgb FF0000
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Wal am 27 August 2018, 16:34:07
Zitat von: Thyraz am 27 August 2018, 13:52:43
Hi Wal :)

das dürfte auch wieder eine Geschmacksfrage sein.

Ich habe das Konzept bisher so umgesetzt, dass Snips beim Nicht-Nennung eines Raumes immer davon ausgeht,
dass der aktuelle Raum gemeint ist.
Mir hat an Snips eben gerade gefallen, dass es Multiroom-tauglich ist.

Mir erschien es wichtiger im aktuellen Raum kurz und knackig das Licht mit "Licht an" anschalten zu können.dauert durch das hin und her IMO weit länger als einfach "Licht im Wohnzimmer einschalten" zu sagen.
Da bin ich schneller zum Lichtschalter gelaufen, auch wenn das nicht als smarte Lösung gelten mag. ;)

Da hast du ja Recht. Bin ja froh, das es einer in die Hand genommen hat. Bei den Cloud-Lösungen stellen sich mir die Nackenhaare hoch. ::)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 27 August 2018, 16:55:42
Zitat von: bennebartsch am 27 August 2018, 15:45:37
... damit kann ich leben!

...aber was hälst du davon Farben zu integrieren (RGB, RGBW)?

Freut mich wenn es nachvollziehbar und zu ertragen ist.
Nur weil ich das Modul schreibe, soll das hier ja keine Friss oder Stirb Diskussion werden. ;)

Im Gegenteil, gute Ideen sind immer willkommen.


Daher gleich zum Thema Farben:
(Landet auf der Todo-Liste aber etwas weiter hinten, da jetzt erstmal die Mediengeschichten kommen.)

Wie läuft das denn bei anderen Assistenten wie Siri/Alexa?
Gibt es ein paar definierte Farbtöne die man eben nutzen kann?

Bin gerade am überlegen wie man das am Besten umsetzt.
Man könnte auch versuchen das Ganze etwas flexibler zu gestalten als bei der Konkurrenz.
Nehmen wir an es gäbe ein extra Attribut snipsColors das man einer Lampe mit Farbsteuerung zuweisen kann:

weiß=ct 3000
warmweiß=ct 2700
rot=rgb ff0000
blau=rgb 0000ff
lilablassblau=rgb b7b4ff


Vorteil der Lösung:
Ihr könnt beliebige Farbnamen selbst definieren, deren Bezeichnungen dann wieder per ASR Inject in Snips bekannt gemacht werden.
Dadurch, dass man hinter dem Gleichzeichen den gesamten set Befehl angeben würde, könnte man auch über verschiedene Kommandos Farben setzen.
Gerade bei Hue Lampen sind schöne Weißwerte über RGB ja nur schwer zu erreichen. CT bietet sich hier mehr an.

Oder ist das Overkill zum Einrichten und eine einfache Zeile im Attribut snipsMapping mit ein paar Grundfarben gefällt euch besser:

Color:cmd=rgb,valWhite=ffffff,valRed=ff0000,valGreen=00ff00,...

Hier könnte es dafür im Modul schon vorbelegte Farbwerte für diverse Standardfarben geben, so dass man nur die Farben im Mapping überschreiben muss, welche man anpassen will.

Verschiedene Ansteuerung wie CT oder RGB gäbe es halt nicht (Weißtöne kann man ja aber auch z.B. über den SetNumeric Intent steuern, muss halt dann als Zahl in Kelvin erfolgen), eigene Farbnamen erfinden auch nicht. ;)

Meinungen dazu?

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 27 August 2018, 19:14:12
Zitat von: Thyraz am 27 August 2018, 16:55:42
Freut mich wenn es nachvollziehbar und zu ertragen ist.
Nur weil ich das Modul schreibe, soll das hier ja keine Friss oder Stirb Diskussion werden. ;)

Im Gegenteil, gute Ideen sind immer willkommen.


Daher gleich zum Thema Farben:
(Landet auf der Todo-Liste aber etwas weiter hinten, da jetzt erstmal die Mediengeschichten kommen.)

Wie läuft das denn bei anderen Assistenten wie Siri/Alexa?
Gibt es ein paar definierte Farbtöne die man eben nutzen kann?

Bin gerade am überlegen wie man das am Besten umsetzt.
Man könnte auch versuchen das Ganze etwas flexibler zu gestalten als bei der Konkurrenz.
Nehmen wir an es gäbe ein extra Attribut snipsColors das man einer Lampe mit Farbsteuerung zuweisen kann:

weiß=ct 3000
warmweiß=ct 2700
rot=rgb ff0000
blau=rgb 0000ff
lilablassblau=rgb b7b4ff


Vorteil der Lösung:
Ihr könnt beliebige Farbnamen selbst definieren, deren Bezeichnungen dann wieder per ASR Inject in Snips bekannt gemacht werden.
Dadurch, dass man hinter dem Gleichzeichen den gesamten set Befehl angeben würde, könnte man auch über verschiedene Kommandos Farben setzen.
Gerade bei Hue Lampen sind schöne Weißwerte über RGB ja nur schwer zu erreichen. CT bietet sich hier mehr an.

Oder ist das Overkill zum Einrichten und eine einfache Zeile im Attribut snipsMapping mit ein paar Grundfarben gefällt euch besser:

Color:cmd=rgb,valWhite=ffffff,valRed=ff0000,valGreen=00ff00,...

Hier könnte es dafür im Modul schon vorbelegte Farbwerte für diverse Standardfarben geben, so dass man nur die Farben im Mapping überschreiben muss, welche man anpassen will.

Verschiedene Ansteuerung wie CT oder RGB gäbe es halt nicht (Weißtöne kann man ja aber auch z.B. über den SetNumeric Intent steuern, muss halt dann als Zahl in Kelvin erfolgen), eigene Farbnamen erfinden auch nicht. ;)

Meinungen dazu?

Also ich finde das ist kein Overkill. Die 2. Lösung ist etwas zu unflexibel bei Lampen die nicht nur RGB in der Setlist haben. Ich bin für die 1. Lösung, diese sollte allerdings "Standartwerte" haben (z.B. valBlau = 0000FF), sodass man nur bei einigen Lampen die Farbtöne/Kommandos anpassen muss.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: shilbert am 28 August 2018, 00:11:53
Danke für das coole Modul. Wird immer besser. :)

Nur falls jemand von euch Problem mit "clipping" bei der Sprachausgabe hat ... Bei mir war die Sprachausgabe zu laut und hat den Lautsprecher am Google AIY Voice Kit scheppern lassen.

Es gibt die Möglichkeit, die Lautstärke für TTS getrennt anzupassen.

Zitat[snips-tts]
## Choose one tts provider (defaults to picotts)
# provider = "picotts"
# provider = "makerstts"
provider = "customtts"
## customtts specific configuration (here configured to use picotts)
#customtts = { command = ["pico2wave", "-w", "%%OUTPUT_FILE%%", "-l", "%%LANG%%", "%%TEXT%%"] }
customtts = { command = ["picospeaker", "-o", "%%OUTPUT_FILE%%", "-l", "%%LANG%%", "-v", "0.5", "%%TEXT%%"] }

https://github.com/the-kyle/picospeaker/blob/master/picospeaker (https://github.com/the-kyle/picospeaker/blob/master/picospeaker) herunterladen und installieren. Details stehen in der Datei selbst.

Damit %%LANG%% funktioniert, braucht ihr noch einen Patch

Zitat--- picospeaker.bak     2018-08-27 22:03:05.000000000 +0200
+++ picospeaker 2018-08-27 23:49:35.289440981 +0200
@@ -59,8 +59,16 @@
       exit(0)
     elif ( argv[opt] == '-l' ) or ( argv[opt] == '--language' ):
       languages = ('en-US', 'en-GB', 'de-DE', 'es-ES', 'fr-FR', 'it-IT')
+      lang_map = {
+       'en': 'en-US',
+       'de': 'de-DE',
+       'es': 'es-ES',
+       'fr': 'fr-FR',
+       'it': 'it-IT'}
       if ( argv[opt+1] in languages ):
         settings['language'] = argv[opt+1]
+      elif ( argv[opt+1] in lang_map.keys() ):
+       settings['language'] = lang_map[argv[opt+1]]
       else:
         stderr.write('Language ' + argv[opt+1] + ' is currently not available.\n')
         stderr.write('Available languages are ' + ', '.join(languages[:-1]) + ' and ' + languages[-1] + '.\n')
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: shilbert am 28 August 2018, 00:16:55
Hi,

Du hast set <snipsDevice> say Dies ist ein Test implementiert. Kann man da ggf. noch den Namen eines Satelliten mitgeben ? Sonst kommt das vermutlich auf dem zentralen Snips-Device raus und dort ist kein Lautsprecher angeschlossen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 28 August 2018, 11:02:37
So, Alles auf 0 und neu hochgezogen.  8)
Jetzt hänge ich an der Zuordnung.
Könnte mal jemand einen Screenshot anhängen, wo ersichtlich ist, was z.B. in snipsIntents stehen muß?

Oder eine Beispielkonfiguration, nicht das aus dem GitHub, das bringt mich nicht weiter.
Stelle mich mal wieder schön blöd an, die grauen Zellen lassen langsam nach.  :-[
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 28 August 2018, 11:08:44
Es muss nur SnipsRoom (Wohnzimmer), SnipsName(Thermometer) und SnipsMapping(GetNumeric:currentVal=temperature,type=Temperatur
GetNumeric:currentVal=humidity,type=Luftfeuchtigkeit) gefüllt sein.
SnipsIntent benutze ich zZ. noch gar nicht.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 28 August 2018, 11:28:01
OK, Danke.
Habe hier
attr WH1080 snipsMapping GetNumeric:currentVal=temperature,part=1
attr WH1080 snipsName Temperatur
attr WH1080 snipsRoom Wetter


set Snips modelupdate durchgeführt.

"Hey Snips sage Wetter Temperatur"

Leider bekomme ich
lastIntentPayload

{"Type":"Temperatur","input":"temperatur","intent":"GetNumeric","probability":"0.936861","sessionId":"e2728130-56c5-4ede-acab-bc8682128a96","siteId":"default","type":"voice"}


nur "Es ist etwas schiefgegangen" zurück.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 28 August 2018, 11:30:05
Zitat von: shilbert am 28 August 2018, 00:16:55
Du hast set <snipsDevice> say Dies ist ein Test implementiert. Kann man da ggf. noch den Namen eines Satelliten mitgeben ?

Stimmt, daran hab ich damals gar nicht gedacht.
Da wird immer siteId "default" übertragen.

Vorschläge für die Syntax?
set <snipsDevice> say siteId="schlafzimmer" text="bla bla"
So evtl?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 28 August 2018, 11:44:44
Klingt richtig gut.
Kurze Frage zu "say".
In einem Notify lasse ich Snips sprechen my $snipsantwort = "Habe die Lautstärke auf $lautstaerkewert gestellt."; fhem("set Snips say $snipsantwort");
Snips sagt auch brav: "Habe die Lautstärke auf 80 gestellt.".."Eins"

Ist das der voiceResponse Wert  "1" ? Und warum wird dieser ausgesprochen?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 28 August 2018, 12:10:24
Sehr gute Frage.

Habe "say" schon länger nicht mehr genutzt. Sehe im Code gerade nicht woher das kommen sollte.
Werde ich heute Abend mal testen.

Das Reading voiceResponse hat bei dir aber den Wert "1"?
Das sollte eigentlich die letzte Antwort sein, die Snips ausgegeben hat.

Dazu muss aber eigentlich vorher ein Intent von Snips reinkommen.

Falls das bei mir nicht passiert, brauch ich evtl. mal einen Mitschnitt vom MQTT und vom FHEM Log mit verbose 5 im Snips Modul...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 28 August 2018, 12:20:40
Also das Ganze ist eine Quick und Dirty Lösung zur Umstellung der Lautstärke. Hier ist das "Gesamtkunstwerk".
Snips:.*Lautstärke.* {
my $stringzeile= ReadingsVal("Snips","lastIntentPayload",0) ;
my $startpos = index($stringzeile,"Value") ;
my $lautstaerkewert = substr($stringzeile,$startpos + 8,2);
my $lautprozent = "$lautstaerkewert%";
fhem("set SnipsVolume $lautstaerkewert");
system ("ssh remotecontrol\@192.168.1.157 amixer -c0 sset \'PCM\' $lautprozent");
my $snipsantwort = "Habe die Lautstärke auf $lautstaerkewert gestellt.";
fhem("set Snips say $snipsantwort");
}


Funktioniert...bis auf die "Eins"
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 28 August 2018, 12:33:53
Zitat von: Neuhier am 28 August 2018, 11:28:01
OK, Danke.
Habe hier
attr WH1080 snipsMapping GetNumeric:currentVal=temperature,part=1
attr WH1080 snipsName Temperatur
attr WH1080 snipsRoom Wetter


set Snips modelupdate durchgeführt.

"Hey Snips sage Wetter Temperatur"

Leider bekomme ich
lastIntentPayload

{"Type":"Temperatur","input":"temperatur","intent":"GetNumeric","probability":"0.936861","sessionId":"e2728130-56c5-4ede-acab-bc8682128a96","siteId":"default","type":"voice"}


nur "Es ist etwas schiefgegangen" zurück.

Mal der Reihe nach:

Temperatur ist kein guter Name für ein Gerät, Wetter evtl. auch nicht optimal für eine Ortsbezeichnung.
Erstens würde man das einen Menschen auch nicht so fragen: "Wie warm ist die Temperatur", oder "Wie ist die Temperatur von Temperatur im Wetter"
Zweitens ist Temperatur ein reserviertes Wort vom GetNumeric Intent um den Typ des zu lesenden Wertes zu bestimmen. Siehe hier unter GetNumeric -> Option type.
https://github.com/Thyraz/Snips-Fhem/blob/master/README.md#ger%C3%A4te-in-fhem-f%C3%BCr-snips-sichtbar-machen
Damit dürftest du Snips ziemlich verwirren. ;)

Ich würde daher Folgendes Vorschlagen (ich gehe durch die Bezeichnung davon aus, dass "Wetter" kein Innentemperaturfühler ist):

attr WH1080 snipsName Thermometer
attr WH1080 snipsRoom Garten

Statt "Garten" wäre evtl. auch "Draußen" eine Option.

Das Mapping ist auch sehr minimalistisch.
Wenn du bei GetNumeric keinen Type angibst, weiß Snips nicht um was für eine Art von Wert es sich handelt.
Du kannst dann manche bequemeren Abfragen nicht verwenden.

Nehmen wir an du würdest dein bisheriges Mapping weiterverwenden, dann könntest du den Wert so abfragen:
Wie ist die Temperatur vom Thermometer im Garten oder Wie ist die Temperatur vom Thermometer draußen

Eine Abfrage der Temperatur ohne explizite Nennung des snipsNames bekommt das Modul nicht hin,
da es kein GetNumeric Mapping im passenden snipsRoom vom type Temperatur findet.
Erweiterst du das Mapping so:

attr WH1080 snipsMapping GetNumeric:currentVal=temperature,part=1,type=Temperatur

erlaubt dir Snips auch solche Fragen:
Temperatur Garten bzw. Temperatur draußen
Wie warm ist es im Garten
Wie ist die Temperatur im Garten

Das Gerät mit dem snipsName Thermometer findet das Modul dann selbstständig über das Mapping und den passenden snipsRoom.

Du kannst so auch mehrere Geräte mit dem snipsName "Thermometer" in verschiedenen snipsRooms haben.
Steht in dem Raum in dem die angesprochene Snips-Installation steht auch ein Thermometer, kann man die Fragen für dieses Thermometer sogar noch verkürzen:
Wie warm ist es
Temperatur

Hoffe das bringt etwas Licht ins Dunkel...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 28 August 2018, 12:38:33
Zitat von: kud am 28 August 2018, 12:20:40
Also das Ganze ist eine Quick und Dirty Lösung zur Umstellung der Lautstärke. Hier ist das "Gesamtkunstwerk".
...
Funktioniert...bis auf die "Eins"

Wie sieht denn der lastIntentPayload aus?
Bzw. was sagst du um die Lautstärke umzustellen?

Evtl. reagiert das Modul da irgendwie drauf und gibt eine 1 als Antwort zurück.
(Warum auch immer :P)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 28 August 2018, 12:57:40
@Thyraz: Wie wäre es, für die einzelnen Snips Devices eigene Geräte zu erstellen?
Nutzt du oder kennst du snips Web Admin? Da werden automatisch die snips devices erstellt und man kann per drop-down ein device auswählen und z.B. Services starten/stoppen etc.
Vielleicht kannst du ja auch im Modul analog per autocreate für jedes Snips Device ein neues Gerät erstellen? Das würde vermutlich das Multiroom-Thema deutlich einfacher machen. Das heißt die Textausgabe, das Stummschalten etc. kann ich direkt bei den einzelnen Devices und muss nicht immer über das zentrale Snips-Device gehen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 28 August 2018, 13:10:47
@Neuhier:
falls es dir eher um eine Art Wettervorhersage geht, könnte man das auch über den Status Intent machen, da es einen richtigen Wetter Intent zur Zeit nicht gibt.

Hier kommt einem Zugute, dass die reine Nennung des Gerätenamens auch den Status Intent triggert.
Gibst du einem Gerät also den snipsName "Wettervorhersage" oder "Wetterbericht", kannst du durch Hey Snips, Wettervorhersage den Response Text des Status Intent ausgeben lassen.

Hier kann man ja im Format [Device:Reading] Werte in den frei wählbaren Text der ausgegeben wird einfügen.
Damit lässt sich notfalls auch eine komplexere Ansage basteln.

Wenn man den Intent noch schöner ansprechen will als nur "Wettervorhersage", bleibt im Moment nur noch ein Custom Intent.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 28 August 2018, 13:47:33
Zitat von: jowe am 28 August 2018, 12:57:40
@Thyraz: Wie wäre es, für die einzelnen Snips Devices eigene Geräte zu erstellen?

Ja, für das say und ein paar andere Dinge würde das sicher schon Sinn machen.

Probleme die ich sehe:
- Wir sind mit Snips schon ein Client Modul von 00_MQTT.pm
Keine Ahnung ob das Konzept des zweistufigen Modells in FHEM noch weiter getrieben werden kann für eine dritte Ebene

- Ich hab mir das noch nie angeschaut und habe noch keine Ahnung wie das genau umzusetzen ist.  :P
Als Anfänger was die Programmierung von FHEM Modulen angeht, weiß ich nicht ob ich mir das momentan ans Bein binden will. ;)
Zumindest im Moment noch würde ich die Zeit lieber in neue Features stecken.
Ich notiere mir das mal für ruhigere Tage. Das wird sofern möglich sicher einiges an Einarbeitung erfordern.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 28 August 2018, 13:53:23
Zitat von: Thyraz am 28 August 2018, 12:38:33
Wie sieht denn der lastIntentPayload aus?
Bzw. was sagst du um die Lautstärke umzustellen?
Hier der Payload:
{"Type":"Lautstärke","Value":"90","input":"lautstärke auf neunzig","intent":"SetNumeric","probability":"0.6616878","sessionId":"1771ec5c-2028-4f53-9f9f-2525b8e823ca","siteId":"default","type":"voice"}

Die Spracheingabe war in diesen Fall "Stelle die Lautstärke auf 90". Das Gleiche funktioniert auch bei "Stelle die Lautstärke auf 90%".
In beiden Fällen ist voiceResponse = 1
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 28 August 2018, 14:39:45
Ja, das ist ehrlich gesagt auch eher "nice to have". Im Prinzip funktioniert ja jetzt schon alles was ich brauche. Mit den customIntents lässt sich auch schon eine Menge anstellen.
Nur das Thema hotword toggleOff funktioniert bei mir leider nicht. Ich kann zwar mqtt Befehle an Snips absetzen, aber dieser Befehl hat keinerlei Auswirkungen auf die Hotword-Erkennung (bei anderen mqtt Befehlen an Snips funktioniert es). Ich behelfe mir gerade damit, per snips-web-admin den Hotword service zu stoppen.
Zum gestrigen Thema mit den Lichtfarben:
Ich habe Lightscenes-Devices für alle Lampen und alle Räume mit einheitlichen Namen erstellt. Also z.B. LS_LAMPENNAME  und LS_RAUMNAME. Dort habe ich einheitlich benannte scenes definiert, z.B. blau. Wenn ich jetzt per customIntent für einen Raum oder ein Device eine Farbe nenne, setzt mir mein Script das ganze um, ungefähr so: set LS_[Device] scene [intent]. Also z.B. set LS_Wohnzimmer scene blau
Das ist zwar eine weiter Abhängigkeit zu einem anderen Modul, aber würde dir meiner Meinung nach einigen Aufwand bei deinem Modul sparen. Das funktioniert mit sehr wenig Aufwand bei mir ziemlich gut.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 28 August 2018, 15:08:31
Zitat von: kud am 28 August 2018, 13:53:23
Hier der Payload:
{"Type":"Lautstärke","Value":"90","input":"lautstärke auf neunzig","intent":"SetNumeric","probability":"0.6616878","sessionId":"1771ec5c-2028-4f53-9f9f-2525b8e823ca","siteId":"default","type":"voice"}

Die Spracheingabe war in diesen Fall "Stelle die Lautstärke auf 90". Das Gleiche funktioniert auch bei "Stelle die Lautstärke auf 90%".
In beiden Fällen ist voiceResponse = 1

Ok, damit kommt Licht ins Dunkel:

Du hast versucht das Attribut errorResponse auf einen Leerstring zu setzen, was FHEM dann leider automatisch mit einer 1 befüllt.
Ab jetzt ist deine Standard-Fehlerausgabe "1". :P

Wenn du die deaktivieren willst, muss du daher das Attribut errorResponse auf den Wert disabled setzen.


Zum Thema an sich: Ich würde auch nicht versuchen den Intent so fies fehlschlagen zu lassen um dann den responseString selbst auszuwerten.
Ich weiß nichtmal ob die Parameter darin wirklich immer in der gleichen Reihenfolge kommen.

Außerdem versucht Snips bei dem Satz ja die Lautstärke im aktuellen Raum zu regeln (Von einem Audio-Gerät, nicht von Snips selbst).
Sprich, wenn du irgendwann deine Anlage in Snips einbindest, wird er Befehl plötzlich zusätzlich noch die Anlage regeln. ;)

Erstell dir doch einen Dummy und gib ihm einen den snipsName "Snips" und snipsRoom wo Snips eben steht.
Dazu ein Mapping SetNumeric vom Type Lautstärke das den state vom Dummy setzt.

Dann kannst du über Lautstärke von Snips auf 20 den state ändern.

Nun noch ein Notify auf die Events vom Dummy und damit deinen SSH Code an Snips abfeuern, damit die Lautstärke sich ändert.
Wenn die currentVal Option zum zurücklesen des zuletzt gesetzten Werts im SetNumeric Mapping konfiguriert ist,
klappt auch Snips leiser oder Snips lauter.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 28 August 2018, 15:17:07
@jowe:
Wenn ich das so umsetze:

Zitat von: Thyraz am 27 August 2018, 16:55:42
Bin gerade am überlegen wie man das am Besten umsetzt.
Man könnte auch versuchen das Ganze etwas flexibler zu gestalten als bei der Konkurrenz.
Nehmen wir an es gäbe ein extra Attribut snipsColors das man einer Lampe mit Farbsteuerung zuweisen kann:

weiß=ct 3000
warmweiß=ct 2700
rot=rgb ff0000
blau=rgb 0000ff
lilablassblau=rgb b7b4ff


würde das ja auch mit Lightscenes funktionieren.

Es muss sich ja nicht um eine Lampe handeln, bei der das Mapping hinzugefügt wird.
Man kann ja auch einer LightScene ein entsprechendes Mapping + snipsName geben.

Im snipsColor Attribut wird ja einfach zu einem Farbname ein set-Kommando zugeordnet.
Wäre dann in etwa so:

rot=scene red
blau=scene blue


Oder man hat ein DOIF bei dem in verschiedenen CMDs mehrere Lampen entsprechen gefärbt werden:


rot=cmd_1
blau=cmd_2


Da kann dann jeder seine Kreativität ausleben und die eigentliche Ansteuerung der Lampen ist losgelöst vom Snips Modul.
Wenn ich auf Dummies stehe, kann ich auch die schalten je nach Farbe danke der Device:Cmd Syntax.


rot=DummyRed:on
blau=DummyBlue:on
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: shilbert am 28 August 2018, 17:56:29
Zitat von: Thyraz am 28 August 2018, 11:30:05
Stimmt, daran hab ich damals gar nicht gedacht.
Da wird immer siteId "default" übertragen.

Vorschläge für die Syntax?
set <snipsDevice> say siteId="schlafzimmer" text="bla bla"
So evtl?

Das klingt nach vernünftiger Syntax.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Roman am 28 August 2018, 23:04:53
Hallo,

ich versuche gerade mit Snips die Lautstärkeregelung meines LG-TV's,
Problem dabei, dass die Lautstärke nicht als Zahl gesetzt werden kann, sondern über FHEM die Fernbedienung simuliert wird.

Die benötigten Befehle wären

set LGTV remoteControl volumeUp, bzw.
set LGTV remoteControl volumeDown


ich kann also keine numerischen Werte übergeben (Bei den Programmen geht das mit set LGTV channel <NUMBER>).
Geht das mit dem Mapping (wenn ja wie? ), oder brauch ich hier einen CustomIntent?

und noch eine Frage zur FHEM-APP auf Snips.
Wenn eine neue Version auf SNIPS bereitgestellt wird, wird diese dann automatisch mit 'sam install assistant' upgedated, oder muss ich vorher die APP in der SNIPS Console löschen und neu hinzufügen ?

Gruß
Roman
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 29 August 2018, 09:15:07
Eine gute Frage...

Die Lautstärkeregelung ist an sich nicht dafür konzipiert und ich bin mir auch über die Sinnhaftigkeit noch nicht so ganz sicher.  :P
Vor der Glotze hat man ja meist die Fernbedienung in der der Hand.
Sagt man da wirklich 10x hintereinander "Hey Snips, lauter" statt kurz die Taste gedrückt zu halten bis es passt? ;)

Über einen Workaround bekommt man das aber sicher hin.

Ein Weg wäre einen Dummy "SnipsTvVolume" zu erstellen und im Fernseher-Device dann folgendes als Mapping einzutragen:

SetNumeric:currentVal=SnipsTvVolume:state,part=1,cmd=SnipsTvVolume:dim,minVal=0,maxVal=100,step=100


Wenn du "Fernseher lauter" oder "Fernseher leiser" sagt ändert sich nun der state des Dummies SnipsTvVolume z.B. auf "dim 100" oder "dim 0".
Dadurch, dass wir die Schrittweite bei Änderungen ohne Zahlenangabe auf 100 gesetzt haben, landest du auch immer sicher beim Wert 0 bzw. 100.
Durch minVal und maxVal begrenzen wir den möglichen Wertebereich, womit auch keine grüßeren oder kleineren Zahlen möglich sind.

Der Dummy wird beim Ändern von state dann Events generieren auf die man mit einem Notify (oder DOIF) reagieren kann.
Solange man kein event-on-change-reading gesetzt hat, sollte dies auch bei sich wiederholenden Befehlen in die selbe Richtung passieren (also z.B. mehrmals hintereinander "lauter")

Wenn das Event für state 0 reinkommt sendest du eben volumeDown, bei state 100 dann volumeUp.

Wahrscheinlich musst du zu Beginn einmal set SnipsTvVolume dim 0 ausführen, damit der state einen korrekten Wert hat um über SetNumeric rückgelesen werden zu können.

edit: Ja, man scheint die Apps auf console.snips.ai nicht händisch updaten zu müssen soweit ich das bisher verstanden habe.
Ein sam install assistant sollte die neuste Version bringen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: RoBra81 am 29 August 2018, 10:11:51
Hallo,

Zitat von: Thyraz am 29 August 2018, 09:15:07
... ich bin mir auch über die Sinnhaftigkeit noch nicht so ganz sicher.  :P
Vor der Glotze hat man ja meist die Fernbedienung in der der Hand.
Sagt man da wirklich 10x hintereinander "Hey Snips, lauter" statt kurz die Taste gedrückt zu halten bis es passt? ;)

ich habe in vielen Räumen Deckenlautsprecher die ich mittels Squeezebox-Modul versorge - hier habe ich keine Fernbedienung, sondern schalte über FHEM oder Squeezebox-App - hier wäre eine Lautstärkenänderung (sowie Mediensteuerung ;-)) per Sprache interessant...

Ronny
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 29 August 2018, 10:20:32
Mir ging es nicht um Lautstärkesteuerung im allgemeinen, sondern um den Fall wenn man nur per Fernbedienung lauter und leiser Tastendrücke simulieren kann.
Hier sind dann eben keine schnellen Sprünge möglich, oder das gezielte Springen auf eine konkrete Lautstärke.

Squeezebox bietet ja aber einen "volume xx" Befehl sowie ein Reading für die aktuelle Lautstärke, oder?

Mediensteuerung Teil1 folgt "sofort"  :P
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 29 August 2018, 10:37:08
So hier der erste Teil der Mediensteuerung: Der Intent MediaControls.
Als nächstes Update kommt dann noch MediaChannels zur Sender-/Favoritenwahl.

Als erstes habe ich eine Änderung eingeführt, welche auch SetNumeric betrifft, falls type=Lautstärke gesetzt ist.
Update der Doku dazu:
Zitat
Besonderheit bei type=Lautstärke:
Um die Befehle leiser und lauter ohne Angabe eines Gerätes verwenden zu können,
muss das Modul bestimmen welches Ausgabegerät gerade verwendet wird.
Hierfür wird mithilfe des GetOnOff Mappings geprüft welches Gerät mit type=Lautstärke eingeschaltet ist.
Dabei wird zuerst im aktuellen snipsRoom gesucht, dananch im Rest falls kein Treffer erfolgt ist.
Es empfiehlt sich daher bei Verwendung von type=Lautstärke auch immer ein GetOnOff Mapping einzutragen.
Ein Gerätename lauter bzw. Gerätename leiser ist unabhängig dieser Sonderbehandlung natürlich immer möglich.

Beispiel für das Mapping vom neuen Intent MediaControls:
Über weitere sinnvolle Befehle kann man gern diskutieren.

MediaControls:cmdPlay=play,cmdPause=pause,cmdStop=stop,cmdFwd=skipFwd,cmdBack=skipBack


Auch hier wird wie oben beschrieben (bei Nicht-Nennung des Gerätenames) das aktuell laufende Gerät mit Intent MediaControls gesucht.
Die Suche erfolgt wieder mithilfe des GetOnOff Mappings.
Zuerst wird wieder im aktuellen snipsRoom gesucht, danach in den anderen falls kein Treffer erfolgt ist.

Das ermöglicht euch einfach Pause oder nächstes Lied zu sagen.
Ihr könnt aber natürlich auch Geräte und oder Räume gezielt ansprechen.
Zum Beispiel mit Überspringe Lied im Büro oder CD-Player im Bad pausieren

Ihr braucht sowohl das neue Modul, als auch die neue FHEM App:
- Assistent von console.snips.ai herunterladen und installieren (oder über sam install assistant) damit ihr die neuste FHEM App habt.
- Neues Snips Modul von Github einspielen
- Fhem neu starten
- set <snipsDevice> updateModel ausführen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: RoBra81 am 29 August 2018, 10:57:19
Zitat von: Thyraz am 29 August 2018, 10:20:32
Mir ging es nicht um Lautstärkesteuerung im allgemeinen, sondern um den Fall wenn man nur per Fernbedienung lauter und leiser Tastendrücke simulieren kann.
Hier sind dann eben keine schnellen Sprünge möglich, oder das gezielte Springen auf eine konkrete Lautstärke.

Squeezebox bietet ja aber einen "volume xx" Befehl sowie ein Reading für die aktuelle Lautstärke, oder?

Ah, okay, verstehe :-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 29 August 2018, 18:23:36
Ich glaube Snips mischt sich jetzt zu oft ein.
Abend bei Fernsehen bestimmt 3 - 4 mal.
Vorhin gerade wieder hat sie irgendwas gehört und einen entsprechenden Payload erzeugt.
{"Comand":"vor","input":"vor","intent":"MediaControls","probability":"1","requestType":"voice","sessionId":"5912fa9c-ffae-4a12-b403-3f2128bfceb5","siteId":"default"
Eben schon wieder jedoch ohne Fhem Payload.
Ich schick sie erstmal schlafen...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 29 August 2018, 22:50:03
Wundert mich echt, dass die Hotword-Erkennung bei dir so viele False Positives hat.

Ich hab bis heute noch keine einzige ungewollte Erkennung gehabt.
Dabei steht das PS3 Eye auch sehr nah an den Lautsprechen der Anlage, welche tagsüber oft Radio und Abends den Sound vom Fernseher ausgeben.

Tagsüber ist hier meist auch viel los mit Kids und Co...

Werde mir mal ein Notify auf listening_wohnzimmer machen, das mir eine Nachricht aufs Handy schickt.
Dann bekomme ich mit wenn tagsüber doch mal was auslöst während ich nicht im Haus bin.

Aber meine bessere Hälfte hätte da schon gemeckert wenn das so wäre.
Alexa hatte keinen guten Stand bei uns mit ihren regelmäßigen Fehlalarmen...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 30 August 2018, 09:10:21
@kud Dieses Problem habe ich ja auch schon seit Anfang an. Ich habe abends teilweise 5-10 Fehlerkennungen.
Ich habe sowohl mit dem PS3 eye wie auch mit dem Respeaker dieses Problem, es scheint also nicht an der Hardware zu liegen. Ich vermute mittlerweile, dass unsere Raumakustik da rein spielt. Wir haben einen großen Wohn-/Essbereich mit offener Küche, Boden gefliest. Setzt du Snips vielleicht auch in einem großen Raum ein?
Als erste Maßnahme habe ich die Sensitivity auf 0.4 verringert. Dadurch gibt es zwar weniger Fehlalarme, aber ich muss für eine korrekte Erkennung des Hotwords auch relativ nah an meinen Satelliten ran gehen.

Ich denke ich werde als nächstes versuchen, ein eigenes Hotword anzulernen. Evtl. bringt das ja Besserung. Vielleicht ist das ja für dich auch eine Option
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: shilbert am 30 August 2018, 10:40:27
Das Problem Fehlerkennung hatte ich mit ReSpeaker auch. Ebenso relativ offener Raum. Hotword Sensitivity ist jetzt 0,3 bei mir. Damit ist es fast komplett weg. Ich muss allerdings ebenfalls näher ran ....

Bei personal Hotwords wird sich sicher was tun. Derzeit ist das ja eine der wenigen Einnahmequellen von Snips.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 30 August 2018, 10:45:02
Ihr könnt euch auch mal die Möglichkeiten anschauen um den Snips Hotword-Detector durch Snowboy zu ersetzen:
https://github.com/Psychokiller1888/snips-custom-hotword
https://github.com/oziee/hotword
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 30 August 2018, 14:01:17
Hat jemand schonmal SNIPS in Docker zum laufen gebracht? Steige grade auf einen NUC um und würde gerne alles in Container packen :-)
Folgendes Image habe ich gefunden: https://hub.docker.com/r/snipsdocker/platform/
Leider konnte ich bis jetzt keine passende Dokumentation entdecken, beim starten des Containers bekomme ich immer "Couldn't find any assistant".
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 30 August 2018, 14:25:55
Hi bennebartsch, konnte auf die Schnelle auch nichts finden.

Habe bei mir auf dem NUC Proxmox laufen, in LXC Containern läuft es problemlos nachdem man die Hürde Audio-Geräte durchreichen genommen hat. ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 30 August 2018, 14:37:29
So, neue Version mit MediaChannels:

Zitat Doku auf Github:

MediaChannels
Intent zum Abspielen von Radio-/Fernsehsendern, Favoriten, Playlists, ...

Anstatt im Attribut snipsMapping eingetragen zu werden,
wird Der Intent über ein eigenes Attribut snipsChannels im jeweiligen Gerät konfiguriert.
Grund dafür ist die mehrzeilige Konfiguration des Intents.

Um dem Device das neue Attribut hinzuzufügen, muss das Attribut userattr befüllt werden:
attr <deviceName> userattr snipsChannels:textField-long

Danach kann das Attribut snipsChannels befüllt werden.
Pro Zeile ein Eintrag im Format Channelbezeichnung:cmd
Channelbezeichnung ist der Name den ihr sprechen wollt, cmd der Set-Befehl des Geräts.
Dieser kann mit dem Format Device:cmd auch auf ein anderes Gerät verweisen.

Achtung: Die Sendernamen müssen Snips auch wieder per ASR Inject bekannt gemacht werden.
Nach dem Hinzufügen von neuen Sendern muss also wieder set <snipsDevice> updateModel ausgeführt werden.

Beispiele:
SWR3=favorite s_w_r_3
SWR1=favorite s_w_r_1
Das Ding=favorite das_ding
BigFM=favorite bigfm


Hinweis zu Befehlen ohne Nennung des Gerätenamens:
Um die Wiedergabe ohne Angabe eines Gerätes starten zu können,
muss das Modul bestimmen welches Ausgabegerät verwendet werden soll.
Hierzu sucht das Modul über das Attribut snipsChannels nach einem passenden Device.
Treffer im aktuellen (bzw. angesprochenen) Raum werden bevorzugt.

Beispielsätze:
ZitatSpiele SWR3 auf dem Radio im Büro
Spiele SWR1
Schalte um auf BigFM
Sender vom Radio auf Das Ding wechseln


Same procedure as every time:
- Assistent von console.snips.ai herunterladen und installieren (oder über sam install assistant) damit ihr die neuste FHEM App habt.
- Neues Snips Modul von Github einspielen
- Fhem neu starten
- set <snipsDevice> updateModel ausführen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: shilbert am 30 August 2018, 14:55:08
Es scheint im Snips Discord Hinweis zu geben, dass das mit Docker geht. Kann man die Instanz nicht starten oder nur die services nicht ? Ich würde mal vermuten, dass man den eigenen Assistenten reinladen muss bevor es funktioniert. 'sam install assistant .......' ? Es scheint da diverse Probleme mit dem Durchreichen von Audio zu geben.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 30 August 2018, 15:26:04
Ich habe Arch Linux mit Docker am laufen... Werde mir heute Abend mal eine eigene Dockerfile fertig machen und diese dann mit euch teilen :-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 30 August 2018, 15:27:59
Zitat von: shilbert am 30 August 2018, 14:55:08
Es scheint im Snips Discord Hinweis zu geben, dass das mit Docker geht. Kann man die Instanz nicht starten oder nur die services nicht ? Ich würde mal vermuten, dass man den eigenen Assistenten reinladen muss bevor es funktioniert. 'sam install assistant .......' ? Es scheint da diverse Probleme mit dem Durchreichen von Audio zu geben.

Audio muss ja nichtmal zwingend durchgereicht werden, möchte nur die meisten Dienste im Docker Container haben, die Satelliten brauchen ja jeweils nur einen Dienst auf dem Host OS.
Sobald ich den Container starte kommt eine Fehlermeldung, d.h. ich kann irgendwie gar nichts machen. Leider ist die Dockerfile auch nicht public

Edit: habe was interessantes gefunden:
https://github.com/MichaelHills/snips-pulse-docker
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 30 August 2018, 19:16:57
Ich habe mal den Snips-Pi umgestellt.
Habe schon wieder eine Reaktion und wieder ohne Payload in FHEM. Gibt es irgendwo ein Log von Snips ? Habe es bisher nicht gefunden.
Edit: ein paar Stunden später
Payload
{"Device":"wasser","Type":"Helligkeit","input":"helligkeit wasser","intent":"GetNumeric","probability":"1","requestType":"voice","sessionId":"3ab98e00-f6b4-4cb8-89eb-f1dce4619fb2","siteId":"default"}
oder
{"Device":"licht","Room":"treppe","Value":"306","input":"unknownword zu film auf unknownword das weiter minus drei billionen licht im treppe auf drei hundert sechs","intent":"SetNumeric","probability":"0.33065122","requestType":"voice","sessionId":"103403d7-3d73-45d2-988c-cf7f38b067d2","siteId":"default"}
Langsam wirds lustig.  :-\ ...jedoch unbrauchbar.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 31 August 2018, 10:43:43
@kud: Hast du die Sensitivity in /etc/snips.toml mal nach unten geschraubt? Das hat bei mir definitiv die false-positives deutlich verringert. Nachteil ist natürlich, dass man dann auch näher an das device heran gehen muss, damit das Hotword erkannt wird.
Falls nach dem Ändern der Sensitivity Snips nicht mehr starten sollte suche in mal in der Snips-Doku unter "Troubleshooting" nach mqtt persistence. Das hat bei mir das Problem gelöst...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 31 August 2018, 13:35:43
Was mir gerade aufgefallen ist und gar nicht die Intention dafür war:

Mit dem neulich eingeführten Reading "voiceResponse" kann man Ausgaben von FHEM (falls man keinen Lautsprecher an Snips hat) über ein Notify auch problemlos z.B. an den say Befehl vom Sonos oder Text2Speech Modul weiterleiten.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 31 August 2018, 13:36:21
Hab das teil erst einmal aus dem Wohnzimmer entfernt. Die Empfindlichkeit auch mal 0,4 gestellt.
Mal sehen wie es weitergeht....
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 31 August 2018, 13:56:27
Zitat von: Thyraz am 31 August 2018, 13:35:43
Was mir gerade aufgefallen ist und gar nicht die Intention dafür war:

Mit dem neulich eingeführten Reading "voiceResponse" kann man Ausgaben von FHEM (falls man keinen Lautsprecher an Snips hat) über ein Notify auch problemlos z.B. an den say Befehl vom Sonos oder Text2Speech Modul weiterleiten.

Wie kann man dann die TTS-Engine von SNIPS komplett deaktivieren?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 31 August 2018, 14:01:43
Zitat von: bennebartsch am 31 August 2018, 13:56:27
Wie kann man dann die TTS-Engine von SNIPS komplett deaktivieren?

...oder wie kann man TTS-Engine von SNIPS auf ein besseres Niveau ohne Amazon oder Google, sprich nur local, bringen. Wenn ich die Texte von Snips vorlesen lasse ist die Aussprache gruselig. Auf meinen Tablet und Fully klingt es menschlicher.

Gruss
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 31 August 2018, 14:18:12
Zitat von: bennebartsch am 31 August 2018, 13:56:27
Wie kann man dann die TTS-Engine von SNIPS komplett deaktivieren?

Ich würde mal schätzen, man kann den ganzen snips-audio-server.service deaktivieren.
Ohne Lautsprecher an Snips bringt der einem ja nicht viel.

Da fällt mir noch was ein:
Auch ein kurzer Sound bei Hotword-Erkennung ist mit dem Modul schon möglich.
Einfach auf das listening_<roomname> Reading lauschen.
Wenn das auf 1 geht über das Audiogerät eurer Wahl in FHEM einen kurzen Sound ausgeben.

Zitat von: enno am 31 August 2018, 14:01:43
...oder wie kann man TTS-Engine von SNIPS auf ein besseres Niveau ohne Amazon oder Google, sprich nur local, bringen. Wenn ich die Texte von Snips vorlesen lasse ist die Aussprache gruselig. Auf meinen Tablet und Fully klingt es menschlicher.

Gute Frage.

Ich bin daher auf Amazon Polly umgestiegen, wie in der Github Readme beschrieben.
Die Online-Lösungen scheinen hier einfach besser zu sein, als das was man lokal installieren kann.
Fully läuft ja sicher auch online, oder?

Ich finde das aber auch nicht so wild, die Texte die ich im SmartHome ausgebe kann Amazon/Google gerne haben.
Die Angst bei den Online-Sprachassistenten ist ja eher, dass sie mitlauschen können, ohne dass man es theoretisch bemerkt.

Sprich: Mikrofon und Spracherkennung von Google/Amazon abzukoppeln halte ich den größeren Gewinn,
als Text2Speech.

Muss aber jeder selbst wissen, ob er brisante Daten über TTS sprechen lässt, oder nur "Ok", "Wohnzimmer hat 24°C", "Wäsche ist fertig". ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 31 August 2018, 14:57:17
Ist zwar offtopic aber kann mal Jemand auf die Schnelle schauen warum das notify nicht reagiert ;-((
Snips:voiceResponse:.* {set LocalTTS tts $EVENT}
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 31 August 2018, 15:09:50
Hast du mal im Event Monitor geschaut ob ein Event auftritt?

Hab gerade nochmal im Code geschaut, ich ändere das Reading eigentlich mit Event-Triggerung.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 31 August 2018, 15:12:27
Ja Event wird erzeugt:
2018-08-31 15:11:31 SNIPS Snips voiceResponse: Die Temperatur von büro beträgt 24,4 Grad.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 31 August 2018, 17:16:18
Ich bin zu doof, ich seh's nicht. 😉

Sicher, dass er nicht triggert (und nicht Evtl. etwas mit dem auszuführenden Cmd schief geht?)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 31 August 2018, 18:05:30
Zitat von: kud am 31 August 2018, 14:57:17
Ist zwar offtopic aber kann mal Jemand auf die Schnelle schauen warum das notify nicht reagiert ;-((
Snips:voiceResponse:.* {set LocalTTS tts $EVENT}

https://regex101.com/

wenn ich das dort teste, findet er auch nichts. Was sagt denn:

Snips:*.voiceResponse:.* {set LocalTTS tts $EVENT}
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 31 August 2018, 18:22:47
OK. Mit diesem DEF läufts.
Snips:.*voiceResponse:.* {
my $ansage = ReadingsVal("Snips","voiceResponse","");
fhem("set LocalTTS tts $ansage")}


(mit $EVENT kommt immer "voiceResponse" in der Ausgabe davor, da ist ReadingsVal besser)

Diese Geschichte ist übrigens ein echter Mehrwert. Da klingt die Stimme mit allen FHEM-Sprachausgabe einheitlich und kommt über denselben Lautsprecher. Echt Klasse.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 01 September 2018, 19:33:22
Habe den Eintrag vorgenommen, wie Thyraz ihn in #247 vorgeschlagen hat.
Da bekomme ich aber
{"Device":"draussen","input":"thermometer draussen","intent":"SetOnOff","probability":"0.794529","sessionId":"fhem.textCommand","siteId":null,"type":"text"}

Wobei ein "intent":"SetOnOff" nicht richtig sein kann.
Irgendwo hat sich ein Wurm versteckt...

Paar Versuche später: mehrfach Snips mit Update versorgt, fhem neu gestartet
Jetzt stimmt zwar der Intent, aber sonst gibt es wieder nur: Es ist etwas schiefgegangen.

Was ich auch noch nicht kapiert habe: wie übergibt Snips das an FHEM ?

Was mir noch auffällt: Snips hat Status ? ? ?. Ist das richtig so?
Installiert habe ich das komplett nach Anleitung aus dem GitHub und Snips-Howto.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 03 September 2018, 10:45:35
Moin Thyraz,

erst mal Danke für das Modul! Unsere Famile ist begeistert. Meine Frau wurde gestern überzeugt, als sie das Radio einschalten wollte und beide Hände im Kuchenteig steckten :)

Habe mir gerade ein Device gebastelt, das mir über Snips mitteilt, was gerade läuft.

"Hey Snips was läuft?"

defmod SnipsRadio_Info_Dummy dummy
attr SnipsRadio_Info_Dummy Snips
attr SnipsRadio_Info_Dummy snipsMapping Status:response=Es läuft [MPD:Title]
attr SnipsRadio_Info_Dummy snipsName Was
attr SnipsRadio_Info_Dummy snipsRoom läuft


Die Antwort "RUDIMENTAL - THESE DAYS (FEAT. JESS GLYNNE, MACKLEMORE" kommt auch, aber mit "deutscher" Aussprache. So gut wie nicht zu verstehen. Gibt es einen Trick das zu verbessern?

Ich würde bei bestimmten Ansagen auch gerne die Lautstärke hochdrehen, bei anderen leiser ausgeben. Geht das? Habe noch nichts gefunden.

Gruss
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 03 September 2018, 11:20:18
Zitat von: Neuhier am 01 September 2018, 19:33:22
Paar Versuche später: mehrfach Snips mit Update versorgt, fhem neu gestartet
Jetzt stimmt zwar der Intent, aber sonst gibt es wieder nur: Es ist etwas schiefgegangen.
Ok, nachdem der Status nun stimmt:
Wie sieht sieht das lastIntentPayload im Modul nun aus?
Kannst du zusätzlich noch das snipsMapping vom Gerät zeigen, sowie was im Log von FHEM erscheint wenn du verbose 5 im Modul setzt und das Kommando einsprichst?

Zitat von: Neuhier am 01 September 2018, 19:33:22
Was ich auch noch nicht kapiert habe: wie übergibt Snips das an FHEM ?
Snips entscheidet anhand des Aufbaus des Befehls und der darin vorkommenden Slots welcher Intent wohl gemeint ist.
Es übergibt dann den Intentnamen und die Slotvalues an FHEM (bzw. Fhem greift die über MQTT ab).

Zitat von: Neuhier am 01 September 2018, 19:33:22
Was mir noch auffällt: Snips hat Status ? ? ?. Ist das richtig so?
Ich setzte den Status bisher noch nicht, da ich auch noch nicht so recht weiß, was da rein sollte.
FHEM scheint das mit 3 Fragezeichen zu quittieren. ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 03 September 2018, 11:27:44
Zitat von: enno am 03 September 2018, 10:45:35
erst mal Danke für das Modul! Unsere Famile ist begeistert.
Freut mich. :)

Zitat von: enno am 03 September 2018, 10:45:35
Die Antwort "RUDIMENTAL - THESE DAYS (FEAT. JESS GLYNNE, MACKLEMORE" kommt auch, aber mit "deutscher" Aussprache. So gut wie nicht zu verstehen. Gibt es einen Trick das zu verbessern?
Gute Frage. Ausgabe von Medieninformationen dürfte schon die Königsdiziplin sein. ;)
Ich wette Alexa und Siri wissen über Zugriff auf die Mediendaten welche Sprache sie zum aussprechen verwenden müssen.
Mit einem Offline-Assistent wird das schwer.

Klar könnte man dem Say Befehl noch die Sprache als Parameter mitgeben. Eine neue Syntax bei der man Optionen setzen kann ist ja eh geplant.
Aber wie entscheidet FHEM mit welcher Sprache es sprechen müsste? ;)

Ob man besserer Ergebnisse erhält, wenn man Amazon Polly oder Google TTS als Sprachausgabe für Snips verwendet müsste man mal testen.
Evtl. gibt es hier eine Intelligenz, welche die Sprache zu erkennen versucht...

Zitat von: enno am 03 September 2018, 10:45:35
Ich würde bei bestimmten Ansagen auch gerne die Lautstärke hochdrehen, bei anderen leiser ausgeben. Geht das? Habe noch nichts gefunden.

Ich hab geplant, einen volume Befehl hinzuzufügen.

Braucht dann aber einen extra Service den man auf dem Snips Rechner installieren muss, welcher die MQTT Nachrichten empfängt und die Systemlautstärke ändert.

Kommt hoffentlich im Laufe der nächsten Woche.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 03 September 2018, 13:56:23
So, das Thema war übrigens unabsichtlich geschlossen, als Entschädigung gibt es erstmal eine neue Version. :P

- Zum einen gibt es jetzt die neue say Syntax:

set <snipsDevice> say siteId="default" text="Dies ist ein Test"

Die alte Syntax ohne Angabe einer siteId funktioniert weiterhin. Wird dann bei siteId default ausgegeben.

- Zweite Änderung ist, dass ihr eigenen PERL-Code in geschweiften Klammern als CMDs oder Readings im Mapping angeben könnt.
Da ein Mapping immer nur eine Zeile lang sein darf, sollte komplexer Code am Besten in eine 99_myUtils Funktion ausgelagert werden.
Im Code innerhalb der geschweiften Klammern ist die Variable $DEVICE mit dem aktuellen Gerätenamen belegt.
Bei der cmd-Option von SetNumeric kann außerdem über $VALUE auf den zu setzenden Wert zugegriffen werden.

Diese Kommandos machen also das selbe:

# CMD
# Bereits bisher existierende Syntax ohne Perl:
SetOnOff:cmdOn=on,cmdOff=off
# Derselbe Aufruf über Perl
SetOnOff:cmdOn={fhem("set $DEVICE on")},cmdOff={fhem("set $DEVICE off")}

# READING
# Bereits bisher existierende Syntax ohne Perl:
GetNumeric:currentVal=temperature,part=1,type=Temperatur
# Derselbe Aufruf über Perl
GetNumeric:currentVal={my @tokens = split(" ",ReadingsVal($DEVICE,"volume",0)); return $tokens[1]},type=Temperatur


Die Beispiele machen natürlich wenig Sinn, da das Snips Modul die Funktionalität wie gesagt schon beherrscht. ;)
Sollte aber verständlich machen was da passiert.
Aber evtl. müsst ihr irgendwo currentVal aus mehreren Werten berechnen, oder ihr müsst mehrere Befehle auf einmal absetzen.


Ein Beispiel von mir das ich aktuell beim Mapping für die MediaChannels verwende:
Ich wollte bei Spiele SWR3 erreichen, dass der AV-Receiver vor dem Senderwechsel eingeschaltet wird (falls er aus ist).

Dazu habe ich mir eine Hilfsfunktion in der 99_myUtils.pm erstellt, da das zuviel Code für die einzeiligen Mappings ist.

# Senderwechsel über Snips
sub snipsSetChannel($$) {
my ($device, $channel) = @_;
my $cmd = "";

# Anlage im Wohnzimmer
if ($device eq "AvReceiver") {
my $power = ReadingsVal($device, "power", "off");
$cmd = "set $device on; sleep 5; " if ($state eq "off");
$cmd = $cmd . "set $device favorite $channel";
}

# Befehl ausführen
fhem($cmd);
}


Diese Funktion wird dann beim Sender-Mapping im Attribut snipsChannels verwendet:

SWR3={snipsSetChannel("AvReceiver","swr3")}
Das Ding={snipsSetChannel("AvReceiver","dasding")}
BigFM={snipsSetChannel("AvReceiver","dasding")}



Und täglich grüßt das Murmeltier:
- Assistent von console.snips.ai herunterladen und installieren (oder über sam install assistant) damit ihr die neuste FHEM App habt.
- Neues Snips Modul von Github einspielen
- Fhem neu starten
- set <snipsDevice> updateModel ausführen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 03 September 2018, 15:58:12
Zitat von: enno am 03 September 2018, 10:45:35
Die Antwort "RUDIMENTAL - THESE DAYS (FEAT. JESS GLYNNE, MACKLEMORE" kommt auch, aber mit "deutscher" Aussprache. So gut wie nicht zu verstehen. Gibt es einen Trick das zu verbessern?

Hi Enno,

ich hab das gerade mal durch Amzon Polly gejagt.
Das Ergebnis hängt als Anhang an.

Eingegebener Text war: RUDIMENTAL THESE DAYS FEAT. JESS GLYNNE, MACKLEMORE
Er hat hier automatisch "featuring" daraus gemacht und die Aussprache hört sich gut an.

Hab mir dann noch schnell einen Titel von der MTV Charts Homepage gesucht.
Hier sieht man eindeutig, dass Amazon die Künstler und Songs zu erkennen scheint.
Es kommt problemlos "Maroon Five" statt "Marron Fünf" bei dem Satz "es läuft  Girls like you feat. Cardi B von Maroon 5" heraus.

Ist auch als MP3 im Anhang.

Amazon Polly lohnt hier also durchaus, wenn man solche Features nutzen will.
Da das so gut funktioniert, könnte CurrentlyPlaying durchaus ein Standard-Intent im Modul werden. ;)

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 03 September 2018, 17:48:30
So, mal paar Angaben.

lastIntentPayload

{"Device":"thermometer","Room":"aussen","input":"sage thermometer aussen","intent":"GetNumeric","probability":"1","sessionId":"fhem.textCommand","siteId":null,"type":"text"}


2018.09.03 17:37:56 5: set textCommand - value: sage thermometer aussen
2018.09.03 17:37:56 5: Parsed value: sage thermometer aussen for key: input
2018.09.03 17:37:56 5: Parsed value:  for key: probability
2018.09.03 17:37:56 5: Parsed value:  for key: siteId
2018.09.03 17:37:56 5: Parsed value:  for key: intent
2018.09.03 17:37:56 5: Parsed value:  for key: sessionId
2018.09.03 17:37:56 5: sending message to NLU: {"id":"{\u0022Device\u0022:null,\u0022Room\u0022:null,\u0022input\u0022:\u0022sage thermometer aussen\u0022,\u0022sessionId\u0022:null,\u0022siteId\u0022:null}","input":"sage thermometer aussen","sessionId":"fhem.textCommand"}
2018.09.03 17:37:56 5: publish received for hermes/nlu/intentParsed, {"id":"{\"Device\":null,\"Room\":null,\"input\":\"sage thermometer aussen\",\"sessionId\":null,\"siteId\":null}","input":"sage thermometer aussen","intent":{"intentName":"blubber:GetNumeric","probability":1.0},"slots":[{"rawValue":"thermometer","value":{"kind":"Custom","value":"thermometer"},"range":{"start":5,"end":16},"entity":"de.fhem.Device","slotName":"Device"},{"rawValue":"aussen","value":{"kind":"Custom","value":"aussen"},"range":{"start":17,"end":23},"entity":"de.fhem.Room","slotName":"Room"}],"sessionId":"fhem.textCommand"}
2018.09.03 17:37:56 5: Parsed value: sage thermometer aussen for key: input
2018.09.03 17:37:56 5: Parsed value: thermometer for key: Device
2018.09.03 17:37:56 5: Parsed value: aussen for key: Room
2018.09.03 17:37:56 5: Parsed value: fhem.textCommand for key: sessionId
2018.09.03 17:37:56 5: Parsed value: 1 for key: probability
2018.09.03 17:37:56 5: Parsed value:  for key: siteId
2018.09.03 17:37:56 5: Parsed value: GetNumeric for key: intent
2018.09.03 17:37:56 5: handleIntentGetNumeric called


Internals:
   DEF        SnipsMQTT WZ
   IODev      SnipsMQTT
   MODULE_VERSION 0.2
   NAME       Snips
   NOTIFYDEV  SnipsMQTT WZ
   NR         260
   STATE      ???
   TYPE       SNIPS
   READINGS:
     2018-09-03 17:37:56   lastIntentPayload {"Device":"thermometer","Room":"aussen","input":"sage thermometer aussen","intent":"GetNumeric","probability":"1","sessionId":"fhem.textCommand","siteId":null,"type":"text"}
     2018-09-03 17:37:56   lastIntentTopic hermes/nlu/intentParsed
     2018-09-03 17:37:56   textResponse    Da ist etwas schief gegangen.
     2018-09-03 17:37:56   transmission-state incoming publish received
     2018-09-03 17:35:33   voiceResponse   Da ist etwas schief gegangen.
   helper:
     defaultRoom WZ
   message_ids:
   subscribe:
     hermes/intent/+
     hermes/nlu/intentParsed
   subscribeExpr:
     ^hermes\/intent\/([^/]+)$
     ^hermes\/nlu\/intentParsed$
   subscribeQos:
     hermes/intent/+ 0
     hermes/nlu/intentParsed 0
Attributes:
   IODev      SnipsMQTT
   room       Ansagen
   verbose    5

   
Das sagt die Konsole :
OS version ................... Raspbian GNU/Linux 9 (stretch)
Installed assistant .......... fhem
Language ..................... de
Hotword ...................... hey_snips
ASR engine ................... snips
Status ....................... Live

Service status:

snips-analytics .............. 0.58.3 (not running)
snips-asr .................... 0.58.3 (running)
snips-audio-server ........... 0.58.3 (running)
snips-dialogue ............... 0.58.3 (running)
snips-hotword ................ 0.58.3 (running)
snips-nlu .................... 0.58.3 (running)
snips-skill-server ........... 0.58.3 (not running)
snips-tts .................... 0.58.3 (not running)



Und als Abschluß
snipsMapping         GetNumeric:currentVal=temperature,type=Temperatur,part=1
snipsName thermometer
snipsRoom draussen,aussen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 03 September 2018, 18:11:59
Zitat von: Thyraz am 03 September 2018, 15:58:12
Amazon Polly lohnt hier also durchaus, wenn man solche Features nutzen will.
Da das so gut funktioniert, könnte CurrentlyPlaying durchaus ein Standard-Intent im Modul werden. ;)

ok, überzeugt :) Ich habe mir jetzt auch "Polly"  installiert. Deutliche Verbesserung. Allerdings spricht mir die Dame manchmal zu schnell.... irgendetwas ist ja immer.., Die Aussprache klappt! Dieses Problem ist gelöst.

Gruss
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 03 September 2018, 20:47:15
@Neuhier scheint einen Bug zu geben, wenn kein Type im gesprochenen Satz von GetNumeric erkannt wird.
Schaue ich mir Morgen mal an.

Als Workaround könnte ,,Hey Snips, Temperatur Thermometer außen" funktionieren.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 04 September 2018, 10:33:25
Je mehr Devices in die APP eingefügt wurden umso schlechter ist die Erkennung.
"Draussen" = "Pause"
"Starten"="Garten"
Also ohne die Mediasteuerung (welche ich zB. nicht benötige) war die Erkennungsrate viel besser.
Und natürlich gibts die (nicht)passende Wiedergabe von "Kein Wiedergabegerät aktiv".
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 04 September 2018, 11:31:01
Zitat von: kud am 04 September 2018, 10:33:25
Je mehr Devices in die APP eingefügt wurden umso schlechter ist die Erkennung.
"Draussen" = "Pause"
"Starten"="Garten"
Also ohne die Mediasteuerung (welche ich zB. nicht benötige) war die Erkennungsrate viel besser.
Und natürlich gibts die (nicht)passende Wiedergabe von "Kein Wiedergabegerät aktiv".

Welches Mikrophon/ Device benutzt Du und wie weit stehst Du vor dem Mikrophon? Hast Du viele Hintergrundgeräusche?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 04 September 2018, 11:36:12
@Thyraz: keine Änderung mit Deinem Vorschlag.

Was mich wundert: nicht mal bei Texteingabe, reagiert irgendwas im FHEM.
Habe die neuesten Files gezogen und installiert ( ... und täglich grüßt das Murmeltier ... ).
Jetzt erscheint im Log, als letzter Eintrag von Snips:  5: Device selected:
Dahinter steht aber nix.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 04 September 2018, 11:52:54
Das PS3 Micro , Entfernung ca. 3-4 Meter.
Habe das Ganze mal umgestellt. Zurück ins Büro. Da klappt es viel besser.
Mir kommt es vor als ob die PS3 mit "hallenden" oder großen Räumen Probleme hat.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 04 September 2018, 12:02:26
Zitat von: tomster am 04 September 2018, 11:31:01
Welches Mikrophon/ Device benutzt Du und wie weit stehst Du vor dem Mikrophon? Hast Du viele Hintergrundgeräusche?

Ja, irgendwie ist es komisch, dass du sowohl die Probleme mit dem Wakeword hast, als auch mit der Erkennung.
Ab und an eine fehlerhafte Erkennung ist sicher normal, dass hatte ich auch mit Alexa oft.
Aber gefühlt ist das bei mir mit Snips (wahrscheinlich durch den begrenzten Wortschatz) weit seltener.

Hast du mal versucht mit arecord händisch eine WAV Datei aufzunehmen und die dann zum PC zu übertragen?
Musst Snips davor beenden, damit das Micro freigegeben ist.

Dann könntest mal schauen wie die Audioqualität und die Lautstärke ist.
Z.B. ob etwas übersteuert wenn nah dran bist, oder ob es extrem leise ist, vor allem wenn du etwas entfernt bist.

Man kann mit alsamixer die MIC Volume und MIC BOOST anpassen.
Damit die Einstellungen einen Neustart überleben noch ein 'sudo alsactl store' hinterher...

Zitat von: Neuhier am 04 September 2018, 11:36:12
@Thyraz: keine Änderung mit Deinem Vorschlag.
...
Jetzt erscheint im Log, als letzter Eintrag von Snips:  5: Device selected:
Dahinter steht aber nix.


Mit meinem Vorschlag meinst du "Temperatur Thermometer Draußen" sagen?
Was erscheint denn alles im Log?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 04 September 2018, 12:12:45
2018.09.04 12:09:23 5: set textCommand - value: sage temperatur thermometer aussen
2018.09.04 12:09:23 1: PERL WARNING: Use of uninitialized value in substitution (s///) at ./FHEM/10_SNIPS.pm line 627.
2018.09.04 12:09:23 5: Parsed value: sage temperatur thermometer aussen for key: input
2018.09.04 12:09:23 1: PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/10_SNIPS.pm line 660.
2018.09.04 12:09:23 5: Parsed value:  for key: intent
2018.09.04 12:09:23 5: Parsed value:  for key: probability
2018.09.04 12:09:23 5: Parsed value:  for key: siteId
2018.09.04 12:09:23 5: Parsed value:  for key: sessionId
2018.09.04 12:09:23 5: sending message to NLU: {"id":"{\u0022Channel\u0022:null,\u0022Device\u0022:null,\u0022Room\u0022:null,\u0022input\u0022:\u0022sage temperatur thermometer aussen\u0022,\u0022sessionId\u0022:null,\u0022siteId\u0022:null}","input":"sage temperatur thermometer aussen","sessionId":"fhem.textCommand"}
2018.09.04 12:09:23 5: publish received for hermes/nlu/intentParsed, {"id":"{\"Channel\":null,\"Device\":null,\"Room\":null,\"input\":\"sage temperatur thermometer aussen\",\"sessionId\":null,\"siteId\":null}","input":"sage temperatur thermometer aussen","intent":{"intentName":"blubber:GetNumeric","probability":0.93911445},"slots":[{"rawValue":"thermometer","value":{"kind":"Custom","value":"thermometer"},"range":{"start":16,"end":27},"entity":"de.fhem.Device","slotName":"Device"},{"rawValue":"aussen","value":{"kind":"Custom","value":"aussen"},"range":{"start":28,"end":34},"entity":"de.fhem.Room","slotName":"Room"}],"sessionId":"fhem.textCommand"}
2018.09.04 12:09:23 5: Parsed value: aussen for key: Room
2018.09.04 12:09:23 5: Parsed value: thermometer for key: Device
2018.09.04 12:09:23 5: Parsed value: sage temperatur thermometer aussen for key: input
2018.09.04 12:09:23 5: Parsed value: GetNumeric for key: intent
2018.09.04 12:09:23 5: Parsed value:  for key: siteId
2018.09.04 12:09:23 5: Parsed value: fhem.textCommand for key: sessionId
2018.09.04 12:09:23 5: Parsed value: 0.93911445 for key: probability
2018.09.04 12:09:23 5: handleIntentGetNumeric called
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 04 September 2018, 13:04:56
Kann es sein, dass mit dem Alsamixer keine Einstellung für die Aufnahme möglich sind.
Mit F6 sehe ich zwar die PS3Eye , beim auswählen steigt jedoch der Alsamixer aus.
Fehler beim Laden der Mixer-Regler: Das Argument ist ungültig
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 04 September 2018, 13:16:31
@Neuhier irgendwas läuft hier gewaltig schief. ;)

Bei deinem ersten Beispiel dachte ich noch du hängst absichtlich vorne ein "sage" an den Satz um GetNumeric statt Status zu triggern.
Jetzt ist der Satz aber ja wieder "sage temperatur thermometer aussen".
Sollte in dem Fall aber wahrscheinlich nichts ausmachen.

Dürfte aber einige Snips-Kommandos geben, die mit einem immer vorn angehängten "Sage" nicht funktionieren...

Dann sehen wir, dass diese Message an NLU übergeben wird.

2018.09.04 12:09:23 5: sending message to NLU: {"id":"{\u0022Channel\u0022:null,\u0022Device\u0022:null,\u0022Room\u0022:null,\u0022input\u0022:\u0022sage temperatur thermometer aussen\u0022,\u0022sessionId\u0022:null,\u0022siteId\u0022:null}","input":"sage temperatur thermometer aussen","sessionId":"fhem.textCommand"}


Ganz hinten sieht man den Text der von NLU geparsed werden soll: "sage temperatur thermometer aussen".
Das sollte eigentlich nicht so aussehen. Da NLU die Geräte- und Raumnamen (im Gegensatz zu ASR) nicht kennt, ersetze ich die vor dem abschicken durch Dummybezeichnungen.

Eigentlich müsste da "sage temperatur standardgerät standardraum" stehen.
Wenn die Ersetzung nicht klappt, scheint das Snips Modul keine Geräte und Räume mit den Bezeichnungen zu finden.
Sind die Devices in FHEM im Raum Snips?

Was kommt denn als Ausgabe wenn du das in der FHEM Kommandozeile eingibst:

{ join " ", SNIPS::allSnipsNames()) }

Das sollte alle snipsName Attribut-Werte zeigen, die in deinem FHEM im Raum Snips existieren.


Was mich dann aber noch stutziger macht: Obwohl die Ersetzung nicht klappt, und NLU nicht wissen dürfte, dass thermometer ein Gerät und aussen ein Raum ist, klappt dieser Teil:

{"rawValue":"thermometer","value":{"kind":"Custom","value":"thermometer"},"range":{"start":16,"end":27},"entity":"de.fhem.Device","slotName":"Device"}


Kann es sein, dass du die Snips FHEM App geforked hast und den Device Slot händisch mit Werten befüllst wie was am Anfang nötig war?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 04 September 2018, 13:28:53
{ join " ", SNIPS::allSnipsNames()) }

Da ist eine klammer zu viel. ;-)

{ join " ", SNIPS::allSnipsNames() }
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 04 September 2018, 13:29:01
JA, habe die "dupliziert" und bearbeitet.
Mit dem { join " ", SNIPS::allSnipsNames()) }
kommt nur
syntax error at (eval 2981) line 1, near ")) "

Mit
{ join " ", SNIPS::allSnipsNames() }
kommt ein leeres Fenster......  :-[

In den Geräten, die gesteuert/ überwacht werden sollen, ist jeweils attr SnipsRoom + Name eingetragen.
Wenn ich das oben aber richtig verstehe, muß explizit ein Raum Snips angelegt werden ?????
Und dort drin nochmal die Geräte?


Ich brech´z´samm....
Das war der ganze Fehler....
Müßte ( für Langsamdenker, wie mich ) in der Anleitung besser hervorgehoben werden.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 04 September 2018, 13:43:38
Jetzt lies doch bitte mal das GitHub des Entwicklers ganz ruhig durch.
Der Abschnitt beginnt mit "Geräte in FHEM für Snips sichtbar machen"
Ein paar Zeilen darunter "Damit Snips Geräte aus FHEM erkennt und auch ansprechen/abfragen kann, sind ein paar Voraussetzungen zu erfüllen:

Raum Snips
Snips sucht nur nach Geräten, die in FHEM im Raum Snips liegen.
Also bei allen Geräten die ihr ansprechen wollt diesen Raum hinzufügen."

Alles in der reihenfolge mal machen dann klappts auch ;-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 04 September 2018, 13:53:50
Wie war der Spruch:
kaum macht man es richtig, funktioniert es auch.

Ich habe mich irritieren lassen, weil etwas weiter unten, nochmals Raum und Snips auftauchen.

Zitat"Also bei allen Geräten die ihr ansprechen wollt diesen Raum hinzufügen."

Und das habe ich als erledigt angesehen, wenn ich dem Gerät das Attribut "snipsRoom: Gerätename" verpasse.
Eine reine Fehlimterpretation meinerseits also.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 04 September 2018, 14:00:45
Zitat von: kud am 04 September 2018, 13:04:56
Kann es sein, dass mit dem Alsamixer keine Einstellung für die Aufnahme möglich sind.

Hast recht. Bin der Meinung, dass das unter Jessie am Anfang bei mir noch ging.
Jetzt hab ich den selben Fehler.  ???
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 04 September 2018, 14:24:56
Zitat von: kud am 04 September 2018, 11:52:54
Das PS3 Micro , Entfernung ca. 3-4 Meter.
Habe das Ganze mal umgestellt. Zurück ins Büro. Da klappt es viel besser.
Mir kommt es vor als ob die PS3 mit "hallenden" oder großen Räumen Probleme hat.
ich habe das gleiche Teil im grossen Esszimmer (Hall, Akustik?). Wenn ich allein im Raum bin und kein Radio an ist, funktioniert die Erkennung recht gut. Sobald das Radio läuft oder eine Unterhaltung irgendwo im Raum stattfindet, dann ist die Erkennung recht schlecht. Da ich im Alsamixer auch nichts einstellen kann suche ich auch mit nach Optimierungsmöglichkeiten. Wenn ich eine Idee habe, bin ich wieder hier....
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 04 September 2018, 14:27:13
Irgendwo hatte mir Google mal was gezeigt, was für das PS3eye in asound.cfg rein soll.
Finde es nur auf die Schnelle nicht.
Titel: Antw:Neues Modul: SNIPS für Sprachsteuerung mit snips.ai
Beitrag von: enno am 04 September 2018, 14:32:10
Ich habe das wie in #3 hier ganz oben bei mir drin:

Zitat von: mark79 am 22 Juli 2018, 15:04:59
cat /etc/asound.conf
pcm.!default {
  type asym
  playback.pcm {
    type plug
    slave.pcm "hw:1,0"
  }
  capture.pcm {
    type plug
    slave.pcm "hw:0,0"
    slave.channels 4
    ttable {
    0.0 30.0
    1.1 30.0
  }
}
}

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 04 September 2018, 14:44:04
  playback.pcm
    slave.pcm hw:1,0

  capture.pcm
    slave.pcm hw:0,0

Muß Playback nicht hw=0,0 und Capture hw=1,0 sein?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 04 September 2018, 15:31:46
Mal zum Thema Hintergrundgeräusche und Musik:

Habt ihr denn Vergleichserfahrungen mit Alexa & Co?

Ich habe da mit Hintergrundmusik jedenfalls ebenfalls schlechte Erfahrungen gehabt (solang die Musik nicht über Alexa selbst ausgegeben wurde und sie sie somit gemuted hat).
Daher auch die Readings in Snips, auf die man Reagieren kann um ebenfalls die Musik stummzuschalten.

Ich nutze das dann meist so: "HEY SNIPS (was meist recht gut erkannt wird wenn man es lauter sagt) ... Warten auf Stummschaltung ... umschalten auf SWR3"

Ich habe das zu Alexa-Zeiten allerdings nicht so intensiv genutzt um da groß vergleichen zu können...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 04 September 2018, 16:29:24
Zitat von: Thyraz am 04 September 2018, 14:00:45
Hast recht. Bin der Meinung, dass das unter Jessie am Anfang bei mir noch ging.
Jetzt hab ich den selben Fehler.  ???
Bei mir hat das auch noch nie funktioniert.
Ich bilde mir ein irgendwo gelesen zu haben, dass es beim PS3Eye unter Linux zu Erkennungsproblemen kommt. ALSA mag wohl das Device nicht so recht als Mikrophon erkennen, respektive fehlt ein entsprechender Support-Mixer für die 4 Mikrofon-Inputs. So wie ich es verstanden habe, kann man zwar nicht auf die einzelnen Mixer zugreifen, aber das "fehlerhafte" Default-Setup reicht aus um das Device für unsere Zwecke zu benutzen. Leider habe ich von ALSA ungefähr soviel Ahnung wie D. Trump von Frisuren.

--edit--
Hier steht noch was dazu:
http://blog.michaelamerz.com/wordpress/trying-respeaker-mic-array-v2-0/
Mit dieser Konfiguration kann ich zumindest den Mic-Gain des PS3-Eyes einstellen.

In dem Text steht auch, dass das PS3-Eye wohl nur "gerichtete" Ansagen erkennt. Man darf also nicht zuu weit weg oder seitlich des Aufnahmekegels stehen...
Für größere Räume sei ein Mikro wie z.B. das ReSpeaker besser geeignet, weil der eingebaute DSP das gesprochene Wort schlichtweg besser herausfiltert.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 04 September 2018, 18:28:42
Also meine Konfig zum Testen.
Reihenhaus und ruhig.
Micro steht im Arbeitszimmer OG hintere Ecke.
Unten im Flur vor der Treppe spreche ich laut "Wie ist die Luftfeuchte..."
und.... Das Ding antwortet korrekt. Ist schon Klasse. Das schafft Alexa nicht.
Die Micro-Geschichte der PS3 ist wohl sehr differenziert zu betrachten.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 04 September 2018, 19:53:49
Zitat von: kud am 04 September 2018, 18:28:42
Also meine Konfig zum Testen.
Reihenhaus und ruhig.
Micro steht im Arbeitszimmer OG hintere Ecke.
Unten im Flur vor der Treppe spreche ich laut "Wie ist die Luftfeuchte..."
und.... Das Ding antwortet korrekt. Ist schon Klasse. Das schafft Alexa nicht.
Die Micro-Geschichte der PS3 ist wohl sehr differenziert zu betrachten.

Das heißt du hast 2 Satelliten, einen mit PS3 Eye und einmal was anderes oder wie ist das zu verstehen?
Oder wie ist der Zusammenhang zwischen guter (zitierter Post) und schlechter Erkennung (die letzten Posts) bei dir?

Sorry, zu viel Input in den letzten Tagen hier. Ich komm nicht mehr mit.  :P
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 04 September 2018, 19:58:18
ich habe mir eben 4 Array ReSpeaker bestellt. Mal sehen wie sich das Ding im direkten Vergleich an gleicher Stelle schlägt. Lieferung Freitag. Ich werde berichten...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 04 September 2018, 20:21:32
Ich warte auch noch auf die Lieferung meines "Matrix Voice". Hatte ich vor ca. 1,5 Jahren Mal auf indiegogo "gebacked", aber noch keines erhalten. Die Kommunikation mit den Jungs ist ziemlich schleppend. Ich hoffe allerdings, dass das bei deren Device nicht der Fall ist ;-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 04 September 2018, 21:31:20
Respeaker V2 scheint bei einigen deutschen Händlern auf Lager zu sein,
somit klappt das hoffentlich besser. ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 04 September 2018, 22:55:50
Mal wieder eine neue Version:

Die Response des Status Intent kann nun auch in geschwungenen Klammern als Perl-Code angegeben werden
(Mixen ist nicht möglich, entweder Textformat wie bisher schon möglich, oder komplett Perl.)
Damit sind auch komplexere/flexiblere Ausgaben möglich.
Beispiel: Mit "Status Haus" einen Überblick zu über alles Wichtige zu bekommen:
Anzahl offener Fenster, Anzahl angeschalteter Lampen & Geräte, Restzeit Waschmaschine + Trockner, Neue Anrufe auf dem Anrufbeantworter, ...


GetNumeric hat einen neuen Type ,,Wasserstand"
Wunsch von Roman.

Bugfix: GetNumeric klappt nun auch wenn kein Type mit ausgesprochen wurde
Siehe Diskussion der letzten Seiten.

Last but not least: Der SetColor Intent. ;)

Funktioniert an sich wie der MediaChannels Intent:
Eigenes Mapping snipsColors im Device und pro Zeile ein Eintrag im Format Farbname:cmd.

Ist hier detailliert erläutert:
https://github.com/Thyraz/Snips-Fhem/blob/master/README.md#setcolor

Installation
- Assistent von console.snips.ai herunterladen und installieren (oder über sam install assistant) damit ihr die neuste FHEM App habt.
- Neues Snips Modul von Github einspielen
- Fhem neu starten
- set <snipsDevice> updateModel ausführen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 05 September 2018, 10:15:49
Vielleicht zu erwähnen (weil ich selbst verunsichert war).
Nachdem "attr Lampe1 userattr snipsColors:textField-long" erscheint das Attribut "userattr   snipsColors:textField-long" im Device Lampe1.
Diese Zeile wird NICHT bearbeitet sondern bleibt so stehen.
Jetzt ein neues Attribut hinzufügen. Im Dropdown den Eintrag "snipsColors" suchen und dort wird die Beschreibung der Farben (rot=rgb FF0000...) hinterlegt.

Vielleicht hilft es dem Einen oder anderen ;-)

Und so nebenbei. Das klappt SUUUUPER mit meinen HUEs! Danke tolle Arbeit.

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 05 September 2018, 11:23:34
Zitat von: Thyraz am 04 September 2018, 19:53:49
Das heißt du hast 2 Satelliten, einen mit PS3 Eye und einmal was anderes oder wie ist das zu verstehen?
Oder wie ist der Zusammenhang zwischen guter (zitierter Post) und schlechter Erkennung (die letzten Posts) bei dir?
Nein. Ich habe keine Satelliten. Nur eine PS3 Eye im Einsatz (auf Vorrat liegen aber noch 3)
Habe an den Einstellungen nicht verändert. Also Standard Alsa.
Die jetzige Position ist eigentlich vollkommen daneben. Der PS3Eye gefällt sie aber ;-)
Gut. Ich rede etwas lauter , schreie aber nicht. Das Büro ist ca. 4 Meter lang. Die Aufnahme mit arecord klingt nicht besonders aber unterscheidet sich nicht wesentlich ob ich davor spreche oder an die Tür gehe. Die Lautstärke bleibt fast gleich.
Snips reagiert auch wenn ich vor die Tür gehe und in die andere Richtung spreche. Selbst wenn ich im Reihenhaus die Treppe runter gehe und unten in den Flur spreche auch wieder in die entgegengesetzte Richtung klappt es mit Snips.
Und jetzt kommt der Knaller. Ich war gerade unten im Keller und rufe laut nach Snips. "Temperatur Garten"...und es klappt.
Also über 2 Etagen offene Treppe , Flur im OG , normale Türöffnung bis in die 4 m entfernte Ecke.

Zu den Problemen, welche ich vorher hatte. Wahrscheinlich habe ich zwischen Hey Snips und den Befehl nicht lang genug gewartet ;-(
Da ich keinen Lautsprecher am SnipsPi habe kommt nur noch das Ergebnis via TTS an. Im übrigen ist die Ansage via Fhem-TTS schneller als die Ausgabe am Pi selbst. (Minimal)




Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 05 September 2018, 11:58:37
Zitat von: kud am 05 September 2018, 11:23:34
Zu den Problemen, welche ich vorher hatte. Wahrscheinlich habe ich zwischen Hey Snips und den Befehl nicht lang genug gewartet ;-(
Da ich keinen Lautsprecher am SnipsPi habe kommt nur noch das Ergebnis via TTS an. Im übrigen ist die Ansage via Fhem-TTS schneller als die Ausgabe am Pi selbst. (Minimal)

Ah, das ist fies.
Snips spielt standardgemäß einen Sound nach der Hotword-Erkennung.
Wahrscheinlich reagiert ASR erst danach auf den Audiostream.

Wenn man den Sound nicht hört, muss man also eine kleine Denkpause einlegen.  :P

Evtl. geht es ein wenig schneller wenn du die Sounds deaktivierst:

sam sound-feedback off


Bin mir aber nicht sicher ob man dann wirklich früher sprechen kann, oder ob das eher kosmetischer Natur ist...

edit: In der Snips Community hab ich eine Aussage gefunden, dass an einem Stück reden "not yet possible" ist.
Bleibt also die Hoffnung, dann man in einer späteren Version "Hey Snips, wie warm ist es im Garten" sagen kann ohne eine Zwangspause dazwischen...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 05 September 2018, 12:11:14
Gerade mal probiert mit sam sound-feedback off
Die Eingabe geht aber eine ganze Ecke schneller ;-)) Fast ohne Pause.

Übrigens habe ich mal das Radio dazu eingeschaltet... Naja. Da tut sich die PS3Eye natürlich viel schwerer ;-(
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Wal am 05 September 2018, 12:52:43
Habe mein Respeaker 2.0 USB unter dem Fernseher stehen und das Teil funktioniert in 9 von 10 fällen, selbst wenn der Fernseher mit mittlerer Lautstärke läuft.
Aber wo Licht ist, ist auch Schatten. Ab und Zu kommt aus dem am Respeaker angeschlossenen Lautsprecher nur noch verzerrte Antworten, die erst nach einem USB rein/raus weg sind. Dieser Fehler scheint aber niemand sonst zu haben, da ich im Inet nichts finde.
Einen Jabra 410 USB habe ich auch, der ist trotz nur einem Mikrofon fast gleich gut. Bei der Erkennung mit Hintergrundgeräuschen, ist der Unterschied erkennbar aber nicht unzumutbar (ca. 6 von 10).
Bei Sprache aus dem Fernseher, kommt es auch zu Fehlzündungen von Snips, allerdings wie gesagt steht das Teil nur 30 cm vom Fernseher entfernt.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 05 September 2018, 13:25:31
Hat schon Jemand Erfahrungen/Tips  in der "Satelliten"-Konfiguration ?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 05 September 2018, 13:42:58
Ich hab es noch vor mir, an sich sollte es aber recht einfach sein.
Auf den Satelliten muss meines Wissens nach nur der snips-audio-server laufen.

Alles Weitere geht über das Hauptgerät.

Konfiguration erfolgt über die /etc/snips.toml auf den jeweiligen Geräten.

In jedem Device muss die siteId gesetzt werden.
Sieht beim Hauptgerät so aus:

[snips-audio-server]
bind = "default@mqtt"


Beim Satelliten dann so:
[/code]
[snips-audio-server]
bind = "wohnzimmer@mqtt"
[/code]

Zusätzlich muss man dem Hotword-Detector im Hauptgerät noch sagen, auf welche Audiostreams er lauschen soll:

[snips-hotword]
audio=["default@mqtt", "wohnzimmer@mqtt"]


Btw. was mir da auffällt:
ich hoffe das klappt mit Umlauten.
Das Modul bestimmt ja aus der siteId den aktuellen Raumnamen, damit ihr z.B. "Deckenlampe an" sagen könnt ohne den Raum zu nennen.

Wenn Snips da z.B. bei "küche@mqtt" Probleme macht, wird man sich da nochmal was einfallen lassen müssen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 05 September 2018, 14:01:04
Hi kud,
ich habe einen Satelliten eingerichtet, ist eigentlich relativ simpel. Wichtig ist, dass nur der snips-audio-server auf dem satelliten läuft, wie Thyraz ja auch schon geschrieben hat. Das Vorgehen ist ganz gut unter
https://www.smb-tec.com/blog/is-it-google-aiy-nah-its-snips (https://www.smb-tec.com/blog/is-it-google-aiy-nah-its-snips)
beschrieben. Ab "3. Configure Snips Audio Server" ist der relevante Teil zu finden.

Es gibt auch ein Script, das die Einrichtung erleichtern soll:
https://github.com/Psychokiller1888/satConnect (https://github.com/Psychokiller1888/satConnect)
Das habe ich allerdings nicht ausprobiert.

Seit kurzem gibt es auch die Möglichkeit, snips-hotword auf dem Satelliten laufen zu lassen, das Vorgehen dafür ist allerdings noch nicht in der Doku und habe ich auch noch nicht ausprobiert. Bei Discord gab es eine kurze Info dazu.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 05 September 2018, 15:34:57
Geht ja eigentlich ganz einfach mit 2 Snippies ;-)
Nur schaffe ich es nicht durch "sam sound-feedback off" das Bling beim Satelliten wegzuschalten.
Habe natürlich vorweg das "sam connect" mit dem Satelliten gemacht. Hmm..

Und vielleicht mal zur Hotworderkennung. Was macht der Satellit denn eigentlich? Werkennt er "Hey Snips" nicht eigenständig? 
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 05 September 2018, 16:01:12
@kud: Das Problem mit "sound-feedback off" am Satelliten habe ich auch. Bin da bisher noch zu keiner Lösung gekommen. Ich habe aktuell die Soundausgabe am Satelliten deaktiviert, deshalb stört mich das auch nicht. Allerdings wäre eine Verkürzung der "Wartezeit" nach dem Hotword natürlich schon super

Zur Hotword-Erkennung: Der Satellit streamt dauerhaft über mqtt den audiostream an die main-unit. Auf der main-unit analysiert snips-hotword den stream und sendet bei hotword-Erkennung per mqtt die Info zurück an den satelliten. Ist natürlich nicht optimal. Wie gesagt, die hotword-Erkennung soll wohl schon lokal auf dem satelliten funktionieren, ist bisher aber noch nicht in der Doku beschrieben. Such bei Interesse mal bei discord, dort wurde das Vorgehen beschrieben.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 05 September 2018, 16:26:11
An sich sollte das mit dem Feedback per MQTT funktionieren.
https://snips.gitbook.io/documentation/ressources/hermes-protocol#sound

Per Terminal auf der Snips-Hauptinstallation (dort wo der MQTT Server läuft):

mosquitto_pub -h localhost -t hermes/feedback/sound/toggleOff -m '{"siteid"="default"}'


Default eben gegen die passende siteId ersetzen.


edit: Das mit lokaler Hotword-Erkennung ist interessant.
Aber wenn dann Audio nicht mehr zum Main-Device gestreamt werden soll, müsste doch auch ASR auf dem Satellit laufen oder?
Und dann wäre da sicher auch wieder dickere Hardware nötig.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 05 September 2018, 16:53:33
So wie ich es verstanden habe ist nur die Hotword-Erkennung lokal auf dem satelliten. Das heißt, sobald das Hotword erkannt wurde wird der Audiostream wieder an das main-device weitergeleitet und dort mittels asr und nlu verarbeitet.
In Discord wurde folgende Anleitung für das Einrichten von local-hotword verlinkt. Ich habe es wie schon geschrieben aber noch nicht selber ausprobiert:
https://gist.github.com/mtrey/04af1660452ec8dab7b706d1a5f24a93 (https://gist.github.com/mtrey/04af1660452ec8dab7b706d1a5f24a93)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 06 September 2018, 09:32:04
Hier mal ein Konfigurationstip zum Thema Lichtsteuerung der aus einer PN-Unterhaltung hervor ging:

Zitat
Das Snips Modul versteht "Licht" von sich aus nicht.
Für das Modul läuft das alles über GetOnOff, welches bisher auch keine Option "type" hat um Lampen zu identifizieren.

Ich bin auch eher dagegen hier eine Automatik seitens des Moduls einzubauen,
da dem User dann die Freiheit genommen wird zu Bestimmen was genau bei "Licht an" passieren soll.
Im Moment ist "Licht" für Snips ein Gerätename wie jeder andere auch.

...

Wenn du in verschiedenen Räumen "Licht an" sagen willst, musst du also dafür sorgen, dass Snips eindeutig bestimmten kann was du willst.

Ich habe für jeden snipsRoom ein Device welches den snipsName "Licht" trägt.
Je nach Raum können das unterschiedliche Device-Typen sein.

- Im Büro ist es ein Mapping bei einer einzelnen Deckenlampe.

- Im Wohnzimmer hab ich ein recht komplexes DOIF das sich um die Beleuchtung kümmert.
  Dort kann händisch durch Doppelklick eines Lichtschalter für die Szenenwahl eingegriffen werden.
  Zwei DOIF Stränge sind hier für "Standardbeleuchtung" und "Alles aus" zuständig.
  SetOnOff schaltet hier einfach mit "set <doif> cmd_x" den passenden DOIF-Strang.

- Im Schlafzimmer hab ich keine so komplexe Steuerung, aber dennoch ein paar verschiedene Beleuchtungsszenen für Deckenlampe/Nachttischlampen/eine Lichterkette.
  Geregelt ist das über das Lightscene Modul.
  Diesem habe ich hier direkt snipsName "Licht" und snipsRoom "Schlafzimmer" verpasst.
  Das SetOnOff Mapping startet dann einfach die Standardszene bzw. die AllOff Szene.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 06 September 2018, 10:20:41
Und ein kleines Update: Lautstärke von Snips aus FHEM heraus steuern.

Ich hab einen kleinen Python Service geschrieben der auf bestimmte MQTT Nachrichten reagiert und daraufhin die Alsa-Systemlautstärke ändert.
Im neuen Update des FHEM Moduls ist ein neuer volume set-Befehl implementiert der den Service dann über MQTT ansteuert.

Installation:
https://github.com/Thyraz/Snips-Fhem/blob/master/README.md#lautst%C3%A4rke-von-snips-aus-fhem-heraus-steuern
Dann:
Neue Version von 10_SNIPS.pm laden und FHEM neu starten.

Syntax des volume Befehls:
set <snipsDevice> volume siteId="<siteId>" volume="<volume>"

Beispiel:

set Snips volume siteId="default" volume="50"


Wenn es jemand testet würde ich mich über eine kurze Rückmeldung freuen ob es bei euch funktioniert.
Eine Sache die bei mir etwas komisch ist: Die Lautstärkewerte stimmen nicht mit dem überein was alsamixer im Terminal anzeigt.
Bei Volume-Werten von 0 bis 30 tut sich in alsamixer reichlich wenig. Danach geht es aber recht linear bis zu 100 Prozent weiter.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ChrisK am 06 September 2018, 13:02:20
Also ich muss Dich Thyraz jetzt nochmal loben.
Ich war jetzt über ne Woche quasi offline und hier gibt es 10 neue Seiten und 4-5 neue Versionen vom Modul und dem Assistenten. Respekt und vielen Dank!
Ich hatte vorher den Snips-Pi runtergefahren, jetzt wieder hochgefahren und alles klappt auf Anhieb wieder. Sehr schön.

Mittlerweile habe ich die Lautsprecher vom Pi entfernt und Sonos Play 1, der in der Nähe aufgestellt ist, dient per notify als Lautsprecher. Ob das so bleibt schauen wir mal.

Eigentlich wollte ich nur mal danke sagen :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 06 September 2018, 18:03:12
Zitat von: jowe am 05 September 2018, 16:53:33
So wie ich es verstanden habe ist nur die Hotword-Erkennung lokal auf dem satelliten. Das heißt, sobald das Hotword erkannt wurde wird der Audiostream wieder an das main-device weitergeleitet und dort mittels asr und nlu verarbeitet.
In Discord wurde folgende Anleitung für das Einrichten von local-hotword verlinkt. Ich habe es wie schon geschrieben aber noch nicht selber ausprobiert:
https://gist.github.com/mtrey/04af1660452ec8dab7b706d1a5f24a93 (https://gist.github.com/mtrey/04af1660452ec8dab7b706d1a5f24a93)

Also das klappt bei mir nicht. Da warte ich mal auf was "offizielles" ;-)

Die Standard-Satelliten Installation geht ja.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 06 September 2018, 19:52:00
Zitat von: Thyraz am 06 September 2018, 10:20:41
Und ein kleines Update: Lautstärke von Snips aus FHEM heraus steuern.

sudo ./snips-volume.py starten.

klappt bei mir nicht. Mit folgendem Code klappt es:
sudo python3 /opt/snips-volume/snips-volume.py

Den Rest teste ich später.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 06 September 2018, 19:55:41
@ChrisK, danke für die Blumen. :)

@enno, stimmt damit sollte es klappen egal welche Python Version als Standard definiert ist.
Änder ich in der Doku.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 06 September 2018, 20:22:54
mit:set Snips volume siteId="default" volume="50"
hätte ich erwartet, dass ich die Lautstärkenänderung auf dem laufenen alsamixer sehen können müsste. Tut sich aber leider nichts....
Snips ändert die Ausgabe leider auch nicht. Also funktioniert bei mir erst mal nicht.

Wenn ich sudo python3 /opt/snips-volume/snips-volume.py

Dann in FHEM set Snips volume siteId="default" volume="0" stürzt das Script mit folgender Fehlermeldung ab:

pi@snipes:~ $ sudo python3 /opt/snips-volume/snips-volume.py
MQTT connected
Traceback (most recent call last):
  File "/opt/snips-volume/snips-volume.py", line 96, in <module>
    client.loop_forever()
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 1578, in loop_forever
    rc = self.loop(timeout, max_packets)
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 1072, in loop
    rc = self.loop_read(max_packets)
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 1374, in loop_read
    rc = self._packet_read()
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 2071, in _packet_read
    rc = self._packet_handle()
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 2560, in _packet_handle
    return self._handle_publish()
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 2759, in _handle_publish
    self._handle_on_message(message)
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 2902, in _handle_on_message
    callback(self, self._userdata, message)
  File "/opt/snips-volume/snips-volume.py", line 48, in on_set
    set_volume(volume)
  File "/opt/snips-volume/snips-volume.py", line 35, in set_volume
    mixer = alsaaudio.Mixer()
alsaaudio.ALSAAudioError: Unable to find mixer control Master,0 [default]


Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 06 September 2018, 20:44:54
Ok, irgendwas ist also anders als bei mir. ;)
Wäre auch zu einfach gewesen, wenn das auf Anhieb so geklappt hätte...

Kannst du mal folgendes bei dir im Terminal eingeben:
1)

sudo python3

2) Ab jetzt bist du in der Python Konsole:

import alsaaudio

3)

mixer = alsaaudio.Mixer()

4)

volume = mixer.getvolume()

5) Folgendes sollte dann irgendwas Sinnvolles ausgeben: (Bei mir kommt dann [72, 72])

volume

6) Verlassen kannst du die Python Konsole dann so:

exit()


Mal sehen ob das Licht ins Dunkel bringt ...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 06 September 2018, 20:50:51
pi@snipes:~ $ sudo python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170124] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import alsaaudio
>>> mixer = alsaaudio.Mixer()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
alsaaudio.ALSAAudioError: Unable to find mixer control Master,0 [default]
>>> volume = mixer.getvolume()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'mixer' is not defined
>>> volume
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'volume' is not defined
>>>
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: noname41 am 06 September 2018, 21:14:24
Hi,

ich wollte gerade das FHEm-Modul installieren und bekomme folgende Fehlermeldung:
reload: Error:Modul 10_SNIPS deactivated:
Excessively long <> operator at ./FHEM/10_SNIPS.pm line 21.

Excessively long <> operator at ./FHEM/10_SNIPS.pm line 21.

wie kann ich das Lösen?
Danke und LG
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 06 September 2018, 22:46:24
Zitat von: enno am 06 September 2018, 20:50:51

>>> mixer = alsaaudio.Mixer()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
alsaaudio.ALSAAudioError: Unable to find mixer control Master,0 [default]


Ok, er findet also nichtmal den Mixer für deine Soundkarte. :-\

Kannst du mal deine /etc/asound.conf posten und die Ausgabe von sudo aplay -l

Bin mal gespannt ob man das dann überhaupt generisch für alle User hinbekommt,
oder ob man das editieren muss je nach verwendeter Soundkarte.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 06 September 2018, 22:51:23
Zitat von: noname41 am 06 September 2018, 21:14:24
wie kann ich das Lösen?

Hallo noname41,
hast du die aktuelle Version von Github?
Ist dein FHEM auch recht aktuell?

Auf Github ist Line 21 Teil dieser Hash Definition:

my %sets = (
    "say" => "",
    "play" => "",
    "updateModel" => "",
    "textCommand" => "",
    "volume" => ""
);

Da ist eigentlich nichts Verdächtiges bei.
Finde es auch komisch, dass er eine Zeile mitten in der Definition anmeckert.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 07 September 2018, 06:43:25
Zitat von: Thyraz am 06 September 2018, 22:46:24
Kannst du mal deine /etc/asound.conf posten und die Ausgabe von sudo aplay -l

pi@snipes:~ $ cat /etc/asound.conf
pcm.!default {
  type asym
   playback.pcm {
     type plug
     slave.pcm "hw:0,0"
   }
capture.pcm {
    type plug
    slave.pcm "hw:1,0"
    slave.channels 4
    ttable {
    0.0 30.0
    1.1 30.0
  }
}
}
pi@snipes:~ $ sudo aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: ALSA [bcm2835 ALSA], Gerät 0: bcm2835 ALSA [bcm2835 ALSA]
  Sub-Geräte: 7/7
  Sub-Gerät #0: subdevice #0
  Sub-Gerät #1: subdevice #1
  Sub-Gerät #2: subdevice #2
  Sub-Gerät #3: subdevice #3
  Sub-Gerät #4: subdevice #4
  Sub-Gerät #5: subdevice #5
  Sub-Gerät #6: subdevice #6
Karte 0: ALSA [bcm2835 ALSA], Gerät 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: noname41 am 07 September 2018, 07:49:48
Hallo Thyraz,

danke für die rasche Antwort.

Ich habe FHEM zu beginn der Installation aktualisiert.

Kurz die Zusammenfassung meiner Schritte mit der Rückfrage ob diese korrekt waren?
Installation von MQTT auf dem FHEM-Rasperry nach dieser Anleitung:
https://wiki.fhem.de/wiki/MQTT_Einf%C3%BChrung

Definition von MQTT in FHEM:
define SnipsMQTT MQTT <ip-or-hostname-of-snips-machine>:1883

Installation von SNIPS auf entferntem Raspberry laut Github
https://github.com/Thyraz/Snips-Fhem

Import der 10_SNIPS.pm aus Github. Danach neustart von FHEM
definition von SNIPS:
define Snips SNIPS SnipsMQTT Wohnzimmer

--> hier kam dann der Fehler

LG und Danke für die tolle Arbeit
Klaus
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 07 September 2018, 08:08:15
Zitat von: noname41 am 07 September 2018, 07:49:48
Import der 10_SNIPS.pm aus Github. Danach neustart von FHEM

Kannst du mal schauen ob die Datei anständig aussieht wenn du sie auf dem FHEM Rechner z.B. im Terminal mit "nano 10_SNIPS.pm" anschaust?

Bzw. wie hast du sie denn runtergeladen und übertragen?

Man findet im FHEM Forum einige Treffer zu diesem Fehler und fast immer hatten die User dann eine HTML Datei statt der echten Moduldatei.
Was PERL dann als langen <> (größer/kleiner) Vergleich anmeckert kommt dann durch irgendwelche HMTL Tags in der Datei...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 07 September 2018, 08:16:25
Zitat von: Thyraz am 06 September 2018, 22:46:24
Bin mal gespannt ob man das dann überhaupt generisch für alle User hinbekommt,
oder ob man das editieren muss je nach verwendeter Soundkarte.

So nun geht es (fast). Ich habe in deinem Script snips-volume.py zwei Zeilen geaendert:
Statt mixer = alsaaudio.Mixer()
steht bei mir jetzt:
mixer = alsaaudio.Mixer('PCM')

Geholfen hat mir dieser Tip:
https://stackoverflow.com/questions/41592431/changing-volume-in-python-program-on-raspbery-pi
Zitat
If the line m = alsaaudio.Mixer() throws an error, then try:

m = alsaaudio.Mixer('PCM')

this might happen because the Pi uses PCM rather than a Master channel.

You can see more information about your Pi's audio channels, volume (etc..), by running the command amixer.

und hier ein paar Beispiele, wie man das vielleicht automatisieren kann:
https://www.programcreek.com/python/example/91452/alsaaudio.Mixer

Das Startscript scheint aber noch nicht zu funktionieren.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 07 September 2018, 09:34:34
Das sieht ja schonmal gut aus.
Danke für die Fehlersuche. :)

Werde mir das mit dem Automatisieren mal anschauen am WE.

Zum Thema Service:
An sich ist das nur eine Kopie von snips-tts-polly.service.
Der läuft problemlos bei dir?

Evtl. mal StandardOutput und StandardError beim Service mitloggen lassen?
https://stackoverflow.com/questions/37585758/how-to-redirect-output-of-systemd-service-to-a-file/37595720

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 07 September 2018, 11:54:43
Hallo Zusammen,

bin das Readme nun 3 mal durchgegangen, ich könnte etwas hilfe brauchen.
Server läuft, Fhem über SAM eingespielt, watch zeigt Ergebnisse, siehe Anhang.

Führe ich updateModel aus, kommt auch was an.

Ich habe einfach um zu testen den Befehl

set Snips textCommand schalte Wasserkocher ein

ausgeführt.

Es hat den anschein das Snips Fhem nicht antwortet.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 07 September 2018, 12:07:10
Hallo ahlermi,

edit: vergiss was hier stand.
Führ mal sam status aus.
Ich wette der NLU Service läuft nicht.

In sam watch sollte auf das NLU was asked to parse ... eine Antwort von NLU kommen.
Die fehlt bei dir.

Wir hatten das schon bei ein paar Usern:

Da lag es am Entpacken des Assistenten unter Windows anstatt unter Linux:
https://forum.fhem.de/index.php/topic,89548.msg829864.html#msg829864

Aber eigentlich müsste der Assistent bei dir korrekt installiert sein denke ich, du nutzt ja sam.
Somit wirst du ihn wahrscheinlich über "sam install assistant" installiert haben und nicht händisch, oder?

Falls NLU wirklich nicht läuft, könntest du mal den Service über

sudo systemctl stop snips-nlu.service

stoppen und dann NLU mal händisch in der Konsole starten um eventuell ausgegeben Fehler zu sehen:

sudo snips-nlu -v

Das Fenster dann offen lassen und falls nicht sofort ein Fehler kommt mal ein Sprachkommando ansagen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 07 September 2018, 12:13:41
Reboot von Snips Rabsi hat es zum laufen gebracht  ::)

War wohl was mit den services, die sind einfach nicht gestartet.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 07 September 2018, 12:18:18
Ok, umso besser. ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 07 September 2018, 14:23:20
Zitat von: enno am 04 September 2018, 19:58:18
ich habe mir eben 4 Array ReSpeaker bestellt. Mal sehen wie sich das Ding im direkten Vergleich an gleicher Stelle schlägt. Lieferung Freitag. Ich werde berichten...

So Micro gegen 4 Array ReSpeaker (erste Version nicht V2 Core) ausgetaucht und Setup geändert. Subjektiv klappt das mit der Erkennung etwas besser als mit dem PS3 Micro. Grosser Raum etwas Hall und viele Nebengeräusche (Kinder, Radio, TV, Küchengeklapper, etc) Habe jetzt eine Schleife drin, die das Radio leiser stellt, wenn Snips "lauscht".
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: noname41 am 07 September 2018, 16:07:59
Hallo Thyraz,

vielen Dank, das war der Fehler.

LG
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 07 September 2018, 21:18:07
@enno was ist das dann genau, das 4 speaker mic für den Rapsberry?
Blicke bei den Produkten von denen nicht so recht durch.

Es gibt ja das 2 Mic und 4 Mic Array als Aufsatz für den Pi.
Haben die auch einen Prozessor drauf der Hall/Echo intern rausfiltert?

Oder haben das nur die USB Varianten (alt: 6+1 Mic Array USB alt und neu: 4 Mic Array USB V2)
Die Core V1 und V2 sind meines Wissens ja einfach die alte bzw. neue USB Variante mit einem kleinen Rechner integriert.
Also eine All-in-one Lösung.

Irgendwie geht der Unterschied aus der Homepage von denen nicht so recht hervor.
Wenn beides das selbe ist, nur einmal USB und einmal zum Aufstecken auf den Pi, kapiere ich den Preisunterschied nicht so recht.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 07 September 2018, 21:51:40
So, hab eben meinen ersten Satelliten installiert. :)

Pünktlich dazu wurde die Doku zum installieren von Satelliten in der Doku überarbeitet.
Wenn das mal kein Timing ist. :P
(Da sind jetzt auch beide Varianten beschrieben, Hotword auf Maindevice und Hotword auf Satellite.)

https://snips.gitbook.io/documentation/installing-snips/multi-device-setup-satellites

Ging ja echt schnell und einfach.

Ein nettes Fazit daraus:
Sonderzeichen im Satellitennamen in der /etc/snips.toml sind kein Problem.
Satellitennamen und snipsRooms mit Namen wie Küche oder Büro funktionieren also einwandfrei.


@enno damit hab ich auch eine Spielwiese um das mit snips-volume mal bei mir zu testen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 08 September 2018, 07:59:30
Zitat von: Thyraz am 07 September 2018, 21:51:40
@enno damit hab ich auch eine Spielwiese um das mit snips-volume mal bei mir zu testen.

Super, ich bin gespannt. Bin das Wochenende erst mal unterwegs.

Wenn du Zeit hast, kannst du die Beschreibung für Medien mit einer Beispielkonfiguration versehen. Ich blicke es irgendwie nicht. Ich habe einen "MPD" auf dem Server laufen. Von dort kommen die Streams. Dort kann ich vor und zurück spulen, etc. Lautstärke und etc. veränder ich am Device "STEREO" (YAMAHA_AVR) . Jetzt verstehe ich leider nicht, wo was rein muss, damit ich über lauter/leiser das STEREO Device steuer und mit vor/zurück in der Playlist von MPD springe.

Schönes Wochenende und viel Erfolg auf der "Spielwiese" 8)

Gruss
  enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 08 September 2018, 09:29:55
@Thyraz : Welche Variante der Satelliten hast Du gewählt?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 08 September 2018, 09:39:50
@enno:

Klaro. :)

Bei mir ist das im Wohnzimmer ein Dummy der Logitech Harmony (Richtige Aktion starten damit die Geräte eingeschaltet und der AV-Reveiver auf den korrekten Kanal gestellt ist), Sonos (Mediensteuerung) und AV-Receiver (Lautstärke) vereint:


SetOnOff:cmdOn=Harmony01:activity Musik,cmdOff=Harmony01:off
GetOnOff:currentVal=Harmony01:activity,valueOn=Musik
SetNumeric:currentVal=AV_Receiver:volume,cmd=AV_Receiver:volume,step=5,type=Lautstärke
GetNumeric:currentVal=AV_Receiver:volume,type=Lautstärke
MediaControls:cmdPlay=Sonos_Wohnzimmer:Play,cmdPause=Sonos_Wohnzimmer:Pause,cmdStop=Sonos_Wohnzimmer:Stop,cmdFwd=Sonos_Wohnzimmer:Next,cmdBack=Sonos_Wohnzimmer:Previous


zusätzlich hab ich dann noch testweise ein paar snipsChannels angelegt:

SWR3=Sonos:StartFavourite SWR3%2095.5%20(Top%2040%2FPop)
SWR1=Sonos:StartFavourite SWR1%20Baden-W%C3%BCrttemberg%2094.7%20(Gemischtes%2FVielfalt)
Jazz Radio=Sonos:StartFavourite Jazz%20Radio
Akustik Covers=Sonos:StartFavourite Akustik-Covers
Sonntagsfrühstück=Sonos:StartFavourite Sonntagsfr%C3%BChst%C3%BCck


Dank GetOnOff weiß Snips ob Musik gerade an ist oder nicht.
Dadurch geht "lauter" oder "leiser" ohne den Gerätename.

Durch die Channelliste weiß Snips wiederum, welches Gerät im aktuellen Raum SWR3 spielen kann.
Es geht also auch "Spiele SWR3" ohne Gerätename.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 08 September 2018, 09:41:52
@kud, erstmal die einfache Variante mit nur dem Auido-Server auf dem Satelliten.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 08 September 2018, 11:53:25
Gerade gemerkt die Sprachausgabe über Amazon Polly (snips-tts-polly) ist noch nicht Multiroom-tauglich.
Spricht momentan immer in siteId default.

Hab aber schon gefunden wo ich das ändern muss.
Kommt auch die Tage ein Update dafür.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 08 September 2018, 16:27:49
Ok, Update für Snips-TTS-Polly das dann auch die Sprachausgabe auf dem richtigen Satelliten unterstützt:
https://github.com/Thyraz/snips-tts-polly
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: noname41 am 09 September 2018, 11:06:45
Lieber Thyraz,

ich möchte mich für dieses Modul bedanken. Genau dieses Feature war der Baustein der mir noch zum optimalen Smart-Home gefehlt hat. Der Snips-Server funktioniert optimal und mit zwei kleinen notifys ist es sogar möglich das ganze über Telegram zu Steuern.

LG
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Ma_Bo am 09 September 2018, 12:01:53
Hallo Leute, ich hab mal ne Frage an die, die Snips schon nutzen.

Bekommt man den gesamten erkannten Text als Reading angezeigt?

Hintergrund der Sache ist, ich nutze Google z.Z. und bekomme über ein paar Umwege, den gesamten erkannten Text als Reading angezeigt und werte dann mit einer eigenen myutils alles was ich brauche aus.
Wenn Snips mir auch den gesamten Text anzeigt, dann brauch ich nicht viel umbauen.

Hat evtl. jemand nen Vergleich zur Erkennung zum Google Home?

Grüße Marcel
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 09 September 2018, 12:24:37
Hallo Marcel,

im LastIntentPayload Reading ist es unter "input" drin.
Mit etwas Regex sollte das leicht als userReading zu extrahieren sein.

Probleme die ich sehe: Das Modul füttert Snips ja mit den Gerätenamen, damit die Spracherkennung die Wörter versteht.

Zumindest diesen Teil der Konfiguration (Attribut snipsName und snipsRoom) müsstet du dennoch machen.
Weiß auch nicht ob der Text wirklich ankommt, wenn Snips keinen der Intents aus der FHEM App erkennt.

Die Fehlermeldung die das Modul über Snips ausgibt kann man zumindest deaktivieren,
so dass du hier nichts ausgegeben bekommst.
Damit das Modul nicht dazwischenfunkt, musst du an sich einfach keine SnipsMappings festlegen,
dann kann das Modul nichts steuern.

Wie gut das funktioniert ist etwas schwer abzuschätzen...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 09 September 2018, 17:39:13
So, habe sips-volume mal aktualisiert damit es auch auf dem Raspberry funktioniert:
https://github.com/Thyraz/snips-volume

Einfach die snips-volume.py mit der neuen überschreiben.


@enno ich hab es jetzt doch etwas simpler gelöst, da in dem Link von dir durch alle Soundkarten geloopt wird und dann der erste Treffer verwendet wird.

Falls bei einem Gerät die erste Soundkarte aber z.B. der HDMI Ausgang statt dem Audioausgang ist, führt das zu einem ungewollten Verhalten.
Wir haben durch die Snips Konfiguration ja aber eigentlich schon die richtige Soundkarte in der asound.conf als Default definiert.
Ich hab daher einfach einen Fallback auf PCM eingebaut, falls kein Master Mixer gefunden wird.

Hab im Netz nichts darüber gefunden, dass es noch mehr mögliche Benennungen für den Hauptregler gibt.
Hoffe also das klappt dann bei allen so.


try:
        mixer = alsaaudio.Mixer()
    except Exception:
        mixer = alsaaudio.Mixer('PCM')
        pass


Achja, der systemd Service läuft bei mir auf einem Pi2 ohne Probleme.
Müsstest evtl. doch nochmal schauen was bei dir da schief geht (systemd Logs etc.)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Roman am 09 September 2018, 18:53:35
Hi,

ZitatAchja, der systemd Service läuft bei mir auf einem Pi2 ohne Probleme.
Müsstest evtl. doch nochmal schauen was bei dir da schief geht (systemd Logs etc.)
ich hatte auf dem PI das Problem, dass der snips-volume immer wieder neu gestartet wurde (Exec-Code 203)

Ursache waren fehlende Ausführungsrechte auf /opt/snips-volume/snips-volume.py nach dem 'git clone'
ein chmod 755 /opt/snips-volume/snips-volume.py
und alles wird gut :)


Gruß
Roman
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 09 September 2018, 19:30:13
@Thyraz
Wäre es möglich das voiceresponse "Kein Wiedergabegerät aktiv" der Mediensteuerung zu deaktivieren?
Ich nutze keine Mediensteuerung und die einzigen "Fehlinterpretationen" kommen daher.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 10 September 2018, 08:52:34
Zitat von: Roman am 09 September 2018, 18:53:35
Ursache waren fehlende Ausführungsrechte auf /opt/snips-volume/snips-volume.py nach dem 'git clone'

Danke für den Hinweis. :)
Habe mal ein chmod +x in die Doku eingefügt.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 10 September 2018, 09:17:04
Zitat von: kud am 09 September 2018, 19:30:13
Wäre es möglich das voiceresponse "Kein Wiedergabegerät aktiv" der Mediensteuerung zu deaktivieren?

Ja, ist irgendwie die Frage wie man das konfigurierbar macht.
Wird ja sicher nicht bei den bisherige 2-3 Antworten bleiben.
Alles hart abschalten über das Attribut errorResponse ist aber auch etwas fies...

Evtl. eine Konfigurationsmöglichkeit in einem mehrzeiligen Attribut im SnipsDevice?
Jeder Response könnte man dann einen Identifier zuweisen über den man den Text setzen kann.

Etwa so:

DefaultConfirmation=Ok;Klaro;Mach ich;Schon passiert;Gerne doch
DefaultError=
NoActiveMediaDevice=Gerät zuerst einschalten wäre eine gute Idee.


Mit Semikolon könnte man dann mehrere Alternativen angeben, welche per Zufall gewählt werden.

Identifier die nicht angegeben werden, behalten ihren Standardwert.
Man müsste also nicht alle Identifier eintragen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 10 September 2018, 11:10:06
Zitat von: Thyraz am 10 September 2018, 09:17:04
Evtl. eine Konfigurationsmöglichkeit in einem mehrzeiligen Attribut im SnipsDevice?

Eigentlich müsste das eher was pro Gerät sein, aller "Die Rollade fährt", "Bringe den Sateliten in Stellung", "Habe deine Temperatur angepasst"

Optimalerweise mit der Möglichkeit Perl Code zu verwenden.

{"Habe deine Wunschtemperatur auf" . ReadingsVal($name, "desiredTemperature", "unbestimmt") . " geändert"}

Gruß Michael
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 10 September 2018, 11:35:20
Vielleicht ein Attribut pro Geräteklasse.
Bei einem Lichtschalter mit "ok" zu antworten ist nicht notwendig da ich es sehe ;-)
Bei Lautstärkeänderungen höre ich das Ergebnis.
Bei Thermostaten wäre die Anwort schon wichtiger.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 10 September 2018, 12:55:49
Puh, das gibt aber einen ziemlichen Aufwand wenn man wirklich alle Antworten die Snips ausgeben kann (auch Antworten auf Abfragen) so definieren will.
Nicht nur für mich, auch für den User würde das ein recht komplexes System geben.

Es gibt auch Unterschiede in den Antworten z.B. je nachdem ob nach einem Raum oder Gerät gefragt wurde.
Also je nachdem welche der möglichen Slots in einem Satz belegt sind.
Spätestens da wird die Konfigurierbarkeit nicht mehr so einfach.

Wie genau würde man jetzt ein Attribut aufbauen um zu erlauben auf GetNumeric zu antworten?
Und zwar verschieden, je nachdem welche Kombination an Slots gefüllt ist und welcher Type belegt?
Das selbe dann für Rückmeldungen bei SetNumeric.
Selbst bei einem Attribut pro Device wird das schwierig, da man auch hier verschiedene GetNumerics mit unterschiedlichen Types haben kann.

Und wer will diese Konfigurationorgie wirklich leisten?
Es gab da mal einen netten Artikel über Feature Requests, dass man sich vor komplexen Erweiterungen die Frage stellen sollte wie viel Prozent der User das später wirklich nutzen. :P
Bei einer Konfiguration pro Device bin ich noch etwas kritisch ob wir da über einen niedrigen einstelligen Bereich heraus kommen. ;)
Dieses Feature hat das Potential mich recht lange zu beschäftigen und den Code des Moduls zwar nicht zu verdoppeln, aber doch ziemlich aufzublähen...
Es würde mal zumindest nicht sonderlich weit oben auf der Todo-Liste landen.


Attribute pro Geräteklasse sind auch nicht sooo einfach umzusetzen.
Man kann Snips wohl schon z.B. bei GetNumeric über den Type mitteilen, wofür ein Mapping gedacht ist.
Ich werde aber nicht gezwungen den Type zu setzen.

Snips unterscheidet über die Intents ja eher anhand des Aufbaus eines Satzes und nicht anhand eines Gerättyps (Wie das z.B. bei Siri/Homekit der Fall ist).
Liegt einfach daran, dass Snips selbst keine Ahnung hat wofür wir es einsetzen.
Es weiß nichts von SmartHome und erst recht nichts von FHEM und euren Geräten.

Dadurch ist der Code des Moduls nicht nicht in Gerätetypen, sondern in Intenttypen aufgeteilt.

Ist die Möglichkeit z.B. auf ein kurzes "Ok" zu verzichten oder "Die Temperatur von Thermometer beträgt xx Grad" durch einen eigenen Satz ersetzen zu können ein wirklicher Mehrgewinn?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 10 September 2018, 13:24:12
Ich würde mich sehr darüber freuen, da das ganz neue Möglichkeiten eröffnet, und das könnte dann wirklich wesentlich mehr als Alexa.

Ich habe eh eine Routine um alle Geräte zu pflegen.

Notify auf Dummy

snips_rollout.*on {
  my $single_device = "";
  my $alias = "";
  my @exclude_room_array = ("IT", "Homebridge", "MAX", "YeeLight", "Wettervorhersage", "Snips", "CUL_HM", "Fenster");

  my @device=devspec2array("genericDeviceType=light");
  foreach(@device) {
    Log 3, "$_" . " " . AttrVal("$_","alias", " ");
    fhem("attr $_ snipsMapping SetOnOff:cmdOn=on,cmdOff=off \nGetOnOff:currentVal=state,valueOff=off,valueOn=on");
  }
  @device=devspec2array("genericDeviceType=switch");
  foreach(@device) {
    Log 3, "$_" . " " . AttrVal("$_","alias", " ");
    fhem("attr $_ snipsMapping SetOnOff:cmdOn=on,cmdOff=off \nGetOnOff:currentVal=state,valueOff=off,valueOn=on");
  }
  @device=devspec2array("webCmd=volume");
  foreach(@device) {
    Log 3, "$_" . " " . AttrVal("$_","alias", " ");
    fhem("attr $_ snipsMapping SetNumeric:currentVal=pct,cmd=volume,minVal=0,maxVal=70,step=15,type=Lautstärke \nGetNumeric:currentVal=pct,cmd=volume,minVal=0,maxVal=70,step=15,type=Lautstärke");
  }
  @device=devspec2array("group=Rollade");
  foreach(@device) {
    Log 3, "$_" . " " . AttrVal("$_","alias", " ");
    fhem("attr $_ snipsMapping SetNumeric:currentVal=pct,cmd=pct,minVal=0,maxVal=100,step=25 \nGetNumeric:currentVal=pct,cmd=pct,minVal=0,maxVal=100,step=25");
  }
  @device=devspec2array("alias=Fenster.*");
  foreach(@device) {
    Log 3, "$_" . " " . AttrVal("$_","alias", " ");
    fhem("attr $_ snipsMapping GetOnOff:currentVal=state,valueOff=closed");
  }
  @device=devspec2array("type=HeatingThermostat");
  foreach(@device) {
    Log 3, "$_" . " " . AttrVal("$_","alias", " ");
    fhem("attr $_ snipsMapping SetNumeric:currentVal=desiredTemperature,cmd=desiredTemperature,minVal=5,maxVal=24,step=1,type=Temperatur \nGetNumeric:currentVal=desiredTemperature,minVal=5,maxVal=24,type=Temperatur");
  }


  @device=devspec2array("room=Homebridge");
  foreach(@device) {
    $single_device="$_";
    Log 3, "$_" . " " . AttrVal("$_","alias", " ");

    roomsAdd($single_device, "Snips");
    $alias = ( split / /, AttrVal("$_","alias", "$_"), 2 )[0];
    if ($alias eq "Heizung"){
      fhem("attr $single_device snipsName Heizung, Temperatur");
    }else{
      fhem("attr $single_device snipsName " . $alias);
    }
   
    my @values = split(',', AttrVal($single_device,"room", " "));

    foreach my $val (@values) {
      if ( not $val ~~ @exclude_room_array ){
        Log 3, "attr $single_device snipsRoom " . $val;
        fhem("attr $single_device snipsRoom " . $val);
      }
    }
  }
}
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 10 September 2018, 13:27:17
Hat schon mal einer mit einem "snips/duration" gearbeitet?

Ich bekomme da keine Werte übergeben.


# SetTimer Intent
sub stelleTimer($$) {
        Log 3, dump(@_)
}



2018.09.10 13:17:41 5: Parsed value: Stelle einen Eier timer auf 5 Min for key: input
2018.09.10 13:17:41 5: sending message to NLU: {"id":"{\u0022Channel\u0022:null,\u0022Color\u0022:null,\u0022Device\u0022:\u0022timer\u0022,\u0022Room\u0022:null,\u0022input\u0022:\u0022Stelle einen Eier timer auf 5 Min\u0022,\u0022sessionId\u0022:null,\u0022siteId\u0022:null}","input":"Stelle einen Eier 'standardgerät' auf 5 Min","sessionId":"fhem.textCommand"}
2018.09.10 13:17:41 5: publish received for hermes/nlu/intentParsed, {"id":"{\"Channel\":null,\"Color\":null,\"Device\":\"timer\",\"Room\":null,\"input\":\"Stelle einen Eier timer auf 5 Min\",\"sessionId\":null,\"siteId\":null}","input":"Stelle einen Eier 'standardgerät' auf 5 Min","intent":{"intentName":"ahlermI:SetTimer","probability":0.7526512},"slots":[{"rawValue":"Eier","value":{"kind":"Custom","value":"eier"},"range":{"start":13,"end":17},"entity":"snips/default--Name","slotName":"Name"},{"rawValue":"5 Min","value":{"kind":"Duration","years":0,"quarters":0,"months":0,"weeks":0,"days":0,"hours":0,"minutes":5,"seconds":0,"precision":"Exact"},"range":{"start":38,"end":43},"entity":"snips/duration","slotName":"duration"}],"sessionId":"fhem.textCommand"}
2018.09.10 13:17:41 5: Parsed value:  for key: siteId
2018.09.10 13:17:41 5: Parsed value:  for key: duration
2018.09.10 13:17:41 5: Parsed value: SetTimer for key: intent
2018.09.10 13:17:41 5: Parsed value: timer for key: Device
2018.09.10 13:17:41 5: Parsed value: Stelle einen Eier timer auf 5 Min for key: input
2018.09.10 13:17:41 5: Parsed value: 0.7526512 for key: probability
2018.09.10 13:17:41 5: Parsed value: eier for key: Name
2018.09.10 13:17:41 5: Parsed value: fhem.textCommand for key: sessionId
2018.09.10 13:17:41 5: handleCustomIntent called
2018.09.10 13:17:41 5: snipsIntent selected: SetTimer=stelleTimer(Name,duration)
2018.09.10 13:17:41 5: Calling sub: main::stelleTimer
2018.09.10 13:17:41 3: ("eier", undef)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 10 September 2018, 13:38:17
@ahlermi: Probiere mal statt duration snips/datetime.
Bei mir klappt das dann, wenn ich sage "stelle einen alarm in 5 minuten" oder "erinnnere mich in 5 minuten". Als Output kommt dann die Zielzeit, die du dann z.B. für ein at verwenden kannst.
"Stelle einen Timer auf 5 minuten" funktioniert so aber leider halt nicht...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 10 September 2018, 14:00:55
@jowe danke, klappt aber hat leider wie du schon sagst wieder ein paar Nachteile, ich würde schon gerne ergründen warum snips/duration nicht klappt, ist ja vlt eine Kleinigkeit.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 10 September 2018, 14:12:29
Ich habe das gerade mal in der Snips Console ausprobiert und den slot duration incl. einiger Trainingssätze hinzugefügt.
Klappt jetzt auch mit "auf 5 minuten". Nur das Rückgabeformat ist dann halt anders, nicht mehr absolute Zeit sondern Dauer. Das kann man aber ja leicht abfangen, da man ja den type (duration oder time) mitgeliefert bekommt:
{
  "input": "stelle einen eier timer auf fünf min",
  "intent": {
    "intentName": "jowe:setAlarm",
    "probability": 0.9125147
  },
  "slots": [
    {
      "rawValue": "eier",
      "value": {
        "kind": "Custom",
        "value": "Die Eier sind fertig"
      },
      "range": {
        "start": 13,
        "end": 17
      },
      "entity": "Thema",
      "slotName": "Thema"
    },
    {
      "rawValue": "timer",
      "value": {
        "kind": "Custom",
        "value": "Timer"
      },
      "range": {
        "start": 18,
        "end": 23
      },
      "entity": "AlarmType",
      "slotName": "Type"
    },
    {
      "rawValue": "fünf min",
      "value": {
        "kind": "Duration",
        "years": 0,
        "quarters": 0,
        "months": 0,
        "weeks": 0,
        "days": 0,
        "hours": 0,
        "minutes": 5,
        "seconds": 0,
        "precision": "Exact"
      },
      "range": {
        "start": 28,
        "end": 36
      },
      "entity": "snips/duration",
      "slotName": "Timer"
    }
  ]
}
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 10 September 2018, 14:16:09
Hi, das ist nicht das Problem.

Nur wenn du jetzt im SNIPS


snipsIntents

Wecker=stelleWecker(time,room,device)
SetTimer=stelleTimer(Name,duration)
StopTimer=stoppeTimer(Name)


Intents definierst, dann kommt in der Perl Funktion (bei mir stelleTimer) nur ein "undef" an  :o
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Wal am 10 September 2018, 14:25:06
Ich bin vor einiger Zeit von FHEM auf ioBroker umgestiegen und hatte Snips über den FHEM-Adapter und diesem Plugin in ioBroker eingebunden. Mittlerweile nutze ich den Text2Command Adapter von ioBroker den ich über Node-Red direkt mit dem erkannten Text vom Snips-ASR füttere. Den Snips-NLU brauche ich dadurch nicht mehr.
Der Text2Command Adapter funktioniert über Schlüsselwörter die man angeben und die bei Erkennung eine bestimmte Aktion auslösen und der wenn gewünscht auch eine Antwort geben kann.
Ich denke das es so ein Adapter auch bei FHEM gibt. Man braucht nur dafür zu sorgen das die Wörter erkannt werden.
Man (Thyraz) könnte da viel arbeit sparen.

sehe gerade, bei FHEM heißt das Modul "Talk2Fhem"
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 10 September 2018, 15:07:04
Zitat von: ahlermi am 10 September 2018, 14:16:09
Intents definierst, dann kommt in der Perl Funktion (bei mir stelleTimer) nur ein "undef" an  :o

Dann dürfte unter dem slotname aber an sich nichts angekommen sein.
Slotname ist wahrscheinlich Case Sensitive falls das noch ein Problem sein könnte.

Noch ein anderer Ansatz: Einfach einen Number Type nehmen und einen zusätzlichen Slot den ihr mit Sekunde|Sekunden, Minute|Minuten, Stunde|Stunden als Values füllt?
Dann seit ihr beim Satzbau evtl. flexibler.

Noch zum Thema Replies vom Snips Modul:
Ich denke ich setze ggf. mal die schnelle Lösung um, damit kud mit seiner Ausgabe geholfen ist.
Die komplexere Variante kann gern auf die Todo Liste, allerdings hätte ich gern ein paar Use-Cases um zu begreifen was ihr damit umsetzen wollt, das bisher doof/nicht möglich ist. :P
Und für Anregungen wie die Konfiguration aussehen könnte wäre ich für den Fall einer Umsetzung auch dankbar. ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 10 September 2018, 15:15:31
guck gerne drüber:
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 10 September 2018, 15:20:22
Eine vernünftige Antwort ermöglicht zum Beispiel die Kontrolle was Snips verstanden hat.

Es gibt ja auch Aktionen die man nicht direkt wie eine Lampe sieht.

Außerdem ist es cooler ;-)
Ich freue mich immer wenn Siri antwortet "Die Garage ist dabei sich zu schließen" oder ähnliches.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 10 September 2018, 15:29:00
Ich habe gerade einfach nur den type von snips/duration auf snips/number gestellt, "sam install assistant" ausgeführt und der Wert kommt an.

Zurück geändert und nix kommt mehr an, muss mit dem duration zusammen hängen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 10 September 2018, 15:31:40
@ahlermi
Na klar , da stimme ich schon zu.
Aber mein Plagegeist ist die Mediensteuerung und die Antwort "Kein Wiedergabegerät gefunden" obwohl im relativ stillen Raum Niemand das Wort "Snips" gesagt hatte plärrt der Lautsprecher ... Da ich eh alles über voiceResponse und tts in FHEM ausgebe habe ich jetzt ein Filter vorgeschaltet. Für mich ne Quick und Dirty-Lösung ;-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 10 September 2018, 15:33:54
Zitat von: ahlermi am 10 September 2018, 15:29:00
Zurück geändert und nix kommt mehr an, muss mit dem duration zusammen hängen.

Ok, dann muss ich mal schauen was da ankommt wenn man das als Type wählt.
Ich schätze das ist dann kein einfacher String, sondern evtl. ein Key-Value Paar (oder mehrere Werte).

Mit sowas rechnet das Modul bisher nicht, da mir das bisher noch nicht untergekommen ist...

edit: Sowas kommt dann an:

"value": {
        "kind": "Duration",
        "years": 0,
        "quarters": 0,
        "months": 0,
        "weeks": 0,
        "days": 0,
        "hours": 0,
        "minutes": 5,
        "seconds": 0,
        "precision": "Exact"
      }


Ist die Frage: Lohnt sich das zu unterstützen oder macht man das eher mit einem Number Slot + einem Custom Slot für Sekunden/Minuten/Stunden?

Ist halt die Frage was ich eurer Perl Funktion beim Custom Intent übergeben soll nachdem sowas reinkommt...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 10 September 2018, 16:28:58
Das bietet gute Möglichkeiten für Timer etc. Erkennung klappt gut.

kannst du nicht mit


$time = Date_to_Time($year,$month,$day, $hour,$min,$sec);


einen Zeitstempel zurück geben, oder das ganze Objekt durchreichen?

Gruß Michael
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 10 September 2018, 16:34:49
Ok, das sieht tatsächlich gut aus.

Was wäre denn geschickter?
Einen TimeStamp auf das aktuelle Datum würde ich ungern aufaddieren.
Wer weiß ob da jemand noch andere Einsatzzwecke als vom aktuellen Datum ausgehend einfallen.

Ich könnte aber entweder die duration in Sekunden errechnen und diesen Wert übergeben,
oder ich übergebe das Objekt das reinkommt.

Variante 1 gefällt mir an sich ein wenig besser aus Nutzersicht, lasse mich aber auch gerne umstimmen. ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 10 September 2018, 16:39:08
Für mich beide Varianten ok  :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 10 September 2018, 17:23:02
Ok, das Umrechen ohne zu wissen wann das ganze stattfindet klappt durch einige der Werte ja gar nicht.
Thema Schaltjahr, Anzahl Tage im Monat usw.

Ich übergebe also doch den ganzen Hash.

Aktualisierte 10_SNIPS.pm auf Github verfügbar

Beispiel für die Abfrage:

# SetTimer Custom Intent
sub snipsSetTimer($) {
  # Übergebene Parameter in Variablen speichern
  my ($duration) = @_;

  # Standardantwort festlegen
  my $response = "Keine Zeit angegeben";

  if (defined($duration)) {
    my $seconds = $duration->{'seconds'};
    my $minutes = $duration->{'minutes'};
    my $hours = $duration->{'hours'};

    $response = "Timer soll $seconds Sekunden, $minutes Minuten und $hours Stunden laufen";
  }

  return $response;
}
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 10 September 2018, 17:32:22
klappt, danke!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 10 September 2018, 17:35:01
Zitat von: Thyraz am 09 September 2018, 17:39:13
So, habe sips-volume mal aktualisiert damit es auch auf dem Raspberry funktioniert:
https://github.com/Thyraz/snips-volume

Einfach die snips-volume.py mit der neuen überschreiben.


@enno ich hab es jetzt doch etwas simpler gelöst, da in dem Link von dir durch alle Soundkarten geloopt wird und dann der erste Treffer verwendet wird.

Falls bei einem Gerät die erste Soundkarte aber z.B. der HDMI Ausgang statt dem Audioausgang ist, führt das zu einem ungewollten Verhalten.
Wir haben durch die Snips Konfiguration ja aber eigentlich schon die richtige Soundkarte in der asound.conf als Default definiert.
Ich hab daher einfach einen Fallback auf PCM eingebaut, falls kein Master Mixer gefunden wird.

Hab im Netz nichts darüber gefunden, dass es noch mehr mögliche Benennungen für den Hauptregler gibt.
Hoffe also das klappt dann bei allen so.


try:
        mixer = alsaaudio.Mixer()
    except Exception:
        mixer = alsaaudio.Mixer('PCM')
        pass


Achja, der systemd Service läuft bei mir auf einem Pi2 ohne Probleme.
Müsstest evtl. doch nochmal schauen was bei dir da schief geht (systemd Logs etc.)

Habe sips-volume neu installiert. Leider steigt es aber immer noch mit Fehlermeldungen aus.

pi@snipes:~ $ sudo python3 /opt/snips-volume/snips-volume.py
MQTT connected
Traceback (most recent call last):
  File "/opt/snips-volume/snips-volume.py", line 96, in <module>
    client.loop_forever()
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 1578, in loop_forever
    rc = self.loop(timeout, max_packets)
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 1072, in loop
    rc = self.loop_read(max_packets)
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 1374, in loop_read
    rc = self._packet_read()
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 2071, in _packet_read
    rc = self._packet_handle()
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 2560, in _packet_handle
    return self._handle_publish()
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 2759, in _handle_publish
    self._handle_on_message(message)
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 2902, in _handle_on_message
    callback(self, self._userdata, message)
  File "/opt/snips-volume/snips-volume.py", line 48, in on_set
    set_volume(volume)
  File "/opt/snips-volume/snips-volume.py", line 35, in set_volume
    mixer = alsaaudio.Mixer()
alsaaudio.ALSAAudioError: Unable to find mixer control Master,0 [default]
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 10 September 2018, 17:45:50
@enno, ohje hab das Update vergesen hochzuladen.  :o

Kannst du es nochmal testen?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 10 September 2018, 18:10:06
Zitat von: Thyraz am 10 September 2018, 17:45:50
@enno, ohje hab das Update vergesen hochzuladen.  :o

Kannst du es nochmal testen?
Kein Problem, du tanzt hier ja auf vielen Baustellen. Ich habe es eben noch mal neu eingespielt, aber es läuft nicht stabil. Wenn ich von 50 auf 100 und dann wieder auf 50 stelle passiert nichts mehr. Ich suche nachher mal (mit) warum das Programm aussteigt....
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 10 September 2018, 18:50:03
Bin auch wieder mal am Verzweifeln.
2018.09.10 18:47:19 5: publish received for hermes/hotword/default/detected, {"siteId":"default","modelId":"hey_snips","modelVersion":"hey_snips_3.1_2018-04-13T15:27:35_model_0019","modelType":"universal","currentSensitivity":0.5}
2018.09.10 18:47:19 5: Parsed value:  for key: sessionId
2018.09.10 18:47:19 5: Parsed value:  for key: intent
2018.09.10 18:47:19 5: Parsed value:  for key: probability
2018.09.10 18:47:19 5: Parsed value: default for key: siteId
2018.09.10 18:47:19 5: Parsed value:  for key: input
2018.09.10 18:47:24 5: publish received for hermes/nlu/intentParsed, {"id":"d243e4a0-766d-4698-9603-f5609012c2c1","input":"mach spot aus","intent":{"intentName":"blubber:SetOnOff","probability":1.0},"slots":[{"rawValue":"spot","value":{"kind":"Custom","value":"spot"},"range":{"start":5,"end":9},"entity":"de.fhem.Room","slotName":"Room"},{"rawValue":"aus","value":{"kind":"Custom","value":"an"},"range":{"start":10,"end":14},"entity":"de.fhem.OnOffValue","slotName":"Value"}],"sessionId":"288f850a-2df5-4f1c-bb13-6d55d60498ad"}
2018.09.10 18:47:39 5: publish received for hermes/hotword/toggleOn, {"siteId":"default","sessionId":null}
2018.09.10 18:47:39 5: Parsed value:  for key: input
2018.09.10 18:47:39 5: Parsed value: default for key: siteId
2018.09.10 18:47:39 5: Parsed value:  for key: probability
2018.09.10 18:47:39 5: Parsed value:  for key: sessionId
2018.09.10 18:47:39 5: Parsed value:  for key: intent


Die gelesenen Werte werden nicht "eingbaut" oder ausgeführt.
Erkannt wird aber zu 100%, jedenfalls sagt das die Probability.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 10 September 2018, 19:20:23
@Neuhier irgendwas ist ziemlich verbogen bei dir.  :o
Aber nicht erst in Fhem, sondern schon in Snips selbst:

Er erkennt den Raw-Value (gesprochenes Wort) "aus" als Wert "an" in dem Slot-Type de.fhem.OnOffValue.
Das ist nicht ganz korrekt. ;)

Auch bin ich mir nicht sicher, ob "Spot" wirklich ein Room sein sollte.

Du hast die App ja geforked, kann es sein, dass hier zuviel verändert ist, so dass das Modul nicht mehr klar kommt damit?
Oder die Version von deinem FHEM Modul oder der FHEM Snips App veraltetet ist und beides somit nicht zusammenpasst?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 10 September 2018, 19:28:01
Zitat von: enno am 10 September 2018, 18:10:06
aber es läuft nicht stabil. Wenn ich von 50 auf 100 und dann wieder auf 50 stelle passiert nichts mehr.

Einmal umstellen klappt also, dann nicht mehr?

Hab es eben nochmal auf NUC und Pi2 mit den aktuellen Versionen von Github getestet.
Bei mir läuft es stabil. Echt komisch...  :(
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 10 September 2018, 19:29:43
Noch eine zweite Neuerung betreffend der Custom Intents:
(War schon im vorigen Upload bei Github mit drin.)

Habt ihr einen Slot "Device" in eurem Custom Intent wird jetzt versucht den Wert jetzt durch den FHEM Gerätenamen zu ersetzen.
Den Wunsch hatten wir ja recht am Anfang dieses Threads ein paarmal.
Damit braucht ihr keine eigene Logik um vom snipsName wieder zum FHEM Gerät zu kommen.

Dabei wird auch ein eventueller Slot "Room" und die siteId beachtet.

Es wird also vorzugsweise ein Gerät im angesagten (oder aktuellen) Raum gesucht, falls es mehrere Geräte mit dem Namen gibt.

Ihr müsst auch nicht alle Devicenamen selbst in einem Custom Slot pflegen.
Sofern ihr die FHEM App nicht geforkt habt, solltet ihr ja an sich keine CustomSlots de.fhem.Device und de.fhem.Room haben.

Legt diese an und belegt de.fhem.Device mit nur einem Slotvalue namens Standardgerät und de.fhem.Room mit Standardraum.

Die dort enthaltenen Wörter ersetze ich vor der Übergabe an NLU ja durch diese Platzhalter.
In der Antwort von NLU setzte ich dann die richten Namen wieder ein.

Somit muss man nicht alle Werte händisch im Slot eintragen.

Falls das mal jemand testet, gerne Rückmeldung ob das klappt.
Dann beschreibe ich das auch nochmal in der Doku.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 10 September 2018, 19:38:56
Merkwürdig ist, daß es ab und zu geht.
So alle 5-6 Versuche.
Dann sind auch im unteren Teil Werte zu sehen.

Auch "sage Temperatur thermometer draussen" geht nur sporadisch.
Mal mit, mal ohne Werte im Log.

Ich muß den Rpi wohl oder übel nochmal plattmachen, wird mir nix Anderes übrigbleiben.
Installiert wurde FHEM und Snips nach Anleitung.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 11 September 2018, 09:30:07
Volume ändern habe ich auch getestet, bei mir kommt leider nichts an  :-\

Im Totorial stehen auch noch die falschen Dienste zum Durchstarten.

Zitat
Dann den Autostart aktivieren und den Service gleich starten:

sudo systemctl enable snips-tts-polly
sudo systemctl stop snips-tts
sudo systemctl start snips-tts-polly


Ich habe mich gestern ca. 3-4 Stunden meines Lebens damit beschäftigt ein neues Hotword aufzunehmen, leide ohne Erfolg.
Das Aufnahme-Python bekommt es nicht gebacken, ich benutze einen Raspbarry PI3 mit er PS3Eye, nachdem ich die Capture Karte hart im py eingetragen habe beim open, kam was in der .wav an, aber trotzdem hat er immer wieder neu aufnehmen wollen, auch 10 mal und mehr.
Als länge ("audio.duration()") kam immer 2.112 raus die dann quasi zu lang war, was er als Nebengeräusche gedeutet hat.


Gruß Michael
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 11 September 2018, 10:32:44
Als
Zitat von: ahlermi am 11 September 2018, 09:30:07
Volume ändern habe ich auch getestet, bei mir kommt leider nichts an  :-\

Ich habe gestern das Ding auf Raspbarry PI3 mit ReSpeaker zum Fliegen gebracht. Danke dafür. Ich habe den Dienst aber gestartet mit :sudo chmod +x /opt/snips-volume/snips-volume.py
sudo systemctl enable snips-volume.service
sudo systemctl start snips-volume.service


Jetzt kümmer ich mich mal um die nervige Ansage, dass keine Medienabspielgerät aktiv ist...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 11 September 2018, 11:03:43
@ahlermi, danke für den Hinweis, habs in der Doku gefixt.

Kannst du den Service mal stoppen und das Script mit sudo python3 /opt/snips-volume/snips-volume.py händisch im Terminal starten?
Dann schauen ob schon beim Start, oder wenn du ein volume Befehl absetzt ein Fehler kommt.


@enno, ihr seid aber schnell genervt von den Ausgaben.  ;D
Dann muss wohl doch eher schneller eine Konfigurationsmöglichkeit her.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 11 September 2018, 11:21:07

root@snips:/opt/snips-volume# python3 snips-volume.py
MQTT connected
volume=70
root@snips:/opt/snips-volume# alsamixer
cannot load mixer controls: Invalid argument
root@snips:/opt/snips-volume# python3 snips-volume.py
MQTT connected
70
root@snips:/opt/snips-volume# alsamixer
root@snips:/opt/snips-volume# python3 snips-volume.py
MQTT connected
siteId="default" volume="50"


keine Reaktion
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 11 September 2018, 11:47:36
Zitat von: Thyraz am 11 September 2018, 11:03:43
@enno, ihr seid aber schnell genervt von den Ausgaben.  ;D
@Thyraz: Keine Sorge, ich komme damit klar 8) Mich belastet eher die Reaktion meiner Mitbewohnerin ;D auf die Ansagen. Wenn ich nach Hause komme muss ich den Lautsprecher erst wieder aktivieren, weil er von einer der Sprachsteuerung nicht so aufgeschlossenen Person ausgestöpselt wurde. Zitat:"Dein Tamagotschi quatscht hier die ganze Zeit dazwischen, und versteht mich nicht. Da habe ich ihm den Stecker gezogen."
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 11 September 2018, 12:54:32
Zitat
root@snips:/opt/snips-volume# python3 snips-volume.py
MQTT connected
volume=70
root@snips:/opt/snips-volume# alsamixer
cannot load mixer controls: Invalid argument
root@snips:/opt/snips-volume# python3 snips-volume.py
MQTT connected
70
root@snips:/opt/snips-volume# alsamixer
root@snips:/opt/snips-volume# python3 snips-volume.py
MQTT connected
siteId="default" volume="50"

Ich hab noch etwas Probleme die Ausgabe zu verstehen.
Sind das rote Ausgaben des Scripts, oder soll das andeuten, dass du zu dem Zeitpunkt einen Volume Befehl in FHEM abgesetzt hast?
Falls es Ausgaben sind: stürzt das Script danach ab, oder beendest du es z.B. mit STRG+C bevor du alsamixer aufrufst?

Alsamixer lässt sich aber normal schon öffnen auf dem System, oder?
Weil da einmal "cannot load mixer controls: Invalid argument" auftaucht.

MQTT scheint ja erfolgreich zum Server zu connecten laut Logausgabe.
Somit gibt es an sich 2 Dinge die schief gehen können:

Die Nachrichten von MQTT kommen im Skript nicht an (z.B. weil er für die falsche siteID abonniert oder warum auch immer),
oder das setzen der Volume klappt nicht.

Problem 2 lässt sich recht einfach testen.
Wenn das nicht geht, kann ich dir noch eine Version bastelt die mehr Logzeilen ausgibt um den Fehler zu finden.

Das Script stoppen, Lautstärke per alsamixer auf 0 stellen. Dann im Terminal eingeben:

sudo python3

>>> import alsaaudio

>>> mixer = alsaaudio.Mixer()
oder falls es ein Raspberry Pi ist:
>>> mixer = alsaaudio.Mixer('PCM')

>>> mixer.setvolume(100)

>>> exit()


Danach nochmal man in alsamixer sehen, dass die Lautstärke entsprechend angepasst wurde.
Wenn das passt, sollte zumindest mal der Alsa Teil des Scripts laufen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 11 September 2018, 12:59:18
Zitat von: enno am 11 September 2018, 11:47:36
Mich belastet eher die Reaktion meiner Mitbewohnerin ;D auf die Ansagen

Haha, das kann ich gut nachvollziehen.  ;D
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 11 September 2018, 13:13:35
Alsamixer stürzt ab wenn ich auf Soundkarte PS3Eye wechsle, wohl normal.

MQTT connected is eine Ausgaben.

Alles andere aus dem Log sind Eingaben.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 11 September 2018, 13:42:18
Schon mehrfach beschrieben: PS3Eye ist nicht im Alsamixer einstellbar.
Kann ausgewählt werden, kommt aber dann zu dem Absturz, wie Du ihn beschrieben hast.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 11 September 2018, 14:02:06
Zitat von: ahlermi am 11 September 2018, 13:13:35
Alles andere aus dem Log sind Eingaben.


volume=70
70
siteId="default" volume="50"

Das sind dann Eingaben im Modul unter set volume?

Syntax muss immer so sein, wie beim letzten Beispiel.
Wenn nicht siteId UND volume in den Parametern gefunden werden, macht das Modul nichts.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 11 September 2018, 15:20:34
ne, die habe ich in die Konsole geschrieben, dachte der Test würde so gehen.


root@snips:/opt/snips-volume# systemctl restart [snips-*]
root@snips:/opt/snips-volume# systemctl stop snips-volume.service
root@snips:/opt/snips-volume# python3 snips-volume.py
MQTT connected



wenn ich nun über das Modul was schicke

set Snips volume siteId="default" volume="50"

passiert auch nix
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 11 September 2018, 15:43:35
Zitat von: ahlermi am 11 September 2018, 15:20:34
passiert auch nix

Mach mal eine zweite Konsole (in der ersten python3 snips-volume.py weiter laufen lassen) auf und starte dort alsamixer. Wenn du jetzt über FHEM die Kommandos sendest, tut sich was beim Mixer?

set Snips volume siteId="default" volume="50"
set Snips volume siteId="default" volume="10"
set Snips volume siteId="default" volume="100"
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 11 September 2018, 16:15:36
nein, das mit dem alsa war mein erster test vorher schon.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 11 September 2018, 17:02:56
Hast du das hier unten im Post mal getestet?
Denn Code zum Lautstärke ändern direkt in die Python Konsole eingeben:

https://forum.fhem.de/index.php/topic,89548.msg835217.html#msg835217

Um zu sehen ob der Teil an sich zumindest funktioniert?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: marwal am 11 September 2018, 22:29:29
Guten Abend zusammen,

vielen Dank im Voraus für dieses tolle Modul! Ich habe es vorerst in meiner Testumgebung eingebunden und erste erfolgreiche Schaltungen durch Snips umsetzen können. Jedoch habe ich ein Problem bei der Spracherkennung. Im Einsatz ist ein Rpi3 + PS3eye.
Im Snips-room befinden sich derzeit eine Lampe (Milight) und ein Lautsprecher (Sonos). Bei der Lampe klappt sowohl das Ein- und Ausschalten, sowie dimmen, als auch die Statusabfrage problemlos, wenn - ich den snipsNamen Lampe im Sprachkontext verwende. Als snipsName im Device sind "Kugel,Lampe,Licht" hinterlegt. Spreche ich z.B. "Kugel", versteht er alles, nur nicht "Kugel". Gesteigert hat sich das ganze bei der Sonos, da erhalte ich mit den snipsNamen "Sonos,Musik,Lautsprecher" immer nur ein "unknownword" im Reading. Sage ich Beispielsweise "Kiste" erkennt Snips "dnister" (der Name war bis dato nicht hinterlegt). Füge ich "dnister" den snipsNamen hinzu, schaltet er die Sonos wie gewollt an und aus. Muss ich die Wörter noch an einer anderen Stelle hinterlegen?

Zudem habe ich in meinem Snips-Device als STATE dauerhaft ein ???. Ging hier bei der Installation evtl. schon was schief, oder ist das Verhalten normal?

Anbei ein list vom Snips


Internals:
   DEF        SnipsMQTT Wohnzimmer
   IODev      SnipsMQTT
   MODULE_VERSION 0.2
   NAME       Snips
   NOTIFYDEV  SnipsMQTT Wohnzimmer
   NR         106
   STATE      ???
   TYPE       SNIPS
   READINGS:
     2018-09-11 22:23:55   lastIntentPayload {"Device":"dnister","Value":"an","input":"schalte unknownword dnister an","intent":"SetOnOff","probability":"0.8032369","requestType":"voice","sessionId":"916d78bc-1f11-427a-81ca-23726456328b","siteId":"default"}
     2018-09-11 22:23:55   lastIntentTopic hermes/nlu/intentParsed
     2018-09-11 22:23:56   listening_wohnzimmer 0
     2018-09-11 22:23:56   transmission-state incoming publish received
     2018-09-11 22:23:55   voiceResponse   Ok
   helper:
     defaultRoom Wohnzimmer
   message_ids:
   subscribe:
     hermes/intent/+
     hermes/nlu/intentParsed
     hermes/hotword/+/detected
     hermes/hotword/toggleOn
   subscribeExpr:
     ^hermes\/intent\/([^/]+)$
     ^hermes\/nlu\/intentParsed$
     ^hermes\/hotword\/([^/]+)\/detected$
     ^hermes\/hotword\/toggleOn$
   subscribeQos:
     hermes/hotword/+/detected 0
     hermes/hotword/toggleOn 0
     hermes/intent/+ 0
     hermes/nlu/intentParsed 0
Attributes:
   IODev      SnipsMQTT
   room       Snips
   verbose    5
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 11 September 2018, 22:35:44
Hatte ich auch schon gefragt: Status ist nicht vergeben, bleibt bei den Fragezeichen.
Geht aber trotzdem.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: marwal am 11 September 2018, 22:40:33
Danke @Neuhier ... Dann sollte das soweit passen  ::) Bleibt noch die Frage der Spracherkennung. Hast du die gesprochenen Namen noch wo anders hinterlegt, oder vergleichbare Probleme?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Neuhier am 11 September 2018, 22:43:40
Habe die benötigten Bezeichnungen, im Assistenten in Snips.ai, in den Slots eingetragen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 11 September 2018, 22:45:31
@marwal hast du den Set-Befehl updateModel nach dem Hinzufügen ausgeführt?
Und ist snips-asr-injection installiert und läuft?

edit: @Neuhier das ist aber nicht die empfohlene Herangehensweise.
Dazu musst du den FHEM Skill auf console.snips.ai forken und bekommst dann keine automatischen Updates mehr.
Bei einem manuellen Update (geforkte App und alle geforkten Intents löschen -> neu hinzufügen -> wieder forken) müsstest du außerdem alle Änderungen wieder machen.

Die neuen Gerätebezeichnungen über einen Inject zur Spracherkennung hinzuzufügen (ausgelöst über den updateModell Befehl im Fhem Modul) wäre der normale Weg.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: marwal am 11 September 2018, 23:03:55
@Neuhier: nur zum Verständnis:
Für ein Training Examples steht: Schalte Standardgerät im Standardraum ab
Dann hinterlege ich in den Slots für jedes "Standardgerät" einen Slot. Muss ich dann auch für jedes "Standardgerät" ein neues Training Examples erstellen, mit unterschiedlicher Verknüpfung?

danke @Thyraz
Zitathast du den Set-Befehl updateModel nach dem Hinzufügen ausgeführt?
habe ich so umgesetzt!
ZitatUnd ist snips-asr-injection installiert und läuft?
ich glaube da liegt der Hund begraben!

Was bewirkt snips-asr-injection?

Danke - Martin
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 11 September 2018, 23:10:13
@marwal:

das Vorgehen welches Neuhier beschreibt ist das alte, welches vor ASR-Injection gemacht werden musste.
Nach jedem Update der FHEM App (zur Zeit noch sehr oft  :P) musste man die App neu forken und seine Gerätenamen etc. in die Slots eintragen.

Das ist ein erheblicher Aufwand und nicht wirklich wünschenswert.
Wenn man die App nicht forked, erhält man Updates automatisch wenn man eine neue Version des Assistenten installiert.

Dann haben wir die Möglichkeit gefunden bei einem bereits installiertem Assistenten neue Begriffe zu den Slots hinzuzufügen.
Über eine MQTT Nachricht an Snips.

Ihr müsst euch also nicht mehr darum kümmern, dass Snips eure Geräte- und Raumbezeichnungen etc. kennt.
Das Modul übernimmt das durch den Befehl updateModel.

Das funktioniert aber nur, wenn das Snips Modul zum ASR-Inject installiert ist und der Service auf dem Rechner auch läuft.
Die Installation ist in der Doku im Kapitel Snips Installation -> Wichtig: ASR Injection installieren zu finden:
https://github.com/Thyraz/Snips-Fhem/blob/master/README.md#wichtig-asr-injection-installieren

Danach nochmal updateModel ausführen und erneut testen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: marwal am 11 September 2018, 23:26:34
@Thyraz,

ok, dann werde ich die Änderungen im Assistenten verwerfen und entsprechend https://github.com/Thyraz/Snips-Fhem/blob/master/README.md#wichtig-asr-injection-installieren (https://github.com/Thyraz/Snips-Fhem/blob/master/README.md#wichtig-asr-injection-installieren) umsetzen, testen und berichten! Derzeit ist meine App auch forked - wenn es ohne Änderungseinspielung komfortabler zu realisieren geht, ist es umso besser!

Vielen Dank - Martin
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 12 September 2018, 07:21:35
Zitat von: Thyraz am 11 September 2018, 17:02:56
Hast du das hier unten im Post mal getestet?
Denn Code zum Lautstärke ändern direkt in die Python Konsole eingeben:

https://forum.fhem.de/index.php/topic,89548.msg835217.html#msg835217

Um zu sehen ob der Teil an sich zumindest funktioniert?

das klappt.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 12 September 2018, 08:41:05
Das Talk2Fhem Modul ist schon sehr mächtig, aber auch eine menge Arbeit die ganzen Regexes zu definieren.

Ist es auswändig die SNIPS Spracherkennung direkt anzuzapfen? Quasi einfach alles gesagte zu bekommen ohne einen Assistenten.

ZitatFahre um 14 Uhr die Rollläden an der Terrasse runter und schalte dann in 2 Minuten die Bewässerung an

ZitatMach am Freitag um 5 Uhr die Heizung aus und in einer Woche wieder an

ZitatRollos im Wohnzimmer, Esszimmer und in der Küche auf 70

Das ist wirklich wie reden und die Antworten sind auch frei zu definieren.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 12 September 2018, 08:47:54
Ich hab mich nun auch einmal an der Text-Ausgabe von Werten versucht. Erkannt wird meine Eingabe schon, aber die voiceResponse ist etwas, nun sagen wir Mal, kryptisch...
snipsDevice: P H Wert
snipsRoom: Teich
snipsMapping: GetNumeric:currentVal=pHSnips

updateModel ist natürlich ausgeführt.

Wenn ich sage: "Wie ist der P H Wert im Teich", erkennt Snips korrekt:

{"Device":"p h wert","Room":"teich","input":"wie ist der p h wert im teich","intent":"GetNumeric","probability":"0.5696849","requestType":"voice","sessionId":"3867e651-688f-4efe-9cd3-ab4714746433","siteId":"mirror"}


Die VoiceResponse ist aber:

Der Wert von HASH(0x559bbe8f8c20) beträgt 7,6.

Dummerweise liest Snips damit aber auch HASH(0x559bbf1ff840) vor. Mach ich was falsch?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 12 September 2018, 09:20:33
Zitat von: tomster am 12 September 2018, 08:47:54
snipsDevice: P H Wert

Ich habe bei einigen Device das snipsDevice so verbogen wie Snips es am besten versteht.

Bsp: "Radio FFN" wurde zu "radioefefen"

Vielleicht ist das eine Möglichkeit?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 12 September 2018, 09:24:37
Zitat von: enno am 12 September 2018, 09:20:33
Ich habe bei einigen Device das snipsDevice so verbogen wie Snips es am besten versteht.

Bsp: "Radio FFN" wurde zu "radioefefen"

Vielleicht ist das eine Möglichkeit?

Hatte ich schon probiert. Gleiches Ergebnis.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 12 September 2018, 09:28:52
Erkannt wird es ja auch ohne Probleme.
Daran kann es also nicht liegen.

Device und Room sind ja auch korrekt erkannt.
Muss also im Modul irgendwo schiefgehen.

Ich schau mir das mal im Code an.

@tomster kannst du evtl. das selbe nochmal mit verbose 5 (nur um Snips Modul, nicht global) laufen lassen und die Logausgabe posten?
Dann hab ich es evtl. etwas einfacher das zu finden.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 12 September 2018, 09:48:34
Ok, ist ein Fehler im Code wenn kein Type bei GetNumeric bestimmt werden kann.
Hab da was doppelt-gemoppelt reinkopiert.

Neue Version ist auf Github, kannst mal testen ob es jetzt klappt.

Allerdings wird die Antwort dennoch komisch werden:
Der Wert von P H Wert beträgt 7,6

Du hast ja P H Wert als Device und nicht als Type (weil du das aktuell nicht auf einen eigenen Wert festlegen kannst).
Teich ist dagegen der Room obwohl das von der Logik her eigentlich das Device wäre.

Ist die Frage, ob ich den Slot für NumericType auch durch euch erweiterbar mache.
Sprich zusätzlich zu den allgemein gültigen Types, die eine etwas optimierte Sprachausgabe haben, gäbe es die Möglichkeit eigene Werte einzutragen.
Diese Werte dann eben auch wieder per ASR Inject dem zugehörigen Slot hinzufügen.

Sähe dann so aus in deinem Fall:
snipsname: Teich
snipsRoom: Garten
snipsMapping: GetNumeric:currentVal=pHSnips,type=P H Wert

Als Antwort würde ich dann eine allgemeingültige Sprachausgabe wählen,
welche vielleicht nicht ganz so "rund" klingt, dafür mit allen Benennungen einigermaßen funktioniert:
Zitattype von device beträgt value
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 12 September 2018, 10:14:47
Danke, das ging fix!

Zitat
Neue Version ist auf Github, kannst mal testen ob es jetzt klappt.
Geht, allerdings wir die Antwort genau wie von Dir beschrieben.
Zitat
Der Wert von P H Wert beträgt 7,6

Auch wenn ich mich mit dem Mappings bei den Intents noch nicht auseinandergesetzt habe, sollte ein simples

Status:response=Der Wert beträgt [Device:PHSnips].

nicht auch genügen um die Response "korrekt" zu formatieren?

--edit--
Geht das updateModel nicht mehr in der aktuellen Version? Ich hatte zwischenzeitlich den snipsName auf pehhahhwert geändert. Nun wieder auf P H Wert. Snips erkennt aber immer noch pehhahhwert...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 12 September 2018, 10:26:28
Das Problem mit dem ASR Inject bei Snips ist, dass es nur hinzufügen, aber nicht entfernen bzw. Reset gibt. ;)
Die Macher von Snips haben aber schon gemeint sie bringen evtl. bald eine neue Version raus die das ermöglicht.

Der Inject geht aber verloren wenn du den Assistenten neu installierst.
Also über sam install assistant oder händisch runterladen und entpacken.

Danach dann den aktuellen Stand wieder mit updateModel einspielen.

edit:
Das Status Mapping greift eben auch nur beim Status Intent.
Wenn du snipsName Teich vergibst und "Status Teich" sagst, könntest du eine Rückmeldung nach dem Schema Der Teich hat einen P H Wert von x festlegen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 12 September 2018, 10:31:27
Zitat
Das Problem mit dem ASR Inject bei Snips ist, dass es nur hinzufügen, aber nicht entfernen bzw. Reset gibt. ;)
Die Macher von Snips haben aber schon gemeint sie bringen evtl. bald eine neue Version raus die das ermöglicht.
Das habe ich gerade auch schlußgefolgert und mich auf die Suche nach dem (vermutlich JSON)-File auf meiner Festplatte gemacht, in dem die Injections abgelegt werden. Hab ich noch nicht gefunden...
Zitat
edit:
Das Status Mapping greift eben auch nur beim Status Intent.
Wenn du snipsName Teich vergibst und "Status Teich" sagst, könntest du eine Rückmeldung nach dem Schema Der Teich hat einen P H Wert von x festlegen.
Klingt eigentlich selbsterklärend, nur hab ich's so nicht verstanden ;-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 12 September 2018, 10:35:43
Gute Info mit dem neu installieren, mein Wecker den ich einmal eingespielt habe hat mich auch geärgert
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 12 September 2018, 12:08:48
Ja, vielleicht sollte das bei der Doku in den Abschnitt zu ASR Injection.
Das Problem ist nur, dass die Doku eh schon so groß ist, dass sie wohl niemand wirklich am Stück lesen wird...  :P

edit: War sogar schon unter der Beschreibung von updateModel drin.
Nicht mal ich kenne also scheinbar die Doku.  ;D
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 12 September 2018, 13:34:47
Zitat von: ahlermi am 12 September 2018, 07:21:35
das klappt.

Hab dir hier mal ne angepasste Version erstellt, die einiges loggen sollte.
Einfach wieder mit sudo python3 /opt/snips-volume/snips-volume.py starten.

Dann über das Fhem Modul versuchen die Lautstärke zu ändern.

Danach die Ausgabe hier posten.
Hoffe damit finden wir endlich woran es liegt...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: eurolift am 12 September 2018, 16:01:41
Hallo Thyraz

Nach update läuft errorResponse nicht mehr.Ansonsten geniales Modul.
Achso kämpfe gerde mit Uhrzeitansage.Am besten hört sich es noch mit Status an.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 12 September 2018, 16:10:32
Hi eurolift,

die Änderung wollte ich eigentlich erst später mit dem nächsten Update verkünden,
aber der Zwischenfix heute Morgen hat das nun schon aktiv geschaltet:

errorResponse wurde durch das Attribut response ersetzt.
Hier kann man bisher 3 verschiedene Keys setzen:
- DefaultError
- NoActiveMediaDevice
- DefaultConfirmation

Siehe aktualisierte Doku:
https://github.com/Thyraz/Snips-Fhem#attribute


Abfrage von Uhrzeit und Datum als Intent fehlt tatsächlich noch irgendwie als "Grundfunktionalität" des Moduls.
Habs mal zu den Todos dazu...
So richtig schön mit eigenen Fragen wäre das sonst nur mit nem Custom Intent möglich.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 12 September 2018, 16:32:06
Zitat von: Thyraz am 12 September 2018, 13:34:47
Hab dir hier mal ne angepasste Version erstellt, die einiges loggen sollte.
Einfach wieder mit sudo python3 /opt/snips-volume/snips-volume.py starten.

Dann über das Fhem Modul versuchen die Lautstärke zu ändern.

Danach die Ausgabe hier posten.
Hoffe damit finden wir endlich woran es liegt...

set Snips volume siteId="default" volume="77" ausgeführt, nix zu sehen

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 12 September 2018, 17:43:09
Langsam wirds kurios. ;)

Man sieht, dass er sich die richtigen Serverdaten holt und ebenso die siteId richtig bestimmt.
Es wird dann auch das on_connect Callback von der MQTT Library aufgerufen, da wir hier ja die Meldung "MQTT connected" ausgeben.
Er schafft es also auch wirklich sich zum Server zu verbinden.

Das Callback für ein eingehendes "hermes/sound/setvolume" Topic wird aber nie aufgerufen,
obwohl du den Befehl über FHEM abschickst.

Bleiben an sich noch folgende Möglichkeiten:
- FHEM schickt nichts ab
- Die verschickten Daten kommen nicht unbeschädigt an, so dass der MQTT Server oder das Snips-Volume Modul die Nachricht nicht verstehen.
- Das Python MQTT Modul bei dir hat irgendeinen Knacks weg

Kannst du dich mal lokal auf dem Snips Rechner mit mosquitto_sub zum MQTT Server verbinden und schauen ob da was reinkommt wenn du das Kommando von FHEM schickst?
Und auch ob das lesbar ist, oder irgendwelcher Kauderwelsch:


mosquitto_sub -v -h localhost -t hermes/sound/setvolume


Wenn ich dann über FHEM ein set Snips volume siteId="default" volume="100" schicke, kommt folgende Ausgabe im Terminalfenster:

hermes/sound/setvolume {"siteId":"default","volume":"100"}
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: marwal am 12 September 2018, 21:08:45
Guten Abend Thyraz,

ZitatDann haben wir die Möglichkeit gefunden bei einem bereits installiertem Assistenten neue Begriffe zu den Slots hinzuzufügen.
Über eine MQTT Nachricht an Snips.

Ihr müsst euch also nicht mehr darum kümmern, dass Snips eure Geräte- und Raumbezeichnungen etc. kennt.
Das Modul übernimmt das durch den Befehl updateModel.

Das funktioniert aber nur, wenn das Snips Modul zum ASR-Inject installiert ist und der Service auf dem Rechner auch läuft.
Die Installation ist in der Doku im Kapitel Snips Installation -> Wichtig: ASR Injection installieren zu finden:
https://github.com/Thyraz/Snips-Fhem/blob/master/README.md#wichtig-asr-injection-installieren

Danach nochmal updateModel ausführen und erneut testen.

Klappt einwandfrei! Die gesprochenen Namen werden alle wunderbar erkannt!

Danke nochmal!

Martin
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 12 September 2018, 23:27:40
So, mal wieder eine neue Version:

Feature 1 hatten wir ja schon:

Attribut errorResponse gibt es nicht mehr, wird jetzt über Attribut response geregelt
Es können hierüber diverse Standardausgaben geändert oder stummgeschaltet werden.
Siehe Beschreibung hier: https://github.com/Thyraz/Snips-Fhem#attribute

Eigene NumericTypes
Ihr könnt nun eigene Types festlegen. Sei es nun der PH-Wert eures Teichs (;)) oder z.B. der Stromverbrauch eines Geräts.

Beispiel:
Zitat
snipsName Deckenlampe
snipsRoom Wohnzimmer
snipsMapping:

SetOnOff:cmdOn=on,cmdOff=off
GetOnOff:currentVal=pct,valueOff=0
SetNumeric:currentVal=pct,minVal=0,maxVal=99,map=percent,cmd=dim,step=30
GetNumeric:currentVal=pct,type=Helligkeit
GetNumeric:currentVal=power,type=Stromverbrauch


Hier wurde zum bestehenden GetNumeric Mapping zur Helligkeits-Steuerung ein weiteres hinzugefügt.
Der Type Stromverbrauch existiert ja bisher nicht und wird nachdem man das Mapping angelegt hat,
wieder über den Set-Befehl updateModel für Snips bekannt gemacht (ASR Inject).

Danach könnt ihr z.B. über Wie ist der Stromverbrauch der Deckenlampe im Wohnzimmer den Wert abfragen.

@tomster:
Wenn du das für den Teich umsetzen willst: Nach dem Ändern von snipsName, snipsRoom und snipsMapping am Besten den Assistenten neu installieren um die alten Wörter vom ASR Inject wieder loszuwerden und dann erst updateModel ausführen.
Sonst hast du nachher identische Werte in verschiedenen Slots. Zum Beispiel Type und Name (P H Wert), bzw. Name und Room (Teich).
Das dürfte schief gehen. ;)

Shortcuts
Angelehnt an Siri Shortcuts auf iOS oder Alexa Routinen.
Soll ermöglich auf einfache Weise (ohne Custom Intents) durch einen bestimmten Satz eine beliebige Aktion auszulösen.
Nachteil gegenüber einem Custom Intent ist dabei, dass der Satzbau nicht variable ist (Somit auch keine flexible Wertübergabe).

Es lassen sich damit aber eben ohne großen Aufwand eigene Abläufe definieren.

Beispiele wofür man das nutzen kann:
Hey Snips, wieviel Uhr ist es
Hey Snips, Stimmung gemütlich
Hey Snips, Stimmung hell
Hey Snips, sprenge den Rasen
Hey Snips, mach mir einen Kaffee


Definiert werden die Shortcuts im Attribut shortcuts des Snips Devices als ein Trigger=Cmd Eintrag pro Zeile.
Cmd kann dabei entweder ein FHEM Befehl wie set Lampe on, oder ein Perl-Ausdruck in geschweiften Klammern sein.
Die Perl Variante erlaubt es auch einen Text per return zurückzuliefern, der dann als Antwort ausgegeben wird.
In der Perl Variante kann außerdem über $ROOM auf den Raum zugegriffen werden, indem das Kommando eingesprochen wurde.

Hier mal noch zwei beispielhafte Zeilen für das shortcuts Attribut:

Wieviel Uhr ist es={return "es ist " . qx(date +%R);}
Stimmung hell={snipsSetSzene($ROOM,"hell")}


Die erste Zeile bastelt einfach die Anwort aus der aktuellen Uhrzeit zusammen, wodurch diese per TTS ausgegeben wird.
Die zweite Zeile ruft eine Funktion in meiner 99_myutils.pm auf, welche dann die entsprechende Szene im passenden Raum aktiviert.

Hier noch der Code der Funktion damit man sieht was hier passiert:

# Szenenwechsel über Snips
sub snipsSetSzene($$) {
my ($room, $scene) = @_;

if ($room eq "wohnzimmer") {
fhem("set LightsceneWohnzimmer scene $scene");
}

return "Szene $scene in raum $room aktiviert";
}


Achtung: Die Shortcuts Funktionalität ist im Moment noch etwas eingeschränkt durch die fehlende NLU-Inject Möglichkeit seitens Snips.
Dies betrifft vor allem sehr kurze Triggersätze.
Einzelne Worte klappen oft nicht, ab zwei Worten geht es meist.

Hintergrund:
ASR (Spracherkennung) bekommt über den Inject die Wörter mit und der Text wird dann verstanden.
NLU (Parser der den Sinn hinter dem erkannten Text erkennen soll) bekommt diese neuen Infos aber nicht mit.
Nennt man einen Trigger z.B. nur "hell" statt "Stimmung hell", blockt NLU das oft ab, wenn es das Wort nicht kennt.
In diesem Fall kommt der Failed "Dong" Sound und beim FHEM Modul kommt überhaupt kein erkannter Intent/Text an.

Dies sollte aber in Zukunft irgendwann nicht mehr gelten, da die Macher von Snips wohl schon an einer NLU-Inject Funktionalität testen.
Dann würde auch NLU den Sinn der neuen Wörter (zu welchem Intent und welchem Slot sie gehören) erkennen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 13 September 2018, 07:23:11
Zitat von: ahlermi am 12 September 2018, 16:32:06
set Snips volume siteId="default" volume="77" ausgeführt, nix zu sehen


2018.09.13 07:19:41 5: set volume - value: siteId="default" volume="77"
2018.09.13 07:19:41 5: Params: siteId="default" volume="77"


nichts
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 13 September 2018, 09:01:56
Moin ahlermi,

dann scheint FHEM tatsächlich nichts rauszuschicken.
Kannst du die Version mal einspielen?

Sollte mit verbose 5 auf dem Snips Device noch ein paar Zeilen mehr ins Log schreiben.
Am Besten auch mal das MQTT Device in Fhem, welches du für Snips eingerichtet hast noch auf verbose 5 setzen um zu sehen ob ggf. hier was beim senden schief geht.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 13 September 2018, 09:59:01
Die neue Version works like a charm! Vielsten Dank!
Und die Shortcuts finde ich genial! Ich meine aber, dass man die Shortcuts tunlichst in einem einzelnen Dummy-Device definieren sollte, um nicht durch Unübersichtlichkeit (attr in mehreren Devices) irgendwann soviele Shortcuts in den Devices verstreut hat, dass man sie nicht mehr findet...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 13 September 2018, 10:36:05
Zitat von: ahlermi am 13 September 2018, 07:23:11

2018.09.13 07:19:41 5: set volume - value: siteId="default" volume="77"
2018.09.13 07:19:41 5: Params: siteId="default" volume="77"


nichts

2018.09.13 10:35:31 5: set volume - value: siteId="default" volume="77"
2018.09.13 10:35:31 5: Params: siteId="default" volume="77"
2018.09.13 10:35:31 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/10_SNIPS.pm line 1000.
2018.09.13 10:35:31 5: siteId:
2018.09.13 10:35:31 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/10_SNIPS.pm line 1001.
2018.09.13 10:35:31 5: volume:
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 13 September 2018, 10:54:18
Zitat von: ahlermi am 13 September 2018, 10:36:05
2018.09.13 10:35:31 5: set volume - value: siteId="default" volume="77"
2018.09.13 10:35:31 5: Params: siteId="default" volume="77"
2018.09.13 10:35:31 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/10_SNIPS.pm line 1000.
2018.09.13 10:35:31 5: siteId:
2018.09.13 10:35:31 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/10_SNIPS.pm line 1001.
2018.09.13 10:35:31 5: volume:

Schau Dir mal bitte die 10_SNIPS.pm mit nano oder vi auf dem Raspi (oder welchen Rechner Du auch immer verwendest) an. Ich trau mich fast wetten, dass es an Zeilenumbrüchen innerhalb des Codes liegt.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 13 September 2018, 10:56:43
Ich habs im Griff, apt-get upgrade und reboot.

Nun kommt was an  :o

... zu früh gefreut, einstellen der Lautstärke klappt nicht


root@snips:~# systemctl stop snips-volume.service ; python3 /opt/snips-volume/snips-volume.py
MQTT Server:  localhost:1883
MQTT Host:  localhost
MQTT Port:  1883
Binding:  default@mqtt
SiteId:  default
MQTT connected
Received setvolume
Target SiteId:  default
Desired Volume:  77
Target SiteId matches SiteId of this device
Trying to adjust volume
No mastr mixer, fallback to PCM
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 13 September 2018, 11:25:52
Zitat von: tomster am 13 September 2018, 09:59:01
Die neue Version works like a charm! Vielsten Dank!
Und die Shortcuts finde ich genial! Ich meine aber, dass man die Shortcuts tunlichst in einem einzelnen Dummy-Device definieren sollte, um nicht durch Unübersichtlichkeit (attr in mehreren Devices) irgendwann soviele Shortcuts in den Devices verstreut hat, dass man sie nicht mehr findet...

@tomster freut mich, dass alles soweit funktioniert. :)
Waren doch einige Umbauten nötig, hab daher gestern noch fleißig getestet bis ich mir einigermaßen sicher war nichts Grundlegendes geschrottet zu haben. ;)

Zu den Shortcuts: Die sind ja gobal und nicht auf ein bestimmtes Device gemünzt.
Befinden sich also alle im Snips Device und nicht verstreut.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: micky0867 am 13 September 2018, 11:29:20
Zitat von: ahlermi am 11 September 2018, 13:13:35
Alsamixer stürzt ab wenn ich auf Soundkarte PS3Eye wechsle, wohl normal.

MQTT connected is eine Ausgaben.

Alles andere aus dem Log sind Eingaben.
Das lässt sich verhindern...
Dafür ist das Kernelmodul snd-usb-audio verantwortlich.
Mit dem Parameter ignore cntl_error=1 stürzt alsamixer bei mir nicht mehr ab.

modules.conf erweitern:
options snd-usb-audio ignore_ctl_error=1

Micky



Gesendet von meinem ONEPLUS A3003 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 13 September 2018, 11:49:13
Zitat von: Thyraz am 13 September 2018, 11:25:52
Befinden sich also alle im Snips Device und nicht verstreut.

Oder halt da ;-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 13 September 2018, 12:18:19
Zitat von: ahlermi am 13 September 2018, 10:56:43
... zu früh gefreut, einstellen der Lautstärke klappt nicht


root@snips:~# systemctl stop snips-volume.service ; python3 /opt/snips-volume/snips-volume.py
MQTT Server:  localhost:1883
MQTT Host:  localhost
MQTT Port:  1883
Binding:  default@mqtt
SiteId:  default
MQTT connected
Received setvolume
Target SiteId:  default
Desired Volume:  77
Target SiteId matches SiteId of this device
Trying to adjust volume
No mastr mixer, fallback to PCM


Ich versteh es echt nicht.  :-\

Das ist die Funktion in der er laut Log ja scheinbar noch landet aber dann die Lautstärke nicht ändert:


def set_volume(volume):
    volume = int(volume)

    print("Trying to adjust volume")

    try:
        mixer = alsaaudio.Mixer()
    except Exception:
        print("No mastr mixer, fallback to PCM")
        mixer = alsaaudio.Mixer('PCM')
        pass

    mixer.setvolume(volume)



Neulich hattest du ja das in der Python Console getestet und das ging:

sudo python3

>>> import alsaaudio

>>> mixer = alsaaudio.Mixer()
oder falls es ein Raspberry Pi ist:
>>> mixer = alsaaudio.Mixer('PCM')

>>> mixer.setvolume(100)

>>> exit()


Sind an sich ja genau die selben Befehle ...

Meinen Hinweis, dass die Volume über Python gesetzt nicht genau mit den Werten aus Alsamixer übereinstimmt hast du gesehen?
Also evtl. mal mit den Werten 0 und 100 testen.
Dazwischen ist es nicht komplett linear. Kann also gut sein, dass bei einem Sollwert 77 nur knappe 60 in Alsamixer eingestellt werden.

Den Grund dahinter habe ich auch nicht rausgefunden, war mir aber auch nicht so wichtig, da die Regelung zwischen 0 und 100 ja dennoch stufenlos möglich ist
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 13 September 2018, 18:56:25
Zitat von: Thyraz am 13 September 2018, 12:18:19


100% ist angekommen, vermutlich war es das mit den unterschiedlichen Werten, danke für die Hilfe!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 13 September 2018, 19:45:41
Für  Amazon Echo habe ich eine Lösung gebaut um mit einem Custom Skill mit Talk2Fhem zu reden:


fhemIntents          {my_Alexatalk("$ALLES")}=den Satz {ALLES:AMAZON.SearchQuery}



sub my_Alexatalk($){
    Log 3, "Alexa: @_";
    fhem("set talk @_");
}


Zitat
Alexa sag James, den Satz mach die Stehlampe im Wohnzimmer an

:o ???
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: marwal am 13 September 2018, 21:10:59
Hallo zusammen,

gibt es eine Möglichkeit Snips in den listening-Modus zu versetzen ohne vorher das Wakeword zu sprechen, z.B. via Systembefehl?

LG

Martin
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 13 September 2018, 22:21:33
Das geht, ist nur im Modul noch nicht eingebaut.
Man kann den Dialog auch mit einer Ansage/Frage seitens Snips beginnen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rih am 14 September 2018, 18:00:09
Hallo,

Ihr seid hier ja schon am diskutieren über alle möglichen Erweiterungen etc. Installations-Probleme gibt es anscheinend keine. Von daher traue ich mich fast gar nicht wegen meinen Anfänger-Problemen um Hilfe zu fragen.

Kurz zu meiner Snips-Umgebung: Pi3 mit Respeaker 2 Mics, Stretch lite, alles nach Anleitungen vor 2 Tagen installiert. Auf dem Pi laufen 8 Snips-relevante Services und Mosquitto. Audio-Test mit arecord / aplay funktioniert. FHEM-Modul SNIPS installiert. Snips und SnipsMQTT angelegt. Raum Snips angelegt. Dem Raum eine Lampe hinzugefügt, entsprechende Attribute gesetzt.

Was geht: das Hotword Hey Snips wird erkannt. Dannach passiert nichts. Keine Ausgabe "etwas schief gelaufen" etc. Sollte da nicht ein Bestätigungs-Sound oder -Meldung kommen?
Was noch geht: Im Snips-Device einen textCommand-Befehl "Schalte Salzlampe ein" absetzen -> die Lampe schaltet an. Und aus mit dem entsprechenden Befehl.
Was auch noch geht: mit dem Snips-Say-Kommando kann ich eine Sprachausgabe machen, z.B. "Das ist ein Test".

Auf Spracheingabe erfolgt leider keinerlei Reaktion (ausser der Erkennung des Hotwords laut Log). Ein Verbose 5 bei Snips und SnipsMQTT zeigt folgendes an:

2018.09.14 16:51:10 5: MQTT SnipsMQTT message received: Publish/at-most-once hermes/hotword/default/detected
  7b 22 73 69 74 65 49 64 22 3a 22 64 65 66 61 75  {"siteId":"defau
  6c 74 22 2c 22 6d 6f 64 65 6c 49 64 22 3a 22 68  lt","modelId":"h
  65 79 5f 73 6e 69 70 73 22 2c 22 6d 6f 64 65 6c  ey_snips","model
  56 65 72 73 69 6f 6e 22 3a 22 68 65 79 5f 73 6e  Version":"hey_sn
  69 70 73 5f 33 2e 31 5f 32 30 31 38 2d 30 34 2d  ips_3.1_2018-04-
  31 33 54 31 35 3a 32 37 3a 33 35 5f 6d 6f 64 65  13T15:27:35_mode
  6c 5f 30 30 31 39 22 2c 22 6d 6f 64 65 6c 54 79  l_0019","modelTy
  70 65 22 3a 22 75 6e 69 76 65 72 73 61 6c 22 2c  pe":"universal",
  22 63 75 72 72 65 6e 74 53 65 6e 73 69 74 69 76  "currentSensitiv
  69 74 79 22 3a 30 2e 35 7d                       ity":0.5}


2018.09.14 16:51:10 5: publish received for hermes/hotword/default/detected, {"siteId":"default","modelId":"hey_snips","modelVersion":"hey_snips_3.1_2018-04-13T15:27:35_model_0019","modelType":"universal","currentSensitivity":0.5}
2018.09.14 16:51:10 5: Parsed value:  for key: intent
2018.09.14 16:51:10 5: Parsed value:  for key: sessionId
2018.09.14 16:51:10 5: Parsed value:  for key: input
2018.09.14 16:51:10 5: Parsed value: default for key: siteId
2018.09.14 16:51:10 5: Parsed value:  for key: probability
2018.09.14 16:51:10 5: Parsed value:  for key: intent
2018.09.14 16:51:10 5: Parsed value:  for key: sessionId
2018.09.14 16:51:10 5: Parsed value:  for key: input
2018.09.14 16:51:10 5: Parsed value: default for key: siteId
2018.09.14 16:51:10 5: Parsed value:  for key: probability


Attribute der Lampe:

Attributes:
   IODev      Raspbee
   alias      Lava_Lampe
   color-icons 2
   devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
   fp_EG_Aussen 444,287,1,Lava_Lampe
   group      Licht_EG
   model      Classic B40 TW - LIGHTIFY
   room       Snips,Erdgeschoss,HUEDevice
   snipsMapping SetOnOff:cmdOn=on,cmdOff=off
   snipsName  Salzlampe
   snipsRoom  Erdgeschoss
   subType    ctdimmer
   webCmd     ct:ct 490:ct 380:ct 270:ct 160:toggle:on:off


List Snips:

Internals:
   DEF        SnipsMQTT Erdgeschoss
   IODev      SnipsMQTT
   MODULE_VERSION 0.2
   NAME       Snips
   NOTIFYDEV  SnipsMQTT Erdgeschoss
   NR         282
   STATE      ???
   TYPE       SNIPS
   READINGS:
     2018-09-14 15:58:33   lastIntentPayload {"Device":"salzlampe","Value":"aus","input":"\u0022Schalte Salzlampe aus\u0022","intent":"SetOnOff","probability":"0.71456796","requestType":"text","sessionId":"fhem.textCommand","siteId":null}
     2018-09-14 15:58:33   lastIntentTopic hermes/nlu/intentParsed
     2018-09-14 16:51:25   listening_erdgeschoss 0
     2018-09-14 15:58:33   textResponse    Ok.
     2018-09-14 16:51:25   transmission-state incoming publish received
   helper:
     defaultRoom Erdgeschoss
   message_ids:
   subscribe:
     hermes/intent/+
     hermes/nlu/intentParsed
     hermes/hotword/+/detected
     hermes/hotword/toggleOn
   subscribeExpr:
     ^hermes\/intent\/([^/]+)$
     ^hermes\/nlu\/intentParsed$
     ^hermes\/hotword\/([^/]+)\/detected$
     ^hermes\/hotword\/toggleOn$
   subscribeQos:
     hermes/hotword/+/detected 0
     hermes/hotword/toggleOn 0
     hermes/intent/+ 0
     hermes/nlu/intentParsed 0
Attributes:
   IODev      SnipsMQTT
   verbose    5


List SnipsMQTT:

Internals:
   DEF        192.168.0.6:1883
   DeviceName 192.168.0.6:1883
   FD         66
   NAME       SnipsMQTT
   NOTIFYDEV  global
   NR         281
   NTFY_ORDER 50-SnipsMQTT
   PARTIAL   
   STATE      opened
   TYPE       MQTT
   buf       
   msgid      2
   ping_received 1
   timeout    60
   READINGS:
     2018-09-14 17:45:59   connection      active
     2018-09-14 12:54:58   state           opened
   messages:
Attributes:
   verbose    5


Auffällig sind noch diese Perl-Warnungen Snips betreffend im Logfile:

2018.09.14 12:56:17 1: PERL WARNING: Use of uninitialized value in substitution (s///) at ./FHEM/10_SNIPS.pm line 712.
2018.09.14 12:56:17 1: PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/10_SNIPS.pm line 753.

2018.09.14 15:58:11 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 355.
2018.09.14 15:58:11 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 272.
2018.09.14 15:58:11 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 331.
2018.09.14 15:58:11 1: PERL WARNING: Use of uninitialized value $attrString in split at ./FHEM/10_SNIPS.pm line 606.
2018.09.14 15:58:11 1: PERL WARNING: Use of uninitialized value $room in string eq at ./FHEM/10_SNIPS.pm line 381.


Ich hoffe, dass ihr damit alle relevanten Informationen habt und bitte um Unterstützung bei der Fehlersuche. Komme alleine nicht mehr weiter.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 14 September 2018, 18:01:44
So, zum Wochenende noch eine neue Version für alle, die scharf auf selbstdefinierte Antworten von Snips sind. ;)
Ich hab jetzt die maximale Konfigurationsmöglichkeit genutzt, indem man das für jede Mappingzeile getrennt angeben kann.

Achtung: Die Formatierung der Texte beim Status Intent hat sich geändert!
Falls ihr hier statt Perl-Code einen Text angebt, muss dieser jetzt in Anführungszeichen.
Bitte euren bisherigen Status Mappings anpassen.

Status:response="Der Status vom Gerät ist [$DEVICE:state]"

Das dient zu Vereinheitlichung, da jetzt in Snips an sich überall Angaben auf die folgende Weise erlaubt sind:
1) reading bzw. cmd -> Ruft wer aus aktuellem Device ab, bzw. führt Kommando im aktuellen Device aus.
2) device:reading bzw. device:cmd -> An sich wie Erstens, nur umgeleitet auf ein anderes Gerät
3) { perlcode } -> Perlcode in in geschwungenen Klammern
4) "Dies ist ein Text mit Variablen $DEVICE $ROOM $VALUE und [Device:Reading] Ersetzungen." -> Text in Anführungszeichen um die 4 Varianten auseinanderhalten zu können.

Aber jetzt zur eigentlichen Neuerung:

Custom Replies
Alle Intent-Mappings haben jetzt eine neue Option response erhalten.
Hierüber könnt ihr die Antworten anpassen.
Es sind auch hier die 4 oben genannten Möglichkeiten zum Erstellen der Antwort möglich, Nummer 3 und 4 dürften am meisten genutzt werden schätze ich.

Innerhalb vom Perl Code oder dem Text könnt ihr die Variablen $DEVICE, $ROOM und je nach Intent auch $VALUE nutzen.
Bei GetOnOff ist $VALUE dann z.B. 0 oder 1.
Bei SetNumeric der zu setzende Wert.

hier zwei schnelle (sinnlose) Beispiele dazu:


SetOnOff:cmdOn=on,cmdOff=off,response="Demo: $DEVICE $ROOM $VALUE [Dimmer02:power]"
GetOnOff:currentVal=dimmerVal,valueOff=0,response={return ($VALUE == 1) ? "ist an" : "ist aus"}


Für komplexere Dinge bietet es sich auch an eine Funktion in der 99_MyUtils.pm zu erstellen und hier dann anhand der Werte und des Intents (und evtl. Types) eine Antwort zu bilden.

Beispielmapping:

GetNumeric:currentVal=state,type=Temperatur,response={return=mySnipsResponses($DEVICE,"GetNumeric","Temperatur",$VALUE)}


Mehr dazu die Tage wenn ich wieder etwas Zeit habe.
Werde dann auch die Doku mal wieder gerade ziehen...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 14 September 2018, 18:03:14
@rih muss jetzt leider weg, schau es mir Morgen mal an.
Wenn aber soviel schon geht kann das ja nur ne Kleinigkeit sein.  ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rih am 15 September 2018, 11:44:01
@Thyraz: Du machst mir gute Hoffnung  :)

Hier noch eine Snips-watch-Ausgabe während eines Tests:
pi@raspberrypi:~ $ snips-watch -vvv
[09:28:43] Watching on localhost:1883 (MQTT)
[09:28:49] [Hotword] detected on site default, for model hey_snips
[09:28:49] [Asr] was asked to stop listening on site default
[09:28:50] [Hotword] was asked to toggle itself 'off' on site default
[09:28:50] [Dialogue] session with id 'c76814ea-9aeb-45d1-9623-676123cab705' was started on site default
[09:28:50] [AudioServer] was asked to play a wav of 41.1 kB with id '33dd240a-c1be-4c15-841b-943153a5c11a' on site default
[09:29:05] [Dialogue] session with id 'c76814ea-9aeb-45d1-9623-676123cab705' was ended on site default. The session was ended because one of the component didn't respond in a timely manner
[09:29:05] [Asr] was asked to stop listening on site default
[09:29:05] [Hotword] was asked to toggle itself 'on' on site default
^C
pi@raspberrypi:~ $

Passt das mit der site default? Der Audioserver soll eine wav mit id '33dd ...' abspielen, was er nicht tut.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: msommer am 15 September 2018, 12:23:56
Hallo,

Ich habe bemerkt, das GetNumeric  bei mir mit "wie ist die temperatur im ..." seit einem der letzten Updates nicht mehr funktioniert. Der Grund ist das der Type in lastIntentPayload, je nach Art der Frage, einmal mit kleinem und einmal mit großem T geschrieben ist. 

{"Room":"wohnzimmer","Type":"temperatur","input":"wie ist die temperatur im wohnzimmer","intent":"GetNumeric","probability":"1","requestType":"voice","sessionId":"80f522b7-a625-4533-962e-399e65f97abb","siteId":"default"}


In dem Fall matched der Type nicht dem Type im snipsMapping (temperatur != Temperatur) -> Fehler

{"Room":"wohnzimmer","Type":"Temperatur","input":"wie warm ist es im wohnzimmer","intent":"GetNumeric","probability":"1","requestType":"voice","sessionId":"04ad0efb-5954-4b31-8e71-e56f1e261d74","siteId":"default"}

In dem Fall passt es.

Im sam watch ist der Type immer mit Großbuchstaben.
[12:15:19] [Nlu] detected intent Thyraz:GetNumeric with probability 1.000 for input "wie ist die temperatur im wohnzimmer"
              Slots ->
                 Type -> Temperatur
                 Room -> Wohnzimmer

Kann sich das jemand erklären?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 15 September 2018, 13:57:51
Woher auch immer es kommt (dachte bisher, dass der Wert den ich aus der Position im JSON ziehe immer der Schreibweise im Slot der App entspricht), die Abfrage ist mit dem Update das ich eben hochgeladen habe nun Case Insensitive.

Hoffe ich hab alle Stellen erwischt wo Vergleiche stattfinden, sonst nochmal Bescheid geben.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 15 September 2018, 14:24:56
@rih irgendwie bin ich aus den Logs noch nicht so ganz schlau geworden.
Du schreibst, dass Text2Speech geht? (say Kommando vom Snips-Modul.)

Wenn ja scheint der Audioserver ja Sounds spielen können.
Verwirrt mich, dass er das dann nicht macht nachdem das Hotword getriggert hat.

Site default sollte passen.
Hotword wurde ja auch auf Site default erkannt.

Falls aus irgendeinem Grund was mit den Sounds nicht stimmt:
Versuch mal "Hey Snips, ... <2 Sekunden warten> ... , Schalte die Salzlampe ein"

Durch die Sounds merkt man normal automatisch, dass man etwa eine Sekunde Zwangspause machen muss nach dem Hotword.
Ohne die Sounds versuchst du es evtl. zu schnell.

Nicht, dass es nur an den Sounds hängt und an nichts anderem.

Falls das nicht hilft, schau mal mit systemctl status <servicename> ob folgende Dienste wirklich laufen:
snips-asr
snips-audio-server
snips-dialogue
snips-hotword
snips-nlu
snips-tts

In deinem letzten Post sieht man, dass der Dialogmanager mit einem Timeout endet.
Man sieht aber keinen erkannten Text von ASR.
Daher ist eben die Frage ob echt kein Text erkannt wird oder das Timing nur nicht passt...

Mikro an sich geht ja, sonst würde er das Hotword nicht erkennen.
Audio auch, sonst gäbe es kein TTS.

Bleibt die Frage ob sonst mit dem ASR Modul was nicht stimmt.

Anstatt mit snips-watch, könntest du auch mal versuchen im Terminal mit mosquitto_sub zu lauschen.
Das liefert dann die echten Daten vom MQTT Traffic.
Kann man meist noch etwas mehr rauslesen:


mosquitto_sub -v -h localhost -t hermes/hotword/# -t hermes/intent/# -t hermes/tts/# -t hermes/audioServer/default/playFinished -t hermes/asr/# -t hermes/dialogueManager/# -t hermes/nlu/# -t hermes/sound/setvolume
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 15 September 2018, 14:35:22
Ich hatte genau das Verhalten als ich ein CustomHotword definiert habe, bis ich das eingestellt habe.

Zitat
Important: If you want the universal hotword model attached to your assistant to run simultaneously, add its path to the model entry: /usr/share/snips/assistant/custom_hotword. Note that if you do not provide sensivity the model will take 0.5 by default.

Gruß Michael
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rih am 15 September 2018, 18:28:06
@Thyraz:
Danke für Deine Tipps.

1. Ja, say und textCommand funktioniert.
2. Wartezeit 1, 2, 3 Sekunden probiert -> keine Reaktion.
3. die 7 Dienste laufen (inkl. snips-asr-injection)
Allerdings tritt beim Audio-Server ein Fehler auf (aber er läuft):

Sep 15 15:24:51 raspberrypi snips-audio-server[761]:  -> caused by: UnanticipatedHostError
Sep 15 15:24:51 raspberrypi snips-audio-server[761]: thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: "SendError(..)"', libcore/r
Sep 15 15:24:51 raspberrypi snips-audio-server[761]: note: Run with `RUST_BACKTRACE=1` for a backtrace.
Sep 15 15:25:39 raspberrypi snips-audio-server[761]: INFO:snips_audio_portaudio    : Playing "c36fe1d8-ceb9-4976-9550-e987d2d6d2bc" using output "default", w
Sep 15 15:25:39 raspberrypi snips-audio-server[761]: Expression 'alsa_snd_pcm_hw_params_set_rate_near( pcm, hwParams, &setRate, NULL )' failed in 'src/hostap
Sep 15 15:25:39 raspberrypi snips-audio-server[761]: Expression 'paUnanticipatedHostError' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2053
Sep 15 15:25:39 raspberrypi snips-audio-server[761]: Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, self->primeBuffers, hwPa
Sep 15 15:25:39 raspberrypi snips-audio-server[761]: Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuff
Sep 15 15:25:39 raspberrypi snips-audio-server[761]: ERROR:snips_audio_server_hermes: could not play "c36fe1d8-ceb9-4976-9550-e987d2d6d2bc"
Sep 15 15:25:39 raspberrypi snips-audio-server[761]:  -> caused by: UnanticipatedHostError


Leider kann ich mit den Meldungen recht wenig anfangen. Verhindert dieser Fehler nun nur das Abspielen der wav-Datei oder blockiert dieser den weiteren Ablauf?

4. MQTT-Traffic (mit MQTT.fx erfasst) während "Hey snips" , Wartezeit, "Schalte Salzlampe ein":
Keine Fehlermeldungen ersichtlich. Meiner Ansicht nach normale Meldungen erscheinen nur von hotword, asr und dialogueManager. Keine Meldung vom Audioserver und den anderen von Dir genannten Topics.

@ahlermi:
Ich habe ja kein Custom-Hotword ausgewählt, oder verstehe ich Dich falsch? Habe aber gestern den Assitenten nochmal neu erstellt und in den Snips-Ordner kopiert -> keine Änderung am Fehlerverhalten.

Kann jemand mit den Audioserver-Meldungen von Punkt 3 etwas anfangen? Scheint ja eher ein grundlegendes Linux- bzw. Alsa-Problem zu sein.
Gruß
Hans
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 15 September 2018, 22:20:38
mit der Version von heute bekomme ich einige Warnungen im Log:

2018.09.15 21:53:03 1: PERL WARNING: Use of uninitialized value in substitution (s///) at ./FHEM/10_SNIPS.pm line 737.
2018.09.15 21:53:03 1: PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/10_SNIPS.pm line 778.
2018.09.15 22:04:26 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 226.
2018.09.15 22:04:26 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 249.
2018.09.15 22:04:26 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 272.
2018.09.15 22:04:26 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 331.
2018.09.15 22:04:26 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 300.
2018.09.15 22:04:26 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 355


Gruss
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 15 September 2018, 23:30:15
Habe immernoch ein paar kleine Probleme. Snips versteht leider oft nicht was ich von ihm will. Habe mir jetzt die ReSpeaker Arrays bestellt, mal sehen ob sich dass dann bessert. Ganz oft kommt die Frage: "Nach welchem Gegenstand möchten Sie fragen?". Leider kommt die Frage direkt 3 mal, das ist extrem nervig.
Habe jetzt eine eigene Dockerfile für Snips erstellt, sobald diese etwas ausgereifter ist, werde ich diese auf Github für euch zur Verfügung stellen.

Noch eine Frage: In der Snips Konsole habe ich zusätzlich zur FHEM App noch folgende Apps: Rechner, Wetter und Datum & Uhrzeit. Leider funktionieren diese nicht, sondern nur die FHEM Kommandos. Ist das normal?

Edit: Wie siehts eigentlich mit den Shortcuts aus? Habe das Attribut in FHEM jetzt noch nicht gefunden. Kommt das einfach in SnipsMapping?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 16 September 2018, 11:24:30
Hier schonmal ein kleiner Einblick in meine Dockerfile. Ist meine erste, also seid gnädig.
Edit: jetzt auf Github: https://github.com/benedikt-bartscher/snips-fhem-docker

Dockerfile:
FROM debian:stretch
MAINTAINER Benedikt Bartscher (benedikt@bartscher.me)
EXPOSE 22

RUN apt-get update
RUN apt-get install -y git gnupg2 apt-transport-https alsa-utils dbus supervisor dirmngr pulseaudio mpg123 python3 python3-pip openssh-server
RUN echo "deb https://debian.snips.ai/stretch stable main" > /etc/apt/sources.list.d/snips.list
RUN apt-key adv --recv-keys F727C778CCB0A455
RUN apt-get update
RUN apt-get install -y snips-platform-voice snips-asr-injection snips-watch

RUN pip3 install toml paho-mqtt boto3 awscli
RUN aws configure set default.region eu-central-1
RUN aws configure set region eu-central-1 --profile testing
RUN aws configure set profile.testing2.region eu-central-1
RUN aws configure set preview.cloudsearch true
RUN git clone https://github.com/Thyraz/snips-tts-polly.git /opt/snips-tts-polly
RUN cp /opt/snips-tts-polly/snips-tts-polly.py /usr/bin

RUN mkdir -p /var/run/sshd && sed -i "s/UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config  && touch /root/.Xauthority
RUN /usr/sbin/sshd -t
ADD credentials /root/.aws/credentials
ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf

ENTRYPOINT ["/usr/bin/supervisord"]


supervisord.conf:
[supervisord]
nodaemon=true

[program:snips-audio-server]
command=/usr/bin/snips-audio-server
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0

[program:snips-hotword]
command=/usr/bin/snips-hotword
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0

[program:snips-asr]
command=/usr/bin/snips-asr
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0

[program:snips-asr-injection]
command=/usr/bin/snips-asr-injection
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0

[program:snips-nlu]
command=/usr/bin/snips-nlu
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0

[program:snips-dialogue]
command=/usr/bin/snips-dialogue
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0

[program:snips-tts-polly]
command=/usr/bin/snips-tts-polly.py
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0


credentials:
[default]
aws_access_key_id = ******
aws_secret_access_key = ******


docker-compose.yml:
version: '2'

services:
    mysnips:
        restart: always
        container_name: mysnips
        build: mysnips
        privileged: true
        ports:
            - "9898:1883"
            - "5043:22"
        expose:
            - "5043"
        volumes:
            - /dev/snd:/dev/snd
            - ./assistant:/usr/share/snips/assistant
            - ./snips.toml:/etc/snips.toml
            - /etc/asound.conf:/etc/asound.conf
            - ~/.config/pulse/cookie:/root/.config/pulse/cookie
            - ${XDG_RUNTIME_DIR}/pulse/native:${XDG_RUNTIME_DIR}/pulse/native
        environment:
            - PULSE_SERVER=unix:${XDG_RUNTIME_DIR}/pulse/native
            - ${XDG_RUNTIME_DIR}/pulse/native:${XDG_RUNTIME_DIR}/pulse/native
        group_add:
            - 995
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rih am 16 September 2018, 12:09:08
Hallo,

ich kann bezüglich meinem Problem mit dem Snips-Audioserver Entwarnung geben. Ursache des Problems war, dass die Onboard-Soundhardware des Pi neben der Respeaker-Soundhardware ebenfalls aktiv war. Nachdem ich die Soundhardware des Pi in der /boot/config.txt deaktiviert hatte, funktionierte Snips ohne Probleme.
Bin begeistert. Mein Snips-Room füllt sich langsam mit Geräten  :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 16 September 2018, 12:21:35
Featurevorschlag: Bei wichtigen Kommandos (PC Herunterfahren, USV ein-/ausschalten) wäre es cool wenn Snips nachfragen könnte: "Bist du sicher, dass du den PC Herunterfahren willst?"
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 16 September 2018, 23:03:13
Zitat von: rih am 15 September 2018, 18:28:06
@Thyraz:
Danke für Deine Tipps.

1. Ja, say und textCommand funktioniert.
2. Wartezeit 1, 2, 3 Sekunden probiert -> keine Reaktion.
3. die 7 Dienste laufen (inkl. snips-asr-injection)
Allerdings tritt beim Audio-Server ein Fehler auf (aber er läuft):

Sep 15 15:24:51 raspberrypi snips-audio-server[761]:  -> caused by: UnanticipatedHostError
Sep 15 15:24:51 raspberrypi snips-audio-server[761]: thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: "SendError(..)"', libcore/r
Sep 15 15:24:51 raspberrypi snips-audio-server[761]: note: Run with `RUST_BACKTRACE=1` for a backtrace.
Sep 15 15:25:39 raspberrypi snips-audio-server[761]: INFO:snips_audio_portaudio    : Playing "c36fe1d8-ceb9-4976-9550-e987d2d6d2bc" using output "default", w
Sep 15 15:25:39 raspberrypi snips-audio-server[761]: Expression 'alsa_snd_pcm_hw_params_set_rate_near( pcm, hwParams, &setRate, NULL )' failed in 'src/hostap
Sep 15 15:25:39 raspberrypi snips-audio-server[761]: Expression 'paUnanticipatedHostError' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2053
Sep 15 15:25:39 raspberrypi snips-audio-server[761]: Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, self->primeBuffers, hwPa
Sep 15 15:25:39 raspberrypi snips-audio-server[761]: Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuff
Sep 15 15:25:39 raspberrypi snips-audio-server[761]: ERROR:snips_audio_server_hermes: could not play "c36fe1d8-ceb9-4976-9550-e987d2d6d2bc"
Sep 15 15:25:39 raspberrypi snips-audio-server[761]:  -> caused by: UnanticipatedHostError


Leider kann ich mit den Meldungen recht wenig anfangen. Verhindert dieser Fehler nun nur das Abspielen der wav-Datei oder blockiert dieser den weiteren Ablauf?

4. MQTT-Traffic (mit MQTT.fx erfasst) während "Hey snips" , Wartezeit, "Schalte Salzlampe ein":
Keine Fehlermeldungen ersichtlich. Meiner Ansicht nach normale Meldungen erscheinen nur von hotword, asr und dialogueManager. Keine Meldung vom Audioserver und den anderen von Dir genannten Topics.

@ahlermi:
Ich habe ja kein Custom-Hotword ausgewählt, oder verstehe ich Dich falsch? Habe aber gestern den Assitenten nochmal neu erstellt und in den Snips-Ordner kopiert -> keine Änderung am Fehlerverhalten.

Kann jemand mit den Audioserver-Meldungen von Punkt 3 etwas anfangen? Scheint ja eher ein grundlegendes Linux- bzw. Alsa-Problem zu sein.
Gruß
Hans

Hast du mal versucht die Installation über Sam zu machen?
Viel einfacher und alles passend.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rih am 17 September 2018, 10:15:16
@ahlermi:
Die snips-sam-Installation hatte ich fast schon in Erwägung gezogen. Ich arbeite aber lieber mit Winscp und Putty auf manuellem Weg, da weiß ich wenigstens, was wo wie auf dem Pi installiert wird. Ist lehrreicher, wenn auch manchmal etwas steiniger.
Ich bin mir auch nicht sicher, ob durch snips-sam mein mittlerweile gelöstes Problem hätte vermieden werden können.
Trotzdem danke für den Tipp.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 17 September 2018, 12:02:13
Zitat von: enno am 15 September 2018, 22:20:38
mit der Version von heute bekomme ich einige Warnungen im Log:
Ich stehe noch etwas auf Kriegsfuß mit Perls Umgang mit undef was Vergleiche oder die Verwendung in Regex etc. angeht.
Die Tatsache hier immer voher abfragen zu müssen, ob die Variable auch wirklich nicht undef ist will mir einfach nicht in Fleisch und Blut übergehen. ;)

Das Modul wirft daher noch recht fleißig Warnings dieser Art.
Hab am WE mal wieder ein paar getilgt in meinem aktuellen Code.
Sind aber sicher noch genug übrig. :p

Wenn es feature-seitig langsam etwas ruhiger wird, werde ich hier mal eine Qualitätsoffensive starten müssen...

Zitat von: bennebartsch am 15 September 2018, 23:30:15
Noch eine Frage: In der Snips Konsole habe ich zusätzlich zur FHEM App noch folgende Apps: Rechner, Wetter und Datum & Uhrzeit. Leider funktionieren diese nicht, sondern nur die FHEM Kommandos. Ist das normal?
Irgendjemand hatte hier vor einiger Zeit mal geschrieben, dass für die normalen Skills irgendein Modul nötig ist,
dass aber nicht zu jeder Hardware kompatibel ist.
Lässt du es auch auf was anderem als einem Pi laufen?

Zitat von: bennebartsch am 15 September 2018, 23:30:15
Edit: Wie siehts eigentlich mit den Shortcuts aus? Habe das Attribut in FHEM jetzt noch nicht gefunden. Kommt das einfach in SnipsMapping?
Die Shortcuts sind ja global und nicht einem deiner Geräte zugeordnet.
Das Attribut ist daher im Snips Device selbst.

Zitat von: rih am 17 September 2018, 10:15:16
@ahlermi:
Die snips-sam-Installation hatte ich fast schon in Erwägung gezogen. Ich arbeite aber lieber mit Winscp und Putty auf manuellem Weg, da weiß ich wenigstens, was wo wie auf dem Pi installiert wird.
Sam lohnt sich auf lange Sicht dennoch:
Mit einem einfachen "sam install assistant" wird deine aktuelle Konfiguration automatisch von console.snips.ai geladen, entpackt und installiert.
Danach werden die Snips-Services auf dem Rechner gleich neu gestartet.

Das ganze herunterladen/übertragen/entpacken/neustarten entfällt dadurch.
Das einzige händische danach wäre also noch ein set snips updateModel
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 17 September 2018, 14:00:25
Zitat von: Thyraz am 17 September 2018, 12:02:13
Lässt du es auch auf was anderem als einem Pi laufen?
Die Shortcuts sind ja global und nicht einem deiner Geräte zugeordnet.
Das Attribut ist daher im Snips Device selbst.
Ja, das ganze läuft aktuell nur auf meinem Nuc.
Okay das mit den Shortcuts macht Sinn, da war ich wohl mal wieder blind auf beiden Augen. Sollte man eventuell in der README mal ergänzen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 17 September 2018, 14:07:34
Ja, die Themen aus dem letzten Update fehlen noch komplett in der Doku.
Kommt die Tage. ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 17 September 2018, 15:23:17
Zitat von: Thyraz am 17 September 2018, 14:07:34
Ja, die Themen aus dem letzten Update fehlen noch komplett in der Doku.
Kommt die Tage. ;)

Ist ja kein Problem, du leistest ja schon genug mit dem Modul!
Werde am Mittwoch Abend auch noch weiter an der Dockerfile basteln und u.a. eine Dokumentation und dein Lautstärke Script integrieren! Kannst es dann gerne auch in der README verlinken.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 17 September 2018, 18:23:38
Kann es sein, dass die Shortcuts nicht mit textCommand funktionieren?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 17 September 2018, 19:38:43
Bin gerade unterwegs, hab es daher nur kurz mit einem Shortcut über Telegram getestet.
Der hat zumindest funktioniert.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 17 September 2018, 19:48:45
Bei mir geht's leider nicht, bekomme immer "Da ist etwas schief gegangen." als Antwort über Telegram. Normale snipsMappings funktionieren über Telegram einwandfrei!
Habe den Text 1:1 aus dem shortcut Attribut kopiert, also daran liegts nicht.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Eisix am 18 September 2018, 13:07:52
Hallo,

würde auch gerne mal mit snips reden.

Irgendwie vergißt der sam aber meine "Login credentials" oder kann man die irgendwie mit angeben?

# sam login
? Enter email used on the console: XXXX@XXXX
? Enter password used on the console: [hidden]
✔ Logged in


#sam init
Installing Snips Platform components. This may take a few minutes...
 
✖ Error: No credentials found


# sam install assistant -i proj_rVzdOVvmDWpE
✖ Error: No credentials found


Dann habe ich noch eine Frage bzgl. MQTT. Muss es Mosquitto sein oder kann man auch das FHEM modul MQTT2 nutzen?

Gruß
Eisix
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 18 September 2018, 13:20:10
Ich benutze das "init" nicht
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 18 September 2018, 13:45:53
Habe noch ein paar Probleme mit den Shortcuts. Diese werden leider weiterhin nur per Spracheingabe erkannt, nicht per textCommand.

Mein shortcuts Attribut sieht aktuell so aus:

Wieviel Uhr ist es={return "es ist " . qx(date +%R);}
Wieviel Uhr haben wir={return "es ist " . qx(date +%R);}
Roomba Dock={fhem("set roomba980 dock"); return "ok";}
Schicke den Staubsauger nach Hause={fhem("set roomba980 dock"); return "ok";}
Audio Fernseher={return "es ist " . qx(date +%R);}
Quelle TV={fhem("set audio_source TV"); return "ok";}
Audio TV={fhem("set audio_source TV"); return "ok";}
Quelle Fernseher={fhem("set audio_source TV"); return "ok";}

Die ersten 4 Shortcuts funktionieren, die anderen habe ich bis jetzt nicht einmal zum triggern bekommen. Snips gibt immer nur den Fehlerton aus... updateModel und Snips neustarten habe ich schon probiert.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 18 September 2018, 14:16:24
Sorry wenn ich euch schon nerve, aber habe noch ein kleines Problem:
Meine LEDs steuere ich über das Device Farbe in FHEM. Dazu nutze ich snipsColors und kann auch wunderbar alle definierten Farben setzten. Leider funktioniert dann das snipsMapping mit SetOnOff:cmdOn=on,cmdOff=off nicht mehr, Snips denkt immer ich möchte eine Farbe setzten:
{"input":"farbe einschalten","intent":"SetColor","probability":"0.8885536","requestType":"voice","sessionId":"b3b3eca6-1be2-4d55-98c5-e4b39576c90d","siteId":"default"}


Ist das so gewollt?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Eisix am 18 September 2018, 14:18:40
Habe mittlerweile die Datei /etc/snips.toml gefunden, in der die snips service Konfiguration zumindest teilweise liegt.

Das FHEM Modul MQTT2 scheint nicht die richtigen Protokolle zu unterstützen.


Sep 18 14:11:50 home systemd[1]: Started Snips NLU.
Sep 18 14:11:50 home snips-nlu[13908]: ERROR:snips_nlu: Could not start MQTT client
Sep 18 14:11:50 home snips-nlu[13908]:  -> caused by: mqtt negogiation failed with return code: RefusedProtocolVersion
Sep 18 14:11:50 home systemd[1]: snips-nlu.service: Main process exited, code=exited, status=1/FAILURE
Sep 18 14:11:50 home systemd[1]: snips-nlu.service: Unit entered failed state.
Sep 18 14:11:50 home systemd[1]: snips-nlu.service: Failed with result 'exit-code'.
Sep 18 14:11:55 home systemd[1]: snips-nlu.service: Service hold-off time over, scheduling restart.
Sep 18 14:11:55 home systemd[1]: Stopped Snips NLU.


Somit startet auch keiner der Snips services. OS ist stretch Debian/amd64. Jemand die Kombination am laufen und einen Tip?

Gruß
Eisix
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 18 September 2018, 15:00:08
Zitat von: Eisix am 18 September 2018, 14:18:40
Habe mittlerweile die Datei /etc/snips.toml gefunden, in der die snips service Konfiguration zumindest teilweise liegt.

Das FHEM Modul MQTT2 scheint nicht die richtigen Protokolle zu unterstützen.


Sep 18 14:11:50 home systemd[1]: Started Snips NLU.
Sep 18 14:11:50 home snips-nlu[13908]: ERROR:snips_nlu: Could not start MQTT client
Sep 18 14:11:50 home snips-nlu[13908]:  -> caused by: mqtt negogiation failed with return code: RefusedProtocolVersion
Sep 18 14:11:50 home systemd[1]: snips-nlu.service: Main process exited, code=exited, status=1/FAILURE
Sep 18 14:11:50 home systemd[1]: snips-nlu.service: Unit entered failed state.
Sep 18 14:11:50 home systemd[1]: snips-nlu.service: Failed with result 'exit-code'.
Sep 18 14:11:55 home systemd[1]: snips-nlu.service: Service hold-off time over, scheduling restart.
Sep 18 14:11:55 home systemd[1]: Stopped Snips NLU.


Somit startet auch keiner der Snips services. OS ist stretch Debian/amd64. Jemand die Kombination am laufen und einen Tip?

Gruß
Eisix

Was spricht denn gegen einen externen MQTT Broker? Ich habe zum Beispiel viele Lampen und Lichtschalter per MQTT eingebunden und diese funktionieren auch noch wenn FHEM mal abschmieren sollte. Das ist ja gerade das schöne an MQTT.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Eisix am 18 September 2018, 19:13:10
Was dagegen spricht ist:
- zusätzlicher Service der Konfiguriert, abgesichert und administriert werden muß
- doppelter Konfigurationsaufwand Fhem und Mosquitto
- bei Neuinstallation müssen alle Abhängigkeiten wieder hergestellt werden. Beim Modul ist alles drin und geht.

Nutze MQTT noch nicht aber hatte es vor. Und bevor ich damit anfange versuche ich halt schon die effizienteste Variante zu evaluieren.
Wenn Mosquitto der einzige Weg ist, dann ist die Entscheidung aber klar.

Gruß
Eisix
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 18 September 2018, 19:55:52
Klar, sind auch alles Argumente. Wenn du aber eh in Zukunft mal mit MQTT basteln willst installier einfach eben den Broker, bei mir hats keine Minute gedauert!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 18 September 2018, 22:20:03
Hallo Thyraz,

kannst du wohl noch einen Satz für das Intent SetOnOff aufnehmen?


Schalte Standardgerät aus


Da tut sich SNIPS echt schwer.

Gruß Michael
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 19 September 2018, 11:54:55
Zitat von: bennebartsch am 18 September 2018, 14:16:24
Sorry wenn ich euch schon nerve, aber habe noch ein kleines Problem:
Meine LEDs steuere ich über das Device Farbe in FHEM. Dazu nutze ich snipsColors und kann auch wunderbar alle definierten Farben setzten. Leider funktioniert dann das snipsMapping mit SetOnOff:cmdOn=on,cmdOff=off nicht mehr, Snips denkt immer ich möchte eine Farbe setzten:
{"input":"farbe einschalten","intent":"SetColor","probability":"0.8885536","requestType":"voice","sessionId":"b3b3eca6-1be2-4d55-98c5-e4b39576c90d","siteId":"default"}


Ist das so gewollt?

Ist Farbe als Gerät nicht etwas unglücklich gewählt? Was passiert wenn du es LED nennst?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 19 September 2018, 18:07:50
Zitat von: ahlermi am 19 September 2018, 11:54:55
Ist Farbe als Gerät nicht etwas unglücklich gewählt? Was passiert wenn du es LED nennst?
Das Gerät hat auch LED im SnipsName, allerdings reagiert Snips darauf nicht...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 19 September 2018, 19:56:01
Zitat von: bennebartsch am 18 September 2018, 13:45:53
Habe noch ein paar Probleme mit den Shortcuts. Diese werden leider weiterhin nur per Spracheingabe erkannt, nicht per textCommand.
Kannst du mal die Logausgaben dazu posten mit verbose 5 (nur beim Snips Device) wenn du einen Shortcut zu triggern versuchst?
Dazu ein komplettes list vom Snips-Device?

Zitat von: bennebartsch am 18 September 2018, 13:45:53
Die ersten 4 Shortcuts funktionieren, die anderen habe ich bis jetzt nicht einmal zum triggern bekommen. Snips gibt immer nur den Fehlerton aus... updateModel und Snips neustarten habe ich schon probiert.

Ja, wie beschrieben ist es gerade bei kürzeren Sätzen teilweise problematisch, da NLU das ganze als "Kann ich nichts mit anfangen" abschmettert.
Solange es kein offizielles NLU Inject gibt, werden wir da wenig tun können.

Sobald das da ist, sollte es mit dem jetzigen Code dann einfach plötzlich funktionieren.

Zitat von: bennebartsch am 18 September 2018, 14:16:24
Sorry wenn ich euch schon nerve, aber habe noch ein kleines Problem:
Meine LEDs steuere ich über das Device Farbe in FHEM.

Ich denke auch, dass Snips da komplett durcheinander kommt.
Würde mal versuchen einen anderen Namen zu vergeben, dann den Assistenten neu installieren,
damit der alte NLU Inject mit Farbe im Deviceslot verschwindet und erneut updateModel ausführen.

Zitat von: Eisix am 18 September 2018, 19:13:10
Was dagegen spricht ist:
Was dafür spricht:
Snips schickt konstant den gesamten Audiotraffic als Message-Payloads über den MQTT Server.
Die einzelnen Snips-Module kommunizieren halt auch nur über MQTT miteinander.
Da kommt so einiges zusammen.
Würde das nicht einem in Perl geschriebenen MQTT Server zumuten, als auch FHEM nicht damit belasten wollen.

Zitat von: ahlermi am 18 September 2018, 22:20:03
Hallo Thyraz,

kannst du wohl noch einen Satz für das Intent SetOnOff aufnehmen?

Schalte Standardgerät aus

Da tut sich SNIPS echt schwer.
erledigt. :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 19 September 2018, 21:44:23
Zitat von: Thyraz am 19 September 2018, 19:56:01
erledigt

Hast du eine Idee wie das kann?
Text sauber erkannt, und dann macht SNIPS mist und übergibt mir auch garnichts

EDIT
Habe gerade nochmal die APP geforkt und sehe das Kommando auch noch nicht, vlt war ich ja zu schnell.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 19 September 2018, 23:44:51
Hatte vergessen auf publish zu drücken.
Versuchs jetzt nochmal...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: martin-s am 20 September 2018, 08:09:13
Hi,

ich hätte im Anhang ein paar Verbesserungsvorschläge für das Snips-Modul:
Mit dem Multi-Turn-Dialog kann man (bei Custom Intents) jetzt Rückfragen stellen.
Nicht sehr sinnvolles Beispiel:


sub
my_snips_good_morning()
{
        my $text="Ebenfalls einen guten Morgen. Soll ich den Rollo öffnen?";
        return { 'text' => $text, 'topic' => 'continueSession', 'intentFilter' => [ 'my-intent:yes','my-intent:no', 'my-intent:abort' ], 'sessionData' => { 'intent' => 'good_morning'} };
}


Damit wird auf den Custom Intent "Guten Morgen" eine Antwort gegeben und eine Frage gestellt.
Aufgrund 'continueSession' geht Snips sofort wieder in den ASR-Modus und erwartet einen Intent aus der angegebenen Liste.
sessionData wird dabei dem neuen Intent in "data" übergeben (so wie das momentan ist werden die Daten allerdings nie frei gegeben falls der Dialog durch einen Fehler abbricht).


sub
my_snips_yes($)
{
        my ($data)=@_;
        if ($data->{sessionData}{intent} eq 'good_morning') {
                fhem("set rollo up");
                return "Alles klar";
        }
        return "Ich verstehe den Zusammenhang nicht";
}


Ciao,

Martin
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 20 September 2018, 08:20:00
 ::)  Besser :-)

nur irgendwie kommt SNIPS manchmal nicht klar und übergibt raus anstelle von aus...  >:(
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: BobbyD am 20 September 2018, 21:27:38
Hi,

ich kämpfe mich durch die Snips Installation und komme einfach nicht weiter. Immer wenn ich den Status der Küche abfrage kommt "Da ist etwas schief gegangen".
Wenn ich aber nach der Temp. einzeln frage, bekomme ich die korrete antwort.

21:22:58] [Asr] captured text "wie ist der status in der küche" in 4.0s
[21:22:58] [Asr] was asked to stop listening on site default
[21:22:58] [AudioServer] was asked to play a wav of 93.1 kB with id 'fc8a6745-17c7-4a98-8101-59269d1b63a6' on site default
[21:22:59] [AudioServer] finished playing wav with id 'fc8a6745-17c7-4a98-8101-59269d1b63a6'
[21:22:59] [Nlu] was asked to parse input "wie ist der status in der küche"
[21:22:59] [Nlu] detected intent Thyraz:Status with probability 0.607 for input "wie ist der status in der küche"
[21:22:59] [Dialogue] New intent detected Thyraz:Status with probability 0.607
[21:22:59] [Nlu] was asked to parse input "wie ist der status in der standardraum"
[21:22:59] [Nlu] detected intent Thyraz:Status with probability 0.714 for input "wie ist der status in der standardraum"
              Slots ->
                 Room -> Standardraum
[21:22:59] [Dialogue] was ask to end session with id 9c2f3f1f-8e74-4431-a6d7-c720646d126b by saying 'Da ist etwas schief gegangen.'
[21:22:59] [Tts] was asked to say "Da ist etwas schief gegangen."

Ich habe die Status Response mit "" und ohne "" probiert. Kommt immer der Fehler.

Vielleicht kann mir hier einer Bitte weiter helfen.
Danke
Bobby
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Eisix am 21 September 2018, 10:52:10
Hallo,

ich habe immer noch Probleme mit der installation. Habe jetzt Mosquitto am laufen aber die snips services laufen nicht alle.


sam login
? Enter email used on the console: XXX@XXX
? Enter password used on the console: [hidden]
✔ Logged in

sam service start
✖ Error: No credentials found


Welche credentials meint sam und wo kann ich die mitgeben/hinterlegen? Jemand einen Tip?

Gruß
Eisix
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 21 September 2018, 11:10:37
Zitat von: Eisix am 21 September 2018, 10:52:10

Ich habe das mit
pi@SNIPS:~ $ sam init
Installing Snips Platform components. This may take a few minutes...
✔ Updating aptitude repository
✔ Installing dirmngr
✔ Adding Snips APT source list
✔ Adding Snips PGP public key
✔ Updating aptitude repository
✔ Installing Snips Platform, this could take a while, grab a cup of tea & relax
✔ Adding current user to snips-skills-admin group for security
✔ Successfully installed the Snips Platform
i You can now setup your audio with sam setup audio t
gestartet. Dort fragte er mich nach User (=>PI) und Password(Linux admin). Danach wurden die credentials angelegt. Dann ging es mit login weiter. dort dann Snips Logindaten.

Gruss
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Eisix am 21 September 2018, 11:19:01
Das hatte ich auch versucht, habe da aber das gleiche Problem.


sam init
Installing Snips Platform components. This may take a few minutes...
 
✖ Error: No credentials found


Neuinstallation von snips-sam hat auch nichts gebracht.

Gruß
Eisix
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 21 September 2018, 11:38:51
Was passiert wenn du mit deiner IP folgendes versuchst?

sam connect 192.168.1.40
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Eisix am 21 September 2018, 11:48:53
Das hat mich schon mal weiter gebracht. Der connect mit einem nicht root user hat geklappt (direkt root habe ich aus).

Danach ging mit root folgendes.

sam init
Installing Snips Platform components. This may take a few minutes...
✔ Updating aptitude repository
✔ Installing dirmngr
✔ Adding Snips APT source list
✔ Adding Snips PGP public key
✔ Updating aptitude repository
✔ Installing Snips Platform, this could take a while, grab a cup of tea & relax
✔ Adding current user to snips-skills-admin group for security
  Disabling Mosquitto persistence
✖ Failed to install platform: Error: sudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben
    at SSH.<anonymous> (/usr/lib/node_modules/snips-sam/node_modules/node-ssh/lib/index.js:175:19)
    at Generator.next (<anonymous>)
    at step (/usr/lib/node_modules/snips-sam/node_modules/node-ssh/lib/index.js:39:191)
    at /usr/lib/node_modules/snips-sam/node_modules/node-ssh/lib/index.js:39:361
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:189:7)



TTY sollte zu klären sein indem ich local an den Rechner gehe askpass muss ich mir anschauen.

Gruß
Eisix
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Eisix am 21 September 2018, 13:30:31
Services laufen jetzt.

In der sudoers musste ich dem nicht root user vollen Zugriff zur Installation.
sam arbeitet wohl immer mit sudo


user ALL=(ALL) NOPASSWD: ALL


Mal schauen wie ich das auf Dauer umsetze.

Gruß
Eisix
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 21 September 2018, 16:42:19
Sagt mal. Das Ausschalten des "Bling" geht jetzt nicht mehr ?
sam sound-feedback off   oder  set SnipsMQTT publish hermes/hotword/default/toggleOff
oder mosquitto_pub -h localhost -t hermes/feedback/sound/toggleOff -m '{"siteid"="wohnzimmer":"default"}'

Nichts dergleichen funktioniert ;-((
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 21 September 2018, 16:59:49
Zitat von: kud am 21 September 2018, 16:42:19
Sagt mal. Das Ausschalten des "Bling" geht jetzt nicht mehr ?
sam sound-feedback off   oder  set SnipsMQTT publish hermes/hotword/default/toggleOff
oder mosquitto_pub -h localhost -t hermes/feedback/sound/toggleOff -m '{"siteid"="wohnzimmer":"default"}'

Nichts dergleichen funktioniert ;-((

Bei mir ist das ausgeschaltet. Habe ich gestern gemacht einfach sam sound-feedback off

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 21 September 2018, 17:10:40
Nö. Das "blinkt" weiter.
Hat das evtl. damit zu tun, dass noch ein Satellit mitläuft?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 21 September 2018, 18:07:25
Zitat von: Thyraz am 19 September 2018, 19:56:01
Kannst du mal die Logausgaben dazu posten mit verbose 5 (nur beim Snips Device) wenn du einen Shortcut zu triggern versuchst?
Dazu ein komplettes list vom Snips-Device?

Log:
2018.09.21 18:04:39 1: PERL WARNING: Use of uninitialized value in substitution (s///) at ./FHEM/10_SNIPS.pm line 737.
2018.09.21 18:04:39 1: PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/10_SNIPS.pm line 778.
2018.09.21 18:04:39 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 226.
2018.09.21 18:04:39 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 249.
2018.09.21 18:04:39 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 272.
2018.09.21 18:04:39 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 331.
2018.09.21 18:04:39 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 300.
2018.09.21 18:04:39 1: PERL WARNING: Use of uninitialized value $attrString in split at ./FHEM/10_SNIPS.pm line 608.


List:
Internals:
   DEF        SnipsMQTT Wohnzimmer
   IODev      myBroker
   MODULE_VERSION 0.2
   NAME       snips
   NOTIFYDEV  SnipsMQTT Wohnzimmer
   NR         264
   STATE      ???
   TYPE       SNIPS
   READINGS:
     2018-09-21 18:04:39   lastIntentPayload {"input":"msgText: Wieviel Uhr ist es","intent":"GetNumeric","probability":"0.65538675","requestType":"text","sessionId":"fhem.textCommand","siteId":null}
     2018-09-21 18:04:39   lastIntentTopic hermes/nlu/intentParsed
     2018-09-21 16:53:39   listening_wohnzimmer 0
     2018-09-21 18:04:39   textResponse    Da ist etwas schief gegangen.
     2018-09-21 18:04:39   transmission-state incoming publish received
     2018-09-21 16:38:50   voiceResponse   Ok.
   helper:
     defaultRoom Wohnzimmer
   message_ids:
   subscribe:
     hermes/intent/+
     hermes/nlu/intentParsed
     hermes/hotword/+/detected
     hermes/hotword/toggleOn
   subscribeExpr:
     ^hermes\/intent\/([^/]+)$
     ^hermes\/nlu\/intentParsed$
     ^hermes\/hotword\/([^/]+)\/detected$
     ^hermes\/hotword\/toggleOn$
   subscribeQos:
     hermes/hotword/+/detected 0
     hermes/hotword/toggleOn 0
     hermes/intent/+ 0
     hermes/nlu/intentParsed 0
Attributes:
   IODev      myBroker
   room       Snips
   shortcuts  Wieviel Uhr ist es={return "es ist " . qx(date +%R);}
Wieviel Uhr haben wir={return "es ist " . qx(date +%R);}
   snipsIntents roomba=snipsRoomba(cmd)
audio_source=snipsAudioSource(source)
   verbose    0


Vielen Dank schonmal :-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Eisix am 22 September 2018, 16:07:28
Hallo,

bin jetzt ein paar Schritte weiter. Snips hört das Hotword, danach passiert aber nichts mehr. 2 services laufen nicht

[16:04:21] [Hotword] detected on site default, for model default
[16:04:21] [Asr] was asked to stop listening on site default
[16:04:21] [Hotword] was asked to toggle itself 'off' on site default
[16:04:21] [Dialogue] session with id '83e5b030-7310-4a07-84bf-813bca789f95' was started on site default
[16:04:21] [AudioServer] was asked to play a wav of 41.1 kB with id '5eda1f8a-a6e7-45ec-aaf9-1197d010602b' on site default
[16:04:22] [AudioServer] finished playing wav with id '5ee22f8a-a6e7-45ec-aaf9-11970010602b'
[16:04:22] [Asr] was asked to listen on site default
[16:04:38] [Dialogue] session with id '83e5b030-7310-4a07-8dbf-813bca789f95' was ended on site default. The session was ended because one of the component didn't respond in a timely manner
[16:04:38] [Asr] was asked to stop listening on site default
[16:04:38] [Hotword] was asked to toggle itself 'on' on site default



ASR und Analytics laufen nicht


root@xxx:~# sam status

Connected to device XXX.XXX

OS version ................... Debian GNU/Linux 9 (stretch)
Installed assistant .......... FHEM
Language ..................... de
Hotword ...................... hey_snips
ASR engine ................... snips
Status ....................... Live

Service status:

snips-analytics .............. 0.58.3 (not running)
snips-asr .................... 0.58.3 (not running)
snips-audio-server ........... 0.58.3 (running)
snips-dialogue ............... 0.58.3 (running)
snips-hotword ................ 0.58.3 (running)
snips-nlu .................... 0.58.3 (running)
snips-skill-server ........... 0.58.2 (running)
snips-tts .................... 0.58.2 (running)


muss da noch was in der snips.toml eingetragen werden?

Ausgabe mit say aus fhem geht auch.

Gruß
Eisix
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 22 September 2018, 16:35:34
ZitatWichtig: ASR Injection installieren

Damit das FHEM Modul der Snips App eure Geräte- und Raumnamen zur Verfügung stellen kann,
muss zusätzlich noch snips-asr-snip-asr-injection installiert werden:

   sudo apt-get install -y snips-asr-injection

Andernfalls wird Snips eure Geräte- und Raumbezeichnungen nicht verstehen.

Ist das installiert?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Eisix am 22 September 2018, 16:53:05
Ja ist installiert aber ich kann es auch mit sam nicht starten
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 22 September 2018, 17:04:05
Kann man Snips eigentlich auch auf einem Android installieren? Ich habe im Wohnzimmer eh einen Odroid C1+ mit Android, welchen ich dazu nutzen möchte.
Gibt es ein Snips-APK?

Gruß Jens
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 22 September 2018, 17:27:29
https://snips.gitbook.io/documentation/installing-snips/on-android

Das hört sich aber nach Abenteuer an...

Gruss
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 22 September 2018, 18:28:30
Danke, ich probier's mal.  :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 26 September 2018, 17:51:54
Hallo,
jetzt kam ich auch mal dazu, wieder etwas mit Snips zu spielen und bin begeistert, wie schnell das am Ende doch geht, sich was halbwegs funktionierendes einzurichten.
"Man" sollte einen Thread machen, mit Beispielkonfigurationen zu Rollläden, Mediaplayern etc.
Wenn meine Dinge getestet sind mach ich das mal.

2 3 Fragen/Anregungen/Probleme jetzt:
1) Ich möchte meine Anlage leiser stellen, wenn Snips zuhört, also die vorgeschlagene Nutzung von "listening_room". Probleme kommen dann, wenn man damit die Lautstärke reglen will (im Beispiel als DOIF)
Pause/Play bei einer Sqeezebox:
(([Snips:listening_wohnzimmer] eq "1") and ([sb_Wohnzimmer:playStatus] eq "playing"))(set sb_Wohnzimmer pause)
DOELSEIF
([Snips:listening_wohnzimmer] eq "0")(set sb_Wohnzimmer play)

Da das Gerät pausiert wird es nicht als spielendes Gerät gefunden und wird ohne konkrete Bennennung nicht gesteuert.

Leiser/Lauter
(([Snips:listening_wohnzimmer] eq "1") and ([sb_Wohnzimmer:playStatus] eq "playing"))(setreading $SELF volumeBackup [sb_Wohnzimmer:volume], set sb_Wohnzimmer volume 3)
DOELSEIF
([Snips:listening_wohnzimmer] eq "0")(set sb_Wohnzimmer volume $SELF:volumeBackup)

Snips macht lauter von 3 auf 13 um dann wieder mit der gespeicherten Lautstärke zu überschreiben.

Lösungsvorschlag?
(btw beim SetNumericIntent: type=Lautstärke zuerste alles irgendwie Englisch, dann ein Umlaut - das hat mich erstmal verwirrt)
€: ich hab vielleicht eine Lösung gefunden indem ich nach dem listening einfach auf den alten Wert zzgl. des Delta neuen Wertes - Reduzierter Wert schalte. Dann müsste lauter/leiser funktionieren. Morgen

2) Ich höre bisher nur Radio und muss daher Snipos nur 4-5 Sender beibringen.
Hat schon jemand Snips seine gesamten Playlists o.ä. zugeschoben?

€:
3) kann man mehrere snipsRooms angeben, ähnlich wie beim Namen? So dass ich das Licht im Bad, im Badezimmer, ausrufen kann?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 27 September 2018, 08:03:15
Mehrere Namen sind möglich, einfach mit Komma trennen.

So mache ich das mit leiser wärend des hörens.


attr Snips userattr wohnzimmer_volume



define n_snips_listening_wohnzimmer notify Snips:listening_wohnzimmer.* {
  if ($EVTPART1 == 1 ){
    if (ReadingsVal("Denon","zoneMain","") eq "on"){
      fhem("attr $NAME wohnzimmer_volume " . ReadingsVal("Denon","volume","40"));
      fhem("set Denon volume 20");
    }
  }else{
    fhem("set Denon volume " . AttrVal($NAME, "wohnzimmer_volume", "40"));
    fhem("deleteattr $NAME wohnzimmer_volume");
  }
}
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 27 September 2018, 08:57:21
Zitat von: ahlermi am 27 September 2018, 08:03:15
Mehrere Namen sind möglich, einfach mit Komma trennen.

So mache ich das mit leiser wärend des hörens.


attr Snips userattr wohnzimmer_volume



define n_snips_listening_wohnzimmer notify Snips:listening_wohnzimmer.* {
  if ($EVTPART1 == 1 ){
    if (ReadingsVal("Denon","zoneMain","") eq "on"){
      fhem("attr $NAME wohnzimmer_volume " . ReadingsVal("Denon","volume","40"));
      fhem("set Denon volume 20");
    }
  }else{
    fhem("set Denon volume " . AttrVal($NAME, "wohnzimmer_volume", "40"));
    fhem("deleteattr $NAME wohnzimmer_volume");
  }
}


Aber wenn du jetzt den Befehl "Hey Snips, Denon leiser!" gibst, dann wir der Befehl ausgeführt und danach die Lausträke wieder auf die Ursprungslautstärke gesetzt. Dabei soll diese ja um "leiser" gemindert werden.
Oder les ich da was falsch?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 27 September 2018, 09:11:40
Ups, das habe ich falsch verstanden, diese Lösung hilft nur das SNIPS mich versteht auch wenn Musik läuft.

Ich habe mittlerweile alles auf Talk2Fhem umgestellt, nutze SNIPS nur noch für die Erkennung.


https://forum.fhem.de/index.php/topic,91216.0.html
(https://forum.fhem.de/index.php/topic,91216.0.html)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ChrisK am 28 September 2018, 14:46:39
Nach längerer Zeit darf ich wieder an meinem Snips basteln.

Bin gerade allerdings leicht verwirrt (vermutlich weil ich die Custom Intents bisher noch nicht angegangen habe).
Der SetTimer gefällt mir und ich würde auch gerne einen Timer setzen können.

Meine Verwirrung ist hierdurch entstanden:
Zitat von: Thyraz am 10 September 2018, 17:23:02
Ok, das Umrechen ohne zu wissen wann das ganze stattfindet klappt durch einige der Werte ja gar nicht.
Thema Schaltjahr, Anzahl Tage im Monat usw.

Ich übergebe also doch den ganzen Hash.

Aktualisierte 10_SNIPS.pm auf Github verfügbar

Beispiel für die Abfrage:
...
"aktualisiert 10_SNIPS.pm" bedeutet dass das jetzt ohne CustomIntent laufen sollte oder benötige ich weiterhin einen Custom Intent so wie es in der Readme beschrieben ist ("Für Fortgeschrittene: Eigene Custom Intents erstellen und in FHEM darauf reagieren")?
Bevor ich in die falsche Richtung gehe, dachte ich frage ich mal nach.

Die nächste Frage wird dann sein, wie ich den Timer setze. Vermutlich mit einem at und mit Übergabe der erkannten Dauer der dann irgendeine Sound-Ausgabe anstößt, oder habt Ihr das anders gelöst?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 28 September 2018, 16:49:33
Ne kleine Frage Frage zu SetonOff:
(Sname=Licht/ Sroom=Treppe)

Die Anweisung "Schalte das Licht auf der Treppe ein" liefert sam watch
[Asr] captured text "schalte das licht auf der treppe ein" in 4.0s
[16:45:34] [Asr] was asked to stop listening on site arbeitszimmer
[16:45:34] [AudioServer] was asked to play a wav of 93.1 kB with id '41d36e39-5d22-43e5-ae15-546673c388c5' on site arbeitszimmer
[16:45:35] [AudioServer] finished playing wav with id '41d36e39-5d22-43e5-ae15-546673c388c5'
[16:45:35] [Nlu] was asked to parse input "schalte das licht auf der treppe ein"
[16:45:35] [Nlu] intent not recognized for "schalte das licht auf der treppe ein"


Bei "Schalte das Licht im Treppe ein" wird richtig erkannt

[Asr] captured text "schalte das licht im treppe ein" in 4.0s
[16:45:44] [Asr] was asked to stop listening on site arbeitszimmer
[16:45:44] [AudioServer] was asked to play a wav of 93.1 kB with id 'f1636145-3eb9-43d6-b514-118880974e83' on site arbeitszimmer
[16:45:45] [AudioServer] finished playing wav with id 'f1636145-3eb9-43d6-b514-118880974e83'
[16:45:45] [Nlu] was asked to parse input "schalte das licht im treppe ein"
[16:45:45] [Nlu] detected intent Thyraz:GetOnOff with probability 0.395 for input "schalte das licht im treppe ein"
              Slots ->
                 Status -> an


Ist das noch ein Bug?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 29 September 2018, 12:05:54
Ich antworte mir mal selbst: Lösung für das Lauter Leister Problem:
Zitat von: laberlaib am 26 September 2018, 17:51:54
1) Ich möchte meine Anlage leiser stellen, wenn Snips zuhört, also die vorgeschlagene Nutzung von "listening_room". Probleme kommen dann, wenn man damit die Lautstärke reglen will (im Beispiel als DOIF)
Pause/Play bei einer Sqeezebox:
(([Snips:listening_wohnzimmer] eq "1") and ([sb_Wohnzimmer:playStatus] eq "playing"))(set sb_Wohnzimmer pause)
DOELSEIF
([Snips:listening_wohnzimmer] eq "0")(set sb_Wohnzimmer play)

Da das Gerät pausiert wird es nicht als spielendes Gerät gefunden und wird ohne konkrete Bennennung nicht gesteuert.

Leiser/Lauter
(([Snips:listening_wohnzimmer] eq "1") and ([sb_Wohnzimmer:playStatus] eq "playing"))(setreading $SELF volumeBackup [sb_Wohnzimmer:volume], set sb_Wohnzimmer volume 3)
DOELSEIF
([Snips:listening_wohnzimmer] eq "0")(set sb_Wohnzimmer volume $SELF:volumeBackup)

Snips macht lauter von 3 auf 13 um dann wieder mit der gespeicherten Lautstärke zu überschreiben.

defmod di_snips_Leiser DOIF (([Snips:listening_wohnzimmer] eq "1") and ([sb_Wohnzimmer:playStatus] eq "playing"))(setreading $SELF volumeBackup [sb_Wohnzimmer:volume], set sb_Wohnzimmer volume 15)\
DOELSEIF\
([Snips:listening_wohnzimmer] eq "0")(set sb_Wohnzimmer volume {([$SELF:volumeBackup] + [sb_Wohnzimmer:volume] - 15)})


Dann geht die Lautstärke erst auf 15 runter und danach auf den Zwischengespeicherten Wert plus dem neuen Wert (15 +/- lauter/leiser) minus 15 .
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: msommer am 29 September 2018, 16:05:23
Nachdem ich gerade ein bisschen an den custom replies verzweifelt bin...

https://github.com/Thyraz/Snips-Fhem/blob/master/FHEM/10_SNIPS.pm#L63
Da müsste eq statt ==  verwendet werden, sonst ist $ROOM immer der Default Room.

my $ROOM = (defined($siteId) && $siteId eq "default") ? $hash->{helper}{defaultRoom} : $siteId;

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 29 September 2018, 19:38:16
Liest "Thyraz" noch mit ? Es ist sehr ruhig geworden in diesem Tread.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 03 Oktober 2018, 08:42:07
Ich hätte auch noch eine Frage/ ein Feature Request:
Und zwar, dass man beim Befehl "say" auch Perlcode in {} angeben kann.
Hintergrund: Ich habe mir eine Statusfunktion gebaut, welche den Zustand der Autobahn zurückgibt. Wenn ich diese per Statusintent aufrufe, dann muss da ja "return text" zurückgegeben werden. Ich möchte aber auch die Statusinformation auf Knopfdruck bekommen, also per
set <snipsdevice> say {statusVerkehr()}
Das wird aber genau so vorgelesen..."Geschweifete Klammer..."
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 04 Oktober 2018, 00:42:37
Zitat von: laberlaib am 03 Oktober 2018, 08:42:07
Ich hätte auch noch eine Frage/ ein Feature Request:
Und zwar, dass man beim Befehl "say" auch Perlcode in {} angeben kann.
Hintergrund: Ich habe mir eine Statusfunktion gebaut, welche den Zustand der Autobahn zurückgibt. Wenn ich diese per Statusintent aufrufe, dann muss da ja "return text" zurückgegeben werden. Ich möchte aber auch die Statusinformation auf Knopfdruck bekommen, also per
set <snipsdevice> say {statusVerkehr()}
Das wird aber genau so vorgelesen..."Geschweifete Klammer..."

Das lässt sich doch sicherlich auch mittels dummy und notify regeln oder?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 04 Oktober 2018, 09:01:45
Zitat von: bennebartsch am 04 Oktober 2018, 00:42:37
Das lässt sich doch sicherlich auch mittels dummy und notify regeln oder?
Sicher, oder ich übergebe eine Parameter und die Funktion spricht entweder direkt oder gibt nur den Text aus.
Aber irgendwie bin ich es gewöhnt, in den FHEM Eingabefeldern  Perlcode einzugeben, bei den Attributen geht das ja auch.
Eobei ich zugeben muss, dass ich es bisher nur direkt im Eingabefeld des Devices probiert habe. Ob im FHEM-Eingabefeld "set device say {}" funktioniert müsste ich mal probieren...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: heiko-73 am 08 Oktober 2018, 21:38:05
Hallo Ihr Lieben,
ich war nun mutig und habe es auch einmal versucht und mich herangewagt  ;D

Soweit bin ich auch gekommen das Snips mich hört und scheinbar versteht zumindest sehe ich das per mqqt

Das mit den Intents habe ich nur noch nicht verstanden.
Bzw. wo muß ich nun was eingeben?
Das mit dem Snipsraum habe ich gemacht aber bei den Intents ist die Anleitung doch eher mager?
Gebe ich das bei jedem einzelnen Gerät ein oder bei snips?

Für den Anfang wäre ich schon erfreut wenn ich meine Hue Lampen damit an/aus machen könnte.

Ich sehe z.B. folgendes:
[Nlu] intent not recognized for "lampeeins aus"



[22:10:52] [Asr] was asked to listen on site default
[22:10:57] [Asr] captured text "schalte im schlafzimmer lampeeins aus" in 4.0s
[22:10:57] [Asr] was asked to stop listening on site default
[22:10:57] [AudioServer] was asked to play a wav of 93.1 kB with id 'dde2d173-dc4e-4f3c-a993-b928608f84d2' on site default
[22:10:58] [AudioServer] finished playing wav with id 'dde2d173-dc4e-4f3c-a993-b928608f84d2'
[22:10:58] [Nlu] was asked to parse input "schalte im schlafzimmer lampeeins aus"
[22:10:58] [Nlu] detected intent Thyraz:SetOnOff with probability 0.511 for input "schalte im schlafzimmer lampeeins aus"
              Slots ->
                 Value -> aus
[22:10:58] [Dialogue] New intent detected Thyraz:SetOnOff with probability 0.511
              Slots ->
                 Value -> aus
[22:11:04] [Dialogue] session with id '90311190-092a-43bf-963f-bcb09c09ed49' was ended on site default. The session was ended because one of the component didn't respond in a timely manner
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 08 Oktober 2018, 22:10:10
Zitat von: heiko-73 am 08 Oktober 2018, 21:38:05
Hallo Ihr Lieben,
ich war nun mutig und habe es auch einmal versucht und mich herangewagt  ;D

Soweit bin ich auch gekommen das Snips mich hört und scheinbar versteht zumindest sehe ich das per mqqt

Das mit den Intents habe ich nur noch nicht verstanden.
Bzw. wo muß ich nun was eingeben?
Das mit dem Snipsraum habe ich gemacht aber bei den Intents ist die Anleitung doch eher mager?
Gebe ich das bei jedem einzelnen Gerät ein oder bei snips?

Für den Anfang wäre ich schon erfreut wenn ich meine Hue Lampen damit an/aus machen könnte.

Ich sehe z.B. folgendes:
[Nlu] intent not recognized for "lampeeins aus"

Was hast du denn genau gemacht? Du musst in der Snips Konsole bei deinem Assistant eine neue App hinzufügen und dieser dann deine Intents. Dann SNIPS via .zip oder SAM updaten. Beim Snips Device in FHEM musst du das Attribut snipsIntents setzen. Bei mir sieht das z.B. so aus:
roomba=snipsRoomba(cmd)
audio_source=snipsAudioSource(Device)
computer=snipsComputer(action,computer)

Natürlich brauchst du auch noch entsprechende Funktionen in der myUtils. Poste doch am besten mal alles was du so eingestellt hast.

BTW, um eine Lampe ein- und auszuschalten braucht du keine custom Intents. Das geht auch nur mit snipsName, snipsRoom und snipsMapping!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: heiko-73 am 08 Oktober 2018, 22:37:27
ALso soweit wie ich bisher gelesen hatte brauch ich doch die nips console nur einmal und klar hab ich das gemacht. (sonst würde doch gar nichts gehen?)
Dann habe ich dafür gesorgt das es überhaupt funktioniert.
Habe mich hier durchgearbeitet:
https://github.com/Thyraz/Snips-Fhem#modul-installation

Bis zum Punkt Attribut snipsRoom war mir alles klar und habe ich wohl auch richtig gemacht.


ok ich muß also bei jedem Gerät das ich ein und ausschalten möchte das Attribut snipsIntents  anlegen?
Aber was genau kommt da nun in welchem Format rein?
Die SNipsnamen?Die Fhem Gerätenamen?


die myutils hab ich noch gar nicht angefasst.
Ich wollte mich ja langsam herantasten und hatte es auch so verstanden das ein und ausschalten so gehen sollte.

define HUEDevice11 HUEDevice 11  IODev=HeikoHUE
attr HUEDevice11 userattr snipsColors:textField-long
attr HUEDevice11 IODev HeikoHUE
attr HUEDevice11 alias Hue color candle 1
attr HUEDevice11 color-icons 2
attr HUEDevice11 devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
attr HUEDevice11 model LCT012
attr HUEDevice11 room HUEDevice,Schlafzimmer,Snips
attr HUEDevice11 snipsColors rot=rgb FF0000\
grün=rgb 00FF00\
blau=rgb 0000FF\
weiß=ct 3000\
warmweiß=ct 2700
attr HUEDevice11 snipsMapping SetOnOff:an=on,aus=off
attr HUEDevice11 snipsName Deckenlampe,Schlafzimmerlampe,Lampeeins
attr HUEDevice11 snipsRoom Schlafzimmer
attr HUEDevice11 subType extcolordimmer
attr HUEDevice11 webCmd rgb:rgb ff0000:rgb DEFF26:rgb 0000ff:ct 490:ct 380:ct 270:ct 160:toggle:on:off



Ok  da scheint noch etwas schief zu gehen! Was da aber nun schief läuft kann ich nicht verstehen... hermes/nlu/query irgendwas mit unicode
[10:00:46.704780] DEBUG:snips_nlu_hermes     : heartbeat deactivated
[10:00:46.704992] INFO :snips_nlu_hermes     : loading model at path "/usr/share/snips/assistant/nlu_engine"
[10:00:47.760731] INFO :snips_nlu_hermes     : model loaded in 1055 ms
[10:00:47.763806] DEBUG:snips_nlu_hermes     : nlu thread started
[10:00:47.763982] DEBUG:snips_nlu_hermes     : idle
[10:00:58.106480] DEBUG:snips_nlu_hermes     : parse succeeded: IntentParserResult { input: "schalte lampeeins aus", intent: Some(IntentClassifierResult { intent_name: "Thyraz:SetOnOff", probability: 0.5125872 }), slots: Some([Slot { raw_value: "aus", value: Custom(StringValue { value: "aus" }), range: Some(18..21), entity: "de.fhem.OnOffValue", slot_name: "Value" }]) }
[10:00:58.107527] DEBUG:snips_nlu_hermes     : idle
[10:00:58.113628] WARN :hermes_mqtt          : Error while decoding object on topic "hermes/nlu/query": invalid unicode code point at line 1 column 340
[10:05:58.678179] DEBUG:snips_nlu_hermes     : parse succeeded: IntentParserResult { input: "schalte lampeeins aus", intent: Some(IntentClassifierResult { intent_name: "Thyraz:SetOnOff", probability: 0.5125872 }), slots: Some([Slot { raw_value: "aus", value: Custom(StringValue { value: "aus" }), range: Some(18..21), entity: "de.fhem.OnOffValue", slot_name: "Value" }]) }
[10:05:58.684248] DEBUG:snips_nlu_hermes     : idle
[10:05:58.685893] WARN :hermes_mqtt          : Error while decoding object on topic "hermes/nlu/query": invalid unicode code point at line 1 column 340


Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: msommer am 09 Oktober 2018, 10:51:23
Zitat von: heiko-73 am 08 Oktober 2018, 22:37:27

attr HUEDevice11 snipsMapping SetOnOff:an=on,aus=off


Das stimmt so nicht, das snipsMapping müsste so aussehen.

SetOnOff:cmdOn=on,cmdOff=off



Den Unicode Fehler hab ich so aber noch nicht gesehen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: heiko-73 am 09 Oktober 2018, 10:54:57
DANKE!

ich hatte das nun nochmal gelöscht und das Modul per Linux heruntergeladen und kopiert  ;D ;D ;D

ist das GENIAL!!!!

ok dann möchte Mann natürlich gleich noch mehr Erfolge haben :)
ich habe W-Lan Lautsrpechen die über den LogitechMediaServer gesteuert werden.

Wie muß denn das das Mapping sein?
snipsMapping
SetOnOff=state,valueOff=0,cmdOn=on,cmdOff=off
MediaControls:cmdPlay=play,cmdPause=pause,cmdStop=stop

und

snipsMapping
SetOnOff=state,valueOff=0,cmdOn=on,cmdOff=off
cmdPlay=play,cmdPause=pause,cmdStop=stop

bringen mir da nur teilweise einen Erfolg.


Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 09 Oktober 2018, 15:04:34
Ich hab Squeezeliteplayer (PiCorePlayer) als SB_PLAYER integriert.
Die sind halt immer "an", so dass ich "SetOnOff" nicht brauche.
Aber nichtsdestotrotz sind da doch einige Fehler drin:
- Intent und Parameter werden mit ":" getrennt
- SetOnOf schaltet nur und fragt nicht ab
- GetOnOff fragt ab
- Der Player zeigt "off" im state wenn er aus ist und nicht 0:
ZitatSetOnOff:state,valueOff=Off,cmdOn=on,cmdOff=off
und dazu noch zur Laustärke bspw.:
MediaControls:cmdPlay=play,cmdPause=pause,cmdStop=stop,cmdFwd=next,cmdBack=prev
GetNumeric:currentVal=volume
SetNumeric:currentVal=volume,cmd=volume,minVal=0,maxVal=99,step=10,type=Lautstärke
GetOnOff:currentVal=state,valueOn=On


Und für die Channels nochmal genau lesen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: heiko-73 am 09 Oktober 2018, 18:29:03
Ohhhhhhhhhhhhhhh laberlaib DANKE DANKE DANKE
das ist ja wie Zauberei!
Wenn ich die nun noch verstehen würde *hach*

Ich habe Medion WLAN Lautsprecher die mit dem Logitechmediaserver per DLNA gekoppelt sind und dann auch per SB_PLAYER Plugin in fhem
und Dein Mapping hat sofort geklappt.

Was ich aber wohl habe ist das snips mir teilweise doppelt ok antwortet?Also er sagt dann ok ok aber nun gut das ist erstmal echt nur eine Kleinigkeit!
Ich schau mir das dann mal an wie ich Ihn nach der Raumtemperatur frage und mal schauen ob das so klappt.....

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 14 Oktober 2018, 13:53:13
Moin,

hat eigentlich schon mal jemand SnowBoy mit Snips verbunden?

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: msommer am 15 Oktober 2018, 12:56:26
Zitat von: rischbiter123 am 14 Oktober 2018, 13:53:13
hat eigentlich schon mal jemand SnowBoy mit Snips verbunden?

Hat offenbar schon mal jemand gemacht...
https://github.com/Psychokiller1888/snips-custom-hotword (https://github.com/Psychokiller1888/snips-custom-hotword)

Ich seh jetzt aber keinen Vorteil, Custom Hotwords funktionieren inzwischen ja auch mit Snips alleine.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 15 Oktober 2018, 13:11:34
Hatte ich noch nicht gesehen. Hatte gedacht, dass der Weg 'einfacher' als mit Snips direkt ist. Aber scheint doch eher umgekehrt der Fall zu sein. THX für den Link.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 19 Oktober 2018, 15:31:40
Hier mal der Shortcut für die Abfrage des aktuellen Tages.

Welcher Tag ist heute={return "es ist " . qx(date +%A) . " der " . qx(date +%D);}

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 19 Oktober 2018, 16:17:14
Kann mir bitte jemand einen Schubs geben, wie das Mapping aussehen muss, wenn ich ein Max-Heizkörperthermostat steuern möchte? Ich schätze mal, mit SetNumeric. Aber wie sage ich ihm, das die desiredTemperatur auf den genannten Wert gestellt werden soll?

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 19 Oktober 2018, 16:27:11
Set device desiredTemp XYZ
sollte das gleiche sein wie beim Mediaplayer Beispiel weiter oben mit
Set Mediaplayer Volumen XYZ

also das setcmd anpassen

(Von mobil, daher schnell aber hässlich)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 19 Oktober 2018, 17:45:10
Danke. Manchmal sieht man den Wald vor lauter Bäumen nicht. Mit

SetNumeric:currentVal=desiredTemperature,cmd=desiredTemperature,minVal=5,maxVal=30,step=0.5

funktioniert es soweit.
Aber egal, ob ich sage erhöhe die Temperatur, oder verringere die Temperatur, der Wert wird immer abgezogen. Weis jemand, woran daas liegen könnte? Stell die Heizung auf z.B. 21 Grad funktioniert.

LG

Andreas

Habs rausgefunden. Man muss 'lauter' sagen, dann klappt es.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 19 Oktober 2018, 23:11:10
Kleiner Tip am Rande. Wenn man mit Snips eine Structure schalten möchte, sollte man diese zuerst in Snips einrichten, da SnipsName und SnipsRoom von den einzelnen Devices übernommen werden und die eigenen überschrieben werden.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 22 Oktober 2018, 10:58:31
Hi ich habe nun auch Snips getestet und bin begeistert.

Mein setup:

- Rpi3 als Snips Server
- Banana pi als Satellit zusätzlich als squeezeplayer
- ps3eye als Mirko

Wenn ich jetzt aber versuche mit "Hey snips" snips zu wecken während Musik läuft reagiert Snips nicht. Mache ich die Musik leiser geht alles wieder... Wie habt ihr das gelöst?

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Brice am 24 Oktober 2018, 13:04:36
Ich bin dabei Snips einzurichten, allerdings versteht Snips das Wort "Licht" nicht, sondern grundsätzlich etwas englisches (z.B. list Iowa)

[12:14:11] Watching on localhost:1883 (MQTT)
[12:14:13] [Hotword] detected on site default, for model your_hotword_name
[12:14:13] [Asr] was asked to stop listening on site default
[12:14:13] [Hotword] was asked to toggle itself 'off' on site default
[12:14:13] [Dialogue] session with id '1ac6a71e-94d8-428f-a3f9-de7626cd26c7' was started on site default
[12:14:13] [AudioServer] was asked to play a wav of 41.1 kB with id 'eb0d67df-f970-4da1-aa44-885b4cf30249' on site default
[12:14:14] [AudioServer] finished playing wav with id 'eb0d67df-f970-4da1-aa44-885b4cf30249'
[12:14:14] [Asr] was asked to listen on site default
[12:14:17] [Asr] captured text "list iowa" in 2.0s
[12:14:17] [Asr] was asked to stop listening on site default
[12:14:17] [AudioServer] was asked to play a wav of 93.1 kB with id '2cbfe8dd-0503-42ba-a70f-c66e27ad5251' on site default
[12:14:18] [AudioServer] finished playing wav with id '2cbfe8dd-0503-42ba-a70f-c66e27ad5251'
[12:14:18] [Nlu] was asked to parse input "list iowa"
[12:14:18] [Nlu] intent not recognized for "list iowa"
[12:14:18] [AudioServer] was asked to play a wav of 61.1 kB with id 'e071b89e-2268-4450-b42b-0f38dbac5231' on site default
[12:14:19] [AudioServer] finished playing wav with id 'e071b89e-2268-4450-b42b-0f38dbac5231'
[12:14:19] [Dialogue] session with id '1ac6a71e-94d8-428f-a3f9-de7626cd26c7' was ended on site default. The session was ended because the platform didn't understand the user
[12:14:19] [Asr] was asked to stop listening on site default
[12:14:19] [Hotword] was asked to toggle itself 'on' on site default


Wonach muss ich suchen, wer hat einen Tipp für mich?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 24 Oktober 2018, 14:03:47
Moin,

1.) Assistenten in Deutsch?
2.) asr-inject installiert?
3.) Snips UpdateModel ausgeführt?

Wenn alles mit ja beantwortbar ist, eventuell Lampe oder Beleuchtung statt Licht nehmen.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Brice am 24 Oktober 2018, 16:00:22
Dreimal ja.

Nach Neueinrichtung des Assistenten läuft es jetzt. Da war irgendwo der Wurm drin.

Danke
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 24 Oktober 2018, 16:05:43
Das hatten wir schon ein paarmal, dass dann ASR Inject nicht geklappt hat wenn der Assistent nicht richtig installiert / entpackt ist.

P.S. bin übrigens nicht verschollen, nur beruflich gerade extrem eingespannt...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 24 Oktober 2018, 16:11:39
Zitat von: Thyraz am 24 Oktober 2018, 16:05:43
P.S. bin übrigens nicht verschollen, nur beruflich gerade extrem eingespannt...

Schön zu lesen. Ich habe das Teil zwar gerade abgeschaltet (auch weil mein Arbeitgeber mich zur Zeit stark vom wirklichen Leben ablenkt), aber meine Kinder drängeln, dass es wieder angeschaltet wird. Allerdings hat meine Tochter (6) eine Frequenz, bei der Snips sich permanent angesprochen fühlt. Der Sohn (9) nuschelt dermassen, das Snips mit ihm nicht "redet". Ich wollte wenn es dann endlich Winter wird und draussen nass und kalt, das persönliche "Hotword" installieren.

Ich bin also weiter dabei....

Gruss
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Brice am 24 Oktober 2018, 16:20:23
Mit der Installation von ASR Inject hatte ich Probleme.

Hat jemand eine Empfehlung für einen kleinen USB-Lautsprecher? Kein Päarchen, das wollte ich mir nicht hinstellen (damit behelfe ich mich augenblicklich nur).

Persönliches Hotword ist problemlos, hier läuft es unter "Hey Uschi"
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 24 Oktober 2018, 16:26:11
An sich wäre sowas in die Richtung perfekt. Wird auch unter dem Label Adafruit verkauft.
https://www.amazon.de/gp/product/B006RBSHAQ/

Ist eine USB-Soundkarte mit untegriertem Lautsprecher.

Leider haben die Dinger ein fieses Grundrauschen (sowohl am NUC, als auh am Pi gestestet) selbst wenn keine Audioausgabe erfolgt.
Zumindest in ruhigen Räumen hört man das auch noch auf 1-2m Abstand.

Bin daher dann doch auf diese recht kompakten Stereo-Lautsprecher umgestiegen:
https://www.amazon.de/gp/product/B00544XKK4/ref=oh_aui_search_detailpage?ie=UTF8&psc=1

Tips für Klein&Fein nehme ich auch gern entgegen. ;)

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 24 Oktober 2018, 16:45:32
Zitat von: enno am 24 Oktober 2018, 16:11:39
Allerdings hat meine Tochter (6) eine Frequenz, bei der Snips sich permanent angesprochen fühlt. Ich wollte wenn es dann endlich Winter wird und draussen nass und kalt, das persönliche "Hotword" installieren.

Dem kann ich mich nur anschließen. Ansonsten auch von mir mal ein herzliches THX für das Modul. Der WAF ist mächtig gestiegen.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rih am 24 Oktober 2018, 22:41:05
@Thyraz: möchte auch meinen Dank aussprechen für das Modul. Wertet die Hausautomation ungemein auf  :)

@rischbiter: ich habe deinen Shortcut zur Ausgabe des Tages / Datum probiert.
Welcher Tag ist heute={return "es ist " . qx(date +%A) . " der " . qx(date +%D);}

Leider spricht Snips den Tag auf englisch aus. Auch die Datumsangabe ist englisch:
heute ist Wednesday der 10/24/18

Ist das bei dir auch so? Wenn ich auf der Konsole "date" aufrufe wird korrekt Mittwoch und das Datum "auf deutsch" angezeigt. Die Lokalisierungseinstellungen sollten also passen. Was kann da falsch sein (falls es bei dir passt)?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 24 Oktober 2018, 23:22:28
Moin,

ich bekomme die deutsche Ansage. Da ich mich leider nicht gut genug auskenne, kann ich Dir leider nicht helfen. Höchstens raten, dass Du den assistenten mit englisch statt deutsch installiert hast.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rih am 24 Oktober 2018, 23:32:28
Habe gerade nachgeschaut. Der Assistent ist auf deutsch eingestellt ...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: heiko-73 am 25 Oktober 2018, 08:50:54
Zitat von: rih am 24 Oktober 2018, 22:41:05

Welcher Tag ist heute={return "es ist " . qx(date +%A) . " der " . qx(date +%D);}
Wo schreibt man das denn überhaupt hin?
Ich hab mich da noch nicht rangetraut weil ich einfach nicht weiß wo es hingehört.
Oder denke ich einfach zu kompliziert?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 25 Oktober 2018, 09:25:01
Zitat von: heiko-73 am 25 Oktober 2018, 08:50:54
Wo schreibt man das denn überhaupt hin?
Ich hab mich da noch nicht rangetraut weil ich einfach nicht weiß wo es hingehört.
Oder denke ich einfach zu kompliziert?
Am Besten in das Snips-Device selbst, und dort in das attr shortcuts. Dann werden die Shortcuts "zentral" in einem Device verwaltet und man hat sie nicht in allen möglichen Devices verstreut. Ach ja, danach updateModel nicht vergessen!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: heiko-73 am 25 Oktober 2018, 09:37:47
Oh DANKE für diese Erleuchtung! Das ja genial! Also wirklich EINFACH :) :) :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 25 Oktober 2018, 10:37:38
Moin,

dort kann man dann auch andere Sachen steuern, z.B. die Zeitabfrage. Spart einem externe Apps. Ich steuere dort auch SRadio, da es - zumindest bei mir - von Snips nicht als Mediaplayer erkannt wird.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 Oktober 2018, 10:40:45
Achja, die Shortcuts sind ja auch noch nicht in der Doku sehe ich gerade.
Brauch dringend mal wieder etwas Freizeit und Langeweile. ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Brice am 25 Oktober 2018, 13:08:49
@Thyraz:
Vielen Dank für das tolle Modul und deine Dokumentation dazu. Mit ein paar Problemen ist alles installiert und ein paar Devices sind eingebunden. Erinnert mich an die Integration von Alexa mit Custom-Skills im Februar 2017: Herausforderungen können überwunden werden :). Alexa läuft (derzeit noch) parallel, evt. wird Snips aber die Steuerung der Heimautomation übernehmen. Meine Frau ist nach der ersten Demo mit dem Wakeword "Hey Uschi" nicht einverstanden, das werde ich dann mal ändern.

Tips für Klein&Fein: klein habe ich beim örtlichen Conrad gefunden, ob fein, wird sich zeigen. Es sind diese (https://www.conrad.de/de/basetech-s181-20-pc-lautsprecher-kabelgebunden-6-w-schwarz-1425991.html), die ich locker hinter Blumentöpfen verstecken kann.

@ all:
Hat jemand die Spachausgabe von Snips per tts über externe Lautsprecher laufen, z.B. über das Modul BOSEST? Snips läuft bei mir auf einem für das (inoffzielle) Modul Roomba extra eingerichtetem RPi3, da das Modul Fritzbox/PRESENCE im Produktivsystem permanente disconnect/connect auswirft. Es wäre natürlich schick, wenn die Sprachausgabe über die BoseSoundtouch 10 erfolgen könnte.

Ich werde mich jetzt mal mit den Feinheiten zu Snips beschäftigen.

Stefan
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: MadMax-FHEM am 25 Oktober 2018, 14:07:29
Zitat von: rih am 24 Oktober 2018, 22:41:05
@rischbiter: ich habe deinen Shortcut zur Ausgabe des Tages / Datum probiert.
Welcher Tag ist heute={return "es ist " . qx(date +%A) . " der " . qx(date +%D);}

Leider spricht Snips den Tag auf englisch aus. Auch die Datumsangabe ist englisch:
heute ist Wednesday der 10/24/18

Ist das bei dir auch so? Wenn ich auf der Konsole "date" aufrufe wird korrekt Mittwoch und das Datum "auf deutsch" angezeigt. Die Lokalisierungseinstellungen sollten also passen. Was kann da falsch sein (falls es bei dir passt)?

War bei mir bis eben auch so ;)

also bei date in der Linux-Console (ssh): Do usw.

Bei Eingabe von {qx(date +%A)} in FhemWeb dann: Thursday

Ich stelle bei raspi-config immer zwei locale ein bzw. zusätzlich Deutsch (utf-8) als "Standard" (Frage "danach") hatte ich bislang immer en utf-8 gelassen.

Eben auf de utf-8 umgestellt und gebootet: siehe da -> Donnerstag :)

Gruß, Joachim
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rih am 25 Oktober 2018, 19:59:25
Habe ich in raspi-config genauso eingestellt: de_DE-UTF8 und en_GB-UTF8. Dann als Standard de_DE-UTF8.
Auf deinen Tipp hin habe ich versuchsweise den Standard auf "en" umgestellt, rebootet und wieder auf "de" eingestellt. Nochmal rebootet.
Komischerweise sagt snips das Datum nun korrekt, also Tag, Monat, Jahr. War vorher Monat, Tag, Jahr. Und das, obwohl snips als voiceResponse "heute ist Thursday der 10/25/18" anzeigt. Aber der Tag selbst wird leider immer noch englisch gesprochen, also Thursday.
Komisch. Hast Du auch Stretch lite oder ein älteres Raspian?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: MadMax-FHEM am 25 Oktober 2018, 20:06:21
Hm, eigenartig...

Hat bei mir sofort geklappt...

Nur zur Sicherheit: du hast das auf dem PI gemacht, auf dem fhem läuft (also die Antwort "generiert" wird)!?

Und ja: Stretch lite...

Was mir noch einfällt war etwas ähnliches bei TEERKO.
Da stand irgendwas von einem Eintrag in der fhem Startdatei (also zumindest bei initd möglich / aber eher unüblich bei systemd)...
...hat bei mir aber damals auch nicht geholfen (war aber noch auf dem alten Testsystem).

Gruß, Joachim
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: heiko-73 am 25 Oktober 2018, 21:36:12
So nun hat es mich ja schon ein wenig gepackt......
wie wäre es wenn Snips mal einen Witz erzählen könnte?
Mit dem genialen Shortcut hat das sofort geklappt, aber dann ist es ja immer der gleiche Witz^^

Nun dachte ich mir ok dann holt man sich die Witze als RSS Feed von witze.net
Also hab ich nun ein Device WitzeFeed das auch fleißig 20 Witze als Reading bereithält.

ABER wie bau ich das denn nun ein?Mit dem Mapping komme ich so noch nicht klar.
Man müsste dann ja auch noch per Zufall einen von 20 Witzen auslosen...

Und gibt es eine Funktion um das Reading vorher noch ein wenig abzuändern?
Bei meinem Test mit dem Shortcut war es z.B. praktisch erstmal die Sonderzeichen zu maskieren und nach einem Fragezeichen einfach pauschal 5-10 Kommas hinter zu packen für eine gewisse Pause.

Hat dazu wer eine Idee?
Wenn das mit dem Text umformen so nicht geht wäre es nicht so schlimm dann baue ich ein PHP Script dazwischen (das kann ich wenigstens)....
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 25 Oktober 2018, 21:52:13
Zitat von: heiko-73 am 25 Oktober 2018, 21:36:12
So nun hat es mich ja schon ein wenig gepackt......
wie wäre es wenn Snips mal einen Witz erzählen könnte?
Mit dem genialen Shortcut hat das sofort geklappt, aber dann ist es ja immer der gleiche Witz^^

Nun dachte ich mir ok dann holt man sich die Witze als RSS Feed von witze.net
Also hab ich nun ein Device WitzeFeed das auch fleißig 20 Witze als Reading bereithält.

ABER wie bau ich das denn nun ein?Mit dem Mapping komme ich so noch nicht klar.
Man müsste dann ja auch noch per Zufall einen von 20 Witzen auslosen...

Und gibt es eine Funktion um das Reading vorher noch ein wenig abzuändern?
Bei meinem Test mit dem Shortcut war es z.B. praktisch erstmal die Sonderzeichen zu maskieren und nach einem Fragezeichen einfach pauschal 5-10 Kommas hinter zu packen für eine gewisse Pause.

Hat dazu wer eine Idee?
Wenn das mit dem Text umformen so nicht geht wäre es nicht so schlimm dann baue ich ein PHP Script dazwischen (das kann ich wenigstens)....
Das wäre eher etwas für ein custom intent mit Funktion in der myutils glaube ich. Aber das können die perlexperten besser als ich.

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 26 Oktober 2018, 07:25:07
Zitat von: heiko-73 am 25 Oktober 2018, 21:36:12

Nun dachte ich mir ok dann holt man sich die Witze als RSS Feed von witze.net
Also hab ich nun ein Device WitzeFeed das auch fleißig 20 Witze als Reading bereithält.

ABER wie bau ich das denn nun ein?Mit dem Mapping komme ich so noch nicht klar.
Man müsste dann ja auch noch per Zufall einen von 20 Witzen auslosen...



$text = ["Das habe ich nicht verstanden!","Phuu das kann ich noch nicht!","Nein! Heute nicht.", "Wie bitte?"]->[rand(4)];


Das ist schon mal was für Zufall
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: heiko-73 am 26 Oktober 2018, 12:02:17
Cooooooooooooooooool ahlermi !!!!

Das funktioniert :)
Als Shortcut
Mach Witze={my $value=[ReadingsVal("WitzeFeed","n00_description",""),ReadingsVal("WitzeFeed","n01_description",""),ReadingsVal("WitzeFeed","n02_description",""),ReadingsVal("WitzeFeed","n03_description",""),ReadingsVal("WitzeFeed","n04_description",""),ReadingsVal("WitzeFeed","n05_description",""),ReadingsVal("WitzeFeed","n06_description",""),ReadingsVal("WitzeFeed","n07_description",""),ReadingsVal("WitzeFeed","n08_description",""),ReadingsVal("WitzeFeed","n09_description",""),ReadingsVal("WitzeFeed","n10_description",""),ReadingsVal("WitzeFeed","n11_description",""),ReadingsVal("WitzeFeed","n12_description",""),ReadingsVal("WitzeFeed","n13_description",""),ReadingsVal("WitzeFeed","n14_description",""),ReadingsVal("WitzeFeed","n15_description",""),ReadingsVal("WitzeFeed","n16_description",""),ReadingsVal("WitzeFeed","n17_description",""),ReadingsVal("WitzeFeed","n18_description",""),ReadingsVal("WitzeFeed","n19_description","")]->[rand(20)]; return " $value";}

Das müßte man dann doch auch im Feed Devise als Mapping umsetzen können?
Weil dann wäre man ja mit den Erkennungswörtern flexibler?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 28 Oktober 2018, 19:56:52
Da bei mir -aus welchem Grund auch immer- die Wetter-Apps von Snips nicht funktionieren, habe ich mir mit shortcuts und einem Proplanta-Device eine 6-Tage-Wettervorhersage gebastelt. Da Proplanta die Daten für 3,6,9,12,15,18 und 21 Uhr bereitstellt, lasse ich mir die Daten für 6-18 Uhr vorlesen.
Die Shortcuts:
Wie wird das Wetter morgen={WetterMorgen(1);}
Wie wird das Wetter übermorgen={WetterMorgen(2);}
Wie wird das Wetter in 3 Tagen={WetterMorgen(3);}
Wie wird das Wetter in 4 Tagen={WetterMorgen(4);}
Wie wird das Wetter in 5 Tagen={WetterMorgen(5);}
Wie wird das Wetter in 6 Tagen={WetterMorgen(6);}

und der Eintrag in die 99_myUtils:
sub WetterMorgen($) {
my ($no) = @_;
my $i = 6;
my $k = 0;
my $u = "";
my $v = "";
my $w = "";
my $da = "fc".$no."_date";
while($i < 19) {
if ($i == 6)
{$k = "06"}
elsif ($i == 9)
{$k = "09"}
else
{$k = $i};
my $we = "fc".$no."_weather".$k;
my $te = "fc".$no."_temp".$k;
my $wi = "fc".$no."_wind".$k;
  $u = "Um ".$i." Uhr ist es ".(ReadingsVal("wetter",$we,0))." Die Temperatur beträgt voraussichtlich ".(ReadingsVal("wetter",$te,0))." Grad Celsius."." Die Windgeschwindigkeit beträgt ".(ReadingsVal("wetter",$wi,0))." Kilometer pro Stunde. ";
  $v = $v.$u;
  $i += 3;
}
  $w = "Das Wetter vom ".(ReadingsVal("wetter",$da,0)).". ".$v;
  return $w;
}

wetter ist der Name des Proplanta-Device.

Wahrscheinlich kann man das Ganze besser über Custum-Intents lösen, aber damit komme ich (noch) nicht zurecht.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 29 Oktober 2018, 12:59:34
Achtung, am besten erstmal nicht updaten!
Beim Update der Snips Platform über apt bekomme ich folgenden Fehler:
The following packages have unmet dependencies:
snips-asr-injection : Depends: snips-platform-common (< 0.59.3) but 0.60.1 is to be installed
E: Unable to correct problems, you have held broken packages.

Scheint als hätten die Snips Entwickler vergessen das Paket snips-asr-injection zu updaten...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 29 Oktober 2018, 14:37:22
Hat sich anscheinend erledigt, das Paket snips-asr-injection wird von snips-injection abgelöst!
https://forum.snips.ai/t/error-on-apt-get-update/480/2

Edit: hat sich doch nicht erledigt. Es hat sich nicht nur der Name von snips-asr-injection zu snips-injection geändert, sondern auch noch ein paar andere Dinge. Die Snips Dokumentation ist dazu schon aktualisiert worden:
https://snips.gitbook.io/documentation/advanced-configuration/dynamic-vocabulary

Das MQTT Topic ist jetzt hermes/injection/perform anstatt hermes/asr/inject. Dies lässt sich recht einfach in Zeile 1087 der 10_SNIPS.pm ändern:
MQTT::send_publish($hash->{IODev}, topic => 'hermes/asr/inject', message => $json, qos => 0, retain => "0");
in folgendes ändern:
MQTT::send_publish($hash->{IODev}, topic => 'hermes/injection/perform', message => $json, qos => 0, retain => "0");
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: msommer am 29 Oktober 2018, 15:28:30
Zitat von: Brice am 25 Oktober 2018, 13:08:49
@ all:
Hat jemand die Spachausgabe von Snips per tts über externe Lautsprecher laufen, z.B. über das Modul BOSEST?
Du kannst in /etc/snips.toml, unter [snips-tts] ein eigenes Script konfigurieren (provider = "customtts"), das als Parameter den Ausgabetext von Snips übergeben bekommt.
Damit könntest du das speak Command vom BOSEST Modul antriggern.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Brice am 29 Oktober 2018, 17:15:24
Danke, damit werde ich mich mal in den kommenden dunklen Tagen beschäftigen. Hat keine Priorität, da die jetzt genutzten Lautsprecher sehr klein sind und auch kein "Rauschen im Standby" feststellbar ist.

@bennebartsch:
selbiges Problem hatte ich heute auch. Da ich vor einer größeren Aktion immer ein Image des funktionierenden Systems erstelle, habe ich dies zurück gespielt. Deinen Hinweis habe ich in meine Doku für meine System aufgenommen. Danke dafür.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ChrisK am 29 Oktober 2018, 19:36:36
Moin zusammen,

ich habe ein komisches Problem und komme leider nicht weiter.
Eigentlich wollte ich "nur" meinen Onkyo-Receiver einbinden, damit ich den per lauter/leiser steuern kann. Da ich aber immer "kein Wiedergabegerät aktiv" als Rückmeldung erhalten habe, habe ich meinen Assistenten aktualisiert.


chris@htpc:~$ sam devices

Found 1 device:
- 192.168.2.abc

Connect to a device using sam connect HOSTNAME_OR_IP


chris@htpc:~$ sam connect 192.168.2.abc
? Enter username for the device: [hidden]
? Enter password for the device: [hidden]
â Connected to 192.168.2.abc
i A public key has been generated and copied to the device at 192.168.2.abc:~/.ssh/authorized_keys
chris@htpc:~$ sam login
? Enter email used on the console: chris@emailadresse.de
? Enter password used on the console: [hidden]
â Logged in



chris@htpc:~$ sam update-assistant
Updating assistant

NLU training done
ASR training done
â Deploying assistant to 192.168.2.abc...
Checking for skills
â Generating virtual environment for python actions

Checking actions for end-user parameters
Relaunching snips-skill-server
â Snips assistant is now running. Say hey_snips to start!
i Run sam watch to see the logs

Danach habe ich fhem neu gestartet und set snips updateModel ausgeführt.

Jetzt erkennt snips leider gar nichts mehr.
"Hey Snips" wird erkannt, danach aber leider nichts mehr:
[18:35:27] [Hotword] detected on site default, for model hey_snips
[18:35:28] [Dialogue] session with id '9bcb9bbf-ffbd-4209-aa30-2ddcb750c6c5' was started on site default
[18:35:33] [Asr] captured text "" in 4.0s
[18:35:35] [Dialogue] session with id '9bcb9bbf-ffbd-4209-aa30-2ddcb750c6c5' was ended on site default. The session was ended because the platform didn't understand the user


captured test "" kommt immer, egal was ich nach "hey snips" sage.
Habe ich irgendwas vergessen?
Vielen Dank schonmal!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 29 Oktober 2018, 19:49:06
ChrisK

Hast du Snips aktualisiert? Falls ja bitte die letzten Beiträge über dir lesen :)

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ChrisK am 29 Oktober 2018, 20:58:14
Zitat von: mericon am 29 Oktober 2018, 19:49:06
Hast du Snips aktualisiert? Falls ja bitte die letzten Beiträge über dir lesen :)
Danke schön!

Hab jetzt mal auf die Schnelle das System aktualisiert, snips-injection installiert, updateModel und neu gestartet.
Snips erkennt zwar etwas mehr, läuft aber noch nicht rund (z.B. bei "Licht im Flur einschalten" wird nur "standardger#t im standardraum einschalten" erkannt).
Ich muss da morgen nochmal in Ruhe drüber gucken.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 29 Oktober 2018, 21:15:25
Hast du auch meinen fix angewendet?

Zitat von: bennebartsch am 29 Oktober 2018, 14:37:22
Hat sich anscheinend erledigt, das Paket snips-asr-injection wird von snips-injection abgelöst!
https://forum.snips.ai/t/error-on-apt-get-update/480/2

Edit: hat sich doch nicht erledigt. Es hat sich nicht nur der Name von snips-asr-injection zu snips-injection geändert, sondern auch noch ein paar andere Dinge. Die Snips Dokumentation ist dazu schon aktualisiert worden:
https://snips.gitbook.io/documentation/advanced-configuration/dynamic-vocabulary

Das MQTT Topic ist jetzt hermes/injection/perform anstatt hermes/asr/inject. Dies lässt sich recht einfach in Zeile 1087 der 10_SNIPS.pm ändern:
MQTT::send_publish($hash->{IODev}, topic => 'hermes/asr/inject', message => $json, qos => 0, retain => "0");
in folgendes ändern:
MQTT::send_publish($hash->{IODev}, topic => 'hermes/injection/perform', message => $json, qos => 0, retain => "0");
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 29 Oktober 2018, 21:45:29
Und eventuell mal schauen, ob die nlu-engine läuft. Wenn nicht, den Assistenten komplett neu installieren. War zumindest bei mir so.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 29 Oktober 2018, 22:11:23
Noch ein Hinweiß für alle Pi Zero Nutzer: In der aktuellen Version wird der Pi Zero nicht unterstützt, ihr solltet das System erstmal nicht updaten!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 30 Oktober 2018, 10:37:03
Danke an bennebartsch für den Fix mit dem neuen MQTT Pfad für die Injection.
Habe seinen PullRequest auf Github eingepflegt, kann also auch von dort übernommen werden wer die Datei nicht händisch editieren will.

Hab gerade auch mein System erfolgreich upgedated:

Zitat
sudo apt-get remove snips-asr-injection
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install snips-injection
sudo npm i -g snips-sam
sam install assistant
10_SNIPS.pm aktualisieren und FHEM neu starten
updateModel im Snips Modul ausführen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ChrisK am 31 Oktober 2018, 14:04:44
Zitat von: bennebartsch am 29 Oktober 2018, 21:15:25
Hast du auch meinen fix angewendet?
Jepp, hatte ich.

Ich glaube, mir hatte nur folgendes gefehlt:
Zitatsam install assistant
Ich hatte nur ein update assistant gemacht.
Auf jeden Fall bin ich gestern die Liste von Thyraz durchgegangen und es läuft wieder.

Danke an alle für die Unterstützung!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: eurolift am 02 November 2018, 18:20:12
Hallo Thyraz
es wäre super die Lautstärke vom Snips selbst per Sprache zu ändern.Das Hotword ist ja vorgegeben.
Vielleicht kannman es einfacher wechseln als wie mit dieser Aufnahmeprozedur?Nur so ein Gedanke.
Das Modul ist bei mir im Dauertest.Absolut klasse Teil.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 04 November 2018, 11:13:55
Hallo Thyraz,

könntest du wohl den Satz "Schalte die Standardgerät im Standardraum an" mit aufnehmen, der wird nicht gut verstanden.

Gruß Michael
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 04 November 2018, 11:16:50
Hi ahlermi,

da fehlen komischerweise die Leerzeichen der Satz in deinem Screenshot sieht ja so aus:
"schalte diestandardgerät imstandardraum an"
Das dürfte eher der Grund sein.

Muss ich mir mal im Code anschauen, und ob das bei mir auch auftritt mit der aktuellsten Version.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 04 November 2018, 12:21:44
Das ist mir schon ziemlich lange aufgefallen, ich glaube seit Anfang an 3-4 Monate, scheint aber keine Auswirkungen gehabt zu haben.

Nach dem Update von heute läuft übrigends nix mehr, der erkennt maximal noch 2-3 Wörter, dann bricht der ab...  ::)




Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 04 November 2018, 12:54:38
An UpdateModel  gedacht? Notfalls 2 mal ausführen, hatte ich auch schon.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 04 November 2018, 13:00:41
Ja, der hört auch teilweise nicht mehr bis zu Ende zu, sehr komisch.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 04 November 2018, 13:39:19
Ok, das klingt sehr komisch.
Die Abbruchkriterien beeinflussen wir ja erstmal nicht per FHEM.

Allerdings könnte sowas passieren wenn ASR nicht alle Wörter kann?
Evtl. mal Assistent löschen und neu installieren?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 04 November 2018, 16:41:02
Zitat von: ahlermi am 04 November 2018, 13:00:41
Ja, der hört auch teilweise nicht mehr bis zu Ende zu, sehr komisch.

Das hatte ich nach dem Update auch. Bei mir lag es daran, dass das Update nach einer höheren Version von npm verlangte und mit einer Fehlermeldung nicht komplett durchlief. Mit folgenden Befehl wurde das aktualisiert:

sudo npm install -g npm@latest


Danach:sudo npm i -g snips-sam
sam install assistant


Gruss
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 04 November 2018, 17:11:37
Danke Enno, das habe ich gemacht, das Ergebnis ist leider nicht viel besser :-/

Das war: "Schalte die Stehlampe im Wohnzimmer ein"

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: pataya am 06 November 2018, 08:26:15
@ahlermi:
Bist du sicher das die Injections noch vorhanden sind? Hatte nämlich dasselbe Fehlerbild, als die Injection bei mir nicht funktioniert hat (was sie immer noch nicht tut).

@Thyraz:
Vielen Dank für das Modul. Wirklich großartige Arbeit die Du geleistet hast. Danke für eine weitere Baustelle in FHEM... ::)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 06 November 2018, 10:59:28
Hast du das angepasst?

Zitat von: bennebartsch am 29 Oktober 2018, 21:15:25
Hast du auch meinen fix angewendet?


sudo apt-get update
sudo apt-get upgrade
sudo apt-get install snips-injection
systemctl enable snips-asr
systemctl enable snips-injection
sudo npm install -g npm@latest
sudo npm i -g snips-sam
sam install assistant
10_SNIPS.pm aktualisieren und FHEM neu starten
aus
MQTT::send_publish($hash->{IODev}, topic => 'hermes/asr/inject', message => $json, qos => 0, retain => "0");
wird
MQTT::send_publish($hash->{IODev}, topic => 'hermes/injection/perform', message => $json, qos => 0, retain => "0");

# Für Custom Hotwordmkdir /usr/share/snips/assistant/custom_injections
mkdir /usr/share/snips/assistant/custom_injections
mkdir /usr/share/snips/assistant/custom_hotword
cp -r /usr/src/snips-record-personal-hotword/personal_2018_09_13T18_08_43/ /usr/share/snips/assistant/custom_hotword/

systemctl restart snips-injection

updateModel im Snips Modul ausführen


Bei mir gehts wieder.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 06 November 2018, 12:55:50
Habe nun auch nach Zögern ein Update gemacht.
Leider startet die snips-injection nicht automatisch mit? In der /etc/init.d finde ich auch keinen Dienst für Snips.
Wie startet snips-hotword etc. eigentlich selbst?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 06 November 2018, 13:19:23
Zitat von: kud am 06 November 2018, 12:55:50
Habe nun auch nach Zögern ein Update gemacht.
Leider startet die snips-injection nicht automatisch mit? In der /etc/init.d finde ich auch keinen Dienst für Snips.
Wie startet snips-hotword etc. eigentlich selbst?


systemctl enable snips-injection

dann reboot oder

systemctl start snips-injection
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 06 November 2018, 13:29:31
Mein Fix muss mittlerweile nicht mehr manuell angewendet werden, da Thyraz meinen Pull Request auf Github akzeptiert hat. Einfach die neuste Version von Github laden.

Zitat von: ahlermi am 06 November 2018, 10:59:28
Hast du das angepasst?


sudo apt-get update
sudo apt-get upgrade
sudo apt-get install snips-injection
systemctl enable snips-asr
systemctl enable snips-injection
sudo npm install -g npm@latest
sudo npm i -g snips-sam
sam install assistant
10_SNIPS.pm aktualisieren und FHEM neu starten
aus
MQTT::send_publish($hash->{IODev}, topic => 'hermes/asr/inject', message => $json, qos => 0, retain => "0");
wird
MQTT::send_publish($hash->{IODev}, topic => 'hermes/injection/perform', message => $json, qos => 0, retain => "0");

# Für Custom Hotword
mkdir /usr/share/snips/assistant/custom_hotword
cp -r /usr/src/snips-record-personal-hotword/personal_2018_09_13T18_08_43/ /usr/share/snips/assistant/custom_hotword/

updateModel im Snips Modul ausführen


Bei mir gehts wieder.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 10 November 2018, 22:45:14
Ich habe gerade ein seltsames Phänomen:
Ich würde gerne Snips auf Spanisch betreiben.

Also bau ich mir in der Snips Console einfach die App nach, testweise nur mit SetOnOff.

Nach meinem Verständniss wertet Snips-Fhem ja einfach die Rückgaben aus und vergleicht mit den Geräteattributen.
Die Namen und Räume werden eh eingelesen, d.h. ich musste für den SetOnOff-Intent nur den Slot "Value" neu belegen, so dass für "an" und "aus" eben spanische Synonyme neben dran stehen.
Value bekommt die Snips-Entität "es.Stude.OnOffValue"
Das hab ich gemacht und funktioniert.
Aber die Values Room und Device muss ich ja auf die Entitäten de.fhem.Room/de.fhem.Device mappen, da diese ja automatische gefüllt werden

Jetzt der Fehler: Der Assistent wird immer nur mit der Entität "es.Stude.OnOffValue" erstellt.
Nichteinmal andere, komplett eigene Entitäten werden übertragen.

Ich hab den Assistenten manuell runtergeladen und mir angeschaut, da kommt einfahc nichts weiteres mit.
Funktionierdender Assistent:

assistant_proj_KMx1EpXXXXX.zip\assistant\custom_asr\config.json

{
  "entityNameToFilename": {
    "de.fhem.TimerAction": "e_0.snips",
    "de.fhem.Room": "e_1.snips",
    "de.fhem.OnOffValue": "e_2.snips",
    "de.Laib.Zimmer": "e_4.snips",
    "de.Laib.Gegenst\u00e4nde": "e_5.snips",
    "snips/number": "e_6.snips",
    "de.fhem.MediaChannels": "e_7.snips",
    "snips/duration": "e_8.snips",
    "de.fhem.NumericType": "e_11.snips",
    "de.fhem.MediaControlCommand": "e_9.snips",
    "de.fhem.Unit": "e_10.snips",
    "de.Laib.Listentypen": "e_3.snips",
    "de.fhem.Color": "e_12.snips",
    "de.fhem.OnOffStatus": "e_13.snips",
    "de.fhem.Device": "e_14.snips",
    "de.fhem.ChangePercent": "e_15.snips",
    "de.fhem.Shortcuts": "e_16.snips"
  },


Nicht funktionierender Assistent:

assistant_proj_ZaXXXXXXXX.zip\assistant\custom_asr\config.json


{
  "entityNameToFilename": {
    "es.Stude.OnOffValue": "e_1.snips"
  },


Auf "updateModel" antwortet mir der Raspi:
pi@raspberrypi:/ $ sudo systemctl status snips-injection
● snips-injection.service - Snips Injection
   Loaded: loaded (/lib/systemd/system/snips-injection.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-11-10 22:30:33 CET; 9min ago
Main PID: 9705 (snips-injection)
   CGroup: /system.slice/snips-injection.service
           └─9705 /usr/bin/snips-injection

Nov 10 22:30:33 raspberrypi systemd[1]: Started Snips Injection.
Nov 10 22:30:33 raspberrypi snips-injection[9705]: INFO:snips_injection_hermes: Launch with assistant "/usr/share/snips/assistant" and user dir "/var/lib/snips/"
Nov 10 22:30:42 raspberrypi snips-injection[9705]: ERROR:snips_injection_hermes: injection failed for injection: Injection { root_dir: "/var/lib/snips/injections/20181110T213032760067083/inj_201811
Nov 10 22:30:42 raspberrypi snips-injection[9705]:  -> caused by: Entity de.fhem.Device doesn't exist. The entities available in the assistant are: ["es.Stude.OnOffValue"]


War jemand schon mal so weit drin?

Edit: Heute Morgen nochmal mit einem neuen Account versucht, siehe Screenshot

Edit2: Einen einfachen Assistenten auf Deutsch gebaut; da klappt alles. Der hat dann auch 18MB, wohingegen der Spanische 1,2 MB hat. Zweiterer macht aber ASR ja auch per Google. Trotzdem sollten dann doch Slots auftauchen. Injection ist ja erst der zweite Schritt. Ich könnte die 2-3 Räume und Devices auch in der Console eintragen, aber die Slots werden ja nichtmal übertragen.

Edit3: Slots wild hin-und-her benannt und alle mit werten vorbstückt: "es.FHEM.OnOffValue" wurde übertragen, Testnamen wie "wurstmann" o.ä. nicht.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: weini am 14 November 2018, 08:55:54
Ich finde snips und das Modul von Thyraz einfach super!

Aktuell kämpfe ich damit, meinen Saugroboter über snips zu starten:

Internals:
   DEF        rockrobo.weinberger.local 354f4e71613379614d71766exxxxxxxxxxx
   FD         26
   NAME       hmb_Sammy
   NR         473
   STATE      Cleaning
   TYPE       XiaomiDevice
   mac        LOCALNETWORK
   model      rockrobo.vacuum
   Helper:
     DBLOG:
       batteryPercent:
         log_MySQL:
           TIME       1542181606.46677
           VALUE      98
       batteryState:
         log_MySQL:
           TIME       1542181122.50814
           VALUE      ok
       last_clean_area:
         log_MySQL:
           TIME       1542181606.46677
           VALUE      6.50
       last_clean_time:
         log_MySQL:
           TIME       1542181606.46677
           VALUE      0.07
       last_timestamp:
         log_MySQL:
           TIME       1542181031.56993
           VALUE      1542090760
       state:
         log_MySQL:
           TIME       1542181546.52069
           VALUE      Cleaning
       total_clean_area:
         log_MySQL:
           TIME       1542181030.27104
           VALUE      3184.77
       total_clean_time:
         log_MySQL:
           TIME       1542181030.27104
           VALUE      56.90
       total_cleans:
         log_MySQL:
           TIME       1542181030.27104
           VALUE      39
   OLDREADINGS:
   READINGS:
     2018-11-14 08:45:11   app_bom         A.03.0005
     2018-11-14 08:45:11   app_language    en
     2018-11-14 08:45:11   app_location    de
     2018-11-14 08:45:11   app_logserver   awsde0.fds.api.xiaomi.com
     2018-11-14 08:45:11   app_name        custom_A.03.0005_CE
     2018-11-14 08:45:11   app_timezone    Europe/Berlin
     2018-11-14 08:46:46   batteryPercent  98
     2018-11-14 08:46:46   batteryState    ok
     2018-11-14 08:45:11   carpet_high     500
     2018-11-14 08:45:11   carpet_integral 450
     2018-11-14 08:45:11   carpet_low      400
     2018-11-14 08:45:11   carpet_mode     off
     2018-11-14 08:45:11   carpet_stall_time 10
     2018-11-14 08:46:46   cleaning_mode   balanced
     2018-11-14 08:45:11   consumables_filter 62
     2018-11-14 08:45:11   consumables_main_brush 81
     2018-11-14 08:45:11   consumables_sensors -89
     2018-11-14 08:45:11   consumables_side_brush 71
     2018-11-13 07:01:19   device_firmware 3.3.9_001518
     2018-11-14 08:45:11   device_fw_features 102
     2018-11-13 07:01:19   device_uptime   3.04
     2018-11-14 08:46:46   dnd             off
     2018-11-14 08:45:11   dnd_enabled     on
     2018-11-14 08:45:11   dnd_end         08:00
     2018-11-14 08:45:11   dnd_start       22:00
     2018-11-14 08:46:46   error           none
     2018-11-14 08:46:46   error_code      None
     2018-11-12 10:42:36   event           back_to_dock
     2018-11-14 08:46:46   fan_power       60
     2018-11-14 08:45:11   history_0       2018-11-13 07:32:40: 104.19m² in 1.87h, finished cleaning
     2018-11-14 08:45:11   history_1       2018-11-12 08:39:32: 114.70m² in 2.02h, finished cleaning
     2018-11-14 08:45:11   history_2       2018-11-11 10:05:22: 104.66m² in 1.87h, finished cleaning
     2018-11-14 08:45:11   history_3       2018-11-09 08:36:36: 104.64m² in 1.86h, finished cleaning
     2018-11-14 08:45:11   history_4       2018-11-07 08:32:20: 103.58m² in 1.82h, finished cleaning
     2018-11-14 08:45:11   history_5       2018-11-06 08:30:54: 103.09m² in 1.92h, finished cleaning
     2018-11-14 08:45:11   history_6       2018-11-05 08:29:25: 104.41m² in 1.90h, finished cleaning
     2018-11-14 08:45:11   history_7       2018-11-04 12:07:56: 101.27m² in 1.84h, finished cleaning
     2018-11-14 08:45:11   history_8       2018-11-03 10:33:03: 103.25m² in 1.83h, finished cleaning
     2018-11-14 08:45:11   history_9       2018-10-31 12:53:11: 99.77m² in 1.69h, finished cleaning
     2018-11-14 08:46:46   in_cleaning     yes
     2018-11-14 08:46:46   last_clean_area 6.50
     2018-11-14 08:46:46   last_clean_time 0.07
     2018-11-14 08:45:11   last_timestamp  1542090760
     2018-10-21 11:01:07   log_upload_status -1
     2018-11-14 08:46:46   map_present     yes
     2018-11-14 07:53:04   serial_number   R0018S836xxxxx
     2018-11-14 08:46:46   state           Cleaning
     2018-11-14 07:53:04   timezone        Europe/Berlin
     2018-11-14 08:45:11   total_clean_area 3184.77
     2018-11-14 08:45:11   total_clean_time 56.90
     2018-11-14 08:45:11   total_cleans    39
     2018-11-14 08:45:11   volume          90
     2018-11-14 07:53:04   wifi_auth_fail_count 0
     2018-11-14 07:53:04   wifi_conn_fail_count 0
     2018-11-14 07:53:04   wifi_conn_success_count 1
     2018-11-14 07:53:04   wifi_dhcp_fail_count 0
     2018-11-13 07:01:19   wifi_rssi       -56
     2018-11-14 07:53:04   wifi_state      connecting
   helper:
     ConnectionState connected
     cleanrecord 10
     crypt      AES
     delay      0
     dev        0705
     historydays 10
     id         925c
     ip         rockrobo.weinberger.local
     last_read  1542181606
     packetid   6181
     port       54321
     sequence   1542164337
     timers     0
     token      354f4e71613379614d717xxxxxxxxxxx
     day:
       5244       1542090760
       5245       1542008372
       5246       1541927122
       5247       1541748996
       5248       1541575940
       5249       1541489454
       5250       1541402965
       5251       1541329676
       5252       1541237583
       5253       1540986791
       688        1542090760
     history:
       5244       0
       5245       1
       5246       2
       5247       3
       5248       4
       5249       5
       5250       6
       5251       7
       5252       8
       5253       9
       688        0
     packet:
       1135       get_consumable
       1136       get_clean_summary
       1137       get_dnd_timer
       1138       get_timer
       1139       get_sound_volume
       1140       get_carpet_mode
       1141       get_fw_features
       1142       app_get_locale
       1235       get_consumable
       1236       get_clean_summary
       1237       get_dnd_timer
       1238       get_timer
       1239       get_sound_volume
       1240       get_carpet_mode
       1241       get_fw_features
       1242       app_get_locale
       1353       get_status
       1387       get_status
       1421       get_status
       1422       wifi_stats
       1423       device_info
       1503       get_consumable
       1504       get_clean_summary
       1505       get_dnd_timer
       1506       get_timer
       1507       get_sound_volume
       1508       get_carpet_mode
       1509       get_fw_features
       1510       app_get_locale
       1603       get_consumable
       1604       get_clean_summary
       1605       get_dnd_timer
       1606       get_timer
       1607       get_sound_volume
       1608       get_carpet_mode
       1609       get_fw_features
       1610       app_get_locale
       1611       get_status
       1626       get_consumable
       1645       get_status
       1659       get_consumable
       1679       get_status
       1681       device_info
       1860       get_consumable
       1861       get_clean_summary
       1862       get_dnd_timer
       1863       get_timer
       1864       get_sound_volume
       1865       get_carpet_mode
       1866       get_fw_features
       1867       app_get_locale
       1960       get_consumable
       1961       get_clean_summary
       1962       get_dnd_timer
       1963       get_timer
       1964       get_sound_volume
       1965       get_carpet_mode
       1966       get_fw_features
       1967       app_get_locale
       2          device_info
       2014       get_status
       2048       get_status
       2100       get_status
       2101       wifi_stats
       2102       device_info
       2182       get_consumable
       2183       get_clean_summary
       2184       get_dnd_timer
       2185       get_timer
       2186       get_sound_volume
       2187       get_carpet_mode
       2188       get_fw_features
       2189       app_get_locale
       2194       get_consumable
       2216       get_consumable
       2259       get_status
       2311       get_status
       2345       get_status
       2347       device_info
       2636       get_consumable
       2637       get_clean_summary
       2638       get_dnd_timer
       2639       get_timer
       2640       get_sound_volume
       2641       get_carpet_mode
       2642       get_fw_features
       2643       app_get_locale
       2702       device_info
       2727       get_consumable
       2749       get_consumable
       2771       get_consumable
       2772       get_clean_summary
       2773       get_dnd_timer
       2774       get_timer
       2775       get_sound_volume
       2776       get_carpet_mode
       2777       get_fw_features
       2778       app_get_locale
       2779       get_status
       2813       get_status
       2847       get_status
       2849       device_info
       2938       get_status
       2939       wifi_stats
       2940       device_info
       2941       get_serial_number
       2942       get_timezone
       2943       get_consumable
       2944       get_clean_summary
       2945       get_dnd_timer
       2946       get_timer
       2947       get_sound_volume
       2948       get_carpet_mode
       2949       get_fw_features
       2950       app_get_locale
       4470       get_status
       4529       device_info
       4686       get_consumable
       489        get_consumable
       4892       get_status
       490        get_clean_summary
       4906       get_consumable
       491        get_dnd_timer
       492        get_timer
       493        get_sound_volume
       494        get_carpet_mode
       495        get_fw_features
       496        app_get_locale
       497        get_status
       5104       get_consumable
       5244       get_clean_record0
       5245       get_clean_record1
       5246       get_clean_record2
       5247       get_clean_record3
       5248       get_clean_record4
       5249       get_clean_record5
       5250       get_clean_record6
       5251       get_clean_record7
       5252       get_clean_record8
       5253       get_clean_record9
       5254       get_status
       531        get_status
       5366       get_status
       5443       device_info
       5486       get_status
       5499       get_status
       5500       get_status
       5531       get_status
       5532       get_status
       5533       get_status
       5552       get_status
       5565       get_status
       5567       device_info
       565        get_status
       567        device_info
       570        get_consumable
       592        get_consumable
       6151       get_status
       6154       get_status
       6176       get_status
       688        get_clean_record0
       702        get_consumable
       787        get_status
       846        device_info
Attributes:
   event-min-interval .*:900
   event-on-change-reading .*
   group      Staubsauger
   icon       scene_robo_lawnmower
   intervalData 30
   intervalSettings 120
   room       Snips,Unsorted
   snipsMapping SetOnOff:cmdOn=start,cmdOff=stop
   snipsName  Sammy,Staubsauger
   snipsRoom  Küche
   subType    VacuumCleaner


Offenbar kommt das Modul aber bei der Ansagen "Starte Sammy" mit den MediaControls durcheinander.

[08:50:26] [Asr] was asked to listen on site default
[08:50:29] [Asr] captured text "starte sammy" in 3.0s
[08:50:29] [Asr] was asked to stop listening on site default
[08:50:29] [AudioServer] was asked to play a wav of 93.1 kB with id '9ab63991-c586-4fb0-a79e-ff1fd31940d1' on site default
[08:50:31] [AudioServer] finished playing wav with id '9ab63991-c586-4fb0-a79e-ff1fd31940d1'
[08:50:31] [Nlu] was asked to parse input "starte sammy"
[08:50:31] [Nlu] detected intent Thyraz:MediaControls with probability 0.560 for input "starte sammy"
[08:50:31] [Dialogue] New intent detected Thyraz:MediaControls with probability 0.560
[08:50:31] [Nlu] was asked to parse input "starte standardgerät"
[08:50:31] [Nlu] detected intent Thyraz:MediaControls with probability 0.583 for input "starte standardgerät"
              Slots ->
                 Device -> Standardgerät
[08:50:31] [Dialogue] was ask to end session with id 32820be3-ff64-40dc-a415-5ffb844184ec by saying 'Da ist etwas schief gegangen.'
[08:50:31] [Tts] was asked to say "Da ist etwas schief gegangen."
[08:50:31] [AudioServer] was asked to play a wav of 69.3 kB with id 'e81a066c-9cb2-44fa-a49a-1c34190f2619' on site default
[08:50:34] [AudioServer] finished playing wav with id 'e81a066c-9cb2-44fa-a49a-1c34190f2619'
[08:50:34] [Tts] finished speaking with id '68bed177-2504-4042-ab58-f9cdf22424e0'
[08:50:34] [Dialogue] session with id '32820be3-ff64-40dc-a415-5ffb844184ec' was ended on site default. The session ended as expected
[08:50:34] [Asr] was asked to stop listening on site default
[08:50:34] [Hotword] was asked to toggle itself 'on' on site default


Nach meinem Verständnis kann ich bei SetOnOff keinen Type mitgeben, wie bei SetNumeric. Laut dem GitHub Wiki müsste "Starte" als Kommando für SetOnOff funktionieren. Jetzt bin ich etwas ratlos, wie ich dem Modul das beibringen soll.
"Starte" macht natürlich für beide Intents Sinn, aber mein Staubsauger hat ja nur das SetOnOff Intent zugeordnet.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 14 November 2018, 09:35:15
Wenn Du den Saugroboter nun als MediaDevice definierst?
Play, pause, stop - im Grunde ist ein Sauger doch auch nur ein Radio?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: weini am 15 November 2018, 13:09:08
Zitat von: laberlaib am 14 November 2018, 09:35:15
Wenn Du den Saugroboter nun als MediaDevice definierst?
Play, pause, stop - im Grunde ist ein Sauger doch auch nur ein Radio?
Wow, wie wenn ich ein Brett vor dem Kopf gehabt hätte. Danke dir für den Tipp, läuft super.

@Thyraz: Schau dir das bitte trotzdem nochmal an. Ich glaube, dass "starten" für das SetOnOff Intent nicht mehr funktioniert, seit es das MediaControlsIntent gibt. Das ist zu verschmerzen, aber du könntest die Wiki-Seite auf GitHub entsprechend anpassen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: PapaRiX am 16 November 2018, 11:53:13
Ich hätte auch mal eine Frage...
Ich bin vom Prinzip her von Snips echt überzeugt. Es ist leider im vergleich zur Alexa (noch) nicht so performant (Geschwindigkeit und Treffsicherheit) aber mit etwas Glück kommen wir da langsam hin.
Das FHEM modul ist super hilfreich und funktioniert um Welten besser als das was ich mir vor ein paar Monaten zusammengezimmert hatte! Also erst mal vielen Dank dafür!!

Ich würde jetzt gerne, ähnlich wie es bei alexa möglich ist, Routinen einrichten.
zum Beispiel sage ich alexa abends: "ich geh ins bett" dadurch werden alle Lampen und der Fernseher ausgeschaltet.
mit Snips und dem FHEM Modul wäre sowas möglich indem ich ein Gerät einrichte und z.B. "Nachtroutine" nenne, dann muss ich sagen: "Schalte Nachtroutine ein"
Das finde ich aber nicht so gut und ist eher sperrig.

Eine Idee wäre, einen snips skill zu basteln, der auf meine Routinen hört, dann müsste ich diese aber irgendwie im FHEM erkennen.
Ist das mit dem FHEM snips Modul denkbar, wie würde das gehen?
Meine alte methode war, mittels MQTT device auf das intent zu reagieren indem ich auf MQTT mitlese, die JSON zerlege und nach meinem Intent suche... das ist zwar möglich, aber furchtbar umständlich und ein ziemliches gebastel...

gibts da Ideen Eurerseits zu?
Danke und Grüße!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 16 November 2018, 12:08:37
So richtig verstehe ich die Fragestellung nicht?
Eine eigene Routine kann man per Kurzbefehl(ShortCut) im Snipsdevice selbst festlegen und in der MyUtils entsprechende Befehle durchlaufen lassen.
Schau Dir also mal ShortCuts an und hier im Tread steht auch wie man in Perl die Funktion in den Myutils aufruft.
Zb. Sage ich: "schalte das Tablet ein" der ShortCut in Snips ist tablet ein={ GetHttpFile("192.168.1.120:8765","/?display=on")
Statt dem GetHttpFile kannst Du eine eigene Funktion in der 99_MyUtils.pm aufrufen.

Oder habe ich Deine Frage falsch interpretiert?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: PapaRiX am 16 November 2018, 12:40:03
Ich hab mir die doku zum Snips device nochmal durchgelesen und siehe da.. ich kann mir die Frage eigentlich auch selbst beantworten  ;D

@kud:
Danke für den Tipp und die flotte Antwort! ShortCuts sind mir noch nicht bekannt. Davon finde ich auch nix in der Beschreibung auf Github https://github.com/Thyraz/Snips-Fhem (https://github.com/Thyraz/Snips-Fhem) Ist das dasselbe/ähnlich wie die snipsIntents?

meine Idee (gemäß: https://forum.fhem.de/index.php/topic,89548.msg821359.html#msg821359 (https://forum.fhem.de/index.php/topic,89548.msg821359.html#msg821359) ):

- neue snips skill "Nachtroutine" erstellen was auf "ich gehe ins Bett" und "ich gehe schlafen" reagiert (und sonst nichts macht)
- jetzt müsste ich im Attribut snipsIntents einfch auf "Nachtroutine" reagieren.
leider funktioniert das nicht so wie ich mir das erhofft hatte.
ich dachte ich könne einfach im attr snipsIntents schreiben:
Nachtroutine={fhem"set XYZ off"}
es erfolgt aber keine Aktion auf ein erkanntes Intent "Nachtroutine". Wo ist denn mein Denkfehler (oder ist es ein einfacher syntax Fehler?), es sollte doch egal sein, ob ich etwas in 99_myUtils.pm eintrage oder direkt in das attr schreibe, oder?


Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: PapaRiX am 16 November 2018, 12:55:30
Aha... Shortcuts macht das also   :D
fürs finden später: https://forum.fhem.de/index.php/topic,89548.msg835728/topicseen.html#msg835728 (https://forum.fhem.de/index.php/topic,89548.msg835728/topicseen.html#msg835728)

mein eigentliches Problem ist damit also gelöst, danke!!
allerdings bleibt mein Problem mit dem Syntax bestehen. Muss man bei customintents (attr snipsIntents im device) immer eine Funktion in 99_myutils.pm ausführen oder geht das auch direkt?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 16 November 2018, 13:01:53
Moin,

ShortCuts ist ein Attribut des Snips-Devices. Dort kannst Du dann verschiedene 'Anweisungen' eintragen und die entsprechende Reaktion.Für Dich wäre das z.B.
ich gehe ins Bett={aufruf der 99_myUtils-Routine}
neue Zeile
ich gehe schlafen={aufruf der 99_myUtils-Routine}
In der 99_myUtils dann die Befehle eintragen
Du kannst den Fhem-Befehl natürlich auch direkt eintragen, bei komplexeren Sachen empfiehlt sich aber die Auslagerung.
Dann natürlich das obligatorische set Snips updateModel nicht vergessen.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: smart.builder am 24 November 2018, 22:28:48
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
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: PapaRiX am 25 November 2018, 12:28:15
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 (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...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: smart.builder am 25 November 2018, 19:39:21
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 (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
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag 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?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 29 November 2018, 14:08:41
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?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 29 November 2018, 14:33:12
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.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: MadMax am 01 Dezember 2018, 15:23:24
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
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 02 Dezember 2018, 23:28:14
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 :-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: weini am 07 Dezember 2018, 09:38:10
...bitte aber in der "richtigen" Reihenfolge: das updateModel kommt ganz am Ende, sonst überschreibt es das Assistenten Update wieder.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: weini am 17 Dezember 2018, 22:31:09
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?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: obi am 05 Januar 2019, 15:27:05
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
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 06 Januar 2019, 21:58:28
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?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: c.radi am 04 Februar 2019, 12:49:24
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
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: c.radi am 05 Februar 2019, 13:10:31
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
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: thorsten9 am 06 Februar 2019, 21:07:52
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
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rih am 06 Februar 2019, 22:32:18
Hallo,

ist das Attribut snipsMapping ebenfalls gesetzt?

SetOnOff:cmdOn=on,cmdOff=off
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: c.radi am 23 Februar 2019, 12:11:30
Hallo,

ich versuche das Script etwas zu verstehen. Warum wird der erkannte Text und die daraus abgeleiteten Intents noch mal an den NLU gesendet? Was ist das Ziel dieser zweiten Umsetzung durch den NLU?

Kann dazu jemand was sagen?

Gruß
Christian
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 25 Februar 2019, 13:33:36
Gibt es irgendwelche Probleme (Erfahrungen) mit dem Update (Major Snips Platform Update) von SNIPS vom 25.02.2019?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 25 Februar 2019, 15:03:05
Zitat von: kud am 25 Februar 2019, 13:33:36
Gibt es irgendwelche Probleme (Erfahrungen) mit dem Update (Major Snips Platform Update) von SNIPS vom 25.02.2019?
Das frage ich mich auch :) traue mich noch nicht so recht das Update durch zu führen

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 25 Februar 2019, 15:09:35
Moin,

ich mache heute Abend mal ein Update. Da ich mit Snips zur Zeit eher nur rumspiele (SNIPS und Babble), macht es bei mir keine Probleme wenn es nicht klappt. Ich melde mich nach dem Update. Entweder es klappt oder mit Fehlermeldungen, wenn es nicht klappt.

Bis spaeter.
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 Februar 2019, 15:17:15
Es könnte Knallen durch folgenden Änderung aus dem Changelog:

Zitat
The following API changes may break your applications based on Hermes messages.
hermes API: probability field in hermes/intent/<intentName> messages has been renamed confidence_score.

Wenn das Probleme macht, sollte man in der parseJSON Funktion in 10_SNIPS.pm die Zeile:

$data->{'probability'} = $decoded->{'intent'}{'probability'};


ersetzen durch:

$data->{'probability'} = $decoded->{'intent'}{'confidence_score'};


Wenn das helfen sollte, einfach kurz Bescheid geben dann check ich die Änderung so ein.
Kann es leider gerade nicht testen, da mein SNIPS nicht lauffähig ist, nachdem ich etwas Hardware kurzzeitig für ein anderen Projekt zweckentfremden musste.

Sonst seh ich auf Anhieb nichts, was Probleme bereiten sollte...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 25 Februar 2019, 15:27:03
Zitat von: c.radi am 23 Februar 2019, 12:11:30
Hallo,

ich versuche das Script etwas zu verstehen. Warum wird der erkannte Text und die daraus abgeleiteten Intents noch mal an den NLU gesendet? Was ist das Ziel dieser zweiten Umsetzung durch den NLU?

Kann dazu jemand was sagen?

Gruß
Christian

Hi Christian,

sorry für die späte Rückmeldung.
Freizeit ist gerade leider ein kostbares und seltenes Gut bei mir. ;)

Mittlerweile wäre diese zweite Runde wahrscheinlich nicht mehr nötig.
Bis vor ein paar Snips Versionen konnte man ja noch nicht richtig neue Begriffe für NLU anlernen.

Der Spracherkennung ASR konnte man ja aber schon damals neue Wörter per Inject beibringen.
Ich habe daher im Modell nur jeweils ein Dummywort pro Slottype, und ersetze die Wörter in den gesprochenen Sätzen dann einfach durch diese.

Dadurch ist NLU nicht durch Wörter irrtiert worden, die es nicht kennt.
Dies hat viele Probleme umschifft und die Erkennung dessen, was der User eigentlich erreichen will, stark erhöht.

Nachdem NLU mittleweile die neu injizierten Wörter parallel zu ASR auch angelernt bekommt,
dürfte das aber mittlerweile ne unnötige Extrarunden sein.  ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: c.radi am 25 Februar 2019, 15:34:39
Hallo Thyraz,

vielen Dank für die Antwort. Das hilft mir sehr weiter.

Gruß
Christian
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 25 Februar 2019, 18:11:45
Moin zusammen,

ich habe das Update eben durchgeführt:

sudo apt update
sudo apt upgrade snips-platform-voice

sudo npm install -g npm
sudo npm i snips-sam
sam install assistant


Dann nach dem Tip von Thyraz die Zeile ausgetauscht. Ohne ging es nicht:
sudo nano /opt/fhem/FHEM/10_SNIPS.pm

In FHEM noch ein "set SNIPS updateModel"

und dann getestet. Bei mir scheint alles zu klappen. Ich habe zwei Warnungen im Log, ich glaube die hatte ich aber früher auch schon.

2019.02.25 18:02:57 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 331.
2019.02.25 18:02:57 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 300.


Aus meiner Sicht sollte das Update also klappen.

Gruss
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: weini am 27 Februar 2019, 19:26:41
Danke euch erst mal für die Tipps!
Das Upgrade ist prinzipiell sauber durchgelaufen, die Steuerung über das FHEM Modul funktioniert aber deutlich weniger zuverlässig, als mit der alten Version. Befehle werden häufig nicht verstanden bzw. falsch interpretiert.

Dafür klappt die Hotword-Detection wirklich besser.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 27 Februar 2019, 19:59:53

set SNIPS updateModel


Hast du aber durchgeführt nach jeglichen Snips-seitigen Änderungen?
Das war bisher ja meist das Problem wenn Dinge nicht erkannt wurde...

edit: und die Änderung am Modul hast du auch rein-editiert und das hat bei dir funktioniert?
Wenn ja würde ich das auf Github einchecken...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 27 Februar 2019, 20:04:55
Das Erkennungs Problem scheint snips seitig zu sein.

Die Änderungen wurden bei mir durchgeführt und Update model ausgeführt.

Mein Schlafzimmer Licht wird zb nicht erkannt aber selbst programmierte Befehle wie gute Nacht funktionieren.

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 27 Februar 2019, 20:16:44
Danke für die Rückmeldungen, ist eingecheckt.

Dann hoffen wir mal die schlechtere Erkennung ist nur eine vorübergehende Erscheinung.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: weini am 27 Februar 2019, 20:31:00
Zitat von: Thyraz am 27 Februar 2019, 19:59:53

set SNIPS updateModel


Hast du aber durchgeführt nach jeglichen Snips-seitigen Änderungen?
Das war bisher ja meist das Problem wenn Dinge nicht erkannt wurde...

edit: und die Änderung am Modul hast du auch rein-editiert und das hat bei dir funktioniert?
Wenn ja würde ich das auf Github einchecken...
Ja, habe "updateModel" gemacht und vorher auch die Änderung eingepflegt. SNIPS und FHEM Knoten durchgestartet etc.

Du hast schon recht, erst mal abwarten und beobachten. Ist ja zum Glück nicht mission critical...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 27 Februar 2019, 20:35:11
Moin,

ich muss momentan den Standort (Wohnzimmer, Schlafzimmer) auch dann dazusagen, wenn das Mikro im entsprechenden Raum ist.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 27 Februar 2019, 22:28:16
Ich habe das gleiche Problem wie rischbiter123. Allerdings zusätzlich noch, dass sich nicht der korrekte intent Type erkannt wird. Das ist die Rückmeldung, wenn ich versuche das Licht aus zu machen. Da wird auch klar, warum der Raum dazu gesagt werden muss:
{"Device":"licht","input":"Licht aus","intent":"MediaControls","probability":null,"requestType":"text","sessionId":"fhem.textCommand","siteId":null}

Edit: klar, bei Textcommand kommt natürlich nicht die siteid an. Deshalb "null". Beim Sprachkommando wird die siteid korrekt erkannt. Leider aber halt nicht der Intent

{"Device":"licht","input":"licht aus","intent":"MediaControls","probability":null,"requestType":"voice","sessionId":"c953ab01-3d15-4e50-a6ea-8a298aeffb64","siteId":"default"}
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 27 Februar 2019, 22:47:58
Moin,

ist bei mir ohne Raumangabe auch so. Hatte ich übersehen.

{"Device":"licht","input":"mach das licht an","intent":"MediaControls","probability":null,"requestType":"voice","sessionId":"126f894d-ce87-4abc-a6f5-a53ec8f56759","siteId":"Wohnzimmer"}

Und hier noch mal mit Raumangabe:
{"Device":"licht","Room":"wohnzimmer","Value":"an","input":"schalte das licht im wohnzimmer an","intent":"SetOnOff","probability":null,"requestType":"voice","sessionId":"6b3cf32f-6b91-4b3b-9724-7f880a8f1472","siteId":"Wohnzimmer"}

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 28 Februar 2019, 06:11:45
Bei mir hilft komischerweise auch keine Raumangabe:
{"Device":"licht","Room":"wohnzimmer","input":"Licht im Wohnzimmer an","intent":"MediaControls","probability":null,"requestType":"text","sessionId":"fhem.textCommand","siteId":null}

Gruß Jonas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 28 Februar 2019, 07:46:38
Moin,

versuch mal mit 'schalte'.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 28 Februar 2019, 07:49:08
Alles schon probiert. Leider das gleiche Ergebnis:{"Device":"licht","input":"Schalte das Licht an","intent":"MediaControls","probability":null,"requestType":"text","sessionId":"fhem.textCommand","siteId":null}
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 28 Februar 2019, 07:53:23
Moin,

hast Du auch den Assistenten neu trainiert (Snips-Seite) und dann neu runtergeladen? Hatte ich auch erst vergessen. Danach dann auch noch mal UpdateModel machen. Die scheinen doch mehr geändert zu haben, als es den Anschein hat.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 28 Februar 2019, 07:58:58
Ja das hatte ich direkt vorgestern schon gemacht. Im snips Forum hatte ich aber auch von einem Problem gelesen mit der korrekten Zuordnung der Intents, allerdings direkt in der Online-Konsole. Ich probiere es heute einfach nochmal, vielleicht gab es da am Anfang ja Probleme.. ich melde mich wenn ich mehr weiss
Groß Jonas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 28 Februar 2019, 11:29:00
Also, mein Problem liegt nicht in FHEM selber sondern direkt in der FHEM App. Anscheinend hat (zumindest bei mir) das Update etwas an der NLU geändert. Ich habe in der web console folgendes getestet:

Assitent mit der von Thyraz gepublishten FHEM-App:
{
  "input": "licht anschalten",
  "intent": {
    "intentName": "Thyraz:MediaControls",
    "probability": 0.4757585
  },
  "slots": []
}


zum Test: neuer Assistent mit geforkter FHEM-App, MediaControls intents aus der App entfernt:
{
  "input": "licht anschalten",
  "intent": {
    "intentName": "Thyraz:SetOnOff",
    "probability": 0.6373029
  },
  "slots": [
    {
      "rawValue": "anschalten",
      "value": {
        "kind": "Custom",
        "value": "an"
      },
      "range": {
        "start": 6,
        "end": 16
      },
      "entity": "de.fhem.OnOffValue",
      "slotName": "Value"
    }
  ]
}


Das Kommando "Licht an" das bisher einwandfrei funktionierte funktioniert aber bei beiden Varianten nicht mehr. "Licht aus" ebenso.
Vielleicht kann ja einer der anderen user das auch ausprobieren, prinzipiell müsste das Problem in der web konsole ja bei allen genau so auftreten würde ich vermuten.
Gruß Jonas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 28 Februar 2019, 13:14:56
Er kommt mit "an" / "aus" nicht mehr klar, als ob er die Wörter ignorieren würde.

Sagt man "<Name> an" oder "Schalte <Name> an" kommt bei mir in der Snips Console auch immer der Media Intent.
Sage ich dagegen "<Name> einschalten" oder "<Name> ausschalten" klappt das einwandfrei.

Keine Ahnung woher das kommt.
"an" / "aus" sind nach wie vor in den Slots drin.
Aber auch wenn ich neue Besipielsätze mit den Wörtern hinzufüge erkennt er die nicht.

Riecht stark nach Bug seitens Snips....
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 28 Februar 2019, 14:11:21
Ein anderer user scheint mit einer anderen App ein ähnliches Problem zu haben. Ich habe das Problem mal in dem Thread beschrieben:
https://forum.snips.ai/t/intents-are-not-recognized-correctly-anymore/1856?u=jowe (https://forum.snips.ai/t/intents-are-not-recognized-correctly-anymore/1856?u=jowe)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 28 Februar 2019, 16:39:24
So, hab auch einmal upgedated. Tatsächlich ist die Erkennung nun deutlich schlechter als zuvor; zumindest gefühlt. Auch scheinen die Responses "mutwillig" um den Raum erweitert zu werden.
Mein snipsMapping für das Thermostat im Wohnzimmer:

GetNumeric:currentVal=measured-temp,type=Temperatur
Status:response=Die Temperatur beträgt [WZ.Thermostat_Climate:measured-temp] Grad.

Frage:
"Wie warm ist es im Wohnzimmer?"
Antwort:
"Die Temperatur von Wohnzimmer beträgt 22,4°."

Mein snipsMapping des PH-Werts:

GetNumeric:currentVal=pHSnips,type=P H Wert
Status:response=P H [PH_Sonde:pHSnips].

Frage:
"Wie ist der P H Wert im Teich?"
Antwort:
"P H von Teich beträgt 7,4."

Eigentlich ist doch das Nennen des Rooms total überflüssig und es sollte IMHO auf Grund der extrig angegebenen Responses die Antwort doch auch deutlich kürzer ausfallen, oder?

Zudem ein bringt eine Frage:
"Wie ist der PH-Wert?"
als Antwort
"PH-Wert von beträgt 7,4." hervor...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 01 März 2019, 11:58:53
@tomster:
Die Antwort auf deine Frage nach der Temperatur ist meiner Meinung nach wie bisher. Nur wenn du z.B. nach "Status Thermostat Wohnzimmer" fragst, kommt deine für Status definierte Antwort. Das gleiche gilt für die Frage nach dem PH Wert im Teich. Wenn du nach der Temperatur oder dem PH Wert fragst, wird GetNumeric und nicht Status abgefragt.

Zu dem Problem mit fehlerhaft zugeordneten Intents gibt es leider bisher keine Lösung seitens Snips.ai. So lange behelfe ich mir damit, dass ich in der geforkten FHEM-App die MediaControls, GetOnOff und GetNumeric Intents gelöscht habe. So kann ich jetzt immerhin wieder mit "Licht an" und "Licht aus" meine Beleuchtung schalten. Ich hoffe, dass es seitens Snips bald einen bugfix gibt, so dass die anderen Funktionen wieder genutzt werden können

Allgemein ist es ja hier im Forum ja leider recht ruhig geworden bzgl. Snips.
Ich bin mittlerweile recht überzeugt von der Sprachsteuerung, ich nutze Snips mit dem Respeaker Core Gehäuse und dem Respeaker Array V2. Damit sind die fehlerhaften Hotword Erkennungen jetzt praktisch komplett weg und Snips damit wirklich gut nutzbar.
Was mir aktuell noch wirklich fehlt ist eine Zeitgesteuerte Ausführung, also z.B. "mach in 5min das Licht aus" und verkettung mehrerer Devices gleichzeitig ("Schalte den Fernseher ein und das Radio aus")
@Thyraz: Wie ist denn deine Planung mit bzgl. Snips? Wirst du Snips wieder nutzen und das Modul noch weiterentwickeln oder ist das Thema für dich eher abgeschlossen?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 01 März 2019, 13:21:39
Moin,

Ich hatte Snips mit dem hier vorgeschlagenen Weg gestartet. Mir war dann aber die Konfiguration zu aufwändig. Ich versuche daher Snips mit dem Modul Babble zu verbinden. Ich baue dabei auf eine Lösung von ahlermi auf, die er hier vorgestellt hat. https://forum.fhem.de/index.php/topic,91216.msg856202.html#msg856202

Zitat von: jowe am 01 März 2019, 11:58:53
Was mir aktuell noch wirklich fehlt ist eine Zeitgesteuerte Ausführung, also z.B. "mach in 5min das Licht aus" und verkettung mehrerer Devices gleichzeitig ("Schalte den Fernseher ein und das Radio aus")

Diese Anforderung lässt sich mit Babble umsetzen.

Da ich kein Informatiker sondern Maschinenbauer mit ungesunden Halbwissen bin, sind die Schritte in Richtung Lösung recht klein. Aber vielleicht hat ja der ein oder andere eine Idee dazu, dann würde ich einen neuen Thread starten.



Gruss
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 01 März 2019, 13:55:38
Hi Enno,

das hatte ich mir auch schon überlegt. Optimal wäre natürlich, wenn es ein einheitliches Sprachverarbeitungsmodul in FHEM gäbe, das mit verschiedensten Sprachassistenten arbeitet. So könnte man Mycroft, Snips und (wer es denn will) Alexa, Google Home etc. mischen und hätte immer die gleiche Funktionsweise.
Was mich aktuell aber davon abhält ist die inject Funktion von Snips. Das funktioniert ja ausschließlich, wenn man Snips über das Modul mit den Intents "füttert". Und ich hoffe noch darauf, dass man zukünftig Informationen aus FHEM zurück an Snips geben kann: Playlisten mit Interpreten und Songtiteln aus Spotify, Namen der Kontakte aus der Fritzbox, Termine aus dem Kalender etc. In FHEM laufen halt eigentlich so ziemlich alle wichtigen Informationen zusammen und das wäre eine ziemlich gute Basis für einen guten Sprachassistenten.
Leider stehe ich aber vor dem gleichen Problem wie du: Bin auch Maschinenbauer mit (wenn überhaupt) rudimentären Programmierkenntnissen. Und auch noch verdammt wenig Zeit aktuell.
Habe es bisher noch nichtmal hinbekommen, Thyraz' Modul nachzuvollziehen und eine einfache Timer-Funktion einzubauen. Die Intents hat Thyraz ja sogar schon in der App drin, "nur" die Verarbeitung im FHEM Modul ist halt nicht umgesetzt...

Deshalb meine Frage an Thyraz. Wenn ich weiß dass das Modul nicht weiterentwickelt wird, mache ich mir auch Gedanken über eine Alternativlösung. Sei es mittels Hass.io, babble oder einem der anderen möglichen FHEM Module. Wenn aber Thyraz selber Snips nutzt und das Modul evtl. zukünftig um weitere Funktionen erweitern möchte würde ich weiter bei dieser Variante bleiben.
Ich bin etwas überrascht, dass es nach der anfänglichen Euphorie hier mittlerweile so ruhig geworden ist. Ich bin nämlich mittlerweile echt überzeugt von der Lösung mit Snips (naja jedenfalls bis zu dem "Breaking update" diese Woche :-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 01 März 2019, 16:27:59
Zitat von: jowe am 01 März 2019, 13:55:38
Mycroft, Snips und (wer es denn will) Alexa, Google Home etc. mischen und hätte immer die gleiche Funktionsweise.

Ich habe mir für das Wochenende vorgenommen in Mycroft reinzuschauen. Ich nutze Babble schon recht intensiv mit "SIGNAL" (https://forum.fhem.de/index.php/topic,84996.0.html). Wenn ich jetzt noch eine Möglichkeit finde gesprochenen Text in FHEM zu bekommen, dann brauche ich in Babble nicht mehr viel anpassen. Woher der Text kommt ist dem Modul eigentlich ja egal....

Gruss
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 01 März 2019, 19:12:14
Kann leider zur Zukunft des Moduls gerade auch wenig sagen.

Bin im letzten halben Jahr beruflich um einiges stärker eingespannt und da zeichnet sich auch kein wirkliches Ende ab zur Zeit...
Zusätzlich kommt bei uns im Sommer nochmal Nachwuchs, was sicher auch nicht mehr Zeit für FHEM bedeutet. ;)

Das Hauptproblem ist zudem: Wir nutzen die Sprachsteuerung hier weit weniger als ich vermutet hätte.
Außer mal kurz Radio von der Küche aus an, oder Sender umschalten nutze ich höchstens noch mal ein vorzeitiges Schließen (der eigentlich automatisierten) der Rollläden vom Sofa aus.

Dadurch hat Snips auch nicht ganz den Stellenwert bei meiner Freizeitgestaltung den es sonst evtl. haben könnte.
Das Modul ist deswegen nicht tot, aber ich fürchte, dass ich es in naher Zukunft auch nicht um viele weitere Intents erweitern kann.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 01 März 2019, 19:54:21
Moin,

bis auf die von Snips selber verursachten Probleme nach dem Update, funktioniert mMn. das Modul auch. Bei mir werden zumindest alle Befehle ausgeführt, solange ich den Raum dazunenne. Ich kann meine Heizung steuern (stell die Heizung im Wohnzimmer auf 22 Grad), mein Licht schalten (schalte das Licht im Wohnzimmer an/aus) und die Shortcuts funktionieren auch. Und die gewünschten Mehrfachbefehle kann man doch über die Shortcuts ganz einfach selber programmieren. Man muss halt den Kompromiss machen. Entweder möchte ich eine lokale Sprachsteuerung, dann muß ich eben ein bißchen mehr programmieren. Oder ich bekomme fast alles fertig vorgesetzt und habe es Cloudbasiert. Das ist zumindest meine Meinung.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 01 März 2019, 21:15:33
Hi Thyraz, danke für die klare Antwort. Ist ja vollkommen verständlich, dass du deine wenige Zeit nicht in ein Modul steckst, das du selbst kaum nutzt.
Ich denke ich muss dann mal in nächster Zeit überlegen, wie ich snips weiter nutzen möchte.
Mal schauen wie und wann der aktuelle Bug seitens snips behoben wird. Denn für mich ist Snips mit dem workaround aktuell zwar teilweise nutzbar, weil ich ja weiß was genau ich sagen muss. Beim Rest der Familie hat die Akzeptanz aber jetzt rapide abgenommen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 01 März 2019, 21:23:35
Zitat von: jowe am 01 März 2019, 21:15:33
Denn für mich ist Snips mit dem workaround aktuell zwar teilweise nutzbar, weil ich ja weiß was genau ich sagen muss. Beim Rest der Familie hat die Akzeptanz aber jetzt rapide abgenommen

Das ist der Grund warum ich bei Babble gelandet bin. Dort kann man es wunderbar einstellen, dass man nicht genau eine Formulierung treffen muss. Das klappt wie gesagt mit geschrieben Nachrichten über Telegram oder Signal schon ganz gut.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 02 März 2019, 09:32:10
Also ich würde es wirklich vermissen.
Zum einen ist mein Internet letzte Woche ausgefallen. Da war es mit Alexa nicht mehr möglich das Licht auszuschalten ;-(
Snips hat das klaglos gemacht. Und auch die Statusinfos , welche ich mit Alexa nicht ansagen kann (zumindest nicht mit der Smarthomelösung) sind ein echter Zugewinn. Schade nur, dass ich die bestehende Version nicht auf meinen Garten-Pi übertragen kann.( oder geht das irgendwie?)
Ich werde erstmal nicht updaten und hoffe das Thyraz nach dem Bugfix seitens SNIPS.AI ab und zu nach dem rechten schaut.

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 04 März 2019, 17:14:55
Hallo!
Ich habe hier gespannt mitgelesen und wollte nun auch mein FHEM per Sprachsteuerung bedienen. Leider klappt schon eine der Voraussetzungen nicht:
Auf meinem Snips-Raspi habe ich
sudo apt-get install -y snips-asr-injection
eingegeben und statt der erfoglreichen Installation begrüßt mich ein
Die folgenden Pakete haben unerfüllte Abhängigkeiten:
snips-asr-injection : Hängt ab von: snips-platform-common (<0.59.3) aber 0.61.1 soll installiert werden
E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.

Und nun? Was kann ich tun? Der Raspi ist ein Maker-Kit und wurde mit vorinstalliertem Raspbian Stretch geliefert.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 04 März 2019, 17:25:01
Zitat von: der_da am 04 März 2019, 17:14:55
Hallo!
Ich habe hier gespannt mitgelesen und wollte nun auch mein FHEM per Sprachsteuerung bedienen. Leider klappt schon eine der Voraussetzungen nicht:
Auf meinem Snips-Raspi habe ich
sudo apt-get install -y snips-asr-injection
eingegeben und statt der erfoglreichen Installation begrüßt mich ein
Die folgenden Pakete haben unerfüllte Abhängigkeiten:
snips-asr-injection : Hängt ab von: snips-platform-common (<0.59.3) aber 0.61.1 soll installiert werden
E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.

Und nun? Was kann ich tun? Der Raspi ist ein Maker-Kit und wurde mit vorinstalliertem Raspbian Stretch geliefert.
Der paketname wurde geändert und heißt jetzt snips-injection ;)

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 05 März 2019, 10:09:52
Bei mir scheint die Injection nicht zu funktionieren.
Wenn ich mit sam watch mitlaufen lasse, was sprachlich erkannt wird, fehlen genau die Wörter, die den in FHEM definierten Namen der Räume und Geräte entsprechen. (Erkannt wird z.B. "Schalte unknown in unknown ein") Und ja, ich habe set Snips updateModel nach der Installation des Assistenten ausgeführt - auch mehrfach.
Möglicherweise liegt das Problem auch schon tiefer.
Ich habe neben FHEM noch
Datum & Uhrzeit,
Rechner und
Wetter-Snips-0.61.1 in meinem Assistenten.
Ich kann erfolgreich nach dem aktuellen Datum fragen und auch Rechenaufgaben lösen lassen. Bei der Frage nach dem Wetter kommt die Sprachantwort, dass entweder der Ort nicht existiert oder der API-Schlüssel falsch ist. Hier ist das Problem, dass ich bei der Installation gar nicht nach dem API-Schlüssel von OpenWeatherMap gefragt werde. Stattdessen wird bei der Installation mehrfach ein Fehler geworfen, dass ich PIP in Version 18.1 verwende, es aber schon 19.0.3 gibt und ich mit pip install --upgrade pip das Problem beheben sollte. Das behebt aber das Problem nicht. Die Fehlermeldung kommt exakt genauso wieder, obwohl PIP in Version 19.0.3 installiert ist.
Was mich auch wundert, Apps, die ich testweise mal drin hatte, inzwischen aber wieder entfernt habe, tauchen beim Installieren des Assistenten immer noch auf. Wie bekommt man die wieder los?
Und vor allem, wie bekomme ich die Injection der FHEM-Objekte erfolgreich hin?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 05 März 2019, 11:06:54
Hallo der_da,

starte bitte mal vor dem inject sam watch und schaue was passiert.
Nach dem Start von inject müsste die Meldung kommen, dass X Wörter injiziert werden. Nach einigen sekunden bis Minuten (je nachdem auf welcher Plattform Snips läuft und wie viele Wörter du injizierst) muss dann die Meldung kommen, dass die NLU das model reloaded (genauen Wortlaut weiß ich nicht auswendig).
Ich hatte auch mal das Problem dass das inject nicht funktioniert hat. Bei mir kam dann nicht die Meldung dass das model reloaded wird und hat mich so auf die Fährte gebracht.

Falls die reload-Meldung nicht kommt, installier das inject nochmal neu.

Zu den alten Apps: die musst du manuell aus dem Skills-Verzeichnis löschen

Gruß Jonas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 05 März 2019, 11:22:57
wenn du updateModel machts, müsste dazu auch was im Log auftauchen.
Da kannst Du auch mal schauen, so dass Du sicher sein kannst, dass FHEM auch was liefert.
Ob dafür ein bestimmtes Verboselevel notwendig ist, kann ich grad nicht sagen, ich sitz nicht daheim am System.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 05 März 2019, 12:22:03
Danke jowe und laberlaib.

updateModel erzeugt im Log erfolgreich sowas:
Injecting data to ASR: {"operations":[["add",{"de.fhem.Device":["Tür","Schrank","Lampe ...
FHEM tut also schon mal, was es soll.
Scheint also am Snips-Gerät zu liegen, an das ich erst heute abend ran komme.
Ich melde mich dann noch mal.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 05 März 2019, 18:10:41
So, ich habe nochmals
sudo apt-get install snips-injection
eingegeben.
Ergebnis:
snips-injection ist schon die neueste Version (0.61.1).
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.

Danach sam watch ausgeführt und erwartet, dass etwas auftaucht, wenn ich nun in FHEM updateModel auslöse.
Da passiert aber nichts.
Habe auch schon noch mal sicherheitshalber sudo systemctl start snips-injection ausgeführt. Und danach noch mal sam watch und updateModel. Keine Änderung.

Habe nun noch mal alle Unterordner bei skills gelöscht und den Assistenten noch mal neu installiert. Zumindest ist nun die Fehlermeldung hinsichtlich pip weg und es werden nur noch die Apps installiert, die ich tatsächlich ausgewählt habe. Auch die Wetter-App fragt nun brav nach dem API-Schlüssel und kann anschließend Fragen zum Wetter korrekt beantworten.

Nur FHEM zickt noch rum.
So sieht es hier aus:
Internals:
   DEF        192.168.178.223:1883
   DeviceName 192.168.178.223:1883
   FD         4
   NAME       snipsMQTT
   NOTIFYDEV  global
   NR         683
   NTFY_ORDER 50-snipsMQTT
   PARTIAL   
   STATE      opened
   TYPE       MQTT
   buf       
   msgid      1
   ping_received 1
   timeout    60
   READINGS:
     2019-03-05 19:58:08   connection      active
     2019-03-05 19:26:43   state           opened
   messages:
Attributes:
   room       Unsorted


Internals:
   DEF        SnipsMQTT Wohnzimmer
   IODevName  SnipsMQTT
   MODULE_VERSION 0.2
   NAME       Snips
   NOTIFYDEV  SnipsMQTT Wohnzimmer
   NR         684
   STATE      ???
   TYPE       SNIPS
   helper:
     defaultRoom Wohnzimmer
   subscribe:
     hermes/intent/+
     hermes/nlu/intentParsed
     hermes/hotword/+/detected
     hermes/hotword/toggleOn
   subscribeExpr:
     ^hermes\/intent\/([^/]+)$
     ^hermes\/nlu\/intentParsed$
     ^hermes\/hotword\/([^/]+)\/detected$
     ^hermes\/hotword\/toggleOn$
   subscribeQos:
     hermes/hotword/+/detected 0
     hermes/hotword/toggleOn 0
     hermes/intent/+ 0
     hermes/nlu/intentParsed 0
Attributes:
   IODev      SnipsMQTT
   room       Snips
   shortcuts  Welcher Tag ist heute={return "es ist " . qx(date +%A) . " der " . qx(date +%D);}
Wie wird das Wetter morgen={WetterMorgen(1);}
Wie wird das Wetter übermorgen={WetterMorgen(2);}
Wie wird das Wetter in 3 Tagen={WetterMorgen(3);}
Wie wird das Wetter in 4 Tagen={WetterMorgen(4);}
Wie wird das Wetter in 5 Tagen={WetterMorgen(5);}
Wie wird das Wetter in 6 Tagen={WetterMorgen(6);}
   verbose    5


Wie weiter oben geschrieben findet man im FHEM-Log, das modelUpdate funktioniert. Aber offenbar kommt es bei snips nicht an (sam watch zeigt nichts dergleichen an).
Muss eigentlich bei sam status auch der service snips-injection mit aufgeführt werden? Bei mir kommt nur:
Service status:
snips-analytics .............. 0.61.1 (not running)
snips-asr .................... 0.61.1 (running)
snips-audio-server ........... 0.61.1 (running)
snips-dialogue ............... 0.61.1 (running)
snips-hotword ................ 0.61.1 (running)
snips-nlu .................... 0.61.1 (running)
snips-skill-server ........... 0.61.1 (running)
snips-tts .................... 0.61.1 (running)


Im mosquitto.log finde ich noch, dass FHEM sich erfolgreich mit dem MQTT-Service verbunden hat:
1551819459: New connection from 192.168.178.103 on port 1883.
1551819459: New client connected from 192.168.178.103 as Net::MQTT::Message[16575] (c1, k60).


Ein systemctl status 'snips-*'
ergibt (unter anderem):
● snips-injection.service - Snips Injection
   Loaded: loaded (/lib/systemd/system/snips-injection.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-03-05 21:56:51 CET; 17min ago
Main PID: 486 (snips-injection)
   CGroup: /system.slice/snips-injection.service
           └─486 /usr/bin/snips-injection

Mär 05 21:56:51 snips-base systemd[1]: Started Snips Injection.
Mär 05 21:56:54 snips-base snips-injection[486]: INFO:snips_injection_hermes: Launch with assistant "/usr/share/snips/assistant" and


Sieht für mich irgendwie alles ganz gut aus. Wie kann ich nun herausfinden, warum die Injection nicht bei sam watch auftaucht und was zu tun ist?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 05 März 2019, 23:12:42
sam status führt bei mir injection auch nicht auf, scheint also normal zu sein. Ich bin jetzt auch überfragt. Ist nochmal neu aufsetzen eine Option? Sonst fällt mir leider auch gerade nichts ein
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 06 März 2019, 07:03:29
Mal ohne sam watch direkt auf dem perform-Kanal lauschen?
mosquitto_sub -v -h 127.0.0.1 -p 1883 -t hermes/injection/perform/#'
(Befehl gegenbenenfalls anpassen.)
https://docs.snips.ai/articles/advanced/dynamic-vocabulary
https://mosquitto.org/man/mosquitto_sub-1.html

Dann wäre ja die Kette "FHEM macht JSON" => "FHEM schickt an mosquitto" schon mal irgendwie geprüft?

Deine sam status und systemctl... Ausgaben sehen bei mir gleich aus, nur halt noch mit Version 0.60.10 und ohne skill-server. Den brauche ich derzeit nicht und der hat mir damals auch immer Probleme gemacht. Vielleicht mal stoppen für den injection Vorgang (das wäre aber eher so die Vodoovariante einer Lösung).
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 06 März 2019, 07:43:53
Nachdem ich mit
sudo apt install mosquitto-clients
selbige auf dem Snips-Raspi installiert habe, habe ich dann
mosquitto_sub -v -h 127.0.0.1 -p 1883 -t hermes/injection/perform/#
(also ohne das Apostroph von deinem String am Ende)
aufgerufen.
Das sieht dann so aus, als ob auf etwas gewartet wird, aber weder bei updateModel noch bei erkannten Spracheingaben und -Antworten kommt dort etwas?  :-\
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 06 März 2019, 11:07:27
Moin,

könntest Du das mal prüfen?

Wenn das Probleme macht, sollte man in der parseJSON Funktion in 10_SNIPS.pm die Zeile:
Code: [Auswählen]

$data->{'probability'} = $decoded->{'intent'}{'probability'};
ersetzen durch:
Code: [Auswählen]
$data->{'probability'} = $decoded->{'intent'}{'confidence_score'};

Ist in Teile 738.
Ich bin nicht sicher, ob Tyraz das schon eingepflegt hat.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 06 März 2019, 12:26:51
Zitat von: rischbiter123 am 06 März 2019, 11:07:27
Ist in Teile 738.
Ich bin nicht sicher, ob Tyraz das schon eingepflegt hat.
Danke!
Habe gerade mal geguckt, aber das ist in meiner 10_SNIPS.pm bereits so drin.  ???
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 06 März 2019, 12:47:18
Moin,

mir ist gerade bei Deiner Auflistung aufgefallen, daß dort keine FUUID angezeigt wird. Hast Du die rausgelöscht? Wenn nicht, wann hast Du das letzte Fhem-Update gemacht?

OT
Wenn Du bei der Wetteransage den von mir geschriebenen Codeschnipsel nutzt, da haben sich sowohl die Aufrufparameter als auch die Routine geändert.
/OT

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 06 März 2019, 12:48:01
@der_da:
fehlt evtl. auch noch sudo apt-get install mosquitto?

Zur Info: Der Bug mit den fehlerhaft zugeordneten Intents soll wohl behoben worden sein. Retrain assistant und dann neue Installation des Assistenten sollte wohl den funktionierenden Zustand wiederherstellen. Ich konnte es noch nicht ausprobieren, so ist aber die Rückmeldung im Snips Forum.

Gruß Jonas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 06 März 2019, 13:23:27
Hallo Andreas.
Zitat von: rischbiter123 am 06 März 2019, 12:47:18
mir ist gerade bei Deiner Auflistung aufgefallen, daß dort keine FUUID angezeigt wird. Hast Du die rausgelöscht? Wenn nicht, wann hast Du das letzte Fhem-Update gemacht?
Wann ich es das vorletzte Mal geupdated habe, weiß ich nicht (mehr). War wohl schon länger her. Das letzte Mal war gerade eben.  ;D
Bin nur nicht zu Hause und kann nur an FHEM, aber nicht an snips ran. Ich kann mir aber nicht so recht vorstellen, dass ein FHEM-Update hier hilft. Laut Log-Datei erzeugt FHEM ja irgendwas. Nur auf dem snips-Raspi kommt nichts an.
Zitat
OT
Wenn Du bei der Wetteransage den von mir geschriebenen Codeschnipsel nutzt, da haben sich sowohl die Aufrufparameter als auch die Routine geändert.
/OT
Weiß gerade nicht, von welchem Codeschnipsel du redest  :D

Hallo Jonas.
Zitat von: jowe am 06 März 2019, 12:48:01
fehlt evtl. auch noch sudo apt-get install mosquitto?
Ich dachte, Snips bringt einen MQTT-Server bereits mit und kommuniziert auch intern damit? :o
Ich habe ja schließlich auch Log-Dateien von mosquitto gefunden, in denen die IP-Adresse meines FHEM aufgeführt wurde.

Sollte ein set Snips textCommand Schalte das Licht im Flur ein, nicht das gleiche bewirken, wie wenn ich das in Sprachform an Snips gebe?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 06 März 2019, 14:04:54
Moin,

Einmal zum Verständnis:
Du hast einen Rechner, auf dem läuft Fhem
Ein zweiter Rechner, auf dem Snips läuft
Auf einem von beiden läuft Mosquitto

Snips hat keinen Broker an Bord, sondern greift auf einen zusätzlich installierten zu. In Deinen Shortcuts sind Aufrufe zur Wetteransage
Wie wird das Wetter übermorgen={WetterMorgen(2);}. Die Funktion muss in den 99_MyUtils stehen, sonst nützen sie nichts.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 06 März 2019, 14:53:18
So sollte es aussehen bei einem Update und einem updateModel aus fhem

Ich hatte Probleme mit dem python update, habe das so gelöst


cd /var/lib/snips/skills/snips-Network-Info/venv/bin
pip install --upgrade pip


Heute morgen das Snips update:

sam update
#wegen Fehlern
apt-get dist-upgrade
sam update


snips_update_assistant aus Screenshot

sam install assistant
mkdir /usr/share/snips/assistant/custom_injections
mkdir /usr/share/snips/assistant/custom_hotword
cp -r /usr/src/snips-record-personal-hotword/personal_2018_09_13T18_08_43/ /usr/share/snips/assistant/custom_hotword/
systemctl restart snips-injection
sam watch


Gruß Michael
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 06 März 2019, 15:31:29
Zitat von: rischbiter123 am 06 März 2019, 14:04:54
Du hast einen Rechner, auf dem läuft Fhem
Ein zweiter Rechner, auf dem Snips läuft
Auf einem von beiden läuft Mosquitto
Snips hat keinen Broker an Bord, sondern greift auf einen zusätzlich installierten zu.
Ja.
Ja.
Dann ist das vermutlich das Problem. Aktiv installiert habe ich keinen. Dann hatte ich da wohl ein Verständnisproblem. Werde dann heute abend mal noch ein sudo apt install mosquitto auf dem Snips-Raspi machen. Ist da noch mehr zu konfigurieren und wenn ja, gibts da eine Anleitung irgendwo?

Und woher kommt dann die mosquitto.log-Datei, in der ich folgendes gefunden habe:
1551819459: New connection from 192.168.178.103 on port 1883.
1551819459: New client connected from 192.168.178.103 as Net::MQTT::Message[16575] (c1, k60).

Die Logdatei liegt auf dem snips-Raspi und die IP-Adresse ist die meines FHEM-Rechners.  :o

Zitat
In Deinen Shortcuts sind Aufrufe zur Wetteransage
Wie wird das Wetter übermorgen={WetterMorgen(2);}. Die Funktion muss in den 99_MyUtils stehen, sonst nützen sie nichts.
Ja, meine 99_MyUtils enthält auch den Code, den du in deinem Posting geschrieben hattest. Jetzt weiß ich auch, welchen Codeschnipsel du meinst. Der geht nicht mehr?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 06 März 2019, 15:43:35
Moin,

Weitere Konfiguration:
https://docs.snips.ai/articles/platform/satellites
Dort die Snips-toml anpassen.

Der Code wurde geändert, da die Monatsangabe nicht mehr funktionierte. Auch die Aufrufparameter (Die Zahl in Klammern).

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 06 März 2019, 21:08:16
@der_da:
Mir ist wieder eingefallen, dass ich das gleiche Problem hatte und es nicht lösen konnte!
Allerdings mit einem Spanischen Assistenten und ich dachte damals daran, dass das vllt mir der Google-Spracherkennung zusammenhängen könnte.
Hier hatte ich das mal angefragt:
https://forum.fhem.de/index.php/topic,89548.msg856569.html#msg856569
Da waren dann einfach keine Entities zum bestücken im Assistenten.

Ich hatte glaube ich alles gemacht, was es gibt, aber der der fork wollte nicht funktionieren.
Ich hab nun sogar zwei Accounts bei snips.

D.h.: lad mal den Assi manuel runter und schau ihn Dir an. Guck ob er leer ist, dann ists doof.
sudo systemctl status snips-injection
Gibt Fehlermeldungen von snips-injection aus, guck da mal rein.
Bei mir wars-> caused by: Entity de.fhem.Device doesn't exist. The entities available in the assistant are: ["es.Stude.OnOffValue"]

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 06 März 2019, 22:05:18
Die Snips "FHEM" App von Thyraz wird er ja hoffentlich im Assistenten drin haben, da sollten die Slots drin sein.

https://console.snips.ai/store/de/skill_dAeD3Y37le97

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 06 März 2019, 22:28:43
Ich hatte die APP auch drin, aber die entities kamen einfach nicht mit.
Umbenannt hatte ich nur das OnOff ding, da das ja fixe Werte sind und ich die mit spanischen Worten überschreiben musste.
Die anderen sind auf de.Fhem.XYZ geblieben.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 07 März 2019, 08:52:22
Ich habe auch das Problem gehabt das ich einiges umgebaut habe, ich habe noch eine APP eingebunden die alle Kommandos Zeitabhängig ausführen kann.
Ich habe dazu alle Intents umbenannt in Bsp. SetNumericTime oder SetNumericCustom.
Zusätzlich habe ich aber die Standard App von Thyraz unverändert im Assistenten gelassen.
Da ich im FHEM ja eh nur das Kommando auslese und an talk2fhem weiterleite ist das bei mir kein Problem.

Du müsstest das über ein Custom Intent lösen können wo du dann einfach sowas auslöst:

attr Snips snipsIntents SetOnOffCustom=SetOnOffCustom(value,room,device)



sub SetOnOffCustom($$$) {
# Übergebene Parameter in Variablen speichern
my ($value, $room, $device) = @_;

        Log 3, "Gerät:" . $device . " Zustand:" . $value . " Raum:" . $room;

# Standardantwort festlegen
my $response = "OK";
        fhem("set snipsName=.*" . $device . ".*:FILTER=snipsRoom=.*" . $room . ".* " . $value);
# Antwort an das Snipsmodul übergeben
return $response;
}


Gruß Michael
Titel: Verbindung FHEM - Snips "klemmt"
Beitrag von: der_da am 07 März 2019, 09:47:48
Zitat von: laberlaib am 06 März 2019, 21:08:16
D.h.: lad mal den Assi manuel runter und schau ihn Dir an. Guck ob er leer ist, dann ists doof.
Ich sehe ja in sam watch, dass das Modul von Thyraz aktiv ist. Es versucht ja, meine Sprache zu verstehen und antwortet halt damit, dass es die ganzen Geräte und Räume nicht kennt. Insofern läuft die FHEM-App.
[Nlu] detected intent Thyraz:GetNumeric with confidence score 0.209 for input "wie ist die temperatur auf der tara"
              Slots ->
                 Type -> Temperatur (confidence: 1.000)
              [Dialogue] New intent detected Thyraz:GetNumeric with confidence 0.209
              Slots ->
                 Type -> Temperatur (confidence: 1.000)

Zitat
sudo systemctl status snips-injection
Gibt Fehlermeldungen von snips-injection aus, guck da mal rein.
snips-injection ist aktiv und gibt keine Fehler aus.

In den Readings vom SnipsMQTT-Device von FHEM steht auch "connection = active" und "status = opened"
In der mosquitto.log auf dem Snips-Rechner ist ein Eintrag:
New connection from 192.168.178.103 on port 1883.
New client connected from 192.168.178.103 as Net::MQTT::Message[16575] (c1, k60).

Das ist die IP-Adresse meines FHEM-Rechners. Da kommt also eine Verbindung zustande, was ja auch aus der FHEM-Meldung "connection = active" zu erwarten war. Mehr kommt da aber von dieser Adresse nie an. Andere Einträge kommen von lokalen Verbindungen, also dann, wenn ich andere Apps (Datum&Zeit, Rechner, Wetter) anspreche.
(Wie von mir erwartet war übrigens eine Installation von Mosquitto auf dem Snips-Rechner nicht nötig, da schon vorhanden.)

Ein set Snips updateModel erzeugt in der FHEM.log folgenden Eintrag
Injecting data to ASR: {"operations":[["add",{"de.fhem.Device":["Terrassenlicht","Terrassentür","Thermometer","Lampe"]}],["add",{"de.fhem.Room":["Schlafzimmer","Wohnzimmer","Draußen","Terrasse","Garten","Bad"]}],["add",{"de.fhem.NumericType":["Luftfeuchtigkeit","Temperatur","Helligkeit"]}],["add",{"de.fhem.Shortcuts":["Welcher Tag ist heute"]}]]}
Ich hätte erwartet, dass irgendwas davon dann in der mosquitto.log auftaucht. Tut es aber nicht.
Wenn ich set Snips say siteId="default" text="Dies ist ein Test" auslöse, passiert auch nichts. Das sollte ja aus meinem Verständnis heraus unabhängig von snips-injection funktionieren und Snips zum sprechen von "Dies ist ein Test" bewegen. Tut es aber nicht.
In  der FHEM.log steht dann sowas (Zeitstempel aus Log entfernt):
Opening snipsMQTT device snips-base.local:1883
snipsMQTT device opened
MQTT snipsMQTT message sent: PingReq/at-most-once
SW: c000
MQTT snipsMQTT message received: PingResp/at-most-once
set say - value: Test
set updateModel - value:
Injecting data to ASR: {"operations":[["add",{"de.fhem.Device":["Terrassenlicht","Terrassentür","Thermometer","Lampe"]}],["add",{"de.fhem.Room":["Schlafzimmer","Wohnzimmer","Draußen","Terrasse","Garten","Bad"]}],["add",{"de.fhem.NumericType":["Luftfeuchtigkeit","Temperatur","Helligkeit"]}],["add",{"de.fhem.Shortcuts":["Welcher Tag ist heute"]}]]}
MQTT snipsMQTT message sent: PingReq/at-most-once
SW: c000
MQTT snipsMQTT message received: PingResp/at-most-once
MQTT snipsMQTT message sent: PingReq/at-most-once
SW: c000
MQTT snipsMQTT message received: PingResp/at-most-once
MQTT snipsMQTT message sent: PingReq/at-most-once
SW: c000
MQTT snipsMQTT message received: PingResp/at-most-once
MQTT snipsMQTT message sent: PingReq/at-most-once
SW: c000
MQTT snipsMQTT message received: PingResp/at-most-once
set say - value: siteId="default" text="Dies ist ein Test"

Auch hier sieht man aus meiner Sicht sehr deutlich, dass die Verbindung im Prinzip da ist, da regelmäßig ein Ping erfolgreich beantwortet wird.  ::)
Ich habe dann noch in der /etc/snips.toml ein paar Anpassungen vorgenommen, wie in
https://docs.snips.ai/articles/platform/satellites
beschrieben. Allerdings hat das keine Änderungen gebracht. Zumal es mich wundert, dass Tyraz auf seinem Github nichts davon erwähnt, dass da Anpassungen notwendig wären?
So langsam sehe ich es kommen, dass ich den Snips-Rechner noch mal komplett neu aufsetze, da ich irgendwie das Gefühl habe, dass wir hier nicht zu einer Lösung kommen.  :-\
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 07 März 2019, 10:57:13
was macht ein


set Snips say Test


??
Titel: der_da
Beitrag von: der_da am 07 März 2019, 11:11:30
Zitat von: ahlermi am 07 März 2019, 10:57:13
was macht ein

set Snips say Test

??
Es erzeugt einen Eintrag in der FHEM.log
set say - value: Test
Mehr passiert nicht. Kein Eintrag in der mosquitto.log auf dem Snips-Rechner, keine Sprachausgabe, keine Reaktion in den Ausgaben von sam watch
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 07 März 2019, 11:20:09
Bei mir sieht es so aus
Titel: der_da
Beitrag von: der_da am 07 März 2019, 11:30:54
Zitat von: ahlermi am 07 März 2019, 11:20:09
Bei mir sieht es so aus
Tja, ich komme erst abends wieder an meinen Snips-Rechner, aber aus dem Gedächtnis heraus bin ich sicher, das bei mir seitens FHEM dort noch nie etwas aufgetaucht ist. Bei mir läuft übrigens auch snipps-tts - im Gegensatz zu deinem Screenshot - was aber wohl nicht mit meinem Problem zusammenhängen sollte.
Für mich sieht es so aus, als ob zwar die Verbindung FHEM-Mosquitto steht ...
mosquitto.log:
New connection from 192.168.178.103 on port 1883.
New client connected from 192.168.178.103 as Net::MQTT::Message[16575] (c1, k60).

FHEM.log:
Opening snipsMQTT device snips-base.local:1883
snipsMQTT device opened
MQTT snipsMQTT message sent: PingReq/at-most-once
SW: c000

... aber aus irgendwelchen Gründen keine Kommunikation darüber stattfindet. Wenn nicht noch jemand einen Tipp hat, wo ich noch schrauben sollte oder weitere Fehlermeldungen finden könnte, dann werde ich wohl zum Wochenende den Snips-Rechner noch mal neu aufsetzen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 07 März 2019, 11:34:30
Ich habe jetzt mal auf beiden seiten aufgezeichnet:

FHEM
mosquitto_sub -v -h 192.168.69.131 -t hermes/injection/perform

SNIPS
mosquitto_sub -v -h 127.0.0.1 -p 1883 -t hermes/injection/#

update:
snips-tts läuft nicht weil ich Amazon Voice verwende
Titel: der_da
Beitrag von: der_da am 07 März 2019, 11:48:37
Danke ahlermi,

ich werde das heute abend auch noch mal machen und sehen, ob ich da etwas finde.

Nebenbei bemerkt, ich kann mich erinnern, dass wenigstens eine der Apps eine rote Warnung beim Installieren des Assistenten erzeugte, die aber soweit ich mich erinnere nur davor warnte, dass Python 2.7 ab 2020 nicht mehr unterstützt wird. Ich gehe/ging aber davon aus, dass das bis jetzt keine negativen Auswirkungen hat. Nichtsdestotrotz kann ich ja noch mal sehen, ob ich mit dem von dir beschriebenen Weg im Post vom 6.3. 14:53 (https://forum.fhem.de/index.php/topic,89548.msg915489.html#msg915489) die Warnung weg bekomme. Vielleicht hat das ja doch weitere Auswirkungen?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 07 März 2019, 12:19:17
Bei mir war es nicht Python, sondern pip was in einer alten Version richtig ärger gemacht hat.

Ich hatte damals alles durch mit


pip install --upgrade pip
pip2 install --upgrade pip   
pip2.7 install --upgrade pip
pip3 install --upgrade pip
pip3.5 install --upgrade pip


hatte alles keinen Erfolg weil das Snips sein eigenes Python hat welches es verwendet.  >:(

Die rote Warnung habe ich auch noch, siehe Screenshot aus meinem Post
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 07 März 2019, 17:04:59
Moin,

Geht es nur mir so, oder haben nach dem neuesten Update von Snips auch andere Mehrfachantworten? Ich habe ein Hauptsnips und zwei Satelliten und bekomme 3 Mal die Antwort.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 07 März 2019, 19:55:19
Hmm, wenn ich das auf meinem Snips-Rechner eingebe, um damit die FHEM-Seite abzufragen:
Zitat
mosquitto_sub -v -h 192.168.178.103 -t hermes/injection/perform
dann kommt da nur Error: Connection refused

Auf dem Snips-Server selbst kommt bei
mosquitto_sub -v -h 127.0.0.1 -p 1883 -t hermes/injection/#
gar nichts - er wartet darauf, dass da was passiert. Aber weder bei set Snips say Test noch bei set Snips updateModel erscheint irgendwas. Muss ich auf dem FHEM-Rechner noch irgendwas hinsichtlich MQTT einrichten???
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rih am 07 März 2019, 21:15:07
@rischbiter
Schau Dir mal Antwort #602 an. Da hatte wohl jemand das selbe Problem mit Mehrfachantworten. Vielleicht hilfts.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 07 März 2019, 21:27:05
Danke, schau ich mir Morgen mal an.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 07 März 2019, 22:33:32
Zitat von: der_da am 07 März 2019, 19:55:19
Hmm, wenn ich das auf meinem Snips-Rechner eingebe, um damit die FHEM-Seite abzufragen:dann kommt da nur Error: Connection refused


Ich habe das auf dem FHEM Server mir der IP von Snips aufgerufen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 08 März 2019, 07:18:47
Zitat von: ahlermi am 07 März 2019, 22:33:32
Ich habe das auf dem FHEM Server mir der IP von Snips aufgerufen
OK, dazu musste ich auf dem  FHEM-Rechner noch den mosquitto-client installieren.
Dann kam bei
mosquitto-sub -v -h snips-base -t hermes/injection/perform
nichts - es wird gewartet das etwas passiert, aber es passiert nichts. Weder bei updateModel noch bei say Test.
WE --> Neuaufsetzen von Snips!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 08 März 2019, 09:13:34
Na toll.
Ich habe gerade noch mal in die FHEM.log geschaut und sehe, da ist nichts mehr von Injection zu sehen. Stattdessen erscheinen da jetzt Fehlermeldungen:
1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 226.
1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 249.
1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 272.
1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 331.
1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 300.
1: PERL WARNING: Use of uninitialized value $name in concatenation (.) or string at ./FHEM/00_MQTT.pm line 701.

Seit wann das so ist, kann ich nicht sagen. Wie man im Thread sieht, ging es bis gestern/vorgestern.
FHEM ist up-todate.  :-\ Solange da bei FHEM nun gar nichts mehr raus geht, brauche ich auch Snips nicht neu aufsetzen. Hat jemand nen Hinweis, was die Ursache für dieses völlig unerwartet Problem sein könnte?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 08 März 2019, 12:32:58
Mal ein

apt-get update
apt-get upgrade

auf dem Fhem gemacht?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 08 März 2019, 12:49:52
Moment - Fehler gefunden - hatte verbose 5 auf 3 heruntergesetzt. Alles wieder gut - soweit man von "gut" reden kann, wenn nix bei Snips ankommt.  ;D
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 08 März 2019, 13:02:50
Moin,

mal ne andere Frage. Warum installierst Du eigentlich Snips nicht auf dem gleichen Rechner wie Fhem und Mosquitto? Wenn Du nur die Sprachsteuerung in einem anderen Raum brauchst, kannst Du den zweiten Rechner doch als Satellit konfigurieren.

Die Warnmeldungen habe ich übrigens auch seit gestern, k.A. warum, Snips funktioniert aber. Seltsamerweise auch wieder mit nur einer Antwort, ohne das ich was gemacht habe.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 08 März 2019, 13:32:35
Zitat von: rischbiter123 am 08 März 2019, 13:02:50
Moin,

mal ne andere Frage. Warum installierst Du eigentlich Snips nicht auf dem gleichen Rechner wie Fhem ...
Das geht nicht. An meinem FHEM-Raspi hängen an den GPIOs eine Latte an Relais-Boards, die meine Rollläden ansteuern. Und ich möchte gern das Re-Speaker-Board nutzen.
Stimmt, könnte man tun.

Zitat
... und Mosquitto? Wenn Du nur die Sprachsteuerung in einem anderen Raum brauchst, kannst Du den zweiten Rechner doch als Satellit konfigurieren.
Die Warnmeldungen habe ich übrigens auch seit gestern, k.A. warum, Snips funktioniert aber. Seltsamerweise auch wieder mit nur einer Antwort, ohne das ich was gemacht habe.
Außerdem nahm ich an, es wäre kein Problem, FHEM und Snips auf getrennten Rechnern zu haben.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 08 März 2019, 14:23:15
Zitat von: der_da am 08 März 2019, 13:32:35
Stimmt, könnte man tun.
Außerdem nahm ich an, es wäre kein Problem, FHEM und Snips auf getrennten Rechnern zu haben.
Das ist auch kein Problem. Nachdem ich am Anfang Snips auch mehrfach neu aufsetzen musste und jedes Mal FHEM auch wieder einrichten musste habe ich das auch getrennt. Bei mir funktioniert das auch problemlos. Ich würde an deiner Stelle einfach den Snips-Pi neu aufsetzen, geht ja eigentlich mit SAM sehr schnell. Ich denke dein Problem liegt irgendwo in der Snips-Installation..
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 08 März 2019, 17:11:51
Zitat von: jowe am 08 März 2019, 14:23:15
Das ist auch kein Problem. Nachdem ich am Anfang Snips auch mehrfach neu aufsetzen musste und jedes Mal FHEM auch wieder einrichten musste habe ich das auch getrennt. Bei mir funktioniert das auch problemlos. Ich würde an deiner Stelle einfach den Snips-Pi neu aufsetzen, geht ja eigentlich mit SAM sehr schnell. Ich denke dein Problem liegt irgendwo in der Snips-Installation..
So - es geht wieder nicht. Was habe ich gemacht?

- raspbian auf die SD-Karte geschoben
- eingeloggt auf dem Raspi
- sudo apt-get-update && sudo apt-get upgrade -y
- sudo raspi-config --> Localisation: deutsch, TZ: Berlin, feste IP, hostname=snips-base - reboot
- sudo apt install npm
- sudo npm install -g snips-sam
- sam connect snips-base
- sam init
- sam setup audio
- sam install assistant
- sudo apt install snips-injection (war schon vorhanden, nicht notwendig)
- sudo apt-get install mosquitto-clients
- mosquitto_sub -v -h 127.0.0.1 -p 1883 -t hermes/injection/perform/#

Und danach updateModel in FHEM ausgelöst - es passiert - NICHTS  :-\
Der Rest funktioniert - d.h. Wetter-Apps oder andere, nur die Injection geht nicht, was dazu führt, das Thyraz FHEM-App natürlich meine Räume nicht kennt. PLÖT!

Gäbe es die Möglichkeit, den String, der in der FHEM.log auftaucht, auf anderem Weg (direkt über die Konsole?) in Snips zu "injizieren"?
So langsam habe ich ja eher das Gefühl, dass das ein Problem auf dem FHEM-Rechner ist. Ist da noch mehr zu machen als die 10_SNIPS.pm in den FHEM-Ordner zu schieben?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 09 März 2019, 15:40:59
Für andere snips-Apps finde ich Verzeichnisse unter
/var/lib/snips/skills
Warum gibt es da kein Verzeichnis für FHEM?
Wo legt die FHEM-App ihre Daten ab? Ich bin auf der Suche nach irgendwelchen Konfig-Dateien, denn schließlich muss es irgendwo auf dem Weg zwischen FHEM (Injection taucht im FHEM.Log auf) und Snips (Injection-Service läuft auf dem Snips-Rechner, aber es kommt nix an (mosquitto.log zeigt nur 1552141963: New connection from 192.168.178.103 on port 1883 wobei diese IP mein FHEM-Server ist)) ein Problem geben.

Die FHEM-App ist installiert, denn bei der Spracheingabe "Schalte das Licht im Flur ein!" wird folgendes bei sam watch angezeigt:

[14:47:38] [Asr] was asked to stop listening on site default
[14:47:38] [Hotword] was asked to toggle itself 'on' on site default
[14:47:40] [Hotword] detected on site default, for model hey_snips
[14:47:40] [Asr] was asked to stop listening on site default
[14:47:40] [Hotword] was asked to toggle itself 'off' on site default
[14:47:40] [Dialogue] session with id '87a1562b-fec6-4c63-ab8e-e21394c10cba' was started on site default
[14:47:40] [AudioServer] was asked to play a wav of 41.1 kB with id 'bce9d5ca-158f-4a1b-88aa-768b392ef6ea' on site default
[14:47:41] [AudioServer] finished playing wav with id 'bce9d5ca-158f-4a1b-88aa-768b392ef6ea'
[14:47:41] [Asr] was asked to listen on site default
[14:47:45] [Asr] captured text "schalte das im vier uhr ein" in 3.0s
[14:47:45] [Asr] was asked to stop listening on site default
[14:47:45] [AudioServer] was asked to play a wav of 93.1 kB with id '53a063e2-d17b-4255-89aa-83ffd6652f6c' on site default
[14:47:46] [AudioServer] finished playing wav with id '53a063e2-d17b-4255-89aa-83ffd6652f6c'
[14:47:46] [Nlu] was asked to parse input "schalte das im vier uhr ein"
[14:47:46] [Nlu] detected intent Thyraz:SetOnOff with confidence score 0.149 for input "schalte das im vier uhr ein"
              Slots ->
                 Value -> an (confidence: 0.652)
[14:47:46] [Dialogue] New intent detected Thyraz:SetOnOff with confidence 0.149
              Slots ->
                 Value -> an (confidence: 0.652)
[14:47:52] [Dialogue] session with id '87a1562b-fec6-4c63-ab8e-e21394c10cba' was ended on site default. The session was ended because one of the component didn't respond in a timely manner
[14:47:52] [Asr] was asked to stop listening on site default
[14:47:52] [Hotword] was asked to toggle itself 'on' on site default

Muss man da noch irgendwas konfigurieren, damit über die MQTT-Verbindung Daten fließen?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 09 März 2019, 20:46:38
Also das scheint ja an einem Problem bei der MQTT Bridge zu liegen. Bekommst du denn über Mqtt publish und subscribe von anderen topics hin? Ist Mqtt mit der IP von Snips konfiguriert? Ich denke du solltest erstmal testen, ob die Verbindung zu dem Snips Broker tatsächlich funktionier
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: hkspks am 10 März 2019, 13:01:37
Hallo zusammen,

bei mir läuft snips soweit ganz gut (OK, etwas Geduld muss man schon mitbringen ;-)) Frage: Ich hätte gerne noch eine einfache Timerfunktion. Wenn ich sage "Timer eine Minute" sehe ich in sam watch
[Nlu] detected intent Thyraz:SetTimer with confidence score 1.000 for input "timer eine minute"
              Slots ->
                 Duration -> 1 minutes (confidence: 0.847)
[12:41:58] [Dialogue] New intent detected Thyraz:SetTimer with confidence 1.000
              Slots ->
                 Duration -> 1 minutes (confidence: 0.847)
[12:41:58] [Nlu] was asked to parse input "timer eine minute"
[12:41:58] [Nlu] detected intent Thyraz:SetTimer with confidence score 1.000 for input "timer eine minute"
              Slots ->
                 Duration -> 1 minutes


Ich denke, das passt soweit. Was muss ich denn in FHEM noch machen, um eine Aktion auszuführen? Ein einfaches klingeln würde mir ausreichen, z.B. über mcp.

Kann mir jemand helfen?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 10 März 2019, 15:32:59
Zitat von: jowe am 09 März 2019, 20:46:38
Also das scheint ja an einem Problem bei der MQTT Bridge zu liegen. Bekommst du denn über Mqtt publish und subscribe von anderen topics hin?
Wie kann ich denn Mqtt publish und subscribe von anderen topics testen?
Zitat
Ist Mqtt mit der IP von Snips konfiguriert?
Das steht in der mosquitto.log (auf dem Snips-Rechner) als erstes drin.
1552061885: mosquitto version 1.4.10 (build date Wed, 13 Feb 2019 00:45:38 +0000) starting
1552061885: Config loaded from /etc/mosquitto/mosquitto.conf.
1552061885: Opening ipv4 listen socket on port 1883.
1552061885: Opening ipv6 listen socket on port 1883.

Gibt es noch weitere Stellen, an denen etwas konfiguriert werden muss? Wenn ja, was?
/etc/mosquitto/mosquitto.conf sieht so aus:
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
pid_file /var/run/mosquitto.pid
persistence false
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d


Ich hänge hier mal die komplette mosquitto.log an. Vielleicht sieht ja der eine oder andere ein Problem (IP 192.168.178.103 ist mein FHEM-Rechner), der Rest sind lokale Verbindungen auf dem Snips-Rechner selbst.
1552061885: mosquitto version 1.4.10 (build date Wed, 13 Feb 2019 00:45:38 +0000) starting
1552061885: Config loaded from /etc/mosquitto/mosquitto.conf.
1552061885: Opening ipv4 listen socket on port 1883.
1552061885: Opening ipv6 listen socket on port 1883.
1552061895: New connection from ::1 on port 1883.
1552061895: New connection from ::1 on port 1883.
1552061895: New connection from ::1 on port 1883.
1552061895: New connection from ::1 on port 1883.
1552061895: New client connected from ::1 as snips-audio-server|483-snips-base-1 (c0, k10).
1552061895: New client connected from ::1 as snips-dialogue|487-snips-base-1 (c0, k10).
1552061895: New client connected from ::1 as snips-analytics|484-snips-base-1 (c0, k10).
1552061895: New client connected from ::1 as snips-tts|488-snips-base-1 (c0, k10).
1552061895: Socket error on client snips-analytics|484-snips-base-1, disconnecting.
1552061895: New connection from ::1 on port 1883.
1552061895: New client connected from ::1 as snips-hotword|490-snips-base-1 (c0, k10).
1552061895: New connection from ::1 on port 1883.
1552061895: New client connected from ::1 as snips-nlu|493-snips-base-1 (c0, k10).
1552061895: Socket error on client snips-audio-server|483-snips-base-1, disconnecting.
1552061895: New connection from 192.168.178.223 on port 1883.
1552061895: New client connected from 192.168.178.223 as 9a4LnN2Gpt (c0, k400, u'').
1552061897: New connection from ::1 on port 1883.
1552061897: New client connected from ::1 as snips-asr|486-snips-base-1 (c0, k10).
1552061897: New connection from ::1 on port 1883.
1552061897: New client connected from ::1 as snips-injection|496-snips-base-1 (c0, k10).
1552061898: New connection from ::1 on port 1883.
1552061898: New client connected from ::1 as 65653959-5ce0-48b2-8b16-eaa180879b10 (c1, k60).
1552061898: New connection from ::1 on port 1883.
1552061898: New client connected from ::1 as 7dfa495e-eb02-442b-a276-e894da43915e (c1, k60).
1552061898: New connection from ::1 on port 1883.
1552061898: New connection from ::1 on port 1883.
1552061898: New connection from ::1 on port 1883.
1552061898: New connection from ::1 on port 1883.
1552061898: New connection from ::1 on port 1883.
1552061898: New connection from ::1 on port 1883.
1552061898: New client connected from ::1 as python3.5|579-snips-base-0 (c0, k10).
1552061898: New client connected from ::1 as python3.5|561-snips-base-0 (c0, k10).
1552061898: New client connected from ::1 as python3.5|563-snips-base-0 (c0, k10).
1552061898: New client connected from ::1 as python3.5|572-snips-base-0 (c0, k10).
1552061898: New client connected from ::1 as python3.5|573-snips-base-0 (c0, k10).
1552061898: New client connected from ::1 as python3.5|560-snips-base-0 (c0, k10).
1552061898: New connection from ::1 on port 1883.
1552061898: New client connected from ::1 as python3.5|562-snips-base-0 (c0, k10).
1552061899: New connection from ::1 on port 1883.
1552061899: New connection from ::1 on port 1883.
1552061899: New connection from ::1 on port 1883.
1552061899: New client connected from ::1 as python2|559-snips-base-0 (c0, k10).
1552061899: New client connected from ::1 as python2|557-snips-base-0 (c0, k10).
1552061899: New client connected from ::1 as python2|571-snips-base-0 (c0, k10).
1552061901: New connection from ::1 on port 1883.
1552061901: New client connected from ::1 as snips-audio-server|822-snips-base-1 (c0, k10).
1552061901: New connection from ::1 on port 1883.
1552061901: New client connected from ::1 as snips-asr|486-snips-base-3 (c0, k10).
1552061940: New connection from 192.168.178.103 on port 1883.
1552061940: New client connected from 192.168.178.103 as Net::MQTT::Message[1251] (c1, k60).
1552063927: New connection from ::1 on port 1883.
1552063927: New client connected from ::1 as snips-watch|1033-snips-base-1 (c0, k10).
1552065271: Client Net::MQTT::Message[1251] has exceeded timeout, disconnecting.
1552065271: Socket error on client Net::MQTT::Message[1251], disconnecting.
1552065294: New connection from 192.168.178.103 on port 1883.
1552065294: New client connected from 192.168.178.103 as Net::MQTT::Message[1251] (c1, k60).
1552077038: Socket error on client snips-watch|1033-snips-base-1, disconnecting.
1552078913: Client Net::MQTT::Message[1251] disconnected.
1552078929: New connection from 192.168.178.103 on port 1883.
1552078929: New client connected from 192.168.178.103 as Net::MQTT::Message[1251] (c1, k60).
1552084804: New connection from ::1 on port 1883.
1552084804: New client connected from ::1 as snips-watch|2628-snips-base-1 (c0, k10).
1552118183: New connection from ::1 on port 1883.
1552118183: New client connected from ::1 as snips-watch|3021-snips-base-1 (c0, k10).
1552126143: Socket error on client snips-watch|2628-snips-base-1, disconnecting.
1552126143: Socket error on client snips-watch|3021-snips-base-1, disconnecting.
1552128902: New connection from 127.0.0.1 on port 1883.
1552128902: New client connected from 127.0.0.1 as mosqsub/3195-snips-base (c1, k60).
1552130333: Socket error on client mosqsub/3195-snips-base, disconnecting.
1552130351: Client Net::MQTT::Message[1251] disconnected.
1552130356: New connection from 192.168.178.103 on port 1883.
1552130356: New client connected from 192.168.178.103 as Net::MQTT::Message[1251] (c1, k60).
1552138328: Socket error on client 9a4LnN2Gpt, disconnecting.
1552138328: Socket error on client 65653959-5ce0-48b2-8b16-eaa180879b10, disconnecting.
1552138328: Socket error on client 7dfa495e-eb02-442b-a276-e894da43915e, disconnecting.
1552138328: Socket error on client python3.5|561-snips-base-0, disconnecting.
1552138328: Socket error on client python3.5|563-snips-base-0, disconnecting.
1552138328: Socket error on client python3.5|562-snips-base-0, disconnecting.
1552138328: Socket error on client python2|557-snips-base-0, disconnecting.
1552138328: Socket error on client python3.5|573-snips-base-0, disconnecting.
1552138328: Socket error on client python2|571-snips-base-0, disconnecting.
1552138328: Socket error on client python3.5|579-snips-base-0, disconnecting.
1552138328: Socket error on client python2|559-snips-base-0, disconnecting.
1552138328: Socket error on client python3.5|560-snips-base-0, disconnecting.
1552138328: Socket error on client python3.5|572-snips-base-0, disconnecting.
1552138394: Socket error on client snips-tts|488-snips-base-1, disconnecting.
1552138394: Socket error on client snips-dialogue|487-snips-base-1, disconnecting.
1552138394: New connection from ::1 on port 1883.
1552138394: New client connected from ::1 as snips-tts|3711-snips-base-1 (c0, k10).
1552138394: Socket error on client snips-hotword|490-snips-base-1, disconnecting.
1552138394: Socket error on client snips-audio-server|822-snips-base-1, disconnecting.
1552138394: Socket error on client snips-asr|486-snips-base-1, disconnecting.
1552138394: Socket error on client snips-asr|486-snips-base-3, disconnecting.
1552138394: Socket error on client snips-injection|496-snips-base-1, disconnecting.
1552138394: New connection from ::1 on port 1883.
1552138394: New connection from ::1 on port 1883.
1552138394: New client connected from ::1 as snips-dialogue|3715-snips-base-1 (c0, k10).
1552138394: New client connected from ::1 as snips-hotword|3724-snips-base-1 (c0, k10).
1552138394: New connection from ::1 on port 1883.
1552138394: New client connected from ::1 as snips-audio-server|3723-snips-base-1 (c0, k10).
1552138394: Socket error on client snips-nlu|493-snips-base-1, disconnecting.
1552138394: New connection from ::1 on port 1883.
1552138394: New client connected from ::1 as snips-nlu|3749-snips-base-1 (c0, k10).
1552138394: New connection from ::1 on port 1883.
1552138394: New client connected from ::1 as snips-injection|3733-snips-base-1 (c0, k10).
1552138394: New connection from ::1 on port 1883.
1552138394: New client connected from ::1 as snips-asr|3726-snips-base-1 (c0, k10).
1552138394: New connection from 192.168.178.223 on port 1883.
1552138394: New client connected from 192.168.178.223 as x45B6tbQjh (c0, k400, u'').
1552138395: New connection from ::1 on port 1883.
1552138395: New client connected from ::1 as snips-asr|3726-snips-base-3 (c0, k10).
1552138395: New connection from ::1 on port 1883.
1552138395: New client connected from ::1 as 586ea170-8c7c-4ff4-a24d-098a1f6d6953 (c1, k60).
1552138395: New connection from ::1 on port 1883.
1552138395: New client connected from ::1 as python3.5|3837-snips-base-0 (c0, k10).
1552138395: New connection from ::1 on port 1883.
1552138395: New client connected from ::1 as python3.5|3854-snips-base-0 (c0, k10).
1552138396: New connection from ::1 on port 1883.
1552138396: New client connected from ::1 as b5bb7b2c-5d81-4653-a184-90387a9d6a01 (c1, k60).
1552138396: New connection from ::1 on port 1883.
1552138396: New client connected from ::1 as python3.5|3841-snips-base-0 (c0, k10).
1552138396: New connection from ::1 on port 1883.
1552138396: New client connected from ::1 as python3.5|3845-snips-base-0 (c0, k10).
1552138396: New connection from ::1 on port 1883.
1552138396: New client connected from ::1 as python3.5|3850-snips-base-0 (c0, k10).
1552138396: New connection from ::1 on port 1883.
1552138396: New client connected from ::1 as python3.5|3833-snips-base-0 (c0, k10).
1552138396: New connection from ::1 on port 1883.
1552138396: New client connected from ::1 as python3.5|3858-snips-base-0 (c0, k10).
1552138396: New connection from ::1 on port 1883.
1552138396: New client connected from ::1 as python2|3825-snips-base-0 (c0, k10).
1552138396: New connection from ::1 on port 1883.
1552138396: New client connected from ::1 as python2|3824-snips-base-0 (c0, k10).
1552138396: New connection from ::1 on port 1883.
1552138396: New client connected from ::1 as python2|3846-snips-base-0 (c0, k10).
1552138505: Socket error on client 586ea170-8c7c-4ff4-a24d-098a1f6d6953, disconnecting.
1552138505: Socket error on client python3.5|3837-snips-base-0, disconnecting.
1552138505: Socket error on client b5bb7b2c-5d81-4653-a184-90387a9d6a01, disconnecting.
1552138505: Socket error on client python3.5|3850-snips-base-0, disconnecting.
1552138505: Socket error on client python3.5|3833-snips-base-0, disconnecting.
1552138505: Socket error on client python3.5|3858-snips-base-0, disconnecting.
1552138505: Socket error on client python2|3824-snips-base-0, disconnecting.
1552138505: Socket error on client python3.5|3845-snips-base-0, disconnecting.
1552138505: Socket error on client x45B6tbQjh, disconnecting.
1552138505: Socket error on client python3.5|3854-snips-base-0, disconnecting.
1552138505: Socket error on client python2|3846-snips-base-0, disconnecting.
1552138505: Socket error on client python2|3825-snips-base-0, disconnecting.
1552138505: Socket error on client python3.5|3841-snips-base-0, disconnecting.
1552139003: New connection from 192.168.178.223 on port 1883.
1552139003: New client connected from 192.168.178.223 as Y49rAOS2z7 (c0, k400, u'').
1552139003: Socket error on client snips-tts|3711-snips-base-1, disconnecting.
1552139003: New connection from ::1 on port 1883.
1552139003: New client connected from ::1 as snips-tts|4196-snips-base-1 (c0, k10).
1552139003: Socket error on client snips-hotword|3724-snips-base-1, disconnecting.
1552139003: Socket error on client snips-audio-server|3723-snips-base-1, disconnecting.
1552139003: Socket error on client snips-asr|3726-snips-base-3, disconnecting.
1552139003: Socket error on client snips-asr|3726-snips-base-1, disconnecting.
1552139003: New connection from ::1 on port 1883.
1552139003: New client connected from ::1 as snips-hotword|4201-snips-base-1 (c0, k10).
1552139003: Socket error on client Y49rAOS2z7, disconnecting.
1552139003: Socket error on client snips-dialogue|3715-snips-base-1, disconnecting.
1552139003: Socket error on client snips-injection|3733-snips-base-1, disconnecting.
1552139003: New connection from ::1 on port 1883.
1552139003: New client connected from ::1 as snips-audio-server|4205-snips-base-1 (c0, k10).
1552139003: Socket error on client snips-nlu|3749-snips-base-1, disconnecting.
1552139003: New connection from ::1 on port 1883.
1552139003: New client connected from ::1 as snips-dialogue|4208-snips-base-1 (c0, k10).
1552139003: New connection from ::1 on port 1883.
1552139003: New client connected from ::1 as snips-nlu|4214-snips-base-1 (c0, k10).
1552139004: New connection from ::1 on port 1883.
1552139004: New client connected from ::1 as snips-injection|4210-snips-base-1 (c0, k10).
1552139004: New connection from ::1 on port 1883.
1552139004: New client connected from ::1 as snips-asr|4204-snips-base-1 (c0, k10).
1552139004: New connection from 192.168.178.223 on port 1883.
1552139004: New client connected from 192.168.178.223 as i5nyxIr6Uv (c0, k400, u'').
1552139004: New connection from ::1 on port 1883.
1552139004: New client connected from ::1 as python3.5|4246-snips-base-0 (c0, k10).
1552139004: New connection from ::1 on port 1883.
1552139004: New client connected from ::1 as snips-asr|4204-snips-base-3 (c0, k10).
1552139023: New connection from ::1 on port 1883.
1552139023: New client connected from ::1 as snips-watch|4280-snips-base-1 (c0, k10).
1552139237: New connection from ::1 on port 1883.
1552139237: New client connected from ::1 as snips-watch|4319-snips-base-1 (c0, k10).
1552139249: Socket error on client snips-watch|4280-snips-base-1, disconnecting.
1552141959: Client Net::MQTT::Message[1251] disconnected.
1552141963: New connection from 192.168.178.103 on port 1883.
1552141963: New client connected from 192.168.178.103 as Net::MQTT::Message[1251] (c1, k60).
1552142116: Socket error on client snips-watch|4319-snips-base-1, disconnecting.
1552159658: Socket error on client i5nyxIr6Uv, disconnecting.
1552159658: Socket error on client python3.5|4246-snips-base-0, disconnecting.
1552159746: Socket error on client snips-injection|4210-snips-base-1, disconnecting.
1552159746: Socket error on client snips-tts|4196-snips-base-1, disconnecting.
1552159746: Socket error on client snips-dialogue|4208-snips-base-1, disconnecting.
1552159746: Socket error on client snips-audio-server|4205-snips-base-1, disconnecting.
1552159746: New connection from ::1 on port 1883.
1552159746: New client connected from ::1 as snips-tts|5005-snips-base-1 (c0, k10).
1552159746: New connection from ::1 on port 1883.
1552159746: New client connected from ::1 as snips-dialogue|5006-snips-base-1 (c0, k10).
1552159746: Socket error on client snips-asr|4204-snips-base-3, disconnecting.
1552159746: Socket error on client snips-hotword|4201-snips-base-1, disconnecting.
1552159746: Socket error on client snips-asr|4204-snips-base-1, disconnecting.
1552159746: Socket error on client snips-nlu|4214-snips-base-1, disconnecting.
1552159746: New connection from ::1 on port 1883.
1552159746: New client connected from ::1 as snips-injection|5004-snips-base-1 (c0, k10).
1552159746: New connection from ::1 on port 1883.
1552159746: New client connected from ::1 as snips-hotword|5019-snips-base-1 (c0, k10).
1552159746: New connection from ::1 on port 1883.
1552159746: New client connected from ::1 as snips-audio-server|5011-snips-base-1 (c0, k10).
1552159746: New connection from 192.168.178.223 on port 1883.
1552159746: New connection from ::1 on port 1883.
1552159746: New client connected from 192.168.178.223 as 5UBJ44K29M (c0, k400, u'').
1552159746: New client connected from ::1 as snips-nlu|5028-snips-base-1 (c0, k10).
1552159746: New connection from ::1 on port 1883.
1552159746: New client connected from ::1 as snips-asr|5018-snips-base-1 (c0, k10).
1552159746: Socket error on client 5UBJ44K29M, disconnecting.
1552159746: New connection from 192.168.178.223 on port 1883.
1552159746: Client 5UBJ44K29M disconnected.
1552159746: New client connected from 192.168.178.223 as 5UBJ44K29M (c0, k400, u'').
1552159746: New connection from ::1 on port 1883.
1552159746: New client connected from ::1 as snips-asr|5018-snips-base-3 (c0, k10).
1552159747: New connection from ::1 on port 1883.
1552159747: New client connected from ::1 as python3.5|5083-snips-base-0 (c0, k10).
1552159747: New connection from ::1 on port 1883.
1552159747: New client connected from ::1 as python2|5084-snips-base-0 (c0, k10).
1552159747: New connection from ::1 on port 1883.
1552159747: New client connected from ::1 as python2|5078-snips-base-0 (c0, k10).
1552159747: New connection from ::1 on port 1883.
1552159747: New client connected from ::1 as python2|5080-snips-base-0 (c0, k10).
1552181978: Client Net::MQTT::Message[1251] has exceeded timeout, disconnecting.
1552181978: Socket error on client Net::MQTT::Message[1251], disconnecting.
1552181994: New connection from 192.168.178.103 on port 1883.
1552181994: New client connected from 192.168.178.103 as Net::MQTT::Message[1251] (c1, k60).
1552199306: Client Net::MQTT::Message[1251] has exceeded timeout, disconnecting.
1552199306: Socket error on client Net::MQTT::Message[1251], disconnecting.
1552199322: New connection from 192.168.178.103 on port 1883.
1552199322: New client connected from 192.168.178.103 as Net::MQTT::Message[1251] (c1, k60).
1552227660: Socket error on client snips-tts|5005-snips-base-1, disconnecting.
1552227660: Socket error on client snips-injection|5004-snips-base-1, disconnecting.
1552227660: Socket error on client snips-dialogue|5006-snips-base-1, disconnecting.
1552227660: Socket error on client python2|5080-snips-base-0, disconnecting.
1552227660: Socket error on client 5UBJ44K29M, disconnecting.
1552227660: Socket error on client python2|5084-snips-base-0, disconnecting.
1552227660: Socket error on client python2|5078-snips-base-0, disconnecting.
1552227660: Socket error on client snips-audio-server|5011-snips-base-1, disconnecting.
1552227660: Socket error on client snips-nlu|5028-snips-base-1, disconnecting.
1552227660: Socket error on client python3.5|5083-snips-base-0, disconnecting.
1552227660: New connection from 192.168.178.223 on port 1883.
1552227660: Socket error on client snips-asr|5018-snips-base-3, disconnecting.
1552227660: Socket error on client snips-asr|5018-snips-base-1, disconnecting.
1552227660: New client connected from 192.168.178.223 as p6Z2914s2V (c0, k400, u'').
1552227660: Socket error on client snips-hotword|5019-snips-base-1, disconnecting.
1552227660: Error in poll: Interrupted system call.
1552227660: mosquitto version 1.4.10 terminating
1552227663: mosquitto version 1.4.10 (build date Wed, 13 Feb 2019 00:45:38 +0000) starting
1552227663: Config loaded from /etc/mosquitto/mosquitto.conf.
1552227663: Opening ipv4 listen socket on port 1883.
1552227663: Opening ipv6 listen socket on port 1883.
1552227673: New connection from ::1 on port 1883.
1552227673: New connection from ::1 on port 1883.
1552227673: New client connected from ::1 as snips-audio-server|486-snips-base-1 (c0, k10).
1552227673: New client connected from ::1 as snips-dialogue|484-snips-base-1 (c0, k10).
1552227673: New connection from ::1 on port 1883.
1552227673: New connection from ::1 on port 1883.
1552227674: New client connected from ::1 as snips-tts|490-snips-base-1 (c0, k10).
1552227674: New client connected from ::1 as snips-analytics|491-snips-base-1 (c0, k10).
1552227674: Socket error on client snips-analytics|491-snips-base-1, disconnecting.
1552227674: New connection from ::1 on port 1883.
1552227674: New client connected from ::1 as snips-hotword|485-snips-base-1 (c0, k10).
1552227674: New connection from ::1 on port 1883.
1552227674: New client connected from ::1 as snips-nlu|487-snips-base-1 (c0, k10).
1552227674: New connection from 192.168.178.223 on port 1883.
1552227674: New client connected from 192.168.178.223 as 6255djQFP3 (c0, k400, u'').
1552227674: Socket error on client snips-audio-server|486-snips-base-1, disconnecting.
1552227675: New connection from ::1 on port 1883.
1552227675: New client connected from ::1 as snips-asr|482-snips-base-1 (c0, k10).
1552227675: New connection from ::1 on port 1883.
1552227675: New client connected from ::1 as snips-injection|492-snips-base-1 (c0, k10).
1552227676: New connection from ::1 on port 1883.
1552227676: New client connected from ::1 as python3.5|543-snips-base-0 (c0, k10).
1552227677: New connection from ::1 on port 1883.
1552227677: New connection from ::1 on port 1883.
1552227677: New connection from ::1 on port 1883.
1552227677: New client connected from ::1 as python2|546-snips-base-0 (c0, k10).
1552227677: New client connected from ::1 as python2|545-snips-base-0 (c0, k10).
1552227677: New client connected from ::1 as python2|544-snips-base-0 (c0, k10).
1552227679: New connection from ::1 on port 1883.
1552227680: New client connected from ::1 as snips-audio-server|773-snips-base-1 (c0, k10).
1552227680: New connection from ::1 on port 1883.
1552227680: New client connected from ::1 as snips-asr|482-snips-base-3 (c0, k10).
1552227725: New connection from 192.168.178.103 on port 1883.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 12 März 2019, 18:06:50
Weitere Erkenntnis:
Ich habe auf dem Snips-Rechner den MQTT-Service angehalten und dann in der Kommandozeile eingegeben:
mosquitto
Anschließend kann man "live" zusehen, was da so passiert (im Prinzip das, was sonst in der log-Datei landet).
Wenn ich dann im FHEM folgendes mache:
set SnipsMQTT connect
dann erfolgt sofort in der Kommandozeile auf dem Snips-Rechner:
1552410145: New connection from 192.168.178.103 on port 1883.
1552410145: New client connected from 192.168.178.103 as Net::MQTT::Message[1251] (c1, k60).

ein
set SnipsMQTT publish irgendeintext
erzeugt dagegen nichts.
set SnipsMQTT disconnect
erzeugt dann
1552410241: Client Net::MQTT::Message[1251] disconnected.

Noch einmal die Frage an die MQTT-Profis: Was kann der Grund sein, dass offenbar die Verbindung hergestellt werden kann, Daten aber nicht übertragen werden?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: hkspks am 12 März 2019, 23:50:44
Noch jemand ein Beispiel/ kreativen Input für den Snips-Timer in FHEM?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 13 März 2019, 09:46:38
Imho ist der SetTimer-Intent noch nicht fertig bzw. wird nicht fertig Verarbeitet.
Unter
https://github.com/Thyraz/Snips-Fhem/blob/master/FHEM/10_SNIPS.pm
Strg+F: "SetTimer" wird nichts gefunden.

D.h. - und jetzt bin ich gerade nicht ganz im Thema drin - du müsstest irgendwie anders auf dem MQTT-Topic lauschen und wenn "SetTimer" kommt darauf und auf die Slots (Duration) reagiern.
Oder vielleicht geht das auch schon mit der Shortcuts-Funktion?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: hkspks am 13 März 2019, 14:16:07
Zitat von: Thyraz am 10 September 2018, 17:23:02
Ok, das Umrechen ohne zu wissen wann das ganze stattfindet klappt durch einige der Werte ja gar nicht.
Thema Schaltjahr, Anzahl Tage im Monat usw.

Ich übergebe also doch den ganzen Hash.

Aktualisierte 10_SNIPS.pm auf Github verfügbar

Beispiel für die Abfrage:

# SetTimer Custom Intent
sub snipsSetTimer($) {
  # Übergebene Parameter in Variablen speichern
  my ($duration) = @_;

  # Standardantwort festlegen
  my $response = "Keine Zeit angegeben";

  if (defined($duration)) {
    my $seconds = $duration->{'seconds'};
    my $minutes = $duration->{'minutes'};
    my $hours = $duration->{'hours'};

    $response = "Timer soll $seconds Sekunden, $minutes Minuten und $hours Stunden laufen";
  }

  return $response;
}


Wundert mich, da es wohl eigentlich schon mal drin war...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 13 März 2019, 14:35:56
Mal in Deiner 10_Snips.pm geguckt?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: hkspks am 13 März 2019, 15:25:10
OK, wer sucht, der findet! Für die Allgemeinheit:

setTimer ist bereits ein Intent, der im FHEM-Snips-Modul auf snips.ai trainiert wurde, aber aktuell nicht in der snips.pm implementiert wird. Die aktuelle snips.pm (Commit on Feb 27, 2019) interpretiert diesen daher als customIntent (siehe github Doku). Um einen einfachen Timer zu implementieren (mpg123 spielt nach Timer-Zeit das file wecker.mp3) kann man folgendes Snippet verwenden:

99_myutils.pm
# SetTimer Custom Intent
sub snipsSetTimer($) {
  # Übergebene Parameter in Variablen speichern
  my ($duration) = @_;

  # Standardantwort festlegen
  my $response = "Leider habe ich die Dauer nicht verstanden.";

  if (defined($duration)) {
    my $seconds = $duration->{'seconds'};
    my $minutes = $duration->{'minutes'};
    my $hours = $duration->{'hours'};
    my $duration_export = strftime('%H:%M:%S', $seconds, $minutes, $hours, 1, 1, 1900);
    my $duration_secs = $seconds + 60 * $minutes + 3600 * $hours;

    fhem("defmod tmptimer at +$duration_export {system '/usr/bin/mpg123 /var/lib/mpd/music/wecker.mp3'}");

    if($duration_secs < 60){ $response = "Timer gesetzt auf $seconds Sekunden.";}
    elsif($duration_secs < 3600){ $response = "Timer gesetzt auf $minutes Minuten und $seconds Sekunden.";}
    else {$response = "Timer gesetzt auf $hours Stunden, $minutes Minuten und $seconds Sekunden.";}

  }
return $response;
}


Dann noch den custom intent dem Snips-device bekannt machen:
attr Snips snipsIntents SetTimer=snipsSetTimer(Duration)

Fallstricke: damit user fhem musik spielen kann über mpg123 muss man ihn noch der Gruppe audio hinzufügen: usermod -a -G audio fhem
Titel: FHEM <--> SNIPS gestört
Beitrag von: der_da am 18 März 2019, 18:42:06
Ich kämpfe immer noch mit der Verbindung zwischen meinem FHEM uns SNIPS.
Noch mal zur Zusammenfassung:
fhem-pi unter Raspbian Jessie mit IP 192.168.178.103
snips-base unter Raspbian Stretch mit IP 192.168.178.223

Auf snips-base gebe ich ein:
mosquitto_sub -v -h 127.0.0.1 -d -t 'test'
Anschließend lauscht er auf die Dinge die da kommen:
Client mosqsub/15983-snips-bas sending CONNECT
Client mosqsub/15983-snips-bas received CONNACK
Client mosqsub/15983-snips-bas sending SUBSCRIBE (Mid: 1, Topic: test, QoS: 0)
Client mosqsub/15983-snips-bas received SUBACK
Subscribed (mid: 1): 0


Wenn ich auf fhem-pi eingebe:
mosquitto_pub -h 192.168.178.223 -m "test message" -t test -d
dann erscheint nach dem Enter:
Client mosqpub/6337-fhem-pi sending CONNECT
Client mosqpub/6337-fhem-pi received CONNACK
Client mosqpub/6337-fhem-pi sending PUBLISH (d0, q0, r0, m1, 'test', ... (12 bytes))
Client mosqpub/6337-fhem-pi sending DISCONNECT


und auf snips-base erscheint:
Client mosqsub/15986-snips-bas received PUBLISH (d0, q0, r0, m0, 'test', ... (12 bytes))
test test message


Ich kann also MQTT-Nachrichten von FHEM zu SNIPS senden!

Wenn in der FHEM-Oberfläche nacheinander:
set SNIPS say Das ist ein Test
set SNIPS sendTextmessage Schalte das Licht ein
set SNIPS updateModel

eingebe, dann erscheint bei verbose 5 folgendes:
2019.03.18 18:37:09 5: set say - value: Das ist ein Test
2019.03.18 18:37:19 5: set textCommand - value: Schalte das Licht ein
2019.03.18 18:37:19 5: Parsed value: Schalte das Licht ein for key: input
2019.03.18 18:37:19 5: Parsed value:  for key: intent
2019.03.18 18:37:19 5: Parsed value:  for key: sessionId
2019.03.18 18:37:19 5: Parsed value:  for key: probability
2019.03.18 18:37:19 5: Parsed value:  for key: siteId
2019.03.18 18:37:19 5: sending message to NLU: {"id":"{\u0022Channel\u0022:null,\u0022Color\u0022:null,\u0022Device\u0022:\u0022 licht\u0022,\u0022Room\u0022:null,\u0022Type\u0022:null,\u0022input\u0022:\u0022Schalte das Licht ein\u0022,\u0022sessionId\u0022:null,\u0022siteId\u0022:null}","input":"Schalte dasstandardgerät ein","sessionId":"fhem.textCommand"}
2019.03.18 18:37:23 5: set updateModel - value:
2019.03.18 18:37:23 5: Injecting data to ASR: {"operations":[["add",{"de.fhem.Device":["alle Rollläden hoch","Thermometer"," Licht"," Müll"," Lampe"," Robi","Kamin","Gast"]}],["add",{"de.fhem.Room":["Schlafzimmer","Wohnzimmer"," Draußen"," Straße","Draußen","Terrasse","Außen","Garage","Garten","Flur","Haus","Bad"]}],["add",{"de.fhem.NumericType":["Luftfeuchtigkeit","Temperatur","Helligkeit"]}],["add",{"de.fhem.Shortcuts":["Welcher Tag ist heute"]}]]}


Wer kann mir Hinweise geben, wo ich noch suchen kann und was ich tun kann, um das Problem weiter einzugrenzen?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 19 März 2019, 09:33:04
Aber auch nach Deiner Neuinstallation kannst du mit mosquitto_sub oder sam watch keine Nachrichten von FHEM sehen?
Führt das "say ..." zu etwas?
Hast du Snips komplett zu Ende installiert, samt Audio?
Dann keine Ahnung.

Wenn es aber nun nur noch um das Injection geht, dann schau Dir trotz allem "das kann nicht sein", "aber er hat das doch installiert" mal den manuellen Download des Assistenten an (siehe weiter oben von mir), ob da die Slots drinne sind.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 19 März 2019, 10:27:49
@der_da, da ich kein lauffähiges Snips mehr habe ist die Hilfe leider etwas schwierig.

Was ich aus deinem letzten Versuch rauslese ist, dass du zwar vom FHEM Rechner aus mit mosquitto_pub zum Snips Mosquitto senden kannst.
Nicht gesichert ist raus, dass du wirklich von FHEM selbst senden kannst.

Was passiert denn wenn du bei der MQTT Instanz die Fhem-Snips verwenden soll direkt ein publish versuchst?
Das MQTT Server Modul hat auch einen publish Set-Befehl.
Titel: der_da
Beitrag von: der_da am 19 März 2019, 14:18:41

Zitat von: laberlaib am 19 März 2019, 09:33:04
Aber auch nach Deiner Neuinstallation kannst du mit mosquitto_sub oder sam watch keine Nachrichten von FHEM sehen?
Führt das "say ..." zu etwas?
Nur zu schon gezeigtem Einrtag in die FHEM.log. sam watch zeigt nichts. mosquitto.sub konnte ich nicht testen, da mir unklar ist, welches Topic ich abonnieren müsste. Und '#' (alles) führt zu im Millisekundentakt eintrudelnden Nachrichten. Da sieht man nichts mehr.
Zitat
Hast du Snips komplett zu Ende installiert, samt Audio?
Ja klar. Snips alleine funktioniert auch soweit. Nur Snips in Verbindung mit FHEM will nicht.

Zitat
Wenn es aber nun nur noch um das Injection geht, dann schau Dir trotz allem "das kann nicht sein", "aber er hat das doch installiert" mal den manuellen Download des Assistenten an (siehe weiter oben von mir), ob da die Slots drinne sind.
Ja, ich werde auch den manuellen Download noch mal testen.

Zitat von: Thyraz am 19 März 2019, 10:27:49
Was passiert denn wenn du bei der MQTT Instanz die Fhem-Snips verwenden soll direkt ein publish versuchst?
Das MQTT Server Modul hat auch einen publish Set-Befehl.
Kannst du mir einen Hinweis geben, was ich da genau eingeben sollte?
set SnipsMQTT publish irgendwas
hatte ich schon probiert. Da kam bei sam watch nichts an. Welche Topics hat Snips den abonniert? Bzw. was sollte ich dort statt irgendwas eingeben?

Bei Nutzung von mosquitto_sub auf snips-base habe ich das Problem, dass ich nicht weiß, welches Topic ich da abonnieren soll. Nehme ich alles ('#') dann sehe ich nichts mehr, da dort nur noch Daten im Millisekundentakt einfliegen. :-\

Das FHEM zwar etwas ins Log schreibt, aber tatsächlich doch nichts sendet, wäre tatsächlich ein Punkt, der irgendwie geprüft werden sollte. Nur wie?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 19 März 2019, 14:54:31
Das Snips Modul selbst spricht ja kein MQTT, sondern ist als Client Modul für das MQTT Server Modul aufgebaut.
Daher meine Frage, ob das MQTT Server Modul selbst denn Daten raussenden kann.
Wenn die MQTT Server Instanz nicht funktioniert, kann das Snips Modul auch nicht senden / empfangen.

Was du im Log siehst, ist ja nur was das Snips Modul an das Server Modul übergibt.
Dieses sollte die Daten dann an den Mosquitto Broker von Snips senden.

https://fhem.de/commandref.html#MQTT

publish benötigt 2 Parameter, einmal ein Topic und einmal eine Message.
Bin gerade nicht daheim am Rechner, aber sowas sollte an sich funktionieren:


set MyMqttServer publish /fhem/status test


Der Status des MQTT Server Moduls in Fhem ist auch connected?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 19 März 2019, 18:36:17
Zitat von: Thyraz am 19 März 2019, 14:54:31
publish benötigt 2 Parameter, einmal ein Topic und einmal eine Message.
Bin gerade nicht daheim am Rechner, aber sowas sollte an sich funktionieren:


set MyMqttServer publish /fhem/status test

set SnipsMQTT publish /fhem/status test
bewirkt sowohl mit sam watch als auch mit mosquitto_sub -v -h 127.0.0.1 -d -t 'test'
nichts.
Also scheint FHEMs MQTT-Modul da nichts zu senden.
Zitat
Der Status des MQTT Server Moduls in Fhem ist auch connected?
Ja, state=opened und connection=active:
Internals:
   DEF        192.168.178.223:1883
   DeviceName 192.168.178.223:1883
   FD         76
   FUUID      5c82559b-f33f-2dea-38be-8a05e3ac58030241
   NAME       snipsMQTT
   NOTIFYDEV  global
   NR         687
   NTFY_ORDER 50-snipsMQTT
   PARTIAL   
   STATE      opened
   TYPE       MQTT
   buf       
   msgid      1
   ping_received 1
   timeout    60
   READINGS:
     2019-03-19 18:31:12   connection      active
     2019-03-19 17:33:11   state           opened
   messages:
Attributes:
   room       Snips,Unsorted
   verbose    4

mosquitto_sub -v -h 127.0.0.1 -d -t 'test' (auf snips-base) bekommt auch alle 60 Sekunden ein
sending PINGREQ
received PINGRESP

Kann das an irgendwelchen fehlenden Rechten liegen?
00_MQTT.pm Besitzer/Gruppe = fhem/dialout und Berechtigungen sind lesen und schreiben für alle (666).
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 19 März 2019, 19:50:54
Korrektur:
set snipsMQTT publish /fhem/status test
bewirkt mit mosquitto_sub -v -h 127.0.0.1 -d -t '/fhem/status'
einen Eintrag
/fhem/status test :P
Bei sam watch kommt dagegen nichts an.

Was sagt mir das nun? Prinzipiell kann das FHEM-MQTT also senden, aber offenbar nichts, worauf snips lauscht!?  :-\
Nun bin ich zwar etwas weiter, aber einer Lösung nicht viel näher. Wie nun weiter?
Titel: Problem gelöst - sich selbst in den Hintern beiß
Beitrag von: der_da am 20 März 2019, 08:01:28
Habe mein Problem endlich gelöst.
Die Lösung hätte hier (https://forum.fhem.de/index.php/topic,89548.msg915206.html#msg915206) schon gefunden werden können, indem man die Listings der beiden beteiligten Devices genauer angesehen hätte.  ::)
Auch wenn ich hier des öfteren von meinem MQTT-Device snipsMQTT geschrieben habe, hieß es bei mir SnipsMQTT. Das Snips-Device hat aber (vergeblich) versucht, mit snipsMQTT zu kommunizieren. Die Tests mit dem MQTT-Device selbst habe ich über die Oberfläche gemacht und dabei natürlich nicht auf die Groß-/Kleinschreibung des Devices geachtet.
Nachdem ich das Device nun in snipsMQTT umbenannt habe, geht alles. Danke für eure Geduld!  ;D
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: lucca111 am 20 März 2019, 19:47:14
Hallo,
seit dem letzen Update kann ich plötzlich meine Lampen nicht mehr auf rot ,grün oder blau setzen.
weiss geht komischerweise noch. Es hat früher auf allen Lampen gut funktioniert. Mit sam_watch sehe ich das der Text richtig verstanden wird. Bekomme immer nur "da ist was schiefgegangen". Kann jemand sagen wie ich das irgendwie debuggen kann?
Ich habe alles nach Anleitung von Thyraz gemacht gehabt also:

- attr <deviceName> userattr snipsColors:textField-long
- snipsColors gefüllt mit
  rot=rgb FF0000
  grün=rgb 00FF00
  blau=rgb 0000FF
  warmweiß=ct 2700
  weiß=ct 3000
-update Model.
Wie gesagt vor dem Update war alles ok .

gruss lucca


Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: lucca111 am 21 März 2019, 20:10:35
Habe heute entdeckt das er irgendwie den slot "Color" mit "Channel" verwechselt und versucht einen Sender über ein anderes Intent zu schalten. Wie gesagt bei Weis geht es, bei rot nicht -siehe Log.

[20:01:44] [Asr] captured text "mache die türme auf weiß" in 3.0s
[20:01:44] [Asr] was asked to stop listening on site default
[20:01:44] [AudioServer] was asked to play a wav of 93.1 kB with id '76de4e43-69f7-4f1f-8495-9ef48d1f3164' on site default
[20:01:46] [AudioServer] finished playing wav with id '76de4e43-69f7-4f1f-8495-9ef48d1f3164'
[20:01:46] [Nlu] was asked to parse input "mache die türme auf weiß"
[20:01:46] [Nlu] detected intent Thyraz:SetColor with confidence score 0.801 for input "mache die türme auf weiß"
[20:01:46] [Dialogue] New intent detected Thyraz:SetColor with confidence 0.801
[20:01:46] [Nlu] was asked to parse input "mache die standardgerät auf standardfarbe"
[20:01:46] [Nlu] detected intent Thyraz:SetColor with confidence score 0.975 for input "mache die standardgerät auf standardfarbe"
              Slots ->
                 Device -> Standardgerät
                  Color -> Standardfarbe
[20:01:46] [Dialogue] was ask to end session with id 1f3865c4-3d48-488a-b379-66c5e004c9ad by saying 'Ok.'
[20:01:46] [Tts] was asked to say "Ok."
[20:01:46] [AudioServer] was asked to play a wav of 19.5 kB with id '45e43885-e18c-46f3-b47a-8b7a692bd26b' on site default
[20:01:47] [AudioServer] finished playing wav with id '45e43885-e18c-46f3-b47a-8b7a692bd26b'
[20:01:47] [Tts] finished speaking with id '72353b6f-cfeb-40d7-9b39-e3eec5233e5d'
[20:01:47] [Dialogue] session with id '1f3865c4-3d48-488a-b379-66c5e004c9ad' was ended on site default. The session ended as expected
[20:01:47] [Asr] was asked to stop listening on site default
[20:01:47] [Hotword] was asked to toggle itself 'on' on site default
[20:01:55] [Hotword] detected on site default, for model hey_snips
[20:01:55] [Asr] was asked to stop listening on site default
[20:01:55] [Hotword] was asked to toggle itself 'off' on site default
[20:01:55] [Dialogue] session with id 'a3598bfb-62de-45f3-aba9-45776e79611c' was started on site default
[20:01:55] [AudioServer] was asked to play a wav of 41.1 kB with id 'e43a99b8-a7c3-4888-b8db-43eb9f766c6d' on site default
[20:01:56] [AudioServer] finished playing wav with id 'e43a99b8-a7c3-4888-b8db-43eb9f766c6d'
[20:01:56] [Asr] was asked to listen on site default
[20:01:59] [Asr] captured text "mache die türme auf rot" in 3.0s
[20:01:59] [Asr] was asked to stop listening on site default
[20:01:59] [AudioServer] was asked to play a wav of 93.1 kB with id 'a4f6f298-a964-4418-ac29-ec05e424f7ae' on site default
[20:02:00] [AudioServer] finished playing wav with id 'a4f6f298-a964-4418-ac29-ec05e424f7ae'
[20:02:00] [Nlu] was asked to parse input "mache die türme auf rot"
[20:02:01] [Nlu] detected intent Thyraz:SetColor with confidence score 0.643 for input "mache die türme auf rot"
[20:02:01] [Dialogue] New intent detected Thyraz:SetColor with confidence 0.643
[20:02:01] [Nlu] was asked to parse input "mache die standardgerät auf standardsender"
[20:02:01] [Nlu] detected intent Thyraz:MediaChannels with confidence score 0.888 for input "mache die standardgerät auf standardsender"
              Slots ->
                  Device -> Standardgerät
                 Channel -> Standardsender
[20:02:01] [Dialogue] was ask to end session with id a3598bfb-62de-45f3-aba9-45776e79611c by saying 'Da ist etwas schief gegangen.'
[20:02:01] [Tts] was asked to say "Da ist etwas schief gegangen."
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 21 März 2019, 21:23:09
Hallo!

Jetzt wollte ich auch mal Snips testen, aber habe kein Pi sondern ein OdroidXu4(Debian Stretch), bin nach Anleitung vom Pi gegangen aber bekomme es wohl doch nicht hin, denn von Fhem empfängt er was aber über Hey_Snips kommt leider nichts im "sam watch".

Ich glaube es startet auch nicht richtig, vielleicht hat ja von euch einer eine Idee?

Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 21 März 2019, 23:17:00
Nur zur info an alle die seit dem letzten update ein problem mit der erkennung der slots hatten (an und aus wurd zb nicht richtig erkannt)
Seit dem heutigen update scheint alles wieder zu funktionieren.

Zitat von: lucca111 am 21 März 2019, 20:10:35
Habe heute entdeckt das er irgendwie den slot "Color" mit "Channel" verwechselt und versucht einen Sender über ein anderes Intent zu schalten. Wie gesagt bei Weis geht es, bei rot nicht -siehe Log.

probier mal das neue update für snips :) ggf hatte das letzte update auch bei deiner konfiguration einen salat erstellt :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 22 März 2019, 12:14:41
Hallo!

Habe es nun mal mit einem frisch aufgesetzten Pi2 versucht, aber auch da komme ich gerade nicht weiter. Ich sehe das er Hey_Snips mitbekommt,
aber was ich dann zum Test sage erscheint nicht in "sam watch".

Könnte jemand vielleicht sagen woran es liegen könnte?

Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 22 März 2019, 12:23:22
ASR ist die Spracherkennung.

Musst schauen warum das nicht läuft.
Man kann die ganzen Teile von Snips auch aus der Konsole öffnen (Service davor stoppen).
Dann sieht man was für Fehler ausgespuckt werden und warum es evtl. nicht startet.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 22 März 2019, 12:37:26
Zitat von: Thyraz am 22 März 2019, 12:23:22
ASR ist die Spracherkennung.

Musst schauen warum das nicht läuft.
Man kann die ganzen Teile von Snips auch aus der Konsole öffnen (Service davor stoppen).
Dann sieht man was für Fehler ausgespuckt werden und warum es evtl. nicht startet.

hey danke erstmal, das teilt er mit:

pi@raspberrypi:~/node-v10.15.3-linux-armv6l $ sudo systemctl status snips-asr
● snips-asr.service - Snips ASR
   Loaded: loaded (/lib/systemd/system/snips-asr.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: signal) since Fri 2019-03-22 11:34:54 GMT; 3s ago
  Process: 23406 ExecStart=/usr/bin/snips-asr (code=killed, signal=ILL)
Main PID: 23406 (code=killed, signal=ILL)
   CGroup: /system.slice/snips-asr.service

Mar 22 11:34:54 raspberrypi systemd[1]: snips-asr.service: Failed with result 'signal'.


aber ich werde daraus leider auch nicht schlauer, vielleicht du?!

Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 22 März 2019, 13:00:53
Hi Steffen, gemeint war nicht der Status des Services, sondern wirklich snips-asr direkt aus der Console zu starten (nicht den Service).

Den Service musst du davor eben stoppen, da der auf auto-restart steht und sonst alle paar Sekunden dazwischenfunkt...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 22 März 2019, 13:06:45
Zitat von: Thyraz am 22 März 2019, 13:00:53
Hi Steffen, gemeint war nicht der Status des Services, sondern wirklich snips-asr direkt aus der Console zu starten (nicht den Service).

Den Service musst du davor eben stoppen, da der auf auto-restart steht und sonst alle paar Sekunden dazwischenfunkt...

Stehe gerade auf dem schlauch, was meinst du mit direkt aus der Console starten?!

Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 22 März 2019, 13:07:20
sudo systemctl stop snips-asr
sudo snips-asr -vv

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 22 März 2019, 13:10:16
Zitat von: mericon am 22 März 2019, 13:07:20
sudo systemctl stop snips-asr
sudo snips-asr -vv

Gesendet von meinem VTR-L09 mit Tapatalk

Ah ok, dann hatte ich doch das richtige gerade versucht aber dachte wäre noch was anderes weil ich ein bekomme:

pi@raspberrypi:~ $ sudo systemctl stop snips-asr
pi@raspberrypi:~ $ sudo snips-asr -vv
Illegal instruction
pi@raspberrypi:~ $


da stimmt wohl was nicht, was kommt bei euch als Antwort?

Mfg
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 22 März 2019, 15:33:24
Zitat von: Steffen am 22 März 2019, 13:10:16
Ah ok, dann hatte ich doch das richtige gerade versucht aber dachte wäre noch was anderes weil ich ein bekomme:

pi@raspberrypi:~ $ sudo systemctl stop snips-asr
pi@raspberrypi:~ $ sudo snips-asr -vv
Illegal instruction
pi@raspberrypi:~ $


da stimmt wohl was nicht, was kommt bei euch als Antwort?

Mfg
15:31:58.573536] DEBUG:rumqtt::connection                   : snips-asr|27839-raspberrypi-1 Received message on hermes/audioServer/schlafzimmer/audioFrame
[15:31:58.573909] DEBUG:rumqtt::connection                   : snips-asr|27839-raspberrypi-1 Received message on hermes/audioServer/schlafzimmer/audioFrame
[15:31:58.621973] DEBUG:rumqtt::connection                   : snips-asr|27839-raspberrypi-3 Received message on hermes/audioServer/schlafzimmer/audioFrame
[15:31:58.622510] DEBUG:rumqtt::connection                   : snips-asr|27839-raspberrypi-3 Received message on hermes/audioServer/schlafzimmer/audioFrame
[15:31:58.622848] DEBUG:rumqtt::connection                   : snips-asr|27839-raspberrypi-1 Received message on hermes/audioServer/schlafzimmer/audioFrame
[15:31:58.623207] DEBUG:rumqtt::connection                   : snips-asr|27839-raspberrypi-1 Received message on hermes/audioServer/schlafzimmer/audioFrame

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 22 März 2019, 15:42:32
Danke, ich versuche es gerade nochmal mit einer neuen Installation und hoffe das es jetzt vielleicht doch besser läuft.
Wenn nicht müsste man davon ausgehen, das es auf eine RPI2 nicht läuft oder?!

Welche Hardware nutzt ihr denn?

Vielleicht wenn jemand mag, kann er seine Installations Schritte hier mal Posten ob ich da ein Fehler mache?!

Was gibt ihr bei "sam connect xxxx" ein?

Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 22 März 2019, 16:47:03
Sam connect <ip des rpi>

Aber versuch ggf mal die Installation per apt

https://docs.snips.ai/articles/raspberrypi/manual-setup

Ich habe das auf einem rpi3 (wie empfohlen) laufen.

Gesendet von meinem VTR-L09 mit Tapatalk
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 22 März 2019, 16:57:54
Zitat von: mericon am 22 März 2019, 16:47:03
Sam connect <ip des rpi>

Aber versuch ggf mal die Installation per apt

https://docs.snips.ai/articles/raspberrypi/manual-setup

Ich habe das auf einem rpi3 (wie empfohlen) laufen.

Gesendet von meinem VTR-L09 mit Tapatalk

Wollte ich gerade Versuchen aber:

pi@raspberrypi:~ $ sudo bash -c 'echo "deb https://raspbian.snips.ai/$(lsb_release -cs) stable main" > /etc/apt/sources.list.d/snips.list'
pi@raspberrypi:~ $ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys D4F50CDCA10A2849
Executing: /tmp/apt-key-gpghome.1MKx6u6goE/gpg.1.sh --keyserver pgp.mit.edu --recv-keys D4F50CDCA10A2849
gpg: keyserver receive failed: No data


mhhh....Ich verstehe das einfach nicht, ist doch ein frisch installiertes Image und es klappt einfach nicht :(

Habe jetzt langsam kein Plan mehr, würde mir jetzt nicht unbedingt ein RPI 3 holen wollen.

Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 22 März 2019, 17:01:07
Probiers mit sudo apt-key adv --keyserver pgp.surfnet.nl --recv-keys D4F50CDCA10A2849

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 22 März 2019, 18:04:54
@Steffen, ich hab gerade keine Snips Installation mehr laufen, daher kann ich mit Tests wenig helfen,
aber ich hatte es am Anfang auch auf einen Pi2, daran sollte es nicht liegen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 22 März 2019, 18:07:10
Zitat von: Thyraz am 22 März 2019, 18:04:54
@Steffen, ich hab gerade keine Snips Installation mehr laufen, daher kann ich mit Tests wenig helfen,
aber ich hatte es am Anfang auch auf einen Pi2, daran sollte es nicht liegen.

Oh je dann muss es ja an was anderes liegen, wenn es nicht der Pi2 ist.

Kann es vielleicht an der Node version liegen? Mit Welcher läuft es bei euch?

Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 22 März 2019, 18:19:24
Funktioniert der zweite keyserver denn? Wo genau hakt es momentan? Welches OS wird eingesetzt?

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: lucca111 am 22 März 2019, 18:21:18
Hallo Steffen,

versuch es mal mit dieser Anleitung bis Snips erstmal auf dem Pi läuft. Den Rest  mit Openhub einfach weglassen. Bei mir ging es sofort und schön einfach erklärt. Hat 15-20 min maximal gedauert und alles lief.
https://onesmarthome.de/lokale-sprachsteuerung-mit-openhab-2-und-snips-ai/ (https://onesmarthome.de/lokale-sprachsteuerung-mit-openhab-2-und-snips-ai/)

Übrigens ein Update hat bei meinem Slot Color Problem nicht geholfen. Bin noch am suchen :(

gruß lucca
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 22 März 2019, 20:43:45
Zitat von: lucca111 am 22 März 2019, 18:21:18
Hallo Steffen,

versuch es mal mit dieser Anleitung bis Snips erstmal auf dem Pi läuft. Den Rest  mit Openhub einfach weglassen. Bei mir ging es sofort und schön einfach erklärt. Hat 15-20 min maximal gedauert und alles lief.
https://onesmarthome.de/lokale-sprachsteuerung-mit-openhab-2-und-snips-ai/ (https://onesmarthome.de/lokale-sprachsteuerung-mit-openhab-2-und-snips-ai/)

Übrigens ein Update hat bei meinem Slot Color Problem nicht geholfen. Bin noch am suchen :(

gruß lucca

Ich habe mich aber selber bei meiner Hardware vertan denn es ist RPI 1 2011.12!

Also habe es gerade nochmal von vorne versucht, aber diesmal wieder genau wie diese Anleitung und habe es mal mit Node 8 versucht,
aber bekomme leider keine Ausgabe im "sam watch" wenn ich was Hey_Snips sage?!

Mfg Steffen


Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 22 März 2019, 21:06:05
Zitat von: Steffen am 22 März 2019, 20:43:45
Ich habe mich aber selber bei meiner Hardware vertan denn es ist RPI 1 2011.12!

Also habe es gerade nochmal von vorne versucht, aber diesmal wieder genau wie diese Anleitung und habe es mal mit Node 8 versucht,
aber bekomme leider keine Ausgabe im "sam watch" wenn ich was Hey_Snips sage?!

Mfg Steffen
Das sieht aber schon besser aus kontrollier mal bitte die Ausgabe mit Sam watch -vv

Das -vv erhöht dabei die verbose stufe

Ob der pi 1 das volle snips gehändelt bekommt kann ich nicht sagen.

Auch interessant wäre welches Mic benutzt wird und der Inhalt der asound.conf

Gesendet von meinem VTR-L09 mit Tapatalk
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 22 März 2019, 21:23:10
Zitat von: mericon am 22 März 2019, 21:06:05
Das sieht aber schon besser aus kontrollier mal bitte die Ausgabe mit Sam watch -vv

Das -vv erhöht dabei die verbose stufe

Ob der pi 1 das volle snips gehändelt bekommt kann ich nicht sagen.

Auch interessant wäre welches Mic benutzt wird und der Inhalt der asound.conf

Gesendet von meinem VTR-L09 mit Tapatalk

Ja das finde ich eigentlich auch, aber bringt mich leider noch nicht weiter...


pi@raspberrypi:~ $ sam watch -vv
sam watch

Show MQTT logs

Options:
  --version  Show version number                                       [boolean]
  --help     Show help                                                 [boolean]

Unknown argument: v


das klappt aber auch irgendwie nicht...

Entschuldige wenn ich hier den Bereich voll Texte aber dachte wäre einfacher.... ???

Mfg
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 22 März 2019, 23:05:07
Sorry das war mein Fehler der Befehl muss in der Linux Konsole ausgeführt werden und heißt snips-watch -vv

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: lucca111 am 23 März 2019, 12:10:56
ZitatIch habe mich aber selber bei meiner Hardware vertan denn es ist RPI 1 2011.12!

Also habe es gerade nochmal von vorne versucht, aber diesmal wieder genau wie diese Anleitung und habe es mal mit Node 8 versucht,
aber bekomme leider keine Ausgabe im "sam watch" wenn ich was Hey_Snips sage?!

Hallo Steffen.

Mirkrophone  & Lautsprecher testen mit " sam test speaker " und " sam test microphone ".
Was bringt die Augabe von " sam setup audio "?

" sam test microphone " hat bei mir eine Testaufnahme gemacht aber bei Abspielen hörte ich nichts.

Habe dann mit " sam service stop snips-audio-server " den service gestoppt.
Mit " arecord -D plughw:1,0 -d 3 test.wav && aplay test.wav " mein Micro getestet (hurra erfolgreich)
Mit " sam service start snips-audio-server " den service wieder getstartet.
Gruß lucca



Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 23 März 2019, 14:00:11
Zitat von: lucca111 am 23 März 2019, 12:10:56
Hallo Steffen.

Mirkrophone  & Lautsprecher testen mit " sam test speaker " und " sam test microphone ".
Was bringt die Augabe von " sam setup audio "?

" sam test microphone " hat bei mir eine Testaufnahme gemacht aber bei Abspielen hörte ich nichts.

Habe dann mit " sam service stop snips-audio-server " den service gestoppt.
Mit " arecord -D plughw:1,0 -d 3 test.wav && aplay test.wav " mein Micro getestet (hurra erfolgreich)
Mit " sam service start snips-audio-server " den service wieder getstartet.
Gruß lucca

Hallo!

Die Test von Microphone und Audiausgabe funktionieren alle gut, ich bekomme von meinen Test eine gute Ausgabe wieder und ich benutze ein PS3EyeCam.

pi@raspberrypi:~ $ cat /etc/asound.conf
pcm.!default {
    type asym
    playback.pcm {
        type plug
        slave.pcm "hw:0,0"
    }
    capture.pcm {
        type plug
        slave.pcm "hw:1,0"
    }


Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: lucca111 am 23 März 2019, 18:29:53
@Stephen: snips-asr muss getartet sein.

snips-analytics .............. 0.62.3 (not running)
snips-asr .................... 0.62.3 (running)
snips-audio-server ........... 0.62.3 (running)
snips-dialogue ............... 0.62.3 (running)
snips-hotword ................ 0.62.3 (running)
snips-nlu .................... 0.62.3 (running)
snips-skill-server ........... 0.62.3 (not running)
snips-tts .................... 0.62.3 (running)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Prof. Dr. Peter Henning am 24 März 2019, 07:48:55
Klinke mich hier mal ein.

LG

pah
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 24 März 2019, 09:48:46
Guten Morgen,

hatte es jetzt nochmal mit alle möglichen Node-Versionen(4-11) versucht aber es scheint einfach nicht zu laufen auf dem RPI1 2011_12.

Vielleicht liegt es ja auch an Stretch und RPI, denn das Gatttool hat ja auch Probleme mit Stretch?!

Mfg Steffen
Titel: der_da
Beitrag von: der_da am 24 März 2019, 12:40:16
Ich habe noch ein Problem mit der Abfrage von Werten. Ich habe z.B. ein Thermometer/Hygrometer mit Namen "Terrasse". Wenn ich Snips frage, wie die Temperatur auf der Terrasse ist, dann bekomme ich immer als Antwort, dass es derzeit 0° auf der Terrasse sind. Der tatsächliche Wert wird also nicht übernommen.
Auf die Frage nach dem Status der Terrasse bekomme ich übrigens ein "Da ist etwas schief gegangen!" Woran kann das liegen?
Hier mein Listing von "Terrasse":
Internals:
   CHANGED   
   DEF        34
   FUUID      5c7fb818-f33f-2dea-f23c-12ebc2f3a2357e19
   IODev      JLLaCrosse
   JLLaCrosse_MSGCNT 37354
   JLLaCrosse_RAWMSG OK 9 52 1 4 152 46
   JLLaCrosse_TIME 2019-03-24 12:32:29
   LASTInputDev JLLaCrosse
   LaCrosse_lastRcv 2019-03-24 12:32:29
   MSGCNT     37286
   NAME       Terrasse
   NR         291
   STATE      T: 17.6 H: 46
   TYPE       LaCrosse
   addr       34
   battery_new 0
   bufferedH 
   bufferedT 
   corr1      0
   corr2      0
   previousH  46
   previousT  17.6
   sensorType 0=T(H)
   READINGS:
     2016-04-21 10:46:59   Batteriewechsel 1
     2019-03-24 12:32:29   battery         ok
     2019-03-24 12:25:44   dewpoint        5.0
     2019-03-24 12:32:29   humidity        46
     2019-03-24 12:26:59   statHumidityDay Min: 46 Avg: 63 Max: 73
     2019-03-23 23:59:55   statHumidityDayLast Min: 39 Avg: 63 Max: 83
     2019-03-24 12:26:59   statHumidityMonth Min: 36 Avg: 68 Max: 86
     2019-02-28 23:59:55   statHumidityMonthLast Min: 32 Avg: 69 Max: 88
     2019-03-24 12:26:59   statHumidityYear Min: 32 Avg: 73 Max: 90
     2018-12-31 23:59:55   statHumidityYearLast Min: 23 Avg: 69 Max: 90
     2019-03-24 12:26:59   statTemperatureDay Min: 6.3 Avg: 10.8 Max: 17.6
     2019-03-23 23:59:55   statTemperatureDayLast Min: 2.7 Avg: 13.2 Max: 25.1
     2019-03-24 12:26:59   statTemperatureMonth Min: -1.6 Avg: 7.9 Max: 25.1
     2019-02-28 23:59:55   statTemperatureMonthLast Min: -5.0 Avg: 4.9 Max: 20.2
     2019-03-24 12:26:59   statTemperatureYear Min: -7.5 Avg: 4.4 Max: 25.1
     2018-12-31 23:59:55   statTemperatureYearLast Min: -8.7 Avg: 9.0 Max: 39.9
     2019-03-24 12:31:59   state           T: 17.6 H: 46
     2019-03-24 12:32:29   temperature     17.6
   helper:
     _98_statistics StatistikTerrasse
Attributes:
   IODev      JLLaCrosse
   event-min-interval state:600,battery:3600,temperature:600,humidity:600
   group      Temperaturen
   icon       scene_terrace
   room       Information,Snips,Temperaturen
   snipsMapping GetNumeric=temperature,type=Temperatur
                GetNumeric=humidity,type=Luftfeuchtigkeit
                Status:response=Die Temperatur auf der Terrasse beträgt [Terrasse:temperature] Grad bei [Terrasse:humidity] Prozent Luftfeuchtigkeit.
   snipsName  Thermometer
   snipsRoom  Terrasse



Edit: Habe den Fehler gefunden. Entgegen dem hier (https://forum.fhem.de/index.php/topic,89548.msg821593.html#msg821593) von Thyraz erwähnten Eintrag des snipsMapping mit
GetNumeric=temperature,type=Temperatur
GetNumeric=humidity,type=Luftfeuchtigkeit

habe ich es nun wie im allerersten Beitrag erwähnt auf
GetNumeric:currentVal=temperature,type=Temperatur
GetNumeric:currentVal=humidity,type=Luftfeuchtigkeit

geändert. Nun antwortet FHEM/Snips auf direkte Fragen nach Temperatur oder Luftfeuchtigkeit mit den korrekten Werten.
Nur auf die Frage: "Status Terrasse" bzw. auch "Wie ist der Status der Terrasse?" bekomme ich immer noch "Da ist etwas schief gegangen!" zurück.
Dabei sollte doch das snipsMapping
Status:response=Die Temperatur auf der Terrasse beträgt [Terrasse:temperature] Grad bei [Terrasse:humidity] Prozent Luftfeuchtigkeit.
dafür sorgen, dass dann die entsprechende Antwort erfolgt!? Hat dafür noch jemand einen Tipp?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 25 März 2019, 13:55:47
Hallo!

Ok jetzt habe ich eine Pi3 und es klappte sofort, vielen dank nochmal für eure Hilfe und Geduld...

Jetzt habe ich aber eine andere Frage, denn mein vorhaben war eigentlich das ich Alexa umgehe und mit Snips arbeite.

Ich habe ein Talk2Fhem angelegt und viele Sachen schon eingegeben, habe über das EchoDevice-Modul mit "vioce" aus Alexa ausgelesen und an Talk2Fhem übergeben,
zB.: "wir gehen ins Bett".

Das Problem das bei Alexa oft die Übertragung zu den Modulen zu lange gedauert hat, darum wollte ich mit Snips Alexa umgehen.

Jetzt muss ich aber Feststellen das in "sam watch" aber kaum was von den gesagten Sätzen ankommt und ich eigentlich nur das auslesen möchte was in Snips ankommt um es dann an Talk2fhem zu übergeben und jetzt meine Frage ist das überhaupt möglich???

Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: obi am 25 März 2019, 15:26:36
Hallo Steffen,

ja dies ist möglich. Siehe hier: https://forum.fhem.de/index.php/topic,91216.msg920841.html#msg920841 (https://forum.fhem.de/index.php/topic,91216.msg920841.html#msg920841)
Ich habe dies bei mir genauso im Einsatz. Bitte alles so wie beschrieben im 1. Post umsetzen, dann sollte es funktionieren.

Wichtig ist, dass Snips alle Wörter welche erkannt werden sollen auch kennt siehe mein letzter Post https://forum.fhem.de/index.php/topic,91216.msg920841.html#msg920841 (https://forum.fhem.de/index.php/topic,91216.msg920841.html#msg920841)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 25 März 2019, 16:34:09
Zitat von: obi am 25 März 2019, 15:26:36
Hallo Steffen,

ja dies ist möglich. Siehe hier: https://forum.fhem.de/index.php/topic,91216.msg920841.html#msg920841 (https://forum.fhem.de/index.php/topic,91216.msg920841.html#msg920841)
Ich habe dies bei mir genauso im Einsatz. Bitte alles so wie beschrieben im 1. Post umsetzen, dann sollte es funktionieren.

Wichtig ist, dass Snips alle Wörter welche erkannt werden sollen auch kennt siehe mein letzter Post https://forum.fhem.de/index.php/topic,91216.msg920841.html#msg920841 (https://forum.fhem.de/index.php/topic,91216.msg920841.html#msg920841)

Hallo!

Vielen Vielen dank, das war es glaube ich denn die ersten Sätze werden erkannt.

Könnte ich noch kurz Fragen wie man dann weitere Satteliten anlernt, geht das über die toml. datei?

Kann man das Wakeword ohne weiteres ändern?

Mfg Steffen

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kud am 25 März 2019, 19:24:01
Mal eine grundsätzliche Frage.
Wird Das Snips-"Modul" von Thyraz eigentlich noch gewartet/gepflegt/weiterentwickelt?
Habe gelesen, dass er selbst keine laufende SNIPS-Installation hat.

P.S. Bei mir läuft SNIPS schon seit zig Monaten und sagt mir brav die Werte aus FHEM auf. Jedoch update ich nicht mehr!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: der_da am 26 März 2019, 07:44:04
Zitat von: Steffen am 25 März 2019, 16:34:09
Könnte ich noch kurz Fragen wie man dann weitere Satteliten anlernt, geht das über die toml. datei?
Informationen dazu findest du hier (https://docs.snips.ai/articles/platform/satellites).
Zitat
Kann man das Wakeword ohne weiteres ändern?
Das ist in diesem Artikel beschrieben (https://docs.snips.ai/articles/advanced/wakeword/personal).
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 26 März 2019, 09:32:32
Ok danke nun habe ich es geschafft das Hotword zu ändern,
dann habe ich mit Shortcuts geschafft die Sätze abzubilden aber wie kann ich sie nun in Fhem auslesen???

in den Readigs tauchen sie leider nicht auf:

[Asr] captured text "die kinder gehen ins bett" in 3.0s
[09:20:04] [Nlu] detected intent Thyraz:Shortcuts with confidence score 1.000 for input "die kinder gehen ins bett"
              Slots ->
                 Shortcut -> die kinder gehen ins bett (confidence: 1.000)
[09:20:04] [Dialogue] New intent detected Thyraz:Shortcuts with confidence 1.000
              Slots ->
                 Shortcut -> die kinder gehen ins bett (confidence: 1.000)


Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: obi am 26 März 2019, 10:21:20
Mit folgendem sollte der erkannte Text ein Reading erzeugen welches dann weiter verarbeitet werden kann:
define ej_SNIPS expandJSON Snips:lastIntentPayload:.\{.*input.*} input
define n_Snips_input notify
Snips:input:.* {
  $EVENT =~ s/\srein/\sein/g;
  fhem("attr talk Snips Snips");
  fhem("set talk " . ( split / /, $EVENT, 2 )[1]);
}


Ob das auch bei den Shortcuts funktioniert kann ich nicht sagen. Ich verwende diese nicht. Ich habe einfach alle einzelnen Wörter welche von Snips erkannt werden sollen als Attribut snipsChannels verwendet.attr d_snips_dummy snipsChannels die=die
Kinder=Kinder
gehen=gehen
ins=ins
bett=bett

Da ich ja eh nicht die Verarbeitung von dem Snips-Modul verwende ist es egal ob es Media-kanäle oder sonstige Wörter sind.

Ich bin übrigens gerade dabei ein eigenes Modul für die Snips-Anbindung zu programmieren welches als reines Text-Gateway agiert, da ich keine Logik im Modul benötige sondern lieber Talk2Fhem, Babble usw. verwende.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 26 März 2019, 11:06:45
Zitat von: obi am 26 März 2019, 10:21:20
Mit folgendem sollte der erkannte Text ein Reading erzeugen welches dann weiter verarbeitet werden kann:
define ej_SNIPS expandJSON Snips:lastIntentPayload:.\{.*input.*} input
define n_Snips_input notify
Snips:input:.* {
  $EVENT =~ s/\srein/\sein/g;
  fhem("attr talk Snips Snips");
  fhem("set talk " . ( split / /, $EVENT, 2 )[1]);
}


Ob das auch bei den Shortcuts funktioniert kann ich nicht sagen. Ich verwende diese nicht. Ich habe einfach alle einzelnen Wörter welche von Snips erkannt werden sollen als Attribut snipsChannels verwendet.attr d_snips_dummy snipsChannels die=die
Kinder=Kinder
gehen=gehen
ins=ins
bett=bett

Da ich ja eh nicht die Verarbeitung von dem Snips-Modul verwende ist es egal ob es Media-kanäle oder sonstige Wörter sind.

Ich bin übrigens gerade dabei ein eigenes Modul für die Snips-Anbindung zu programmieren welches als reines Text-Gateway agiert, da ich keine Logik im Modul benötige sondern lieber Talk2Fhem, Babble usw. verwende.

Danke für deine Idee, leider gestaltet es sich so sehr schwierig denn "die Kinder gehen ins Bett" klappt aber habe danach:

die=die
Kinder=Kinder
gehen=gehen
ins=ins
bett=bett
schlafen=schlafen
wir=wir
ich=ich
aufgestanden=aufgestanden
möchten=möchten
hinzugefügt aber dann erkennt er zB. "ich bin aufgestanden" aber "wir sind aufgestanden" nicht.

Doch über die Shortcuts erkennt er die Sätze bis jetzt, fast immer zu 90%, ich müsste nur das "text" in "hermes/asr/textCaptured" auslesen können und als reading darstellen lassen das würde glaube ich mir erstmal zu Anfang reichen.

Ich hatte es damit versucht, aber das klappt leider nicht:

define ej3 expandJSON Snips.*:{.*} (text) input


Da du dich damit anscheinend gut auskennst, hättest du da vielleicht eine Idee wie das gehen würde?



Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 26 März 2019, 20:45:47
Hallo!

Jetzt habe ich doch nochmal eine frage an euch zum Thema Hotword, denn wer von euch nutzt das Persönliche Hotword und könnte seine Erfahrungen hier teilen?

Das Problem ist das das Hotword bei mir wirklich gut klappte, dann kam meine Frau nach Hause und bei Ihr reagierte es gar nicht und Sie hat es wirklich oft versucht auch bei meinem Sohn kein Erfolg.

Reagiert das Persönliche Hotword dann nur auf die eine Stimmfarbe?

Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: marwal am 27 März 2019, 06:28:36
Hallo Steffen,
bei dem Schritt wo du dein wakeword aufnimmst, werden *.wav Dateien angelegt. Die dienen dann bei der Erkennung als Referenz.
Du könntest für jede Person ein eigenen wakeword anlegen, oder mit der sensitivity zu spielen.

Ich persönlich habe mehrere angelegt. Wenn ich bei mir die sensitivity zu gering einstelle, springt snips auch gern mal beim Fernsehen durch vermeintlich verstandene wakewords an.
Mehrere musst du dann in der /etc/snips.toml so angegeben:

model = ["<new_path_to_your_model_1>=<sensitivity_1>", "<new_path_to_your_model_2>=<sensitivity_2>"]

LG
Martin
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 27 März 2019, 09:16:36
Zitat von: Steffen am 26 März 2019, 09:32:32
Ok danke nun habe ich es geschafft das Hotword zu ändern,
dann habe ich mit Shortcuts geschafft die Sätze abzubilden aber wie kann ich sie nun in Fhem auslesen???

in den Readigs tauchen sie leider nicht auf:

[Asr] captured text "die kinder gehen ins bett" in 3.0s
[09:20:04] [Nlu] detected intent Thyraz:Shortcuts with confidence score 1.000 for input "die kinder gehen ins bett"
              Slots ->
                 Shortcut -> die kinder gehen ins bett (confidence: 1.000)
[09:20:04] [Dialogue] New intent detected Thyraz:Shortcuts with confidence 1.000
              Slots ->
                 Shortcut -> die kinder gehen ins bett (confidence: 1.000)


Mfg Steffen

Ich dachte, dass die Shortcuts einfache Sätze sind, die dann - wenn erkannt - direkt eine Funktion aufrufen?
Dann kannst du doch alles weitere in einer myUtils-Funktion abbilden?

wir gehen ins Bett=snipsShortcut2Reading("wirgeheninsbett")
die Kinder gehen ins Bett=snipsShortcut2Reading("diekindergeheninsBett")


### PSEUDOCODE ###
Sub snipsShortcut2Reading($){
    $satz = @;
    set userreading = $satz;
    ### oder gleich alles ausführen:####
    select case $satz:
         case "wirgehenisbett": set all off; set hauszustand Nachtruhe;
         case "diekindergeheninsbett": turn on tv; set tv channel RTL2;
    end select
}

Oder ist das nicht so?



   
   
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: marwal am 27 März 2019, 09:26:30
Genau, wird von Thyraz auch so hier beschrieben.

https://forum.fhem.de/index.php/topic,89548.msg835728.html#msg835728 (https://forum.fhem.de/index.php/topic,89548.msg835728.html#msg835728)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 27 März 2019, 14:47:20
@laberlaib
vielen dank, ich werde diesen Ansatz gleich mal verfolgen, aber werde trotzdem den weg nun über deine Idee über Talk2Fhem gehen denn das Modul kann da auch noch nachbessern wenn die Sätze nicht korrekt erkannt werden, hatte manchmal den Fall das Snips erkannt hatte:
kinder gehen gehe bett und da kann Talk2Fhem einspringen.


Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 27 März 2019, 15:38:45
Bei den Shortcuts und Talk2Fhem gibt es auf jeden fall ein Problem, diese werden nicht im reading lastIntentPayload angezeigt und gelangen so auch nicht in das Reading input

Man könnte das natürlich über


attr Snips shortcuts wir gehen=setreading Snips input wir gehen

   
falls dann kein event geworfen wird so:

attr Snips shortcuts wir gehen=define a_Snips_tmp at +00:00:00 setreading Snips input wir gehen

lösen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Prof. Dr. Peter Henning am 27 März 2019, 18:03:04
ZitatReagiert das Persönliche Hotword dann nur auf die eine Stimmfarbe?
So etwas wie eine "Stimmfarbe" gibt es nicht. Wesentlicher Bestandteil einer Stimme sind die so genannten Formanten, das sind Oberwellen in periodischen Frequenzabständen - höchst individuell, und damit von starkem Einfluss auf das von Snips erstellte Modell.

Kurz gesagt: Zwei unterschiedliche Sprecher, ibs. verschiedenen Geschlechtes, benötigen in der Regel unterschiedliche Modelle.

Insofern ist Snips auch allen großen STT-Diensten unterlegen.

Ich werde darum Snips nur zur Hotword-Erkennung verwenden, und dann einen der großen Dienste dranhängen.

Zur Auswertung empfehle ich Euch, mal das Modul Babble anzusehen.

LG

pah
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 28 März 2019, 17:53:34
Zitat von: Prof. Dr. Peter Henning am 27 März 2019, 18:03:04
So etwas wie eine "Stimmfarbe" gibt es nicht. Wesentlicher Bestandteil einer Stimme sind die so genannten Formanten, das sind Oberwellen in periodischen Frequenzabständen - höchst individuell, und damit von starkem Einfluss auf das von Snips erstellte Modell.

Kurz gesagt: Zwei unterschiedliche Sprecher, ibs. verschiedenen Geschlechtes, benötigen in der Regel unterschiedliche Modelle.

Insofern ist Snips auch allen großen STT-Diensten unterlegen.

Ich werde darum Snips nur zur Hotword-Erkennung verwenden, und dann einen der großen Dienste dranhängen.

Zur Auswertung empfehle ich Euch, mal das Modul Babble anzusehen.

LG

pah

aber beim Hotword liegt derzeit aber noch das Problem, denn mich erkennt Snips gut aber bei meiner Frau ist die Umsetzung sehr schlecht,
das merkt man schon bei der Aufnahme zum Persönlichen Hotword denn bei mir brauche ich ca.3-5 Versuche bei ihr manchmal deutlich mehr.

Könnt ihr mal bitte eure Erfahrungen hier mitteilen, ob ihr das Persönliche Hotword nutzt und ob welches Mikrofone ihr nutzt???


Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: lucca111 am 01 April 2019, 18:16:23
Moin,

habe versucht die Voice_ID von Snips-TTS-Polly "Marlene" auf "Vicki" oder "Hans" in der
snips-tts-polly.py zu ändern. Leider keine Änderung nach Service oder System Neustart.
Weiss jemand wie ich das ändern kann?

def tts_say(client, userdata, msg, voice="Marlene") -> None:

LG Lucca
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: ahlermi am 02 April 2019, 07:29:36
Hmm, habe ich auch so gemacht, bei mir klappts:


vim /usr/src/snips-tts-polly/snips-tts-polly.py

systemctl stop snips-tts
systemctl disable snips-tts

systemctl enable snips-tts-polly
systemctl start snips-tts-polly
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: studger am 02 April 2019, 15:46:18
Hallo zusammen,
ich habe mir auf Raspi 3 mit Hifiberry Amp+ und PS3 Eye als Mic,   Spips und LMS mit Squeezelite Player installiert. Snips funktioniert gut und gibt Audioausgabe über Hifiberry aus.
Mein Problem ist derzeit die Soundausgabe von Squeezelite Player.

Wenn ich in Squeezelite die Einstellungen so verändere: SL_SOUNDCARD="sysdefault:CARD=ALSA", dann funktioniert Snips (gibt Audio über Hifiberry aus)  aber es funktioniert Squeezelite  nicht.
                                                 bei der Einstellungen: SL_SOUNDCARD="sysdefault:CARD=sndrpihifiberry", es funktioniert Squeezelite  (gibt Audio über Hifiberry aus)  aber es funktioniert Snips nicht.

Hat jemand schon den Snips und LMS + Squeezelite und Hifiberry  erfolgreich eingerichtet?

Danke!



Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: hkspks am 12 April 2019, 10:19:22
Gibt es eine Möglichkeit, snips per Schalter in FHEM zu aktivieren/ zu deaktivieren (also den Service?). Hintergrund: Trotz langer Hotword-Konfiguration springt der gute manchmal an, wenn er nicht soll...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 12 April 2019, 10:30:08
Zitat von: studger am 02 April 2019, 15:46:18
Hallo zusammen,
ich habe mir auf Raspi 3 mit Hifiberry Amp+ und PS3 Eye als Mic,   Spips und LMS mit Squeezelite Player installiert. Snips funktioniert gut und gibt Audioausgabe über Hifiberry aus.
Mein Problem ist derzeit die Soundausgabe von Squeezelite Player.

Wenn ich in Squeezelite die Einstellungen so verändere: SL_SOUNDCARD="sysdefault:CARD=ALSA", dann funktioniert Snips (gibt Audio über Hifiberry aus)  aber es funktioniert Squeezelite  nicht.
                                                 bei der Einstellungen: SL_SOUNDCARD="sysdefault:CARD=sndrpihifiberry", es funktioniert Squeezelite  (gibt Audio über Hifiberry aus)  aber es funktioniert Snips nicht.

Hat jemand schon den Snips und LMS + Squeezelite und Hifiberry  erfolgreich eingerichtet?

Danke!

Laienmeinung:
Das war bei mir auch so.
Geht das Mischen von Quellen überhaupt mit ALSA oder braucht es dazu Pulseaudio?
https://docs.snips.ai/articles/platform/pulseaudio
Achtung: viele schimpfen über pulseaudio und ich hab eigentlich keine AHnung über Sound auf Linux sondern da einfach immer Anleitungen kopiert und wenns mal geklappt hat nichts hinterfragt o.ä. sondern einfach nicht mehr angeschaut.
Derzeit geht's bei mir irgendwie.

Zitat von: hkspks am 12 April 2019, 10:19:22
Gibt es eine Möglichkeit, snips per Schalter in FHEM zu aktivieren/ zu deaktivieren (also den Service?). Hintergrund: Trotz langer Hotword-Konfiguration springt der gute manchmal an, wenn er nicht soll...

Probier doch mal das hier:
https://docs.snips.ai/reference/hermes
ZitatDeactivating the Wake Word component
This will deactivate the Wake Word component of the Snips Platform. Consequently, nothing will be triggered when a wake word is pronounced.
Topic (publish)
hermes/hotword/toggleOff
Payload
Key
Type
Description
siteId
String
The id of the site where the wake word detector should be turned on
sessionId
Optional String
The id of the session, if there is an active session
Example
mosquitto_pub -h <HOSTNAME> -t 'hermes/hotword/toggleOff' \
    -m '{"sideId": "default"}'
Also das ganze halt via FHEM auf den MQTT legen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: hkspks am 12 April 2019, 14:46:47
Super, klappt. Für die Allgemeinheit: Toggle Snips on/ off über Dummy-Schalter "Automatisierung".


defmod Automatisierung.SNIPS notify Automatisierung.* {\
if (Value("$NAME") eq "on") {\
fhem("set MQTTBroker publish 'hermes/tts/say' '{\"siteId\": \"default\", \"text\": \"Hallo hier bin ich.\", \"lang\": \"de\"}';;");;\
fhem("set MQTTBroker publish 'hermes/hotword/toggleOn' '{\"siteId\": \"default\"}';;");; \
} \
if (Value("$NAME") eq "off") {\
fhem("set MQTTBroker publish 'hermes/tts/say' '{\"siteId\": \"default\", \"text\": \"Ich bin dann mal weg.\", \"lang\": \"de\"}';;");;\
fhem("set MQTTBroker publish 'hermes/hotword/toggleOff' '{\"siteId\": \"default\"}';;");; \
} \
}
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: nanocosmos am 12 April 2019, 20:30:24
Hallo,

habe leider noch nicht alle Seiten durchlesen können, aber mittels Suche habe ich zumindest keine ähnliche Frage finden können.
Ich wollte wissen, ob ich mein Android Tablet, auf welchem Amad zur TabletUI Anzeige läuft, als Satelite nutzen kann?

Viele Grüße
Daniel

Gesendet von meinem MI 9 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tobi90 am 12 April 2019, 20:38:18
Hallo,
seit dem ich Raspbian mit sudo apt-get dist-upgrade upgedatet habe, erkennt mein Snips keine Wörter mehr, es sieht so aus als würde das update Model nicht mehr funktionieren.
Snips, FHEM und Raspbian sind auf dem aktuellen Stand.

Hier hätte Snips "Schalte die Vitrine ein" erkennen sollen:
[20:29:04] [Asr] captured text "schalte die wie unknownword ein" in 2.0s
[20:29:04] [Asr] was asked to stop listening on site SnipsWZ
[20:29:04] [AudioServer] was asked to play a wav of 93.1 kB with id '6b205f46-a7b3-4d91-ac56-6c6356ffcf03' on site SnipsWZ
[20:29:05] [AudioServer] finished playing wav with id '6b205f46-a7b3-4d91-ac56-6c6356ffcf03'
[20:29:05] [Nlu] was asked to parse input "schalte die wie unknownword ein"
[20:29:06] [Nlu] intent not recognized for "schalte die wie * ein"


und hier "Wie ist das Wetter":
[20:29:24] [Asr] captured text "wie ist das weiter" in 2.0s
[20:29:24] [Asr] was asked to stop listening on site SnipsWZ
[20:29:24] [AudioServer] was asked to play a wav of 93.1 kB with id 'e95dd6f1-4690-4c19-8333-272c1cac43e4' on site SnipsWZ
[20:29:25] [AudioServer] finished playing wav with id 'e95dd6f1-4690-4c19-8333-272c1cac43e4'
[20:29:25] [Nlu] was asked to parse input "wie ist das weiter"
[20:29:25] [Nlu] detected intent Thyraz:MediaControls with confidence score 0.358 for input "wie ist das weiter"
              Slots ->
                 Command -> vor (confidence: 0.648)
[20:29:25] [Dialogue] New intent detected Thyraz:MediaControls with confidence 0.358


Den Assistenten habe ich mit sam install assistant neu installiert..
Was habe ich falsch gemacht?
Danke schon mal :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 13 April 2019, 09:46:34
@tobi90: an set Snips UpdateModel gedacht, um die Device Namen in Snips zu injizieren?

Edit: hätte deinen Beitrag ganz lesen sollen.. hast du deinen Assistenten vor dem Download neu trainiert? Das war nach dem letzten snips Release bei mir das Problem, ich musste das manuell anstoßen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tobi90 am 13 April 2019, 11:13:43
Das könnte das Problem sein. Kannst du mir sagen was ich dafür machen muss, ich finde dazu nichts auf der Internetseite von Snips..
Danke :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 13 April 2019, 11:19:52
In den Assistenten gehen, die fhem App entfernen, danach wieder hinzufügen und dann auf "retrain assistant" gehen. Danach wieder Sam Install assistant und dann updateModel
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tobi90 am 13 April 2019, 11:49:27
Das hat leider nicht geholfen. Ich hab die App entfernt und wieder hinzugefügt, dann trainiert er sie ja automatisch. Anschließend installiert und Set update Model.
Er erkennt immer noch keine Wörter. Mit TextCommand über FHEM klappt es..
[11:46:08] [Nlu] was asked to parse input "schalte die standardgerät ein"
[11:46:08] [Nlu] detected intent Thyraz:SetOnOff with confidence score 0.670 for input "schalte die standardgerät ein"
              Slots ->
                 Device -> Standardgerät
                  Value -> an
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: nanocosmos am 15 April 2019, 11:19:16
Hallo,

vielen Dank für das tolle Modul!

Ich habe die ersten Geräte nun eingebunden. Tue mich aber ehrlich gesagt bei Sachen wie Heizkörpern, usw. ein wenig schwer.
Was klasse wäre, wenn die Intents für das snipsMapping irgendwo gesammelt werden.
Dann müsste man das Rad nicht jedesmal neu erfinden, sondern könnte aus einer Liste von Geräten die passenden Intents auswählen.  :)

Viele Grüße
Daniel
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: nanocosmos am 16 April 2019, 20:53:56
Schade, dass hier so wenig los ist.
Finde den Ansatz von snips klasse.

Habe die Intents noch nicht komplett durchdrungen. Mir, sowie anderen bestimmt auch, würde es sehr weiterhelfen, wenn es ein paar Beispiele für verschiedene Geräte gäbe. :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 16 April 2019, 21:30:53
Ja, finde ich auch. Es tut sich aber auch schon bei Snips selbst relativ wenig. Fürchte ein bisschen um dessen Zukunft. Wäre nämlich wirklich eine super Sache.

Ich verwende eigentlich nur SetOnOff-Intents, kann deshalb mit Beispielen nicht wirklich dienen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Roman am 17 April 2019, 23:25:50
Hallo,

ich muss mich hier leider auch mit einem Problem melden, für das ich bisher noch keine Lösung gefunden habe.

die snips-asr erkennt immer nur ein Wort, aber keine Sätze.
22:55:17] [Hotword] detected on site wohnzimmer, for model hey_snips
[22:55:17] [Asr] was asked to stop listening on site wohnzimmer
[22:55:17] [Hotword] was asked to toggle itself 'off' on site wohnzimmer
[22:55:17] [Dialogue] session with id 'd91a29df-b498-491d-a5a2-7dd5e5d59f95' was started on site wohnzimmer
[22:55:17] [Asr] was asked to listen on site wohnzimmer
[22:55:19] [Asr] captured text "schalte" in 2.0s
[22:55:19] [Asr] was asked to stop listening on site wohnzimmer


Setup:
SNIPS auf einem NUC (amd64) mit Ubuntu18.04 (Server Edition) (site server, kein Micro, kein Lautsprecher)
SNIPS auf Raspberry PI 3 als Satellite (nur audio-server + Hotword, site wohnzimmer) mit PS-Eye3 als Microfon
Beide per LAN-Kabel im gleichen Netz, kein WLAN.

Ich hab schon alle Tipps ausprobiert (Assistant auf snips.ai löschen, neu hinzufügen, neu trainieren, update Model) ich hab hier keine Änderung des Verhaltens.
Das Problem scheint hier die ASR zu sein.
NLU funktioniert einwandfrei (über Textcommand funktioniert alles)

Hat hier jemand eine Idee ??

Gruß Roman
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 18 April 2019, 09:08:08
Keine Idee leider. Aber du bist nicht der einzige mit dem Problem. Habe Snips am Wochenende neu installiert, weil ich einige Probleme hatte. Seitdem werden in den seltensten Fällen mehr als zwei Wörter erkannt. Und die nicht richtig. Irgendwas ist also anders als vorher. Ich habe nur noch nicht rausgefunden, was.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 18 April 2019, 10:44:30
Hallo!

Hat sich jemand vielleicht damit schon beschäftigt?
https://github.com/Psychokiller1888/snips-custom-hotword

also den vorteil sehe ich darin, das auf der Website von Snowboy das Anlernen und das Testen(auch aus weiter Entfernung) sehr gut klappt, aber auf dem Pi nach einrichten so gut wie gar nicht mehr, erst wenn man aus 10cm direkt ins Mikro spricht.

Was auch gut klappt und das in ein weiterer Vorteil, das das Hotword auch durch unterschiedliche Personen erkannt wird(test auf Snowboy).

Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 19 April 2019, 10:30:42
Bei uns hört Snips auf alle, egal ob Mann oder Frau. Ich verwende das "ReSpeaker 2-Mics Pi HAT" auf einem RPi3 B+ mit einem aktuellen Raspbian.

Gruß Jens
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 19 April 2019, 14:08:40
Selbes Setup. Bei mir hört Snips momentan aber auf niemanden, außer den Fernseher. ;D
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Steffen am 19 April 2019, 14:31:38
Zitat von: dirigent am 19 April 2019, 10:30:42
Bei uns hört Snips auf alle, egal ob Mann oder Frau. Ich verwende das "ReSpeaker 2-Mics Pi HAT" auf einem RPi3 B+ mit einem aktuellen Raspbian.

Gruß Jens

Wo ich mich falsch ausgedrückt hatte, das Snips bei einem Customhotword auf jede Stimmer hört und nicht wie bei Snips angeboten direkt immer pro stimme eine Aufnahme gemacht werden muss und diese auch nur dann erkannt wird.

Das von mir oben verlinkte Projekt läuft jetzt seit einem Tag sehr gut.

Mfg Steffen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Roman am 23 April 2019, 22:56:01
Zitat von: drhirn am 18 April 2019, 09:08:08
Keine Idee leider. Aber du bist nicht der einzige mit dem Problem. Habe Snips am Wochenende neu installiert, weil ich einige Probleme hatte. Seitdem werden in den seltensten Fällen mehr als zwei Wörter erkannt. Und die nicht richtig. Irgendwas ist also anders als vorher. Ich habe nur noch nicht rausgefunden, was.

Hallo an alle, die auch Probleme bei der Erkennung haben,

nach einigem Ausprobieren, scheint es bei mir nun wieder zu richtig funktionieren (Noch nicht alles getestet, aber Lichter werden schon wieder richtig erkannt).
Ursache wahr wohl ein altes Modul "10_SNIPS.pm" , das aktuelle (2 Monate alt auf Github) neu geholt- FHEM neu gestartet , Update Model ausgeführt und die ASR erkennt bei mir wieder komplette Sätze.

Gruß
Roman
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: nanocosmos am 29 April 2019, 18:12:58
Ich hatte mir jetzt einen Respeaker 2 Clone bestellt und wollte diesen auf einem Pi Zero testen.
Snips und ebenso den Assistenten (mit dem FHEM Skill) installiert.
Leider erkennt er nicht mehr als das Hotword "Hey Snips":
[Dialogue] session with id 'd7d433d9-8971-489a-a64b-1cb8f9014b56' was ended on site default. The session was ended because one of the component didn't respond in a timely manner.
[17:05:28] Watching on localhost:1883 (MQTT)
[17:05:39] [Hotword] detected on site default, for model hey_snips
[17:05:39] [Asr] was asked to stop listening on site default
[17:05:39] [Hotword] was asked to toggle itself 'off' on site default
[17:05:39] [Dialogue] session with id '1b8f328f-952b-4616-9fd9-3aa9bfda25b6' was started on site default
[17:05:39] [AudioServer] was asked to play a wav of 41.1 kB with id '29d5672f-e420-4304-bbf4-3c9ca5dcbcc1' on site default
[17:05:40] [AudioServer] finished playing wav with id '29d5672f-e420-4304-bbf4-3c9ca5dcbcc1'
[17:05:40] [Asr] was asked to listen on site default
[17:05:56] [Dialogue] session with id '1b8f328f-952b-4616-9fd9-3aa9bfda25b6' was ended on site default. The session was ended because one of the component didn't respond in a timely manner
[17:05:56] [Asr] was asked to stop listening on site default
[17:05:56] [Hotword] was asked to toggle itself 'on' on site default


Bei meinem ersten Testaufbau (Pi2 mit Playstation Mirko) hatte das ganz wunderbar funktioniert.

Hoffe jemand hat einen Tipp. Habe schon diverse Google Links durch und bei snips selbst auch noch keine Lösung gefunden.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Roman am 30 April 2019, 21:32:50
Hi nanocosmos,

sehe ich richtig und du willst Snips komplett auf einem PiZero laufen lassen?

Das wird wahrscheinlich nicht gehen, dazu ist der Zero zu schwach.
Der PiZero sollte als Satellit konfiguriert werden ( nur Audio-server und Hotword).
Der Rest sollte mindestens auf einem Raspberry 3 laufen.

Dann sollte das auch klappen.

Gruß
Roman
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: nanocosmos am 30 April 2019, 22:35:42
Hallo Roman,

Vielen Dank für den Tipp!
Hatte es vorher auf dem Pi2 laufen, da hat es wunderbar funktioniert. Aber der BCM2835 vom Zero ist anscheinend doch deutlich weniger performant als der BCM2836 vom Pi2.

Klasse wäre ein Snips Docker Container. [emoji2]

Viele Grüße
Daniel
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: nanocosmos am 02 Mai 2019, 20:43:26
Habe im Docker hub ein Snips Docker gefunden.
Leider sind die Infos etwas dürftig. [emoji848][emoji2]
Hat jemand von euch das schon zum Laufen bekommen?
Welche Pfade, Ports usw. muss man mappen?

Besten Dank und viele Grüße
Daniel
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bennebartsch am 05 Mai 2019, 12:08:22
Zitat von: nanocosmos am 02 Mai 2019, 20:43:26
Habe im Docker hub ein Snips Docker gefunden.
Leider sind die Infos etwas dürftig. [emoji848][emoji2]
Hat jemand von euch das schon zum Laufen bekommen?
Welche Pfade, Ports usw. muss man mappen?

Besten Dank und viele Grüße
Daniel

Ich hatte es mal probiert, dann aber meine eigene Dockerfile geschrieben. Kannst du vermutlich nicht 1 zu 1 verwenden, aber vielleicht hilft es ja jemandem:
Dockerfile:

FROM debian:stretch
MAINTAINER Benedikt Bartscher (benedikt@bartscher.me)

RUN apt-get update
RUN apt-get install -y git gnupg2 apt-transport-https dbus supervisor dirmngr pulseaudio pulseaudio-utils mpg123 python3 python3-pip mosquitto-clients curl
RUN echo "deb https://debian.snips.ai/stretch stable main" > /etc/apt/sources.list.d/snips.list
#RUN apt-key adv --recv-keys F727C778CCB0A455
#RUN apt-key adv --keyserver pgp.mit.edu --recv-keys F727C778CCB0A455
RUN apt-get update
RUN apt-get install -y snips-platform-voice snips-watch snips-injection --allow-unauthenticated

# snips-sam nodejs
RUN curl -sL https://deb.nodesource.com/setup_11.x | bash -
RUN apt-get install -y nodejs
RUN npm install -g snips-sam

# TTS
RUN pip3 install toml paho-mqtt boto3 awscli pygame
RUN aws configure set default.region eu-central-1
RUN aws configure set region eu-central-1 --profile testing
RUN aws configure set profile.testing2.region eu-central-1
RUN aws configure set preview.cloudsearch true
#RUN git clone https://github.com/Thyraz/snips-tts-polly.git /opt/snips-tts-polly
ADD ./snips-tts-polly /opt/snips-tts-polly
RUN cp /opt/snips-tts-polly/snips-tts-polly.py /usr/bin

ADD credentials /root/.aws/credentials
ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf
ADD snips-feedback-off /usr/bin/snips-feedback-off
ADD default.pa /etc/pulse/default.pa
ADD ./jarvis /etc/snips/jarvis

ENTRYPOINT ["/usr/bin/supervisord"]


Man kann dann beliebige Komponenten von Snips in der supervisord.conf angeben, hier mal ein Beispiel:

[program:snips-nlu]
command=/usr/bin/snips-nlu
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stdout
stderr_logfile_maxbytes=0


Und zu allerletzt noch meine docker-compose.yml (sorry etwas chaotisch und privileged):

version: '2'

services:
    mysnips:
        restart: always
        container_name: mysnips
        build: mysnips
        privileged: true
        ports:
            - "9898:1883"
        volumes:
            - ./assistant:/usr/share/snips/assistant
            - ./snips.toml:/etc/snips.toml
            - /var/run/pulse/.config/pulse/cookie:/root/.config/pulse/cookie
            - /var/run/pulse:/run/user/1000/pulse
            - /etc/asound.conf:/etc/asound.conf
            #- /tmp/pulsesocket:/tmp/pulsesocket:rw
            - /dev/snd:/dev/snd
            #- /etc/pulse/default.pa:/etc/pulse/default.pa
            #- /etc/pulse/:/etc/pulse/
            #- ~/.config/pulse/cookie:/root/.config/pulse/cookie
            #- ${XDG_RUNTIME_DIR}/pulse/native/:${XDG_RUNTIME_DIR}/pulse/native/
        environment:
            - PULSE_SERVER=unix:${XDG_RUNTIME_DIR}/pulse/native
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: AKropsch am 09 Mai 2019, 09:35:57
Hallo Zusammen,

ich klinke mich mit ein  :)

Snips läuft bei mir auf RPI 3b+ mit PS3Eye als Micro , der FHEM auf dem Server im Keller. Sprachausgabe mit Polly-TTS. Zur Zeit läuft Alles wunderbar. Internet Radio (über MPD Modul), Staubsauger, Rollos, Lichter...
Bin fleißig dabei es mit Leben zu füllen und der WAF Steigt Täglich  ;D
Vielen Dank @Thyraz für Deine Arbeit!

Grüße Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 11 Mai 2019, 12:52:10
Weil ich mich im Thread mal beschwert habe, dass mich Snips nicht versteht: Das war ein Problem mit dem ReSpeaker-Hat. Habe die Treiber neu installiert und seitdem kann ich mich wieder problemlos mit Snips unterhalten.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: FhemPiUser am 14 Mai 2019, 21:04:44
habe jetzt auch Snips ausprobiert und zumindest textCommand ging auf Anhieb, bin begeistert. Vielen Dank Thyraz für die klasse Arbeit!

Eine Frage habe ich: Die Raumerkennung geht nicht. Sam watch schreibt immer nur "standardgerät" und "standardraum" bei textcommands. Ich nehme an es liegt daran, dass ich mit fhem noch auf Jessie bin und daher snips-injection nicht installieren konnte? Dre rpi mit snips ist aber auf Stretch mit aktuellem snips-injection. Muss sips-injection auch auf dem fhem rpi installiert sein? Das würde bedeuten, ich muss den fhem rpi jetzt auf stretch umstellen (wollte eigentlich auf buster warten...)?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: delta8585 am 16 Mai 2019, 11:42:56
Hallo,

Vielen dank für das tolle Modul.
Ich habe es mittlerweile hinbekommen das ich Lampen schalten kann.  8)

Aber:
Ich brauche etwas Hilfe beim Mapping.
Ich verstehe das leider nicht. :(

Ich möchte gerne verschiedene Lichtszenen schalten und benutze dazu das LightScene Modul.
Hier gibt es 4 verschiedene Möglichkeiten: Ein / Aus / Hell / Dunkel.

Was muss ich denn hier für das snipsMapping eintragen?

Vielen Dank
Gruß
Johannes

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 16 Mai 2019, 11:57:13
Ich hab das nicht über ein Mapping gemacht, sondern über "Channels". Also, eigentlich beides.
Intent MediaChannels (https://github.com/Thyraz/Snips-Fhem#mediachannels)

Und dann halt das Attribut snipsChannels wie folgt befüllt

Hell=set <Name der LightScene> scene <Name der Szene>
Dunkel=set <Name der LightScene> scene <Name der Szene>


Das Mapping habe ich für Ein/Aus verwendet

SetOnOff:cmdOn=set <Name der LightScene> scene <Name der Szene>,cmdOff=set <Name der LightScene> scene <Name der Szene>
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 16 Mai 2019, 18:02:27
Wie bekomme ich es hin, dass sich SNIPS nicht mir mpd um die Tonausgabe des ReSpeaker 2-Mics Pi HAT zankt? Aktuell höre ich die Antworten von SNIPS nur, wenn ich vorher "Radio Pause" sage.

Gruß Jens
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: FhemPiUser am 21 Mai 2019, 21:24:22
bei mir stellt fhem snips noch immer nicht meine raum- und gerätename zur verfügung, obwohl ich snips-injection installiert habe auf dem snips rpi.

snips scheint alles richtig zu erkennen, denn das reading lastntentpayload ist

{"Device":" temperatur","Room":"wohnzimmer","input":"wie ist die temperatur vom thermometer im wohnzimmer","intent":"GetNumeric","probability":null,"requestType":"voice","sessionId":"...","siteId":"default"}

sam watch sagt

[Nlu] was asked to parse input "wie ist die temperatur vom thermometer im wohnzimmer"
[20:11:41] [Nlu] detected intent Thyraz:GetNumeric with confidence score 0.941 for input "wie ist die temperatur vom thermometer im wohnzimmer"
              Slots ->
                 Type -> Temperatur (confidence: 1.000)
[20:11:41] [Dialogue] New intent detected Thyraz:GetNumeric with confidence 0.941
              Slots ->
                 Type -> Temperatur (confidence: 1.000)
[20:11:42] [Nlu] was asked to parse input "wie ist diestandardgerät vomstandardgerät im standardraum"
[20:11:42] [Nlu] detected intent Thyraz:GetNumeric with confidence score 0.813 for input "wie ist diestandardgerät vomstandardgerät im standardraum"
              Slots ->
                 Room -> Standardraum


fhem log sagt

Parsed value: wohnzimmer for key: Room
2019.05.21 21:26:34.305 5: Parsed value: temperatur for key: Device


er erkennt raum und gerät also, aber irgendwie geht es auf dem weg zu snips wieder verloren.

oder muss snips-injection auch auf dem rpi von fhem installiert sein?

Update: auch wenn er standardgerät im log schreibt, scheint er den raum und das gerät zu verstehen und ich kann geräte in verschiedenen räumen schalten.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: nanocosmos am 01 Juni 2019, 13:34:19
Würde meine Snips Satelitten und den RPI mit der Snips Base gerne als Spotify / Radio Player  nutzen.
Hat jemand von euch sowas schon im Einsatz?

Hatte mich mal eingelesen und mit mopidy soll es wohl einfach möglich sein, Spotify auf dem Raspi zu nutzen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 01 Juni 2019, 14:45:25
Ich kann dafür den Logitech Media Server und das Squeezebox Modul empfehlen. Funktioniert super, inclusive synchronem multiroom audio
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: nanocosmos am 02 Juni 2019, 19:29:44
Werde ich mal ausprobieren.
Danke für den Tipp!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 03 Juni 2019, 08:47:21
Zitat von: nanocosmos am 01 Juni 2019, 13:34:19
Würde meine Snips Satelitten und den RPI mit der Snips Base gerne als Spotify / Radio Player  nutzen.

Das Problem wird sein, dass sich der Snips-Audio-Server exklusiven Zugriff auf die "Sound-Karte" nimmt. Da müsstest du dann wohl eine zweite verwenden.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: nanocosmos am 03 Juni 2019, 19:04:19
Ah ok. Das ist leider nicht so optimal.
Habe die Satelitten mit einem ReSpeaker versehen und in ein Case gepackt. Da passt keine weitere Soundkarte rein. [emoji848]

Danke für die Info!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 03 Juni 2019, 22:27:00
Bei meinem Snips läuft gerade Internetradio parallel zu den Audioausgaben von Snips. Ahnungslos habe ich folgende configs probiert:
/etc/asound.conf# The IPC key of dmix or dsnoop plugin must be unique
# If 555555 or 666666 is used by other processes, use another one


# use samplerate to resample as speexdsp resample is bad
defaults.pcm.rate_converter "samplerate"

pcm.!default {
    type asym
    playback.pcm "playback"
    capture.pcm "capture"
}

pcm.playback {
    type plug
    slave.pcm "Snips"
}

pcm.Snips {
    type softvol
    slave.pcm "dmixed"
    control {
name "Snips"
card "seeed2micvoicec"
    }
}

ctl.Snips {
    type hw
    card "seed2micvoicec"
}

pcm.MPDplug {
    type plug
    slave.pcm "MPDvol"
}

pcm.MPDvol {
    type softvol
    slave.pcm "dmixed"
    control {
name "MPDvolume"
card "seeed2micvoicec"
    }
}

ctl.MPDvol {
    type hw
    card "seed2micvoicec"
}

pcm.capture {
    type plug
    slave.pcm "array"
}

pcm.dmixed {
    type dmix
    ipc_key 555555
    ipc_perm 0666
    ipc_key_add_uid false
    slave {
    pcm "hw:seeed2micvoicec"
    period_time 0
    period_size 1024
    buffer_size 8192
#    rate 44100
    }
    bindings {
0 0
1 1
    }
}

pcm.array {
    type dsnoop
    slave {
        pcm "hw:seeed2micvoicec"
        channels 2
    }
    ipc_key 666666
}


Edit: Regler "Snips" eingefügt, um mit alsamixer die Sprachausgabe separat regeln zu können.

Auszug aus /etc/mpd.confaudio_output {
type "alsa"
name "My ALSA Device"
device "plug:MPDplug"
mixer_type      "software"
mixer_device "MPDvol"
mixer_control "MPDvolume"
}


Gruß Jens
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 04 Juni 2019, 08:39:05
Ok, spannend. Bei mir hat Snips immer alles blockiert. Muss ich dann wohl wiedermal ausprobieren.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 04 Juni 2019, 15:45:33
@nanocosmos

Welches Case benutzt du, so dass auch der Respeaker reinpasst?

@dirigent
Nutzt du die Radio App, die bei Snips angeboten wird?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 04 Juni 2019, 17:21:07
Ja, allerdings liegt mein FHEM auf einem anderen Server (RPi3+).
https://wiki.fhem.de/wiki/MPD (https://wiki.fhem.de/wiki/MPD)
define Radio MPD 192.168.x.x 6600
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: nanocosmos am 04 Juni 2019, 20:09:35
@Chs007

Nutze dieses Case: https://www.thingiverse.com/thing:3365335

Da drinnen werkelt ein Raspi Zero mit ReSpeaker 2 Mic und einer Box.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 05 Juni 2019, 11:19:24
Danke euch beiden.
Mein FHEM liegt auch auf einem anderen Pi von daher sollte es ja passen.

@nanocosmos
Ok 3D Drucker habe ich nicht, aber so weiße Kästchen gibt es auch im Baumarkt :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 08 Juni 2019, 09:33:47
Hallo zusammen,

irgendwie stehe ich auf dem Schlauch. Ich kann zurzeit normale on:off Geräte steuern, doch das Radio kriege ich nicht aktiviert. Über FHEM Webseite funktioniert es ohne Probleme start - stop - Knopf, aber Snips kann die Anweisung "Spiele Radio SWR3" nicht richtig zuordnen. Lt. Sam Watch wird das Gesprochene richtig erkannt. Ich denke, dass ich ein Fehler im Mapping habe, aber ich sehe es nicht.

Anbei die Einrichtung des Radios.

Vielen Dank.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 08 Juni 2019, 09:55:49
attr <MPD-Device> snipsChannels swr3=playlist swr3

Gruß Jens
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 09 Juni 2019, 15:10:49
Danke das wars :)

Habe jetzt nur das Problem, dass die Snips Ansage, dass das Kommando ausgeführt wurde, direkt das Radio pausiert und dann nicht weiterspielt.
Kann man das irgendwie umgehen, oder die Bestätigungsansage fürs Radio deaktvieren?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 11 Juni 2019, 21:57:20
https://forum.fhem.de/index.php/topic,89548.msg945876.html#msg945876 (https://forum.fhem.de/index.php/topic,89548.msg945876.html#msg945876)

Gruß Jens
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 12 Juni 2019, 12:23:19
Danke für die aktualisierten Configs.

Ich habe die Karte seeed4micvoicec welches keine Audio-Out besitzt.

Theoretisch könnte ich die asound.conf auf die Pi-Klinke ummüntzen?! Ich versuche es mal und gebe Rückmeldung.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 12 Juni 2019, 17:24:12
Hab mir mal dir config für seeed4micvoicec angeschaut. Sollte so passen. Fast alle seeed2micvoicec müssten auf ALSA geändert werden. Den letzten Eintrag unter type dsnoop auf seeed4micvoicec ändern.

Gruß Jens
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 12 Juni 2019, 18:39:32
Danke Jens,

scheint noch nicht so ganz zu klappen:
ALSA lib pcm_dmix.c:1109:(snd_pcm_dmix_open) unable to open slave
alsa_output: Failed to open "My ALSA Device" [alsa]: Failed to open ALSA device "plug:MPDplug": Invalid argument

in der mpg.log

Edit:
OK, komme der Sache näher. Hab in der mpd.conf auf:
device: "plughw:0,0" geändert.

Jedoch höre ich die Snips antworten nicht mehr.
"Error: ALSA lib pcm_dmix.c:1109:(snd_pcm_dmix_open) unable to open slave"
Musik spielt nun normal.
Wahrscheinlich drehe ich mich im kreis.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 12 Juni 2019, 19:03:06
Poste mal die Ausgaben von "aplay -L", "arecord -L" und deine aktuelle asound.conf.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 12 Juni 2019, 19:10:11
    Discard all samples (playback) or generate zero samples (capture)
default
playback
MPDplug
MPDvol
capture
dmixed
array
sysdefault:CARD=ALSA
    bcm2835 ALSA, bcm2835 ALSA
    Default Audio Device
dmix:CARD=ALSA,DEV=0
    bcm2835 ALSA, bcm2835 ALSA
    Direct sample mixing device
dmix:CARD=ALSA,DEV=1
    bcm2835 ALSA, bcm2835 IEC958/HDMI
    Direct sample mixing device
dsnoop:CARD=ALSA,DEV=0
    bcm2835 ALSA, bcm2835 ALSA
    Direct sample snooping device
dsnoop:CARD=ALSA,DEV=1
    bcm2835 ALSA, bcm2835 IEC958/HDMI
    Direct sample snooping device
hw:CARD=ALSA,DEV=0
    bcm2835 ALSA, bcm2835 ALSA
    Direct hardware device without any conversions
hw:CARD=ALSA,DEV=1
    bcm2835 ALSA, bcm2835 IEC958/HDMI
    Direct hardware device without any conversions
plughw:CARD=ALSA,DEV=0
    bcm2835 ALSA, bcm2835 ALSA
    Hardware device with all software conversions
plughw:CARD=ALSA,DEV=1
    bcm2835 ALSA, bcm2835 IEC958/HDMI
    Hardware device with all software conversions


arecord -L
default
playback
MPDplug
MPDvol
capture
dmixed
array
sysdefault:CARD=seeed4micvoicec
    seeed-4mic-voicecard,
    Default Audio Device
dmix:CARD=seeed4micvoicec,DEV=0
    seeed-4mic-voicecard,
    Direct sample mixing device
dsnoop:CARD=seeed4micvoicec,DEV=0
    seeed-4mic-voicecard,
    Direct sample snooping device
hw:CARD=seeed4micvoicec,DEV=0
    seeed-4mic-voicecard,
    Direct hardware device without any conversions
plughw:CARD=seeed4micvoicec,DEV=0
    seeed-4mic-voicecard,
    Hardware device with all software conversions


Mit der asound.conf habe ich mit Halbwissen rumgespielt. Letzter Stand:
# The IPC key of dmix or dsnoop plugin must be unique
# If 555555 or 666666 is used by other processes, use another one


# use samplerate to resample as speexdsp resample is bad
defaults.pcm.rate_converter "samplerate"

pcm.!default {
    type asym
    playback.pcm "playback"
    capture.pcm "capture"
}

pcm.playback {
    type plug
    slave.pcm "dmixed"
}

pcm.MPDplug {
    type softvol
    slave.pcm "dmixed"
    control {
        name "MPDvolume"
        card 0
    }
}

ctl.MPDvol {
    type hw
    card 0
}

pcm.capture {
    type plug
   slave.pcm "hw:1,0"
}

pcm.dmixed {
    type dmix
    ipc_key 555555
    ipc_perm 0666
    ipc_key_add_uid false
    slave.pcm "hw:0,0"

}

pcm.array {
    type dsnoop
    slave {
        pcm "hw:0,0"
        channels 2
    }
    ipc_key 666666
}


Bekomme bei sam test speaker folgende Fehlermeldung:
✖ Error: ALSA lib pcm_dmix.c:1109:(snd_pcm_dmix_open) unable to open slave
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 12 Juni 2019, 19:22:26
# The IPC key of dmix or dsnoop plugin must be unique
# If 555555 or 666666 is used by other processes, use another one


# use samplerate to resample as speexdsp resample is bad
defaults.pcm.rate_converter "samplerate"

pcm.!default {
    type asym
    playback.pcm "playback"
    capture.pcm "capture"
}

pcm.playback {
    type plug
    slave.pcm "Snips"
}

pcm.Snips {
    type softvol
    slave.pcm "dmixed"
    control {
name "Snips"
card "ALSA"
    }
}

ctl.Snips {
    type hw
    card "ALSA"
}

pcm.MPDplug {
    type plug
    slave.pcm "MPDvol"
}

pcm.MPDvol {
    type softvol
    slave.pcm "dmixed"
    control {
name "MPDvolume"
card "ALSA"
    }
}

ctl.MPDvol {
    type hw
    card "ALSA"
}

pcm.capture {
    type plug
    slave.pcm "array"
}

pcm.dmixed {
    type dmix
    ipc_key 555555
    ipc_perm 0666
    ipc_key_add_uid false
    slave {
    pcm "hw:ALSA"
    period_time 0
    period_size 1024
    buffer_size 8192
    }
    bindings {
0 0
1 1
    }
}

pcm.array {
    type dsnoop
    slave {
        pcm "hw:seeed4micvoicec"
        channels 2
    }
    ipc_key 666666
}

Inhalt kopieren
cat > /etc/asound.conf
rechte Maustaste ins putty-Fenster klicken
mit Strg+c abschließen

systemctl restart snips*
alsamixer
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 12 Juni 2019, 19:59:07
Im Alsamixer
Gerät: bcm2835 ALSA                              F1:  Hilfe                │
│    Chip: Broadcom Mixer                            F2:  System-Informationen │
│ Ansicht: F3:[Wiedergabe] F4: Aufnahme  F5: Alle    F6:  Soundkarte auswählen │
│ Element: PCM [dB-Änderung: 3,46]                   Esc: Beenden              │
│                                                                              │
│                          ┌──┐       ┌──┐       ┌──┐                          │
│                          │▒▒│       │▒▒│       │▒▒│                          │
│                          │▒▒│       │▒▒│       │▒▒│                          │
│                          │▒▒│       │▒▒│       │▒▒│                          │
│                          │▒▒│       │▒▒│       │▒▒│                          │
│                          │▒▒│       │▒▒│       │▒▒│                          │
│                          │▒▒│       │▒▒│       │▒▒│                          │
│                          │▒▒│       │▒▒│       │▒▒│                          │
│                          │▒▒│       │▒▒│       │▒▒│                          │
│                          │▒▒│       │▒▒│       │▒▒│                          │
│                          │▒▒│       │▒▒│       │▒▒│                          │
│                          │▒▒│       │▒▒│       │▒▒│                          │
│                          ├──┤       └──┘       └──┘                          │
│                          │OO│                                                │
│                          └──┘                                                │
│                           98      100<>100   100<>100                        │
│                      <   PCM    >MPDvolume    Snips                          │
└──────────────────────────────────────────────────────────────────


MPD funktioniert. Auch über Snips, aber von Snips kommt kein Mucks.

sam test speaker
Testing speaker
✖ Error: ALSA lib pcm_dmix.c:1109:(snd_pcm_dmix_open) unable to open slave

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 12 Juni 2019, 21:36:54
Hast du das Device in mpd.conf auf "plug:MPDplug" geändert? Wenn du dort direkt die Hardware nutzt, blockierst du das Device für Snips.
Mach mal einen neuen Thread auf.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 13 Juni 2019, 08:27:23
Danke Jens für deine Mühe.
Ich habe es geändert, im mpd.log erscheint jedoch die Meldung:

ALSA lib pcm_dmix.c:1109:(snd_pcm_dmix_open) unable to open slave
Jun 13 06:30 : alsa_output: Failed to open "My ALSA Device" [alsa]: Failed to open ALSA device "plug:MPDplug": Invalid argument


Edit:
Habe nun einen neuen Thread eröffnet:
https://forum.fhem.de/index.php/topic,101403.0.html
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 15 Juni 2019, 12:09:49
Hallo zusammen,

habe hier auf Anhieb nichts gefunden.
Zurzeit schalte ich die Somfys Rollos wunderbar über Snips. Mir fehlt jedoch das Kommando, die Rollo auf Position "My" zu fahren:

eventMap    on:ab off:auf go-my:my on:close off:open

Ist dies bereits schon mit dem SnipsMapping möglich?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tehlers am 17 Juni 2019, 17:50:52
Hallo,

ich beschäftige mich seit einer Woche auch mit verschiedenen Spracherkennungsystemen mit lokaler Sprachauswertung und bin am Ende bei Snips gelandet, vor allem wegen des super FHEM-Moduls, danke an @Thyraz!

Nun habe ich ein Problem mit den verschiedenen Räumen. Wenn ich die Standard-App in Snips von @Thyraz benutze, sind ja alle Trainings mit "Standardgerät" und "Standardraum" erzeugt. Erst durch den push via MQTT werden die eigentlichen Räume und Geräte gesetzt. Bei "Standardgerät" funktioniert das ja auch scheinbar, denn nach der "injection" ist bspw. das Gerät Lampe vorhanden und kann geschaltet werden.

Aber jeglicher Versuch einen anderen Raum zu nennen, scheitert. Es funktioniert nur, wenn ich raumübergreifend eindeutige Namen benutze. Ansonsten wird immer der Standardraum des MQTT benutzt. Also bspw:

fhem> set Snips textCommand Schalte Lampe im Schlafzimmer ein

Es geht die Lampe im Wohnzimmer (MQTT Standard [define Snips SNIPS SnipsMQTT wohnzimmer]) an.

fhem> set Snips textCommand Schalte Schlafzimmerlampe an

Es geht die Schlafzimmerlampe an, da "Schlafzimmerlampe" eben ein raumübergreifend eindeutiger snipsName ist, Lampe ist aber sowohl für die Wohnzimmerlampe, als auch für die Schlafzimmerlampe ein snipsName.

Hier die (verkürzte) fhem-Config:


define SnipsMQTT MQTT 192.168.1.77:1883
define Snips SNIPS SnipsMQTT wohnzimmer

attr df snipsName Deckenfluter,Lampe,Licht,wohnzimmerlampe,wohnzimmerlicht,licht_im_wohnzimmer,lampe_im_wohnzimmer
attr df snipsRoom wohnzimmer
attr df snipsMapping SetOnOff:cmdOn=on,cmdOff=off \
GetOnOff:currentVal=state,valueOff=off,valueOn=on \
SetNumeric:currentVal=brightness,cmd=dim,step=20,type=Helligkeit \
GetNumeric:currentVal=brightness,type=Helligkeit

attr lampe_sz_dev snipsName Lampe,Licht,schlafzimmerlampe,schlafzimmerlicht,licht_im_schlafzimmer,lampe_im_schlafzimmer
attr lampe_sz_dev snipsRoom schlafzimmer
attr lampe_sz_dev snipsMapping SetOnOff:cmdOn=on,cmdOff=off \
GetOnOff:currentVal=state,valueOff=off,valueOn=on


Weiß jemand was ich falsch mache? Ich habe schon die Intents bei Snips geforkt und alle Trainings um Wohnzimmer und Schlafzimmer erweitert, dann erkennt der Assistent im Browser die Befehle auch mit meinen Räumen. Das ist im Übrigen auch interessant: Bei den Devices musste ich nur die Namen als Device-Namen zufügen, danach hat der Assistent beim Test die Devices korrekt zugeordnet, bei den Räumen hat das erst geklappt, nachdem ich die Namen auch in den Trainings zugefügt habe.

Viele Grüße

Tim
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 17 Juni 2019, 18:22:06
Was sagt denn sam watch dazu? Erkennt das die Raumangabe?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tehlers am 17 Juni 2019, 19:03:41
Hi,

Zitat von: drhirn am 17 Juni 2019, 18:22:06
Was sagt denn sam watch dazu? Erkennt das die Raumangabe?

also ich habe die alten Ausgaben nicht mehr (und scheinbar wird der Console-Output nicht vollständig geloggt). Aktuell habe ich die selbsterstellten Trainings mit Wohnzimmer und Schlafzimmer laufen. Da wird der Raum eigentlich erkannt (und ich meine, dass das vorher nicht der Fall war, aber das müsste ich dann nochmal mit einer originalen "FHEM-App" aus dem Snips-Store testen). Also aktuell sieht es so aus:


[19:02:36] Watching on localhost:1883 (MQTT)
[19:02:39] [Hotword] detected on site default, for model hey_snips
[19:02:39] [Asr] was asked to stop listening on site default
[19:02:39] [Hotword] was asked to toggle itself 'off' on site default
[19:02:39] [Dialogue] session with id '40250d72-5db3-4da1-8bc4-14c389fb6013' was started on site default
[19:02:39] [AudioServer] was asked to play a wav of 41.1 kB with id 'd571d558-04c0-4721-b1a2-7d85180a9b0d' on site default
[19:02:39] [AudioServer] finished playing wav with id 'd571d558-04c0-4721-b1a2-7d85180a9b0d'
[19:02:39] [Asr] was asked to listen on site default
[19:02:43] [Asr] captured text "schalte die lampe im schlafzimmer an" in 3.0s
[19:02:43] [Asr] was asked to stop listening on site default
[19:02:43] [AudioServer] was asked to play a wav of 93.1 kB with id '852546c6-6e39-4502-a450-0b9cdd021a55' on site default
[19:02:45] [AudioServer] finished playing wav with id '852546c6-6e39-4502-a450-0b9cdd021a55'
[19:02:45] [Nlu] was asked to parse input "schalte die lampe im schlafzimmer an"
[19:02:45] [Nlu] detected intent tehlers:SetOnOff with confidence score 0.922 for input "schalte die lampe im schlafzimmer an"
              Slots ->
                 Device -> Lampe (confidence: 1.000)
                   Room -> Schlafzimmer (confidence: 1.000)
                  Value -> an (confidence: 0.716)
[19:02:45] [Dialogue] New intent detected tehlers:SetOnOff with confidence 0.922
              Slots ->
                 Device -> Lampe (confidence: 1.000)
                   Room -> Schlafzimmer (confidence: 1.000)
                  Value -> an (confidence: 0.716)
[19:02:45] [Nlu] was asked to parse input "schalte die standstandardsendergerät im standardgerät an"
[19:02:45] [Nlu] detected intent tehlers:SetOnOff with confidence score 0.900 for input "schalte die standstandardsendergerät im standardgerät an"
              Slots ->
                 Device -> Standardgerät
                  Value -> an
[19:02:45] [Dialogue] was ask to end session with id 40250d72-5db3-4da1-8bc4-14c389fb6013 by saying 'Ok.'
[19:02:45] [Tts] was asked to say "Ok."
[19:02:45] [AudioServer] was asked to play a wav of 19.5 kB with id '1cbdaae2-da40-4557-8f49-71f91159f4bc' on site default
[19:02:45] [AudioServer] finished playing wav with id '1cbdaae2-da40-4557-8f49-71f91159f4bc'
[19:02:46] [Tts] finished speaking with id 'f52fb15b-07f5-4ac5-941d-8a11d1cb2e2c'
[19:02:46] [Dialogue] session with id '40250d72-5db3-4da1-8bc4-14c389fb6013' was ended on site default. The session ended as expected
[19:02:46] [Asr] was asked to stop listening on site default
[19:02:46] [Hotword] was asked to toggle itself 'on' on site default


Und es geht die Lampe im Wohnzimmer an. :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tehlers am 17 Juni 2019, 20:21:24
So, jetzt nochmal mit aktualisiertem fhem (5.9) und from scratch mit original FHEM-App und danach "set Snips updateModel" (leider das gleiche Problem und es wird genauso "schlafzimmer" erkannt):


[20:16:19] [AudioServer] finished playing wav with id 'dc5133d0-1b06-4353-aab2-666b439f36a5'
[20:16:19] [Tts] finished speaking with id '4e8e06e3-30f4-4206-aa48-d85fc23261ae'
[20:16:19] [Dialogue] session with id 'b814734e-7759-4a1f-a583-418624fa90ad' was ended on site default. The session ended as expected
[20:16:19] [Asr] was asked to stop listening on site default
[20:16:19] [Hotword] was asked to toggle itself 'on' on site default
[20:16:21] [Hotword] detected on site default, for model hey_snips
[20:16:21] [Asr] was asked to stop listening on site default
[20:16:21] [Hotword] was asked to toggle itself 'off' on site default
[20:16:21] [Dialogue] session with id 'c4b92d06-0b2b-444a-a8c3-3c4551ebab30' was started on site default
[20:16:21] [AudioServer] was asked to play a wav of 41.1 kB with id 'ad55d5db-1637-4a3b-aca1-ca8a3bf52dee' on site default
[20:16:21] [AudioServer] finished playing wav with id 'ad55d5db-1637-4a3b-aca1-ca8a3bf52dee'
[20:16:21] [Asr] was asked to listen on site default
[20:16:26] [Asr] captured text "lampe im schlafzimmer einschalten" in 4.0s
[20:16:26] [Asr] was asked to stop listening on site default
[20:16:26] [AudioServer] was asked to play a wav of 93.1 kB with id 'ff7d8431-a927-455c-8de0-6ace66286176' on site default
[20:16:27] [AudioServer] finished playing wav with id 'ff7d8431-a927-455c-8de0-6ace66286176'
[20:16:27] [Nlu] was asked to parse input "lampe im schlafzimmer einschalten"
[20:16:27] [Nlu] detected intent Thyraz:SetOnOff with confidence score 0.755 for input "lampe im schlafzimmer einschalten"
              Slots ->
                  Room -> schlafzimmer (confidence: 1.000)
                 Value -> an (confidence: 1.000)
[20:16:27] [Dialogue] New intent detected Thyraz:SetOnOff with confidence 0.755
              Slots ->
                  Room -> schlafzimmer (confidence: 1.000)
                 Value -> an (confidence: 1.000)
[20:16:27] [Nlu] was asked to parse input "standstandardsendergerät im standardgerät einschalten"
[20:16:27] [Nlu] detected intent Thyraz:SetOnOff with confidence score 0.788 for input "standstandardsendergerät im standardgerät einschalten"
              Slots ->
                 Device -> Standardgerät
                  Value -> an
[20:16:27] [Dialogue] was ask to end session with id c4b92d06-0b2b-444a-a8c3-3c4551ebab30 by saying 'Ok.'
[20:16:27] [Tts] was asked to say "Ok."
[20:16:27] [AudioServer] was asked to play a wav of 19.5 kB with id '1b4e4abe-c73e-4c34-8c7e-612eec5a128e' on site default
[20:16:28] [AudioServer] finished playing wav with id '1b4e4abe-c73e-4c34-8c7e-612eec5a128e'
[20:16:28] [Tts] finished speaking with id 'b0d799cf-773c-415e-b822-7447e8ad3c88'
[20:16:28] [Dialogue] session with id 'c4b92d06-0b2b-444a-a8c3-3c4551ebab30' was ended on site default. The session ended as expected
[20:16:28] [Asr] was asked to stop listening on site default
[20:16:28] [Hotword] was asked to toggle itself 'on' on site default


Und die Lampe im Wohnzimmer geht an...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tehlers am 17 Juni 2019, 21:06:33
Ich denke ich habe das Problem gefunden, ich habe in jedem Zimmer noch einen Temp/Humid Sensor und die Devices habe ich der Einfachheit auch "Schlafzimmer" und "Wohnzimmer" genannt:


attr 2_schlafzimmer snipsName Schlafzimmer
attr 2_schlafzimmer snipsRoom Schlafzimmer
attr 2_schlafzimmer snipsMapping GetNumeric:currentVal=temperature,type=Temperatur \
GetNumeric:currentVal=humidity,type=Luftfeuchtigkeit \
Status:response=Die Temperatur beträgt [ThermoWZ:temperature] Grad bei [ThermoWZ:humidity] Prozent Luftfeuchtigkeit.

attr 4_wohnzimmer snipsName Wohnzimmer
attr 4_wohnzimmer snipsRoom Wohnzimmer
attr 4_wohnzimmer snipsMapping GetNumeric:currentVal=temperature,type=Temperatur \
GetNumeric:currentVal=humidity,type=Luftfeuchtigkeit \
Status:response=Die Temperatur beträgt [ThermoWZ:temperature] Grad bei [ThermoWZ:humidity] Prozent Luftfeuchtigkeit.


Und obwohl das nichts miteinander zu tun hat, scheint es dann ein grundsätzliches Problem zu geben, wenn ein Device heisst wie ein Raum. Also wer das Problem auch hat: Es könnte an sowas liegen. Jetzt (nach Umbenennung) läuft es wie erwartet...

Danke fürs Mitdenken!

Viele Grüße

Tim
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Devender am 20 Juni 2019, 20:41:36
Nabend zusammen,

ich habe mich gerade mit der Installation versucht auseinander zu setzen.
In Richtung FHEM mit Broker lief das soweit ohne Problem.

Bei der Installation von snips selbst hänge ich aber direkt am Anfang.
Die beiden Links aus dem ersten Post:
https://snips.gitbook.io/documentation/installing-snips
https://snips.gitbook.io/documentation/advanced-configuration/advanced-solutions
Sind nicht mehr gültig.

Gehe ich dann auf: https://docs.snips.ai/getting-started/quick-start-raspberry-pi

Wollte ich mit

sudo npm install -g snips-sam
auf meinem Notebook mit debian die Installation ausführen.
Also nicht direkt auf dem RPi, das steht ja auch dort geschrieben.
Bekomme aber den Fehler:
sudo: npm: Befehl nicht gefunden


Kann mir jemand erklären von welche Schlauch ich runter gehen muss?

Danke
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 20 Juni 2019, 20:49:27
Moin,

node.js installiert?

Prerequisites

The prerequisites for this project are:

    A Raspberry Pi​

    An SD card

    A microphone

    Optionally, a speaker

    On your computer, Node (version 7.5.0 or later) and NPM​

    If on Windows, you will need to install Git
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Devender am 20 Juni 2019, 20:56:21
Danke, dass koennte der passende Schlauch gewesen sein  8)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tehlers am 21 Juni 2019, 22:31:15
Hi,

es gibt ja die Möglichkeit per notify eine Aktion auszuführen, wenn Snips ausgelöst wird, also bspw:


define n_snips_listening_wohnzimmer_shield notify Snips:listening_wohnzimmer.* { bla }


Das wird dann beim Auslösen und beim Ende der Snips-Interaktion gestartet. Ich würde gerne aber beim Auslösen was anderes machen, als beim Ende. Ich vermute, dass man das "*" durch irgendwas ersetzen muss, damit es jeweils nur bei Start oder Ende auslöst, aber ich bekomme das irgendwie nicht raus. Hat jemand einen Tipp?

Danke
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tehlers am 22 Juni 2019, 13:56:29
So ich denke, dass ich die Logik jetzt verstanden habe. Also ".*" ist nur die Regex -- hatte ich aus Beispielen. Es matchen dann einfach auch Strings, die noch etwas hinten dran haben, also "listening_wohnzimmer44324234" würde auf "listening_wohnzimmer.*" auch matchen. Hat also nicht mit "{Snipsdevice}:listening_{Raum}.{Status}" oder so zu tun.

Aber inzwischen habe ich in der Hilfe zu Notify (https://wiki.fhem.de/wiki/Notify) gelernt, dass die Variablen $NAME und $EVENT gesetzt werden mit $EVTPART1 bekommt man dann nur den status (bei Snips-listening-Events 1 oder 0), oder $EVTPART0 nur den Eventnamen. Man kann also mit:


define n_snips_listening_wohnzimmer_shield notify Snips:listening_wohnzimmer { if ($EVTPART1 == 1 ) { bla } }


Etwas nur beim Starten ausführen.

Viele Grüße
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 23 Juni 2019, 08:46:07
Guten Morgen,

hat jemand schon eine Lösung warum Snips das Wiedergabegerät nicht erkennt?
Starte das Radio über die Mediacontrols. Wenn ich sage "Stoppe", ertönt die Meldung, dass keine Wiedergabegerät aktiv ist.

Habe ich ggf. Readingsvergessen?

attr Radio userattr snipsChannels:textField-long
attr Radio devStateIcon play:rc_STOP:stop stop:rc_PLAY:play pause:rc_PAUSE:pause error:icoBlitz
attr Radio group Musik
attr Radio icon it_radio
attr Radio loadPlaylists 1
attr Radio player mpd
attr Radio room Musik,Snips
attr Radio snipsChannels swr3=playlist swr3\
wdr2=playlist wdr2\
bigfm=playlist bigfm\
1live=playlist 1live\
wdr4=playlist wdr4\
welleniederrhein=playlist welleniederrhein
attr Radio snipsMapping MediaControls:cmdPlay=play,cmdPause=pause,cmdStop=stop,cmdFwd=next,cmdBack=prev
attr Radio snipsName Radio
attr Radio snipsRoom Wohnzimmer
attr Radio titleSplit 1
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: uwemicro am 14 Juli 2019, 12:47:37
Hallo,
ich habe mal ein Gehäuse für den Raspi gebaut, der Master im runden Gehäuse ist ein Raspi 3A+ mit ReSpeaker 4 Mic, der Satellite ein Raspi Zero WH mit ReSpeaker 2 Mic.

Viele Grüße
Uwe
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: chicco am 14 Juli 2019, 19:24:59
Hallo zusammen,

obwohl mein fhem schon ein paar Jahre alt ist, bin ich hier im Forum noch (fast) neu.
An der Stelle erst mal ein allgemeines Danke an Rudolf, dass er das Projekt auf die Beine gestellt hat.
Danke an all die anderen Entwickler die so fleißig Module und sonstige Sachen entwickelt haben.
Und um den Bogen zu diesem Thema zu schlagen: Danke Thyraz.

Diese Sachen konnte ich mit dem Modul umsetzen:
- Licht schalten
- Heizung abfragen und Werte setzen
- VDR und Kodi fernsteuern
- ein paar Info-Abfragen (Wetter, Datum, Uhrzeit)
- ein eigener Intent um Artikel auf meine Einkaufsliste zu setzen

Mehr gibt meine fhem-Installation nicht her.
Aber ich habe einige Fragen, Anregungen und Wünsche.

1. Gibt es keinen Befehl/Intent um ein Gerät stumm zu schalten? Oder habe ich was übersehen?
Ich habe es mit einem shortcut gelöst.

2. Gibt es die Möglichkeit alle Beispielsätze zu einem Intent zu sehen?
Bsp: ich bin in der Snips-Konsole und gehe auf die fhem-App.
Da ist dann z.B. der Intent SetNumeric, darunter steht "50 examples" und 2 Beispielsätze "Standardgerät auf 50" und "Standardgerät um 10 heller".
Was ist mit den anderen 48 Sätzen? Kann ich die irgendwo sehen?
Ich würde einfach nur gerne wissen was man bei den einzelnen Intents jeweils als Formulierung verwenden kann.

3. Wie bereits erwähnt, habe ich einen eigenen Intent für meine Einkaufsliste gebastelt.
D.h. ich habe eine eigene App erstellt und darin einen Intent "addToList". Dann ein paar Beispielsätze z.B. "setze {ARTIKELNAME} auf die Liste" oder "{ARTIKELNAME} einkaufen".
Dazu einen Slot mit den Name "Artikel" und der Slot-Type ist custom. Im Slot-Type habe ich dann bei den Values alle Artikel eingefügt, die ich in meiner Android-Einkaufslisten-App-Datenbank gespeichert habe, sonst erkennt Snips meine gesprochenen Artikel ja nicht.
Jetzt ist die Frage: Kann ich die Artikel-Bezeichnungen auch per Inject an Snips übergeben?
Das hätte den Vorteil, dass ich die Artikelliste per fhem einfacher pflegen könnte, wenn z.B. mal ein neuer Artikel dazu kommt. Und ich wäre unabhängig von der Snips-Konsole.
Ich habs versucht mit einem dummy-device und habe dort per "attr dummy-device snipsName Butter,Brot,usw." Artikel angelegt, gefolgt von einem "set Snips updateModel".
Aber es hat leider nicht funktioniert, der Befehl "Butter einkaufen" wird dann erkannt als "unknownword einkaufen" bzw. nur "einkaufen".
Muss ich die injizierten Begriffe evtl. noch meinem Intent zuordnen? Wenn ja, wie?

4. Ich habe einen reproduzierbaren Fehler bei dem die TTS-Engine von Snips abstürzt.
Ich habe einen Shortcut angelegt, der schaltet ein Gerät per http-Request.
Wenn ich mir das ganze per snips-watch anschaue, sehe ich dort den gesamten html-Quelltext der vom Request zurückkommt. Dann stürzt die TTS-Engine ab.
Nach einem reboot vom snips-raspi ist alles wieder ok. Vermutlich würde es reichen den entsprechenden Service neu zu starten.
Ich kann das abfangen indem ich hinter dem Request noch ein "return Ok" aufrufe. Der Shortcut sieht so aus:
Katzenklappe öffnen={GetFileFromURL("http://192.168.x.y/index.php?flap=open"); return "Ok.";}
Ich weiß nicht was genau den Absturz verursacht. Vielleicht ist es die Menge an (html-)Text, vielleicht sind es die Sonderzeichen?
Ich kann das zwar abfangen, aber vielleicht macht es Sinn, dass man das direkt im Modul abfängt? Nur so als Anregung.

5. Ich würde gerne mehrere Bezeichnungen/Trigger für einen Shortcut anlegen.
Bsp: die Befehle "nächstes Lied" und "nächstes Video" senden den gleichen Befehl an Kodi:
nächstes Lied={MediaAction("next")}
nächstes Video={MediaAction("next")}
Ich würde es gerne so umbauen:
nächstes Lied,nächstes Video={MediaAction("next")}
Wäre übersichtlicher und spart Pflegeaufwand.
Ist das irgendwie möglich?

6. Gibt es die Möglichkeit Snips temporär auszuschalten?
z.B. Hey Snips: mach mal Pause
und dann lauscht Snips nicht mehr auf das Wakeword.
Dann brauchts natürlich noch einen Befehl um wieder einzuschalten.
Habe schon überlegt auf dem snips-raspi einen webserver zu installieren, dann könnte man einen http-request rüber schicken und so den snips-service ein/ausschalten.
Aber bevor ich da was bastel, wollte ich erstmal fragen.

7. Zur Anleitung noch 2 Anmerkungen.
Im Kapitel "Snips Installation" sind 2 Links die beide auf die Snips-Seite verweisen, aber beide Links geben ein "page not found". War für mich nicht wichtig, denn ich habe es installiert nach der Anleitung die vor einigen Wochen in der ct war.
Die Shortcuts sind in der Anleitung nicht drin. Ich weiß, das ist bekannt, auch dem Thyraz. Aber ich denke es ist ein sehr wichtiges Feature, das sollte in die Anleitung. Ich steuer die meisten Sachen per Shortcut.

So, das war mal ne Menge Text zum Einstand. Ich hoffe ihr könnt mir die eine oder andere Frage beantworten.

Gruß
chicco
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: MadMax-FHEM am 14 Juli 2019, 21:36:09
@uwemicro:

sieht ja wirklich schick aus!

Habe/hatte Snips etwas auf Eis gelegt, da die Spracherkennung noch nicht so wollte wie ich...
...bzw. halt viel Zeit kostet/gekostet hätte... ;)

Weiterer Punkt: selbst wenn ich das mit der Erkennung gut hinbekomme, es fehlt(e) immer (noch) an der Optik...
...aber da hast du ja echt was geschafft...

Wie muss man sich das vorstellen?

Kunsstoffgehäuse mit "Stoffüberzug" oder alles 3D gedruckt!?

Gruß, Joachim
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: uwemicro am 15 Juli 2019, 06:25:32
Hallo,
das Gehäuse stammt aus dem 3D Drucker und ist mit Bespannstoff für Lautsprecher bezogen. Der "Deckel" ist opakes Acrylglas damit man die LED's sehen kann.

Viele Grüße
Uwe
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: homespinner am 16 Juli 2019, 23:32:05
Hallo zusammen!

Echt tolle Arbeit, endlich mal eine schöne Lösung, um das Alexa/Google Geraffel abzulösen  ;D
Leider will sich bei mir ein Phillips Hue Bloom nicht einschalten lassen (bzw. alle Geräte habe ich bisher noch nicht getestet):

Ich bin analog der Anleitung bei GitHub vorgegangen, aber es scheint noch etwas zu fehlen.
sam watch sagt:

[23:10:53] [Asr] captured text "nachttisch ein" in 1.0s
[23:10:53] [Asr] was asked to stop listening on site default
[23:10:53] [Nlu] was asked to parse input "nachttisch ein"
[23:10:53] [Nlu] detected intent Thyraz:SetOnOff with confidence score 1.000 for input "nachttisch ein"
              Slots ->
                 Device -> Nachttisch (confidence: 0.832)
                  Value -> an (confidence: 0.505)
[23:10:53] [Dialogue] New intent detected Thyraz:SetOnOff with confidence 1.000
              Slots ->
                 Device -> Nachttisch (confidence: 0.832)
                  Value -> an (confidence: 0.505)


Im FHEM log steht auf Level 5 Verbose:

2019.07.16 23:10:54 5 : publish received for hermes/intent/Thyraz:SetOnOff, {"sessionId":"9e0817f6-d5fa-4292-aa83-3a9f1bf3db3b","customData":null,"siteId":"default","input":"nachttisch ein","asrTokens":[[{"value":"nachttisch","confidence":0.8316527,"rangeStart":0,"rangeEnd":10,"time":{"start":0.036039993,"end":0.61415046}},{"value":"ein","confidence":0.50485045,"rangeStart":11,"rangeEnd":14,"time":{"start":0.6144896,"end":0.8722443}}]],"asrConfidence":0.64796627,"intent":{"intentName":"Thyraz:SetOnOff","confidenceScore":1.0},"slots":[{"rawValue":"nachttisch","value":{"kind":"Custom","value":"Nachttisch"},"range":{"start":0,"end":10},"entity":"de.fhem.Device","slotName":"Device","confidenceScore":0.8316527},{"rawValue":"ein","value":{"kind":"Custom","value":"an"},"range":{"start":11,"end":14},"entity":"de.fhem.OnOffValue","slotName":"Value","confidenceScore":0.50485045}]}
2019-07-16 23:10:54 SNIPS Snips transmission-state: incoming publish received
2019.07.16 23:10:54 5 : Parsed value: Nachttisch for key: Device
2019.07.16 23:10:54 5 : Parsed value: 9e0817f6-d5fa-4292-aa83-3a9f1bf3db3b for key: sessionId
2019.07.16 23:10:54 5 : Parsed value: default for key: siteId
2019.07.16 23:10:54 5 : Parsed value: 1 for key: probability
2019.07.16 23:10:54 5 : Parsed value: an for key: Value
2019.07.16 23:10:54 5 : Parsed value: nachttisch ein for key: input
2019.07.16 23:10:54 5 : Parsed value: SetOnOff for key: intent


In der FHEM.cfg:

define SnipsMQTT MQTT 10.40.1.12:1883
setuuid SnipsMQTT 5d2df109-f33f-5b15-1e91-51616585c72f312c
define Snips SNIPS SnipsMQTT Zimmer_Michael
setuuid Snips 5d2df109-f33f-5b15-95c6-03d23d230c8813a4
attr Snips IODev SnipsMQTT
attr Snips verbose 5

define HUEDevice10 HUEDevice 10  IODev=HUEBRIDGE1
setuuid HUEDevice10 5d2df10d-f33f-5b15-3584-733e8bcbdfc520cd
attr HUEDevice10 IODev HUEBRIDGE1
attr HUEDevice10 room Snips,Zimmer Michael
attr HUEDevice10 snipsMapping SetOnOff=state,valueOff=off,cmdOn=on,cmdOff=off,GetOnOff=off,valueOff=on
attr HUEDevice10 snipsName Nachttisch
attr HUEDevice10 snipsRoom Zimmer Michael
attr HUEDevice10 subType colordimmer
attr HUEDevice10 webCmd hue:rgb:rgb ff0000:rgb 98FF23:rgb 0000ff:toggle:on:off



Also das Device scheint er korrekt zu erkennen sowie der Intent auch, aber im Log erscheint einfach nicht die Zeile "handleIntentSetOnOff called".
Das Gerät befindet sich im Raum "Snips".
Was mache ich falsch?


Schon mal danke im Voraus + Grüße aus Karlsruhe!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: homespinner am 18 Juli 2019, 23:32:29
So, "Problem" gelöst  8)

Ich vermute, es gibt noch einen kleinen "Bug" im Perl-Modul.
Sobald ich mehr als 1 Gerät in den Snips-Raum aufnehme, funktioniert die Steuerung von allen Geräten wunderbar!
Und ich teste mir den Wolf und wundere mich, warum es einfach nicht funktioniert  ;)
Ich bin bei Perl leider nicht so bewandert, ich denke ggf. findet der Author den Fehler.

Das Beispiel funktioniert also wunderbar.
Danke an den Author des Moduls für die super Arbeit!


Grüße aus Karlsruhe!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: loriot am 25 Juli 2019, 18:50:51
Hallo zusammen,

bin mir nicht sicher, ob ich falsch suche oder als einziger das Problem habe:

snips funktioniert soweit gut und die Integration snips fhem scheint auch zu gehen. Wenn ich snips ein Kommando für fhem gebe, kommt im Event Monitor auch alles einwandfrei an, am Ende heisst es aber immer, "da ist etwas schief gegangen:
2019-07-25 18:38:23 SNIPS Snips transmission-state: incoming publish received
2019-07-25 18:38:23 SNIPS Snips listening_wohnzimmer: 1
2019-07-25 18:38:29 SNIPS Snips transmission-state: incoming publish received
2019-07-25 18:38:29 SNIPS Snips transmission-state: incoming publish received
2019-07-25 18:38:29 SNIPS Snips transmission-state: incoming publish received
2019-07-25 18:38:29 SNIPS Snips lastIntentTopic: hermes/nlu/intentParsed
2019-07-25 18:38:29 SNIPS Snips lastIntentPayload: {"Device":"[b]entertain[/b]","Value":"[b]an[/b]","input":"schalte entertain an","intent":"SetOnOff","probability":1,"requestType":"voice","sessionId":"***","siteId":"default"}
2019-07-25 18:38:29 SNIPS Snips voiceResponse: Da ist etwas schief gegangen.
2019-07-25 18:38:32 SNIPS Snips transmission-state: incoming publish received
2019-07-25 18:38:32 SNIPS Snips listening_wohnzimmer: 0


Im SAM watch sieht es fast gut aus. Ich verstehe nur nicht, was snips mit dem schalte standardgerät an meint?

[18:38:29] [Nlu] detected intent Thyraz:SetOnOff with confidence score 1.000 for input "schalte entertain an"
              Slots ->
                 Device -> Entertain (confidence: 0.839)
                  Value -> an (confidence: 0.853)
[18:38:29] [Dialogue] New intent detected Thyraz:SetOnOff with confidence 1.000
              Slots ->
                 Device -> Entertain (confidence: 0.839)
                  Value -> an (confidence: 0.853)
[18:38:29] [Nlu] was asked to parse input "schalte standardgerät an"
[18:38:29] [Nlu] detected intent Thyraz:SetOnOff with confidence score 1.000 for input "schalte standardgerät an"
              Slots ->
                 Device -> Standardgerät
                  Value -> an


Die Konfiguration sollte eigentlich passen:

...
attr Entertain genericDeviceType switch
attr Entertain room 30_Wohnzimmer,Harmony,Homekit,Snips
attr Entertain snipsMapping setonoff:cmdOn=on,cmdOff=off
attr Entertain snipsName Entertain,TV,entertain
attr Entertain snipsRoom Wohnzimmer


Hat hier jemadn eine Idee?

Gruß
Andreas


Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: homespinner am 25 Juli 2019, 19:53:18
Hallo Andreas,

Hast du mal testweise noch ein weiteres Gerät in der Raum "Snips" aufgenommen?
Bei mir ging da bei nur einem Gerät nur nicht richtig, ab 2 Geräten haben sich alle wunderbar schalten lassen.

Das mit dem input "schalte standardgerät an" ist ganz normal, weil es in dem Intent für den Slot des Gerätenamens (Device) nur den Wert "Standardgerät" gesetzt hat.
Der "lastIntentPayload" ist aber das, was Snips bzw. der NLU wirklich verstanden hat, und in Text umgesetzt wurde.
Das wird dann zum Erkennen des richtigen Gerätes in FHEM durch das Modul verwendet.
Danach wird dann der Intent sowie das gelernte Sprachbeispiel ausgegeben, welcher zu der Anforderung passt, also "schalte standardgerät an".
Kann man schön nachvollziehen, wenn man die App auf der Snips Console forkt  ;)


Grüße aus Karlsruhe,
Michael
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: loriot am 25 Juli 2019, 20:21:40
Hallo Michael,

Danke erst einmal für die schnelle Antwort. Ich habe 4 Geräte im Raum Snips, anscheinend ist es das nicht ;-)

Ich habe aber noch etwas mehr gesucht und ein Problem mit der Injection gefunden (meine ich zumindest). das sah dann so aus, wenn man updateModel aufruft:


$ sudo -u _snips snips-injection -v
[20:07:03.515659] DEBUG:snips_injection_lib::injectable: computing injections dirname from reference dir "/usr/share/snips/assistant"
[20:07:03.516130] ERROR:snips_injection_hermes         : Permission denied (os error 13)


Ich habe alle Dateien unterhalb /usr/share/snips/assistant nun dem _snips Benutzer gegeben (war vorher pi user) und nun sieht die Abarbeitung bei der Injection deutlich besser aus.... Es wundert mich trotzdem etwas. Habe noch einen 2. PI und da warne die Permissions auch alle für den pi User.

Das Problem ist leider dasselbe :-(
Ich suche mal weiter

Gruß
Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: loriot am 25 Juli 2019, 21:39:57
Hallo zusammen, jetzt funktioniert es plötzlich und ich weiß nicht woran es liegt  ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 26 Juli 2019, 08:40:16
Snips ist ziemlich kritisch, was unterschiedliche Sprachen betrifft. Oder Aussprachen. Bei mir wurde z.B. der Computer erst eingeschaltet, als ich ihm die Namen "Kompjuta, Petse" gegeben habe ;). Es hat sich also bewährt, speziell englische Wörter (z.B. Entertain) so zu schreiben, wie ich sie ausspreche. In deinem Fall wär's dann wohl "Entertän, Entertäin, Entatäin" oder so.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: lucca111 am 28 Juli 2019, 15:40:13
Auch bei mir war nach einer Assistant Aktualisierung keine Erkennung meiner Geräte oder Räume mehr möglich. Ich habe darauf hin Snips komplett neu installiert aber das hat auch nichts geholfen. Habe dann den Inhalt des injections Ordner komplett gelöscht und versucht mit updateModel neu zu füllen. Es wurde
aber nichts neues mehr angelegt. Dann habe ich alle Geräte in FHEM aus den Raum Snips entfernt und es erst einmal mit dem anlernen eines einzigen Gerätes versucht. Wieder nichts! Nachdem ich meine Shortcuts in Fhem gelöscht habe ging es dann endlich wieder. Nun habe ich meine gesicherte komplette fhem.cfg wieder eingespielt, einmal updateModel ausgeführt und siehe da... die Welt war wieder in Ordnung.
Die Shortcuts waren bei mir das Problem. Ich hoffe es hilft euch bei Problemen mit der Erkennung auch weiter.  :)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Meck am 29 Juli 2019, 12:08:40
Zitat von: uwemicro am 14 Juli 2019, 12:47:37
Hallo,
ich habe mal ein Gehäuse für den Raspi gebaut, der Master im runden Gehäuse ist ein Raspi 3A+ mit ReSpeaker 4 Mic, der Satellite ein Raspi Zero WH mit ReSpeaker 2 Mic.

Viele Grüße
Uwe

Hallo uwemicro,
Sieht echt super aus. Darf ich fragen, welche Lautsprecher du verwendest?

Gruß
Meck
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: uwemicro am 29 Juli 2019, 23:14:39
Hallo Meck,
die Lautsprecher sind von Visaton, Typ K28.40 - 8 Ohm Artikel Nr. 2945. Als Verstärker habe ich den Stereo 3.7W Class D Audio Amplifier
von Adafruit (PRODUCT ID: 987) verwendet.

Viele Grüße
Uwe
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bart0190 am 30 Juli 2019, 07:20:34
Hallo,
Vielen Dank für die ausführliche Beschreibung vorbereiteten Items.
Bei mir fehlt noch ein klein wenig (anscheinend wirklich nicht viel). Aber ich weiß nicht, was ich mir am besten anschauen soll.

Mikrophon und Lautsprecher funktioniert (mit sam getestet).
"Hey Snips" erkennt er.
Dann habe ich die anderen services auch aktiviert (siehe unten.)

Der Status vom Raspi ist:
Connected to device raspisnips.local

OS version ................... Raspbian GNU/Linux 9 (stretch)
Installed assistant .......... Karlheinz
Language ..................... de
Hotword ...................... hey_snips
ASR engine ................... snips
Status ....................... Live

Service status:

snips-analytics .............. (not running)
snips-asr .................... 0.63.3 (running)
snips-audio-server ........... 0.63.3 (running)
snips-dialogue ............... 0.63.3 (running)
snips-hotword ................ 0.63.3 (running)
snips-nlu .................... 0.63.3 (running)
snips-skill-server ........... 0.63.3 (not running)
snips-tts .................... 0.63.3 (running)


Wenn ich sage "Hey Snips, Sofalicht an" kommt:

pi@raspisnips:~ $ sam watch
[06:07:23] Watching on localhost:1883 (MQTT)
[06:07:30] [Hotword] detected on site default, for model hey_snips
[06:07:30] [Asr] was asked to stop listening on site default
[06:07:30] [Hotword] was asked to toggle itself 'off' on site default
[06:07:30] [Dialogue] session with id '5f9f87ca-338d-40de-8f3d-40a6dce48832' was started on site default
[06:07:30] [AudioServer] was asked to play a wav of 41.1 kB with id '4f32c052-89e8-42f0-835f-5be55368c5c0' on site default
[06:07:31] [AudioServer] finished playing wav with id '4f32c052-89e8-42f0-835f-5be55368c5c0'
[06:07:31] [Asr] was asked to listen on site default
[06:07:32] [Asr] captured text "an" in 1.0s
[06:07:32] [Asr] was asked to stop listening on site default
[06:07:32] [AudioServer] was asked to play a wav of 93.1 kB with id 'a24247f4-54f1-4623-8709-890c445d8e7c' on site default
[06:07:34] [AudioServer] finished playing wav with id 'a24247f4-54f1-4623-8709-890c445d8e7c'
[06:07:34] [Nlu] was asked to parse input "an"
[06:07:34] [Nlu] intent not recognized for "an"
[06:07:34] [AudioServer] was asked to play a wav of 61.1 kB with id 'd3861333-5b7f-43e1-afba-f20692134a82' on site default
[06:07:34] [AudioServer] finished playing wav with id 'd3861333-5b7f-43e1-afba-f20692134a82'
[06:07:34] [Dialogue] session with id '5f9f87ca-338d-40de-8f3d-40a6dce48832' was ended on site default. The session was ended because the platform didn't understand the user
[06:07:34] [Asr] was asked to stop listening on site default
[06:07:34] [Hotword] was asked to toggle itself 'on' on site default


Dann höre ich im Lautsprecher Töne (2x Ding und einen tiefen Klavierton am Ende).

Mein Device List ist:

Internals:
   DEF        5EFA2D
   HM_LAN_MSGCNT 9
   HM_LAN_RAWMSG R3F8A4AB2,0001,0C92E6C3,FF,FFD4,FB80025EFA2D3224CD010100002F
   HM_LAN_RSSI -44
   HM_LAN_TIME 2019-07-29 23:02:03
   IODev      HM_LAN
   LASTInputDev HM_LAN
   MSGCNT     9
   NAME       Wohnzimmer_Licht_Sofa
   NOTIFYDEV  global
   NR         323
   NTFY_ORDER 50-Wohnzimmer_Licht_Sofa
   STATE      off
   TYPE       CUL_HM
   lastMsg    No:FB - t:02 s:5EFA2D d:3224CD 010100002F
   protLastRcv 2019-07-29 23:02:03
   protRcv    8 last_at:2019-07-29 23:02:03
   protSnd    9 last_at:2019-07-29 23:02:03
   protState  CMDs_done
   rssi_HM_LAN cnt:8 min:-48 max:-47 avg:-47.37 lst:-47
   rssi_at_HM_LAN cnt:9 min:-45 max:-44 avg:-44.11 lst:-44
   READINGS:
     2019-07-29 23:02:03   CommandAccepted yes
     2019-05-25 22:12:59   D-firmware      2.6
     2019-05-25 22:12:59   D-serialNr      OEQ1360870
     2019-07-28 10:32:23   PairedTo        0x3224CD
     2019-07-28 10:32:23   R-pairCentral   0x3224CD
     2019-07-28 10:32:23   R-powerUpAction off
     2019-07-28 10:32:23   R-sign          off
     2019-07-28 10:32:23   RegL_00.        02:01 0A:32 0B:24 0C:CD 15:FF 18:00 00:00
     2019-07-28 10:32:23   RegL_01.        08:00 30:06 56:00 57:24 93:5F 94:B3 00:00
     2019-07-29 23:02:03   deviceMsg       off (to vccu)
     2019-07-29 23:02:03   level           0
     2019-07-29 23:02:03   pct             0
     2019-07-28 10:32:22   powerOn         2019-07-28 10:32:22
     2019-07-29 23:02:03   recentStateType ack
     2019-07-29 23:02:03   state           off
     2019-07-29 23:02:03   timedOn         off
   helper:
     HM_CMDNR   251
     cSnd       113224CD5EFA2D0201000000,113224CD5EFA2D0201000000
     dlvlCmd    ++A0113224CD5EFA2D0201000000
     mId        00D8
     regLst     ,0,1,3p
     rxType     1
     supp_Pair_Rep 0
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     io:
       newChn     +5EFA2D,00,00,00
       nextSend   1564434123.57845
       prefIO     
       rxt        0
       vccu       
       p:
         5EFA2D
         00
         00
         00
     mRssi:
       mNo        FB
       io:
         HM_LAN:
           -36
           -36
     prt:
       bErr       0
       sProc      0
       rspWait:
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
       prs        1
     rssi:
       HM_LAN:
         avg        -47.375
         cnt        8
         lst        -47
         max        -47
         min        -48
       at_HM_LAN:
         avg        -44.1111111111111
         cnt        9
         lst        -44
         max        -44
         min        -45
     tmpl:
Attributes:
   IODev      HM_LAN
   autoReadReg 4_reqStatus
   expert     2_raw
   firmware   2.6
   model      HM-LC-Sw1-Pl-DN-R1
   peerIDs    00000000,
   room       Snips
   serialNr   OEQ1360870
   snipsMapping SetOnOff:cmdOn=on,cmdOff=off
   snipsName  Wohnzimmersofalicht,Sofalampe,Lichtsofa,Sofalicht
   snipsRoom  Wohnzimmer
   subType    switch
   webCmd     statusRequest:toggle:on:off



Text to speach aus FHEM heraus bringt
set Snips say siteId="default" text="Dies ist ein Test"
keinen Ton/Sprache aber diese watch am SnipsRaspi:
pi@raspisnips:~ $ sam watch
[06:10:49] Watching on localhost:1883 (MQTT)
[06:11:04] [Tts] was asked to say "Dies ist ein Test"
[06:11:04] [AudioServer] was asked to play a wav of 40.4 kB with id 'd3d4ea86-c189-4c0a-bfa4-a2cc917bb7ea' on site default
[06:11:06] [AudioServer] finished playing wav with id 'd3d4ea86-c189-4c0a-bfa4-a2cc917bb7ea'
[06:11:06] [Tts] finished speaking with id '0'


Ich habe im Moment das eine Device versucht zu integrieren, wahrscheinlich habe ich es noch nicht richtig gemacht.

set Snips updateModel in FHEM hab ich am Ende gemacht.

Für Tipps was ich prüfen / ändern kann bin ich sehr dankbar.

lg
bart


Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Meck am 30 Juli 2019, 10:18:32
Zitat von: uwemicro am 29 Juli 2019, 23:14:39
Hallo Meck,
die Lautsprecher sind von Visaton, Typ K28.40 - 8 Ohm Artikel Nr. 2945. Als Verstärker habe ich den Stereo 3.7W Class D Audio Amplifier
von Adafruit (PRODUCT ID: 987) verwendet.

Viele Grüße
Uwe

Hallo uwemicro,

Bin echt am überlegen, ob ich mir die Teile auch dazu beschaffen soll. Hast du das Gehäuse selbst konstruiert? Finde super ansprechend. Wie ist die Klangqualität? Würdest du die Dateien für das Gehäuse zur Verfügung stellen?
Gruß

Meck
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 30 Juli 2019, 10:24:04
Moin,
#bart0190

Frage: Sprichst Du den Satz in 1 durch?
Wenn ja, nach 'Hey Snips' gehört eine Pause, bis der Quittierungston ertönt. Dann versuch mal einen ganzen Satz, also z.B. 'schalte das Sofalicht an (oder ein)'.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bart0190 am 30 Juli 2019, 16:18:12
Hallo Andreas,
Danke für die schnelle Antwort. Ja, ich habe mit und ohne Pause probiert (also Pause bis der Ton kommt).

Weiß nicht ob das mit dem nicht funktionierenden TTS zusammenhängt. Ich werde noch ein 2. Device probieren.

Lg
bart
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bart0190 am 30 Juli 2019, 19:01:19
Hallo,
So, habe nun 2. Device und jetzt habe ich im "sam watch" gesehen, dass wenn ich sage
"Lampe einschalten"
versteht er
"laut hell einschalten". :(

Muss ich irgendwo Wörter anlernen?

lg
bart
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: uwemicro am 30 Juli 2019, 20:15:19
Hallo Meck,
schicke mir mal eine PM, dann kann ich Dir die STL Dateien senden.

Viele Grüße
Uwe
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bart0190 am 30 Juli 2019, 23:13:51
Hi,
So, jetzt hab ich es so ziemlich eingegrenzt. Es ist anscheinend so, dass Snips mich sehr schlecht versteht. Hab herausbekommen, dass er das Wort "Temperatur" gut versteht. Damit habe ich einem Device diesen SnipsName als Attribut gegeben und schon kann man mit
"Hey Snips, Temperatur ein"
die Lampe einschalten.

Das HotWord "Hey Snips" versteht er aber praktisch immer, egal ob laut, leise, weit weg, oder nahe.

Was kann es nun sein, dass er die anderen Wörter so falsch interpretiert?  ???
"Lampe" versteht er z.B. gar nicht.

lg
bart
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bart0190 am 30 Juli 2019, 23:41:57
Hi,
Ich glaube ich bin nun einen Schritt weiter. Ich habe nun beim Assistenten beim SetOnOff-Intent
"Schalte Küchenlicht ein" hinzugefügt.
Wenn ich nun sage "Küchenlicht ein", klappt es. Auch mit "Küchenlicht ausschalten".

---------
Edit: So, hab es nun verstanden. Für andere, denen es auch nicht ganz klar zu Beginn ist: Mann muss im console.snips.ai Assistenten im "Value" "Room" und "Devices" seine eigenen Namen eingeben.
Dann in FHEM nur mehr den Device (Snips)Namen und den Snips Raum. Ich schaff das damit sogar zweisprachig. :)


lg
bart
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: delta8585 am 31 Juli 2019, 13:13:06
Zitat von: bart0190 am 30 Juli 2019, 23:41:57
---------
Edit: So, hab es nun verstanden. Für andere, denen es auch nicht ganz klar zu Beginn ist: Mann muss im console.snips.ai Assistenten im "Value" "Room" und "Devices" seine eigenen Namen eingeben.
Dann in FHEM nur mehr den Device (Snips)Namen und den Snips Raum. Ich schaff das damit sogar zweisprachig. :)

lg
bart

Hallo,
wo kann ich denn im "im console.snips.ai Assistenten" die Namen eintragen?
Hast du dafür einen Screenshot oder ähnliches?

Gruß
Johannes
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 31 Juli 2019, 13:23:53
@bart0190: Ich denke da bist du auf dem falschen Weg. Kann man natürlich machen, ist aber nicht so gewollt bzw. notwendig. Deine Namen/Räume etc. werden über inject in deinen Assistenten injiziert.
Also nach "sam install assistant" in FHEM "set Snips updateModel" machen. Das ist ja gerade das tolle an der injection.
Hoffe ich konnte weiterhelfen.

Gruß Jonas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bart0190 am 31 Juli 2019, 14:28:05
Hallo Jonas,
Danke für den Tipp, mach so natürlich auch mehr Sinn. Jetzt klappt es auch. :D Was ich nicht gemacht hatte, ist nach dem Assistenten-Download nochmal ein
set Snips updateModel
im FHEM auszulösen.
Jetzt funktioniert es.

@delta8585 (Johannes):
Jetzt habe ich es richtig gemacht: Hier ein  Beispiel von meinem Küchenlicht:
attr Kueche_Licht_Herd room Snips,Kueche
attr Kueche_Licht_Herd snipsRoom Küche,Kueche,Kosina
attr Kueche_Licht_Herd snipsMapping SetOnOff:cmdOn=on,cmdOff=off
attr Kueche_Licht_Herd snipsName Licht,Lampe,Lampara,Lus
set Snips updateModel


in console.snips.ai hast du ja sicher schon einen Assistenten angelegt. Deutsch als Sprache auswählen und dann im Store (rechts oben nach FHEM) suchen und auswählen. Dort dann z.B. auf "SetOnOff" klicken und dort die Synonyme für dein auf/zu eintragen. (s. Anhang).
Ich habe dort auch spanische Worte eingefügt zum Ausprobieren - klappt auch gut. :)
Dann Speichern, und auf Download, Kommando für sam kopieren und am SnipsRaspi den Befehl einfügen.
Dann nach erfolgtem Download nochmal in FHEM
set Snips updateModel
machen.
lg
bart
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: s710 am 08 August 2019, 13:21:26
Hallo zusammen,

will mich nun auch mal in Snips versuchen, und habe mir entsprechende Hardware gekauft:
- Raspi 3 (hatte ich noch)
- Matrix Voice Micro HAT
- Billige Boxen mit Klinke + USB (https://www.amazon.de/dp/B01HDR5EIK/ref=pe_3044161_189395811_TE_SCE_dp_1)
- Raspi Zero W
- ReSpeaker 2-Mics Pi HAT (https://www.exp-tech.de/plattformen/respeaker/8486/seeed-studio-respeaker-2-mics-pi-hat)
- Mini-Speaker mit JST-Stecker (https://www.amazon.de/dp/B07FT9CFY4/ref=pe_3044161_185740101_TE_item)

Ich habe jetzt erstmal die Basisstation auf dem Pi 3 in Angriff genommen. Dafür ein frisches Raspbian Stretch drauf, das Kernel-Modul für Matrix Voice installiert, und anschließend Snips (alles gemäß Anleitung von Snips). Dann einen Assistanten erstellt mit Wetter (https://console.snips.ai/app-editor/bundle_7ZYEq522Ang) und Wecker (https://console.snips.ai/store/de/skill_61Vz8lVkXQbM) Skills.

So weit läuft das alles:


~> sam status

Connected to device 10.0.0.30

OS version ................... Raspbian GNU/Linux 9 (stretch)
Installed assistant .......... Home assistant
Language ..................... de
Hotword ...................... hey_snips
ASR engine ................... snips
Status ....................... Live

Service status:

snips-analytics .............. (not running)
snips-asr .................... 0.63.3 (running)
snips-audio-server ........... 0.63.3 (running)
snips-dialogue ............... 0.63.3 (running)
snips-hotword ................ 0.63.3 (running)
snips-nlu .................... 0.63.3 (running)
snips-skill-server ........... 0.63.3 (running)
snips-tts .................... 0.63.3 (running)


Mit einem "Hey Snips, wie ist das Wetter?" o.ä. kann ich auch problemlos das Wetter abfragen, und mir wird die Antwort vorgesprochen. D.h. Mikrofon geht, Lautsprecher gehen, Snips scheint zugehen.

Ich habe allerdings 3 kleine Problemchen:

1) Kein Audio-Feedback
Ich musste in /etc/snips.toml den Parameter snips-dialogue / sound_feedback_disabled_default auf true setzen. Tu ich das nicht, erkennt er zwar das Hotword, will dann aber einen Ton abspielen, um sich dann kurze Zeit später zu beschweren, dass eine Komponente nicht rechtzeitig fertig geworden ist:


[21:03:42] [Hotword] detected on site default, for model hey_snips
[21:03:42] [Asr] was asked to stop listening on site default
[21:03:42] [Hotword] was asked to toggle itself 'off' on site default
[21:03:42] [Dialogue] session with id '03ffd07c-1602-4fb9-a8ca-872a33e204cb' was started on site default
[21:03:42] [AudioServer] was asked to play a wav of 41.1 kB with id 'fc9e5496-279e-481b-9c7d-559b01903ff1' on site default
*pause*
[21:03:58] [Dialogue] session with id '03ffd07c-1602-4fb9-a8ca-872a33e204cb' was ended on site default. The session was ended because one of the component didn't respond in a timely manner
[21:03:58] [Asr] was asked to stop listening on site default
[21:03:58] [Hotword] was asked to toggle itself 'on' on site default


Ich vermute, er versucht dann, das .wav-File für das Feedback des erkannten Hotwords zu spielen, was - warum auch immer - nicht klappt, und die restliche Ausführung blockiert. Woran kann das liegen? Prinzipiell spielt Snips doch problemlos Audio ab?

2) Audio bricht frühzeitig ab

Habe bisher nur mit dem Wecker und dem Wetter experimentiert, aber insbesondere bei den Skills für den Wecker bricht die Ausgabe des Audio immer frühzeitig ab. Er beginnt, die Antwort vorzulesen, aber dann *zack* Ton aus. Ich hab keine Ahnung woran das liegen könnte. Damit ist das System natürlich mehr oder weniger unbrauchbar  :-\

3) Hotword kann nicht ausgetauscht werden
Wenn ich das Snips-Script ausführe, um ein neues Hotword aufzuzeichnen, komm ich in eine Endlosschleife, in der er immer wieder behauptet, es gäbe zu viel Hintergrundlärm, und ich soll das Wort nochmal aufnehmen:


WARNING: there seems to be too much noise in your environment please retry to record this sample by following the instructions.
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.bluealsa.device'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4996:(snd_config_expand) Args evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM bluealsa
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.bluealsa.device'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4996:(snd_config_expand) Args evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM bluealsa
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock


Press enter to record one sample, say your hotword when "recording..." shows up


Im Raum ist es aber zu 100% leise. Ich hab alle Fenster zu gemacht, alle Geräte aus, sogar die tickende Uhr in den anderen Raum gebracht. Einen Lüfter habe ich nicht auf dem Pi, der noch stören könnte, also ist wirklich alles mucksmäuschenstill. Ausserdem versteht er mich ja sehr gut, ein "Hey Snips" klappt immer, egal welche Entfernung, und auch wenn ich nicht laut spreche. Also scheint es da noch ein anderes Problem zu geben?

Mit einem arecord recording.wav -f S16_LE -r 16000 -d 2 && aplay recording.wav und einer kurzen Testaufnahme kann ich auch keinerlei Störgeräusche hören.


Ich hoffe, dass hier jemand schlaues unterwegs ist, der mir bei der Behebung der Probleme helfen kann. Im Snips-Forum hatte ich bislang leider kein Glück. Ist auch etwas seltsam, da ich schon sagen würde, dass ich eine ziemliche Standardinstallation habe. Auf dem Pi ist auch ansonsten nichts auf, ausser Snips.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: uwemicro am 08 August 2019, 20:33:20
Hallo,
wenn jemand das Gehäuse nachbauen möchte, unter

www.uwe-magnus.de/Snips/Snips.zip (http://www.uwe-magnus.de/Snips/Snips.zip)

können die Daten für den 3D Druck heruntergeladen werden.

Viele Grüße
Uwe
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: chicco am 09 August 2019, 01:23:46
Hallo,

@s710
zu Punkt 1+2 kann ich nichts sagen, aber zu Punkt 3.
Als halb-Trekkie wollte ich das Hotword auf "Computer" umstellen und bin zuerst auch in der Endlosschleife gelandet. Dann habe ich das Mikro (PS3 Eye) auf den Schreibtisch neben die Tastatur gestellt, also ca. 40-50cm Entfernung zu meinem Mund, und dann hat es geklappt, ca. 5 mal Computer gesagt und es wurde angenommen.
Du kannst also mal versuchen näher ans Mikro zu gehen bzw. das Mikro näher an dich ran holen.
Aber die Hotword-Erkennung war damit eher schlecht bzw. ich musste immer laut Computer sagen. Bin wieder zurück zu Hey Snips und versuche es in Zukunft irgendwann nochmal, vielleicht ist ja dann der Erkennungsalgorithmus besser.

@all
Darf ich nochmal an meine Fragen aus #829 erinnern? Oder bin ich nach 3 Wochen schon zu ungeduldig? Die Fragen 3+5 wären die interessantesten für mich.

Gruß
chicco
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Devender am 09 August 2019, 21:28:06
Zitat von: chicco am 14 Juli 2019, 19:24:59

- ein eigener Intent um Artikel auf meine Einkaufsliste zu setzen

Gruß
chicco

wo ich es gerade sehe  8)
Könntest du mir den Intent zur Verfügung stellen bzw. mir kurz die Schritte erklären wie ich diesen anlege?
Ich probiere mich da schon etwas durch, das will aber nicht so wie ich mir das denke...

Danke Dirk
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: chicco am 10 August 2019, 01:44:09
Hallo Dirk,

im Prinzip habe ich es schon beschrieben, alles was ich in #829 unter Punkt 3 schreibe, bevor ich die Frage stelle ob die Artikel auch per inject an snips übergeben kann.
Wenn da was unklar ist, musst du bitte genauer fragen.

Aber ich habe die App eben in der Snips-Console freigegeben, suche nach "ShApp" (Shopping-App, mir ist damals kein besserer Name eingefallen), Haken bei "Only show apps with actions" entfernen.

In fhem bekommt beim Snips-Device das Attribut snipsIntents diesen Inhalt:
addToList=snipsAddToList(Artikel)

Dann noch die Funktion snipsAddToList() in die 99_myUtils.pm einbauen und dort mit dem übergebenen Artikel machen was auch immer du machen willst.
Ich schreibe den Artikel in eine mySQL-DB und wenn ich das nächste mal meine Einkaufslisten-App auf dem Handy öffne, wird die mySQL-DB abgefragt und der Artikel wird in der App auf die Liste gesetzt.

Gruß
chicco
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: s710 am 13 August 2019, 08:13:09
Zitat von: chicco am 09 August 2019, 01:23:46
Hallo,

@s710
zu Punkt 1+2 kann ich nichts sagen, aber zu Punkt 3.
Als halb-Trekkie wollte ich das Hotword auf "Computer" umstellen und bin zuerst auch in der Endlosschleife gelandet. Dann habe ich das Mikro (PS3 Eye) auf den Schreibtisch neben die Tastatur gestellt, also ca. 40-50cm Entfernung zu meinem Mund, und dann hat es geklappt, ca. 5 mal Computer gesagt und es wurde angenommen.
Du kannst also mal versuchen näher ans Mikro zu gehen bzw. das Mikro näher an dich ran holen.
Aber die Hotword-Erkennung war damit eher schlecht bzw. ich musste immer laut Computer sagen. Bin wieder zurück zu Hey Snips und versuche es in Zukunft irgendwann nochmal, vielleicht ist ja dann der Erkennungsalgorithmus besser.

@all
Darf ich nochmal an meine Fragen aus #829 erinnern? Oder bin ich nach 3 Wochen schon zu ungeduldig? Die Fragen 3+5 wären die interessantesten für mich.

Gruß
chicco

Also ich war wirklich 10cm vom Mikrofon (der Pi ist noch unverbaut und nackt einfach an die Kabel gehängt), und es ist ein Matrix Voice mit 7 Mikrofonen. Von 4m Entfernung kann ich leise vor mich "Hey Snips" murmeln und er triggert noch. Also scheint da irgendwas kaputt zu sein.

Kann ich fragen, welche Raspbian-Version und welchen Kernel du hast? Nachdem ich mit Buster schon ins Klo gegriffen habe (kein offizieller Snips Support) hab ich Stretch drauf gemacht, damit dann zuvor genannte Probleme. Nach etwas googeln konnte ich rausfinden, dass es scheinbar Probleme zwischen PulseAudio und Alsa gibt seit Kernel 4.19.
Habe daher gestern verzweifelt versucht, ein Stretch mit Kernel 4.14 ans laufen zu bekommen. Scheiterte an der Nichtverfügbarkeit der Matrix Voice Treiber, wobei ich da gerade mit deren Support in Kontakt bin.

Alles in allem unterm Strich eher ernüchternd. Ich hab nun wirklich nichts exotisches. Ein Simpler Pi 3B, und okay, halt ein Matrix Voice Mikrofon. Aber hätte echt erwartet bzw. mir gewünscht, dass das alles etwas mehr straight vorward wäre bzw. einfach laufen würde. Ich doktor da schon ne Woche rum, ohne es ans laufen zu bekommen  :'(
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Devender am 13 August 2019, 21:20:58
Zitat von: chicco am 10 August 2019, 01:44:09
Hallo Dirk,

im Prinzip habe ich es schon beschrieben, alles was ich in #829 unter Punkt 3 schreibe, bevor ich die Frage stelle ob die Artikel auch per inject an snips übergeben kann.
Wenn da was unklar ist, musst du bitte genauer fragen.


Vielen Dank. Ich habe deine App geladen und bei mir in der Installation eingebunden. Die ersten Test haben funktioniert.  ;D
Das hat mir auch geholfen ein besseres Verständnis zu erlangen wei das ganze in der snips.ai funktioniert.

Akuell lasse ich mir mit den Befehlen das PostIt Modul befüllen. Deine App-Idee ist aber auch eine gute Idee.

Du hast den WAF auf jeden Fall erhöht. 8)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: chicco am 14 August 2019, 00:37:34
Hallo,

@s710
Raspbian GNU/Linux 9 (stretch)
Kernel: 4.14.98-v7+

@Devender
Bitte gerne.
Und wäre es nicht schön, wenn du neue Begriffe für dein PostIt-Modul einfach per fhem injecten könntest? (anstatt den Weg über die Snips-Console zu nehmen)

Gruß
chicco
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: s710 am 14 August 2019, 08:23:08
Okay ich hab jetzt am Ende doch alles hinbekommen, auch wenn es etwas eine Odysee war. Wie es scheint, gibt es ab Kernel 4.19 größere Probleme zwischen PulseAudio und ALSA, worunter auch Snips leidet. Das führt dazu, dass das Hotword-Feedback alles blockiert, so dass man es abschalten muss. Inbesondere immer wieder abbrechendes Audio scheint eine Folge von 4.19 zu sein.

Habe mir gestern daher ein Stretch Lite Image von 2018 drauf gezogen, was noch den 4.14er Kernel hat (wäre sicher auch anders gegangen, bin diesbezüglich aber nicht so bewandert). Ich konnte dann allerdings das Matrix Voice Mikrofon nicht mehr verwenden, da deren Kernel Modul nur gegen 4.19 baut (gab wohl nen breaking API change zw. 4.14 und 4.19). Bin dann auf ein Seeed Studio ReSpeaker Mic Array v2.0 ausgewichen, das ich da hatte (hab mir vor ner Woche nen Schwung Hardware geholt und wollte u. a. die Mikrofone gegeneinander vergleichen). Das ReSpeaker wird über USB angeschlossen und wurde einfach direkt erkannt.

Dann schwups Snips installiert und siehe da, alles funktioniert tadellos. Konnte nun auch das eigene Hotword aufzeichen. Habe es aber direkt wieder verworfen, da es, wie an anderer Stelle schon erwähnt, kaum erkannt wird, nur wenn man sehr laut und deutlich spricht, was es unbrauchbar macht. Schade.

Ansonsten bin ich vom ReSpeaker Mic Array 2.0 relativ begeistert. Hab das Teil auf dem Tisch im Arbeitszimmer liegen, und kann es problemlos vom Bett im Schlafzimmer nebenan bedienen.

Falls hier noch wer vorbei kommt und mit 4.19 Kerneln ein Problem hat, hier gibt es wohl Workarounds für Snips (https://community.matrix.one/t/matrixio-kernel-modules-broken/2403/26). Man muss in der /etc/snips.toml beim Audio-Server ein Environment="PA_ALSA_PLUGHW=1" eintragen. Analog ggfs. noch in die systemd Scripte.
Habe das ganze allerdings nicht getestet.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: uwemicro am 14 August 2019, 20:04:35
@s710

Hallo,
also ich habe letztens das Matrix Voice Mikrofon Array mit Raspian Stretch Lite und dem 4.41er Kernel zum laufen gebracht.
(https://community.matrix.one/t/no-longer-necessary-kernel-modules-4-19-workaround/2413/16 (https://community.matrix.one/t/no-longer-necessary-kernel-modules-4-19-workaround/2413/16)) wobei ich gerade gesehen habe das es jetzt wohl nicht mehr nötig ist.
Was ich leider nicht hinbekommen habe ist das Matrix Voice auch für die Soundausgabe zu benutzen.

Viele Grüße
Uwe
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: s710 am 15 August 2019, 10:20:37
Zitat von: uwemicro am 14 August 2019, 20:04:35
@s710

Hallo,
also ich habe letztens das Matrix Voice Mikrofon Array mit Raspian Stretch Lite und dem 4.41er Kernel zum laufen gebracht.
(https://community.matrix.one/t/no-longer-necessary-kernel-modules-4-19-workaround/2413/16 (https://community.matrix.one/t/no-longer-necessary-kernel-modules-4-19-workaround/2413/16)) wobei ich gerade gesehen habe das es jetzt wohl nicht mehr nötig ist.
Was ich leider nicht hinbekommen habe ist das Matrix Voice auch für die Soundausgabe zu benutzen.

Viele Grüße
Uwe

Für mich hat sich das Voice erstmal erledigt, muss es heute zurück schicken weil sonst die WR Frist verstreicht. Meinen 3,5mm Speaker hab ich einfach normal am Raspbi eingesteckt, die Ausgabe vom Matrix Voice hatte ich nicht versucht.


Aber heißt das, dass man mit Kernel 4.19 und Environment="PA_ALSA_PLUGHW=1" nun alles zum laufen bekommt? Ich konnte das noch nicht probieren.

Ich habe nämlich noch einen Pi Zero, den ich als Satellit zusammen mit einem Respeaker 2 Mics Pi HAT einrichten will, mit Kernel 4.14 baut aber deren Treiber nicht (gem. HowTo hier: https://docs.snips.ai/articles/raspberrypi/hardware/microphones#respeaker-mic-array-2-0). D.h. hier sitz ich gerade auch auf dem Trockenen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: uwemicro am 16 August 2019, 06:35:38
Hallo,
ich habe drei Satelliten mit Pi Zero WH und dem Respeaker 2 Mic im Einsatz. Mit dem "normalen" Raspian Stretch Lite (vom April).
Die Soundausgabe funktioniert auch über den Lautsprecheranschluss des Respeaker 2 Mic.

Viele Grüße
Uwe
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: s710 am 16 August 2019, 07:52:55
Perfekt, danke für die Info, dann probier ichs mal.

[edit] Wo ich da gerade dein selbergemachtes Gehäuse sehe: Wie ist denn so die Mikrofonperformance im Vergleich zu ganz nackt ohne Gehäuse?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: uwemicro am 16 August 2019, 19:31:44
Hallo,
der Klang ist im Gehäuse besser. Während der Softwareinstallation hatte ich einen Lautsprecher auf dem Tisch liegen, da mußte ich erstmal ein Stück Moosgummi unterlegen damit es nicht so schepperte.
Aber ohne Gehäuse klingen Lautsprecher eigentlich nie so gut wie mit.

Viele Grüße
Uwe
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: s710 am 19 August 2019, 08:16:16
Zitat von: uwemicro am 16 August 2019, 19:31:44
Hallo,
der Klang ist im Gehäuse besser. Während der Softwareinstallation hatte ich einen Lautsprecher auf dem Tisch liegen, da mußte ich erstmal ein Stück Moosgummi unterlegen damit es nicht so schepperte.
Aber ohne Gehäuse klingen Lautsprecher eigentlich nie so gut wie mit.

Viele Grüße
Uwe


Achso nein ich meinte das Mikrofon. Das ist ja dann auch mit im Gehäuse verpackt. Wollte wissen wie viel schlechter es dann reagiert in Sachen Sprachsteuerung.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: uwemicro am 19 August 2019, 23:43:07
Hallo,
sorry, nicht richtig gelesen....
Habe es eben mal ausprobiert, ging auch bei ca. 5 m Entfernung. Das Gehäuse ist ja auch Schalldurchlässig und nicht geschlossen.

Viele Grüße
Uwe
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: s710 am 30 August 2019, 09:50:35
Okay, gut zu wissen. Bin kein Tontechniker, ich dachte nur, sobald "irgendwas" drumrum ist (wenn auch mit Löchern) wirkt sich das negativ auf die Erkennung aus.

Wärst du evtl. bereit die STL-Files deiner Gehäuse zu teilen?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: uwemicro am 30 August 2019, 23:52:01
Hallo,
siehe Antwort #854, da habe ich einen Link gepostet unter dem Du ein ZIP File mit den Daten herunterladen kannst.

Viele Grüße
Uwe
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: s710 am 05 September 2019, 15:17:05
Ah in der Tat, sehr cool, danke. Super Arbeit.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bart0190 am 08 September 2019, 16:42:33
Hi,
Zuerst einmal vielen Dank für die tolle Arbeit hier. Bei mir läuft ein Raspi 3 mit Snips drauf und es klappt, dass ich schon über eigenes Wake-Word Lichter ein und ausschalten kann. Auch höre ich im Lautsprecher den Quittierton, wenn er das Wake-Word erkennt bzw. den Befehl ausführt.
Was aber nicht klappt ist das TTS. Im "sam watch" zeigt er auch an, dass er was sagen will, tut es aber nicht. Wenn ich von FHEM einen Befehl schicke, dass er was sagen soll, hört man auch nichts. Muss man noch was extra installieren?

Mein sam status ist:
OS version ................... Raspbian GNU/Linux 9 (stretch)
Installed assistant .......... Isabella
Language ..................... de
Hotword ...................... hey_snips
ASR engine ................... snips
Status ....................... Live

Service status:

snips-analytics .............. (not running)
snips-asr .................... 0.63.3 (running)
snips-audio-server ........... 0.63.3 (running)
snips-dialogue ............... 0.63.3 (running)
snips-hotword ................ 0.63.3 (running)
snips-nlu .................... 0.63.3 (running)
snips-skill-server ........... 0.63.3 (not running)
snips-tts .................... 0.63.3 (running)


sam watch bringt:

[15:39:32] Watching on localhost:1883 (MQTT)
[15:39:37] [Hotword] detected on site default, for model hotword_jeanny
[15:39:37] [Asr] was asked to stop listening on site default
[15:39:37] [Hotword] was asked to toggle itself 'off' on site default
[15:39:37] [Dialogue] session with id '667c3ef6-4c8e-4c32-99c0-aa330d93ac75' was started on site default
[15:39:37] [AudioServer] was asked to play a wav of 41.1 kB with id '7c7df768-9149-4e56-a769-544f0eb93281' on site default
[15:39:38] [AudioServer] finished playing wav with id '7c7df768-9149-4e56-a769-544f0eb93281'
[15:39:38] [Asr] was asked to listen on site default
[15:39:42] [Asr] captured text "schalte das lus in der küche ein" in 4.0s
[15:39:42] [Asr] was asked to stop listening on site default
[15:39:42] [AudioServer] was asked to play a wav of 93.1 kB with id '1aedd342-cacd-4c67-ade0-7a6a5663ad24' on site default
[15:39:44] [AudioServer] finished playing wav with id '1aedd342-cacd-4c67-ade0-7a6a5663ad24'
[15:39:44] [Nlu] was asked to parse input "schalte das lus in der küche ein"
[15:39:44] [Nlu] detected intent bart0190:SetOnOff with confidence score 0.469 for input "schalte das lus in der küche ein"
              Slots ->
                 Device -> Lus (confidence: 0.891)
                   Room -> Küche (confidence: 1.000)
                  Value -> an (confidence: 0.737)
[15:39:44] [Dialogue] New intent detected bart0190:SetOnOff with confidence 0.469
              Slots ->
                 Device -> Lus (confidence: 0.891)
                   Room -> Küche (confidence: 1.000)
                  Value -> an (confidence: 0.737)
[15:39:44] [Nlu] was asked to parse input "schalte das standardgerät in der standardraum ein"
[15:39:44] [Nlu] detected intent bart0190:SetOnOff with confidence score 0.279 for input "schalte das standardgerät in der standardraum ein"
              Slots ->
                 Device -> Standardgerät
                   Room -> Standardraum
                  Value -> an
[15:39:44] [Dialogue] was ask to end session with id 667c3ef6-4c8e-4c32-99c0-aa330d93ac75 by saying 'Ok.'
[15:39:44] [Tts] was asked to say "Ok."
[15:39:44] [AudioServer] was asked to play a wav of 19.5 kB with id '140488c3-49d1-41fa-92a5-18a4cb99391e' on site default
[15:39:45] [AudioServer] finished playing wav with id '140488c3-49d1-41fa-92a5-18a4cb99391e'
[15:39:45] [Tts] finished speaking with id 'f2557658-83c9-4f89-ba6e-403c4414de81'
[15:39:45] [Dialogue] session with id '667c3ef6-4c8e-4c32-99c0-aa330d93ac75' was ended on site default. The session ended as expected
[15:39:45] [Asr] was asked to stop listening on site default
[15:39:45] [Hotword] was asked to toggle itself 'on' on site default


Was könnte ich probieren, damit es klappt?

lg
bart
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: s710 am 09 September 2019, 08:09:36
Das ist ja seltsam. Insb. weil Audio-Playback an sich ja funktioniert.

Was sagt denn sam test speaker?

Und installier doch mal ne andere App in deinem Assistenten, die nichts mit FHEM zu tun hat, ob die etwas abspielen kann.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bart0190 am 15 September 2019, 08:10:50
Hallo,
Danke für die schnelle Antwort. Der Speaker Test sagt das "front left right rear ..." (oder so ähnlich), was ja passen sollte.
Das mit der App werde ich mal versuchen.

Lg
bart
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: r_knipp am 18 September 2019, 17:12:47
Hallo zusammen,

ich versuche gerade snips zum Laufen zu bringen.
Ich habe es einmal als Server auf meinem NAS installiert. Als Satelliten nutze ich einen Raspi Zero mit einer PS3 Eye.
Verbunden ist alles über mosquitto auf meinem FHEM-Server. Es wird das persönliche Hotword erkannt und ich kann auch über Textcommand schalten. Das sehe ich in snips-watch und das Licht geht an und aus.
Allerdings wird der gesprochene Befehl nach dem Hotword nicht erkannt. Da tut sich einfach garnichts.
ASR und NLU laufen auf dem Server. Ich weiß leider nicht mehr wo ich noch einen Fehler suchen soll.
Hoffe ihr könnt mir weiterhelfen.

Viele Grüße
Robert
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: CBSnake am 20 September 2019, 20:02:45
Zitat von: martin-s am 20 September 2018, 08:09:13

  • Multi-Turn-Dialog. Das braucht eine etwas ausführlichere Erklärung
Mit dem Multi-Turn-Dialog kann man (bei Custom Intents) jetzt Rückfragen stellen.
Nicht sehr sinnvolles Beispiel:

[/list]
sub
my_snips_good_morning()
{
        my $text="Ebenfalls einen guten Morgen. Soll ich den Rollo öffnen?";
        return { 'text' => $text, 'topic' => 'continueSession', 'intentFilter' => [ 'my-intent:yes','my-intent:no', 'my-intent:abort' ], 'sessionData' => { 'intent' => 'good_morning'} };
}


Damit wird auf den Custom Intent "Guten Morgen" eine Antwort gegeben und eine Frage gestellt.
Aufgrund 'continueSession' geht Snips sofort wieder in den ASR-Modus und erwartet einen Intent aus der angegebenen Liste.
sessionData wird dabei dem neuen Intent in "data" übergeben (so wie das momentan ist werden die Daten allerdings nie frei gegeben falls der Dialog durch einen Fehler abbricht).


sub
my_snips_yes($)
{
        my ($data)=@_;
        if ($data->{sessionData}{intent} eq 'good_morning') {
                fhem("set rollo up");
                return "Alles klar";
        }
        return "Ich verstehe den Zusammenhang nicht";
}


Ciao,

Martin

Hi,

was wurden denn aus dem möglichen Dialog? hab mich eben durch den kompletten Thread gearbeitet, hab`s evtl übersehen.
Ich füttere talk2fhem aus Telegram und Snips, (ganz ohne intents etc. ich schieb die erkannten Wörter einfach zu Talk2fhem) und sobald es zu einem Dialog kommt kann ich den zwar per Snips anschupsen muss dann aber übers Handy weitermachen ;-)
Beispiel:

Hey Snips...schalte den Geschirrspüler an   bzw  Telegram: schalte den Geschirrspüler an
-> Snips say bzw Telegram Antwort: ich habe den Geschirrspüler angeschaltet
liegt der Anteil erneuerbarer Energie im Strom Mix nun aber zu niedrig fragt FHEM nach:
CO2 arm spülen? und das kann aktuell nur über Telegram

Grüße
Achim
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: s710 am 30 September 2019, 13:42:15
Zitat von: r_knipp am 18 September 2019, 17:12:47
Hallo zusammen,

ich versuche gerade snips zum Laufen zu bringen.
Ich habe es einmal als Server auf meinem NAS installiert. Als Satelliten nutze ich einen Raspi Zero mit einer PS3 Eye.
Verbunden ist alles über mosquitto auf meinem FHEM-Server. Es wird das persönliche Hotword erkannt und ich kann auch über Textcommand schalten. Das sehe ich in snips-watch und das Licht geht an und aus.
Allerdings wird der gesprochene Befehl nach dem Hotword nicht erkannt. Da tut sich einfach garnichts.
ASR und NLU laufen auf dem Server. Ich weiß leider nicht mehr wo ich noch einen Fehler suchen soll.
Hoffe ihr könnt mir weiterhelfen.

Viele Grüße
Robert

Erkennt er den den gesprochenen Text vollständig? Einen Assistenten mit entsprechenden Apps/Skills hast du installiert?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: r_knipp am 30 September 2019, 16:20:36
Nein, den Text erkennt er nicht. Ich sehe ja in snips-watch, dass er das Hotword erkennt, aber den Befehl danach erkennt er nicht.
Assistent mit FHEM-Skill ist installiert. Wie gesagt, per Textcommand aus FHEM heraus funktioniert es auch.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 30 September 2019, 17:26:39
[snips-common]
mqtt = "Server-IP:1883"
audio = "Satelliten-IP@mqtt"

[snips-audio-server]
bind = "Satelliten-IP@mqtt"

[snips-hotword]
audio = ["Satelliten-IP@mqtt"]


Eventuell hilft es.

Gruß Jens
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: cschiffer am 01 Oktober 2019, 15:48:41
Hallo!
Zunächst möchte ich erwähnen, dass ich das SNIPS-Modul prima finde. Vielen Dank an alle Beteiligten!
Ich habe die SNIPS-FHEM-Anbindung seit einigen Tagen erfolgreich im Betrieb. Zu meinem Glück fehlt mir jedoch noch die Möglichkeit den Wert des Attributes snipsMapping mit Zeilenumbrüchen versehen zu können oder auszublenden.
Wenn der Code in dem Attribut sehr lang ist, verschiebt sich das Statussymbol und die WebCommand Buttons sehr weit nach rechts (siehe Anhang).
Folgende Ansätze habe ich bereits erfolglos probiert:
Status:response={my $responseText="Der Status der Waschmaschine kann nicht ermittelt werden"; \ my $currentPower=sprintf("%.0f",ReadingsVal("...
Status:response={my $responseText="Der Status der Waschmaschine kann nicht ermittelt werden"; \n my $currentPower=sprintf("%.0f",ReadingsVal("...
Status:response={my $responseText="Der Status der Waschmaschine kann nicht ermittelt werden"; <nicht sichbarer Zeilenumbruch durch Betätigen der Enter-Taste> my $currentPower=sprintf("%.0f",ReadingsVal("...

Wie muss die Maskierung hier erfolgen?
Gibt es eine generelle Einstellung, um einen dynamischen Umbruch zu erreichen?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 01 Oktober 2019, 19:28:53
Pack doch den ganzen Schmus in 99_myUtils.pm.
Dann könntest du alle adäquaten Geräte mit zwei Übergabeparametern abfragen.
Status:response={SnipsStatus("Die Waschmaschine","SonoffPow3")}

sub SnipsStatus($$){
my ($NameSNIPS, $DeviceSNIPS) = @_;
...
}


Gruß Jens
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: cschiffer am 02 Oktober 2019, 16:59:35
Hallo dirigent,
vielen Dank für hilfreiche deine Antwort. Um bei mehreren Geräten Antworten nach dem selben Schema zu verschicken ist das sicher ein sehr guter Ansatz. Das Konzept, die spezifische Antwort für die Geräte in dem dazugehörigen Attribut festlegen zu können, gefiel mir sehr gut, da ich viele sehr unterschiedliche Geräte habe.
Gibt es denn wohl wirklich keine Möglichkeit einen Zeilenumbruch einzufügen?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 02 Oktober 2019, 17:27:02
So eine Möglichkeit ist mir nicht bekannt. Gruß Jens
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: cschiffer am 04 Oktober 2019, 08:41:38
Hier ist ein Auszug aus dem Modul 10_SNIPS.pm:
# Wert über Format 'reading', 'device:reading' oder '{<perlcode}' lesen
sub getValue($$$;$$) {
    my ($hash, $device, $getString, $val, $siteId) = @_;
    my $value;

    # Perl Command? -> Umleiten zu runCmd

# [cschiffer]: Abfrage erweitern??? ->
    if ($getString =~ m/^\s*{.*}\s*$/) {
       
# [cschiffer]: Hier müssten evtl. die Zeilenumbrüche entfernt werden!
$getString = $getString ???

        # Wert lesen
        $value = runCmd($hash, $device, $getString, $val, $siteId);
    }


Wenn ich das richtig sehe, ist das die richtige Stelle um Zeilenumbrüche verarbeiten zu können. Ob es reicht die if Abfrage anzupassen oder anschließend auch die Zeilenumbrüche entfernt werden müssen weis ich nicht. Ein Entfernen wäre wahrscheinlich am sichersten.

Ich würde die Anpassung gerne probieren, tue mich aber mit Regulären Ausdrücken recht schwer.
Kann mir wohl jemand dabei helfen?

Hier ein Beispiel für einen gültigen Wert:
{my $measuredTemp=sprintf("%.0f",ReadingsVal("Thermostat.Wohnzimmer_Clima","measured-temp","99"));
my $desiredTemp=sprintf("%.0f",ReadingsVal("Thermostat.Wohnzimmer_Clima","desired-temp","99"));
return "Die aktuelle Temperatur im Esszimmer beträgt $measuredTemp Grad und das Thermostat ist eingestellt auf $desiredTemp Grad";}

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: cschiffer am 04 Oktober 2019, 09:19:51
Eben habe ich mein Anliegen nochmal durchdacht. Da noch weitere Informationen in dem Attribut enthalten sind, welche in separaten Zeilen stehen, würde das Parsen stark erschwert. Außerdem wären feste Umbrüche je nach Browserfenstergröße nicht wirklich optimal.
Ein wesentlich besserer Ansatz, welcher sicher auch vielen anderen Nutzern helfen würde, wäre ein automatischer Zeilenumbruch in Abhängigkeit vom Browserfenster bei der Anzeige.
Für lange Readings ist dies bereits realisiert.
Eigentlich müsste das Verhalten nur für Attribute nachgezogen werden.
Jetzt ist nur die Frage, wen ich überreden muss diese Anpassung zu machen  :)


Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JensS am 04 Oktober 2019, 16:25:56
Wenn du in 10_SNIPS.pm, vor der Zeile 581 @mappings = split(/\n/, $mappingsString); eine Zeile mit dem Inhalt $mappingsString=~ s/<br>\n//g; einfügst, kannst du im Attribut snipsMapping mit <br> und Enter einen Umbruch einfügen. Vorausgesetzt, du hast "reload 10_SNIPS.pm" ausgeführt.

Gruß Jens
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rakete123 am 06 Oktober 2019, 09:28:55
Hallo zusammen,
ich hab beim Start von snips-injection folgendes Problem:

[09:19:11.936052] INFO :snips_injection_hermes: Launch with assistant "/usr/share/snips/assistant" and user dir "/var/lib/snips/"
[09:19:11.936251] ERROR:snips_injection       : g2p resources not specified


Ich denke mal das Problem ist eine Änderung seit 0.64.0:
https://forum.snips.ai/t/platform-update-1-3-0-0-64-0-02-10-2019/3732/3

Vermutlich muss die FHEM app angepasst werden.

Edit: Achso ein Downgrade auf 0.63.3 bzw. für snips-kaldi-atlas auf 0.24.2 hilt dann erstmal
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: cschiffer am 07 Oktober 2019, 11:20:11
@dirigent: Vielen lieben Dank! Das ist vielleicht nicht die allereleganteste Lösung auf Erden, aber ich bin sehr froh erstmal eine Lösung zu haben.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 13 Oktober 2019, 09:38:46
Zitat von: rakete123 am 06 Oktober 2019, 09:28:55
Hallo zusammen,
ich hab beim Start von snips-injection folgendes Problem:

[09:19:11.936052] INFO :snips_injection_hermes: Launch with assistant "/usr/share/snips/assistant" and user dir "/var/lib/snips/"
[09:19:11.936251] ERROR:snips_injection       : g2p resources not specified


Ich denke mal das Problem ist eine Änderung seit 0.64.0:
https://forum.snips.ai/t/platform-update-1-3-0-0-64-0-02-10-2019/3732/3

Vermutlich muss die FHEM app angepasst werden.

Edit: Achso ein Downgrade auf 0.63.3 bzw. für snips-kaldi-atlas auf 0.24.2 hilt dann erstmal

Also bei mir funktioniert die injection auch bei der neuen Snips Version. Bisher keine Probleme. Hast du deinen Assistent nach dem Update neu trainiert?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 15 Oktober 2019, 13:45:13
Hallo zusammen,

habe keinen Beitrag dazu gefunden. Setup ist ein Raspberry Pi 3B+ mit USB Lautsprecher.
Ich habe das Problem, dass bei jeder ersten Soundausgabe kurz ein Knacken kommt. Dies kommt bei jeder Soundausgabe am Anfang. Z.B.: beim Liedwechsel oder bei einer Snips Ansage.
Lt. kurzer Infromationssammlung scheint es am alsa Treiber zu liegen, der wiederrum in den Standby schaltet.
Dies kann wohl mit dem Pulse Treiber umgangen werden. Hat jemand das Snips Setup auf den Pulse Treiber umgemünzt und kann erläutern was geändert werden muss?

Vielen Dank.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 17 Oktober 2019, 09:22:21
Zitat von: ahlermi am 26 Oktober 2018, 07:25:07

$text = ["Das habe ich nicht verstanden!","Phuu das kann ich noch nicht!","Nein! Heute nicht.", "Wie bitte?"]->[rand(4)];


Das ist schon mal was für Zufall

Ist es eigentlich möglich, die o.g. Sätze als zufälligen Response zurückzugeben? Ich habe das mal eingetragen, aber Snips liest natürlich alles 1:1 vor mit Klammern etc.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 18 Oktober 2019, 16:37:05
Hallo zusammen,

seit einigen Monaten läuft jetzt bei mir Snips im Wohnzimmer, klappt soweit auch ganz gut. Wir nutzen Snips hauptsächlich zur Lichtsteuerung und zum Starten von Musik.
Ich habe jetzt einen Satelllit mit Respeaker 2 und Pi0 meinem Setup hinzugefügt.
Allerdings stehe ich gerade auf dem Schlauch, wie ich dem Satellit in FHEM beibringe, in welchem Raum er sich befindet.
Beim default-device reicht es, "Musik an" zu sagen, damit im korrekten Raum die Musik gestartet wird. Das funktioniert aber mit dem Satellit nicht, da er nicht weiß in welchem Raum er sich befindet.
Habe ich in der Doku etwas überlesen oder geht das nicht? Hier im Thread gibt es ja einige posts von usern, die mehrere Satelliten haben. Wie habt ihr das gelöst?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 22 Oktober 2019, 08:54:08
Hast du wohl überlesen. Steht hier: https://docs.snips.ai/articles/platform/satellites

Du musst in der /etc/snips.toml unter [snips-audio-server] das Binding einstellen. Also z.b.
bind = "schlafzimmer@mqtt"
Wobei schlafzimmer dann deine "SiteID" wäre.

Und in FHEM definierst du dann das Attribut snipsRoom dementsprechend.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 22 Oktober 2019, 09:42:04
Hi drhirn,

erstmal danke für die Antwort. Wie ich das in Snips einrichte ist mir klar, das funktioniert prinzipiell auch schon bei mir.
Das Problem ist, dass FHEM nicht weiß, in welchem Raum mein Satellit steht. Seit dem letzten release von Snips gibt es das feature "hotword coalescing". Das bedeutet, man kann mehrere Satelliten in einen Raum stellen und hat trotzdem keine Mehrfachdetektierung des hotwords. Nur der (im besten Fall am nächsten stehende) Satellit detektiert das hotword. Das funktioniert auch ganz gut, ich nutze das um unseren recht großen Wohn-/Ess-/Kochbereich abzudecken, ohne Snips durch den Raum anschreien zu müssen..
Das Problem ist, dass das FHEM-Snips Modul nur beim "default" device weiß, um welchen Raum es geht.
Das bedeutet, wenn das default-device das hotword erkennt und ich sage "Musik an", dann geht im Wohnzimmer die Musik an. Wenn aber ein Satellit das hotword erkennt, führt das Kommando ins leere, da das Snips-Modul nicht weiß, in welchem Raum die Musik an gemacht werden soll. Falls ich also näher an einem Satelliten stehe, müsste ich wissen dass der Satellit und nicht das default-device das hotword erkannt hat und sagen "Musik im Wohnzimmer an".
Das macht es ziemlich unintuitiv, Ich habe jetzt die Doku vom Modul mehrfach durchgeackert und habe keine Möglichkeit gefunden, einem Satelliten einen Raum zuzuweisen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 22 Oktober 2019, 09:51:36
Verstehe ich jetzt nicht. Die Lösung habe ich doch geschrieben!?

Ach so, warte. Ich glaube, ich weiß, woran du scheiterst. Also nochmal, ich hab nämlich das selbe Setup wie du:

Du installierst dir x Satelliten. Jedem gibst du eine eigene SiteID. "Hotword Coalescing" lassen wir jetzt mal außer acht, das ändert nichts an der Konfiguration.
Ich hab z.b. zwei Satelliten im Wohnzimmer. Einer mit SiteID "wohnzimmer", einen mit SiteID "wohnzimmer2". Die beiden sollen jetzt eine Lampe schalten.
Der Trick dabei ist, die Lampe in zwei "Snips-Räume" zu stellen. In meinem Fall also:

attr lightSceneWz snipsName Lampe
attr lightSceneWz snipsRoom wohnzimmer,wohnzimmer2


Ob das vom Modul-Autor so geplant war, weiß ich nicht. Aber es funktioniert ;). SiteId und snipsRoom müssen halt identisch sein. (Was in deutsch manchmal blöd ist, wegen der Umlaute)

Hab ich dich jetzt richtig verstanden?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 22 Oktober 2019, 10:16:43
 :-[ Verdammt. Also siteId in Snips.toml gleich benennen wie den snipsRoom? Autsch, da hatte ich dann wohl mehr als eine Tomate vor den Augen.  Unfassbar, wie lang ich damit rumgemacht habe. Wollte schon die 10_SNIPS.pm anpassen... Werde das dann mal so ausprobieren. Vielen Dank!
Ich schreibe dann mal, wenn es bei mir funktioniert hat. Ich hoffe ich komme heute Abend dazu

Gruß Jonas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tomster am 22 Oktober 2019, 11:43:08
Oh Mann! Danke für diesen Tipp! So einfach und doch nicht selber draufgekommen...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 23 Oktober 2019, 11:29:24
Hallo zusammen,
ich habe es dank drhirn's Tipp gestern hin bekommen, nach ersten Tests kann ich sagen dass es einwandfrei funktioniert!
Ich habe die entsprechende Stelle im Modul-code auch gefunden (Zeile 380) und würde das Modul gerne so anpassen, dass die siteId immer vor einer Zahl "abgeschnitten" wird und in $room geschrieben wird. Aktuell wird einfach nach Schreiben der siteId geprüft, ob die siteId=default ist und dann durch den defaut-Raumname ersetzt:

 
        $room = $data->{'siteId'};
        $room = $defaultRoom if ($room eq 'default' || !(length $room));


Im Prinzip müsste man ja "nur" eine Zeile dazwischen einfügen, in der in $room der gekürzte Name der siteId geschrieben wird.
Beispiel: Ich habe mehrere Snips-Satelliten mit den Namen Wohnzimmer1, Wohnzimmer2, Wohnzimmer3 usw. oder Wohnzimmer_1, ... und will als $room immer nur "Wohnzimmer" haben. Vielleicht ist hier ja jemand mit ausreichenden perl-Kenntnissen unterwegs, der mir da helfen kann. Wie müsste der Code dann aussehen? Vermutlich mit split und regex? Oder bin ich da vollkommen verkehrt unterwegs?

 
$room = $data->{'siteId'};
$room = split(/.+[^-_\d]/, $room);
$room = $defaultRoom if ($room eq 'default' || !(length $room));
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Che007 am 24 Oktober 2019, 09:37:27
Hallo zusammen,

wie in dem Beitrag oben beschrieben, habe ich das Problem gehabt, dass bei Soundausgaben immer einen Knacken am Anfang zu hören war. Da ich den Raspi mit Snips auch fürs Radio und als Spotify Wiedergabegerät verwende, war das extrem störend wenn bei Letzterem zwischen 2 Lieder ein Knacken zu hören war.

Das Problem ist wohl bekannt bei Raspi mit dem Alsa Treiber. Abhilfe schafft der PulseAudio Treiber. Diesen habe ich installiert, konnte aber diesen in Snips und MPD nicht richtig einbinden, da dieser unter dem MPD Konto läuft. Letzendlich habe ich mit Hilfe des Snips Forums den Treiber systemweit eingerichtet und es läuft nun ohne Probleme und Knacken. Anbei die Einrichtungsschritte für Rapi-Stretch.

# prüfen ob das Mikrofon angezeigt wirdn
arecord -L

aplay -L
# das Ausgabegerät sollte mit in der Liste sein

# prüfen, ob die Lautstärke min. 50% ist
alsamixer

# testen, ob überhaupt ein Ton ausgegeben wird
speaker-test -c2 -twav


Nur weitermachen , wenn bis hierhin alles funktionierte

# PulseAudio installieren
sudo apt install -y pulseaudio
pactl list short sinks
# Die Ausgabegeräte sollten angezeigt werden

pactl list short sources
# Listet die Mikrofone


PulseAudio systemweit einrichten



# Dienstdatei einrichten
sudo nano /etc/systemd/system/pulseaudio.service

Inhalt:
[Unit]
Description=PulseAudio system-wide server
# network only required for remote sinks
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/pulse/pid
ExecStart=/usr/bin/pulseaudio --daemonize --system --realtime --log-target=journal
ExecStop=/usr/bin/pulseaudio -k

[Install]
WantedBy=multi-user.target

#EOF


# PulseAudio in Usermodes deaktivieren
sudo systemctl --global disable pulseaudio.service pulseaudio.socket

# Systemmodus aktivieren
sudo systemctl enable pulseaudio
sudo systemctl start pulseaudio
systemctl --system status pulseaudio.service

# User hinzufügen
sudo usermod -G pulse-access -a pi
sudo usermod -G pulse-access -a _snips
sudo systemctl restart snips-audio-server


# Standardmikrofon wählen
pactl list short sources
0       alsa_output.usb-Generic_USB2.0_Device_20130100ph0-00.analog-stereo.monitor      module-alsa-card.c      s16le 2ch 48000Hz       SUSPENDED
1       alsa_output.platform-soc_audio.analog-stereo.monitor    module-alsa-card.c      s16le 2ch 44100Hz       SUSPENDED
2       alsa_input.platform-soc_sound.multichannel-input        module-alsa-card.c      s32le 4ch 48000Hz       RUNNING


# In meinem Fall ist es der Respeaker Hat 4-Array - Nummer 2
pactl set-default-source 2

# Standard Wiedergabegerät wählen
pactl list short sinks
0       alsa_output.usb-Generic_USB2.0_Device_20130100ph0-00.analog-stereo      module-alsa-card.c      s16le 2ch 48000Hz       SUSPENDED
1       alsa_output.platform-soc_audio.analog-stereo    module-alsa-card.c      s16le 2ch 44100Hz       SUSPENDED


# Bei mir USB Lautsprecher - Nummer 0
pactl set-default-sink 0

# Wiedergabe testen
speaker-test -c2 -twav


Beim Starten des Service erhielt ich eine Fehlermeldung, dass die Berechtigung nicht stimmten, kann mich nicht genau an die Meldung erinnern. Ich musste zusätzlich in der Datei folgendes abändern:
sudo nano /etc/pulse/system.pa
auth-anonymous=1 hinzufügen:
load-module module-native-protocol-unix auth-anonymous=1

Ein Neustart und danach lief alles.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: dkreutz am 21 November 2019, 13:20:40
Snips.ai wurde von Sonos gekauft: https://techcrunch.com/2019/11/20/sonos-acquires-voice-assistant-startup-snips-potentially-to-build-out-on-device-voice-control/

Bin gespannt ob Snips weiterhin ein offenes System bleibt oder zu "closed-source" wird...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 21 November 2019, 13:29:51
Danke für die Info!
Sehr, sehr ärgerlich!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: MadMax-FHEM am 21 November 2019, 13:44:28
Tja...

Vielleicht ist ja das (im Fall der Fälle) eine Möglichkeit: https://forum.fhem.de/index.php/topic,102000.0.html

Sofern das open-source bleibt...

Gruß, Joachim
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: sepia am 21 November 2019, 14:50:27
Snips war ja eh nie so "richtig" open-source im Vergleich zu SEPIA ;) aber spannende Sache.
Wer SEPIA jetzt klont auf GitHub hat es auf jeden Fall für alle Zeiten verfügbar (und ich würde mich über ein paar GitHub Sterne freuen :D). Außerdem kann ich euch garantieren, dass es keine Pläne gibt für einen Verkauf des Projektes ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: dkreutz am 21 November 2019, 15:07:36
Es gibt ja auch noch Mycroft.ai: https://forum.fhem.de/index.php/topic,83601.msg873064.html
inklusive FHEM-Skill (dessen Autor ich bin): https://forum.fhem.de/index.php/topic,89780.0.html
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jule24 am 22 November 2019, 15:53:34
Erstmal Danke fuer das Modul. nach einigem testen lauft es nun fehlerfrei :)
Eine Frage allerdings: Ich lebe in einem mehrsprachigen Haushalt. Kann ich das Modul dazu bewegen englisch zu reden?
Danke
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 23 November 2019, 08:34:12
Zitat von: jule24 am 22 November 2019, 15:53:34
Erstmal Danke fuer das Modul. nach einigem testen lauft es nun fehlerfrei :)
Eine Frage allerdings: Ich lebe in einem mehrsprachigen Haushalt. Kann ich das Modul dazu bewegen englisch zu reden?
Danke

Zum mehrsprachig reden reicht folgende Änderung in der 10_SNIPS.pm (ohne Zeilenangabe, aber wenn man nach "sub say" sucht findet man das schnell.

sub say($$) {
    my ($hash, $cmd) = @_;
    my $sendData, my $json;
    my $siteId = "default";
    my($unnamedParams, $namedParams) = parseParams($cmd);
# print Dumper parseParams( $cmd );
my $text = join(" ",@{ $unnamedParams });

my $lang = "de"; # PS 20181220

    # if (defined($namedParams->{'siteId'}) && defined($namedParams->{'text'})) {
        # $siteId = $namedParams->{'siteId'};
        # $text = $namedParams->{'text'};
    # }
#### PS 20181220
if (defined($namedParams->{'siteId'})) {
$siteId = $namedParams->{'siteId'};
}
if (defined($namedParams->{'text'})) {
$text = $namedParams->{'text'};
}
if (defined($namedParams->{'lang'})) {
$lang = $namedParams->{'lang'};
}
Log3($hash->{NAME}, 1, "siteId: $siteId");
Log3($hash->{NAME}, 1, "text: $text");
Log3($hash->{NAME}, 1, "lang: $lang");

#### /PS 20181220
    $sendData =  {
        siteId => $siteId,
        text => $text,
        lang => $lang,
        id => "0",
        sessionId => "0"
    };

# ÄNDERUNGEN PS:

    $json = toJSON($sendData);
    MQTT::send_publish($hash->{IODev}, topic => 'hermes/tts/say', message => $json, qos => 0, retain => "0");
}


Normalerweise kann man nur die Parameter "siteID" mitgeben und muss dann noch "text" definieren. Ich habe den neuen Parameter "lang", den snips.ai kenn, eingeführt. Dieser wird defaltmäßig mit "de" belegt, das müsstest Du dann ändern.
Dann wird die Funktion ParsParams verwendet, mit allen Wechselwirkungen auf die Verwendung von "=" und sonstigen Dingen. Das habe ich nicht abgefangen, da ich eher unkomplizierte Sätze sage und im Zweifelsfalls wüsste, woher das kommt.
Danach kannst du mit
set SNIPS_DEVICE say I will be back lang=en
das Ding englisch reden lassen oder mit
set SNIPS_DEVICE say Voulez vous coucher avec moi? lang=fr
französisch etc...

Für ein mehrsprachige Sprachsteuerung bspw. für spanisch sprechende Schwiegereltern:
Das Modul ist mehr oder weniger "nur" eine komfortable MQTT-Schnittstelle zu SNIPS. Es durchsucht die, leider hartcodierte, vordefinierten Attribute (snipsRoom, snipsName, etc) und matcht diese mit allem, was auf den MQTT-Kanälen von SNIPS läuft und handelt danach. Bzw. injected auf Anstoss alles da rein.

Ich habe dann einfach alle "ausländischen" Begriffe (bei mir Spanisch) ebenfalls in die Attribute eingetragen und dann ein zweites, spanisches Snips aufgesetzt und angebunden. In Snips war die FHEM-App aber kopiert, da ja die Standardworte und Beispielsätze dort übersetzt werden mussten.
Das hat funktioniert, allerdings halt parallel, so dass mich einer halt nicht verstanden hat. Und Spanisch-Deutsch ist relativ weit auseinander und es klingt nicht alles gleich, so dass der jeweils andere Snips nicht ausversehen die anderen Worte falsch interpretiert - weil jedem Snips wird ja alles injected, also dem deutschen auch die spanischen Worte.
Den letzten Schritt, die beiden Snips-Installationen dann mit unterschiedlichen Wakewords zu versehen bin ich final nicht gegangen. Es wäre auch denkbar, um Falschinterpretation zu vermeiden, die Begriffe nicht zu injecten sondern direkt in der SNIPS-FHEM-APP beizubringen, so wie in der ur-ur-ur-Version des Moduls.

Also man müsste für eine saubere Implementation das ganze Parameterweitergeben sauberer und robuster machen und am besten im SNIPS-Modul die Präfixe für die eigenen Attribute angeben. Dann könnte man je nach Sprache unterschiedliche Attribute füttern, bspw.  snipsNameDE, snipsNameES, snipsRoomES, etc. Dann wäre die Pflege hier leichter und die sprachübergreifenden Wortverwechslungen ausgeschlossen.
Wenn man dann noch die in der FHEM-APP hartcodierten Trainingssätze und Worte in eine Textdatei auslagert und injected (ich weiss nicht, ob snips das überhaupt unterstützt), dann könnte man dafür Listen und Dateien in unterschiedlicher Sprache mitgeben und diese hier pflegen und contributen...

Ich hab ab Mitte Dezember Freitags frei...mal gucken...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jule24 am 25 November 2019, 15:52:51
Supi danke. Werde es heute abend gleich testen. Da es bei mir nur in englisch laufen muss und nicht zweisprachig ( bin eh die einzige Deutsche im Haushalt) wird es warscheinlich deutlich einfacher....
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 03 Dezember 2019, 09:06:19
Snips ist mit 31.01.2020 Geschichte: https://forum.snips.ai/t/important-message-regarding-the-snips-console/4145

Hier wäre eine Petition dagegegen: https://www.gopetition.com/petitions/let-snips-makers-live.html
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: s710 am 03 Dezember 2019, 10:44:28
Hab ebenfalls schon unterzeichnet, auch wenn die Aussichten natürlich sehr schlecht sind.

Äußerst schade, dass ein so tolles Projekt aufgekauft und (vermutlich) begraben wird.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 03 Dezember 2019, 11:45:57
Wow, harter Schritt nachdem man extrem viel an Feedback und Daten durch die Community aufgesaugt hat.

Schade rum...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 03 Dezember 2019, 11:48:18
Zitat von: Thyraz am 03 Dezember 2019, 11:45:57
Wow, harter Schritt nachdem man extrem viel an Feedback und Daten durch die Community aufgesaugt hat.

Ja. Schon einigermaßen frech. V.a. die Vorgangsweise ohne Kommunikation.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 03 Dezember 2019, 11:52:39
Sehr schade dann heißt es jetzt wohl Alternativen suchen

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 03 Dezember 2019, 11:55:15
Was leider nicht ganz einfach ist. Die, die ich bisher gefunden habe, sind lange nicht so gut. Und beherrschen v.a. das Snips-Killer-Feature "Satelliten" nicht. Abgesehen davon, dass meine Rasperry Zero jetzt alle arbeitslos sind.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: mericon am 03 Dezember 2019, 11:57:01
Zitat von: drhirn am 03 Dezember 2019, 11:55:15
Was leider nicht ganz einfach ist. Die, die ich bisher gefunden habe, sind lange nicht so gut. Und beherrschen v.a. das Snips-Killer-Feature "Satelliten" nicht. Abgesehen davon, dass meine Rasperry Zero jetzt alle arbeitslos sind.
Das wird das Problem sein. Ich werde meine Sachen auf alle Fälle so sichern das ich erstmal ohne die console weiter quatschen kann

Gesendet von meinem VTR-L09 mit Tapatalk

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rischbiter123 am 03 Dezember 2019, 12:11:05
Moin,

noch ist ja Zeit bis 31. Januar. Außerdem, das Ganze funktioniert doch Offline. Das bedeutet meiner Meinung nach, daß man es in der jetzigen Form (Version) weiternutzen kann. Es gibt nur keine Weiterentwicklung mehr. Man korrigiere mich, wenn ich falsch liegen sollte.

LG

Andreas
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 03 Dezember 2019, 12:23:36
Ich bin mir spontan nicht ganz sicher, wie das mit dem nachtrainieren von neuen Wörtern ist.
Ob hier im Hintergrund auch die Quellen der Console angezapft werden oder nicht.

Falls ja, könnte man nach dem Hinzufügen von neuen Geräten in FHEM deren Namen nicht mehr im Assistenten hinzufügen, damit er sie versteht.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: dkreutz am 03 Dezember 2019, 13:16:03
Zitat von: mericon am 03 Dezember 2019, 11:52:39
Sehr schade dann heißt es jetzt wohl Alternativen suchen

Wenn es wirklich "open source privacy" sein soll: mycroft.ai - inklusive FHEM-Skill...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 03 Dezember 2019, 13:25:46
Mit mycroft hab ich bisher am meisten Zeit verbracht. Und noch immer bekomme ich keinen Ton aus dem Respeaker Hat. Geschweige denn ins Mikro rein. ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: s710 am 04 Dezember 2019, 09:05:50
Die Konsole wird gebraucht, wann immer man neue Sätze erkennen lassen will. Einzelne Wörter werden in der Regel ja nicht trainiert (Ausnahmen hierfür sind Datentypen mit fixen Wortkatalogen, die lassen sich dann auch nicht mehr erweitern).

Klar wird es weiterhin laufen, aber Änderungen an der Spracherkennung sind dann halt nicht mehr möglich. Wird also auf die Suche nach Alternativen rauslaufen. Äußerst schade.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: enno am 04 Dezember 2019, 09:25:41
Moin,

beobachte seit ich SNIPS nach Rasbian Update nicht mehr zum Laufen bekam, dieses Modul intensiv...

https://forum.fhem.de/index.php/topic,102000.0.html

Gruss
  Enno
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: nervnet am 10 Dezember 2019, 07:50:57
Ist Rhasspy eine (SNIPS-kompatible) Alternative?

Mit der Übernahme von SNIPS bin ich auf der Suche nach einer Offline-Alternative. In Kombinatioen mit dem Modul von Thyraz (!!!DANKE dafür!!!) habe ich einen eigenen Assistenten in der SNIPS-Konsole erstellt, welcher auf mein FHEM angepasst war. Mit jeder neuen Funktion habe ich den Assitenten angepasst. Da dies zukünftig nicht mehr möglich ist, ist für mich hier mit SNIPS leider Schluss.

Hat jemand schon Rhasspy als Alternative probiert (https://rhasspy.readthedocs.io/en/latest/)? Wie sind hier die Erfahrungen? Ist das eine Sackgasse? Ohne es jetzt eingehend geprüft zu haben, dürfte Rhasspy vollständig Open Source sein und vollständig offline laufen. Man benötigt keinen Account und es gibt auch keine Online-Konsole. Der Assistent wird komplett offline trainiert. Injection habe leider noch nicht gesehen.

Installation auf einem PI3B+ als Docker-Container hat schonmal reibungslos funktioniert. Die nächsten Tage versuche ich mich an der Konfiguration. Laut Weboberfläche ist es wohl möglich über MQTT SNIPS-kompatibel zu arbeiten.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: MadMax am 28 Dezember 2019, 13:41:44
Das ist Ärgerlich...
Was ist nun mit Rhasspy ist das brauchbar?
Gibt es schon Ansätze für FHEM?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 28 Dezember 2019, 14:54:27
Rhasspy ist noch kein Snips. Aber die Entwicklung dahin geht derzeit wirklich schnell. Ich persönlich verwende Snips noch etwas länger, beobachte und teste Rhasspy aber gleichzeitig ganz genau. Scheint mir ein guter Ersatz zu werden.

Was Rhasspy <-> FHEM betrifft werde ich wohl den Weg mit Talk2FHEM gehen. Sollte am flexibelsten sein, falls ich wiedermal den Sprachassistenten wechseln muss.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: dkreutz am 28 Dezember 2019, 16:08:46
Mein FHEM-Skill für Mycroft.ai unterstützt Talk2Fhem, Babble und Teerko. Wer in eines diese NLUI Module schon Phrasen/Kommandos konfiguriert hat, kann mit Mycroft direkt loslegen...
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 28 Dezember 2019, 17:04:13
Was ich noch nicht ganz verstanden habe:
Ist mycroft.ai komplett offline "on device "?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: dkreutz am 28 Dezember 2019, 19:53:04
Zitat von: laberlaib am 28 Dezember 2019, 17:04:13
Was ich noch nicht ganz verstanden habe:
Ist mycroft.ai komplett offline "on device "?
Theoretisch geht alles lokal/offline, inklusive Sprach-Erkennung (STT) und -Ausgabe (TTS).

Wenn man auf einem RPI3 bleibt, ist die Ausgabe aber eine roboterartige Stimme (z.B. über espeak-TTS, was mWn auch Snips verwendet hat) und die Erkennung in Englisch und mit einer relativ hohen Fehlerrate bei der Worterkennung, was die praktische Verwendbarkeit spürbar reduziert: wer will schon 5x "turn on the light" sagen müssen bis das Licht angeht oder man am Ende doch selbst den Schalter bedient. Snips war hier rein lokal besser, weil es für solche "Intents" die Spracherkennung vorkompiliert/trainiert verfügbar hat. Mycroft hingegen ist ein "universaler Sprachassistent", der grundsätzlich alles verstehen soll.
Hat man bessere Hardware (z.B. PC mit Ubuntu-Linux und Nvidia Grafikkarte, alternativ Nvidia Jetson Xavier) kann man zumindest die Sprachausgabe in hoher Qualität mittels Tacotron/Mimic2 realisieren. Ein Community-Mitglied arbeitet auch gerade an einem Tacotron-Modell für eine deutsche Stimme/Sprachausgabe.

Meine Mycroft-RPIs laufen in Deutsch über Google-TTS/STT, wobei die Anfragen an Google über Mycroft-Server anonymisiert werden.
Parallel beobachte ich intensiv die Entwicklung von Mozilla's DeepSpeech (STT) und TTS. Hier erwarte ich im Laufe des Jahres 2020 wesentliche Fortschritte was die Erkennungsrate auch auf RPI3 angeht.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: tabasco123 am 30 Dezember 2019, 14:18:11
Zitat von: enno am 04 Dezember 2019, 09:25:41
Moin,

beobachte seit ich SNIPS nach Rasbian Update nicht mehr zum Laufen bekam, dieses Modul intensiv...

Gibt es evtl. jemanden, der mir seinen Snips Console Account übergeben würde?
Ich hatte jetzt für Weihnachten den Aufbau geplant, die gesamte Hardware besorgt, und jetzt die Tage gemerkt, dass die Snips Console keine Neuanmeldungen mehr zulässt.
Nach etwas hin und her habe ich mich - in Ermangelung wirklich vergleichbarer Alternativen - dazu entschieden, noch auf das sterbende Pferd aufzusetzen...

Aber da bräuchte ich jetzt einen bestehenden Account...

Also falls jemand einen abzugeben hätte, ich wäre dankbar!!!
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 31 Dezember 2019, 10:43:36
Psycho hat im Snips-Forum seinen Account zur Verfügung gestellt: https://forum.snips.ai/t/important-message-regarding-the-snips-console/4145/60
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: kptkip am 18 Januar 2020, 22:56:47
Psychos Account ist mittlerweile gesperrt worden - die restlichen wohl auch.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: chicco am 23 Januar 2020, 02:27:28
also mein account funzt noch.

Aber ich will eigentlich was anderes erzählen.

Ich habe mal folgendes getestet:
- WAN-Kabel am Router raus, d.h. der snips-raspi ist definitiv ohne Internet
- einem bestehenden fhem-device (Funksteckdose) die Attribute snipsMapping, snipsName und snipsRoom vergeben
- einen neuen shortcut im Snips-device eingefügt
- set Snips updateModel
- snips-watch sagt mir dass injected wird
- Ergebnis: ich kann die Funksteckdose per Sprache steuern und der shortcut wird auch erkannt und ausgeführt

Snips wird also definitiv weiter benutzbar sein.
Und weil das so ist, hab ich noch etwas gebastelt, einen Shortcut-Generator.

Das Snips-device bekommt ein neues Attribut:
attr Snips userattr myShortcuts:textField-long

In das Attribut werden shortcuts in variabler Form rein geschrieben.
Dann wird eine Funktion aus der 99_myUtils.pm ausgeführt.
Die Funktion wertet das Attribut aus und generiert daraus Einträge für das Attribut shortcuts im bekannten Format trigger=cmd
EDIT: ACHTUNG: das Attribut shortcuts wird dabei komplett mit dem generierten Inhalt überschrieben!

Man kann in myShortcuts mehrere Trigger kommagetrennt angeben:
Wieviel Uhr ist es,Wieviel Uhr haben wir,Wie ist die Uhrzeit={return "es ist " . qx(date +%R);}

Ergebnis in shortcuts nach Aufruf der Funktion:
Wieviel Uhr ist es={return "es ist " . qx(date +%R);}
Wieviel Uhr haben wir={return "es ist " . qx(date +%R);}
Wie ist die Uhrzeit={return "es ist " . qx(date +%R);}


Man kann Variablen einfügen und diese in den weiteren Triggern und im cmd verwenden.
Variablen stehen in Klammern und die Werte werden per Pipe getrennt. In Trigger und cmd werden sie dann mit $0, $1, etc. verwendet
seit wann ist das Fenster im (Wohnzimmer|Schlafzimmer) geöffnet,wie lange ist das Fenster im $0 auf={getWinOpenDuration("$0")}

Ergebnis:
seit wann ist das Fenster im Wohnzimmer geöffnet={getWinOpenDuration("Wohnzimmer")}
seit wann ist das Fenster im Schlafzimmer geöffnet={getWinOpenDuration("Schlafzimmer")}
wie lange ist das Fenster im Wohnzimmer auf={getWinOpenDuration("Wohnzimmer")}
wie lange ist das Fenster im Schlafzimmer auf={getWinOpenDuration("Schlafzimmer")}


Man kann die Variablen-Werte noch per Doppelpunkt trennen, der Teil vor dem Doppelpunkt wird im Trigger verwendet, der Teil nach dem Doppelpunkt wird im cmd verwendet:
seit wann ist das Fenster im (Wohnzimmer:WZ|Schlafzimmer:SZ) geöffnet,wie lange ist das Fenster im $0 auf={getWinOpenDuration("$0")}

Ergebnis:
seit wann ist das Fenster im Wohnzimmer geöffnet={getWinOpenDuration("WZ")}
seit wann ist das Fenster im Schlafzimmer geöffnet={getWinOpenDuration("SZ")}
wie lange ist das Fenster im Wohnzimmer auf={getWinOpenDuration("WZ")}
wie lange ist das Fenster im Schlafzimmer auf={getWinOpenDuration("SZ")}


Ich habe es aktuell so geschrieben:
(seit wann|wie lange) ist das Fenster im (Wohnzimmer:WZ|Schlafzimmer:SZ) (auf|geöffnet|offen)={getWinOpenDuration("$1")}
sind im Ergebnis 12 Sätze. Die Anzahl der Werte der einzelnen Vars werden miteinander multipliziert: 2*2*3 = 12

Man kann in den Vars auch geschweifte Klammern mit perl-code einsetzen, z.B. um ein Attribut oder Reading auszulesen um so an den pipe-getrennten String zu kommen:
EDIT: siehe Hinweis in #939 zu den geschweiften Klammern und zu numerischen Variablen in eckigen Klammern.
({AttrVal('ekl','articlelist','');}) einkaufen,(setze|schreibe) $0 auf die Einkaufsliste={snipsAddToList("$0")}

Ergebnis (gekürzt):
äpfel einkaufen={snipsAddToList("Äpfel")}
Backpulver einkaufen={snipsAddToList("Backpulver")}
setze äpfel auf die Einkaufsliste={snipsAddToList("Äpfel")}
schreibe äpfel auf die Einkaufsliste={snipsAddToList("Äpfel")}
setze Backpulver auf die Einkaufsliste={snipsAddToList("Backpulver")}
schreibe Backpulver auf die Einkaufsliste={snipsAddToList("Backpulver")}


Dabei ist mir aufgefallen:
Wenn im Attribut shortcuts im Trigger ein großer Umlaut drin ist, klappt es nicht. Der gesprochene Satz wird von Snips erkannt, wird auch als shortcut erkannt, aber der Befehl wird nicht ausgeführt.
snips-watch sagt: The session timed out because its continuation or termination was not handled by any running action code
Keine Ahnung ob der Fehler in Snips oder im fhem-Snips-Modul zu suchen ist.
Ich hab in meiner Funktion jetzt einfach große Umlaute in kleine umgewandelt, dann klappt es, siehe eben die äpfel.

Evtl. muss man ein vorsichtig sein mit der Anzahl der Trigger, Variablen und Werte, denn das potenziert sich alles.
Keine Ahnung ob es Snips-seitig ein Limit gibt. Ich habe aktuell knapp 440 shortcuts (das meiste kommt von der Einkaufsliste) und kann keine Probleme feststellen.

Hier noch die Funktionen, die kommen natürlich in die 99_myUtils.pm:
setShortCuts() müsst ihr aufrufen, hier müsst ihr evtl. ganz oben den Name vom Snips-device ändern.
getShortCuts() wird von setShortCuts() aufgerufen und ruft sich selbst rekursiv auf.


sub setShortCuts() {
Log 1,("setShortCuts()");
use Text::Balanced qw(extract_codeblock);

my $device = "Snips";

my $mySC = AttrVal($device, "myShortcuts", "");
my $sc = "";

if ($mySC ne "")
{
# myShortcuts zeilenweise einlesen
my @lines = split("\n", $mySC);
foreach my $line(@lines)
{
# trigger und cmd splitten
my @parts = split("=", $line);
my $cntparts = scalar(@parts);
if ($cntparts > 1)
{
# erster Teil enthält trigger, der rest den cmd
# restliche teile zum cmd zusammenbauen
my $cmd = "";
for (my $i=1;$i<$cntparts;$i++)
{
$cmd .= ($cmd eq "" ? "" : "=") . $parts[$i];
}
$cmd =~s/;/;;/g; # Semicolons verdoppeln

# in trigger nach vars suchen
my ($start, $end, $pos, $searchvar, $var, $before, $after);
$pos = 0;
$searchvar = 1;
my @vars = ();
while ($searchvar)
{
# klammern suchen
$start = index($parts[0], "(", $pos);
$end   = index($parts[0], ")", $pos);

if ($start != -1 && $end > $start)
{
# trigger enthält klammern
# trigger zerlegen, klammerinhalt in var ablegen
($var, $after, $before) = extract_codeblock($parts[0], "(){}[]<>", '[^(]*');
# trigger wieder zusammenbauen, var als $0, $1, etc. einfügen
$parts[0] = $before . "\$" . scalar(@vars) . $after;

$var = trim(substr($var, 1, -1)); # klammern entfernen

# geschweifte klammern suchen
if (substr($var,0,1) eq "{" && substr($var,-1) eq "}")
{
$var = trim(substr($var, 1, -1)); # klammern entfernen
$var = eval($var); # perl-code auswerten
}

# var an der pipe splitten und werte merken
my @values = split(/\|/, $var);
push(@vars, \@values);

# startposition für die klammersuche im nächsten durchlauf
$pos = $start;
}
else
{
# trigger enthält keine weiteren vars
$searchvar = 0;
}
}

# alle trigger inkl. vars zusammenbauen
my @triggers = split(",", $parts[0]);
foreach my $trigger(@triggers)
{
# beim trigger $ durch § ersetzen, damit die § später als lowercase eingesetzt werden
my $trg = $trigger;
$trg =~s/\$/§/g;
# umlaute als lowercase
$trg =~s/Ä/ä/g;
$trg =~s/Ö/ö/g;
$trg =~s/Ü/ü/g;

$sc = getShortCuts(0, scalar(@vars), \@vars, $trg, $cmd, $sc);
}
}

} # foreach my $line(@lines)
}

if ($sc ne "")
{
# doppelte Einträge filtern
my @lines_result = split("\n", $sc);
my %count;
my @lines_unique = grep { ++$count{$_} < 2 } @lines_result;
$sc = join("\n", @lines_unique);

# shortcuts im Attribut speichern
fhem("attr $device shortcuts $sc");

#fhem("set $device updateModel");
}

}


sub getShortCuts($$$$$$) {
my ($curVar, $varCnt, $vars, $trigger, $cmd, $sc) = @_;

if ($curVar < $varCnt)
{
# werte der aktuellen var duchlaufen
my $ref_curVar = @$vars[$curVar];
foreach my $value(@$ref_curVar)
{
# nächste var
$sc = getShortCuts($curVar+1, $varCnt, \@$vars, $trigger, $cmd, $sc);

# wert in variablen einsetzen
my $trgval = $value;
my $cmdval = $value;
if (index($value, ":") != -1)
{
# unterschiedliche Werte für trigger und cmd
my @parts = split(":", $trgval);
$trgval = $parts[0];
$cmdval = $parts[1];
}

# umlaute in trigger-vars als lowercase einsetzen
$trgval =~s/Ä/ä/g;
$trgval =~s/Ö/ö/g;
$trgval =~s/Ü/ü/g;

# in trigger-vars (§0, §1, etc) einsetzen
$sc =~s/§$curVar/$trgval/g;
# in cmd-vars ($0, $1, etc) einsetzen
$sc =~s/\$$curVar/$cmdval/g;
}
}
else
{
# keine weitere var
# endpunkt der rekursiven schleife
# neue zeile in sc einfügen
$sc .= ($sc eq "" ? "" : "\n") . $trigger . "=" . $cmd;
}

return $sc;
}



Viel Spass damit.

Gruß
chicco
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: chicco am 24 Januar 2020, 15:59:40
Ich habs nochmal erweitert und habe das Snips-Modul aufgebohrt und habe die Funktion ins Modul integriert, so dass man die Funktion ganz einfach mit "set Snips generateShortcuts" aufrufen kann.
Meine modifizierte Version vom Modul ist im Anhang.

@Thyraz: willst du da mal reingucken und deinen Segen dazu geben?
Die Änderungen sind überschaubar: den neuen set-Befehl bekannt gemacht, das Attribut myShortcuts bekannt gemacht, ein neuer use-Befehl und ganz am Ende 2 Funktionen eingefügt.

Es funktioniert, aber im Logfile finde ich nach einem fhem-Neustart diese Meldung:
2020.01.23 21:52:24 1: PERL WARNING: SNIPS::getShortCuts() called too early to check prototype at ./FHEM/10_SNIPS.pm line 1695, <$fh> line 610.
Die angemeckerte Zeile ist die, wo sich die Funktion getShortCuts() rekursiv selbst aufruft.
Habe die Meldung schon gegoogelt und finde Hinweise, dass die Funktions-Deklaration ohne Klammern gemacht werden soll, aber wie soll ich denn dann meine Parameter auffangen?

Im Logfile sind noch mehr warnings im Zusammenhang mit dem Snips-Modul. Die kommen alle nur einmalig nach einem fhem-Neustart wenn man bestimmte Aktionen auslöst.
Die haben nix mit meinen Änderungen zu tun und kommen auch mit der Original-Version vom Modul.

z.B. kommen diese warnings nachdem ich "set Snips updateModel" aufgerufen habe:
2020.01.23 21:53:59 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 278.
2020.01.23 21:53:59 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 337.

oder die hier nachdem ich das erste mal das Hotword gesagt habe:
2020.01.23 21:55:25 1: PERL WARNING: Use of uninitialized value in substitution (s///) at ./FHEM/10_SNIPS.pm line 743.
2020.01.23 21:55:25 1: PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/10_SNIPS.pm line 784.

Sollte man das was machen oder kann man das ignorieren weil es nur warnings sind?

Gruß
chicco
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 24 Januar 2020, 17:05:26
Ich muss zugeben, dass ich mich im Modul nicht mehr so schnell zurecht finde.
Im Diff-Tool sieht das soweit ok aus.

Wenn du vorhast Snips weiter zu nutzen und anzupassen,
kann ich dir das Github Repo auch gerne übertragen.

Ich werde da selbst nichts mehr erweitern, da ich Snips ja selbst nicht mehr nutze und neue Installationen wahrscheinlich auch gar nicht mehr möglich sein werden.
Hast dich in den Code ja scheinbar immerhin soweit reingekämpft. ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: chicco am 24 Januar 2020, 20:36:56
Ok, danke fürs reingucken.
Das repo musst du mir nicht übertragen, ich denke nicht, dass ich da noch weiter anpassen werden. Falls doch, kann ich mich ja melden.
Benutzen werde ich Snips auf jeden Fall noch ne Weile, dafür funzt es einfach zu gut. Mit dem Shortcut-Generator kann man es auch weiterhin mit Begriffen füttern und man hat sowas wie eine light-version von intents.

Gruß
chicco
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Devender am 25 Januar 2020, 17:46:35
Hi chicco,

Ich habe es jetzt mal ausprobiert nach deiner  Anleitung und mit veraendertem Modul.

Ergebnis: meine  vorhandenen Shortcuts wurden gelöscht  :(
Ich hatte zum Test mal den Uhrzeitstring in das neue Attribute geschrieben und dann set snips generateShortcut ausgeführt.
Dise Strings waren dann auch im Attribute Shortcut bei Snips. Leere ich dann das myShortcut und fuege ein "aepfel einkaufen" ein , dann generare sind die Uhrzeiten  gelöscht und nur das  neue drin.

Frage: muss im myShortcut immer alles drin stehen oder nur das, was ich hinzufuegen moechte?

Viele Gruesse,
Dirk
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: chicco am 25 Januar 2020, 19:34:20
Hi Dirk,

in myShortcuts steht immer alles drin.
shortcuts werden immer überschrieben.
Ich hoffe du hast deine shortcuts vorher gesichert?

Gruß
chicco
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Devender am 26 Januar 2020, 09:29:06
Zitat von: chicco am 25 Januar 2020, 19:34:20
Hi Dirk,

in myShortcuts steht immer alles drin.
shortcuts werden immer überschrieben.
Ich hoffe du hast deine shortcuts vorher gesichert?

Gruß
chicco

Vorher gesichert :-)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Prof. Dr. Peter Henning am 26 Januar 2020, 10:43:00
Tja, das wars wohl:

https://forum.snips.ai/t/important-message-regarding-the-snips-console/4145

Snips wird es nur noch als Bestandteil der Sonos-Teile geben.

LG

pah
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: Thyraz am 26 Januar 2020, 10:54:16
Ja, die Trauerphase haben wir auf den letzten 2 Seiten schon hinter uns...


Schade drum, mal sehen was Sonos auf ihren Geräten draus macht.
Eine möglichst freie SmartHome Lösung ist sicher nicht auf deren Agenda. 😉
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: chicco am 29 Januar 2020, 20:28:19
nee, nicht trauern. Einfach weiter benutzen, z.B. mit der neuen Version vom Shortcut-Generator.

Erstmal ist mir aufgefallen, dass innerhalb der geschweiften Klammern nicht beliebiger perl-code stehen kann.
Die Klammern und Gleichheitszeichen im Code machen Probleme wenn meine Funktion die Vars ausliest.
Mann sollte sich beschränken auf AttrVal(), ReadingsVal() und eigene Funktionen aus der 99_myUtils. Eigene Funktionen müssen ein main:: vorangestellt haben, z.B. ({ main::nameDerFunktion() })

Man kann jetzt noch numerische Variablen einbauen. Im Trigger werden die Zahlen dann als Wörter ausgegeben, im cmd werden sie als Zahl ausgegeben.
Dazu in den Vars eckige Klammern einfügen und pipe-getrennte Werte/Bereiche eingeben.
Jeder Wert kann semicolon-getrennt bis zu drei Zahlen enthalten, die einen Schleifenkopf abbilden: [start;ende;step] -> for ($i=start; $i<=ende; $i+=step)
Wenn step nicht angegeben wird, ist step=1
Wenn ende nicht angegeben wird, ist ende=start

Beispiel in myShortcuts:
Teimer ([2;20|25;60;5]) Minuten={setTimer($0)}

Ergebnis in shortcuts:
Teimer zwei Minuten={setTimer(2)}
Teimer drei Minuten={setTimer(3)}
...
Teimer neunzehn Minuten={setTimer(19)}
Teimer zwanzig Minuten={setTimer(20)}
Teimer fünfundzwanzig Minuten={setTimer(25)}
Teimer dreißig Minuten={setTimer(30)}
...
Teimer fünfundfünfzig Minuten={setTimer(55)}
Teimer sechzig Minuten={setTimer(60)}


Auf die Weise hatte ich schon länger Timer mit shortcuts erstellt.
Jetzt wollte ich es variabel gestalten und wie ich es am testen bin, stelle ich fest, dass es in der fhem-App bereits einen Intent setTimer gibt. Grrr, dat steht aber nich inner Doku ;)
Also hab ich das alles wieder aus den shortcuts raus genommen und benutze den Intent.
Das Beispiel mit den Timern ist also kein sinnvolles Bsp.
Einen anderen Anwendungsfall habe ich für die numVars aktuell nicht  :(

Und man kann jetzt noch in myShortcuts die einzelnen Zeilen mit # kommentieren, die Zeilen werden dann nicht in shortcuts ausgegeben.


Gruß
chicco
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: bart0190 am 30 Januar 2020, 23:28:25
Hallo,
Da ich viele Fehlermeldungen auf meiner Snips Installation hatte und auch die Sprachausgabe nicht klappte, habe ich heute eine neu-Installation gemacht. Alles soweit geklappt, nur kann ich nun das Assistant Model nicht mehr herunterladen, weil mein Zugang gesperrt wurde (Sonos hat ja Snips gekauft). Gibt es eine Möglichkeit das Assistant Model von meiner alten Snips-Installation am Raspi auf meine neue Installation zu bringen?

lg
bart
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 03 Februar 2020, 11:58:50
Zitat von: bart0190 am 30 Januar 2020, 23:28:25
Hallo,
Da ich viele Fehlermeldungen auf meiner Snips Installation hatte und auch die Sprachausgabe nicht klappte, habe ich heute eine neu-Installation gemacht. Alles soweit geklappt, nur kann ich nun das Assistant Model nicht mehr herunterladen, weil mein Zugang gesperrt wurde (Sonos hat ja Snips gekauft). Gibt es eine Möglichkeit das Assistant Model von meiner alten Snips-Installation am Raspi auf meine neue Installation zu bringen?

lg
bart

Das sollte funktionieren. Der Assistant ist in usr/share/snips/assistant gespeichert. Vermutlich kopierst du einfach am besten den kompletten usr/share/snips/ folder.
Gruß Jonas
Titel: snips.ai iobroaker Assistant backup
Beitrag von: BastianH am 24 Februar 2020, 17:57:39
Hi,
ich benötige mal eure Unterstützung, ich habe snips und mehreren Satelliten erfolgreich mit  fhem verbunden. Jetzt würde ich gerne dies auch mit iobroaker testen. Da aber seit Februar die snips Console abgeschaltet wurde kann ich mir darüber nicht mehr einen eigenen Assistenten mit der iobroaker app erstellen.

Daher die Frage an euch, hat jemand noch eine assistant_proj_...zip Datei (Damals unter deploy assistant als Download) oder kann jemand von seinem funktionierenden System den Order /usr/share/snips/assistant als zip bereitstellen?

MFG BastianH
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JonasE am 26 Februar 2020, 15:19:34
Hi, ob das noch Sinn macht sich in das Thema mit Snips so reinzuarbeiten weiß ich nicht. Ich habe die Dateien noch und könnte dir die schicken. Zum Hochladen im Forum sind die leider zu groß. In den nächsten Wochen soll eine komplett überarbeitet Version von rhasspy raus kommen (2.5). Diese soll dann auch das Hermes Protokoll unterstützen. Vielleicht macht es mehr Sinn direkt auf rhasspy zu setzten. Die neue Dokumentation dazu ist sogar hier schon einsehbar: https://rhasspy.github.io/rhasspy-voltron/ (https://rhasspy.github.io/rhasspy-voltron/)

Beste Grüße
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: BastianH am 26 Februar 2020, 20:50:16
Danke JonasE,
ich habe dir eine PN gesendet.
In der Vergangenheit habe ich schon mehrere Sprach Assistenten getestet. Bisher hatte ich immer erhebliche Probleme mit installieren von Abhängigkeiten bzw. die richtige Linux Version zu nehmen.
Leider unterstützen auch viele kein Deutsch. Daher bin ich mit meiner momentanen Konstellation mit snips und mehreren Satelliten (mehreren eigenen Hotwörtern, LED anzeigen auf Rearspeker2 mit piz-Wlan) und Integration in fhem sehr zu frieden. Wenn der ,,Rhasspy Voice Assistant" relativ ähnlich ist und zukünftig weiterentwickelt würde ist dies auf jeden Fall ein Test bzw. gegebenenfalls späterer Wechsel in Betracht zu ziehen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JonasE am 27 Februar 2020, 13:36:45
Hi,

Sorry da hab ich wohl etwas falsch verstanden. Ich dachte, dass du den mit FHEM brauchst. Den ioBroker hab ich leider auch nicht.


Gesendet von iPhone mit Tapatalk
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: BastianH am 07 März 2020, 13:16:47
Ja mit fhem läufts ja erfolgreich  ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: alxxb am 15 Juni 2020, 11:43:37
Kurze Frage - ist eine Neuinstallation "from scratch" noch möglich, oder sind aufgrund der Übernahme von Sonos bestimmte Dateien (wie "Assistant Model" in einem der letzten Posts beschrieben) nicht mehr verfügbar? Ein Offline-Betrieb ist ja, wenn ich die letzten Posts richtig verstanden habe, wohl noch möglich.

Danke & Grüße
alxxb
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: JonasE am 15 Juni 2020, 12:28:20
Hi alexbb,

die Installation klappt soweit noch, aber du benötigst auf jeden Fall ein Model und kannst das auch nicht mehr anpassen. Deshalb ist es glaube ich nicht sinnvoll Snips noch zu installieren. Ich würde die Rhasspy in der neuen Version 2.5 ans Herz legen. Ich bin gerade dabei dies zu testen und das gute ist, dass du das Snips Modul aus FHEM dafür nutzen kannst. Rhasspy 2.5 ist nämlich zu dem von SNIPS benutzen Hermes Protokoll kompatibel. Ich denke das ist für die Zukunft sinnvoller als jetzt noch Snips aufzusetzen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: alxxb am 15 Juni 2020, 14:55:26
Hi JonasE,

besten Dank für deine Antwort, ich werde mir dann deine Empfehlung näher ansehen!

Vielen Dank & Grüße
alxxb
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: _daphne am 28 Juni 2020, 12:27:07
Hallo zusammen,

ich habe folgendes Problem.

Gestern hat leider meine Raspberry SD-Karte die Arbeit eingestellt.
Ich habe (zum Glück) die aktuelle fhem-config gesichert, aber leider kein aktuelles Image der SD-Karte.

Beim der Neuinstallation musste ich leider feststellen, dass Snips an Sonos verkauft wurde und die benötigten Dateien nicht mehr zur Verfügung stehen.

Gibt es noch eine Quelle für "FHEM Modul App" zum Download (zuvor über console.snips.ai verfügbar)???

Dank und Gruß
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: rakete123 am 07 Juli 2020, 21:39:29
Zitat von: JonasE am 15 Juni 2020, 12:28:20
Hi alexbb,

die Installation klappt soweit noch, aber du benötigst auf jeden Fall ein Model und kannst das auch nicht mehr anpassen. Deshalb ist es glaube ich nicht sinnvoll Snips noch zu installieren. Ich würde die Rhasspy in der neuen Version 2.5 ans Herz legen. Ich bin gerade dabei dies zu testen und das gute ist, dass du das Snips Modul aus FHEM dafür nutzen kannst. Rhasspy 2.5 ist nämlich zu dem von SNIPS benutzen Hermes Protokoll kompatibel. Ich denke das ist für die Zukunft sinnvoller als jetzt noch Snips aufzusetzen.

Hey, hast du bei deinen Tests schon mehr rausgefunden? Kann man rhasspy als Alternative zu Snips nutzen?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 08 Juli 2020, 09:37:41
Zitat von: rakete123 am 07 Juli 2020, 21:39:29
Hey, hast du bei deinen Tests schon mehr rausgefunden? Kann man rhasspy als Alternative zu Snips nutzen?

Definitiv! Es ist zwar noch nicht ganz ausgereift und noch viel im Aufbau. Die Weiterentwicklung geht allerdings rasant.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 08 Juli 2020, 10:16:50
@drhirn: Kannst du etwas dazu schreiben, wie du die Rhasspy-Integration in FHEM gemacht hast?
Ich habe versucht, die Integration weiterhin über das SNIPS Modul hinzubekommen. Thyraz hat da schon was cooles gebaut, würde das gerne behalten. Theoretisch basieren ja Snips wie auch Rhasspy auf dem Hermes-Protokoll. Es gibt natürlich kleinere Unterschiede, Injection kann z.B. nicht funktionieren wie gehabt. Damit kann ich aber leben.
Ich hatte aber die Hoffnung, dass ich commands weiter per Snips-Modul verarbeiten lassen könnte. Grundsätzlich funktioniert das auch, allerdings lande ich immer in einer Dauerschleife, das Sprachkommando wird sekündlich erneut erkannt und ausgeführt.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 08 Juli 2020, 15:29:05
Naja, eigentlich genau so. Mit dem Modul von Thyraz. Das hat testweise gut funktioniert, ich habe es dann aber nicht genauer nachverfolgt weil mir die Zeit gefehlt hat und Snips ja noch funktioniert.

Das mit der Dauerschleife ist merkwürdig. Da müsste ja irgend etwas ständig Nachrichten über MQTT senden. Kann's sein, dass sich Snips und Rhasspy irgendwie in die Quere kommen? Oder kannst du mal schauen, was an deinem MQTT-Server so passiert?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 08 Juli 2020, 20:57:09
Das Snips Modul empfängt den Intent per MQTT, erkennt den Inhalt korrekt und schickt dann wieder eine Message an die NLU (sieht man gut mit Verbose 5: sending message to NLU:...)
Ich vermute dass diese Message dann wieder von Rhasspy verarbeitet wird und als Intent von der NLU per MQTT verschickt wird. Und das empfängt dann wieder das SNIPS Modul... usw. So kommt es pro Sekunde Mehrfach zu dem hin und her. Ich war deshalb bisher davon ausgegangen, dass das SNIPS Modul nur mit Modifikationen zusammen mit Rhasspy verwendet werden kann. Nur wenn du sagst bei dir hat es geklappt, dann ist wohl irgendwas bei mir im Argen.
Weißt du noch, was du genau in Rhasspy für "Intent Recognition", "Speech to text" und "Dialogue management" eingestellt hattest?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 09 Juli 2020, 09:41:44
Ich sag's gleich dazu, das war noch Rhasspy 2.4

Intent Recognition: fsticuffs
Speech to text: Pocketsphinx
Dialogue management: Rhasspy

Wollte das gestern noch mit 2.5 ausprobieren, kam aber leider nicht dazu.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 16 Juli 2020, 10:51:34
Ich hab jetzt mit 2.5 getestet. Ich bekomme da überhaupt keine Reaktion vom Snips-Modul. Ihr schon?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 21 Juli 2020, 22:33:34
Also bei mir schaltet das Modul schon. Allerdings halt in Dauerschleife.
Ich habe mir die wichtigsten Funktionen jetzt mal mittels Node-Red realisiert. Per Text-Command funktioniert es auch wunderbar. Per Sprachkommando allerdings leider unbenutzbar. Die Erkennungsrate ist bei mir nahe 0%.
Das könnte evtl. an den Phonemen liegen. Da habe ich die automatischen Vorschläge von Rhasspy immer einfach übernommen. Meine Lust da weiter zu forschen ist allerdings vorerst Recht gering. Bin ziemlich ernüchtert
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drcyber am 24 Juli 2020, 13:39:55
Ich habe jetzt mal Rhasspy 2.5.1 (docker) installiert und einwenig damit gespielt, ein paar Befehle versteht er mittlerweile auch ganz gut, jetzt stehe ich aber an dem Punkt, wie gebe ich das ganze an Fhem weiter, bzw gebe dann die anwort auf meine Frage über Rhasspy aus?

Gibts da eventuell irgendwo ein Manual wie man da prinzipiell vorgeht, bzw mit welchem Fhem-Modul könnte man das lösen?
Gerade bezüglich Rhasspy findet man im Netz relativ wenig , Es gibt zwar eine relativ umfangreiche Doku auf der Rhasspy Seite aber wenn man von 0 anfängt ( so wie ich) ist das oft eher verwirrend..

Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 24 Juli 2020, 14:08:59
Naja, im Prinzip sollte das über das Snips Modul in FHEM funktionieren.
Man muss halt den gleichen mqtt Broker für FHEM und Rhasspy verwenden. Bei mir empfängt das Snips Modul die Befehle von Rhasspy auch und führt auch den korrekten Befehl aus. Das dann aber halt in Dauerschleife. Ich muss dann entweder in FHEM die mqtt Verbindung kurz disconnecten oder rhasspy neu starten, um die Schleife zu unterbrechen
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 25 Juli 2020, 11:32:39
Nachdem ich das Snips Modul ja überhaupt nicht mehr zum Laufen bekommen, habe ich mich dazu entschieden, die ganze Logik in Rhasspy abzubilden (sentences.ini, slots, ...). In FHEM baue ich dann einfach ein MQTT Device, das auf hermes/nlu/intent/+ hört. Da sollte dann im besten Fall einfach ein set device value ankommen. Und die Aktionen mache ich dann einfach mit DOIFs oder ähnlichem.
So die Theorie.

Aber alles, was ich bisher habe, ist ein Python-Script, mit dem ich sämtliche FHEM-Geräte aus einem bestimmten Raum in einen Rhasspy-Slot bekomme.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 27 Juli 2020, 16:02:50
@jowe: Zu deiner Dauerschleife: Das Snips-Modul empfängt ja Daten von der NLU. Die werden dann umgebaut (Device durch "Standardgerät" ersetzt) und wieder an die NLU gesendet. Außer es kommt in der MQTT Message "fhem.voiceCommand" oder "fhem.textCommand" vor. Ist jetzt nur eine Vermutung, aber kann es sein, dass die Schleife daher kommt, dass keiner der beiden Bestandteile mit- oder zurückgesendet wird? Ich bin leider nicht gut in Perl, um das jetzt auf die Schnelle analysieren zu können. Aber du vielleicht?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 28 Juli 2020, 11:07:28
Ja, ich vermute auch, dass genau das das Problem ist. Leider bin ich programmiertechnischer Amateur und bei Perl steig ich erst Recht nicht durch. Ich hatte versucht, den Code zum erneuten Senden an die NLU zu entfernen, allerdings hat es dann garnicht mehr funktioniert. Dehalb bin ich einen ähnlichen Weg gegangen wie du es vor hast. Nur dass ich es über NodeRed in Verbindung mit einem DOIF gemacht habe. Das funktioniert auch in soweit, dass ich Lichter an und aus schalten kann. Aber Funktionalitäten, die auch FHEM Status berücksichtigen sollen funktionieren so halt nicht.
Und das hat die Snips Lösung doch zu einem Großteil ausgemacht: Wenn ich "Radio an" sage, wird erst im aktuellen Raum nach einem Device "Radio" gesucht und dann erst als Fallback im default-Raum. Und wenn ich "stopp" sage, wird das entsprechende Multimediadevice dafür ausgewählt, das aktuell etwas abspielt. usw.
Das ist über externen Code halt kaum zu bewerkstelligen. Deshalb wäre meiner Meinung nach immernoch super, wenn wir eine Lösung fänden, um Thyraz' Modul weiterhin nutzen zu können.
Hattest du denn in deiner sentences.ini die intents und die slots auch wie in Snips benannt? also z.B. so:

[de.fhem:SetOnOff]
$Device{Device} $Room{Room} $SetOnOff{OnOffValue}
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 28 Juli 2020, 12:26:42
Ja, da gebe ich dir recht. Das mit "Licht an" und es geht genau da an, wo ich gerade bin, geht mir schon ab.
Ich habe mich gestern auch mal am Umbau des Moduls versucht. Bin aber nicht wirklich weit gekommen.

Und nein, ich habe die Slots/Sätze irgendwie benannt. Deswegen funktioniert bei mir wahrscheinlich auch gerade nichts. Oder es liegt an überhaupt etwas anderem. Ich habe dann testweise mal ein Gerät in Rhasspy "standardgerät" genannt und siehe da, das Modul hat wieder gearbeitet. Musste dann aber meine Versuche abbrechen.
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: laberlaib am 28 Juli 2020, 13:12:20
Gude,

ich würde Euch gerne helfen und da mitgrübelnaber ich bekomme Rhasspy auf einem 3B gar nicht zum Laufen

Installation via dicker nach Anleitung. Allerdings findet er keine Geräte.
PS3Eye z.B.

Wie/worauf habt ihr das installiert?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 28 Juli 2020, 13:47:48
Was heißt "er findet keine Geräte"?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drcyber am 28 Juli 2020, 13:48:41
die Option    --device /dev/snd:/dev/snd beim Docker-Start hast du aber schon verwendet?

btw sollten wir nicht langsam mal einen eigenen Thread für Rhasspy anfangen?
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 28 Juli 2020, 13:56:14
Zitat von: drcyber am 28 Juli 2020, 13:48:41
btw sollten wir nicht langsam mal einen eigenen Thread für Rhasspy anfangen?

Wäre irgendwie sinnvoll. Müsste nur jemand anfangen damit ;)
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: jowe am 28 Juli 2020, 14:26:24
@laberlaib: Ich habe meine Snips-Satelliten so belassen wie sie waren, aktuell ist Snips-Hotword wohl noch die beste Hotword-Erkennung für Rhasspy. Rhasspy selber habe ich auf meinem Nas per Docker installiert. In den Satelliten musste dann nur noch die IP des MQTT Server entprechend von Snips auf Rhasspy angepasst werden. Vielleicht ist das ja eine Option für dich
Titel: Antw:SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai
Beitrag von: drhirn am 28 Juli 2020, 14:29:47
Bitteschön, Rhasspy-Thread im FHEM-Forum: https://forum.fhem.de/index.php/topic,113180.0.html
Bitte dahin wechseln.