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

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

Vorheriges Thema - Nächstes Thema

rischbiter123

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

der_da

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

rischbiter123

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

jowe

@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

der_da

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?

rischbiter123

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

ahlermi

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

der_da

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?

rischbiter123

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

laberlaib

@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"]

--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

ahlermi

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

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

laberlaib

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

ahlermi

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

der_da

#673
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.  :-\

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