Berliner hier? (simple BVG-App in Arbeit...)


#1

Moin :slight_smile: Noch andere Berliner hier? Hab die Woche mit snips angefangen und bastle gerade an einer “Wann fährt die nächste Ubahn?”-App als erste Fingerübung und um überhaupt mal Python anzugehen, das wollte ich sowieso schon eine Weile…

Viele Grüße!


#2

Hallo Berliner
Habe eine ähnliche Übung zu Snips und Python für die Schweizer Eisenbahnen hinter mir und habe das mal dokumentiert:

https://www.cellerich.ch/2018/12/24/how-to-make-a-snips-skill-part-1-overview/

Vielleicht hilft es Dir ja bei deinen Versuchen :slight_smile:


#3

Hey cellerich, danke für den Link, das hilft wirklich sehr. Wobei ich eigentlich geplant hatte den Code einfach erstmal direkt in der console zu “parken”, habe keinerlei Erfahrung mit git(hub). Außerdem braucht die API die ich nutze einen token in der URL, und den will ich eigentlich ungern sichbar ablegen. Da grüble ich noch wie ich das löse, falls ich das Ganze überhaupt veröffentliche und nicht nur in meinen eigenen 4 Wänden läuft…


#4

Hei @Lakini

Das Token für die API kannst Du als “End-User Parameter” eingeben (einfach ein Dummy in den App Settings):

dieser Parameter wird dann bei der Installation des Assistant mit SAM abgefragt und der Benutzer kann seinen eigenen “Token” eingeben. Ganz einfach :slight_smile:


#5

@cellerich Danke für den Tipp :slight_smile: Als lokales python-Script läuft die Logik mittlerweile, und in git und github hab ich mich soweit auch reingefuchst. Jetzt wollte ich erstmal ein einfaches “Hallo Welt” zusammenbasteln, um überhaupt mal zu gucken ob ich die ganze Kette lokal=>git=>github=>als Action in den intent einklinken=>assistenz deployen=>sprachausgabe hinkriege, aber irgendwo hakts noch. Momentan renne ich in den " The session was ended because one of the component didn’t respond in a timely manner"-Fehler, und dabei soll mein HalloWelt wirklich nichts anderes machen als sich von dem Intent angesprochen fühlen und dann einen Satz ausgeben. Scheint ein verbreitetes Ding zu sein wenn ich mir die anderen Foreneinträge dazu so ansehe…


#6

Hab das Ganze mal hier runtergeschrieben, so richtig schlau werd ich daraus noch nicht:


#7

Hallo @Lakini

Am besten versuchst Du mal folgendes:

  • im master_intent_callback das 2. if statement löschen. Die Funktion intent_2_callback hast Du nirgends definiert
  • in der Funktion hallo_callback() ein print("hallo_callback called") einfügen
  • dann in einer SSH Session auf deinem Raspi folgende Befehle ausführen.
    • sudo systemctl stop snips-skill-server.service
    • snips-skill-server -vvv

Damit siehst Du das detaillierte Log des Skill Servers. Wenn dein Script tatsächlich ausgeführt wird, solltest Du die Meldung hallo_callback called sehen.
Wenn nicht, schau noch mal in meinen Blog Part 6 nach ob Du alles gemacht hast was nötig ist (Line Endings, Files executable, …)

Viel Erfolg!


#8

HA! snips-skill-server -vvv hat die Lösung gebracht, vielen Dank!

Es war kein Rechte-Problem, und auch nichts im python code, sondern ein Problem mit der requirements.txt

Ich wollte ursprünglich direkt mit meinem BVG-Projekt loslegen, hab mich dann aber doch fürs simplere HelloWorld entschieden. In der requirements.txt hatte ich allerdings schon die zusätzlichen Module eingetragen:

# Bindings for the hermes protocol 
hermes-python>=0.1

# More dependency goes here.. 

requests
datetime
json

Nachdem ich die 4 zusätzlichen Zeilen (Leerzeile plus 3 Module) entfernt und neu deployed habe ging es.

Wobei er sich im Log nicht über einen der zusätzlichen Einträge beschwert hat, sondern dass hermes_python.hermes nicht geladen werden konnte. Bleibt jetzt nur die Frage wie ich die 3 Module doch sauber geladen bekomme fürs richtige Projekt…


#9

Okay, wie zu erwarten: wenn ich anfange doch wieder Module nachzuladen hakt es wieder, diesmal anders.

Meine requirements.txt:

# Bindings for the hermes protocol 
hermes-python>=0.1

requests
json
# More dependency goes here.. 

requests wird dann in der action.py importiert und läuft in einen Fehler:

 [app_helloworld][err]   File "./action-app_helloworld.py", line 8, in <module>
[21:03:58.223716] INFO :snips_skill_server_lib::runner            : [app_helloworld][err]     import requests
[21:03:58.223811] INFO :snips_skill_server_lib::runner            : [app_helloworld][err] ImportError: No module named requests

Wenn ich mich im skill-Verzeichnis auf dem Pi dann in die venv hochhangle und nachgucke welche module installiert wurden, dann fehlen requests und json in der Tat beide, die requirements.txt wird also nicht korrekt genutzt, oder halt einfach die module nicht installiert.

Eine Frage noch: ich hatte die Doku und deinen Post weiter oben so verstanden dass wenn ich in der console einen privaten parameter für einen apikey anlege, dass ich mich nicht weiter um die options.ini kümmern muss, er beim Assistenten-Installieren via sam abfragt und dann auf dem Pi in die config.ini geschrieben wird. Weder das eine noch das andere passiert :-/ @cellerich, hast Du mal ähnliche Erfahrungen gemacht? Meinen Editor (notepad++) hab ich jetzt standardmäßig auf linux LF, und sowohl die PY als auch die setup.sh sind auf ausführbar gesetzt…


#10

Wobei, wenn ich die setup.sh nochmal manuell ausführe beschwert er sich “nur” über json, requests installiert er angeblich:

DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won’t be maintained after that date. A future version of pip will drop support for Python 2.7.
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: hermes-python>=0.1 in ./venv/lib/python2.7/site-packages (from -r requirements.txt (line 2)) (0.1.28)
Collecting requests (from -r requirements.txt (line 4))
Using cached https://files.pythonhosted.org/packages/7d/e3/20f3d364d6c8e5d2353c72a67778eb189176f08e873c9900e10c0287b84b/requests-2.21.0-py2.py3-none-any.whl
Collecting json (from -r requirements.txt (line 5))
Could not find a version that satisfies the requirement json (from -r requirements.txt (line 5)) (from versions: )
No matching distribution found for json (from -r requirements.txt (line 5))


#11

So, wenn ich mich weiter in die Dokus von Python einlese finde ich requests nicht auf der Liste, json hingegen schon (für python 2 und 3 identisch). Heißt das ich muss json garnicht installieren weil es bei Python sowieso dabei ist? Und dann bleibt die Frage: warum wird requests nicht in der venv mit abgelegt wenn er laut setup.sh keinen Fehler schmeißt beim installieren?

Mühsam ernährt sich das Eichhörnchen…