NEWS
[Aufruf] Adapter: Snips - Offline Speak2Text
-
Servus unltdnetworx,
Hi @Wal und @Equilora,
ich wollte euch fragen, ob ich euch bei der Arbeit unterstützen kann. Habe mir heute mal die Mühe gemacht und die Snips App nochmal neu gebastelt, sodass sie nur noch 4 intents hat.
3 zum Schalten von Farbe, Zahlenwerten und Booleanwerten. Sowie einen zum Abfragen der Status. Außerdem gibt es nur noch eine beschränkte Anzahl an Slots.
Wenn ich nicht falsch gedacht habe, sollte es damit einfacher sein in ioBroker zu arbeiten.
Ich würde die App heute Abend mal veröffentlichen, dann könnt ihr sie euch ansehen. Name wäre nur ioBroker. Will damit auf keinen Fall die Arbeit von Harald verdrängen. Es waren mir nur bei der FHEM App schon zu viele Slots. Die Räume habe ich natürlich mit übernommen. Es werden bisher je nach Fragestellung verschiedene Intents abgefragt, das dürfte vermutlich schwierig weiterzuverarbeiten sein.
Evtl. könnte man auf dem Entwurf der App aufbauen um eine einfachere Verarbeitung in ioBroker zu erreichen. `
Hab kein Problem damit wenn der IoBroker- Snips erweitert, angepasst, verbessert wird, wir haben damals hier die Bälle flach gehalten und erstmal eine "Kuhlexa" in einem Stall verbaut, da es auf dem Land halt mit Internet manchmal ein Problem gibt, deswegen sind wir halt auf SNIPS gegangen.
Es gibt ein paar Anfragen von Ställen zur Temperaturregelung in Brütereinheiten für Hühner, Enten, Gänse und Truter, aber auch in Bewegungsställen das Licht zu dimmen, da sind die Intents, Slots und Co natürlich hilfreich.
Wir können gerne mal ne Skype oder WebEx machen und da eine Struktur reinbringen.
Herzliche Grüße und schönen Abend
Equilora aka Harald
-
@Wal:sudo nano /etc/mosquitto/mosquitto.conf
# 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 listener 1500
"listener" ist dein gewünschter Port.
sudo nano /etc/snips.toml
[snips-common] bus = "mqtt" mqtt = "localhost:1500" ```` `
Hallo Walter,
habe wie beschrieben die Dateien editiert. Leider kommt die Meldung :019-01-15 23:26:19.333 error at Function.Module._load (module.js:498:3)
log:
__snips.0 2019-01-15 23:49:20.850 error Error: Cannot find module 'mqtt' at Function.Module._resolveFilename (module.js:548:15) at Function.Module._load (module.js:475:25) at Module.require (module.js:597:17) at require (int
snips.0 2019-01-15 23:49:20.850 error uncaught exception: Cannot find module 'mqtt'__ snips.toml:
__[snips-common]
bus = "mqtt"
mqtt = "localhost:1885"
audio = ["+@mqtt"]
assistant = "/usr/share/snips/assistant"
user_dir = "/var/lib/snips"__
mosquitto.conf
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
listener 1885__
Auf meinem Broker läuft der MQTT Adapter auf dem Port 1884. Ich habe daher den Port 1885 für den snips Adapter konfiguriert.
Nutzt der snips Adapter den MQTT Adapter auf dem Broker?
Was habe ich hier falsch konfiguriert?
Als Test habe ich eine MQTT Instanz als Client auf dem Borker installiert. Der Mosquitto auf dem PI ist erreichbar
hier der Eintrag aus dem log:
mqtt.1 2019-01-15 23:56:06.396 info Connected to 192.168.90.38
mqtt.1 2019-01-15 23:56:06.373 info Disconnected from 192.168.90.38: Error: write ECONNRESET
"Nutzt der snips Adapter den MQTT Adapter auf dem Broker?" Diese Frage hat sich erledigt. Wer lesen kann ist klar im Vorteil
-
@Wal:Sieht aus als ob er die mqtt.js nicht findet.
Mach mal im ioBroker Verzeichniss ein "npm install mqtt" `
Hallo Walter,
die Installation "npm install mqtt" hat mein Problem behoben. Der Adapter läuft.
Ich habe allerdings nicht verstanden weshalb der Snips Adapter diese Installation benötigt. Ich hatte doch bereits vorher den MQTT Adapter auf meinem IOBroker installiert.
-
Hallo Frank,
das kann ich dir beantworten, wenn ich Walter kurz vorgreifen darf.
Der Adapter benötigt das npm Paket "MQTT", welches nicht gleichbedeutend mit dem gleichnamigen Adapter ist. Durch deinen Befehl hast du das Paket installiert und der Snips-Adapter läuft. In der Konfig des Snips-Adapters feht in der aktuellen Version diese Abhängigkeit. Damit wird das Paket automatisch installiert, falls nicht vorhanden.
Ich habe mich die Tage mal etwas mit der Auswertung der Slots aus Snips beschäftigt und deinen Adapter etwas ergänzt. Werde dir später (Hab noch ein letztes Problem zu lösen.) mal auf Github einen pull-request als Vorschlag schicken. Evtl. kannst du da mal drüber schauen.
In meiner Entwicklungsumgebung wird jetzt die "ioBroker"-App von Snips ausgewertet. Übergeben werden dabei der Text, wie bisher, desweiteren die Werte der Slots (für spätere Auswertung) und der kompilierte Text. Also der Originaltext bei dem die Slots die erkannten Wörter ersetzen. Wichtig um etwa Zahlen in ioBroker zu verarbeiten.
Beispiel:
Setze Licht in der Küche auf fünfzig Prozent. (gesprochen)
setze licht in der küche auf fünfzig prozent (erkannter Text)
setze Licht in der Küche auf 50 Prozent (kompilierter Text und Übergabe an text2command)
Licht (slotDevice)
Küche (slotRoom)
50 (slotValue)
Prozent (slotValuetype)
Außerdem ist der Adapter in ein paar Kleinigkeiten angepasst, so dass du jetzt das Testen hinzufügen (Issue auf github) und in das Repo stellen kannst. Dadurch wird dann auch das MQTT-Paket mitinstalliert.
-
Ich habe mich die Tage mal etwas mit der Auswertung der Slots aus Snips beschäftigt und deinen Adapter etwas ergänzt. Werde dir später (Hab noch ein letztes Problem zu lösen.) mal auf Github einen pull-request als Vorschlag schicken. Evtl. kannst du da mal drüber schauen.
In meiner Entwicklungsumgebung wird jetzt die "ioBroker"-App von Snips ausgewertet. Übergeben werden dabei der Text, wie bisher, desweiteren die Werte der Slots (für spätere Auswertung) und der kompilierte Text. Also der Originaltext bei dem die Slots die erkannten Wörter ersetzen. Wichtig um etwa Zahlen in ioBroker zu verarbeiten.
Beispiel:
Setze Licht in der Küche auf fünfzig Prozent. (gesprochen)
setze licht in der küche auf fünfzig prozent (erkannter Text)
setze Licht in der Küche auf 50 Prozent (kompilierter Text und Übergabe an text2command)
Licht (slotDevice)
Küche (slotRoom)
50 (slotValue)
Prozent (slotValuetype)
Außerdem ist der Adapter in ein paar Kleinigkeiten angepasst, so dass du jetzt das Testen hinzufügen (Issue auf github) und in das Repo stellen kannst. Dadurch wird dann auch das MQTT-Paket mitinstalliert. `
Super für deine Eigeninitiative, das trifft man selten.
Im Moment hänge ich an der Sprachfernbedienung für Kodi und Snips fest, ich bekomme das Micro nicht ans laufen. Komischerweise funktioniert die Aufnahme mit Sam, aber nicht die Sprachbefehle. Als zweites programmiere ich gerade an meiner Sip-Türsprechstelle (DoorPi https://www.doorpi.org) rum.
Nochmals vielen Dank an dich, mach so weiter :D.
-
Gerne, ich hoffe es läuft alles so rund wie beim Testen.
Würde noch die Aufnahme des Adapters ins Repo beantragen, mit deinem Einverständnis.
-
Na klar, freue mich immer, wenn es weiter geht.
Gesendet von meinem Ulefone_Armor_5 mit Tapatalk
-
:shock: Grad noch einen kleinen Bug gefunden. Springt trotz erkanntem Intent/Slot trotzdem nochmal im Switch auf den Default Block. Daher wird 2 x mal an text2command übergeben.
-
Okay, gefunden. in Kürze neuer Pull-Request.
-
Repo-Eintrag beantragt.
Kannst du bitte noch den Pull-Request annehmen und das ganze dann nach npm publishen?
-
An alle, die den Adapter testen hier kurz meine Erfahrungen:
Ich habe NUR die "ioBroker"-App auf meinem Snips-Assistenten installiert, zusammen mit der neuesten Version des Adapters. Im text2command Adapter sind bei mir zum steuern von Rollos und Licht lediglich die beiden Regeln "Rollladen auf/zu machen" und "Schalte an oder aus mit Funktion" aktiviert.
Beim Licht muss man momentan zum dimmen noch sagen "Schalte das Licht im Wohnzimmer auf 50 Prozent AN". Das liegt einfach an den Schlagworten dieser Regel. Alternativ könnte man das in Zukunft einfach hier einbauen, also "Schalte das … auf 50%" wird ergänzt durch "AN".
Bei den Rollos funktioniert die Steuerung bei mir nur mit einem kleinen Fix. Dazu habe ich bereits einen Request beim Repo von text2command gestellt.
Rückmeldungen wäre klasse.
Edit:
Ergänzend werden die gesprochenen Worte für an, auf, hoch, etc. jetzt als true und aus, runter, etc. als false von snips übermittelt. Daher müssen die Regeln in text2command entsprechend angepasst werden.
Wenn man z.B. Snips sagt, "Schalte den Fernseher ein" meldet Snips nun "schalte den Fernseher true". Die Regel muss somit lauten: "Fernseher true" statt "Fernseher/TV ein/an/einschalten/anschalten".
Grund dafür ist, dass dies in späteren Entwicklungsschritten dann in Funktionen leichter verarbeitet werden kann.
-
Repo-Eintrag beantragt.
Kannst du bitte noch den Pull-Request annehmen und das ganze dann nach npm publishen? `
Im npm ist es leider ohne deinen letzten kleinen Fix. Der Git ist aktuell.
Wer die neue Version testen möchte, bitte git nutzen. Es wird auch auf https://console.snips.ai das Paket ioBroker von unltdnetworx genutzt, bitte installieren.
Meine Sachen funzen ohne Änderungen mit deinem Pull-Request, Super Arbeit.
-
Hallo Frank,
das kann ich dir beantworten, wenn ich Walter kurz vorgreifen darf.
Der Adapter benötigt das npm Paket "MQTT", welches nicht gleichbedeutend mit dem gleichnamigen Adapter ist. Durch deinen Befehl hast du das Paket installiert und der Snips-Adapter läuft. In der Konfig des Snips-Adapters feht in der aktuellen Version diese Abhängigkeit. Damit wird das Paket automatisch installiert, falls nicht vorhanden.
Ich habe mich die Tage mal etwas mit der Auswertung der Slots aus Snips beschäftigt und deinen Adapter etwas ergänzt. Werde dir später (Hab noch ein letztes Problem zu lösen.) mal auf Github einen pull-request als Vorschlag schicken. Evtl. kannst du da mal drüber schauen.
In meiner Entwicklungsumgebung wird jetzt die "ioBroker"-App von Snips ausgewertet. Übergeben werden dabei der Text, wie bisher, desweiteren die Werte der Slots (für spätere Auswertung) und der kompilierte Text. Also der Originaltext bei dem die Slots die erkannten Wörter ersetzen. Wichtig um etwa Zahlen in ioBroker zu verarbeiten.
Beispiel:
Setze Licht in der Küche auf fünfzig Prozent. (gesprochen)
setze licht in der küche auf fünfzig prozent (erkannter Text)
setze Licht in der Küche auf 50 Prozent (kompilierter Text und Übergabe an text2command)
Licht (slotDevice)
Küche (slotRoom)
50 (slotValue)
Prozent (slotValuetype)
Außerdem ist der Adapter in ein paar Kleinigkeiten angepasst, so dass du jetzt das Testen hinzufügen (Issue auf github) und in das Repo stellen kannst. Dadurch wird dann auch das MQTT-Paket mitinstalliert. `
Ok, verstanden!
Danke unltdnetworx.
-
Github und NPM sind jetzt aktuell mit Version 0.1.0.
Soundfeedback an/aus gleich mit eingefügt.
-
Hi teste mal mit… Die neue Version Taucht nicht unter Update repo latest auf..
Gesendet von meinem CLT-L09 mit Tapatalk
-
Über Github installieren.
-
Eintrag im Repo ist beantragt aber noch nicht angenommen.
-
ist jetzt online….
-
An alle, die den Adapter testen hier kurz meine Erfahrungen:
Ich habe NUR die "ioBroker"-App auf meinem Snips-Assistenten installiert, zusammen mit der neuesten Version des Adapters. Im text2command Adapter sind bei mir zum steuern von Rollos und Licht lediglich die beiden Regeln "Rollladen auf/zu machen" und "Schalte an oder aus mit Funktion" aktiviert.
Beim Licht muss man momentan zum dimmen noch sagen "Schalte das Licht im Wohnzimmer auf 50 Prozent AN". Das liegt einfach an den Schlagworten dieser Regel. Alternativ könnte man das in Zukunft einfach hier einbauen, also "Schalte das … auf 50%" wird ergänzt durch "AN".
Bei den Rollos funktioniert die Steuerung bei mir nur mit einem kleinen Fix. Dazu habe ich bereits einen Request beim Repo von text2command gestellt.
Rückmeldungen wäre klasse.
Edit:
Ergänzend werden die gesprochenen Worte für an, auf, hoch, etc. jetzt als true und aus, runter, etc. als false von snips übermittelt. Daher müssen die Regeln in text2command entsprechend angepasst werden.
Wenn man z.B. Snips sagt, "Schalte den Fernseher ein" meldet Snips nun "schalte den Fernseher true". Die Regel muss somit lauten: "Fernseher true" statt "Fernseher/TV ein/an/einschalten/anschalten".
Grund dafür ist, dass dies in späteren Entwicklungsschritten dann in Funktionen leichter verarbeitet werden kann. `
Hi, kannst du mir kurz sagen welche iobroker app du installiert hast? die von equilora oder deine? Wahrscheinlich deine…
Nur um sicher zu gehen, dass die Tests dann auch Aussagkräftig sind...
-
Die ioBroker, also meine.