These instructions explain how to install RapidSMS with a PyGSM backend for communicating with GSM handsets and modems.
There are many options in how to install the software so a few comments on why to do it as described below:
Note
The command-line is really useful for managing remote servers, so this documentation will use apt .
If you aren't comfortable with the command-line feel free to substitute synaptic.
- Install Paths:
On Ubuntu,
/usr/local
is a good place to put custom software packages. If you are installing RapidSMS to deploy or develop an application,/usr/local
is a good spot.If you are installing to develop the platform itself,
~/home/dev
is probably a better spot.
Note
If you choose to install any of the non-mainline forks, it's a good idea to name your install with the fork name so that you can easily remember where it came from.
For example, if you use the 'ewheeler' fork, put RapidSMS in /usr/local/ewheeler-rapidsms.
Install either Jaunty Desktop or Jaunty Server.
The advantage of Desktop is that you get a full graphical desktop to work with.
The advantage of Server is that you don't get a full desktop, which can discourage people from mucking with your server. Server is a little quicker to install as it has fewer packages.
If you don't know how to get and install Ubuntu, visit the Get Ubuntu website for instructions on downloading or ordering a CD.
The install images and CDs for Ubuntu are always a little out of date. Before installing, it's a good idea to update the system. This requires an Internet connection and can take some time if there are a lot of changes:
> sudo apt-get update > sudo apt-get upgrade
The following packages are required to complete the install:
- git-core: the 'git' command line for retrieving code from GitHub
- python-django: the Django application server (the basis of RapidSMS)
- python-serial: Python serial libraries needed to run PyGSM
- python-tz: Python timezone libraries
You will also need at least one of the following database systems:
- mysql-server: The MySQL server
- python-mysqldb: Python library access to MySQL
OR
- python-pysqlite2: Support for Sqlite3 in Python
- (I know, the numbering is confusing, but pysqlite2 is for Sqlite3)
Note
Currently SQLite should be used for development and testing only. The multi-process nature of RapidSMS does not interact stably enough with SQLite for use in production.
The following packages are OPTIONAL but useful to have, though you can leave them out if you want to create a minimal system and avoid downloading any more packages than you absolutely need:
- picocom: a program for talking to modems over serial ports. Very useful for debugging modem/handset connection problems.
- sqlite3: a command line program for accessing sqlite3 databases. If you use Sqlite3 as the datastore for RapidSMS, you will want this for debugging.
- sqlite3-doc: documentation for sqlite3 tool.
- emacs22-nox: the Emacs text editor.
Note
EMACS is big. If you are happy with Vi or Nano (installed by default), skip this.
This apt command will install all the packages listed above:
> sudo apt-get install git-core python-pysqlite2 mysql-server python-mysqldb python-django python-serial python-tz picocom sqlite3 sqlite3-doc emacs22-nox
4 Retrieve and Install PyGSM from GitHub
The source code for PyGSM is stored at GitHub. You use the 'git' command to retrieve it.
Cloning PyGSM code from GitHub
Once you have selected your fork, you can do the following to clone it (copy it) to your local machine:
> cd /usr/local > sudo git clone git://github.com/rapidsms/pygsm.git pygsm
> cd /usr/local/pygsm > sudo python setup.py install
5 Retrieve and Install RapidSMS from GitHub
The source code for RapidSMS is stored at GitHub. You use the 'git' command to retrieve it.
The most confusing part of downloading RapidSMS is decide which version to download! With all the development happening right now there are more than 10 versions of RapidSMS. In GitHub terminology, each version is called a fork
You can view all the RapidSMS Forks here
The main fork is rapidsms/rapidsms
. Unless you know you need something else, this is the one you should use.
Important
If you don't know which fork to use, please ask for help on the RapidSMS email group
Cloning the code from GitHub
Once you have selected your fork, you can do the following to clone it (copy it) to your local machine:
> cd /usr/local > sudo git clone git://github.com/<fork name>/rapidsms.git <local folder name>
Make sure to replace <fork name> with your fork and <local folder name> with a name for the folder that the content will go into. To download the main fork, I do the following:
> cd /usr/local > sudo git clone git://github.com/rapidsms/rapidsms.git rapidsms
Note
If you named your rapidsms directory differently than I did (maybe you used a different fork) you need to change my example command below to 'cd' into the folder that holds the RapidSMS code that you retrieved in step 6 above.
> cd /usr/local/rapidsms > sudo python setup.py install
PyGSM includes a small demo program that will connect to a modem and respond to incoming SMSs.
The program is called pygsm_demo and it takes as arguments: * The device the modem is connected to. E.g. /dev/ttyUSB0 or /dev/ttyACM0 * Modem configuration settings
The following will run the demo connecting to a MultiTech modem on /dev/ttyUSB0:
> pygsm_demo /dev/ttyUSB0 baudrate=115200 rtscts=1
While running, the demo will show all the commands it is sending the modem. Output will look something like:
pyGSM Demo App Port: /dev/ttyUSB0 Config: {'baudrate': '115200', 'rtscts': '1'} Connecting to GSM Modem... debug Booting debug Connecting write 'ATE0\r' read '\r\n' read 'OK\r\n' write 'AT+CMEE=1\r' read '\r\n' read 'OK\r\n' write 'AT+WIND=0\r' read '\r\n' read 'OK\r\n' write 'AT+CSMS=1\r' read '\r\n' read '+CSMS: 1,1,1\r\n' read '\r\n' read 'OK\r\n' write 'AT+CMGF=0\r' read '\r\n' read 'OK\r\n' write 'AT+CNMI=2,2,0,0,0\r' read '\r\n' read 'OK\r\n' write 'AT+CMGL=0\r' read '\r\n' read 'OK\r\n' Waiting for incoming messages... write 'AT\r' read '\r\n' read 'OK\r\n' write 'AT+CMGL=0\r' read '\r\n' read 'OK\r\n'
The following commands create a test project (remember to replace rapidsms with the folder that has your RapidSMS source code in it from step 5 above):
> mdkir ~/rapidsms-projects > cd ~/rapidsms-projects > rapidsms startproject test-project > cd ~/rapidsms-projects/test-project > cp -a /usr/local/rapidsms/apps/* ./apps/ > cp rapidsms.ini.example rapidsms.ini > chmod a+x ./manage.py > ./manage.py syncdb > ./manage.py route & > ./manage.py runserver &
Now open a browser and connect to http://localhost:8000
You should see a RapidSMS dashboard.