set log source

This commit is contained in:
2022-03-02 20:10:46 +01:00
parent dcf094437e
commit 04e49a2b23
6 changed files with 85 additions and 46 deletions
+4 -2
View File
@@ -5,7 +5,7 @@ import serial
from serial import Serial
from error.SIMError import SIMError
from logs.LogSender import LogSender, LOG_ERROR
from logs.LogSender import LOG_APPOINTMENT_SUCCESS, SUBJECT_SIM_INFO
from params import firebase_store_manager, oracle_log_sender
from pojo.SimInfoPojo import SimInfoPojo
from utils.excel_reader import ExcelHelper
@@ -38,7 +38,7 @@ class ModemPool:
def _generate_error_msg(self, slot_position, index, error: SIMError):
msg = "slot({}) SIM({}), error:{}".format(slot_position, index + 1,
error.value)
self._log_sender.send_log(msg, subject=self.TAG, type=LOG_ERROR)
self._log_sender.send_log(msg, source=self.TAG, subject=SUBJECT_SIM_INFO, type=error.value)
return msg
def get_raw_phone_number(self, slot_position):
@@ -69,6 +69,8 @@ class ModemPool:
position = (slot_position - 1) * 15 + sim_position
if phone_number:
self._db_manager.save_sim_info(SimInfoPojo(phone=phone_number, ccid=ccid, position=position))
self._log_sender.send_log(phone_number, source=self.TAG, subject=SUBJECT_SIM_INFO,
type=LOG_APPOINTMENT_SUCCESS)
# write the number to sim card's phonebook
cmd = f'AT+CPBW={self.phone_number_position},\"{phone_number}\"\r'
self._send_command(cmd, ser, wait_time_in_s=2)
BIN
View File
Binary file not shown.
+41 -20
View File
@@ -14,6 +14,8 @@ TIMEOUT = "timeout_items"
class DataManager:
batch_size = 20
def __init__(self):
cred = credentials.Certificate("appointment.json")
self._app = firebase_admin.initialize_app(cred)
@@ -50,25 +52,44 @@ class DataManager:
doc_ref = self._db.collection(TIMEOUT).document(str(contact.phone))
doc_ref.set(contact.to_firestore_dict())
def _delete_collection(self, coll_ref, batch_size):
docs = coll_ref.limit(batch_size).stream()
deleted = 0
for doc in docs:
print(f'Deleting doc {doc.id} => {doc.to_dict()}')
doc.reference.delete()
deleted = deleted + 1
if deleted >= batch_size:
return self._delete_collection(coll_ref, batch_size)
def clear_all_sim_info(self):
coll_ref = self._db.collection(SIM_INFOS)
self._delete_collection(coll_ref, self.batch_size)
def save_to_excel(self):
# Start from the first cell. Rows and columns are zero indexed.
sim_info_list = []
for sim in self.get_all_sim_infos().stream():
print(sim)
sim_pojo = SimInfoPojo.from_firestore_dict(sim.to_dict())
sim_info_list.append(sim_pojo)
row = 0
col = 0
# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('sim_infos.xlsx')
worksheet = workbook.add_worksheet()
for info in sim_info_list:
# Iterate over the data and write it out row by row.
worksheet.write(row, col, info.phone[2:len(info.phone)])
worksheet.write(row, col + 1, info.ccid)
worksheet.write(row, col + 2, info.position)
row += 1
workbook.close()
if __name__ == '__main__':
# Start from the first cell. Rows and columns are zero indexed.
sim_info_list = []
for sim in params.firebase_store_manager.get_all_sim_infos().stream():
print(sim)
sim_pojo = SimInfoPojo.from_firestore_dict(sim.to_dict())
sim_info_list.append(sim_pojo)
row = 0
col = 0
# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('sim_infos.xlsx')
worksheet = workbook.add_worksheet()
for info in sim_info_list:
# Iterate over the data and write it out row by row.
worksheet.write(row, col, info.phone[2:len(info.phone)])
worksheet.write(row, col + 1, info.ccid)
worksheet.write(row, col + 2, info.position)
row += 1
workbook.close()
# params.firebase_store_manager.save_to_excel()
params.firebase_store_manager.clear_all_sim_info()
BIN
View File
Binary file not shown.
+12 -2
View File
@@ -7,12 +7,15 @@ from oci.loggingingestion import LoggingClient
from oci.loggingingestion.models import PutLogsDetails, LogEntryBatch, LogEntry
from logs.AppLogging import init_logger
from pojo import ReserveResultPojo
from pojo.ReserveResultPojo import PublishType
LOG_ERROR = "ERROR"
LOG_INFO = "INFO"
LOG_APPOINTMENT_ERROR = "APPOINTMENT_ERROR"
LOG_APPOINTMENT_TIMEOUT = "TIMEOUT"
LOG_APPOINTMENT_SUCCESS = "SUCCESS"
SUBJECT_SIM_INFO = "sim_card"
class LogSender:
@@ -21,7 +24,14 @@ class LogSender:
self._identity = oci.identity.IdentityClient(self._config)
self._loggingingestion_client = LoggingClient(self._config)
def send_log(self, msg: str, subject="appointment", type: str = "INFO"):
def send_appoint_result(self, result: ReserveResultPojo):
if result.type == PublishType.SUCCESS:
# get id
self.send_log(result.id, type=LOG_APPOINTMENT_SUCCESS)
else:
self.send_log(result.message, type=LOG_APPOINTMENT_ERROR)
def send_log(self, msg: str, source="Appointment", subject="appointment", type: str = "INFO"):
log_id = "ocid1.log.oc1.eu-frankfurt-1.amaaaaaacvc3jtia5enufv5jxe6binq4ndaty7pt5mk7uidipfd62ynwdhnq"
response = self._loggingingestion_client.put_logs(
log_id=log_id,
@@ -33,7 +43,7 @@ class LogSender:
data=msg,
id=log_id,
time=datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ"))],
source="Appointment",
source=source,
type=type,
defaultlogentrytime=datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ"),
subject=subject)])
+28 -22
View File
@@ -3,6 +3,7 @@ import logging
import re
import sys
import time
from typing import Union
from gsmmodem import GsmModem
@@ -18,7 +19,7 @@ from logs.AppLogging import init_logger
from utils.message_receiver import MessageReceiver
BAUDRATE = 115200
OTP_TIMEOUT = 60
OTP_TIMEOUT = 70
is_finished = False
commandor = Commandor()
@@ -61,23 +62,26 @@ def execut_USSD_cmd(cmd, ser):
send_command(cmd, ser)
def create_modem_for_port(port: str) -> SerialModem:
def create_modem_for_port(port: str) -> Union[SerialModem, None]:
logger.info('Initializing modem... for ' + port)
# Uncomment the following line to see what the modem is doing:
init_logger()
modem = GsmModem(port)
time.sleep(1)
modem.connect()
number = modem.ownNumber
logger.info("The SIM card phone number is:")
logger.info(number)
cmd = "AT+CCID\r"
response = modem.write(cmd, True)
ccid = response[0].split(" ")[1].replace("\"", "")
logger.info("The SIM card ccid is:" + ccid)
serial_modem = SerialModem(modem=modem, ccid=ccid)
return serial_modem
serial_modem = None
try:
modem = GsmModem(port)
time.sleep(1)
modem.connect()
number = modem.ownNumber
logger.info("The SIM card phone number is:")
logger.info(number)
cmd = "AT+CCID\r"
response = modem.write(cmd, True)
ccid = response[0].split(" ")[1].replace("\"", "")
logger.info("The SIM card ccid is:" + ccid)
return SerialModem(modem=modem, ccid=ccid)
except Exception as ext:
print(ext)
return serial_modem
def timeout_occurred(serial_modem: SerialModem):
@@ -133,7 +137,9 @@ def select_sim_storage(ser) -> bool:
def init_modems() -> list:
modems = []
for port in get_devices_ports():
modems.append(create_modem_for_port(port))
serial_modem = create_modem_for_port(port)
if serial_modem:
modems.append(serial_modem)
# read the contact, and contact the 2 objects together
excel_reader = ExcelHelper()
contacts = excel_reader.read_contacts()
@@ -153,7 +159,7 @@ def on_message_received(ch, method, properties, body):
result = ReserveResultPojo.from_json(body)
print(result)
firebase_store_manager.save(result)
oracle_log_sender.send_log(str(result.id), type=LOG_APPOINTMENT_SUCCESS)
oracle_log_sender.send_appoint_result(result)
# set the flag to True
global is_finished
is_finished = True
@@ -180,8 +186,8 @@ def read_all_the_phone_number():
def start_book():
slot_number = 5
slot_sum = 6
slot_number = 12
slot_sum = 31
for i in range(slot_number, slot_sum + 1):
card_pool.reset()
print("will switch to " + str(i))
@@ -200,6 +206,6 @@ if __name__ == '__main__':
init_logger()
logger = logging.getLogger()
logger.addHandler(logging.StreamHandler(stream=sys.stdout))
# read_all_the_phone_number()
start_listen()
start_book()
read_all_the_phone_number()
# start_listen()
# start_book()