Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
U
unify_api2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chaonan
unify_api2
Commits
ac41a7a7
Commit
ac41a7a7
authored
Jun 03, 2025
by
ZZH
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
opt sid iccid map 2025-6-3 10:06
parent
f2c35bc5
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
95 additions
and
48 deletions
+95
-48
sid_iccid_map.py
unify_api/modules/zhiwei_u/service/sid_iccid_map.py
+95
-48
No files found.
unify_api/modules/zhiwei_u/service/sid_iccid_map.py
View file @
ac41a7a7
# -*- coding:utf-8 -*-
# -*- coding:utf-8 -*-
"""
"""
DATE:2024/12/11 08:56
DATE:2024/12/11 08:56
# 查询装置配置信息,导出SIM卡编号和运营商
"""
"""
# -*- coding:utf-8 -*-
"""
DATE:2024/12/9 16:03
"""
# 查询装置配置信息,导出SIM卡编号和运营商
import
time
from
uuid
import
uuid4
from
uuid
import
uuid4
import
pendulum
import
pendulum
import
asyncio
import
asyncio
from
pot_libs.logger
import
log
from
pot_libs.aiomqtt_util.hbmqtt_utils
import
MqttUtil
from
pot_libs.aiomqtt_util.hbmqtt_utils
import
MqttUtil
from
pot_libs.mysql_util.mysql_util
import
MysqlUtil
from
pot_libs.mysql_util.mysql_util
import
MysqlUtil
async
def
iccid_from_get_status
(
sid
,
method
=
"get-status"
):
async
def
iccid_from_get_status
(
sid
,
method
=
"get-status"
):
iccid
=
None
iccid
,
sim_opt
=
None
,
None
try
:
try
:
req_id
=
str
(
uuid4
())
req_id
=
str
(
uuid4
())
data
=
{
data
=
{
...
@@ -34,15 +31,19 @@ async def iccid_from_get_status(sid, method="get-status"):
...
@@ -34,15 +31,19 @@ async def iccid_from_get_status(sid, method="get-status"):
iccid
=
rlt
[
"data"
][
"iccid"
]
iccid
=
rlt
[
"data"
][
"iccid"
]
elif
"hardware"
in
rlt
[
"data"
]:
elif
"hardware"
in
rlt
[
"data"
]:
iccid
=
rlt
[
"data"
][
"hardware"
][
"iccid"
]
iccid
=
rlt
[
"data"
][
"hardware"
][
"iccid"
]
if
"SIM_Operator"
in
rlt
[
"data"
]:
sim_opt
=
rlt
[
"data"
][
"SIM_Operator"
]
elif
"SIM_Operator"
in
rlt
[
"data"
][
"hardware"
]:
sim_opt
=
rlt
[
"data"
][
"hardware"
][
"SIM_Operator"
]
except
Exception
as
e
:
except
Exception
as
e
:
pass
pass
# print(f"sid:{sid} 在get-status中未查询到数据")
return
iccid
,
sim_opt
return
iccid
async
def
iccid_from_get_configv1
(
sid
,
method
=
"get"
):
async
def
iccid_from_get_configv1
(
sid
,
method
=
"get"
):
"""v1.0查询配置信息"""
"""v1.0查询配置信息"""
rlt
=
None
iccid
,
sim_opt
=
None
,
None
try
:
try
:
req_id
=
str
(
uuid4
())
req_id
=
str
(
uuid4
())
data
=
{
data
=
{
...
@@ -54,15 +55,23 @@ async def iccid_from_get_configv1(sid, method="get"):
...
@@ -54,15 +55,23 @@ async def iccid_from_get_configv1(sid, method="get"):
async
with
MqttUtil
()
as
emq
:
async
with
MqttUtil
()
as
emq
:
rlt
=
await
emq
.
device_response
(
sid
=
sid
,
request_id
=
req_id
,
rlt
=
await
emq
.
device_response
(
sid
=
sid
,
request_id
=
req_id
,
data
=
data
)
data
=
data
)
if
"iccid"
in
rlt
[
"data"
]:
iccid
=
rlt
[
"data"
][
"iccid"
]
elif
"hardware"
in
rlt
[
"data"
]:
iccid
=
rlt
[
"data"
][
"hardware"
][
"iccid"
]
if
"SIM_Operator"
in
rlt
[
"data"
]:
sim_opt
=
rlt
[
"data"
][
"SIM_Operator"
]
elif
"SIM_Operator"
in
rlt
[
"data"
][
"hardware"
]:
sim_opt
=
rlt
[
"data"
][
"hardware"
][
"SIM_Operator"
]
except
Exception
as
e
:
except
Exception
as
e
:
print
(
f
"sid:{sid} 在1.0协议get中未查询到数据"
)
pass
# 4.2 根据2.0协议查询数据
return
iccid
,
sim_opt
return
rlt
async
def
iccid_from_get_configv2
(
sid
,
method
=
"get-config"
,
key
=
"
ratio_ids
"
):
async
def
iccid_from_get_configv2
(
sid
,
method
=
"get-config"
,
key
=
"
hardware
"
):
"""v1.0查询配置信息"""
"""v1.0查询配置信息"""
rlt
=
None
iccid
,
sim_opt
=
None
,
None
try
:
try
:
req_id
=
str
(
uuid4
())
req_id
=
str
(
uuid4
())
data
=
{
data
=
{
...
@@ -75,10 +84,18 @@ async def iccid_from_get_configv2(sid, method="get-config", key="ratio_ids"):
...
@@ -75,10 +84,18 @@ async def iccid_from_get_configv2(sid, method="get-config", key="ratio_ids"):
async
with
MqttUtil
()
as
emq
:
async
with
MqttUtil
()
as
emq
:
rlt
=
await
emq
.
device_response
(
sid
=
sid
,
request_id
=
req_id
,
rlt
=
await
emq
.
device_response
(
sid
=
sid
,
request_id
=
req_id
,
data
=
data
)
data
=
data
)
if
"iccid"
in
rlt
[
"data"
]:
iccid
=
rlt
[
"data"
][
"iccid"
]
elif
"hardware"
in
rlt
[
"data"
]:
iccid
=
rlt
[
"data"
][
"hardware"
][
"iccid"
]
if
"SIM_Operator"
in
rlt
[
"data"
]:
sim_opt
=
rlt
[
"data"
][
"SIM_Operator"
]
elif
"SIM_Operator"
in
rlt
[
"data"
][
"hardware"
]:
sim_opt
=
rlt
[
"data"
][
"hardware"
][
"SIM_Operator"
]
except
Exception
as
e
:
except
Exception
as
e
:
print
(
f
"sid:{sid} 在2.0协议未查询到数据"
)
pass
# 4.2 根据2.0协议查询数据
return
iccid
,
sim_opt
return
rlt
async
def
load_compy_sids
(
cid
,
db
=
"power_iot"
):
async
def
load_compy_sids
(
cid
,
db
=
"power_iot"
):
...
@@ -88,9 +105,28 @@ async def load_compy_sids(cid, db="power_iot"):
...
@@ -88,9 +105,28 @@ async def load_compy_sids(cid, db="power_iot"):
return
[
r
[
"sid"
]
for
r
in
await
conn
.
fetchall
(
sql
)]
return
[
r
[
"sid"
]
for
r
in
await
conn
.
fetchall
(
sql
)]
async
def
load_all_sids
():
sid_lst
=
[]
dbs
=
[
"power_iot"
,
"bromake"
,
"electric_ops"
,
"micro_grid"
,
"sic"
,
"co2e"
]
for
db
in
dbs
:
sql
=
f
"SELECT DISTINCT(sid) "
\
f
"FROM {db}.point INNER JOIN {db}.monitor "
\
f
"ON {db}.point.mtid={db}.monitor.mtid "
\
f
"WHERE demolished=0;"
async
with
MysqlUtil
()
as
conn
:
sid_lst
.
extend
([
r
[
"sid"
]
for
r
in
await
conn
.
fetchall
(
sql
)])
# add some special sid
sid_lst
.
extend
([
"A2004000373"
])
print
(
len
(
sid_lst
))
return
list
(
set
(
sid_lst
))
async
def
batch_insert
(
seq_param_lst
):
async
def
batch_insert
(
seq_param_lst
):
sql
=
f
"INSERT INTO devops.sid_sim2(sid, iccid) VALUES (
%
s,
%
s) "
\
sql
=
f
"INSERT INTO devops.sid_sim(sid, iccid, sim_opt) "
\
f
"ON DUPLICATE KEY UPDATE iccid=VALUES(iccid);"
f
"VALUES (
%
s,
%
s,
%
s) "
\
f
"ON DUPLICATE KEY UPDATE "
\
f
"iccid=VALUES(iccid), sim_opt=VALUES(sim_opt);"
async
with
MysqlUtil
()
as
conn
:
async
with
MysqlUtil
()
as
conn
:
await
conn
.
insert_many
(
sql
,
seq_param_lst
)
await
conn
.
insert_many
(
sql
,
seq_param_lst
)
...
@@ -131,34 +167,34 @@ async def main():
...
@@ -131,34 +167,34 @@ async def main():
print
(
f
"finish all sid iccid, {len(sid_iccids)}"
)
print
(
f
"finish all sid iccid, {len(sid_iccids)}"
)
async
def
load_iccid
(
sid
,
trys
=
5
):
async
def
load_iccid
(
sid
):
for
i
in
range
(
trys
):
iccid
,
sim_opt
=
await
iccid_from_get_status
(
sid
)
iccid
=
await
iccid_from_get_status
(
sid
)
if
iccid
:
if
iccid
:
return
sid
,
iccid
return
sid
,
iccid
,
sim_opt
# rlt = await iccid_from_get_configv1(sid)
iccid
,
sim_opt
=
await
iccid_from_get_configv2
(
sid
)
# if rlt:
if
iccid
:
# print("get_configv1", sid, rlt)
return
sid
,
iccid
,
sim_opt
# return sid, None
return
sid
,
None
iccid
,
sim_opt
=
await
iccid_from_get_configv1
(
sid
)
if
iccid
:
return
sid
,
iccid
,
sim_opt
return
sid
,
None
,
None
async
def
main2
():
cid
=
223
async
def
update_all
():
sid_iccids
,
fail_sid
=
[],
[]
sid_iccids
,
fail_sid
,
tmp
=
[],
[],
[]
tmp
=
[]
sid_total
=
await
load_all_sids
()
sid_total
=
await
load_compy_sids
(
cid
)
for
i
,
sid
in
enumerate
(
sid_total
,
start
=
1
):
for
i
,
sid
in
enumerate
(
sid_total
,
start
=
1
):
tmp
.
append
(
sid
)
tmp
.
append
(
sid
)
if
i
%
3
00
and
i
<
len
(
sid_total
):
if
i
%
2
00
and
i
<
len
(
sid_total
):
continue
continue
task_lst
=
[
load_iccid
(
sid
)
for
sid
in
tmp
]
task_lst
=
[
load_iccid
(
sid
)
for
sid
in
tmp
]
for
_sid
,
iccid
in
await
asyncio
.
gather
(
*
task_lst
):
for
_sid
,
iccid
,
sim_opt
in
await
asyncio
.
gather
(
*
task_lst
):
if
iccid
:
if
iccid
:
sid_iccids
.
append
((
_sid
,
iccid
))
sid_iccids
.
append
((
_sid
,
iccid
,
sim_opt
))
else
:
else
:
fail_sid
.
append
(
_sid
)
fail_sid
.
append
(
_sid
)
...
@@ -167,28 +203,39 @@ async def main2():
...
@@ -167,28 +203,39 @@ async def main2():
if
sid_iccids
:
if
sid_iccids
:
await
batch_insert
(
sid_iccids
)
await
batch_insert
(
sid_iccids
)
print
(
f
"finish all task, success {len(sid_iccids)}, fail {len(fail_sid)}"
)
log
.
info
(
f
"finish task, success:{len(sid_iccids)}, fail:{len(fail_sid)}"
)
print
(
f
"fail sids:{fail_sid}"
)
log
.
info
(
f
"fail sids:{fail_sid}"
)
if
fail_sid
:
if
fail_sid
:
sid_iccids
,
fail_two
=
[],
[]
sid_iccids
,
fail_two
,
tmp
=
[],
[],
[]
for
i
,
sid
in
enumerate
(
fail_sid
,
start
=
1
):
for
i
,
sid
in
enumerate
(
fail_sid
,
start
=
1
):
tmp
.
append
(
sid
)
tmp
.
append
(
sid
)
if
i
%
3
00
and
i
<
len
(
fail_sid
):
if
i
%
2
00
and
i
<
len
(
fail_sid
):
continue
continue
task_lst
=
[
load_iccid
(
sid
)
for
sid
in
tmp
]
task_lst
=
[
load_iccid
(
sid
)
for
sid
in
tmp
]
for
_sid
,
iccid
in
await
asyncio
.
gather
(
*
task_lst
):
for
_sid
,
iccid
,
sim_opt
in
await
asyncio
.
gather
(
*
task_lst
):
if
iccid
:
if
iccid
:
sid_iccids
.
append
((
_sid
,
iccid
))
sid_iccids
.
append
((
_sid
,
iccid
,
sim_opt
))
else
:
else
:
fail_two
.
append
(
_sid
)
fail_two
.
append
(
_sid
)
if
sid_iccids
:
if
sid_iccids
:
await
batch_insert
(
sid_iccids
)
await
batch_insert
(
sid_iccids
)
print
(
f
"fail request, sucess {len(sid_iccids)} fail:{len(fail_two)}"
)
log
.
info
(
f
"twice, sucess:{len(sid_iccids)} fail:{len(fail_two)}"
)
print
(
f
"twice fail sids:{fail_two}"
)
log
.
info
(
f
"twice fail sids:{fail_two}"
)
async
def
main2
():
while
True
:
try
:
await
update_all
()
except
Exception
as
e
:
log
.
error
(
f
"main2 error:{e}"
)
time
.
sleep
(
3600
)
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
# asyncio.run(main2())
asyncio
.
run
(
main2
())
asyncio
.
run
(
update
())
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment