dotfiles/.config/polybar/scripts/network-huawei-modem.py
2024-01-29 08:31:23 -06:00

46 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python3
# -*- coding: utf-8 -*- # PEP 263
from huawei_lte_api.Client import Client
from huawei_lte_api.Connection import Connection
# Configuration
host = '192.168.8.1'
username = 'admin'
password = ''
MODEM_URL = f"http://{username}:{password}@{host}/"
def scale_units(rate):
decimal_places = 2
for unit in ['bps', 'Kbps', 'Mbps', 'Gbps', 'Tbps']:
if rate < 1000.0:
if unit == 'bps':
decimal_places = 0
break
rate /= 1000.0
return f"{rate:.{decimal_places}f}{unit}"
if __name__ == '__main__':
with Connection(MODEM_URL) as connection:
# This just simplifies access to separate API groups,
# you can use device = Device(connection) if you want
client = Client(connection)
signal = client.device.signal()
traffic = client.monitoring.traffic_statistics()
sms = client.sms.sms_count()
status = client.monitoring.status()
sms_unread = int(sms['LocalUnread'])
power = status['SignalIcon']
sinr = signal['sinr']
sms_icon = '' if sms_unread else ''
down = scale_units(int(traffic['CurrentDownloadRate']) * 8)
up = scale_units(int(traffic['CurrentUploadRate']) * 8)
result = f":{power} SINR:{sinr} {sms_icon}:{sms_unread}{down}{up}"
print(result)