On your regular Monday morning, a crowd at the bus stop used to be a minor annoyance. Too many people waiting for coffee at your favorite spot? Just another day. Well, as we all know, things have changed this year. A crowded place has now become a dangerous place. In order to keep the virus from spreading, it is best to avoid the crowd altogether.

That is why we wanted to offer some help in the form of IoT technology, and create an application that can help monitor if a space you’re occupying is too crowded or not.

WeCovid is a real-time application that uses Wi-Fi packet sniffing, performed through IoT devices, to monitor crowdedness levels in a limited environment in a cost-effective and optimized way.

The system is based on MAC address uniqueness to estimate how many people are located in device proximity at that moment in time.

crowd app zerynth

The assumption behind the idea lies in the relationship between WiFi packets and humans. Nowadays, nearly half of the entire world population owns a smartphone. That is the reason why monitoring people’s location and movements through WiFi sniffing makes a lot of sense and can be applied to guarantee the most diverse services: from traffic control in cities, to marketing strategies, to surveillance, etc.

The project is part of the graduation Thesis by Maria Vitali supervised by Prof. Daniele Mazzei.

General system architecture

The general system architecture is as follows:

crowd app zerynth esp32 custom UI

Zerynth OS is the actual core of the WeCovid application. Data is collected by the ESP32 microcontroller, that’s programmed in Python by the Zerynth OS and Zerynth SDK.

Then the data is sent to Zerynth Device Manager, It is a device management service that speeds up the development of scalable, secure, and reliable IoT solutions. In particular, it takes care of the following tasks:

  • Onboarding and provisioning:  transfer or generate each device credentials choosing different levels of security.
  • Lifecycle Management: sending jobs and over-the-air updates via rich REST APIs.
  • Data Buffering: forwarding data via convenient webhooks or API to the final IoT application.
  • Integrate: automate integration with third-party data visualization and business intelligence engines like Grafana or PowerBI

Algorithm of the application

The general algorithm of the application is:

  • The MCU ( ESP32 based board) connects to a WiFi access point.
  • Counts the unique MAC addresses from the sniffed packets, estimating the number of people.
  • Sends collected data to the system backend through Zerynth Device Manager.
  • Saves data to the Graphite database as the backend and visualize the data by Grafana.

For more information, feel free to check the Zerynth Documentation, Zerynth Device Manager Documentation for information and examples.