Commit 3de6b046 authored by Konstantinos Tserpes's avatar Konstantinos Tserpes


parent ac179e4e
This is an implementation of a scalable trilaterator based on RSSI measurements.
It is a system that allows the localization of entities that report their RSSI
to fixed, known location access points. It assumes the existence of the wireless
sensor network as well as of an aggregating point that turns the measurements to
a data stream.
STRAND receives this datastream and filters it so as to perform a distance-based
trilateration and localize the entities. As such, the initial data stream of
timestamped RSSI measurements is transformed to a lower frequency stream of
timestamped lat,lon records stored in a MySQL db.
The system is comprised of 4 components: Filter, LoadBalancer, Trilaterator,
Aggregator. The components are communicating through websockets. Each component
is passing data to the other through websockets. All relationships are push with
the exception of LoadBalancer-Trilaterator in which the communication is
happening on the Trilaterator's request (pull).
The components implementing the client of the websocket connection need to be
aware of the endpoints of the websocket servers. This is reflected in the
config.js files of each of the components.
Load Balancing and Scaling
The LoadBalancer is controlling the measurements' queue. Under certain criteria
it spawns more Trilaterators through the Google Cloud Compute (IaaS) environment
(scaleup). When those criteria are not met any longer, it reduces the amount of
VMs running the Trilaterator component (scaledown).
The components can be installed through the deployment scripts. Some deployment
scripts need arguments so they can update the config.js. In particular:
- The Filter script receives the IP of the component that emits the data stream
- The LoadBalancer script receives the IP of the Filter
- The Trilaterator script receivers the IP of the LoadBalancer and the IP of the
The components are self-contained, i.e. all modules are installed (node-module
The Aggregator component needs to have access to a MySQL DB. The host and the
credentials for accessing the DB are located in the config.js file.
The scalabilty functionality can operate on the Google Cloud environment. This
means that the LoadBalancer and the Trilaterator are ideally deployed in the
Google Cloud Compute.
The LoadBalancer needs the file that holds the key for accessing the Google
Cloud Compute API and also the Google Cloud project id.
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment