だから私はしばらくこの問題で苦労しました。
Wi-Fiセンサー付きのラズベリーパイがあり、他のAPから送信されるWi-Fi Direct信号のRSSI(基本的に信号強度)を取得するには、センサーが必要です。
これは距離測定(PIとAP間)を取得するために使用されるため、1秒以内に高い頻度で測定する必要があります(理想的には100ミリ秒または1秒のRSSI平均が必要です)。
wpa_supplicantのp2p機能を使用してRSSIを取得できることを知っていますが、頻度は毎秒約6〜12回の測定値であり、分散はかなり高いです。役に立つ他のツール/方法を知っている人はいますか? wpa_supplicantが「平均指標」を提供するのは良いことです。
注:私は実装の前に仕事をしているので、距離/角度を計算する方法の数学/科学を完全に理解していません。この値はおそらく十分です。概念的には何かが欠けているかもしれません。もしそうなら教えてください:)。
答え1
を使用しないでwpa_supplicant
1レベルダウングレードしてください。今試しました。
while true ; do date -Ins ; /sbin/iw wlan0 station dump | grep signal ; done
私のデスクトップでは、毎秒100以上の測定を実行できますが、違いは特に高くありません。
signal avg
したがって、毎秒1回ではなくgrepを実行するとsignal
大丈夫です。処理能力が低いため、RaspPiでは異なって見えるかもしれません。
これらの値はドライバー内部の黒魔法によって計算され、ハードウェアとドライバーによって異なりますので、おおよその表示としてのみ使用してください。
したがって、ソースを正確に見つけるためには、多くの測定を行う必要があります。
数学的には、信号強度を距離にマッピングする単調関数を想定する必要があり、その逆も同様です。この関数がどのように見えるかについていくつかの仮定をする必要があります(たとえば、2次/3次、最初にいくつかの測定を実行することもできます)。与えられたエラー値を取得するには、ソース座標を見つけ、エラーを最小化する座標を見つけます。
このためのオープンソースプロジェクトを作成したら、リンクを見たいと思います。 :-)
答え2
以下を使用して、1秒あたりの信号強度を取得できます。
watch -n 1 cat /proc/net/wireless
または:
watch -n '0.1' "iw wlan0 scan | grep 'SSID\|signal'"
wavemon
インストール後のコマンドwavemon
パック
Wavemonは、ワイヤレスネットワークハードウェアの信号レベルとノイズレベル、パケット統計、デバイス設定、およびネットワークパラメータを監視できるワイヤレスデバイス監視アプリケーションです。 Linuxカーネルがサポートするすべてのデバイスで機能する必要があります(機能は異なる場合があります)。
bmon
インストール後もコマンドを使用できます[bmon
。]サム
以下からインストールできます。apt-get install bmon
bmon
ネットワーク関連の統計をキャプチャし、人間に優しい方法で直感的に準備するための監視およびデバッグツール。インタラクティブな呪いユーザーインターフェイスとスクリプトのためのプログラム可能なテキスト出力を含むさまざまな出力方法が特徴です。
注文するwpa_cli
:
watch -n 1 "wpa_cli signal"