Mit Gnu/Linux für PyS60 entwickeln
Ped ist eine komfortable Entwicklungsumgebung für Python auf einem S60-Handy (PyS60) und eignet sich sehr gut für das Entwickeln unterwegs. Zu Hause möchte ich aber lieber meinen Computer zum Programmieren benutzen. Über die Bluetooth-Konsole bekommt man zwar ein Terminal, mit dem man Anweisungen über den PC auf dem Handy ausführen kann, es eignet sich aber nicht dazu, ganze Programme zu testen. Es ist nämlich ganz schön ermüdend, wenn man das Skript am Computer schreibt, es mehrmals über USB oder Bluetooth auf das Telefon überträgt, um es dann dort mit der Python-Shell zu starten. Einfacher und schneller geht es mit den PUTools.
Die PUTools installieren
Ich habe PUTools unter Ubuntu 9.10 installiert, was wirklich nicht sehr schwer war. Unter Karmic Koala benötigt man im Prinzip nur python-serial, alles andere dürfte schon installiert sein:
sudo apt-get install python-serial |
Anschließend benötigt man die PUTools, die man am besten in sein Home-Verzeichnis entpackt. Daher wird nun davon ausgegangen, dass die Dateien in ~/putools
liegen. Danach muss man die Datei ~/putools/pcfiles/sync.config
konfigurieren, indem man unter der Variable COM_PORT seinen bevorzugten Bluetooth-Port einträgt:
COM_PORT = '/dev/rfcomm0' |
Außerdem sollten noch Port und Kanal von RFCOMM unter /etc/bluetooth/rfcomm.conf
definiert werden:
# # RFCOMM configuration file. # rfcomm0 { # Automatically bind the device at startup bind no; # Bluetooth address of the device device 00:11:22:33:44:55; # RFCOMM channel for the connection channel 3; # Description of the connection comment "E71"; } |
Die Device-Nummer des Gerätes erfährt man mit dem Befehl hcitool scan
:
christian@Unaha-Closp:~$ hcitool scan Scanning ... 00:11:22:33:44:55 Emil71 |
Nun muss noch das Telefon vorbereitet werden. Damit Handy und PC sich kennenlernen, muss man sie bekannt machen (Pairing). Das erledigt man am Besten mit dem Bluetooth-Applet in Gnome, in dem man die Datei ~/putools/phpush.py
in das Verzeichnis E:\Python
auf der Speicherkarte des Handys überträgt. Außerdem müssen noch die Dateien im Ordner ~/putools/libs/
nach E:\Python\lib
kopiert werden.
Das ganze ohne Applet
Wer kein Gnome oder kein Bluetooth-Applet zur Verfügung hat, kann das Ganze auch zu Fuß im Terminal machen. Dazu muss aber obexftp
installiert sein:
sudo apt-get install obexftp |
Ob eine Bluetooth-Verbindung mit obexftp
sauber funktioniert, kann man erstmal mit folgendem Kommando testen:
obexftp -b 00:11:22:33:44:55 -l |
Die Option -b
besagt, dass ObexFTP über Bluetooth auf das Telefon zugreifen soll, danach folgt dessen Bluetooth-ID mit der Option -l
zum Auflisten des Ordnerinhalts. Die Ausgabe des Befehls sollte also die oberste Verzeichnisstruktur des Handys zeigen. Falls das nicht klappt, und das Handy nach einer PIN für die Bluetooth-Verbindung verlangt, muss man den PIN erstmal als Superuser Root vereinbaren:
sudo -s echo "00:11:22:33:44:55 1234" > /var/lib/bluetooth/11\:AA\:22\:BB\:33\:CC/pincodes |
Nachdem man mit dem Befehl sudo -s
in die Root-Shell geschlüpft ist, hinterlegt man nach folgendem Schema den PIN:
echo "<Bluetooth-ID Handy> <PIN>" > /var/lib/bluetooth/<Bluetooth-ID PC>/pincodes |
Die Bluetooth-ID des Handys ermittelt man mit hcitool scan
, wie schon weiter oben gezeigt, für die Bluetooth-ID des PCs reicht ein ls -l /var/lib/bluetooth
aus. Den PIN kann man frei wählen, in diesem Fall ist es 1234, und wird in der Datei pincodes
hinterlegt. Wenn das Handy wieder nach der PIN zur Bestätigung einer Bluetooth-Verbindung fragt, gibt man in diesem Fall 1234 ein.
Zurück als normaler User kann man dann die Datei phpush.py
auf das Handy kopieren:
~/putools$ obexftp -b 00:11:22:33:44:55 -c E: -c Python -p phpush.py |
Dabei steht die Option -c
für den Pfad zum Ordner, in dem die Datei abgespeichert werden soll. Na gut, genauer gesagt wird das Arbeitsverzeichnis auf dem Telefon gesetzt, was in diesem Fall E:\Python
ist. Mit der Option -p
wird die Datei phpush.py
an den Ordner Python
auf Laufwerk E:
, was in diesem Fall die Speicherkarte ist, gesendet. Dann fehlen noch die Dateien im Ordner ~/putools/libs/
, die nach E:\Python\lib
kopiert werden sollen:
~/putools$ obexftp -b 00:11:22:33:44:55 -c E: -c Python -C lib -p libs/*.py |
Mit der Option -C
legt ObexFTP den neuen Ordner \lib
an, falls er noch nicht vorhanden ist.
Weiter mit PHPush
Wenn das erledigt ist, startet man Push, die Python Utility Shell:
~/putools$ cd pcfiles/ ~/putools$ rfcomm listen /dev/rfcomm0 3 ./push |
Dazu wechselt man zuerst in das Verzeichnis pcfiles/
, in dem das Programm push
liegt. Das Bluetooth-Protokoll RFCOMM emuliert an /dev/rfcomm0
eine serielle Schnittstelle, von der aus auf Kanal 3 gelauscht wird, ob ein weiteres Bluetooth-Gerät bereit ist. Daher ist es jetzt an der Zeit, die PyS60-Shell auf dem Telefon zu starten und das Programm phpush.py
zu laden. Nachdem man den eigenen Rechner als Gegenstelle ausgewählt hat, startet push
und man hat eine simple Python-Shell auf dem Desktop, deren Befehle auf dem Handy ausgeführt werden.
Das scheint sich erstmal nicht großartig von der „normalen“ Bluetooth-Konsole zu unterscheiden, hat aber mit den Shell-Kommandos sync
und run
einen entscheidenden Vorteil: Der Upload ist einfacher und man muss seine Skripte zum Testen nicht mehr umständlich über das Telefon starten. Das Skript kann einfach im Ordner ~/putools
erstellt und dann mit dem Befehl sync
in Push auf das Telefon übertragen werden. Nach Abschluss der Synchronisation startet man das Skript mit dem Befehl run test.py
, was man auch auf dem Bild oben sehen kann.