try to add sim info to fb
This commit is contained in:
+12
-3
@@ -3,9 +3,11 @@ import time
|
|||||||
|
|
||||||
import serial
|
import serial
|
||||||
from serial import Serial
|
from serial import Serial
|
||||||
|
from db.DbManager import DataManager
|
||||||
|
|
||||||
from SIMError import SIMError
|
from error.SIMError import SIMError
|
||||||
from logs.LogSender import LogSender, LOG_ERROR
|
from logs.LogSender import LogSender, LOG_ERROR
|
||||||
|
from pojo.SimInfoPojo import SimInfoPojo
|
||||||
from utils.excel_reader import ExcelHelper
|
from utils.excel_reader import ExcelHelper
|
||||||
|
|
||||||
|
|
||||||
@@ -19,6 +21,7 @@ class ModemPool:
|
|||||||
self._serial_list = []
|
self._serial_list = []
|
||||||
self._excel_helper = ExcelHelper()
|
self._excel_helper = ExcelHelper()
|
||||||
self._log_sender = LogSender()
|
self._log_sender = LogSender()
|
||||||
|
self._db_manager = DataManager()
|
||||||
|
|
||||||
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)
|
||||||
@@ -26,13 +29,15 @@ class ModemPool:
|
|||||||
|
|
||||||
def reset_all_modems(self):
|
def reset_all_modems(self):
|
||||||
for ser in self._serial_list:
|
for ser in self._serial_list:
|
||||||
|
# may encontre exception here, multi-access to serial port
|
||||||
|
time.sleep(2)
|
||||||
self._send_command("AT+CFUN=1,1\r", ser)
|
self._send_command("AT+CFUN=1,1\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):
|
||||||
msg = "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)
|
self._log_sender.send_log(msg, subject=self.TAG, type=LOG_ERROR)
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
@@ -56,8 +61,12 @@ class ModemPool:
|
|||||||
match = re.search(r'33\d{9}', str(msg))
|
match = re.search(r'33\d{9}', str(msg))
|
||||||
phone_number = match.group(0)
|
phone_number = match.group(0)
|
||||||
print("phone is " + phone_number)
|
print("phone is " + phone_number)
|
||||||
|
cmd = "AT+CCID\r"
|
||||||
|
response = str(self._send_command(cmd, ser))
|
||||||
|
ccid_group = re.search("[0-9F]+", response)
|
||||||
|
ccid = ccid_group.group(0)
|
||||||
if phone_number:
|
if phone_number:
|
||||||
self._excel_helper.write_phone(phone_number)
|
self._db_manager.save_sim_info(SimInfoPojo(phone=phone_number, ccid=ccid))
|
||||||
# write the number to sim card's phonebook
|
# write the number to sim card's phonebook
|
||||||
cmd = f'AT+CPBW={self.phone_number_position},\"{phone_number}\"\r'
|
cmd = f'AT+CPBW={self.phone_number_position},\"{phone_number}\"\r'
|
||||||
self._send_command(cmd, ser, wait_time_in_s=2)
|
self._send_command(cmd, ser, wait_time_in_s=2)
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@ import logging
|
|||||||
|
|
||||||
import serial
|
import serial
|
||||||
|
|
||||||
PORT = "/dev/tty.usbmodem112101"
|
PORT = "/dev/tty.usbmodem1432101"
|
||||||
|
|
||||||
BAUDRATE = 115200
|
BAUDRATE = 115200
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -1,13 +1,13 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import json
|
|
||||||
|
|
||||||
import firebase_admin
|
import firebase_admin
|
||||||
from firebase_admin import credentials, firestore
|
from firebase_admin import credentials, firestore
|
||||||
|
|
||||||
from pojo.ReserveResultPojo import ReserveResultPojo, PublishType
|
from pojo.ReserveResultPojo import ReserveResultPojo, PublishType
|
||||||
|
from pojo.SimInfoPojo import SimInfoPojo
|
||||||
from pojo.contact_pojo import ContactPojo
|
from pojo.contact_pojo import ContactPojo
|
||||||
|
|
||||||
ERROR_COLLECTION_NAME = "error_items"
|
ERROR_COLLECTION_NAME = "error_items"
|
||||||
|
SIM_INFOS = "sim_infos"
|
||||||
TIMEOUT = "timeout_items"
|
TIMEOUT = "timeout_items"
|
||||||
|
|
||||||
|
|
||||||
@@ -24,6 +24,10 @@ class DataManager:
|
|||||||
doc_ref = self._db.collection(u'2022-02-25')
|
doc_ref = self._db.collection(u'2022-02-25')
|
||||||
return doc_ref
|
return doc_ref
|
||||||
|
|
||||||
|
def save_sim_info(self, simInfoPojo: SimInfoPojo):
|
||||||
|
doc_ref = self._db.collection(SIM_INFOS).document(simInfoPojo.phone)
|
||||||
|
doc_ref.set(simInfoPojo.to_firestore_dict())
|
||||||
|
|
||||||
def save(self, result: ReserveResultPojo):
|
def save(self, result: ReserveResultPojo):
|
||||||
if result.type == PublishType.SUCCESS:
|
if result.type == PublishType.SUCCESS:
|
||||||
# get id
|
# get id
|
||||||
|
|||||||
@@ -7,9 +7,10 @@ import time
|
|||||||
from gsmmodem import GsmModem
|
from gsmmodem import GsmModem
|
||||||
|
|
||||||
from ModemPool import ModemPool
|
from ModemPool import ModemPool
|
||||||
from card_pool import CardPool, PORT
|
from card_pool import CardPool
|
||||||
from commandor import Commandor
|
from commandor import Commandor
|
||||||
from db.DbManager import DataManager
|
from db.DbManager import DataManager
|
||||||
|
from params import MODEM_POOL_PORTS, CARD_POOL_PORT
|
||||||
from pojo.ReserveResultPojo import ReserveResultPojo
|
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
|
||||||
@@ -20,32 +21,13 @@ BAUDRATE = 115200
|
|||||||
OTP_TIMEOUT = 60
|
OTP_TIMEOUT = 60
|
||||||
is_finished = False
|
is_finished = False
|
||||||
commandor = Commandor()
|
commandor = Commandor()
|
||||||
timeout_contact_list = []
|
|
||||||
|
|
||||||
# ser = serial.Serial(PORT, BAUDRATE, timeout=1)
|
|
||||||
|
|
||||||
db_manager = DataManager()
|
db_manager = DataManager()
|
||||||
|
card_pool = CardPool(CARD_POOL_PORT)
|
||||||
|
|
||||||
|
|
||||||
def get_devices_ports() -> list:
|
def get_devices_ports() -> list:
|
||||||
return [
|
return MODEM_POOL_PORTS
|
||||||
"/dev/tty.usbmodem111101",
|
|
||||||
"/dev/tty.usbmodem111103",
|
|
||||||
"/dev/tty.usbmodem111105",
|
|
||||||
"/dev/tty.usbmodem111107",
|
|
||||||
"/dev/tty.usbmodem111201",
|
|
||||||
"/dev/tty.usbmodem111203",
|
|
||||||
"/dev/tty.usbmodem111205",
|
|
||||||
"/dev/tty.usbmodem111207",
|
|
||||||
"/dev/tty.usbmodem111301",
|
|
||||||
## "/dev/tty.usbmodem111303",
|
|
||||||
"/dev/tty.usbmodem111305",
|
|
||||||
"/dev/tty.usbmodem111307",
|
|
||||||
"/dev/tty.usbmodem111401",
|
|
||||||
"/dev/tty.usbmodem111403",
|
|
||||||
"/dev/tty.usbmodem111405",
|
|
||||||
"/dev/tty.usbmodem111407"
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def has_sim(ser) -> bool:
|
def has_sim(ser) -> bool:
|
||||||
@@ -58,11 +40,15 @@ def has_sim(ser) -> bool:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def send_command(cmd: str, ser) -> bytes:
|
def send_command(cmd: str, ser, wait_time_in_s: int = 0) -> bytes:
|
||||||
print("send command {}".format(cmd))
|
|
||||||
ser.write(cmd.encode())
|
ser.write(cmd.encode())
|
||||||
time.sleep(10)
|
|
||||||
msg = ser.read(100)
|
msg = ser.read(100)
|
||||||
|
count = 0
|
||||||
|
while 'OK' not in str(msg) and count < wait_time_in_s:
|
||||||
|
time.sleep(1)
|
||||||
|
count = count + 1
|
||||||
|
msg = ser.read(100)
|
||||||
|
# msg = ser.read(100)
|
||||||
print(msg)
|
print(msg)
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
@@ -95,7 +81,6 @@ def create_modem_for_port(port: str) -> SerialModem:
|
|||||||
|
|
||||||
|
|
||||||
def timeout_occurred(serial_modem: SerialModem):
|
def timeout_occurred(serial_modem: SerialModem):
|
||||||
timeout_contact_list.append(serial_modem.contact)
|
|
||||||
db_manager.save_timeout_contact(serial_modem.contact)
|
db_manager.save_timeout_contact(serial_modem.contact)
|
||||||
|
|
||||||
|
|
||||||
@@ -134,6 +119,16 @@ def handle_sms(sms):
|
|||||||
is_finished = True
|
is_finished = True
|
||||||
|
|
||||||
|
|
||||||
|
def select_sim_storage(ser) -> bool:
|
||||||
|
# use SIM Card storage
|
||||||
|
cmd_sm = "AT+CPBS=\"SM\"\r"
|
||||||
|
result = send_command(cmd_sm, ser)
|
||||||
|
if "ERROR" in str(result):
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def init_modems() -> list:
|
def init_modems() -> list:
|
||||||
modems = []
|
modems = []
|
||||||
for port in get_devices_ports():
|
for port in get_devices_ports():
|
||||||
@@ -169,12 +164,11 @@ def start_listen():
|
|||||||
|
|
||||||
|
|
||||||
def read_all_the_phone_number():
|
def read_all_the_phone_number():
|
||||||
card_pool = CardPool(PORT)
|
|
||||||
slot_number = 1
|
slot_number = 1
|
||||||
slot_sum = 28
|
slot_sum = 3
|
||||||
# card_pool.switch_to_slot(10)
|
# card_pool.switch_to_slot(3)
|
||||||
|
|
||||||
for i in range(1, slot_sum + 1):
|
for i in range(slot_number, 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)
|
||||||
@@ -183,25 +177,27 @@ def read_all_the_phone_number():
|
|||||||
modem_pool.get_raw_phone_number(i)
|
modem_pool.get_raw_phone_number(i)
|
||||||
|
|
||||||
|
|
||||||
|
def start_book():
|
||||||
|
slot_number = 3
|
||||||
|
slot_sum = 3
|
||||||
|
for i in range(slot_number, slot_sum + 1):
|
||||||
|
card_pool.reset()
|
||||||
|
print("will switch to " + str(i))
|
||||||
|
card_pool.switch_to_slot(i)
|
||||||
|
modem_pool = ModemPool(get_devices_ports())
|
||||||
|
modem_pool.reset_all_modems()
|
||||||
|
modem_list = init_modems()
|
||||||
|
# create listeners for chaque modem
|
||||||
|
for modem in modem_list:
|
||||||
|
if modem.contact:
|
||||||
|
commandor.start_page(modem.contact)
|
||||||
|
start_to_handle_sms(modem)
|
||||||
|
|
||||||
|
|
||||||
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
|
start_book()
|
||||||
# send_command("AT+SWIT01-0001\r", ser)
|
|
||||||
|
|
||||||
# enable verbose logs for all port
|
|
||||||
|
|
||||||
# # create modems for all the available port
|
|
||||||
# modem_list = init_modems()
|
|
||||||
# create listeners for chaque modem
|
|
||||||
# for modem in modem_list:
|
|
||||||
# commandor.start_page(modem.contact)
|
|
||||||
# start_to_handle_sms(modem)
|
|
||||||
# # save the timeout contacts
|
|
||||||
# timeout_list = json.dumps(timeout_contact_list)
|
|
||||||
# f = open("timeout_list.json", "a")
|
|
||||||
# f.write(str(timeout_list))
|
|
||||||
# f.close()
|
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
MODEM_POOL_PORTS = [
|
||||||
|
"/dev/tty.usbmodem1431101",
|
||||||
|
"/dev/tty.usbmodem1431103",
|
||||||
|
"/dev/tty.usbmodem1431105",
|
||||||
|
"/dev/tty.usbmodem1431107",
|
||||||
|
"/dev/tty.usbmodem1431201",
|
||||||
|
"/dev/tty.usbmodem1431203",
|
||||||
|
"/dev/tty.usbmodem1431205",
|
||||||
|
"/dev/tty.usbmodem1431207",
|
||||||
|
"/dev/tty.usbmodem1431301",
|
||||||
|
## "/dev/tty.usbmodem1431303",
|
||||||
|
"/dev/tty.usbmodem1431305",
|
||||||
|
"/dev/tty.usbmodem1431307",
|
||||||
|
"/dev/tty.usbmodem1431401",
|
||||||
|
"/dev/tty.usbmodem1431403",
|
||||||
|
"/dev/tty.usbmodem1431405",
|
||||||
|
"/dev/tty.usbmodem1431407"
|
||||||
|
]
|
||||||
|
CARD_POOL_PORT = "/dev/tty.usbmodem1432101"
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
class SimInfoPojo:
|
||||||
|
phone: str
|
||||||
|
ccid: str
|
||||||
|
|
||||||
|
def __init__(self, phone: str, ccid: str):
|
||||||
|
self.phone = phone
|
||||||
|
self.ccid = ccid
|
||||||
|
|
||||||
|
def to_firestore_dict(self):
|
||||||
|
dest = {
|
||||||
|
u'phone': self.phone,
|
||||||
|
u'ccid': self.ccid,
|
||||||
|
}
|
||||||
|
|
||||||
|
return dest
|
||||||
Binary file not shown.
+21
-8
@@ -10,13 +10,30 @@ class ExcelHelper:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._df = pandas.Series()
|
self._df = pandas.Series()
|
||||||
|
|
||||||
def write_phone(self, phone_number):
|
def write_phone(self, phone_ccid):
|
||||||
new_df = pandas.Series([phone_number])
|
(phone, ccid) = phone_ccid
|
||||||
f = open("phone_list.txt", "a")
|
f = open("phone_list.txt", "a")
|
||||||
|
f.write("{},".format(phone[2:len(phone)]))
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
def write_ccid(self, phone_number):
|
||||||
|
f = open("ccid_list.txt", "a")
|
||||||
f.write("{},".format(phone_number))
|
f.write("{},".format(phone_number))
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
def write_to_exel(self, file_name, data_list: list):
|
||||||
|
new_df = pandas.Series(data_list)
|
||||||
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(file_name)
|
||||||
|
|
||||||
|
def generate_exel_from_txt(self):
|
||||||
|
f = open("../phone_list.txt")
|
||||||
|
lines = f.read()
|
||||||
|
self.write_to_exel("phone_list.xlsx", lines.split(","))
|
||||||
|
ccid_file = open("../ccid_list.txt")
|
||||||
|
ccids = ccid_file.read()
|
||||||
|
self.write_to_exel("ccid_list.xlsx", ccids.split(","))
|
||||||
|
print(lines)
|
||||||
|
|
||||||
# read the contact list from the exel file
|
# read the contact list from the exel file
|
||||||
def read_contacts(self) -> list:
|
def read_contacts(self) -> list:
|
||||||
@@ -39,8 +56,4 @@ class ExcelHelper:
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
helper = ExcelHelper()
|
helper = ExcelHelper()
|
||||||
helper.write_phone("88649614591")
|
helper.generate_exel_from_txt()
|
||||||
helper.write_phone("88649614591")
|
|
||||||
helper.write_phone("88649614591")
|
|
||||||
helper.write_phone("8864961591")
|
|
||||||
helper.write_phone("88649614591")
|
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user