add log support

This commit is contained in:
2022-02-27 18:09:01 +01:00
parent f720815e32
commit d910ec65a3
12 changed files with 73 additions and 55 deletions
+8 -5
View File
@@ -5,18 +5,21 @@ import serial
from serial import Serial from serial import Serial
from SIMError import SIMError from SIMError import SIMError
from logs.LogSender import LogSender, LOG_ERROR
from utils.excel_reader import ExcelHelper from utils.excel_reader import ExcelHelper
class ModemPool: class ModemPool:
BAUDRATE = 115200 BAUDRATE = 115200
my_phone = "my_phone"
phone_number_position = 10 phone_number_position = 10
TAG = "ModemPool"
def __init__(self, port_list: list): def __init__(self, port_list: list):
self._port_list = port_list self._port_list = port_list
self._serial_list = [] self._serial_list = []
self._excel_helper = ExcelHelper() self._excel_helper = ExcelHelper()
self._log_sender = LogSender()
for port in self._port_list: for port in self._port_list:
ser = serial.Serial(port, self.BAUDRATE, timeout=1) ser = serial.Serial(port, self.BAUDRATE, timeout=1)
self._serial_list.append(ser) self._serial_list.append(ser)
@@ -24,13 +27,14 @@ class ModemPool:
def reset_all_modems(self): def reset_all_modems(self):
for ser in self._serial_list: for ser in self._serial_list:
self._send_command("AT+CFUN=1,1\r", ser) self._send_command("AT+CFUN=1,1\r", ser)
# send_command("AT+RESET\r", ser)
# wait for 20 second, so that the modem can init all the sims # wait for 20 second, so that the modem can init all the sims
time.sleep(20) time.sleep(20)
def _generate_error_msg(self, slot_position, index, error: SIMError): def _generate_error_msg(self, slot_position, index, error: SIMError):
return "error for slot({}) SIM({}), error:{}".format(slot_position, index + 1, msg = "slot({}) SIM({}), error:{}".format(slot_position, index + 1,
error.value) error.value)
self._log_sender.send_log(msg, subject=self.TAG, type=LOG_ERROR)
return msg
def get_raw_phone_number(self, slot_position): def get_raw_phone_number(self, slot_position):
for index, ser in enumerate(self._serial_list): for index, ser in enumerate(self._serial_list):
@@ -72,7 +76,6 @@ class ModemPool:
return True return True
def _send_command(self, cmd: str, ser, wait_time_in_s: int = 0) -> bytes: def _send_command(self, cmd: str, ser, wait_time_in_s: int = 0) -> bytes:
# print("send command {}".format(cmd))
ser.write(cmd.encode()) ser.write(cmd.encode())
msg = ser.read(100) msg = ser.read(100)
count = 0 count = 0
+1 -1
View File
@@ -2,7 +2,7 @@ import logging
import serial import serial
PORT = "/dev/tty.usbmodem11301" PORT = "/dev/tty.usbmodem112101"
BAUDRATE = 115200 BAUDRATE = 115200
+17 -11
View File
@@ -1,19 +1,18 @@
import time
import playwright
from playwright.sync_api import sync_playwright from playwright.sync_api import sync_playwright
from db.DbManager import DataManager from db.DbManager import DataManager
from pojo.ReserveResultPojo import ReserveResultPojo from pojo.ReserveResultPojo import ReserveResultPojo
SORRY_SENTENCE = "we are extremely sorry that we were not able to fulfill your request this time"
# check result with playright # check result with playright
def check_result_page(url): def check_result_page(url) -> bool:
with sync_playwright() as p: with sync_playwright() as p:
run(p, url) return run(p, url)
def run(playwright, url): def run(playwright, url) -> bool:
browser = playwright.webkit.launch(headless=False) browser = playwright.webkit.launch(headless=False)
page = browser.new_page( page = browser.new_page(
user_agent="Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Mobile Safari/537.36") user_agent="Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Mobile Safari/537.36")
@@ -21,15 +20,22 @@ def run(playwright, url):
print(url_to_check) print(url_to_check)
page.goto(url_to_check) page.goto(url_to_check)
print(page.title()) print(page.title())
print(page.content()) content = page.content()
browser.close() browser.close()
if SORRY_SENTENCE in content:
print("refused")
return False
else:
print("accepted")
return True
# need to start at 21h00 # need to start at 21h00
if __name__ == '__main__': if __name__ == '__main__':
# get the list # get the list
db_manager = DataManager() db_manager = DataManager()
for appointment in db_manager.get_all_successful_items(): collection = db_manager.get_all_successful_items()
result = ReserveResultPojo.from_firestore_dict(appointment.to_dict()) for appointment in collection.stream():
check_result_page(result.url) reserve_pojo = ReserveResultPojo.from_firestore_dict(appointment.to_dict())
print(result) result = check_result_page(reserve_pojo.url)
collection.document(reserve_pojo.id).update({u'accepted': result})
+3 -3
View File
@@ -32,6 +32,6 @@ class Commandor:
if __name__ == '__main__': if __name__ == '__main__':
commandor = Commandor() commandor = Commandor()
# contact = ContactPojo("0649614591", "E24183897", "LIU", "Yusi", "AZEER", "lei-pan@outlook.com") contact = ContactPojo("0649614591", "E24183897", "LIU", "Yusi", "AZEER", "lei-pan@outlook.com")
# commandor.start_page(contact) commandor.start_page(contact)
commandor.send_otp("262353") # commandor.send_otp("262353")
+1 -1
View File
@@ -22,7 +22,7 @@ class DataManager:
def get_all_successful_items(self): def get_all_successful_items(self):
doc_ref = self._db.collection(u'2022-02-25') doc_ref = self._db.collection(u'2022-02-25')
return doc_ref.stream() return doc_ref
def save(self, result: ReserveResultPojo): def save(self, result: ReserveResultPojo):
if result.type == PublishType.SUCCESS: if result.type == PublishType.SUCCESS:
+4 -1
View File
@@ -6,7 +6,10 @@ import oci
from oci.loggingingestion import LoggingClient from oci.loggingingestion import LoggingClient
from oci.loggingingestion.models import PutLogsDetails, LogEntryBatch, LogEntry from oci.loggingingestion.models import PutLogsDetails, LogEntryBatch, LogEntry
from utils.AppLogging import init_logger from logs.AppLogging import init_logger
LOG_ERROR = "ERROR"
LOG_INFO = "INFO"
class LogSender: class LogSender:
View File
+31 -33
View File
@@ -1,5 +1,4 @@
import datetime import datetime
import json
import logging import logging
import re import re
import sys import sys
@@ -8,13 +7,13 @@ import time
from gsmmodem import GsmModem from gsmmodem import GsmModem
from ModemPool import ModemPool from ModemPool import ModemPool
from card_pool import CardPool from card_pool import CardPool, PORT
from commandor import Commandor from commandor import Commandor
from db.DbManager import DataManager from db.DbManager import DataManager
from pojo.ReserveResultPojo import ReserveResultPojo, PublishType from pojo.ReserveResultPojo import ReserveResultPojo
from utils.excel_reader import ExcelHelper from utils.excel_reader import ExcelHelper
from pojo.serial_modem import SerialModem from pojo.serial_modem import SerialModem
from utils.AppLogging import init_logger from logs.AppLogging import init_logger
from utils.message_receiver import MessageReceiver from utils.message_receiver import MessageReceiver
BAUDRATE = 115200 BAUDRATE = 115200
@@ -22,7 +21,6 @@ OTP_TIMEOUT = 60
is_finished = False is_finished = False
commandor = Commandor() commandor = Commandor()
timeout_contact_list = [] timeout_contact_list = []
PORT = "/dev/tty.usbmodem1301"
# ser = serial.Serial(PORT, BAUDRATE, timeout=1) # ser = serial.Serial(PORT, BAUDRATE, timeout=1)
@@ -31,22 +29,22 @@ db_manager = DataManager()
def get_devices_ports() -> list: def get_devices_ports() -> list:
return [ return [
"/dev/tty.usbmodem1121101", "/dev/tty.usbmodem111101",
"/dev/tty.usbmodem1121103", "/dev/tty.usbmodem111103",
"/dev/tty.usbmodem1121105", "/dev/tty.usbmodem111105",
"/dev/tty.usbmodem1121107", "/dev/tty.usbmodem111107",
"/dev/tty.usbmodem1121201", "/dev/tty.usbmodem111201",
"/dev/tty.usbmodem1121203", "/dev/tty.usbmodem111203",
"/dev/tty.usbmodem1121205", "/dev/tty.usbmodem111205",
"/dev/tty.usbmodem1121207", "/dev/tty.usbmodem111207",
"/dev/tty.usbmodem1121301", "/dev/tty.usbmodem111301",
## "/dev/tty.usbmodem1121303", ## "/dev/tty.usbmodem111303",
"/dev/tty.usbmodem1121305", "/dev/tty.usbmodem111305",
"/dev/tty.usbmodem1121307", "/dev/tty.usbmodem111307",
"/dev/tty.usbmodem1121401", "/dev/tty.usbmodem111401",
"/dev/tty.usbmodem1121403", "/dev/tty.usbmodem111403",
"/dev/tty.usbmodem1121405", "/dev/tty.usbmodem111405",
"/dev/tty.usbmodem1121407" "/dev/tty.usbmodem111407"
] ]
@@ -171,26 +169,26 @@ def start_listen():
def read_all_the_phone_number(): def read_all_the_phone_number():
card_pool = CardPool("/dev/tty.usbmodem11301") card_pool = CardPool(PORT)
slot_number = 1 slot_number = 1
slot_sum = 32 slot_sum = 28
card_pool.switch_to_slot(15) # card_pool.switch_to_slot(10)
# for i in range(10, slot_sum + 1): for i in range(1, slot_sum + 1):
# card_pool.reset() card_pool.reset()
# print("will switch to " + str(i)) print("will switch to " + str(i))
# card_pool.switch_to_slot(i) card_pool.switch_to_slot(i)
# modem_pool = ModemPool(get_devices_ports()) modem_pool = ModemPool(get_devices_ports())
# modem_pool.reset_all_modems() modem_pool.reset_all_modems()
# modem_pool.get_raw_phone_number(i) modem_pool.get_raw_phone_number(i)
if __name__ == '__main__': if __name__ == '__main__':
init_logger() init_logger()
logger = logging.getLogger() logger = logging.getLogger()
logger.addHandler(logging.StreamHandler(stream=sys.stdout)) logger.addHandler(logging.StreamHandler(stream=sys.stdout))
# read_all_the_phone_number() read_all_the_phone_number()
start_listen() # start_listen()
# reset the sim card pool # reset the sim card pool
# send_command("AT+SWIT01-0001\r", ser) # send_command("AT+SWIT01-0001\r", ser)
+7
View File
@@ -12,6 +12,9 @@ class ExcelHelper:
def write_phone(self, phone_number): def write_phone(self, phone_number):
new_df = pandas.Series([phone_number]) new_df = pandas.Series([phone_number])
f = open("phone_list.txt", "a")
f.write("{},".format(phone_number))
f.close()
self._df = pandas.concat([self._df, new_df]) self._df = pandas.concat([self._df, new_df])
self._df.to_excel("phone_list.xlsx") self._df.to_excel("phone_list.xlsx")
@@ -37,3 +40,7 @@ class ExcelHelper:
if __name__ == '__main__': if __name__ == '__main__':
helper = ExcelHelper() helper = ExcelHelper()
helper.write_phone("88649614591") helper.write_phone("88649614591")
helper.write_phone("88649614591")
helper.write_phone("88649614591")
helper.write_phone("8864961591")
helper.write_phone("88649614591")
+1
View File
@@ -0,0 +1 @@
88649614591,88649614591,88649614591,8864961591,88649614591,
Binary file not shown.