Skip to content

oss-inc/mowa-wifi-sensing-labelling

Repository files navigation

mowa-wifi-sensing-labelling

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


Content

Getting Started

Dependencies

Hardware

Software

  • 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

Python Libraries - Ubuntu

Open
  • Flask
  • mysql-connector-python

Python Libraries - Raspberry Pi 4

Open
  • pypcap
  • dpkt
  • keyboard
  • pandas
  • numpy
  • requests

Installing

  1. Clone the project repository

    git clone https://github.com/pjs990301/mowa-wifi-sensing-labelling.git
  2. Installing the Flask Server

    pip install -r requirements_server.txt
  3. Configuring Raspberry Pi 4 for CSI Data Transmission

    pip install -r requirements_pi.txt

Usage

Execution Program

  1. Run app.py for Flask Server

    python app.py 
  2. Run csi_send_server.py with monitor mode enabled

    sudo python3 csi_send_server.py 

Configuration

  1. 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.
  1. 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 modify columns_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

Demo.mp4

License

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

Releases

No releases published

Packages

No packages published