0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspberry Pi2で指定ESSIDのSignal levelを取得するプログラムを作成してみた

Last updated at Posted at 2019-06-26

#1. はじめに
研究で、受信信号強度を取得するプログラムを作る必要があったため、取得プログラムを作成しました。色々方法はあるだろけど、今回はiwlistコマンドで指定のESSIDを探し、そのSignal levelを取得するプログラムを作りました。

#2. 使用機器・環境
Raspberry Pi 2 model B+
OS : Raspbian
Wifi usbアンテナ : I-O Data製WN-G300UA
開発言語 : Python3.5.3

#3. コード

import sys
import subprocess

def PrintSignalLevel():
    essid = '検索したいESSID名'
    cmd = 'sudo iwlist NIC名 scan | grep -e ESSID -e Signal'
    process = (subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True).communicate()[0]).decode('utf-8')
    iwlist = process.split('\n')
    for idx,line in enumerate(iwlist):
      if essid in line:
        print(line)
        sigline_idx = idx+1
        sigline = iwlist[sigline_idx]
        print(sigline)
        tmp = sigline.rfind('=')
        tmp1 = signline.rfind('/')
        rssi_per = sigline[tmp+1:tmp1]
        rssi_dBm = (0.6*int(rssi_per))-95
        print('RSSI[%] = {rssi_per} -> RSSI_dBm} = {rssi_dbm}'.format(rssi_per=rssi_per,rssi_dBm))
        break

if __name__ == "__main__":
    PrintSignalLevel()

#4. まとめ
今回使用した無線LANドライバーがAtheros社製であったため、パーセンテージとして表示されているのをdBm変換して最後表示しています。例外処理してないけど、基本的な処理は作れたので、今後そこらへんは追加する予定です。

#5. 参考資料
Converting Signal Strength Percentage to dBm Values

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?