Sprachsteuerung mit Snips

Begonnen von PapaRiX, 18 Mai 2018, 13:08:15

Vorheriges Thema - Nächstes Thema

mark79

Danke dir erstmal für die Anleitung.

Ich habe im Chat mit CrystalMethod gesprochen und er sagte, das Paket python_hermes gibt es nur für armv7 und mein Rock64 ist armv8.
Wie du schon sagtest, das ganze ist zuerst auf einem Raspberry ausgelegt. Er hat zwei alternativen genannt (paho-mqtt und snips-aiy)
Hier der Chatverlauf:

Zitat>> rock64 is armv8 and I dont know if and how to enable armv7 compatibility
>> imo that is the reason why you can not install it

<< for what is the python-hermes needed? is that only for downloading the skills automatically?
<< i just want to know if snips can be used without hermes python? the package is also not available for amd64...

>> @Mark79 you can use e.g. paho-mqtt instead of hermes-python
>> hermes-python provides implementation of hermes protocol - so it is easier for beginners to get started with snips specific mqtt endpoints, session handling etc ... but you can use plain mqtt client like paho
>> https://snips.gitbook.io/documentation/ressources/hermes-protocol
>> has nothing to do with downloading skills

>> CrystalMethod - heute um 14:29 Uhr
>> https://github.com/macbury/snips-aiy contains a simple bridge from snips mqtt to external mqtt (homeassistant in this case)  .. might be a starting point for your bridge to fhem @Mark79

Ich habe snips vorhin mal auf einer VirtualBox VM mit Debian Stretch amd64 installiert. Aber dort krieg ich das Micro nicht wirklich zum laufen.  ::)
Der alsamixer geht dort und das Micro wird auch angezeigt. Nur Ton aufnehmen klappt nicht. Manchmal ist die VM auch eingefroren, ich vermute das liegt am USB Emulator der VM.

Ich werde das die Tage noch mal beim Rock64 probieren...

Hast du bei dir eigentlich den Sound in mehreren LXC Container geteilt, oder nur in einem?
Weil bei mir geht das erst, nur irgendwann reagiert snips nicht mehr, also erfolgt keine Sprachausgabe mehr.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

Thyraz

#16
Bin mit dem Modul übrigens schon ein gutes Stück weiter gekommen,

das Modul kann mittlerweile sowohl on/off Befehle, als auch numerische Stellwerte (Dimmer, Rollläden, Lautstärke, ...) senden.
Konfigurieren lassen sich die Intents mit einem Mapping ähnlich dem HomebridgeMapping das man aus den Modulen von Andre kennt.
Dadurch sollte das Ganze sehr flexibel nutzbar sein.
Habe auch sonst versucht mich einigermaßen an der Logik seiner Homekit und Alexa Module zu orientieren, damit man sich schnell reindenken kann.
Einen passenden Snips Skill habe ich auch mal erstellt, den man dann installieren und um seine eigenen Gerätenamen erweitern kann.

Denke ich poste die Tage mal eine Beta hier im Forum.

Als nächstes werde ich dann mal Intents zu den passenden Abfragen OnOff (Ist das Gerät eingeschaltet, ist das Fenster offen, ...) und Numerisch (Wie warm ist es im Wohnzimmer, Wie ist die eingestellte Temperatur der Heizung im Bad, ...) hinzufügen.
Dann sollte das Ganze schon recht gut nutzbar sein. :)

Der nächste Schritt wäre dann die Möglichkeit eigene Perl Funktionen zu ermöglichen, die dann die Werte der einzelnen Slots (z.B. Device, Value, etc.) eines Intents übergeben bekommen.
Praktisch so etwas, wie die custom fhemIntents beim Alexa Modul ermöglichen.
Damit sollte dann so ziemlich alles an Abfragen möglich sein, was einem so einfällt.

@Mark

Ok, dann ist die Frage ob hermes-python eine Bibliothek ist um die MQTT Nachrichten (Hermes Protokoll) in Python einfacher verwenden zu können.
Das wäre ja aber erstmal nicht schlimm, wir wollen die FHEM Anbindung ja nicht in Python programmieren. ;)

Wir haben ja außerdem schon 00_MQTT, welches die Arbeit der MQTT Anbindung übernimmt,
so dass mein Modul darüber nur noch die entsprechenden Topics abonniert um die Nachrichten auswerten zu können.

Ist aber dann die Frage ob dein Problem mit deinem Rock64 überhaupt an dieser Abhängigkeit liegt. (ließ sich Snips dann gar nicht fertig installieren?)


Zum Sound: Auf meinem SmartHome Server hat bisher kein anderer Container Sound genutzt.
Habe Alsa auf dem Host sogar erst wegen Snips installiert und dann die Sound Devices wie hier geschrieben durchgereicht:
https://forum.fhem.de/index.php/topic,82767.msg817773.html#msg817773

Damit funktioniert das bisher einwandfrei, hab die letzten Tage ja recht viel getestet und Snips hat immer problemlos reagiert.
(Sowohl Spracheingabe als auch Ausgabe).

Ich hab allerdings auch nicht den Onboard-Sound genommen, sondern hatte zum testen noch so einen USB-Mini Lautsprecher herumliegen der als eigene Soundkarte erkannt wird: https://www.adafruit.com/product/3369

Wenn das Nutzen der Soundkarte in mehreren Containern ein Problem ist,
wäre evtl. eine extra USB-Soundkarte für den Container eine Lösung.
Soweit ich weiß ist Sound über USB unter Linux normal kein Problem, da das direkt im USB-Standard enthalten ist und somit normalerweise keine extra Treiber benötigt.
Evtl. vorher bei einem spezifischen Modell nochmal im Netz danach suchen.
Sowas gibts ja für kleines Geld...
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

mark79

Da bist du schon weit gekommen und das ließt sich schon super. :)

Ich bin leider mit Snips immer noch nicht wirklich weiter, hier bei mir kann ich das nur auf x86 Hardware in einer VM testen und das klappt noch weniger als mit dem Rock64.
Gestern hatte ich mit VMware ein Debian amd64 aufgesetzt. Dort funktionierte das PS3 Eys gar nicht, es wird zwar erkannt, aber aufnehmen darüber klappt nicht und bricht mit einer Fehlermeldung ab.
Ich hatte noch ein USB Headset gefunden, nur dort war der Sound total abgehackt und Snips konnte gerade mal "Hey Snips" erkennen.

Der Rock64 steht bei meiner Freundin... da bin ich heute wieder und dann probiere ich dann mal den Sound nur in einem LXC Container zu teilen.

Derzeit habe ich zwei LXC Container, die sich die interne Soundkarte vom Rock64 teilen. Einmal Fhem mit TTS Sprachausgaben (was auch zuverlässig klappt) und der zweite Container mit Snips (der nach einiger Zeit Soundausfälle hat).

Ich vermute daher, das man den Sound nicht in mehreren LXC Containern teilen kann. Das wäre doof, denn den Sound hätte ich schon gerne in beiden Containern.
Es gibt noch eine Möglichkeit mit pulseaudio den Sound über das Netzwerk zu teilen, so eine art Proxy. Das werde ich bei Gelegenheit mal probieren.

Eine USB Sound Karte habe ich noch aus dem Raspberry Zeiten rumliegen, die werde ich auch mal ausprobieren.
Ist diese hier, mit einem DAC und Verstärker: https://www.amazon.de/gp/product/B071YR3JCX/

Ja und wo das eine kurze Zeit am Wochenende lief, also die Spracherkennung und Ausgabe. Hatte ich mal den Weather Skill in der Snips Web Console aktiviert und das zip gedownloadet und den Inhalt entpackt nach /usr/share/snips/ kopiert.
Danach alle Snips Dienste neugestartet... aber die Wetter Abfrage hat nicht geklappt. Weder auf Deutsch noch auf Englisch.

Sollte es doch eigentlich, wenn man das TTS Paket installiert hat? Man hörte nur den Ton, wenn man das Codewort gesprochen hat.

root@snips2:~# ls -l /usr/share/snips/assistant/
insgesamt 1084
-rw-r--r-- 1 root root    8375 Jul 15 12:38 assistant.json
drwxr-xr-x 2 root root    4096 Jul 15 21:23 custom_asr
drwxr-xr-x 4 root root    4096 Jul 15 21:23 custom_dialogue
drwxr-xr-x 2 root root    4096 Jul 15 21:23 custom_hotword
-rw-r--r-- 1 root root      43 Jul 15 12:39 Snipsfile.yaml
-rw-r--r-- 1 root root 1079347 Jul 15 12:38 trained_assistant.json


Irgendwie habe ich das Gefühl, das mich snips nicht mag. Wie lange ich da schon rumfummel...

Am besten ist es wirklich man holt sich ein RPi. Oder evtl. ein Orange Pi Zero, der hat auch WLAN mit dabei und ist noch ein tick günstiger (Aliexpress).

Hast du eigentlich von diesem Matrix Voice gehört? Mit einem ESP32, das kann man auch an snips anbinden.
Aber das ding ist noch sehr überteuert und stabil soll das wohl auch noch nicht laufen: https://github.com/Romkabouter/Matrix-Voice-ESP32-MQTT-Audio-Streamer
Aber so was in die Richtung wäre wohl die Zukunft...
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

laberlaib

So, ich hab jetzt auch mal Snips installiert und finde es auf den ersten Blick nicht schlecht.
Mit der Hardware, also haupsächlich dem Mikrofon muss ich noch unter Realbedingungen ein wenig spielen, aber sonst wirkt das sehr rund.
Ich habs auf einem RPi3 installiert mit PS3Eye und Sam auf einem RPi2, der hier noch rumflog. Ohne Sam hat das manuelle Einrichten der Assisteten die Actions nicht mitgenommen und ich fands auch umständlich, runterladen-entpacken-kopieren. Das flufft dann mit Sam doch besser.
TTS setzt manchmal aus, wobei das auch der Lautsprecher oder ein fehler in der Action sein kann. Das muss ich mal beobachten und nochmal probieren.

Alles was man da in der Console anlegen kann und muss, muss ich mir nochmal richtig zu gemühte führen, ein

device=Wohnzimmerradio
sender=Cadena Ser

Habe ich allerdings schonmal übergeben bekommen und zum Testen sonst setzte ich gerade diese Taschenrechnerapp ein.

MQTT hatte ich vorher noch nicht benutzt und daher das ganze mal schnell umgesetzt mit einem
attr mqtt_Test autoSubscribeReadings hermes/intent/+
dazu das in diesem Thread schon erwähnte "expandJSON" und abgehts.

Allerdings kann mir vielleicht hier jemand mit folgenden Fragen/Problemen weiterhelfen:

1) Dient das Anlegen von unterschiedlichen Assistenten nur dem Komfort und dass man bspw. eine Testumgebung hat etc. ode kann man auch mehrere Assistenten mit unterschiedlichen Hotwords laufen lassen? Meine Frau ist Spanierin, da wäre natürlich (sobald spanisch auch offline läuft) ein weiterer, spanischer Assistent nicht schlecht. Oder auch wenn man ähnliche Intents hat, diese auf unterschiedliche Assistenten/Hotwords zu verteilen, so dass es für die Erkennung einfacher wird.
Theoretisch könnte ich einfach 2 Raspis laufen lassen mit 2 Mikrofonen, sobald man aber Satelliten aufbauen will, wird das sehr schnell viel Hardware.

2) Satelliten: gibt es dafür Anleitungen? Hatte da nichts gefunden.

3) FHEM und Notifys: Mal am Beispiel der Addition: Ich erhalte ja im Eventmonitor folgendes:
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test transmission-state: incoming publish received
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test domi:getAddition: {"sessionId":"04f8e9be-c66b-48f0-9791-42adec34b27e","customData":null,"siteId":"default","input":"wieviel ist zwei plus zwei","intent":{"intentName":"domi:getAddition","probability":0.6415105},"slots":[{"rawValue":"zwei","value":{"kind":"Number","value":2.0},"range":{"start":12,"end":16},"entity":"snips/number","slotName":"firstTerm"},{"rawValue":"zwei","value":{"kind":"Number","value":2.0},"range":{"start":22,"end":26},"entity":"snips/number","slotName":"secondTerm"}]}
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test siteId: default
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_01_range_end: 16
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_01_range_start: 12
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_01_entity: snips/number
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_01_slotName: firstTerm
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_01_value_value: 2
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_01_value_kind: Number
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_01_rawValue: zwei
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_02_rawValue: zwei
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_02_value_kind: Number
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_02_value_value: 2
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_02_slotName: secondTerm
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_02_entity: snips/number
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_02_range_start: 22
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test slots_02_range_end: 26
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test sessionId: 04f8e9be-c66b-48f0-9791-42adec34b27e
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test input: wieviel ist zwei plus zwei
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test intent_probability: 0.6415105
2018-07-19 13:32:46 MQTT_DEVICE mqtt_Test intent_intentName: domi:getAddition

Auf was kann ich da nun am besten reagieren? Man könnte über das Reading "input" die Verarbeitung an FHEM übergeben (Talk2Fhem o.ä.).
Aber durch den "intentName" weiß ich ja manchmal schon, um was es geht (z.B. mein testintent: playRadio mit den slots Device und Sender). Da würde ich ja gerne per notify oder DOIF sagen (Pseudocode):

Wenn intentName=="playRadio" Dann
    Spiele auf [Device=Slot:Device] [Sender = Slot:Sender]
Wenn Ende

Lt. Eventmonitor kommen alle Events zeitgleich. Heißt das, dass die Readings zum Zeitpunkt des Ausführens des Notifys/DOIFs auch schon aktualisiert sind? Das kann ich auch testen, allerdings sind Tests immer nur Stichproben.

Da ich keine sonstige Sprachsteuerung versucht habe, habe ich auch keine Ahnungen, wie das bei anderen Systeme aussieht (Mapping etc), bin also umso gespannter auf Thyraz' Modul.

...werde ich mal weitertesten.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

Thyraz

Hab noch keinen Satelliten installiert,
aber an sich sollte die Installation erstmal die selbe sein.

Unterscheiden müssen sich nur die Configs.
Beschrieben ist das hier:
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

Hab auch recht lang in der Doku suchen müssen bis ich da drüber gestolpert bin.  ;D


Zu SAM:
Kann man auch auf dem selben Rechner installieren wie Snips, oder auf dem eigenen Desktoprechner (wofür es eigentlich gedacht ist) .

Ich hab es einfach mit zu Snips geknallt und er connected dann eben zu localhost.

Zu mehreren gleichzeitig aktiven Assistenten hab ich bisher noch nichts gesehen.
Wäre mit unterschiedlichen Hot-Words aber natürlich ne coole Sache...
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

laberlaib

SAM auf den selben Raspi zu installieren ist natürlich gar nicht doof... naja, in der finalen Konfiguration dann.

Satelliten richte ich heute abend mal auf einem Zero ein.

Und zu mehreren Assistenten findet man das hier auf https://snips.ai/technology/ bzw. https://snips.ai/enterprise/
ZitatWake Word Gateway
Link multiple wake word with different assistants, including external ones such as Amazon Alexa or Google Assistant.
Wobei das dann hoffentlich nicht nur für die Enterpriseversion gilt, immerhin ist es auch auf /technology/.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

mark79

Hey Thyraz,

sag mal hast du auf console.snips.ai auch Skills aktiviert, z.B. Wetter... die du verwenden kannst und wo dann auch eine Sprachantwort via TTS ausgesprochen wird?
Bei mir will das nicht und das liegt vermutlich an hermes_python... Wenn das bei dir geht, verstehe ich nicht warum. Weil es das Paket nur für arm v7 und mac gibt.

Du schreibst hier:

Zitat von: Thyraz am 15 Juli 2018, 21:01:50
Assistant auf
https://console.snips.ai
konfigurieren und runterladen.
Entpacktes assistant Verzeichnis als /usr/share/snips/assistant speichern

Snips neu starten:
sudo systemctl restart "snips-*"

Sonst nichts, nur kopieren? Also kein...:
sam install assistant
sam update-assistant ?

Ich habe zwei Skills, "Wetter" und "Welcher Tag ist heute" in der Console aktiviert und den Ordner /usr/share/snips/.... kopiert.
Im snips-watch steht folgendes:

[16:12:57] [Hotword] detected on site default, for model hey_snips
[16:12:57] [Dialogue] session with id '75c45c20-2acc-4621-a13b-422e14bee5c3' was started on site default
[16:13:03] [Asr] captured text "wie wird heute das wetter vach" in 5.0s
[16:13:05] [Nlu] detected intent domi:searchWeatherForecast with probability 0.981 for input "wie wird heute das wetter vach"
              Slots ->
                 forecast_start_date_time -> 2018-07-20 00:00:00 +02:00
                        forecast_locality -> Vach
[16:13:05] [Dialogue] New intent detected domi:searchWeatherForecast with probability 0.981
              Slots ->
                 forecast_start_date_time -> 2018-07-20 00:00:00 +02:00
                        forecast_locality -> Vach
[16:13:11] [Dialogue] session with id '75c45c20-2acc-4671-a11b-412e15bee5c3' was ended on site default. The session was ended because one of the component didn't respond in a timely manner
[16:13:14] [Hotword] detected on site default, for model hey_snips
[16:13:14] [Dialogue] session with id 'f27650eb-097e-410d-8188-dc47f1a0a5ae' was started on site default
[16:13:21] [Asr] captured text "welchen tag haben wir heute" in 5.0s
[16:13:22] [Nlu] detected intent domi:currentDate with probability 1.000 for input "welchen tag haben wir heute"
[16:13:22] [Dialogue] New intent detected domi:currentDate with probability 1.000
[16:13:28] [Dialogue] session with id 'f27650eb-097e-410d-8188-dc47f1a0a5ae' was ended on site default. The session was ended because one of the component didn't respond in a timely manner


Unteres erhalte ich, wenn ich das Zip File per "sam install assistant" oder "sam update-assistant" installieren will.

root@snips2:~#  sam install assistant
Fetching assistants done
Found 1 assistant named test
Downloading assistant
Fetching assistants done
NLU training done
ASR training done
✔ Deploying assistant to localhost...
Checking for skills
Cloning skill domi.Wetter from url: https://github.com/MrJohnZoidberg/Snips-Wetter
Klone nach 'Snips-Wetter' ...

Cloning skill domi.Datum_+_Uhrzeit from url: https://github.com/MrJohnZoidberg/Snips-DatumUhrzeit
Klone nach 'Snips-DatumUhrzeit' ...

Generating virtual environment for python actions done
i Error setting up virtualenv, it might cause an issue on one of your action. It might also be caused by an invalid character in your skill name, reason : Could not find a version that satisfies the requirement hermes_python>=0.1 (from -r requirements.txt (line 1)) (from versions: )
No matching distribution found for hermes_python>=0.1 (from -r requirements.txt (line 1))
  Could not find a version that satisfies the requirement hermes-python>=0.1 (from -r requirements.txt (line 2)) (from versions: )
No matching distribution found for hermes-python>=0.1 (from -r requirements.txt (line 2))
  Could not find a version that satisfies the requirement hermes-python>=0.1 (from -r requirements.txt (line 2)) (from versions: )
No matching distribution found for hermes-python>=0.1 (from -r requirements.txt (line 2))
  Could not find a version that satisfies the requirement hermes_python (from -r requirements.txt (line 7)) (from versions: )
No matching distribution found for hermes_python (from -r requirements.txt (line 7))
Relaunching snips-skill-server
✔ Snips assistant is now running. Say hey_snips to start!
i Run sam watch to see the logs
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

Thyraz

Ah. Kann gut sein, dass das Paket nötig ist um fertige Skills mit Actions aus dem Store zu verwenden.
Wenn die in Python geschrieben sind, kann es sein, dass das Paket dann dafür nötig ist.
Ich hab davon bisher noch keine probiert.

Da ich aber direkt über FHEM lauschen will und nicht über einen Python-Zwischenlayer ist mir das nicht aufgefallen bisher.

Zum installieren des Assistenten:
Ja, kopieren und die Services neu starten reicht.

Sam ist ja nichts anderes, als ein Hilfstool, das genau diese Abfolge macht:
- Download mit vorherigem Trainieren des Assistenten
- Assistent entpacken und nach /usr/share/snips/assistant verschieben
- Services neu starten

Kann man an sich genauso gut händisch machen.
Hab aus Bequemlichkeit aber mittlerweile auch Sam installiert. ;)
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

mark79

Ahh alles klar, dann kann ich ja lange rumfummeln. :D
Ich dachte du verwendest zum Teil die vorgefertigten Skills...

Ich warte dann mal auf dein Testmodul. :)

Snips läuft jetzt bei mir so weit. Ich habe eine externe USB Soundkarte angeschlossen und den Sound vorerst im Fhem Container deaktiviert. Ich werde noch testen, ob man den doch irgendwie teilen kann.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

Thyraz

#24
Wer am Wochenende noch nichts zu tun hat kann hier mal testen. 😉
https://github.com/Thyraz/Snips-Fhem

Ihr braucht:

- Eine funktionierende Snips Installation
- FHEM ,,App" im Assistent von https://console.snips.ai
- Ein MQTT Device in Fhem für den Snips MQTT Server
- Das verlinkte Snips Modul in Fhem definiert
- Die zu steuernden Geräte im Raum Snips mit passendem snipsMapping Attribut

Ist alles ausführlich in der Readme auf Github erklärt.

Bei Fragen einfach Fragen. ;)

Werde für das Modul auch noch einen extra Thread aufmachen.

Der Intent um Zahlenwerte abzufragen ist noch sehr mit heißer Nadel gestrickt:
Die Antwort ist immer gleich, egal welcher Type (Temperatur, Helligkeit, ...) erfragt wird.
Und die ,,Part" und "Map" Optionen aus dem Mapping gehen hier auch noch nicht.

Dafür gibts schon ein ,,say" Kommando für TextToSpeech, das noch nicht dokumentiert ist.

Bin mal gespannt ob soweit alles bei euch läuft.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

mark79

Wow da hast du schon ordentlich was hingezaubert und eine super Anleitung erstellt. Ein dickes Kompliment!! :)

Ich habe das Modul installiert und die FHEM APP eingerichtet.
TTS Ausgaben funktionieren schon mal... werde später noch Polly einrichten.

Was noch nicht geht, ist das schalten.

Reicht es aus, z.B. bei meiner WZ_Stehlampe (Fhem Device) die an einer Sonoff Steckdose mit Tasmota hängt, folgende Attribute zu setzen?
snipsMapping SetOnOff=valueOff=OFF,cmdOn=ON,cmdOff=OFF
snipsName Bogenlampe
room Snips


snips-watch:
[12:36:22] [Asr] captured text "bogenlampe ein" in 2.0s
[12:36:23] [Nlu] detected intent mark79:SetOnOff with probability 1.000 for input "bogenlampe ein"
              Slots ->
                 Device -> Bogenlampe
                  Value -> an

             
Fhem Event monitor:
2018-07-21 12:36:23 SNIPS Snips lastIntentPayload: {"sessionId":"6a07b5ac-2e0a-42bc-af2a-7e72f08a2579","customData":null,"siteId":"default","input":"bogenlampe ein","intent":{"intentName":"mark79:SetOnOff","probability":1.0},"slots":[{"rawValue":"bogenlampe","value":{"kind":"Custom","value":"Bogenlampe"},"range":{"start":0,"end":10},"entity":"de.fhem.Device","slotName":"Device"},{"rawValue":"ein","value":{"kind":"Custom","value":"an"},"range":{"start":11,"end":14},"entity":"de.fhem.OnOffValue","slotName":"Value"}]}

Mehr passiert leider nicht. Ich muss jetzt auch erstmal weg, heute Abend mach ich weiter.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

mark79

Fehler gefunden, ich hatte den Assistantsnamen als Prefix im define, anstatt des Snips Accountnamen.
Nun geht es, coole Sache! :)
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

Thyraz

An sich sieht das gut aus.
Kann sich an sich nur um ne Kleinigkeit handeln.

Der Payload enthält den Intent "SetOnOff", das Device "Bogenlampe" und den Wert "an".
Mehr ist an sich nicht nötig.

Ich denke es hängt am Mapping.
Hier braucht man immer komma-getrennte Key-Value Paare (Also Key1=Wert1,Key2=Wert2,...).
Und hinter dem Intent muss als Wert das Reading kommen über den das Modul den Wert ggf. zurücklesen kann.
(Beim SetOnOff wird das im Moment wohl noch nicht verwendet, aber bei den anderen Intents ist das wichtig um z.B. die Helligkeit einer Lampe um 10% zu erhöhen.)

Der Teil SetOnOff=valueOff=OFF ist daher so nicht gültig.
Bist du dir auch sicher, dass die Befehle ON und OFF wirklich groß geschrieben sind?
Die meisten FHEM Module setzen auf kleingeschriebene on und off Befehle.
Zumindest meine Hue Lampen spucken eine Fehlermeldung aus, wenn ich in der FHEM Console set Nachttischlampe ON eingebe.

Das Mapping sieht bei mir hier z.B. so aus:

SetOnOff=state,valueOff=off,cmdOn=on,cmdOff=off
GetOnOff=state,valueOff=off
SetNumeric=dimmerVal,cmd=pct,step=20
GetNumeric=dimmerVal,type=Helligkeit


Falls die Lampe nicht dimmen kann, reichen natürlich die ersten zwei Zeilen um ein- / auszuschalten und den aktuellen Status abzufragen.


Falls es das nicht ist:

Hast du im Snips Device 2 Readings lastIntent und lastIntentPayload?
den Payload hast du ja schon vom Event Monitor gepostet, das Intent Reading wirft aber keine evtl. keine Events.

Kannst du sonst auch noch ein list vom Snips Device posten?
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Thyraz

Ah, gut dann hast du es ja schon gefixt. :)

Dann hat er sich an dem Mapping wohl doch nicht verschluckt, auch wenn es nicht ganz richtig war.
Da das Readings bei SetOnOff noch nicht genutzt wird, und valueOff eigentlich auch nur bei GetOnOff statt SetOnOff interessant ist, eigentlich auch recht logisch.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Thyraz

Ach ja, was auch noch nicht geht:

Hey Snips, wie warm ist es im Wohnzimmer ohne Angabe des Geräts (z.B. "Thermometer").
Hier werde ich noch einbauen, dass dann alle GetNumeric Intents mit type=Temperatur im passenden Raum gesucht werden.

Bei nur einem Treffer dann eben eine Rückmeldung Die Temperatur im Wohnzimmer beträgt 22.3 Grad.
Bei mehreren Treffern etwas in die Richtung Die Temperatur im Wohnzimmer beträgt zwischen 21.9 und 22.5 Grad.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...