Janus Terminus GSM864Q – Cell Modem with Smarts
by Dominic Cope, on December 7, 2010
We here at Exosite like to play with test new devices and get them reporting data to our platform. One of my first tasks was to get the Terminus GSM864Q talking, so it could be used to monitor a water pump for an agriculture project.
This device is made by Janus Remote Communications, and they describe it as "an intelligent GSM/GPRS control terminal." I would have to agree. This little package has plenty of features packed into it, such as Python scripting, ADC input, serial port interface, and an (optional) GPS. However, Janus can't take all the credit for this device. The Terminus uses Telit's GC864-QUAD GSM/GPRS module, which is where a lot of the magic happens.
Connecting the Device to Your Computer
Before you dive into writing any code, make sure your computer is setup properly to communicate with the Terminus. Follow the instructions in the User Guide, but here are some additional steps you might need:
- Install a driver for using USB-to-Serial interface. The PL2303 Prolific Driver Installer v130 from Prolific worked great.
- Install the terminal emulator TeraTerm Pro from Ayera. IMO, using it is a much better experience than HyperTerminal.
- Install the Python dev module from Telit. Note: the installation program may overwrite previous settings you have for other versions of Python, such as your default PYTHONPATH, icons, etc. If this happens, you will need to reset these manually after installation.
Test your connection to the Terminus by connecting it to your computer, open a new connection to the appropriate COM port, and then power on the device. Also, connect the correct jumpers if you are enabling the GPS module. Refer to the documentation for specific pins.
Demo Files
The demos Janus makes available are excellent. In fact, we modified their GPS demo as a proof-of-concept to show data reporting to Exosite. This data included GPS coordinates, signal strength, and a sawtooth algorithm value. Using the Terminus' GPRS data connection and Exosite's HTTP API made it easy to get things working. Just construct the message according to protocol and send the request to Exosite's server.
To make it even easier, an ExositeTelit.py module is available for anyone to use. Instead of creating the message string, simply import the module and call the httpPost method with your data as the input parameter:
# Enter your data source Resource Alias as the "key" and data as the "value" of a Python dictionary
# Ex: Resourced Alias '1' stores latitude/longitude data, Resourced Alias '2' stores ping data (Note: The Alias does not have to be a numerical value, it is defined when creating the data source and can be any string you specify)
# resource_dict = {'1':latlng, '2':ping}
resource_dict = {
'1': latlng,
'2': ping,
'3': sig
}
post = ExositeTelit.httpPost(myApp.CIK, resource_dict)
# Send string to customer server
DEBUG.sendMsg('Sending data: ' + post + 'rn',RUN_MODE)
res = MDM.send(post,0)
Feel free to download and use our demo files, too, but you'll need to setup a few of things to make it work. First is create an Exosite account (free to sign up). Second is obtain a CIK for the device and configure resource ids for data sources through the Exosite Portals. Finally, make sure your app specific settings are entered correctly in the GPSDemo.py file.
Challenges
There were a few hiccups with the device. The GPS signal had trouble getting a lock onto the position in our office building. If the GPS output is all zeros, try re-positioning the GPS receiver in a location clear of any obstructions. Good news is that after the initial lock, the problem seemed to go away on subsequent reboots. Dealing with a lightweight version of Python 1.5.2 can be limiting. I give Telit credit for providing any scripting capability at all, but pay attention to their Easy Script doc. It explicitly indicates which Python features are supported. Lastly, downloading files to the Terminus was hit-or-miss. It threw an error or hung up enough times to become mildly annoying. This would require unplugging the device to reboot and attempting to download the file again.
To Sum It Up
Even with these minor gripes, it remains a cool little device that would be useful in many real-world applications. If you have any questions or issues connecting the Terminus GSM864Q to Exosite, drop us a line. We'll be glad to help you out.