De JEV WiFi Analyzer is een gespecialiseerd instrument voor het uitvoeren van WiFi site-surveys op de 2,4 GHz-band. Het systeem is gebouwd met een ZimaBoard 2 en een Alfa AWUS036H WiFi-adapter, draaiend op Ubuntu.
Technische werking De analyzer maakt gebruik van Python en de Scapy-bibliotheek om passief 802.11-frames op te vangen. Deze ruwe data wordt lokaal geaggregeerd tot gestructureerde RF-telemetrie, waaronder RSSI-statistieken, frame-counts en de detectie van access points en clients.
AI-integratie met Jev Het unieke aspect van dit project is de integratie met Jev, een beslissingsmodel van TypeSafe via de OpenRouter API. In plaats van generatieve tekst produceert Jev gestructureerde beslissingen op basis van de verzonden telemetrie:
- Dekkingskwaliteit: Een score van 'zeer slecht' tot 'uitstekend'.
- Congestieniveau: Classificatie van 'low' tot 'critical'.
- Optimalisatieactie: Specifieke adviezen zoals kanaalplanning of hardware-aanpassingen.
Toepassingen Het apparaat is ontworpen voor diverse scenario's, waaronder het oplossen van WiFi-problemen, het optimaliseren van kanaalplanning, het analyseren van signaaldekking en continue monitoring van IoT-omgevingen.
JEV WiFi Analyzer
Het apparaat monitort passief WiFi-activiteit, converteert vastgelegde 802.11-frames naar gestructureerde RF-telemetrie en verzendt elk meetvenster naar Jev via de OpenRouter Decisions API. Jev evalueert de telemetrie en geeft gestructureerde beslissingen terug over dekking, congestie en mogelijke netwerkoptimalisatie.
Functies
- Passieve WiFi-monitoring
- Scannen van 2,4 GHz-kanalen
- Meting van frames per seconde (frames/sec)
- Detectie van access points
- RSSI-statistieken
- Telling van waargenomen clients
- Configureerbare kanalen en meetvensters
Hardware
- ZimaBoard 2
- Alfa AWUS036H
- 16 GB USB-flashdrive
- HDMI-monitor
- USB-toetsenbord
- Ethernetkabel
Installatie
Ubuntu
- Download de Ubuntu Desktop ISO en maak een opstartbare USB-stick met Balena Etcher.
- Sluit de USB-stick, HDMI-monitor, toetsenbord en Ethernetkabel aan op de ZimaBoard 2.
- Zet het apparaat aan, druk tijdens het opstarten op F11, selecteer de USB-stick en installeer Ubuntu.
Afhankelijkheden
Open een terminal met CTRL + ALT + T en voer de volgende commando's uit:
sudo apt update
sudo apt install python3-pip python3-scapy
pip install requests --break-system-packages
Alfa AWUS036H
Sluit de Alfa-adapter aan en controleer of Ubuntu deze detecteert:
ip link
iw dev
lsusb
Een typische installatie kan het volgende tonen:
- Interface:
wlx018c0cb28c7b1
- Chipset: Realtek RTL8187
- Huidige modus: managed
- MAC:
01:c0:ca:19:23:b1
De інтерfacenaam en het MAC-adres verschillen per systeem. De analyzer schakelt de interface automatisch over naar monitor-modus voordat de survey start.
OpenRouter API-sleutel
- Maak een API-sleutel aan via:
https://openrouter.ai/workspaces/default/keys
- Configureer deze in het bestand
scan.py.
De analyzer uitvoeren
Scan kanalen 1-13 met het volgende commando:
sudo -E python3 scan.py \
-c 1,2,3,4,5,6,7,8,9,10,11,12,13 \
-t 1 \
-w 30
Opties
| Parameter | Beschrijving |
-c | Kanalen om te scannen |
-t | Seconden besteed aan elk kanaal |
-w | Meetvenster in seconden |
-i | WiFi-interface |
-m | Jev-model |
--exportDir | Map voor JSON-export |
De analyzer springt sequentieel tussen de kanalen; hij monitort niet alle kanalen gelijktijdig. Druk op Q om af te sluiten.
Hoe het werkt
De Alfa-adapter vangt 802.11-frames op terwijl de analyzer door de geselecteerde 2,4 GHz-kanalen beweegt. Scapy verwerkt de frames en Python aggregeert de metingen lokaal.
Voor elk kanaal berekent de analyzer:
- Kanaal
- Aantal frames
- Verblijftijd in seconden (
dwellSeconds)
- Frames per seconde
- Aantal access points
- Gemiddelde RSSI
- Aantal clients
Elk gedetecteerd access point bevat daarnaast een samenvatting met:
- BSSID
- SSID
- Kanaal
- Beacon-count
- Beacons per seconde
- RSSI gemiddelde/minimum/maximum
- Actieve clients
Jev-integratie
Het scanproces creëert een gestructureerde status bestaande uit:
channelsScanned
channelMetrics
accessPointsDetected
measurementWindowSeconds
Deze informatie wordt via OpenRouter naar Jev AI verzonden met behulp van ~typesafe/jev-latest.
Architectuur
Ruwe WiFi-frames $\downarrow$ Python / Scapy (Frame-counts, frames/sec, AP-detectie, RSSI-statistieken, waargenomen clients) $\downarrow$ Gestructureerde RF-telemetrie $\downarrow$ Jev (CoverageQuality, CongestionLevel, OptimizationAction)
Python voert de deterministische meting en aggregatie uit. Jev interpreteert de resulterende telemetrie en neemt afgebakende beslissingen.
Wat is Jev?
Jev is een beslissingsmodel van TypeSafe, ontworpen voor gestructureerde besluitvorming. In plaats van een generatief model te vragen om een tekstueel rapport te produceren (dat vervolgens geparsed moet worden), biedt de applicatie een status en getypeerde vragen aan. Jev geeft gestructureerde antwoorden terug, zoals scores en keuzes.
In dit project is de taakverdeling als volgt:
Python verzorgt:
- Capture
- Count
- Calculate
- Aggregate
Jev verzorgt:
Jev-beslissingen
- Dekkingskwaliteit (
coverageQuality) → score
De criteria variëren van 'zeer slecht/dead zone' tot 'uitstekend/sterk signaal'.
- Congestie (
congestionLevel) → keuze
Mogelijke resultaten: low, moderate, high, critical.
- Optimalisatie (
optimizationAction) → keuze
Mogelijke resultaten: none, powerAdjustment, channelPlan, hardwareAddition.
De drie beslissingen worden samen in één Jev-verzoek verzonden.
Meetvensters en exports
Aan het einde van elk meetvenster aggregeert de analyzer de huidige gegevens, verzendt de gestructureerde status naar Jev, slaat de resultaten op en start een nieuw venster.
De standaard exportmap is: surveyExports/. Elke JSON-export bevat:
- Timestamp
- Vensterduur in seconden
- Gescande kanalen
- Kanaalmetrieken
- Access points
- Jev-evaluaties
Dashboard
Het terminal-dashboard toont:
- Huidig kanaal
- Kanaalactiviteit
- Frames/sec
- Access points
- Gemiddelde RSSI
- Waargenomen clients
- Jev-dekkingsscore
- Jev-congestieniveau
- Jev-optimalisatieactie
- Voortgang van de meting
- Geaccumuleerde Jev-kosten
Toepassingen
- WiFi-problemen oplossen: Identificeer kanalen met hoge activiteit of veel nabijgelegen access points.
- Kanaalplanning: Vergelijk kanaalactiviteit voordat u een kanaal kiest voor een access point.
- Dekkingsanalyse: Neem metingen op verschillende locaties en vergelijk de waargenomen RSSI.
- Wijzigingsdetectie: Voer herhaaldelijk surveys uit en vergelijk de resulterende JSON-metingen.
- IoT-monitoring: Observeer WiFi-activiteit in omgevingen met veel verbonden apparaten.
- Continue monitoring: De ZimaBoard kan dienen als een dedicated WiFi-meetsysteem dat periodiek de lokale omgeving registreert.
Beperkingen
- Dit project is een WiFi-activiteitsanalyser, geen algemene spectrumanalyser.
- RSSI wordt gemeten bij de Alfa-adapter en is representatief voor het signaal op de locatie van de sensor.
- Het project maakt gebruik van sequentiële kanaalhopping; kanalen worden dus niet gelijktijdig gemonitord.
Demo en Referenties
Demo: YouTube
Referenties:
Auteur
Roni Bandini
Licentie: GPL
JEV WiFi Analyzer
Het apparaat monitort passief WiFi-activiteit, converteert vastgelegde 802.11-frames naar gestructureerde RF-telemetrie en verzendt elk meetvenster naar Jev via de OpenRouter Decisions API. Jev evalueert de telemetrie en geeft gestructureerde beslissingen terug over dekking, congestie en mogelijke netwerkoptimalisatie.
Functies
- Passieve WiFi-monitoring
- Scannen van 2,4 GHz-kanalen
- Meting van frames per seconde (frames/sec)
- Detectie van access points
- RSSI-statistieken
- Telling van waargenomen clients
- Configureerbare kanalen en meetvensters
Hardware
- ZimaBoard 2
- Alfa AWUS036H
- 16 GB USB-flashdrive
- HDMI-monitor
- USB-toetsenbord
- Ethernetkabel
Installatie
Ubuntu
- Download de Ubuntu Desktop ISO en maak een opstartbare USB-stick met Balena Etcher.
- Sluit de USB-stick, HDMI-monitor, toetsenbord en Ethernetkabel aan op de ZimaBoard 2.
- Zet het apparaat aan, druk tijdens het opstarten op F11, selecteer de USB-stick en installeer Ubuntu.
Afhankelijkheden
Open een terminal met CTRL + ALT + T en voer de volgende commando's uit:
sudo apt update
sudo apt install python3-pip python3-scapy
pip install requests --break-system-packages
Alfa AWUS036H
Sluit de Alfa-adapter aan en controleer of Ubuntu deze detecteert:
ip link
iw dev
lsusb
Een typische installatie kan het volgende tonen:
- Interface:
wlx018c0cb28c7b1
- Chipset: Realtek RTL8187
- Huidige modus: managed
- MAC:
01:c0:ca:19:23:b1
De інтерfacenaam en het MAC-adres verschillen per systeem. De analyzer schakelt de interface automatisch over naar monitor-modus voordat de survey start.
OpenRouter API-sleutel
- Maak een API-sleutel aan via:
https://openrouter.ai/workspaces/default/keys
- Configureer deze in het bestand
scan.py.
De analyzer uitvoeren
Scan kanalen 1-13 met het volgende commando:
sudo -E python3 scan.py \
-c 1,2,3,4,5,6,7,8,9,10,11,12,13 \
-t 1 \
-w 30
Opties
| Parameter | Beschrijving |
-c | Kanalen om te scannen |
-t | Seconden besteed aan elk kanaal |
-w | Meetvenster in seconden |
-i | WiFi-interface |
-m | Jev-model |
--exportDir | Map voor JSON-export |
De analyzer springt sequentieel tussen de kanalen; hij monitort niet alle kanalen gelijktijdig. Druk op Q om af te sluiten.
Hoe het werkt
De Alfa-adapter vangt 802.11-frames op terwijl de analyzer door de geselecteerde 2,4 GHz-kanalen beweegt. Scapy verwerkt de frames en Python aggregeert de metingen lokaal.
Voor elk kanaal berekent de analyzer:
- Kanaal
- Aantal frames
- Verblijftijd in seconden (
dwellSeconds)
- Frames per seconde
- Aantal access points
- Gemiddelde RSSI
- Aantal clients
Elk gedetecteerd access point bevat daarnaast een samenvatting met:
- BSSID
- SSID
- Kanaal
- Beacon-count
- Beacons per seconde
- RSSI gemiddelde/minimum/maximum
- Actieve clients
Jev-integratie
Het scanproces creëert een gestructureerde status bestaande uit:
channelsScanned
channelMetrics
accessPointsDetected
measurementWindowSeconds
Deze informatie wordt via OpenRouter naar Jev AI verzonden met behulp van ~typesafe/jev-latest.
Architectuur
Ruwe WiFi-frames $\downarrow$ Python / Scapy (Frame-counts, frames/sec, AP-detectie, RSSI-statistieken, waargenomen clients) $\downarrow$ Gestructureerde RF-telemetrie $\downarrow$ Jev (CoverageQuality, CongestionLevel, OptimizationAction)
Python voert de deterministische meting en aggregatie uit. Jev interpreteert de resulterende telemetrie en neemt afgebakende beslissingen.
Wat is Jev?
Jev is een beslissingsmodel van TypeSafe, ontworpen voor gestructureerde besluitvorming. In plaats van een generatief model te vragen om een tekstueel rapport te produceren (dat vervolgens geparsed moet worden), biedt de applicatie een status en getypeerde vragen aan. Jev geeft gestructureerde antwoorden terug, zoals scores en keuzes.
In dit project is de taakverdeling als volgt:
Python verzorgt:
- Capture
- Count
- Calculate
- Aggregate
Jev verzorgt:
Jev-beslissingen
- Dekkingskwaliteit (
coverageQuality) → score
De criteria variëren van 'zeer slecht/dead zone' tot 'uitstekend/sterk signaal'.
- Congestie (
congestionLevel) → keuze
Mogelijke resultaten: low, moderate, high, critical.
- Optimalisatie (
optimizationAction) → keuze
Mogelijke resultaten: none, powerAdjustment, channelPlan, hardwareAddition.
De drie beslissingen worden samen in één Jev-verzoek verzonden.
Meetvensters en exports
Aan het einde van elk meetvenster aggregeert de analyzer de huidige gegevens, verzendt de gestructureerde status naar Jev, slaat de resultaten op en start een nieuw venster.
De standaard exportmap is: surveyExports/. Elke JSON-export bevat:
- Timestamp
- Vensterduur in seconden
- Gescande kanalen
- Kanaalmetrieken
- Access points
- Jev-evaluaties
Dashboard
Het terminal-dashboard toont:
- Huidig kanaal
- Kanaalactiviteit
- Frames/sec
- Access points
- Gemiddelde RSSI
- Waargenomen clients
- Jev-dekkingsscore
- Jev-congestieniveau
- Jev-optimalisatieactie
- Voortgang van de meting
- Geaccumuleerde Jev-kosten
Toepassingen
- WiFi-problemen oplossen: Identificeer kanalen met hoge activiteit of veel nabijgelegen access points.
- Kanaalplanning: Vergelijk kanaalactiviteit voordat u een kanaal kiest voor een access point.
- Dekkingsanalyse: Neem metingen op verschillende locaties en vergelijk de waargenomen RSSI.
- Wijzigingsdetectie: Voer herhaaldelijk surveys uit en vergelijk de resulterende JSON-metingen.
- IoT-monitoring: Observeer WiFi-activiteit in omgevingen met veel verbonden apparaten.
- Continue monitoring: De ZimaBoard kan dienen als een dedicated WiFi-meetsysteem dat periodiek de lokale omgeving registreert.
Beperkingen
- Dit project is een WiFi-activiteitsanalyser, geen algemene spectrumanalyser.
- RSSI wordt gemeten bij de Alfa-adapter en is representatief voor het signaal op de locatie van de sensor.
- Het project maakt gebruik van sequentiële kanaalhopping; kanalen worden dus niet gelijktijdig gemonitord.
Demo en Referenties
Demo: YouTube
Referenties:
Auteur
Roni Bandini
Licentie: GPL