신호가 30% 이상일 때만 WiFi에 연결하는 구성을 만드는 방법은 무엇입니까?

신호가 30% 이상일 때만 WiFi에 연결하는 구성을 만드는 방법은 무엇입니까?

다음 작업을 수행하는 구성을 만들 기회가 있습니까?


신호가 30%보다 강한 경우에만 사용 가능한 Wi-Fi에 연결하세요.


많은 곳에서 나는 Wi-Fi를 거의 사용할 수 없는 변두리에 살고 있습니다. 따라서 이러한 불가피한 신호 중단은 짜증스럽기 때문에 항상 모바일 데이터와 WiFi 사이를 직접 수동으로 전환해야 합니다.

신호 강도가 종료를 피할 수 있을 만큼 충분히 강한 경우에만(따라서 안정적인 연결을 보장하는) WiFi 연결을 허용하는 일부 구성을 설정할 수 있습니까?


단순화된 방법:

신호 강도 < 30%인 경우 ⇒ 연결아니요허용하다

신호 강도 ≥ 30%인 경우 ⇒ 연결 허용


물론 30% 값은 단지 예일 뿐입니다. 아마도 20%가 더 의미가 있을 수도 있습니다. 살펴보겠습니다!

답변1

저는 여러분이 사용할 수 있는 Python(python3이지만 2에서도 작동함)으로 스크립트를 작성해 보았습니다. 선호하는 방법을 사용할 수 있도록 연결 및 연결 해제 부분까지 시도해 보았습니다.

with open("/proc/net/wireless", "r") as f:
data = f.read()

link = int(data[177:179])
level = int(data[182:185])
noise = int(data[187:192])

# print("{}{}{}".format(link, level, noise))

lmtqlty = -80

if(link < lmtqlty):
    os.system(nmcli c down id NAME`)  # Will disconnect the network NAME
else:
    os.system(nmcli c down id NAME`)  # Will connect the network NAME

sudo로 실행해야 하지만 이제 cron 서비스에 넣기 때문에 문제가 되지 않습니다. 저는 아직 크론 서비스를 사용해본 적이 없지만 스스로 관리할 수 없다면 한번 사용해 보고 싶습니다.


편집하다설명: "/proc/net/wireless"의 내용을 읽으면 다음과 같은 긴 문자열이 표시됩니다.

Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
face  | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
 wlan0: 0000   31.  -79.  -256        0      0      0      7      0        0

따라서 "품질" 열에서 올바른 값을 추출하려고 합니다. 이 파일은 시스템과 네트워크 간의 연결에 대한 정보를 제공합니다. 여기 있어요추가 정보그것에 대해 그리고 각 질량 하위 열의 의미를 설명하겠습니다. 인용하겠습니다.이 다른 기사:

데시벨이는 로그 단위(1dB = 1/10Bel, 1Bel = 전력비 1.259 = 진폭비 1.122)로, 신호 간의 상대적 관계를 설명합니다. 바라보다위키피디아세부 사항과 양식을 알아보세요. 음의 데시벨은 수신된 신호가 전송된 신호보다 약하다는 것을 의미합니다(물론 이는 자연적으로 발생함).

등급전송 시의 신호 강도/가정된 신호 강도와 비교하여 수신된 신호의 강도를 나타냅니다. 이는 물리적 측정이며 원칙적으로 모든 Wi-Fi 하드웨어에서 동일합니다. 그러나 종종 올바르게 교정되지 않은 경우도 있습니다.

협회신호가 얼마나 좋은지(즉, 하드웨어/소프트웨어가 신호에서 데이터를 복구하는 것이 얼마나 쉬운지) 계산된 척도입니다. 이는 에코, 다중 경로 전파, 사용된 인코딩 유형 등에 의해 영향을 받습니다. 모든 사람은 자신만의 계산 방법을 가지고 있습니다. 일반적으로(항상 그런 것은 아님) "레벨" 값과 동일한 비율의 값으로 계산됩니다.

경험상, 내가 본 대부분의 하드웨어에서 주변에 무언가가 있다는 것은 -50신호가 괜찮다는 것을 의미하고, 주변에 있다는 것은 -80신호가 매우 약하지만 사용할 수 있다는 것을 의미합니다. 훨씬 낮으면 연결이 불안정해집니다.

이러한 값은 신뢰할 수 있는 과학적인 내용이 아닌 대략적인 표시로만 읽어야 하며, 다른 하드웨어 또는 심지어 "레벨"에서도 유사하거나 비교할 수 있을 것이라고 기대해서는 안 됩니다. 이를 해석하는 방법을 배우는 가장 좋은 방법은 하드웨어를 들고 다니면서 신호가 어떻게 변하고 속도, 오류율 등에 미치는 영향을 관찰하는 것입니다.

그래서 나는 당신이 링크에 관심이 있다고 생각합니다(거기서 링크를 변경했습니다).


더 많은 아이디어를 제공하기 위해검색됨, 링크 값을 동적으로 표시하는 스크립트 줄이 있습니다.

watch -n 1 "awk 'NR==3 {print \"WiFi Signal Strength = \" \$3 \"00 %\"}''' /proc/net/wireless"

Python 대신 bash 스크립트에 통합할 수 있습니다 :)

관련 정보