## Inspiration

During the day, universities around the world feature the brightest minds, most challenging ideas, and greatest opportunities to grow as both a person and an intellectual. At night, however, such campuses can feel nearly foreign or frightening as the streets lack the normal bustle of students and the light grows dim. Universities attempt to alleviate students' anxiety and worries of safety by offering a variety of services; at Cal, we have our system of Night Safety Shuttles and BearWalk staff that accompany students. Yet, these services tend to have extraordinary wait times, sometimes exceeding two hours. Enter GetHome.

## What it does

GetHome connects verified students with one another such that no user has to walk home alone. By utilizing the pathing and geolocation of Google Maps, as well as the information gathering and communication offered by Cisco Meraki and Spark respectively, GetHome quickly pairs two users headed in a similar direction and provides a path such that they both get to their desired location with a minimal amount of safety risk. In addition, GetHome uses Cisco applications for data analysis and tracking to virtually accompany pairs as they make their way home: access points can ensure that users are on the correct path, and a chat-bot can double-check users have successfully gotten home.

## How we built it

As a webapp, we utilized HTML5 and CSS3 to create a clean and precise landing page, with one redirect included for when a user lines up in queue. The basis of our working code is Javascript, which we used to interface with the various APIs allowing for accurate tracking and pathing of paired users.
Using Google Graphs and Maps, we generated formulas to calculate and accurately map distances between all users as well as the distances between their respective destinations, while simultaneously displaying such information in easy-to-read graphical elements. A combined integration of Cisco Spark and Cisco Meraki, done via creation of Spark bots and information gathering with AWS Lambda, generates the heatmap for users to find their partner as well as open an avenue of communication between the two. Obscured from the user, we also rely on Meraki's Real Time Location Services (RTLS) to track whether individuals are following the anticipated path home; deviations are viewed as hazardous and can be handled by our companion-bot, which checks in with users to see if they're okay.

## Challenges we ran into

Utilizing the REST API efficiently was difficult, seeing as how none of our team members had previous experience working with HTTP POST requests. In addition, working with the servers provided for accessing real-time data of our immediate location proved difficult, as some connection errors and faulty permissions prevented us from dedicating our full effort towards completely understanding the use cases of the functions and services provided alongside the data.

## Accomplishments that we're proud of

As a team, we are proud of creating our first ever Spark bot and formulating conclusions based on real-time data via Meraki's Dashboard. Meshing together multiple APIs can become messy at times, so we are extremely proud of our clean implementations that serve to precisely and efficiently merge the varied applications we delved into.

## What we learned

Throughout this hacking process, we learned a great deal about how to work with Node-RED for Cisco Meraki and Spark queries, as well as how to integrate such applications with services like AWS Lambda to properly retrieve points of interest, such as MAC addresses for tracking. The less-experienced of our team also learned how to utilize APIs in a very general sense within HTML and Javascript; as a whole, we built upon past experiences to further increase our efficiency and teamwork in regards to formulating ideas and bringing them to manifestation through research and dedicated work.

## What's next for GetHome

Meraki's ability to precisely locate devices through triangulation by access points as well as the flexibility of heatmaps allows for the possibility of creating paths that avoid high-risk areas; this would be a further step in preventative safety, reaching beyond what our application currently utilizes Meraki's location services for. Combined, having Meraki anticipate the next access point the user should be pinged at as well as formulating the path so it is not only the shortest path, but also the safest, would be extremely beneficial for GetHome and its users.
## Inspiration

Through going to big lectures at Berkeley, we've always found that it was difficult for courses to keep track of our attendance. Professors have gone through countless methods to track student attendance, such as requiring students to buy pricy hardware.

## What it does

Tracks student attendance **and** attentiveness based on the web traffic they create from their devices during class. Professors can keep track of attendance without calling role, thereby saving precious class time especially in large lecture halls. Our algorithm can detect when a student leaves a class early or arrives late, giving the teacher deeper insight into class attendance. There's an easy one-time MAC address to student name registration, and subsequently attendance is automatically taken so long as the student has wifi turned on (no connection required!) on one his/her phone, tablet, or laptop.

## How it works

We are using Cisco Meraki's Location and Dashboard APIs along with the wifi access points (Meraki MR33) already set up inside Memorial Stadium. These quad-radio access points intercept wifi and bluetooth signals from smartphones and laptops, and we sample the data every few seconds to capture data such as unique MAC addresses, websites visited, timestamps, and duration of stay. The reason why we use MAC addresses as a primary key to identify devices and students is because each device broadcasts a unique, immutable MAC address, allowing us to track them over hours, months, and years. Additionally, by polling data every few seconds for the duration of lecture, our web app can make sure students don't leave right after signing in, which is a huge problem for many attendance methods such as using iClicker or Google Forms. Meraki keeps a constant eye on all devices in the lecture hall and allows our web app to take note as soon as a student leaves lecture.

## The Technology

We use Node-Red to interface with the access points, and stream out JSON files to a MondoDB database in the cloud. We then input this data into Pandas Dataframes and use Plotly to visualize it. After some filtering and stats, we end up with a simple, clean interface for the teacher to use. We package all of this into a web app hosted on Google Cloud for you to see update in real time!

## Challenges we ran into

Meraki access points did not stay on consistently, and we stayed up till 8am trying to get our application to work more consistently. We also didn't have time to fully polish the application, so it currently contains just core functionality.

## Accomplishments that we're proud of

We learned how to use the Meraki API and Node-Red application in the fly, which was incredibly rewarding because most of us didn't have any experience working with networking. We also enjoyed working with the Meraki representatives and bouncing our ideas off them!

## What we learned

How to integrate various libraries and platforms into a single project! We also learned how to efficiently split up work and play to our strengths.

## What's next for Stay Present

We'd love to test this in a UC Berkeley lecture hall and work closely with professors to implement this attendance tracker. We're planning to refine our data with our new Meraki MR33 APs and see what other data we can extract from unsecured campus web traffic. We believe that this project is just one way that classroom learning can be changed for the better, and hope to see it in use in the future!
## Inspiration

One of our team members was stunned by the number of colleagues who became self-described "shopaholics" during the pandemic. Understanding their wishes to return to normal spending habits, we thought of a helper extension to keep them on the right track.

## What it does

Stop impulse shopping at its core by incentivizing saving rather than spending with our Chrome extension, IDNI aka I Don't Need It! IDNI helps monitor your spending habits and gives recommendations on whether or not you should buy a product. It also suggests if there are local small business alternatives so you can help support your community!

## How we built it

React front-end, MongoDB, Express REST server

## Challenges we ran into

Most popular extensions have company deals that give them more access to product info; we researched and found the Rainforest API instead, which gives us the essential product info that we needed in our decision algorithm. However this proved, costly as each API call took upwards of 5 seconds to return a response. As such, we opted to process each product page manually to gather our metrics.

## Completion

In its current state IDNI is able to perform CRUD operations on our user information (allowing users to modify their spending limits and blacklisted items on the settings page) with our custom API, recognize Amazon product pages and pull the required information for our pop-up display, and dynamically provide recommendations based on these metrics.

## What we learned

Nobody on the team had any experience creating Chrome Extensions, so it was a lot of fun to learn how to do that. Along with creating our extensions UI using React.js this was a new experience for everyone. A few members of the team were also able to spend the weekend learning how to create an express.js API with a MongoDB database, all from scratch!

## What's next for IDNI - I Don't Need It!

We plan to look into banking integration, compatibility with a wider array of online stores, cleaner integration with small businesses, and a machine learning model to properly analyze each metric individually with one final pass of these various decision metrics to output our final verdict. Then finally, publish to the Chrome Web Store!