I have been developing a Python script/app called Swarm Sandbox, which allows groups of people to experiment with swarm behaviours using mobiles phones (running Symbian S60 3rd).
What is it?
Each phone has a set of local "rules", such as vibrate, camera flash or beep when a given event is triggered. Currently this event is when the phone recieves a "PULSE" connection over Bluetooth from another phone running the script. Each phone automatically discovers local Bluetooth devices, and keeps a running "Swarm List" of compatible phones in the local area. Any user can choose to send a "Pulse" to all phones in the Swarm list at any time, triggering the local rules on their device.
There is currently no practical purpose for this software, however it provides a playful sandbox to explore emergence and swarm behaviours (unexpected patterns) in a group of people - Try running this app with a group of a few friends in a dark space and observing the flashing patterns for example!. There are some planned features that will make this a considerably richer application, such as the following:
- Swarm Encryption/Decryption - Allow files/documents to be encrypted, only unlockable when a number of people are in the same location again
- Location-based short range messaging - You may want to spread a message to people in your location without knowing thier phone numbers
Requirements & Installation
To run this script you require the following installed on your Symbian S60 3rd device:
Python for S60 1.4.5
PythonScriptShell_1_4_4_3rdEd.SIS - self signed
misty193.SIS - self signed
pyaosocket-2.02-s60_30.sis - self signed
* Download the swarm_sandbox.py script from the Google code page. Copy it to your phones' /Python folder on the memory card (ussually e drive), then run it from your Python script shell.
* You need Bluetooth enabled and discoverable!
- If two phones are both in discovery mode, neither will find each other! - I have set a random interval for automatic device discovery to try and aid this problem.
- Unpolished GUI! - Everything is currently echo'd to a text field - functional but not aesthetic
Please feel free to run/modify this script, I don't pretend to be an expert but it might be a useful code sample for someone. If you do play with it with more than 2 phones please leave me some feedback! I want people to experiment with this, and build upon it!
If you do want to contribute, just reply here or email me and I will set you up with permissions on the Google code page so you can freely contribute.