Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
masonleon authored Dec 14, 2019
1 parent 1bc6e58 commit febab22
Showing 1 changed file with 14 additions and 16 deletions.
30 changes: 14 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ The final report may be found here: https://tinyurl.com/y53tjb2w

The project is currently undergoing a redesign to: migrate to Spring Boot for the message listener module, shift to Hibernate/JPA from JDBC, improve the schema design with query performance in mind, enable PostGIS and pgRouting extensions, and possibly utilize GeoDjango for the front end.


# RAChLiN: Real-time AIS Caching Library for Nautical vessels
The goal of this project is to collect vessel Automatic Identification System (AIS) message broadcasts using a special Very High Frequency (VHF) receiver, and store those messages in a relational database.

Expand All @@ -13,32 +14,29 @@ Carriage of AIS equipment and broadcast of these messages are required by the In

AIS messages are ASCII packets standardized and encoded according to National Marine Electronics Association NMEA-0183 format. Our software decodes the messages and stores the information in a database of our design. There are many possible use cases for AIS data. In this project, we demonstrate ship traffic visualization using our collected data.


![](./daisy2.gif)


### Components
Ordered by movement of data from source to end users:

dAISY 2+ - A dual channel AIS receiver that picks up marine broadcasts in the Boston Harbor using a TRAM 1600-HC VHF Antenna and sends the NMEA messages to the kplex multiplexer via a serial/usb connection.
http://www.wegmatt.com/
[dAISY 2+](http://www.wegmatt.com/) - A dual channel AIS receiver that picks up marine broadcasts in the Boston Harbor using a TRAM 1600-HC VHF Antenna and sends the NMEA messages to the kplex multiplexer via a serial/usb connection.


Kplex NMEA Multiplexer - Software running on a Raspberry Pi 3B+. Acts as a NMEA server, combining incoming NMEA-0183 messages into a stream that is accessed by our remote AWS server via TCP connection. Also stores messages locally in a textlog. http://www.stripydog.com/kplex/
[Kplex NMEA Multiplexer](http://www.stripydog.com/kplex/) - Software running on a Raspberry Pi 3B+. Acts as a NMEA server, combining incoming NMEA-0183 messages into a stream that is accessed by our remote AWS server via TCP connection. Also stores messages locally in a textlog.

Autossh - A software tool that monitors SSH sessions and restarts dropped sessions as needed. Maintains an SSH tunnel between the AWS server and the Raspberry Pi, effectively creating a virtual private network for TCP communication. SSH tunneling is a method for transporting arbitrary networking data over an encrypted SSH connection.
https://www.harding.motd.ca/autossh/
[Autossh](https://www.harding.motd.ca/autossh/) - A software tool that monitors SSH sessions and restarts dropped sessions as needed. Maintains an SSH tunnel between the AWS server and the Raspberry Pi, effectively creating a virtual private network for TCP communication. SSH tunneling is a method for transporting arbitrary networking data over an encrypted SSH connection.

Amazon Web Services Elastic Compute Cloud (EC2) - A scalable virtual computer that houses the message decoder and APIs written against the database. All components operate on the same EC2 instance to keep costs within the AWS free tier, but are divided between different Docker containers. This facilitates deployment from development to production, while allowing components to be deployed at different times and with different dependencies.
https://aws.amazon.com/ec2/
[Amazon Web Services Elastic Compute Cloud (EC2)](https://aws.amazon.com/ec2/) - A scalable virtual computer that houses the message decoder and APIs written against the database. All components operate on the same EC2 instance to keep costs within the AWS free tier, but are divided between different Docker containers. This facilitates deployment from development to production, while allowing components to be deployed at different times and with different dependencies.

Amazon Web Services Relational Database Service (RDS) - A scalable virtual computer that houses the database. Automatically manages backups, software patching, failure detection, and recovery.
https://aws.amazon.com/rds/
[Amazon Web Services Relational Database Service (RDS)](https://aws.amazon.com/rds/) - A scalable virtual computer that houses the database. Automatically manages backups, software patching, failure detection, and recovery.

AISmessages - An open source decoder library that converts AIS message streams to Java objects with human-readable attributes. The AWS server application receives a message stream via TCP connection with the Raspberry Pi and uses AISmessages to decode in real time. AISmessage objects are then used to update the database.
https://github.com/tbsalling/aismessages
[AISmessages](https://github.com/tbsalling/aismessages) - An open source decoder library that converts AIS message streams to Java objects with human-readable attributes. The AWS server application receives a message stream via TCP connection with the Raspberry Pi and uses AISmessages to decode in real time. AISmessage objects are then used to update the database.

PostgreSQL - Our database management system, operating on an RDS server. We chose PostgreSQL over MySQL due to Postgres’s support for the JSONB data type and storage of geographic information via the PostGIS extension. These features will support future enhancements to our design.
https://www.postgresql.org/
[PostgreSQL](https://www.postgresql.org/) - Our database management system, operating on an RDS server. We chose PostgreSQL over MySQL due to Postgres’s support for the JSONB data type and storage of geographic information via the PostGIS extension. These features will support future enhancements to our design.

Apache Struts and Apache Tomcat - Struts is a Java-based web framework and Tomcat is a web container. Together, these deploy web applications that use our data. In this report, we demonstrate a simple website that plots ship traffic. A Java-based API accesses our database then displays a plotted map of the Boston Harbor using JavaScript.
https://struts.apache.org/
http://tomcat.apache.org/
[Apache Struts](https://struts.apache.org/) and [Apache Tomcat](http://tomcat.apache.org/) - Struts is a Java-based web framework and Tomcat is a web container. Together, these deploy web applications that use our data. In this report, we demonstrate a simple website that plots ship traffic. A Java-based API accesses our database then displays a plotted map of the Boston Harbor using JavaScript.

## Further Reading
Other Decoder Libraries: <br />
Expand Down

0 comments on commit febab22

Please sign in to comment.