A solution to take attendance by scanning devices, recognising owner with data stored in Active Directory, through Meraki devices.
This solution consists of two parts: Captive Portal & Web-based Dashboard. The following diagram describes the high-level workflow.
Captive Portal: When a professor connects to the University WiFi for the first time, a captive portal will prompt and ask for name and email. The information will be passed and checked with Active Directory. If it is validated as a professor, the MAC address will be added to a splash page bypass policy so that the professor does not need to visit the captive portal when connects to the University WiFi in the future. The MAC address will also be added into Active Directory under the professor's profile, which will be useful in monitoring.
Dashboard: The dashboard will act as a Meraki Scanning API receiver, and provide web interface to display professors' attendance. Meraki Scanning API is enabled and will send a POST request to the dashboard with details of nearby devices as payload. The dashboard will cross reference the scanning data with Active Directory, and log the attendance of professor if it exists to MongoDB. In the web interface, the professor attendance data stored in MongoDB is tabulated, with options to trace back in time, shown by daily or weekly.
Meraki - SSID and Splash Page settings in Meraki dashboard
Meraki - Scanning API settings in Meraki dashboard (Scanning API Documentation)
Meraki - splash bypass policy settings in Meraki dashboard
Azure AD - if you do not have an Azure AD setup, you can go to Azure AD website and start a free trial account. Then you should follow the below steps to set up the environment for Microsoft Graph API.
MongoDB - if you do not have a MongoDB setup, you can go to MongoDB website and create a free account. Then you should follow along the instructions in MongoDB site. Once you finish setting up the cluster, follow the below steps to obtain integration essentials.
ngrok - this is used to expose local http server to a public address so the captive portal and dashboard can be reached by Meraki. Follow the ngrok download page to set it up.
Clone this repository by git clone <this repo>
.
Update all the environmental variables in the two ".env" files under "/CaptivePortal" and "/Dashboard".
Install and run Captive Portal in terminal.
cd CaptivePortal
npm install
node server.js
ngrok http 5000 (in new terminal window)
cd Dashboard
npm install
node merakiscanning.js
ngrok http 1890 (in new terminal window)
Provided under Cisco Sample Code License, for details see LICENSE
Our code of conduct is available here
See our contributing guidelines here
Captive Portal script is built on top of the official Meraki Captive Portal sample. Please see the official guide and source code for reference.
Dashboard script is built on top of the official Meraki Scanning API NodeJS Receiver sample. Please see the source code for reference.
Owner
Contributors
Categories
Products
Cisco MerakiProgramming Languages
JavaScriptLicense
Code Exchange Community
Get help, share code, and collaborate with other developers in the Code Exchange community.View Community