Badge Challenge Build Part 15

For communication from the participants to the handler, sms messaging is to be used.

We require the following properties:

  • a consistent number to publish in the game materials
  • programmatic sending and receiving
  • bulk and transactional sending without rate limiting
  • high reliability of sms send and receive to most New Zealand numbers
  • non proprietary tools for sending and receiving
  • no requirement on an internet connection

A number of national and international providers exist for sending or receiving sms, but without a reliable or secure internet connection, we use dedicated hardware with a sim card per device.

The hardware chosen was the Vodem Stick K4607z which appears to be rebranded ZTE hardware for Vodafone.

New devices are purchased in order to have identical hardware. This allowed for developing the library only once, and making it likely the hardware would be available if additional devices or replacements are required closer to shipping date.

It's advantages for this project are:

  • powered off usb
  • presents as a usb ethernet device with a dhcp server
  • javascript web interface to sms functions
  • not carrier locked

The carrier chosen is M2M One NZ.

This channel is also used for a limited amount of communication with the scoreboard from the launch consoles.

In order to communicate with the device, a python library is written. The library is written to allow full use of the device beyond sms functions.

While this library allows for interaction with the device, it has some potential problems:

  • Interactions are not transactional. An sms is accepted by the api may be dropped either by the device if it determines it can't send it for incorrect parameters supplied, or due to network conditions.
  • The device is written assuming single threaded access using the web api and accessing api functions only when following specific actions. In some cases api calls return malformed responses when called before state is initialized.
  • The device can only store a small number (100) of messages total in any message box and must be regularly cleaned up once messages have successfully been sent or received.

Vodem of choice
Telco who gives bulk and automated sms
Github - python code for vodem