92 lines
2.4 KiB
Python
92 lines
2.4 KiB
Python
import pathlib
|
|
import os
|
|
|
|
from argparse import ArgumentParser
|
|
from e3372 import WebAPI, SMSHandler, SMS
|
|
|
|
|
|
config_dir = os.path.join(pathlib.Path.home(), '.e3372-sms-handler')
|
|
trusted_phone = ''
|
|
|
|
|
|
def sms_handler(sms: SMS, api: WebAPI):
|
|
global trusted_phone
|
|
|
|
print(f'from={sms.phone}, date={sms.date}, text={sms.text}')
|
|
|
|
# just in case
|
|
phone = sms.phone
|
|
if phone.startswith('8') and len(phone) == 11:
|
|
phone = '+7' + phone[1:]
|
|
elif phone.startswith('7') and len(phone) == 11:
|
|
phone = '+' + phone
|
|
|
|
if phone == trusted_phone:
|
|
print('this is a trusted phone, processing...')
|
|
|
|
text = sms.text.lower().strip()
|
|
if text == 'you shall reboot!':
|
|
print('bye bye...')
|
|
api.auth()
|
|
api.reboot()
|
|
|
|
elif text == 'yo, get me some status':
|
|
print('gathering status')
|
|
api.auth()
|
|
info = api.device_information()
|
|
signal = api.device_signal()
|
|
buf = []
|
|
|
|
for key, value in info.items():
|
|
if key in ('workmode', 'WanIPAddress'):
|
|
buf.append(f'{key}={value}')
|
|
|
|
for key, value in signal.items():
|
|
if key in ('cell_id', 'rssi', 'rscp', 'ecio', 'mode'):
|
|
buf.append(f'{key}={value}')
|
|
|
|
buf = ' '.join(buf)
|
|
if buf != '':
|
|
print('going to send this: ' + buf)
|
|
# we need new api key it seems :O
|
|
api.auth()
|
|
api.send_sms(phone=trusted_phone, content=buf)
|
|
|
|
elif text == 'switch it off':
|
|
print('switching it off')
|
|
api.auth()
|
|
api.dataswitch(False)
|
|
|
|
elif text == 'switch it on':
|
|
print('switching it on')
|
|
api.auth()
|
|
api.dataswitch(True)
|
|
|
|
|
|
def main():
|
|
global trusted_phone
|
|
|
|
# parse arguments
|
|
parser = ArgumentParser()
|
|
parser.add_argument('--ip',
|
|
default='192.168.8.1',
|
|
help='Modem IP address')
|
|
parser.add_argument('--trusted-phone',
|
|
help='Trusted phone number')
|
|
args = parser.parse_args()
|
|
|
|
# set global trusted_phone
|
|
trusted_phone = args.trusted_phone
|
|
|
|
# webapi client
|
|
client = WebAPI(args.ip)
|
|
client.auth()
|
|
|
|
# sms handler
|
|
smshandler = SMSHandler(api=client, config_dir=config_dir)
|
|
smshandler.process(sms_handler)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|