Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from RPLCD import CharLCD
- from time import sleep
- import subprocess, re, csv
- from RPi import GPIO
- lcd = CharLCD(cols=16, rows=2, pin_rs=40, pin_e=38, pins_data=[37, 35, 33, 31], numbering_mode=GPIO.BOARD, backlight_enabled=False)
- CLEANED = 0
- def cleanup():
- global CLEANED
- if not CLEANED:
- lcd.clear()
- GPIO.cleanup()
- CLEANED = 1
- else:
- pass
- # ---------- CODE ---------- #
- PATTERN = re.compile(r'Link Quality=((\d\d)/(\d\d))\s{1,3}Signal level=(([\+|\-]\d\d)\sdBm)')
- def write_to_lcd(framebuffer, num_cols=16, lcd=lcd):
- lcd.home()
- for row in framebuffer:
- lcd.write_string(row.ljust(num_cols)[:num_cols])
- lcd.write_string('\r\n')
- def fetch_strength():
- cmd = ['iwconfig', 'wlan0']
- result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
- m = re.search(PATTERN, str(result))
- quality_nice, signal_nice, quality_raw_n, quality_raw_d, signal_raw = str(m.group(1)), str(m.group(4)), int(m.group(2)), int(m.group(3)), int(m.group(5))
- return quality_nice, signal_nice, quality_raw_n, quality_raw_d, signal_raw
- def record_stats(reading, quality_raw_n, quality_raw_d, signal_raw):
- with open('stats.csv', mode='a') as f:
- writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
- writer.writerow([reading, quality_raw_n, quality_raw_d, signal_raw])
- # ---------- MAIN ---------- #
- if __name__ == "__main__":
- framebuffer = ['Quality: ', 'Signal: ']
- reading = 1
- try:
- while True:
- try:
- quality_nice, signal_nice, quality_raw_n, quality_raw_d, signal_raw = fetch_strength()
- display = [f'{framebuffer[0] + quality_nice}', f'{framebuffer[1] + signal_nice}']
- record_stats(reading, quality_raw_n, quality_raw_d, signal_raw)
- print(f'Readings taken: {reading}')
- reading += 1
- write_to_lcd(display)
- sleep(1)
- lcd.clear()
- except Exception as e:
- print(e)
- except KeyboardInterrupt:
- print()
- cleanup()
- # ---------- CLEANUP ---------- #
- cleanup()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement