This project enables real-time storage of CSI (channel state information) data in a database and makes it easier for Wi-Fi Sensing researchers to process CSI data.
🌎 README.md in English
🇰🇷 README.md in Korean
- Raspberry Pi 4 (installed Nexmon CSI Tool)
- Linux Ubuntu
I did it on Linux for the experiment, but it is executable regardless of OS (Windows, macOS).
- MySQL Server == 8.0.33
- Python == 3.8
Open
- Flask
- mysql-connector-python
Open
- pypcap
- dpkt
- keyboard
- pandas
- numpy
- requests
-
Clone the project repository
git clone https://github.com/pjs990301/mowa-wifi-sensing-labelling.git
-
Installing the Flask Server
pip install -r requirements_server.txt
-
Configuring Raspberry Pi 4 for CSI Data Transmission
pip install -r requirements_pi.txt
-
Run
app.py
for Flask Serverpython app.py
-
Run
csi_send_server.py
with monitor mode enabledsudo python3 csi_send_server.py
-
CSI Data Extraction Mac Address Filtering
selected_mac = 'Enter your AP MAC Address'
- If you want to filter the AP MAC address for CSI data extraction, you can modify the 21st line
in
csi_send_server.py
.
-
Managing Flask and Database
{ "publish_SERVER": { "host": "0.0.0.0", "port": "SERVER_PORT" }, "Database": { "host": "DATABASE_IP", "user": "USER_NAME", "password": "USER_PASSWORD!", "database": "DATABASE_NAME" }, "private_SERVER": { "host": "SERVER_IP", "port": "SERVER_PORT" } }
-
If your database name changes, you should change the query according to that name.
Currently, 64 subcarriers are being queried. If you want to save more subcarriers, you need to modifycolumns_query
. -
Example of creating a table
CREATE TABLE [Your Database Name].{table_name}( { columns_query });
-
Table name is default {label name}_{Collection start time}_{Collection end time}
Demo.mp4
This project is licensed under the BSD-3-Clause license - see the LICENSE.md file for details
The environmental settings are described below. the LICENSE_Dependency.md file for details