信号が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スクリプトに統合することができます:)

おすすめ記事