次のタスクを実行する設定を作成する機会がありますか?
信号が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スクリプトに統合することができます:)