Due to Covid-19, our team now works entirely from home. Working remotely makes it harder to do tasks typically performed in a physical setting. For security analysts accustomed to working in a network operations center (NOC), remotely monitoring the health of an IT Network via Meraki can be a challenge. We saw this as an opportunity to combine 3Data Analytics VR technology and Meraki APIs to create a virtual NOC environment.

What it does

Our hackathon project, named Apollo Insights, is a voice-controlled interface that allows you to visualize and control Meraki endpoints in real-time, keeping operators in sync and simplifying Meraki network monitoring and management. Apollo Insights is an event-driven alert service for Meraki endpoints, pushing alerts through Webex teams and visualizing your Meraki Network alerts in the 3Data Virtual Command environment allowing remote operators to visualize their full Meraki Network in Virtual Reality.

How we built it

We integrated the Meraki Dashboard API by setting up a Meraki webhook to notify the Apollo Insights engine whenever there is an anomaly on the Meraki network. We developed an alert system that allows our Apollo Insights engine to quickly dispatch a notification to all of your Webex enabled devices when an anomaly is detected. This notification provides a link allowing users to seamlessly enter the 3Data Analytics Platform and visualize the related network data in Virtual Reality, giving Meraki operators the full context of the alert.

On top of the 3Data platform, we built a component to get the RTSP feed from the Meraki Dashboard API. The RTSP stream allows us to stream live video from compatible cameras. In Virtual Reality, we texture a 3D object, process the video format and undistort the camera feed, enabling security analysts to view the camera feed as if they were actually standing in the room. Our video component makes polling 360* cameras intuitive. This is something you simply cannot do in 2D.


  • A-Frame: A-Frame is a framework for creating VR environments, and we used it especially for the VR Camera view.
  • Meraki Dashboard API
  • Meraki Webhooks API
  • Cisco Webex teams API
  • Meraki camera feeds

Challenges we ran into

The Meraki Fisheye Camera gives us streams that are distorted. There wasn’t much information online about how to undistort it for use in VR, but eventually, we found a UV geometry mapping that worked well. Maintaining two application states for managing notifications is difficult in the sense that each state always has to be in sync with the other. This presents challenges when working with a remote server where you have far less control over the environment and how you access it.
A well-known challenge when building software that will run in a virtual environment is how to get users in and out of that application effectively. One of the ways where we attempt to solve this problem is with a link provided by the Apollo Insights service which takes a user straight to a 3D visual representation of their data.

Accomplishments that we're proud of

One of the design principles behind the Meraki Webhooks API is an event driven architecture. Building on top of this pattern, we were able to design a performant application that takes full advantage of Node.js native strengths in asynchronous programming. It was really satisfying to view camera feeds in VR

What we learned

Most of this project was getting a handle on the various APIs involved, which had its own learning curve. Learned how to map fisheye camera feed to a sphere in VR

What's next for 3Data Analytics

We were limited by the time frame of a hackathon. One thing we’d like to support in the future is more notifications. Currently, our notification is attached to the Access Point Down webhook, but there’s no reason we couldn’t add other hooks in the future. For events like when Network Usage exceeds a certain amount, we could change the context that Apollo brings up to display network usage over time. Webhooks make this task relatively simple.

Built With

+ 7 more
Share this project: