How can technologies enable citizens to have an active role in research?
How can technologies enable citizens to have an active role in research?
This project aims to explore this question through the design of two hardware
prototypes and accompanying software, which is split into three software components:
The technology design choices were directed from a previous workshop held with three
citizens and researchers that explored the potential of technologies to broker a
citizen’s local community knowledge and skills to further an area of research to them.
The core features of the client are assigned to an individual button on each artefact:
Note: once client.py
is run, it will check every 5 minutes for new messages and matches.
The server hosts the website for participants to get involved (i.e. sign-up), and the
REST web service used by the client codebase:
This repository hosts the codebase for the client (audio communication between devices) and
server (REST service & website).
css/javascript/images
used by the websiteCreate a virtualenv to
install the dependencies required to run the server:
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
Note: the client codebase requires RPIO GPIO toolbox
to be installed on the Raspberry PI machine as it is not provided as a requirement —
the server and API exist regardless of client codebase.
You can view the website locally at http://127.0.0.1:8080/
by running the
flask app:
python run.py
This creates the Flask application, which the REST API is hosted.
Establishing a server is required before running the client codebase.
To run the client code a client must first be matched, and you must have two instances and
hardware to validate a bi-directional conversation. To ease development, pop.py
was written
that automatically creates the database and initial message. This should be run once:
python pop.py
The client code can now be run. By default, you would have been matched with rem
. You can
then send messages to the matched user through your custom hardware (or our artefact).
Modify the api_key
in clients.py
to rem
— the person you just sent messages to.
If you run the client script again you can now playback all the audio’s you sent.
To make the website externally visible
modify the host address in run.py
to 0.0.0.0
, which opens the server for access on the local network
(Intranet) through the IP address of the server. You then need to (1) find the IP address of the server
and (2) manually update client.py
to point to this address. To do that:
1) run ifconfig
and make note of the inet
of etho0
. This is the IP
address of the machine you are running the server on.
2) update client.py
to point to your server
3) ensure that both the server and client are on the same network that has port 8080 open
(this would not work on a university network, but would work at home or OL-Kitchen-WIFI
)