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

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

Vorheriges Thema - Nächstes Thema

ahlermi

PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

Thyraz

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;
}
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

ahlermi

PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

enno

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]
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

Thyraz

@enno, ohje hab das Update vergesen hochzuladen.  :o

Kannst du es nochmal testen?
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

enno

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....
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

Neuhier

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.

Thyraz

@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?
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

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

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.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Neuhier

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.

ahlermi

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
PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

enno

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...
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

Thyraz

@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.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

ahlermi


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
PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN