У нас есть старый gsm-модем Sony Ericson, который используется для отправки sms-сообщений. Иногда он зависает, поэтому нужно следить за его работоспособностью. Для данной цели я сделал следующий скрипт. В случае, если устройство откликается на стандартную команду "AT" и сообщает, что уровень сигнала больше -93 дБ - выводится "ок", во всех остальных случаях - ошибка. Так же скрипт можно запустить с параметром, который будет передан в качестве команды модему.
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import serial import time name_port = '/dev/ttyS0' speed_port = 9600 good_signal = -93 def request(command): try: port = serial.Serial(name_port, speed_port, timeout=3) except: print('Error open \"%s\"') % name_port exit(1) port.write(command + '\r') out = '' time.sleep(1) while port.inWaiting() > 0: out += port.readline() port.close() return out def main(): if len(sys.argv)>1: command=sys.argv[1] out = request(command) print(out) exit(0) try: at = request("AT").split()[1] csq = request("AT+CSQ").split('+CSQ:')[1].split()[0].split(',')[0] db = (int(csq) * 2) - 113 if at != 'OK': print('Error at response') elif db < good_signal: print('Error at+csq response') else: print('ok') except: print('Error request') if __name__== '__main__': main()
Комментариев нет:
Отправить комментарий