그래서 나는 한동안 이 문제로 어려움을 겪었습니다.
Wi-Fi 센서가 있는 라즈베리 파이가 있고 다른 AP에서 전송되는 Wi-Fi Direct 신호의 RSSI(기본적으로 신호 강도)를 얻으려면 센서가 필요합니다.
이는 거리 측정(PI와 AP 간)을 얻는 데 사용되므로 1초 내에 높은 빈도로 측정해야 합니다(또는 이상적으로는 100밀리초 또는 1초에 대한 RSSI 평균을 원합니다).
wpa_supplicant의 p2p 기능을 사용하여 RSSI를 얻을 수 있다는 것을 알고 있지만 빈도는 초당 약 6-12회 측정이고 분산은 상당히 높습니다. 도움이 될 수 있는 다른 도구/방법을 아는 사람이 있나요? wpa_supplicant가 "평균 측정항목"을 제공하면 좋을 것입니다.
참고: 저는 구현을 앞서는 일만 담당하기 때문에 거리/각도를 계산하는 방법에 대한 수학/과학을 완전히 이해하지 못합니다. 이 값은 아마도 충분할 것입니다. 개념적으로 뭔가 빠졌을 수도 있습니다. 그렇다면 알려주세요 :).
답변1
을 사용하지 말고 wpa_supplicant
한 레벨 다운그레이드하세요. 방금 시도했어요
while true ; do date -Ins ; /sbin/iw wlan0 station dump | grep signal ; done
내 데스크탑에서는 초당 100개 이상의 측정을 수행할 수 있으며 차이는 특별히 높지 않습니다.
signal avg
따라서 초당 한 번 이 아닌 grep을 수행하면 signal
괜찮을 것 같습니다. 처리 능력이 낮기 때문에 RaspPi에서는 다르게 보일 수 있습니다.
이러한 값은 드라이버 내부의 흑마법에 의해 계산되며 하드웨어와 드라이버에 따라 다르므로 대략적인 표시로만 사용해야 하며 이러한 값이 거리에 선형이라고 가정하지 마십시오.
따라서 소스를 정확하게 찾아내기 위해서는 많은 측정을 수행해야 합니다.
수학적으로는 신호 강도를 거리에 매핑하는 단조 함수를 가정해야 하며 그 반대의 경우도 마찬가지입니다. 이 함수가 어떻게 생겼는지에 대해 몇 가지 가정을 해야 합니다(예: 2차/3차, 먼저 몇 가지 측정을 수행할 수도 있음). 주어진 오류 값을 얻으려면 소스 좌표를 찾아 오류를 최소화하는 좌표를 찾습니다.
이에 대한 오픈 소스 프로젝트를 만들게 된다면 링크를 보고 싶습니다. :-)
답변2
다음을 사용하여 초당 신호 강도를 얻을 수 있습니다.
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"