Eigene App erstellen (erste Schritte)?

Hiho ihr Leutz,

Ich möchte gerne meinen Pi mit Snips als kleinen “Küchenhelfer” für meine Frau und mich einrichten (Sprachgesteuerte Eieruhr, Küchenradio usw.).

Leider komme ich schon am Anfang nicht weiter.

Ich habe über die Console meine App erstellt und auch 2 Intents erstellt. Soweit so gut, aber was dann? Wenn ich in die Actions einen Code einfüge, bekomme ich nicht raus.

Da hab ich wohl das ganze Konzept nicht verstanden.

Habe mir jetzt schon viel durchgelesen und auch Vids auf Youtube angeschaut und meine Verwirrung steigert sich immer mehr.

Kann mir einer mal mit einem Tut unter die Arme greifen wie ich eine einfache “Hello World” Ausgabe hinbekomme? Dann hab ich mal einen Anfang, an dem ich rumbasteln kann.

Gruß DerNowo

Hiho ihr leutz,

nach 5 Tagen und über 50 views bin ich immer noch nicht weiter.

Ich hab den folgenden Code sowohl als Py 2 als auch Py 3 über die Console als Action eingefügt:

result_sentence = ‘Schön von Dir zu hören. Du hast erfolgreich den “HelloWorld” Skill getestet. Tschüß.’
hermes.publish_end_session(intentMessage.session_id, result_sentence)

Ich bin langsam am verzweifeln.

Habe mal versucht snips auf ner Ubuntu-VM laufen zu lassen, aber das ist ja eine Katastrophe. Ersteinmal ist der Key-Server beim signieren der responsity falsch … sollte mal im Tut ändern … und dann hat mit nur stress mit den Rechten im Dateisystem.

Kann nicht einer mal erklären, was man für ein sauberes System an Packeten braucht (vorallem mit Version bitte).

Ich finde das Projekt echt klasse, aber die Doku ist lausig. Wer verteilt in einem Dokument zusammenhängende Infomationen wie: “So erstellt man seine eigene App” in 10 verschiedene Seiten???

Also bitte helft mir mit einer sauberen Anleitung. Ich bin kein Py-Pro sondern komme aus der C++ Welt, aber das sollte nicht das Problem sein. Ich benötige einfach mal einen Anfangspunkt.

Halllo @DerNowo,
hast du Snips mit SAM installiert?
Wenn nein, kann ich dir nur raten dies zu tun. Einfach die node.js Konsolen-Anwendung auf z.B. deinem Windows-Rechner installieren. Dies geht mit sam init
Vorher musst du dich aber erst überall anmelden.
Bei weiteren Fragen, musst du dich einfach nur melden :wink:

Liebe Grüße
Nils

Hallo Nils,

danke für die Antwort.

Ich habe Snips auf meinem RPi3 Raspbian lite installiert. Auf meinem Windoofs 10 Rechner notes.js und SAM installiert. Alle Server laufen, Logins sind OK, SAM init und watch klappen auch.
Funktioniert auch sehr gut. Apps wie “Datum & Uhrzeit” oder auch “Wetter” funktionieren 1a.

Leider bekomme ich meinen eigenen Code nicht ans laufen. Bei der Kontrolle mit SAM watch wird auch der Sprachbefehl erkannt und das richtige Intent aufgerufen und dann ist Schluss.

Mein Ziel war es eigentlich den WDR2-Radio-Steam über mplayer aufzurufen. Die entsprechenden Code-Schnipsel habe ich mir schon rausgesucht und die klappen auch als lokales Py-Script.

Wenn ich jetzt über die Web-Console einen einfachen Code in die Actions schreibe wird der nicht ausgeführt und ich weiß echt nicht mehr weiter.

Gruß Patrick

Hallo Patrick,
ich selbst habe noch kein Skill über die Web-Console programmiert. Meine Skills lasse ich aktuell einzeln über node.js auf dem PI laufen.
Hast du jedes mal auch die Skills neu installiert?
Was du auch versuchen kannst ist, dass du ein Git-Repo erstellst und dort alles veröffentlichst.
In Python musst du dann mit Hermes arbeiten.

Liebe Grüße
Nils

Hallo Nils,

jup hab jedes mal einen sam install durchlaufen lassen.
Im Git wollte ich eigentlich erst später arbeiten, wenn die Sache komplexer wird, aber werde ich mir am Wochenende mal einrichten.
Schade ist, dass ich meinen Pi da mitschleppen muss (muss am Wochenende arbeiten und kann wenn nichts los ist da drann rumbasteln). Deswegen wollte ich Snips auf ner VM laufen lassen.

Wie meinst du das mit “Meine eine Skills lasse ich aktuell einzeln über node.js auf dem PI laufen.”? Kann ich auch direkt vom Remote-Rechner Scripte einspielen?

Gruß Patrick

Hallo Nils,

ich glaube ich habe die Fehler gefunden.
Nachdem ich ein bisschen rumprobiert und ein paar mal die skills komplett auf meinem Pi gelöscht habe, gab mir sam bei der installation des assistant endlich eine Fehlermeldung aus mit der ich mich durchhangeln konnte:

  1. Der “Vorlagentext” in den actions muss/sollte gelöscht werden.
  2. Python3 nutzen (mit Python2 hat es nicht geklappt)
  3. Sich an die eigene Nase packen und einen Knoten ins Ohr machen: Nie mehr Sonderzeichen (z.B. ö) in der Programierung nutzen. In meiner App war eins drinnen.

Jetzt hab ich im skills-Ordner auch die entsprechenden Dateien liegen und snips antwortet mir brav.

Gruß Patrick

Hallo Patrick,
perfekt das es bei dir funktioniert :wink:.
Laufen bei dir auch die Skills aus dem Store?
Bei mir laufen nämlich leider sehr viel nicht :slightly_frowning_face:

Nils

Hallo Nils,
ich habe bis jetzt erst 4 Ausprobiert und nicht alle haben funktioniert:
Wetter von lexus hat funktioniert.
Datum & Uhrzeit von domi hat funktioniert.
Wetter von domi hat nicht funktioniert.
Rechner von domi hat auch nicht funktioniert.

Andere hab ich noch nicht ausprobiert, wäre aber mal ein lohnendes Experiment.

Gruß Patrick

Hallo Patrick,
zum Glück bin ich nicht alleine mit diesem Problem.
Ich muss mir auch bald noch mal eine Lösung überlegen.
Viele Skills gehen nicht, da der Python-Code nicht funktioniert bzw. die Libs nicht geladen werden können.

Nils

Hallo Nils,

ich habe gerade mal ein paar App´s ausprobiert und anscheinend funktionieren immer mehr auf meinem kleinen Pi (werden wohl die Lib´s über die requirement manchmal nachinstalliert). Hier mal meine Liste über die bis jetzt getesteten App´s:

Lichtsteuerung by JKBECKER: kein Download der Schnippsel
Datum & Uhrzeit by DOMI: Funktioniert trotz Fehlermeldung × Error setting up virtualenv, one or more actions might not be able to run. Reason : Cache entry deserialization failed, entry ignored
Wetter by DOMI: Funktioniert
Rechner by DOMI: Funktioniert
Wikipedia by CRYSTALMETHOD: Keine Suche auf Wikipedia. Problem mit Python 2?
Haus-Automation by HASSIO: kein Download der Schnippsel
Spotify Music by TIMO-S: Die App verstehe ich nicht.
HelloWorld by CRYSTALMETHOD: keine Funktion. Problem mit Python 2?
Einkaufliste by DOMI: Funktioniert (E-Mail-Versand nicht getestet)
Alarme & Wecker by DOMI: Fehler bei der Installation. Scripte werden nicht ausgeführt.
Wie bitte? by PHILIPP: Funktioniert trotz Fehlermeldung × Error setting up virtualenv, one or more actions might not be able to run. Reason : Cache entry deserialization failed, entry ignored
TV Programm by Philipp: Funktioniert
gutenMorgen/guteNacht by MAXBACHMANN: Funktioniert
Komplimente by MAXBACHMANN: Funktioniert
Witze by DANBER: Script wird nicht ausgeführt.
Rechner+ by TMADDOX: Funktioniert trotz Python 2.

Kannst du mir mal die App´s sagen, die bei dir nicht klappen? Die würde ich dann gerne mal bei mir testen. Vielleicht finden wir den/die Fehler bzw. fehlenden Lib´s.

Gruß Patrick

Hallo Patrick,
also ich habe folgende Skills installiert:

  • VolumeControl von MehrCurry :: funktioniert nicht
  • Timer - Oles :: funktioniert nicht
  • Supervisor - Philipp :: funktioniert nicht
  • Random - olzeug :: funktioniert nicht
  • Wikipedia_Fix Dyon :: funktioniert nicht
  • Rechner - domi:: funktioniert so halb. Fragt zwar nach eine zweiten Zahl, aber mehr nicht
  • Alarme & Wecker - domi :: funktionierte mal. Ich habe jetzt mal Python 2 gelöscht und Python 7 installiert. Seit dem geht es nicht mehr :man_shrugging:
  • Wie bitte? - Philipp:: funktioniert ohne Probleme
  • gutenMorgen/guteNacht - maxbachmann :: ffunktionierte mal. Ich habe jetzt mal Python 2 gelöscht und Python 7 installiert. Seit dem geht es nicht mehr :man_shrugging:
  • Schere,Stein,Papier - maxbachmann :: funktioniert ohne Probleme
  • Buchstabiere - maxbachmann :: funktioniert ohne Probleme

So, dass sollten nun alle sein.

Nils

Hallo Nils,

kannst du spezifizieren was genau bei dir mit “Supervisor” nicht klappt?
Die Installation braucht ja ein paar Schritte mehr, aber eigentlich ist mir gerade kein Problem bekannt ^^

Beste Grüße,
Philipp

Hallo Philipp,
wenn ich sage: “Start dich neu”, dann kommt folgendes:

[02:37:55] [Asr] was asked to listen on site default
[02:37:58] [Asr] captured text “starte dich neu” in 2.0s
[02:37:58] [Asr] was asked to stop listening on site default
[02:37:58] [AudioServer] was asked to play a wav of 93.1 kB with id ‘fe8a9b54-1130-463e-a30f-fb8cc96cfe5b’ on site default
[02:37:59] [AudioServer] finished playing wav with id ‘fe8a9b54-1130-463e-a30f-fb8cc96cfe5b’
[02:37:59] [Nlu] was asked to parse input “starte dich neu”
[02:37:59] [Nlu] detected intent Philipp:Reboot with confidence score 1.000 for input “starte dich neu”
[02:37:59] [Dialogue] New intent detected Philipp:Reboot with confidence 1.000
[02:38:04] [Dialogue] session with id ‘0646b7ee-dcc8-41c0-97d1-8ddcbbf6c7f7’ was ended on site default. The session was ended because one of the component didn’t respond in a timely manner

Ich habe vorher beim PI folgendes angegeben:

sudo cp /var/lib/snips/skills/snips-app-supervisor/snips-app-supervisor.sudoers /etc/sudoers.d/snips-app-supervisor
sudo chmod 0440 /etc/sudoers.d/snips-app-supervisor

Habe einen neustart durchgeführt und es geht nicht.

Nils

Aktuell habe ich noch kein Feedback erhalten, ob das Programm auf anderen Systemen als Raspian läuft. Ist dein System zufällig ein anderes? Das könnte auch erklären wieso mehrere Apps nicht laufen.

Die Bestätigung “wirklich neustarten?” hast du ausgeschaltet? Oder bricht es wirklich schon davor ab?

Was auch immer hilft:
sam service log snips-skill-server
und dann nochmal ausführen, bzw. den snips-skill-server neustarten (sam service restart snips-skill-server)

Besonders bei “session ended because … didn’t respond …” ist meistens im Hintergrund ein aussagekräftigeres Log!

Hallo Philipp,
nein ich nutze einen Raspberry-Pi
Folgendes steht im Log:

Jun 10 10:23:21 raspi-nils snips-skill-server[5237]: INFO:snips_skill_server_lib::runner : [supervisor][err] Traceback (most recent call last):
Jun 10 10:23:21 raspi-nils snips-skill-server[5237]: INFO:snips_skill_server_lib::runner : [supervisor][err] File “./action-supervisor.py”, line 12, in
Jun 10 10:23:21 raspi-nils snips-skill-server[5237]: INFO:snips_skill_server_lib::runner : [supervisor][err] import yaml
Jun 10 10:23:21 raspi-nils snips-skill-server[5237]: INFO:snips_skill_server_lib::runner : [supervisor][err] ModuleNotFoundError: No module named ‘yaml’

So ähnlich steht es leider bei den anderen Skills auch.
Was kann ich machen?

Nils

Hallo Nils,

pyyaml ist eigentlich seit dem 19.3. in der requirements.txt enthalten und sollte damit installiert werden.
hast du das Verzeichnis:
/var/lib/snips/skills/snips-app-supervisor/venv/lib/python3.5/site-packages/yaml

Wenn nicht: lösche einmal den venv Ordner und führe die setup.sh manuell aus (eventuell gibt es hier noch eine Fehlermeldung)

Viele Grüße,
Philipp

Hallo Philipp,
den python3.5 Ordner gibt es nicht. Aber python3.6.
Jedoch gibt es auch den Ordner /var/lib/snips/skills/snips-app-supervisor/venv/lib/python3.6/site-packages/yaml

Beim ausführen der setup.sh kommt folgendes:

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting wheel
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”,)’: /simple/wheel/
Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”,)’: /simple/wheel/
Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”,)’: /simple/wheel/
Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”,)’: /simple/wheel/
Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”,)’: /simple/wheel/
Could not fetch URL https://pypi.python.org/simple/wheel/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host=‘pypi.python.org’, port=443): Max retries exceeded with url: /simple/wheel/ (Caused by SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”,)) - skipping
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”,)’: /simple/wheel/
Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”,)’: /simple/wheel/
Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”,)’: /simple/wheel/
Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”,)’: /simple/wheel/
Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”,)’: /simple/wheel/
Could not fetch URL https://www.piwheels.org/simple/wheel/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host=‘www.piwheels.org’, port=443): Max retries exceeded with url: /simple/wheel/ (Caused by SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”,)) - skipping
Could not find a version that satisfies the requirement wheel (from versions: )
No matching distribution found for wheel

Nils

Hiho ihr zwei,

ich hab gerade mal die App Supervisor als ENG-ASR installiert und bekomme zumindest eine Antwort von Snips. Allerdings habe ich einen Fehler beim Ausführen der commands:

Jun 10 15:28:34 RPI3-test sudo[1531]: _snips-skills : unable to open /var/lib/sudo/ts/_snips-skills : Read-only file system ; TTY=unknown ; PWD=/var/lib/snips/skills/snips-app-supervisor ; USER=root ; COMMAND=/sbin/init 6
Jun 10 15:28:34 RPI3-test sudo[1531]: pam_unix(sudo:auth): conversation failed
Jun 10 15:28:34 RPI3-test snips-skill-server[1436]: INFO:snips_skill_server_lib::runner: [supervisor][err] sudo: unable to open /var/lib/sudo/ts/_snips-skills: Read-only file system
Jun 10 15:28:34 RPI3-test snips-skill-server[1436]: INFO:snips_skill_server_lib::runner: [supervisor][err]
Jun 10 15:28:34 RPI3-test snips-skill-server[1436]: INFO:snips_skill_server_lib::runner: [supervisor][err] We trust you have received the usual lecture from the local System
Jun 10 15:28:34 RPI3-test snips-skill-server[1436]: INFO:snips_skill_server_lib::runner: [supervisor][err] Administrator. It usually boils down to these three things:
Jun 10 15:28:34 RPI3-test snips-skill-server[1436]: INFO:snips_skill_server_lib::runner: [supervisor][err]
Jun 10 15:28:34 RPI3-test snips-skill-server[1436]: INFO:snips_skill_server_lib::runner: [supervisor][err] #1) Respect the privacy of others.
Jun 10 15:28:34 RPI3-test snips-skill-server[1436]: INFO:snips_skill_server_lib::runner: [supervisor][err] #2) Think before you type.
Jun 10 15:28:34 RPI3-test snips-skill-server[1436]: INFO:snips_skill_server_lib::runner: [supervisor][err] #3) With great power comes great responsibility.
Jun 10 15:28:34 RPI3-test snips-skill-server[1436]: INFO:snips_skill_server_lib::runner: [supervisor][err]
Jun 10 15:28:34 RPI3-test snips-skill-server[1436]: INFO:snips_skill_server_lib::runner: [supervisor][err] sudo: no tty present and no askpass program specified

Gruß Patrick

EDIT: Ach ja. Der Ordner /var/lib/sudo/ts ist leer

Hallo Nils,

das sieht für mich nach einem generellen Problem mit dem SSL module aus. Ist mir so auch noch nicht begegnet, aber ich habe grade gefunden, dass wohl in Python 3.6 das SSL nicht mitgeliefert wird.
Leider heißt das

pip install ssl

wird nicht funktionieren, da es ja auch SSL benötigt.
Kannst du schauen ob eine manuelle Installation dazu hilft?

VG
Philipp