Hallo,
ich habe hier mehrere Odys Next Android Tablets und nutze diese z.B. zum Ausgeben von Hinweisen per Sprachausgabe.
Bis jetzt habe ich terRemote und Tasker benutzt, so wie hier beschrieben. Leider ist die Konfiguration doch etwas mühselig, daher habe ich mir schon überlegt ob ich mir selbst etwas in Android programmiere. Allerdings ist Java nicht so meine Welt und nach jeder Änderung muss ich ja auch erst umständlich die apk verteilen.
Da ich auf meinem Raspberry Pi schon erfolgreich einen kompletten Webserver per Python mit einem Framework betrieben habe, wollte ich mal sehen wie weit Python auf Android ist. Um es kurz zu machen: sehr weit und sehr beeindruckend.
Los gehts:
-
Als erstes braucht man Python. Dies gibt es schon fix und fertig als „qpython“ im Playstore und kann bedenkenlos installiert werden
-
Nach dem Start am besten die Einstellungen aufrufen. Dort findet man einen fertig konfigurierten FTP-Server, den man einfach startet (eventuell Username/Passwort ändern). Danach kann man bequem vom PC per FTP-Client (nutze MobaXterm) programmieren
-
Auf der Hauptseite kommt man durch wischen auf die zweite Seite und sollte erstmal Package Index starten. Dort QPython Libraries wählen und das Paket Wsgiref installieren
-
Nun auf dem PC von der Seite http://bottlepy.org/ die bottle.py runterladen und per FTP in das scripts-Verzeichnis schieben
-
eine neue Datei webtest.py erzeugen und folgendes Beispiel eintragen:
from bottle import route, run, template
import androidhelper
droid = androidhelper.Android()
@route('/hello/<name>')
def index(name):
return template('<b>Hello {{name}}</b>!', name=name)
@route('/say/<text>')
def say(text):
droid.ttsSpeak(text)
return 'ok'
@route('/msgbox/<text>')
def dlg(text):
droid.dialogCreateAlert(
'Hinweis',
text)
droid.dialogSetPositiveButtonText('Yes')
droid.dialogSetNegativeButtonText('No')
droid.dialogShow()
response = droid.dialogGetResponse().result
droid.dialogDismiss()
return 'ok: ' % response
run(host='0.0.0.0', port=8080)
Wenn man es startet (per My QPython), sollte man auf dem PC per Browser mit :8080/hello/world das hello world angezeigt bekommen.
Nun kann man das Tablet per IPS Sprechen lassen:
file_get_contents('http://<IP>:8080/say/' . rawurlencode('hallo ich bin ein hinweis'));
Oder ein Hinweisdialog anzeigen:
file_get_contents('http://192.168.0.43:8080/msgbox/' . rawurlencode('hier der hinweis'));
Hinweis:
wenn man per FTP was ändert, dann muss man das Script zwei mal ausführen. Am besten immer die Ausgabe von der Notification prüfen ob der Server wirklich läuft.
Bye,
Norman