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

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

Vorheriges Thema - Nächstes Thema

bennebartsch

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!

heiko-73

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



msommer

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.

heiko-73

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.



laberlaib

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.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

heiko-73

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.....


rischbiter123

Moin,

hat eigentlich schon mal jemand SnowBoy mit Snips verbunden?

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

msommer

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

Ich seh jetzt aber keinen Vorteil, Custom Hotwords funktionieren inzwischen ja auch mit Snips alleine.

rischbiter123

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
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

rischbiter123

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
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

rischbiter123

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
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

laberlaib

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)
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

rischbiter123

#537
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.
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

rischbiter123

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
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

mericon

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