Last Friday was the Capstone Festival for Fall 2016 at CSUMB and our team delivered Linkality, a Cross-Platform (iTunes App Store and Google Play) App for visitors to the Capstone Festival that leverages data from iBeacons and RFID sensors.
And here a collage of physical and software objects and platforms for the final deliverable:
Linkality provides access to the event information, including presenters, sessions and rooms and a map for the venue. To do this, Linkality interacts with BLE-based iBeacon data from Estimote to provide indoor navigation and it also interacts with server-side services that track location using an RFID badge that attendees have.
The Mobile App is written in NativeScript and uses Mehfuz’s iBeacon plugin to interact with the Estimote beacons. Here is the message displayed by the app as the visitor enters Room 105.
The location data is combined with event data from a Node.js service that is running on Modulus to help navigate through the event.
The RFID software chain is more complex. The RFID tags are attached to the back of the Visitors’ badges; the back of each tag also has a “Secret Phrase” – more on that later.
The RFID tags are sensed by antennas that are connected via coax cables to Trimble ThinkMagic readers, the Mercury 6 and the Sargas. The readers process the analog signals according to some specifications (gain, antennas, smoothing, etc) and report via LLRP to a node.js AMTech Solutions M2MBridge running on a Raspberry Pi 3, running UbuntuMate.
The bridge first connects to the cloud-side of the AMTech platform to discover its configuration and then starts delivering events (called Observations in the AMTech Platform). Events are sent as the bridge starts and stops, if errors are detected, and as tags are read.
The AMTech platform is a multi-user, multi-tenant platform (see overview). The platform rules, types, and common objects are created in a “creator” tenant, while the events generated from the bridge are received by a companion “follower” tenant. Think of the former as the PAAS piece of the platform and the latter as the SAAS portion.
The Linkality system interacts with the AMTech platform via some Node.js services running on Modulus. The interaction uses HTTPS to read and write objects and uses Web Sockets to listen to notifications, encoded as JSON objects. The Node.js services then tracks the location for all the tags received. Separately, we created a map (stored in MongoDB) between the tags and their associated secret phrase. The Mobile App uses the secret phrases as the key to extract location data from these Node.js services.
All users know their own secret so they can solicit their own information. They can also ask a buddy for their secret and use that secret to discover where the system last saw them.
The AMTech platform is very capable. For the Friday deployment in the BIT building we only used the most basic machinery but later I added some extra rules to fully track the Visitors within the platform. Here is a screenshot showing several visitors and their enclosing rooms:
The AMTech platform runs on several clusters (Apache Cassandra for data, Apache Storm for rules) and it is highly scalable (Apache Kafka is used extensively). It is quite easy to describe a rule that will raise a notification if, for example, the room capacity is exceeded, or if some specific person is observed in some location, etc.
The Capstone project was, again, a great experience. My appreciation to Cody, Nathaniel and Edwin for all their work in the team; best wishes to them in their life after graduation. You can see more pictures from the project and the Capstone event at the Flickr album.
This is my 3rd time mentoring a Capstone project at CSUMB (see the umbrella post for all Capstone projects) and I remain grateful for the opportunity to interact with the community there, from the students to the staff. And a very special recognition to Sathya for his work at CSUMB.