Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录
切换导航
U
ubains-module-test
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
1
议题
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
郑晓兵
ubains-module-test
Commits
96a6f57e
提交
96a6f57e
authored
4月 22, 2026
作者:
陈泽健
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/develop' into develop
上级
2ce1d66e
56c6bf78
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
1147 行增加
和
200 行删除
+1147
-200
Android_Information .py
...Tool/ReservationSystem_DoorScreen/Android_Information .py
+233
-43
Android_Information.py
..._Tool/ReservationSystem_DoorScreen/Android_Information.py
+412
-0
安卓信息-消息监听.py
..._Universal_Tool/ReservationSystem_DoorScreen/安卓信息-消息监听.py
+1
-1
MQTT安卓上报_100条.csv
...l/TestData/ReservationSystem_DoorScreen/MQTT安卓上报_100条.csv
+0
-103
MQTT设备信息上报_100条.csv
...TestData/ReservationSystem_DoorScreen/MQTT设备信息上报_100条.csv
+101
-0
README_设备信息上报.md
...ol/TestData/ReservationSystem_DoorScreen/README_设备信息上报.md
+265
-0
Mqtt_Send.py
预定系统/Base/Mqtt_Send.py
+133
-53
__init__.py
预定系统/Base/__init__.py
+1
-0
__init__.py
预定系统/__init__.py
+1
-0
没有找到文件。
Mqtt_Universal_Tool/ReservationSystem_DoorScreen/Android_Information .py
浏览文件 @
96a6f57e
...
...
@@ -7,6 +7,52 @@ import threading
import
time
from
datetime
import
datetime
from
queue
import
Queue
import
signal
# ============================================================================
# ==================== 配置区域 (修改这里即可自定义行为) ====================
# ============================================================================
# 1. CSV配置文件路径列表 (支持多个文件,同时加载)
# 注意:路径可以是相对于当前脚本的路径,也可以是绝对路径
CSV_FILES
=
[
'../../TestData/ReservationSystem_DoorScreen/MQTT心跳上报_100条.csv'
,
#'../TestData/ReservationSystem_DoorScreen/MQTT信息上报_100条.csv',
'../../TestData/ReservationSystem_DoorScreen/MQTT设备信息上报_100条.csv'
,
# 新增:设备信息上报
]
# 2. MQTT服务器连接配置
MQTT_CONFIG
=
{
'broker_address'
:
'192.168.5.50'
,
# MQTT服务器地址
'port'
:
1883
,
# 端口号
'username'
:
'mqtt@cmdb'
,
# 用户名
'password'
:
'mqtt@webpassw0RD'
,
# 密码
}
# 3. 线程和发送控制
THREAD_CONFIG
=
{
'max_threads'
:
100
,
# 最大线程数
'send_interval'
:
1
,
# 每条消息发送间隔(秒)
'startup_delay'
:
0.05
,
# 线程启动间隔(秒),避免同时启动
}
# 4. 日志配置
LOG_CONFIG
=
{
'log_dir'
:
'/var/log/scripts'
,
# Linux日志目录
'fallback_log_dir'
:
'logs'
,
# Windows备用日志目录
'log_level'
:
logging
.
INFO
,
# 日志级别: DEBUG/INFO/WARNING/ERROR
'reconnect_log_interval'
:
10
,
# 每N次重连打印一次日志
}
# 5. 优雅退出配置
SHUTDOWN_CONFIG
=
{
'thread_join_timeout'
:
10
,
# 等待线程结束的最大时间(秒)
'error_wait_time'
:
5
,
# 发生错误后等待时间(秒)
}
# ============================================================================
# ==================== 以下为代码实现区域 (无需修改) ========================
# ============================================================================
# 获取当前脚本的绝对路径
current_dir
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
__file__
))
...
...
@@ -22,17 +68,39 @@ except ModuleNotFoundError as e:
print
(
"尝试使用绝对路径导入"
)
from
预定系统
.
Base
.
Mqtt_Send
import
*
# 配置日志
# ========== 日志配置 ==========
# 创建日志目录(遵循项目规范:/var/log/scripts/)
LOG_DIR
=
LOG_CONFIG
[
'log_dir'
]
if
not
os
.
path
.
exists
(
LOG_DIR
):
try
:
os
.
makedirs
(
LOG_DIR
,
exist_ok
=
True
)
print
(
f
"已创建日志目录: {LOG_DIR}"
)
except
PermissionError
:
# Windows环境下使用当前目录作为备选
LOG_DIR
=
os
.
path
.
join
(
current_dir
,
LOG_CONFIG
[
'fallback_log_dir'
])
os
.
makedirs
(
LOG_DIR
,
exist_ok
=
True
)
print
(
f
"权限不足,使用备用日志目录: {LOG_DIR}"
)
# 生成日志文件名(包含时间戳)
log_filename
=
f
"mqtt_android_info_{datetime.now().strftime('
%
Y
%
m
%
d_
%
H
%
M
%
S')}.log"
log_filepath
=
os
.
path
.
join
(
LOG_DIR
,
log_filename
)
# 配置双通道日志输出(控制台 + 文件)
logging
.
basicConfig
(
level
=
logging
.
INFO
,
format
=
'
%(asctime)
s -
%(levelname)
s -
%(message)
s'
level
=
LOG_CONFIG
[
'log_level'
],
format
=
'
%(asctime)
s -
%(levelname)
s - [
%(threadName)
s] -
%(message)
s'
,
handlers
=
[
logging
.
StreamHandler
(),
# 控制台输出
logging
.
FileHandler
(
log_filepath
,
encoding
=
'utf-8'
)
# 文件输出
]
)
logger
=
logging
.
getLogger
(
__name__
)
logger
.
info
(
f
"日志文件路径: {log_filepath}"
)
# 获取当前脚本所在的目录
current_dir
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
__file__
))
print
(
"当前脚本所在的目录:"
,
current_dir
)
# 构建CSV文件的绝对路径
csv_file_path
=
os
.
path
.
join
(
current_dir
,
'../TestData/ReservationSystem_DoorScreen/MQTT心跳上报_100条.csv'
)
logger
.
info
(
f
"当前脚本所在的目录: {current_dir}"
)
class
StableMQTTClient
:
...
...
@@ -62,6 +130,18 @@ class StableMQTTClient:
# 初始化MQTT客户端对象(将在connect方法中实例化)
self
.
client
=
None
# 连接状态标记:用于避免重复打印连接成功日志
self
.
is_connected
=
False
# 重连计数器:统计重连次数
self
.
reconnect_count
=
0
# 最后重连日志时间:用于控制重连日志频率
self
.
last_reconnect_log_time
=
0
# RECONNECT_LOG_INTERVAL: 每N次重连才打印一次日志(避免日志刷屏)
self
.
RECONNECT_LOG_INTERVAL
=
LOG_CONFIG
[
'reconnect_log_interval'
]
# 自动尝试连接代理服务器
self
.
connect
()
...
...
@@ -87,17 +167,32 @@ class StableMQTTClient:
self
.
username
,
self
.
password
,
self
.
client_id
)
self
.
client
.
set_message_type
(
"json"
)
self
.
client
.
connect
()
logging
.
info
(
f
"连接成功,Client ID: {self.client_id}"
)
# 只在首次连接或重连成功后打印日志
if
not
self
.
is_connected
:
logger
.
info
(
f
"✅ 连接成功,Client ID: {self.client_id}"
)
self
.
is_connected
=
True
else
:
self
.
reconnect_count
+=
1
current_time
=
time
.
time
()
# 每隔N次重连才打印一次日志,避免日志刷屏
if
self
.
reconnect_count
%
self
.
RECONNECT_LOG_INTERVAL
==
1
or
\
(
current_time
-
self
.
last_reconnect_log_time
)
>
60
:
logger
.
info
(
f
"🔄 重连成功 (第{self.reconnect_count}次),Client ID: {self.client_id}"
)
self
.
last_reconnect_log_time
=
current_time
return
True
except
Exception
as
e
:
# 最后一次尝试失败时直接抛出异常
if
attempt
==
max_retries
-
1
:
logging
.
error
(
f
"连接失败 (尝试 {attempt + 1}/{max_retries}): {str(e)}"
)
logger
.
error
(
f
"❌ 连接失败 (尝试 {attempt + 1}/{max_retries}): {str(e)}"
)
self
.
is_connected
=
False
raise
# 非最后一次失败时等待递增时间后重试
wait_time
=
(
attempt
+
1
)
*
5
logg
ing
.
warning
(
f
"
连接失败,{wait_time}秒后重试... ({attempt + 1}/{max_retries})"
)
logg
er
.
warning
(
f
"⚠️
连接失败,{wait_time}秒后重试... ({attempt + 1}/{max_retries})"
)
time
.
sleep
(
wait_time
)
def
publish
(
self
,
topic
,
message
):
...
...
@@ -118,13 +213,16 @@ class StableMQTTClient:
self
.
client
.
publish
(
topic
,
message
)
except
Exception
as
e
:
# 发布失败时记录错误并尝试重新连接后重试
logg
ing
.
error
(
f
"
发布消息失败: {str(e)},尝试重新连接..."
)
logg
er
.
error
(
f
"❌
发布消息失败: {str(e)},尝试重新连接..."
)
self
.
connect
()
try
:
self
.
client
.
publish
(
topic
,
message
)
# 重试一次
except
Exception
as
retry_error
:
logger
.
error
(
f
"❌ 重试发布仍然失败: {str(retry_error)}"
)
# 工作线程函数
def
worker
(
mqtt_client
,
config_queue
,
interval
):
def
worker
(
mqtt_client
,
config_queue
,
interval
,
stop_event
):
"""MQTT消息发布工作线程
持续从配置队列中获取配置信息,构建MQTT消息并发布到指定主题。
...
...
@@ -134,49 +232,116 @@ def worker(mqtt_client, config_queue, interval):
mqtt_client: 已连接的MQTT客户端实例,用于发布消息
config_queue: 包含配置信息的队列,每个配置项应包含topic等必要字段
interval: 每次消息发布后的间隔时间(秒)
stop_event: 停止事件标志,用于优雅退出线程
"""
while
True
:
# 从队列获取配置信息
config
=
config_queue
.
get
()
thread_name
=
threading
.
current_thread
()
.
name
message_count
=
0
while
not
stop_event
.
is_set
():
try
:
# 从队列获取配置信息(带超时,便于响应停止信号)
try
:
config
=
config_queue
.
get
(
timeout
=
1
)
except
:
continue
# 构建并发布MQTT消息
topic
=
config
[
"topic"
]
current_time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
message
=
Mqtt
.
build_message
(
config
,
current_time
,
topic
)
mqtt_client
.
publish
(
topic
,
message
)
message_count
+=
1
# 每发送100条消息打印一次统计信息
if
message_count
%
100
==
0
:
logger
.
debug
(
f
"📊 [{thread_name}] 已发送 {message_count} 条消息"
)
time
.
sleep
(
interval
)
except
Exception
as
e
:
# 异常处理:记录错误日志并短暂等待
logg
ing
.
error
(
f
"线程 {threading.current_thread().
name} 发送消息失败: {e}"
)
time
.
sleep
(
5
)
# 出错后等待5秒
logg
er
.
error
(
f
"❌ 线程 {thread_
name} 发送消息失败: {e}"
)
time
.
sleep
(
SHUTDOWN_CONFIG
[
'error_wait_time'
])
# 出错后等待
finally
:
# 标记队列任务完成
try
:
config_queue
.
task_done
()
except
:
pass
logger
.
info
(
f
"🛑 [{thread_name}] 线程已停止,共发送 {message_count} 条消息"
)
# 全局停止事件
stop_event
=
threading
.
Event
()
def
signal_handler
(
sig
,
frame
):
"""处理Ctrl+C信号,优雅退出"""
logger
.
info
(
"
\n
🛑 接收到中断信号,正在优雅退出..."
)
stop_event
.
set
()
if
__name__
==
"__main__"
:
# 读取配置文件
configs
=
Mqtt
.
read_config_from_csv
(
csv_file_path
)
broker_address
=
"192.168.5.235"
username
=
"mqtt@cmdb"
password
=
"mqtt@webpassw0RD"
port
=
1883
num_threads
=
100
# 线程数量
# 注册信号处理器
signal
.
signal
(
signal
.
SIGINT
,
signal_handler
)
signal
.
signal
(
signal
.
SIGTERM
,
signal_handler
)
# 合并所有CSV配置
configs
=
[]
for
csv_file_relative_path
in
CSV_FILES
:
csv_file_path
=
os
.
path
.
join
(
current_dir
,
csv_file_relative_path
)
try
:
file_configs
=
Mqtt
.
read_config_from_csv
(
csv_file_path
)
configs
.
extend
(
file_configs
)
logger
.
info
(
f
"📄 从 {csv_file_path} 读取了 {len(file_configs)} 条配置"
)
except
Exception
as
e
:
logger
.
error
(
f
"❌ 读取 {csv_file_path} 失败: {e}"
)
if
not
configs
:
logger
.
error
(
"❌ 未读取到任何配置,程序退出"
)
sys
.
exit
(
1
)
logger
.
info
(
f
"📊 总共加载 {len(configs)} 条配置"
)
# 统计不同类型配置数量
topic_stats
=
{}
for
config
in
configs
:
topic
=
config
.
get
(
"topic"
,
"unknown"
)
topic_stats
[
topic
]
=
topic_stats
.
get
(
topic
,
0
)
+
1
logger
.
info
(
f
"📈 配置分布: {topic_stats}"
)
num_threads
=
min
(
len
(
configs
),
THREAD_CONFIG
[
'max_threads'
])
# 线程数不超过配置数
# 创建配置队列
config_queue
=
Queue
()
# 创建稳定的MQTT客户端列表
mqtt_clients
=
[]
failed_clients
=
0
for
i
,
config
in
enumerate
(
configs
):
client_id
=
config
.
get
(
"clientId"
,
f
"python_client_{i}"
)
try
:
mqtt_client
=
StableMQTTClient
(
broker_address
,
port
,
username
,
password
,
client_id
)
mqtt_client
=
StableMQTTClient
(
MQTT_CONFIG
[
'broker_address'
],
MQTT_CONFIG
[
'port'
],
MQTT_CONFIG
[
'username'
],
MQTT_CONFIG
[
'password'
],
client_id
)
mqtt_clients
.
append
(
mqtt_client
)
except
Exception
as
e
:
logging
.
error
(
f
"创建客户端 {client_id} 失败: {str(e)}"
)
logger
.
error
(
f
"❌ 创建客户端 {client_id} 失败: {str(e)}"
)
failed_clients
+=
1
if
failed_clients
>
0
:
logger
.
warning
(
f
"⚠️ 共有 {failed_clients} 个客户端创建失败"
)
if
not
mqtt_clients
:
logger
.
error
(
"❌ 没有可用的MQTT客户端,程序退出"
)
sys
.
exit
(
1
)
try
:
# 创建工作线程
...
...
@@ -184,39 +349,64 @@ if __name__ == "__main__":
for
i
in
range
(
num_threads
):
t
=
threading
.
Thread
(
target
=
worker
,
args
=
(
mqtt_clients
[
i
%
len
(
mqtt_clients
)],
config_queue
,
1
),
args
=
(
mqtt_clients
[
i
%
len
(
mqtt_clients
)],
config_queue
,
THREAD_CONFIG
[
'send_interval'
],
stop_event
),
name
=
f
"Worker-{i + 1}"
,
daemon
=
True
daemon
=
False
# 改为非守护线程,便于优雅退出
)
t
.
start
()
threads
.
append
(
t
)
time
.
sleep
(
0.1
)
# 避免同时启动太多线程
time
.
sleep
(
THREAD_CONFIG
[
'startup_delay'
])
# 线程启动间隔
# 主循环 - 持续运行
logging
.
info
(
"系统已启动,将持续运行..."
)
while
True
:
logger
.
info
(
"🚀 系统已启动,将持续运行... (按 Ctrl+C 停止)"
)
while
not
stop_event
.
is_set
():
try
:
# 将配置放入队列
for
config
in
configs
:
if
stop_event
.
is_set
():
break
config_queue
.
put
(
config
)
config_queue
.
join
()
# 等待所有任务完成
# 等待所有任务完成或收到停止信号
while
not
config_queue
.
empty
()
and
not
stop_event
.
is_set
():
time
.
sleep
(
0.1
)
if
not
stop_event
.
is_set
():
time
.
sleep
(
1
)
except
KeyboardInterrupt
:
logging
.
info
(
"接收到中断信号,准备退出..."
)
break
except
Exception
as
e
:
logg
ing
.
error
(
f
"
主循环发生错误: {e}"
,
exc_info
=
True
)
time
.
sleep
(
5
)
# 出错后等待5秒
logg
er
.
error
(
f
"❌
主循环发生错误: {e}"
,
exc_info
=
True
)
time
.
sleep
(
SHUTDOWN_CONFIG
[
'error_wait_time'
])
# 出错后等待
except
Exception
as
e
:
logg
ing
.
error
(
f
"
发生错误: {e}"
,
exc_info
=
True
)
logg
er
.
error
(
f
"❌
发生错误: {e}"
,
exc_info
=
True
)
finally
:
logging
.
info
(
"正在关闭所有连接..."
)
logger
.
info
(
"🛑 正在关闭所有连接..."
)
# 设置停止事件
stop_event
.
set
()
# 等待所有线程结束
for
t
in
threads
:
t
.
join
(
timeout
=
SHUTDOWN_CONFIG
[
'thread_join_timeout'
])
# 断开所有MQTT连接
success_count
=
0
fail_count
=
0
for
client
in
mqtt_clients
:
try
:
client
.
client
.
disconnect
()
except
:
pass
success_count
+=
1
except
Exception
as
e
:
fail_count
+=
1
logger
.
debug
(
f
"断开连接失败: {str(e)}"
)
logger
.
info
(
f
"✅ 已断开 {success_count} 个连接,{fail_count} 个失败"
)
logger
.
info
(
f
"📝 日志文件保存在: {log_filepath}"
)
logger
.
info
(
"👋 程序已退出"
)
Mqtt_Universal_Tool/ReservationSystem_DoorScreen/Android_Information.py
0 → 100644
浏览文件 @
96a6f57e
from
hytest
import
*
import
os
import
sys
import
json
import
logging
import
threading
import
time
from
datetime
import
datetime
from
queue
import
Queue
import
signal
# ============================================================================
# ==================== 配置区域 (修改这里即可自定义行为) ====================
# ============================================================================
# 1. CSV配置文件路径列表 (支持多个文件,同时加载)
# 注意:路径可以是相对于当前脚本的路径,也可以是绝对路径
CSV_FILES
=
[
'../TestData/ReservationSystem_DoorScreen/MQTT心跳上报_100条.csv'
,
#'../TestData/ReservationSystem_DoorScreen/MQTT信息上报_100条.csv',
'../TestData/ReservationSystem_DoorScreen/MQTT设备信息上报_100条.csv'
,
# 新增:设备信息上报
]
# 2. MQTT服务器连接配置
MQTT_CONFIG
=
{
'broker_address'
:
'192.168.5.50'
,
# MQTT服务器地址
'port'
:
1883
,
# 端口号
'username'
:
'mqtt@cmdb'
,
# 用户名
'password'
:
'mqtt@webpassw0RD'
,
# 密码
}
# 3. 线程和发送控制
THREAD_CONFIG
=
{
'max_threads'
:
100
,
# 最大线程数
'send_interval'
:
5
,
# 每条消息发送间隔(秒)
'startup_delay'
:
0.05
,
# 线程启动间隔(秒),避免同时启动
}
# 4. 日志配置
LOG_CONFIG
=
{
'log_dir'
:
'/var/log/scripts'
,
# Linux日志目录
'fallback_log_dir'
:
'logs'
,
# Windows备用日志目录
'log_level'
:
logging
.
INFO
,
# 日志级别: DEBUG/INFO/WARNING/ERROR
'reconnect_log_interval'
:
10
,
# 每N次重连打印一次日志
}
# 5. 优雅退出配置
SHUTDOWN_CONFIG
=
{
'thread_join_timeout'
:
10
,
# 等待线程结束的最大时间(秒)
'error_wait_time'
:
5
,
# 发生错误后等待时间(秒)
}
# ============================================================================
# ==================== 以下为代码实现区域 (无需修改) ========================
# ============================================================================
# 获取当前脚本的绝对路径
current_dir
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
__file__
))
# 构建预定系统的绝对路径
预定系统
_path
=
os
.
path
.
abspath
(
os
.
path
.
join
(
current_dir
,
'..'
,
'..'
,
'..'
))
# 添加路径
sys
.
path
.
append
(
预定系统
_path
)
# 导入模块
try
:
from
预定系统
.
Base
.
Mqtt_Send
import
*
except
ModuleNotFoundError
as
e
:
print
(
f
"ModuleNotFoundError: {e}"
)
print
(
"尝试使用绝对路径导入"
)
from
预定系统
.
Base
.
Mqtt_Send
import
*
# ========== 日志配置 ==========
# 创建日志目录(遵循项目规范:/var/log/scripts/)
LOG_DIR
=
LOG_CONFIG
[
'log_dir'
]
if
not
os
.
path
.
exists
(
LOG_DIR
):
try
:
os
.
makedirs
(
LOG_DIR
,
exist_ok
=
True
)
print
(
f
"已创建日志目录: {LOG_DIR}"
)
except
PermissionError
:
# Windows环境下使用当前目录作为备选
LOG_DIR
=
os
.
path
.
join
(
current_dir
,
LOG_CONFIG
[
'fallback_log_dir'
])
os
.
makedirs
(
LOG_DIR
,
exist_ok
=
True
)
print
(
f
"权限不足,使用备用日志目录: {LOG_DIR}"
)
# 生成日志文件名(包含时间戳)
log_filename
=
f
"mqtt_android_info_{datetime.now().strftime('
%
Y
%
m
%
d_
%
H
%
M
%
S')}.log"
log_filepath
=
os
.
path
.
join
(
LOG_DIR
,
log_filename
)
# 配置双通道日志输出(控制台 + 文件)
logging
.
basicConfig
(
level
=
LOG_CONFIG
[
'log_level'
],
format
=
'
%(asctime)
s -
%(levelname)
s - [
%(threadName)
s] -
%(message)
s'
,
handlers
=
[
logging
.
StreamHandler
(),
# 控制台输出
logging
.
FileHandler
(
log_filepath
,
encoding
=
'utf-8'
)
# 文件输出
]
)
logger
=
logging
.
getLogger
(
__name__
)
logger
.
info
(
f
"日志文件路径: {log_filepath}"
)
# 获取当前脚本所在的目录
current_dir
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
__file__
))
logger
.
info
(
f
"当前脚本所在的目录: {current_dir}"
)
class
StableMQTTClient
:
def
__init__
(
self
,
broker_address
,
port
,
username
,
password
,
client_id
):
"""
初始化MQTT客户端实例
参数:
broker_address (str): MQTT代理服务器的地址/IP
port (int): MQTT代理服务器的端口号
username (str): 连接代理服务器的用户名
password (str): 连接代理服务器的密码
client_id (str): 客户端的唯一标识符
功能:
1. 保存连接参数
2. 初始化客户端对象为None
3. 自动尝试连接代理服务器
"""
# 保存MQTT连接参数
self
.
broker_address
=
broker_address
# 代理服务器地址
self
.
port
=
port
# 端口号
self
.
username
=
username
# 用户名
self
.
password
=
password
# 密码
self
.
client_id
=
client_id
# 客户端ID
# 初始化MQTT客户端对象(将在connect方法中实例化)
self
.
client
=
None
# 连接状态标记:用于避免重复打印连接成功日志
self
.
is_connected
=
False
# 重连计数器:统计重连次数
self
.
reconnect_count
=
0
# 最后重连日志时间:用于控制重连日志频率
self
.
last_reconnect_log_time
=
0
# RECONNECT_LOG_INTERVAL: 每N次重连才打印一次日志(避免日志刷屏)
self
.
RECONNECT_LOG_INTERVAL
=
LOG_CONFIG
[
'reconnect_log_interval'
]
# 自动尝试连接代理服务器
self
.
connect
()
def
connect
(
self
):
"""
尝试连接到MQTT broker,最多重试3次。
每次连接失败后会等待递增的时间后重试(5秒、10秒、15秒)。
如果所有尝试都失败,则抛出最后的异常并记录错误日志。
连接成功时会记录成功日志并返回True。
Returns:
bool: 连接成功返回True,否则抛出异常。
Raises:
Exception: 当所有重试尝试都失败时,抛出最后一次连接尝试的异常。
"""
max_retries
=
3
for
attempt
in
range
(
max_retries
):
try
:
# 创建MQTT客户端并尝试连接
self
.
client
=
Mqtt
(
self
.
broker_address
,
self
.
port
,
self
.
username
,
self
.
password
,
self
.
client_id
)
self
.
client
.
set_message_type
(
"json"
)
self
.
client
.
connect
()
# 只在首次连接或重连成功后打印日志
if
not
self
.
is_connected
:
logger
.
info
(
f
"✅ 连接成功,Client ID: {self.client_id}"
)
self
.
is_connected
=
True
else
:
self
.
reconnect_count
+=
1
current_time
=
time
.
time
()
# 每隔N次重连才打印一次日志,避免日志刷屏
if
self
.
reconnect_count
%
self
.
RECONNECT_LOG_INTERVAL
==
1
or
\
(
current_time
-
self
.
last_reconnect_log_time
)
>
60
:
logger
.
info
(
f
"🔄 重连成功 (第{self.reconnect_count}次),Client ID: {self.client_id}"
)
self
.
last_reconnect_log_time
=
current_time
return
True
except
Exception
as
e
:
# 最后一次尝试失败时直接抛出异常
if
attempt
==
max_retries
-
1
:
logger
.
error
(
f
"❌ 连接失败 (尝试 {attempt + 1}/{max_retries}): {str(e)}"
)
self
.
is_connected
=
False
raise
# 非最后一次失败时等待递增时间后重试
wait_time
=
(
attempt
+
1
)
*
5
logger
.
warning
(
f
"⚠️ 连接失败,{wait_time}秒后重试... ({attempt + 1}/{max_retries})"
)
time
.
sleep
(
wait_time
)
def
publish
(
self
,
topic
,
message
):
"""
发布消息到指定主题。
如果发布失败,将自动尝试重新连接并重试一次发布操作。
参数:
topic (str): 要发布消息的主题名称
message (str): 要发布的消息内容
异常:
如果重试后仍然失败,将通过logging记录错误但不会抛出异常
"""
try
:
# 尝试发布消息
self
.
client
.
publish
(
topic
,
message
)
except
Exception
as
e
:
# 发布失败时记录错误并尝试重新连接后重试
logger
.
error
(
f
"❌ 发布消息失败: {str(e)},尝试重新连接..."
)
self
.
connect
()
try
:
self
.
client
.
publish
(
topic
,
message
)
# 重试一次
except
Exception
as
retry_error
:
logger
.
error
(
f
"❌ 重试发布仍然失败: {str(retry_error)}"
)
# 工作线程函数
def
worker
(
mqtt_client
,
config_queue
,
interval
,
stop_event
):
"""MQTT消息发布工作线程
持续从配置队列中获取配置信息,构建MQTT消息并发布到指定主题。
该线程会循环运行直到被外部中断。
Args:
mqtt_client: 已连接的MQTT客户端实例,用于发布消息
config_queue: 包含配置信息的队列,每个配置项应包含topic等必要字段
interval: 每次消息发布后的间隔时间(秒)
stop_event: 停止事件标志,用于优雅退出线程
"""
thread_name
=
threading
.
current_thread
()
.
name
message_count
=
0
while
not
stop_event
.
is_set
():
try
:
# 从队列获取配置信息(带超时,便于响应停止信号)
try
:
config
=
config_queue
.
get
(
timeout
=
1
)
except
:
continue
# 构建并发布MQTT消息
topic
=
config
[
"topic"
]
current_time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
message
=
Mqtt
.
build_message
(
config
,
current_time
,
topic
)
mqtt_client
.
publish
(
topic
,
message
)
message_count
+=
1
# 每发送100条消息打印一次统计信息
if
message_count
%
100
==
0
:
logger
.
debug
(
f
"📊 [{thread_name}] 已发送 {message_count} 条消息"
)
time
.
sleep
(
interval
)
except
Exception
as
e
:
# 异常处理:记录错误日志并短暂等待
logger
.
error
(
f
"❌ 线程 {thread_name} 发送消息失败: {e}"
)
time
.
sleep
(
SHUTDOWN_CONFIG
[
'error_wait_time'
])
# 出错后等待
finally
:
# 标记队列任务完成
try
:
config_queue
.
task_done
()
except
:
pass
logger
.
info
(
f
"🛑 [{thread_name}] 线程已停止,共发送 {message_count} 条消息"
)
# 全局停止事件
stop_event
=
threading
.
Event
()
def
signal_handler
(
sig
,
frame
):
"""处理Ctrl+C信号,优雅退出"""
logger
.
info
(
"
\n
🛑 接收到中断信号,正在优雅退出..."
)
stop_event
.
set
()
if
__name__
==
"__main__"
:
# 注册信号处理器
signal
.
signal
(
signal
.
SIGINT
,
signal_handler
)
signal
.
signal
(
signal
.
SIGTERM
,
signal_handler
)
# 合并所有CSV配置
configs
=
[]
for
csv_file_relative_path
in
CSV_FILES
:
csv_file_path
=
os
.
path
.
join
(
current_dir
,
csv_file_relative_path
)
try
:
file_configs
=
Mqtt
.
read_config_from_csv
(
csv_file_path
)
configs
.
extend
(
file_configs
)
logger
.
info
(
f
"📄 从 {csv_file_path} 读取了 {len(file_configs)} 条配置"
)
except
Exception
as
e
:
logger
.
error
(
f
"❌ 读取 {csv_file_path} 失败: {e}"
)
if
not
configs
:
logger
.
error
(
"❌ 未读取到任何配置,程序退出"
)
sys
.
exit
(
1
)
logger
.
info
(
f
"📊 总共加载 {len(configs)} 条配置"
)
# 统计不同类型配置数量
topic_stats
=
{}
for
config
in
configs
:
topic
=
config
.
get
(
"topic"
,
"unknown"
)
topic_stats
[
topic
]
=
topic_stats
.
get
(
topic
,
0
)
+
1
logger
.
info
(
f
"📈 配置分布: {topic_stats}"
)
num_threads
=
min
(
len
(
configs
),
THREAD_CONFIG
[
'max_threads'
])
# 线程数不超过配置数
# 创建配置队列
config_queue
=
Queue
()
# 创建稳定的MQTT客户端列表
mqtt_clients
=
[]
failed_clients
=
0
for
i
,
config
in
enumerate
(
configs
):
client_id
=
config
.
get
(
"clientId"
,
f
"python_client_{i}"
)
try
:
mqtt_client
=
StableMQTTClient
(
MQTT_CONFIG
[
'broker_address'
],
MQTT_CONFIG
[
'port'
],
MQTT_CONFIG
[
'username'
],
MQTT_CONFIG
[
'password'
],
client_id
)
mqtt_clients
.
append
(
mqtt_client
)
except
Exception
as
e
:
logger
.
error
(
f
"❌ 创建客户端 {client_id} 失败: {str(e)}"
)
failed_clients
+=
1
if
failed_clients
>
0
:
logger
.
warning
(
f
"⚠️ 共有 {failed_clients} 个客户端创建失败"
)
if
not
mqtt_clients
:
logger
.
error
(
"❌ 没有可用的MQTT客户端,程序退出"
)
sys
.
exit
(
1
)
try
:
# 创建工作线程
threads
=
[]
for
i
in
range
(
num_threads
):
t
=
threading
.
Thread
(
target
=
worker
,
args
=
(
mqtt_clients
[
i
%
len
(
mqtt_clients
)],
config_queue
,
THREAD_CONFIG
[
'send_interval'
],
stop_event
),
name
=
f
"Worker-{i + 1}"
,
daemon
=
False
# 改为非守护线程,便于优雅退出
)
t
.
start
()
threads
.
append
(
t
)
time
.
sleep
(
THREAD_CONFIG
[
'startup_delay'
])
# 线程启动间隔
# 主循环 - 持续运行
logger
.
info
(
"🚀 系统已启动,将持续运行... (按 Ctrl+C 停止)"
)
while
not
stop_event
.
is_set
():
try
:
# 将配置放入队列
for
config
in
configs
:
if
stop_event
.
is_set
():
break
config_queue
.
put
(
config
)
# 等待所有任务完成或收到停止信号
while
not
config_queue
.
empty
()
and
not
stop_event
.
is_set
():
time
.
sleep
(
0.1
)
if
not
stop_event
.
is_set
():
time
.
sleep
(
1
)
except
Exception
as
e
:
logger
.
error
(
f
"❌ 主循环发生错误: {e}"
,
exc_info
=
True
)
time
.
sleep
(
SHUTDOWN_CONFIG
[
'error_wait_time'
])
# 出错后等待
except
Exception
as
e
:
logger
.
error
(
f
"❌ 发生错误: {e}"
,
exc_info
=
True
)
finally
:
logger
.
info
(
"🛑 正在关闭所有连接..."
)
# 设置停止事件
stop_event
.
set
()
# 等待所有线程结束
for
t
in
threads
:
t
.
join
(
timeout
=
SHUTDOWN_CONFIG
[
'thread_join_timeout'
])
# 断开所有MQTT连接
success_count
=
0
fail_count
=
0
for
client
in
mqtt_clients
:
try
:
client
.
client
.
disconnect
()
success_count
+=
1
except
Exception
as
e
:
fail_count
+=
1
logger
.
debug
(
f
"断开连接失败: {str(e)}"
)
logger
.
info
(
f
"✅ 已断开 {success_count} 个连接,{fail_count} 个失败"
)
logger
.
info
(
f
"📝 日志文件保存在: {log_filepath}"
)
logger
.
info
(
"👋 程序已退出"
)
Mqtt_Universal_Tool/ReservationSystem_DoorScreen/安卓信息-消息监听.py
浏览文件 @
96a6f57e
...
...
@@ -17,7 +17,7 @@ def on_message(client, userdata, msg):
if
__name__
==
"__main__"
:
# 5.218测试环境 192.168.5.218 1883
broker_address
=
"192.168.5.
218
"
broker_address
=
"192.168.5.
50
"
username
=
"mqtt@cmdb"
# 你的MQTT用户名
password
=
"mqtt@webpassw0RD"
# 你的MQTT密码
port
=
1883
...
...
Mqtt_Universal_Tool/TestData/ReservationSystem_DoorScreen/MQTT安卓上报_100条.csv
deleted
100644 → 0
浏览文件 @
2ce1d66e
topic,clientId,appToken,companyNumber,cnum,conferenceId,macAddress,authCode,clientId,deviceId
rebootResponseTopic,48134e6047a19a0001,AND-518-0001,CN-518-UBAINS,,101,20:59:20:00:28:01,AND-518-0001,48134e6047a19a0001,aa44e258a4e1e0001
rebootResponseTopic,48134e6047a19a0002,AND-518-0002,CN-518-UBAINS,,102,20:59:20:00:28:01,AND-518-0002,48134e6047a19a0002,aa44e258a4e1e0002
rebootResponseTopic,48134e6047a19a0003,AND-518-0003,CN-518-UBAINS,,103,20:59:20:00:28:01,AND-518-0003,48134e6047a19a0003,aa44e258a4e1e0003
rebootResponseTopic,48134e6047a19a0004,AND-518-0004,CN-518-UBAINS,,104,20:59:20:00:28:01,AND-518-0004,48134e6047a19a0004,aa44e258a4e1e0004
rebootResponseTopic,48134e6047a19a0005,AND-518-0005,CN-518-UBAINS,,105,20:59:20:00:28:01,AND-518-0005,48134e6047a19a0005,aa44e258a4e1e0005
rebootResponseTopic,48134e6047a19a0006,AND-518-0006,CN-518-UBAINS,,106,20:59:20:00:28:01,AND-518-0006,48134e6047a19a0006,aa44e258a4e1e0006
rebootResponseTopic,48134e6047a19a0007,AND-518-0007,CN-518-UBAINS,,107,20:59:20:00:28:01,AND-518-0007,48134e6047a19a0007,aa44e258a4e1e0007
rebootResponseTopic,48134e6047a19a0008,AND-518-0008,CN-518-UBAINS,,108,20:59:20:00:28:01,AND-518-0008,48134e6047a19a0008,aa44e258a4e1e0008
rebootResponseTopic,48134e6047a19a0009,AND-518-0009,CN-518-UBAINS,,109,20:59:20:00:28:01,AND-518-0009,48134e6047a19a0009,aa44e258a4e1e0009
rebootResponseTopic,48134e6047a19a0010,AND-518-0010,CN-518-UBAINS,,110,20:59:20:00:28:01,AND-518-0010,48134e6047a19a0010,aa44e258a4e1e0010
rebootResponseTopic,48134e6047a19a0011,AND-518-0011,CN-518-UBAINS,,111,20:59:20:00:28:01,AND-518-0011,48134e6047a19a0011,aa44e258a4e1e0011
rebootResponseTopic,48134e6047a19a0012,AND-518-0012,CN-518-UBAINS,,112,20:59:20:00:28:01,AND-518-0012,48134e6047a19a0012,aa44e258a4e1e0012
rebootResponseTopic,48134e6047a19a0013,AND-518-0013,CN-518-UBAINS,,113,20:59:20:00:28:01,AND-518-0013,48134e6047a19a0013,aa44e258a4e1e0013
rebootResponseTopic,48134e6047a19a0014,AND-518-0014,CN-518-UBAINS,,114,20:59:20:00:28:01,AND-518-0014,48134e6047a19a0014,aa44e258a4e1e0014
rebootResponseTopic,48134e6047a19a0015,AND-518-0015,CN-518-UBAINS,,115,20:59:20:00:28:01,AND-518-0015,48134e6047a19a0015,aa44e258a4e1e0015
rebootResponseTopic,48134e6047a19a0016,AND-518-0016,CN-518-UBAINS,,116,20:59:20:00:28:01,AND-518-0016,48134e6047a19a0016,aa44e258a4e1e0016
rebootResponseTopic,48134e6047a19a0017,AND-518-0017,CN-518-UBAINS,,117,20:59:20:00:28:01,AND-518-0017,48134e6047a19a0017,aa44e258a4e1e0017
rebootResponseTopic,48134e6047a19a0018,AND-518-0018,CN-518-UBAINS,,118,20:59:20:00:28:01,AND-518-0018,48134e6047a19a0018,aa44e258a4e1e0018
rebootResponseTopic,48134e6047a19a0019,AND-518-0019,CN-518-UBAINS,,119,20:59:20:00:28:01,AND-518-0019,48134e6047a19a0019,aa44e258a4e1e0019
rebootResponseTopic,48134e6047a19a0020,AND-518-0020,CN-518-UBAINS,,120,20:59:20:00:28:01,AND-518-0020,48134e6047a19a0020,aa44e258a4e1e0020
rebootResponseTopic,48134e6047a19a0021,AND-518-0021,CN-518-UBAINS,,121,20:59:20:00:28:01,AND-518-0021,48134e6047a19a0021,aa44e258a4e1e0021
rebootResponseTopic,48134e6047a19a0022,AND-518-0022,CN-518-UBAINS,,122,20:59:20:00:28:01,AND-518-0022,48134e6047a19a0022,aa44e258a4e1e0022
rebootResponseTopic,48134e6047a19a0023,AND-518-0023,CN-518-UBAINS,,123,20:59:20:00:28:01,AND-518-0023,48134e6047a19a0023,aa44e258a4e1e0023
rebootResponseTopic,48134e6047a19a0024,AND-518-0024,CN-518-UBAINS,,124,20:59:20:00:28:01,AND-518-0024,48134e6047a19a0024,aa44e258a4e1e0024
rebootResponseTopic,48134e6047a19a0025,AND-518-0025,CN-518-UBAINS,,125,20:59:20:00:28:01,AND-518-0025,48134e6047a19a0025,aa44e258a4e1e0025
rebootResponseTopic,48134e6047a19a0026,AND-518-0026,CN-518-UBAINS,,126,20:59:20:00:28:01,AND-518-0026,48134e6047a19a0026,aa44e258a4e1e0026
rebootResponseTopic,48134e6047a19a0027,AND-518-0027,CN-518-UBAINS,,127,20:59:20:00:28:01,AND-518-0027,48134e6047a19a0027,aa44e258a4e1e0027
rebootResponseTopic,48134e6047a19a0028,AND-518-0028,CN-518-UBAINS,,128,20:59:20:00:28:01,AND-518-0028,48134e6047a19a0028,aa44e258a4e1e0028
rebootResponseTopic,48134e6047a19a0029,AND-518-0029,CN-518-UBAINS,,129,20:59:20:00:28:01,AND-518-0029,48134e6047a19a0029,aa44e258a4e1e0029
rebootResponseTopic,48134e6047a19a0030,AND-518-0030,CN-518-UBAINS,,130,20:59:20:00:28:01,AND-518-0030,48134e6047a19a0030,aa44e258a4e1e0030
rebootResponseTopic,48134e6047a19a0031,AND-518-0031,CN-518-UBAINS,,131,20:59:20:00:28:01,AND-518-0031,48134e6047a19a0031,aa44e258a4e1e0031
rebootResponseTopic,48134e6047a19a0032,AND-518-0032,CN-518-UBAINS,,132,20:59:20:00:28:01,AND-518-0032,48134e6047a19a0032,aa44e258a4e1e0032
rebootResponseTopic,48134e6047a19a0033,AND-518-0033,CN-518-UBAINS,,133,20:59:20:00:28:01,AND-518-0033,48134e6047a19a0033,aa44e258a4e1e0033
rebootResponseTopic,48134e6047a19a0034,AND-518-0034,CN-518-UBAINS,,134,20:59:20:00:28:01,AND-518-0034,48134e6047a19a0034,aa44e258a4e1e0034
rebootResponseTopic,48134e6047a19a0035,AND-518-0035,CN-518-UBAINS,,135,20:59:20:00:28:01,AND-518-0035,48134e6047a19a0035,aa44e258a4e1e0035
rebootResponseTopic,48134e6047a19a0036,AND-518-0036,CN-518-UBAINS,,136,20:59:20:00:28:01,AND-518-0036,48134e6047a19a0036,aa44e258a4e1e0036
rebootResponseTopic,48134e6047a19a0037,AND-518-0037,CN-518-UBAINS,,137,20:59:20:00:28:01,AND-518-0037,48134e6047a19a0037,aa44e258a4e1e0037
rebootResponseTopic,48134e6047a19a0038,AND-518-0038,CN-518-UBAINS,,138,20:59:20:00:28:01,AND-518-0038,48134e6047a19a0038,aa44e258a4e1e0038
rebootResponseTopic,48134e6047a19a0039,AND-518-0039,CN-518-UBAINS,,139,20:59:20:00:28:01,AND-518-0039,48134e6047a19a0039,aa44e258a4e1e0039
rebootResponseTopic,48134e6047a19a0040,AND-518-0040,CN-518-UBAINS,,140,20:59:20:00:28:01,AND-518-0040,48134e6047a19a0040,aa44e258a4e1e0040
rebootResponseTopic,48134e6047a19a0041,AND-518-0041,CN-518-UBAINS,,141,20:59:20:00:28:01,AND-518-0041,48134e6047a19a0041,aa44e258a4e1e0041
rebootResponseTopic,48134e6047a19a0042,AND-518-0042,CN-518-UBAINS,,142,20:59:20:00:28:01,AND-518-0042,48134e6047a19a0042,aa44e258a4e1e0042
rebootResponseTopic,48134e6047a19a0043,AND-518-0043,CN-518-UBAINS,,143,20:59:20:00:28:01,AND-518-0043,48134e6047a19a0043,aa44e258a4e1e0043
rebootResponseTopic,48134e6047a19a0044,AND-518-0044,CN-518-UBAINS,,144,20:59:20:00:28:01,AND-518-0044,48134e6047a19a0044,aa44e258a4e1e0044
rebootResponseTopic,48134e6047a19a0045,AND-518-0045,CN-518-UBAINS,,145,20:59:20:00:28:01,AND-518-0045,48134e6047a19a0045,aa44e258a4e1e0045
rebootResponseTopic,48134e6047a19a0046,AND-518-0046,CN-518-UBAINS,,146,20:59:20:00:28:01,AND-518-0046,48134e6047a19a0046,aa44e258a4e1e0046
rebootResponseTopic,48134e6047a19a0047,AND-518-0047,CN-518-UBAINS,,147,20:59:20:00:28:01,AND-518-0047,48134e6047a19a0047,aa44e258a4e1e0047
rebootResponseTopic,48134e6047a19a0048,AND-518-0048,CN-518-UBAINS,,148,20:59:20:00:28:01,AND-518-0048,48134e6047a19a0048,aa44e258a4e1e0048
rebootResponseTopic,48134e6047a19a0049,AND-518-0049,CN-518-UBAINS,,149,20:59:20:00:28:01,AND-518-0049,48134e6047a19a0049,aa44e258a4e1e0049
rebootResponseTopic,48134e6047a19a0050,AND-518-0050,CN-518-UBAINS,,150,20:59:20:00:28:01,AND-518-0050,48134e6047a19a0050,aa44e258a4e1e0050
rebootResponseTopic,48134e6047a19a0051,AND-518-0051,CN-518-UBAINS,,151,20:59:20:00:28:01,AND-518-0051,48134e6047a19a0051,aa44e258a4e1e0051
rebootResponseTopic,48134e6047a19a0052,AND-518-0052,CN-518-UBAINS,,152,20:59:20:00:28:01,AND-518-0052,48134e6047a19a0052,aa44e258a4e1e0052
rebootResponseTopic,48134e6047a19a0053,AND-518-0053,CN-518-UBAINS,,153,20:59:20:00:28:01,AND-518-0053,48134e6047a19a0053,aa44e258a4e1e0053
rebootResponseTopic,48134e6047a19a0054,AND-518-0054,CN-518-UBAINS,,154,20:59:20:00:28:01,AND-518-0054,48134e6047a19a0054,aa44e258a4e1e0054
rebootResponseTopic,48134e6047a19a0055,AND-518-0055,CN-518-UBAINS,,155,20:59:20:00:28:01,AND-518-0055,48134e6047a19a0055,aa44e258a4e1e0055
rebootResponseTopic,48134e6047a19a0056,AND-518-0056,CN-518-UBAINS,,156,20:59:20:00:28:01,AND-518-0056,48134e6047a19a0056,aa44e258a4e1e0056
rebootResponseTopic,48134e6047a19a0057,AND-518-0057,CN-518-UBAINS,,157,20:59:20:00:28:01,AND-518-0057,48134e6047a19a0057,aa44e258a4e1e0057
rebootResponseTopic,48134e6047a19a0058,AND-518-0058,CN-518-UBAINS,,158,20:59:20:00:28:01,AND-518-0058,48134e6047a19a0058,aa44e258a4e1e0058
rebootResponseTopic,48134e6047a19a0059,AND-518-0059,CN-518-UBAINS,,159,20:59:20:00:28:01,AND-518-0059,48134e6047a19a0059,aa44e258a4e1e0059
rebootResponseTopic,48134e6047a19a0060,AND-518-0060,CN-518-UBAINS,,160,20:59:20:00:28:01,AND-518-0060,48134e6047a19a0060,aa44e258a4e1e0060
rebootResponseTopic,48134e6047a19a0061,AND-518-0061,CN-518-UBAINS,,161,20:59:20:00:28:01,AND-518-0061,48134e6047a19a0061,aa44e258a4e1e0061
rebootResponseTopic,48134e6047a19a0062,AND-518-0062,CN-518-UBAINS,,162,20:59:20:00:28:01,AND-518-0062,48134e6047a19a0062,aa44e258a4e1e0062
rebootResponseTopic,48134e6047a19a0063,AND-518-0063,CN-518-UBAINS,,163,20:59:20:00:28:01,AND-518-0063,48134e6047a19a0063,aa44e258a4e1e0063
rebootResponseTopic,48134e6047a19a0064,AND-518-0064,CN-518-UBAINS,,164,20:59:20:00:28:01,AND-518-0064,48134e6047a19a0064,aa44e258a4e1e0064
rebootResponseTopic,48134e6047a19a0065,AND-518-0065,CN-518-UBAINS,,165,20:59:20:00:28:01,AND-518-0065,48134e6047a19a0065,aa44e258a4e1e0065
rebootResponseTopic,48134e6047a19a0066,AND-518-0066,CN-518-UBAINS,,166,20:59:20:00:28:01,AND-518-0066,48134e6047a19a0066,aa44e258a4e1e0066
rebootResponseTopic,48134e6047a19a0067,AND-518-0067,CN-518-UBAINS,,167,20:59:20:00:28:01,AND-518-0067,48134e6047a19a0067,aa44e258a4e1e0067
rebootResponseTopic,48134e6047a19a0068,AND-518-0068,CN-518-UBAINS,,168,20:59:20:00:28:01,AND-518-0068,48134e6047a19a0068,aa44e258a4e1e0068
rebootResponseTopic,48134e6047a19a0069,AND-518-0069,CN-518-UBAINS,,169,20:59:20:00:28:01,AND-518-0069,48134e6047a19a0069,aa44e258a4e1e0069
rebootResponseTopic,48134e6047a19a0070,AND-518-0070,CN-518-UBAINS,,170,20:59:20:00:28:01,AND-518-0070,48134e6047a19a0070,aa44e258a4e1e0070
rebootResponseTopic,48134e6047a19a0071,AND-518-0071,CN-518-UBAINS,,171,20:59:20:00:28:01,AND-518-0071,48134e6047a19a0071,aa44e258a4e1e0071
rebootResponseTopic,48134e6047a19a0072,AND-518-0072,CN-518-UBAINS,,172,20:59:20:00:28:01,AND-518-0072,48134e6047a19a0072,aa44e258a4e1e0072
rebootResponseTopic,48134e6047a19a0073,AND-518-0073,CN-518-UBAINS,,173,20:59:20:00:28:01,AND-518-0073,48134e6047a19a0073,aa44e258a4e1e0073
rebootResponseTopic,48134e6047a19a0074,AND-518-0074,CN-518-UBAINS,,174,20:59:20:00:28:01,AND-518-0074,48134e6047a19a0074,aa44e258a4e1e0074
rebootResponseTopic,48134e6047a19a0075,AND-518-0075,CN-518-UBAINS,,175,20:59:20:00:28:01,AND-518-0075,48134e6047a19a0075,aa44e258a4e1e0075
rebootResponseTopic,48134e6047a19a0076,AND-518-0076,CN-518-UBAINS,,176,20:59:20:00:28:01,AND-518-0076,48134e6047a19a0076,aa44e258a4e1e0076
rebootResponseTopic,48134e6047a19a0077,AND-518-0077,CN-518-UBAINS,,177,20:59:20:00:28:01,AND-518-0077,48134e6047a19a0077,aa44e258a4e1e0077
rebootResponseTopic,48134e6047a19a0078,AND-518-0078,CN-518-UBAINS,,178,20:59:20:00:28:01,AND-518-0078,48134e6047a19a0078,aa44e258a4e1e0078
rebootResponseTopic,48134e6047a19a0079,AND-518-0079,CN-518-UBAINS,,179,20:59:20:00:28:01,AND-518-0079,48134e6047a19a0079,aa44e258a4e1e0079
rebootResponseTopic,48134e6047a19a0080,AND-518-0080,CN-518-UBAINS,,180,20:59:20:00:28:01,AND-518-0080,48134e6047a19a0080,aa44e258a4e1e0080
rebootResponseTopic,48134e6047a19a0081,AND-518-0081,CN-518-UBAINS,,181,20:59:20:00:28:01,AND-518-0081,48134e6047a19a0081,aa44e258a4e1e0081
rebootResponseTopic,48134e6047a19a0082,AND-518-0082,CN-518-UBAINS,,182,20:59:20:00:28:01,AND-518-0082,48134e6047a19a0082,aa44e258a4e1e0082
rebootResponseTopic,48134e6047a19a0083,AND-518-0083,CN-518-UBAINS,,183,20:59:20:00:28:01,AND-518-0083,48134e6047a19a0083,aa44e258a4e1e0083
rebootResponseTopic,48134e6047a19a0084,AND-518-0084,CN-518-UBAINS,,184,20:59:20:00:28:01,AND-518-0084,48134e6047a19a0084,aa44e258a4e1e0084
rebootResponseTopic,48134e6047a19a0085,AND-518-0085,CN-518-UBAINS,,185,20:59:20:00:28:01,AND-518-0085,48134e6047a19a0085,aa44e258a4e1e0085
rebootResponseTopic,48134e6047a19a0086,AND-518-0086,CN-518-UBAINS,,186,20:59:20:00:28:01,AND-518-0086,48134e6047a19a0086,aa44e258a4e1e0086
rebootResponseTopic,48134e6047a19a0087,AND-518-0087,CN-518-UBAINS,,187,20:59:20:00:28:01,AND-518-0087,48134e6047a19a0087,aa44e258a4e1e0087
rebootResponseTopic,48134e6047a19a0088,AND-518-0088,CN-518-UBAINS,,188,20:59:20:00:28:01,AND-518-0088,48134e6047a19a0088,aa44e258a4e1e0088
rebootResponseTopic,48134e6047a19a0089,AND-518-0089,CN-518-UBAINS,,189,20:59:20:00:28:01,AND-518-0089,48134e6047a19a0089,aa44e258a4e1e0089
rebootResponseTopic,48134e6047a19a0090,AND-518-0090,CN-518-UBAINS,,190,20:59:20:00:28:01,AND-518-0090,48134e6047a19a0090,aa44e258a4e1e0090
rebootResponseTopic,48134e6047a19a0091,AND-518-0091,CN-518-UBAINS,,191,20:59:20:00:28:01,AND-518-0091,48134e6047a19a0091,aa44e258a4e1e0091
rebootResponseTopic,48134e6047a19a0092,AND-518-0092,CN-518-UBAINS,,192,20:59:20:00:28:01,AND-518-0092,48134e6047a19a0092,aa44e258a4e1e0092
rebootResponseTopic,48134e6047a19a0093,AND-518-0093,CN-518-UBAINS,,193,20:59:20:00:28:01,AND-518-0093,48134e6047a19a0093,aa44e258a4e1e0093
rebootResponseTopic,48134e6047a19a0094,AND-518-0094,CN-518-UBAINS,,194,20:59:20:00:28:01,AND-518-0094,48134e6047a19a0094,aa44e258a4e1e0094
rebootResponseTopic,48134e6047a19a0095,AND-518-0095,CN-518-UBAINS,,195,20:59:20:00:28:01,AND-518-0095,48134e6047a19a0095,aa44e258a4e1e0095
rebootResponseTopic,48134e6047a19a0096,AND-518-0096,CN-518-UBAINS,,196,20:59:20:00:28:01,AND-518-0096,48134e6047a19a0096,aa44e258a4e1e0096
rebootResponseTopic,48134e6047a19a0097,AND-518-0097,CN-518-UBAINS,,197,20:59:20:00:28:01,AND-518-0097,48134e6047a19a0097,aa44e258a4e1e0097
rebootResponseTopic,48134e6047a19a0098,AND-518-0098,CN-518-UBAINS,,198,20:59:20:00:28:01,AND-518-0098,48134e6047a19a0098,aa44e258a4e1e0098
rebootResponseTopic,48134e6047a19a0099,AND-518-0099,CN-518-UBAINS,,199,20:59:20:00:28:01,AND-518-0099,48134e6047a19a0099,aa44e258a4e1e0099
rebootResponseTopic,48134e6047a19a0100,AND-518-0100,CN-518-UBAINS,,200,20:59:20:00:28:01,AND-518-0100,48134e6047a19a0100,aa44e258a4e1e0100
rebootResponseTopic,48134e6047a19a0101,AND-518-0101,CN-518-UBAINS,,201,20:59:20:00:28:01,AND-518-0101,48134e6047a19a0101,aa44e258a4e1e0101
\ No newline at end of file
Mqtt_Universal_Tool/TestData/ReservationSystem_DoorScreen/MQTT设备信息上报_100条.csv
0 → 100644
浏览文件 @
96a6f57e
topic,clientId,appToken,companyNumber,cnum,conferenceId,conferenceName,macAddress,ipAddress,deviceModel,networkType,battery,charging,resolution,romName,sdkVersionCode,sdkVersionName,appVersion,appVersionName,faceVersion,wgtVersion,abiList,appName,appPackageName,bluetoothEnabled,camerasCount,density,freeAndTotalMemory,internalAvailableSize,internalTotalSize,processCpuUsage,rooted,sysLanguage,sysSupportedSensors,buildConfig,faceBuildInfo
rebootResponseTopic,48134e6047a19a0001,AND-518-0001,CN-518-UBAINS,16,101,PGY-TestRoom-01,20:59:20:00:28:01,192.168.1.141,Pad10-Pro,NETWORK_WIFI,0.4,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,21.01%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0002,AND-518-0002,CN-518-UBAINS,16,102,PGY-TestRoom-02,20:59:20:00:28:01,192.168.1.142,Pad10-Pro,NETWORK_WIFI,0.5,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,22.02%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0003,AND-518-0003,CN-518-UBAINS,16,103,PGY-TestRoom-03,20:59:20:00:28:01,192.168.1.143,Pad10-Pro,NETWORK_WIFI,0.6,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,23.03%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0004,AND-518-0004,CN-518-UBAINS,16,104,PGY-TestRoom-04,20:59:20:00:28:01,192.168.1.144,Pad10-Pro,NETWORK_WIFI,0.7,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,24.04%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0005,AND-518-0005,CN-518-UBAINS,16,105,PGY-TestRoom-05,20:59:20:00:28:01,192.168.1.145,Pad10-Pro,NETWORK_WIFI,0.8,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,25.05%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0006,AND-518-0006,CN-518-UBAINS,16,106,PGY-TestRoom-06,20:59:20:00:28:01,192.168.1.146,Pad10-Pro,NETWORK_WIFI,0.9,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,26.06%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0007,AND-518-0007,CN-518-UBAINS,16,107,PGY-TestRoom-07,20:59:20:00:28:01,192.168.1.147,Pad10-Pro,NETWORK_WIFI,0.3,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,27.07%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0008,AND-518-0008,CN-518-UBAINS,16,108,PGY-TestRoom-08,20:59:20:00:28:01,192.168.1.148,Pad10-Pro,NETWORK_WIFI,0.4,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,28.08%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0009,AND-518-0009,CN-518-UBAINS,16,109,PGY-TestRoom-09,20:59:20:00:28:01,192.168.1.149,Pad10-Pro,NETWORK_WIFI,0.5,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,29.09%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0010,AND-518-0010,CN-518-UBAINS,16,110,PGY-TestRoom-10,20:59:20:00:28:01,192.168.1.150,Pad10-Pro,NETWORK_WIFI,0.6,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,30.00%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0011,AND-518-0011,CN-518-UBAINS,16,111,PGY-TestRoom-11,20:59:20:00:28:01,192.168.1.151,Pad10-Pro,NETWORK_WIFI,0.7,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,31.01%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0012,AND-518-0012,CN-518-UBAINS,16,112,PGY-TestRoom-12,20:59:20:00:28:01,192.168.1.152,Pad10-Pro,NETWORK_WIFI,0.8,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,32.02%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0013,AND-518-0013,CN-518-UBAINS,16,113,PGY-TestRoom-13,20:59:20:00:28:01,192.168.1.153,Pad10-Pro,NETWORK_WIFI,0.9,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,33.03%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0014,AND-518-0014,CN-518-UBAINS,16,114,PGY-TestRoom-14,20:59:20:00:28:01,192.168.1.154,Pad10-Pro,NETWORK_WIFI,0.3,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,34.04%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0015,AND-518-0015,CN-518-UBAINS,16,115,PGY-TestRoom-15,20:59:20:00:28:01,192.168.1.155,Pad10-Pro,NETWORK_WIFI,0.4,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,20.05%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0016,AND-518-0016,CN-518-UBAINS,16,116,PGY-TestRoom-16,20:59:20:00:28:01,192.168.1.156,Pad10-Pro,NETWORK_WIFI,0.5,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,21.06%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0017,AND-518-0017,CN-518-UBAINS,16,117,PGY-TestRoom-17,20:59:20:00:28:01,192.168.1.157,Pad10-Pro,NETWORK_WIFI,0.6,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,22.07%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0018,AND-518-0018,CN-518-UBAINS,16,118,PGY-TestRoom-18,20:59:20:00:28:01,192.168.1.158,Pad10-Pro,NETWORK_WIFI,0.7,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,23.08%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0019,AND-518-0019,CN-518-UBAINS,16,119,PGY-TestRoom-19,20:59:20:00:28:01,192.168.1.159,Pad10-Pro,NETWORK_WIFI,0.8,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,24.09%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0020,AND-518-0020,CN-518-UBAINS,16,120,PGY-TestRoom-20,20:59:20:00:28:01,192.168.1.160,Pad10-Pro,NETWORK_WIFI,0.9,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,25.00%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0021,AND-518-0021,CN-518-UBAINS,16,121,PGY-TestRoom-21,20:59:20:00:28:01,192.168.1.161,Pad10-Pro,NETWORK_WIFI,0.3,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,26.01%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0022,AND-518-0022,CN-518-UBAINS,16,122,PGY-TestRoom-22,20:59:20:00:28:01,192.168.1.162,Pad10-Pro,NETWORK_WIFI,0.4,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,27.02%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0023,AND-518-0023,CN-518-UBAINS,16,123,PGY-TestRoom-23,20:59:20:00:28:01,192.168.1.163,Pad10-Pro,NETWORK_WIFI,0.5,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,28.03%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0024,AND-518-0024,CN-518-UBAINS,16,124,PGY-TestRoom-24,20:59:20:00:28:01,192.168.1.164,Pad10-Pro,NETWORK_WIFI,0.6,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,29.04%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0025,AND-518-0025,CN-518-UBAINS,16,125,PGY-TestRoom-25,20:59:20:00:28:01,192.168.1.165,Pad10-Pro,NETWORK_WIFI,0.7,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,30.05%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0026,AND-518-0026,CN-518-UBAINS,16,126,PGY-TestRoom-26,20:59:20:00:28:01,192.168.1.166,Pad10-Pro,NETWORK_WIFI,0.8,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,31.06%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0027,AND-518-0027,CN-518-UBAINS,16,127,PGY-TestRoom-27,20:59:20:00:28:01,192.168.1.167,Pad10-Pro,NETWORK_WIFI,0.9,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,32.07%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0028,AND-518-0028,CN-518-UBAINS,16,128,PGY-TestRoom-28,20:59:20:00:28:01,192.168.1.168,Pad10-Pro,NETWORK_WIFI,0.3,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,33.08%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0029,AND-518-0029,CN-518-UBAINS,16,129,PGY-TestRoom-29,20:59:20:00:28:01,192.168.1.169,Pad10-Pro,NETWORK_WIFI,0.4,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,34.09%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0030,AND-518-0030,CN-518-UBAINS,16,130,PGY-TestRoom-30,20:59:20:00:28:01,192.168.1.170,Pad10-Pro,NETWORK_WIFI,0.5,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,20.00%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0031,AND-518-0031,CN-518-UBAINS,16,131,PGY-TestRoom-31,20:59:20:00:28:01,192.168.1.171,Pad10-Pro,NETWORK_WIFI,0.6,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,21.01%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0032,AND-518-0032,CN-518-UBAINS,16,132,PGY-TestRoom-32,20:59:20:00:28:01,192.168.1.172,Pad10-Pro,NETWORK_WIFI,0.7,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,22.02%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0033,AND-518-0033,CN-518-UBAINS,16,133,PGY-TestRoom-33,20:59:20:00:28:01,192.168.1.173,Pad10-Pro,NETWORK_WIFI,0.8,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,23.03%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0034,AND-518-0034,CN-518-UBAINS,16,134,PGY-TestRoom-34,20:59:20:00:28:01,192.168.1.174,Pad10-Pro,NETWORK_WIFI,0.9,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,24.04%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0035,AND-518-0035,CN-518-UBAINS,16,135,PGY-TestRoom-35,20:59:20:00:28:01,192.168.1.175,Pad10-Pro,NETWORK_WIFI,0.3,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,25.05%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0036,AND-518-0036,CN-518-UBAINS,16,136,PGY-TestRoom-36,20:59:20:00:28:01,192.168.1.176,Pad10-Pro,NETWORK_WIFI,0.4,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,26.06%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0037,AND-518-0037,CN-518-UBAINS,16,137,PGY-TestRoom-37,20:59:20:00:28:01,192.168.1.177,Pad10-Pro,NETWORK_WIFI,0.5,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,27.07%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0038,AND-518-0038,CN-518-UBAINS,16,138,PGY-TestRoom-38,20:59:20:00:28:01,192.168.1.178,Pad10-Pro,NETWORK_WIFI,0.6,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,28.08%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0039,AND-518-0039,CN-518-UBAINS,16,139,PGY-TestRoom-39,20:59:20:00:28:01,192.168.1.179,Pad10-Pro,NETWORK_WIFI,0.7,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,29.09%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0040,AND-518-0040,CN-518-UBAINS,16,140,PGY-TestRoom-40,20:59:20:00:28:01,192.168.1.180,Pad10-Pro,NETWORK_WIFI,0.8,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,30.00%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0041,AND-518-0041,CN-518-UBAINS,16,141,PGY-TestRoom-41,20:59:20:00:28:01,192.168.1.181,Pad10-Pro,NETWORK_WIFI,0.9,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,31.01%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0042,AND-518-0042,CN-518-UBAINS,16,142,PGY-TestRoom-42,20:59:20:00:28:01,192.168.1.182,Pad10-Pro,NETWORK_WIFI,0.3,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,32.02%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0043,AND-518-0043,CN-518-UBAINS,16,143,PGY-TestRoom-43,20:59:20:00:28:01,192.168.1.183,Pad10-Pro,NETWORK_WIFI,0.4,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,33.03%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0044,AND-518-0044,CN-518-UBAINS,16,144,PGY-TestRoom-44,20:59:20:00:28:01,192.168.1.184,Pad10-Pro,NETWORK_WIFI,0.5,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,34.04%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0045,AND-518-0045,CN-518-UBAINS,16,145,PGY-TestRoom-45,20:59:20:00:28:01,192.168.1.185,Pad10-Pro,NETWORK_WIFI,0.6,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,20.05%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0046,AND-518-0046,CN-518-UBAINS,16,146,PGY-TestRoom-46,20:59:20:00:28:01,192.168.1.186,Pad10-Pro,NETWORK_WIFI,0.7,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,21.06%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0047,AND-518-0047,CN-518-UBAINS,16,147,PGY-TestRoom-47,20:59:20:00:28:01,192.168.1.187,Pad10-Pro,NETWORK_WIFI,0.8,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,22.07%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0048,AND-518-0048,CN-518-UBAINS,16,148,PGY-TestRoom-48,20:59:20:00:28:01,192.168.1.188,Pad10-Pro,NETWORK_WIFI,0.9,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,23.08%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0049,AND-518-0049,CN-518-UBAINS,16,149,PGY-TestRoom-49,20:59:20:00:28:01,192.168.1.189,Pad10-Pro,NETWORK_WIFI,0.3,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,24.09%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0050,AND-518-0050,CN-518-UBAINS,16,150,PGY-TestRoom-50,20:59:20:00:28:01,192.168.1.190,Pad10-Pro,NETWORK_WIFI,0.4,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,25.00%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0051,AND-518-0051,CN-518-UBAINS,16,151,PGY-TestRoom-51,20:59:20:00:28:01,192.168.1.191,Pad10-Pro,NETWORK_WIFI,0.5,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,26.01%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0052,AND-518-0052,CN-518-UBAINS,16,152,PGY-TestRoom-52,20:59:20:00:28:01,192.168.1.192,Pad10-Pro,NETWORK_WIFI,0.6,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,27.02%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0053,AND-518-0053,CN-518-UBAINS,16,153,PGY-TestRoom-53,20:59:20:00:28:01,192.168.1.193,Pad10-Pro,NETWORK_WIFI,0.7,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,28.03%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0054,AND-518-0054,CN-518-UBAINS,16,154,PGY-TestRoom-54,20:59:20:00:28:01,192.168.1.194,Pad10-Pro,NETWORK_WIFI,0.8,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,29.04%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0055,AND-518-0055,CN-518-UBAINS,16,155,PGY-TestRoom-55,20:59:20:00:28:01,192.168.1.195,Pad10-Pro,NETWORK_WIFI,0.9,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,30.05%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0056,AND-518-0056,CN-518-UBAINS,16,156,PGY-TestRoom-56,20:59:20:00:28:01,192.168.1.196,Pad10-Pro,NETWORK_WIFI,0.3,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,31.06%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0057,AND-518-0057,CN-518-UBAINS,16,157,PGY-TestRoom-57,20:59:20:00:28:01,192.168.1.197,Pad10-Pro,NETWORK_WIFI,0.4,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,32.07%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0058,AND-518-0058,CN-518-UBAINS,16,158,PGY-TestRoom-58,20:59:20:00:28:01,192.168.1.198,Pad10-Pro,NETWORK_WIFI,0.5,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,33.08%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0059,AND-518-0059,CN-518-UBAINS,16,159,PGY-TestRoom-59,20:59:20:00:28:01,192.168.1.199,Pad10-Pro,NETWORK_WIFI,0.6,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,34.09%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0060,AND-518-0060,CN-518-UBAINS,16,160,PGY-TestRoom-60,20:59:20:00:28:01,192.168.1.200,Pad10-Pro,NETWORK_WIFI,0.7,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,20.00%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0061,AND-518-0061,CN-518-UBAINS,16,161,PGY-TestRoom-61,20:59:20:00:28:01,192.168.1.201,Pad10-Pro,NETWORK_WIFI,0.8,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,21.01%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0062,AND-518-0062,CN-518-UBAINS,16,162,PGY-TestRoom-62,20:59:20:00:28:01,192.168.1.202,Pad10-Pro,NETWORK_WIFI,0.9,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,22.02%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0063,AND-518-0063,CN-518-UBAINS,16,163,PGY-TestRoom-63,20:59:20:00:28:01,192.168.1.203,Pad10-Pro,NETWORK_WIFI,0.3,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,23.03%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0064,AND-518-0064,CN-518-UBAINS,16,164,PGY-TestRoom-64,20:59:20:00:28:01,192.168.1.204,Pad10-Pro,NETWORK_WIFI,0.4,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,24.04%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0065,AND-518-0065,CN-518-UBAINS,16,165,PGY-TestRoom-65,20:59:20:00:28:01,192.168.1.205,Pad10-Pro,NETWORK_WIFI,0.5,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,25.05%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0066,AND-518-0066,CN-518-UBAINS,16,166,PGY-TestRoom-66,20:59:20:00:28:01,192.168.1.206,Pad10-Pro,NETWORK_WIFI,0.6,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,26.06%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0067,AND-518-0067,CN-518-UBAINS,16,167,PGY-TestRoom-67,20:59:20:00:28:01,192.168.1.207,Pad10-Pro,NETWORK_WIFI,0.7,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,27.07%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0068,AND-518-0068,CN-518-UBAINS,16,168,PGY-TestRoom-68,20:59:20:00:28:01,192.168.1.208,Pad10-Pro,NETWORK_WIFI,0.8,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,28.08%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0069,AND-518-0069,CN-518-UBAINS,16,169,PGY-TestRoom-69,20:59:20:00:28:01,192.168.1.209,Pad10-Pro,NETWORK_WIFI,0.9,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,29.09%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0070,AND-518-0070,CN-518-UBAINS,16,170,PGY-TestRoom-70,20:59:20:00:28:01,192.168.1.210,Pad10-Pro,NETWORK_WIFI,0.3,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,30.00%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0071,AND-518-0071,CN-518-UBAINS,16,171,PGY-TestRoom-71,20:59:20:00:28:01,192.168.1.211,Pad10-Pro,NETWORK_WIFI,0.4,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,31.01%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0072,AND-518-0072,CN-518-UBAINS,16,172,PGY-TestRoom-72,20:59:20:00:28:01,192.168.1.212,Pad10-Pro,NETWORK_WIFI,0.5,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,32.02%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0073,AND-518-0073,CN-518-UBAINS,16,173,PGY-TestRoom-73,20:59:20:00:28:01,192.168.1.213,Pad10-Pro,NETWORK_WIFI,0.6,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,33.03%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0074,AND-518-0074,CN-518-UBAINS,16,174,PGY-TestRoom-74,20:59:20:00:28:01,192.168.1.214,Pad10-Pro,NETWORK_WIFI,0.7,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,34.04%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0075,AND-518-0075,CN-518-UBAINS,16,175,PGY-TestRoom-75,20:59:20:00:28:01,192.168.1.215,Pad10-Pro,NETWORK_WIFI,0.8,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,20.05%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0076,AND-518-0076,CN-518-UBAINS,16,176,PGY-TestRoom-76,20:59:20:00:28:01,192.168.1.216,Pad10-Pro,NETWORK_WIFI,0.9,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,21.06%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0077,AND-518-0077,CN-518-UBAINS,16,177,PGY-TestRoom-77,20:59:20:00:28:01,192.168.1.217,Pad10-Pro,NETWORK_WIFI,0.3,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,22.07%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0078,AND-518-0078,CN-518-UBAINS,16,178,PGY-TestRoom-78,20:59:20:00:28:01,192.168.1.218,Pad10-Pro,NETWORK_WIFI,0.4,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,23.08%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0079,AND-518-0079,CN-518-UBAINS,16,179,PGY-TestRoom-79,20:59:20:00:28:01,192.168.1.219,Pad10-Pro,NETWORK_WIFI,0.5,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,24.09%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0080,AND-518-0080,CN-518-UBAINS,16,180,PGY-TestRoom-80,20:59:20:00:28:01,192.168.1.220,Pad10-Pro,NETWORK_WIFI,0.6,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,25.00%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0081,AND-518-0081,CN-518-UBAINS,16,181,PGY-TestRoom-81,20:59:20:00:28:01,192.168.1.221,Pad10-Pro,NETWORK_WIFI,0.7,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,26.01%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0082,AND-518-0082,CN-518-UBAINS,16,182,PGY-TestRoom-82,20:59:20:00:28:01,192.168.1.222,Pad10-Pro,NETWORK_WIFI,0.8,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,27.02%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0083,AND-518-0083,CN-518-UBAINS,16,183,PGY-TestRoom-83,20:59:20:00:28:01,192.168.1.223,Pad10-Pro,NETWORK_WIFI,0.9,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,28.03%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0084,AND-518-0084,CN-518-UBAINS,16,184,PGY-TestRoom-84,20:59:20:00:28:01,192.168.1.224,Pad10-Pro,NETWORK_WIFI,0.3,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,29.04%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0085,AND-518-0085,CN-518-UBAINS,16,185,PGY-TestRoom-85,20:59:20:00:28:01,192.168.1.225,Pad10-Pro,NETWORK_WIFI,0.4,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,30.05%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0086,AND-518-0086,CN-518-UBAINS,16,186,PGY-TestRoom-86,20:59:20:00:28:01,192.168.1.226,Pad10-Pro,NETWORK_WIFI,0.5,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,31.06%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0087,AND-518-0087,CN-518-UBAINS,16,187,PGY-TestRoom-87,20:59:20:00:28:01,192.168.1.227,Pad10-Pro,NETWORK_WIFI,0.6,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,32.07%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0088,AND-518-0088,CN-518-UBAINS,16,188,PGY-TestRoom-88,20:59:20:00:28:01,192.168.1.228,Pad10-Pro,NETWORK_WIFI,0.7,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,33.08%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0089,AND-518-0089,CN-518-UBAINS,16,189,PGY-TestRoom-89,20:59:20:00:28:01,192.168.1.229,Pad10-Pro,NETWORK_WIFI,0.8,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,34.09%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0090,AND-518-0090,CN-518-UBAINS,16,190,PGY-TestRoom-90,20:59:20:00:28:01,192.168.1.230,Pad10-Pro,NETWORK_WIFI,0.9,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,20.00%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0091,AND-518-0091,CN-518-UBAINS,16,191,PGY-TestRoom-91,20:59:20:00:28:01,192.168.1.231,Pad10-Pro,NETWORK_WIFI,0.3,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,21.01%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0092,AND-518-0092,CN-518-UBAINS,16,192,PGY-TestRoom-92,20:59:20:00:28:01,192.168.1.232,Pad10-Pro,NETWORK_WIFI,0.4,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,22.02%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0093,AND-518-0093,CN-518-UBAINS,16,193,PGY-TestRoom-93,20:59:20:00:28:01,192.168.1.233,Pad10-Pro,NETWORK_WIFI,0.5,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,23.03%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0094,AND-518-0094,CN-518-UBAINS,16,194,PGY-TestRoom-94,20:59:20:00:28:01,192.168.1.234,Pad10-Pro,NETWORK_WIFI,0.6,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,24.04%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0095,AND-518-0095,CN-518-UBAINS,16,195,PGY-TestRoom-95,20:59:20:00:28:01,192.168.1.235,Pad10-Pro,NETWORK_WIFI,0.7,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,25.05%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0096,AND-518-0096,CN-518-UBAINS,16,196,PGY-TestRoom-96,20:59:20:00:28:01,192.168.1.236,Pad10-Pro,NETWORK_WIFI,0.8,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,26.06%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0097,AND-518-0097,CN-518-UBAINS,16,197,PGY-TestRoom-97,20:59:20:00:28:01,192.168.1.237,Pad10-Pro,NETWORK_WIFI,0.9,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,27.07%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0098,AND-518-0098,CN-518-UBAINS,16,198,PGY-TestRoom-98,20:59:20:00:28:01,192.168.1.238,Pad10-Pro,NETWORK_WIFI,0.3,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,28.08%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0099,AND-518-0099,CN-518-UBAINS,16,199,PGY-TestRoom-99,20:59:20:00:28:01,192.168.1.239,Pad10-Pro,NETWORK_WIFI,0.4,False,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,29.09%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
rebootResponseTopic,48134e6047a19a0100,AND-518-0100,CN-518-UBAINS,16,200,PGY-TestRoom-100,20:59:20:00:28:01,192.168.1.240,Pad10-Pro,NETWORK_WIFI,0.5,True,1920x1200,yuxian,30,11,351,1.3.351,4.2.12021020201.1,0.2.134,"[""arm64-v8a"", ""armeabi-v7a"", ""armeabi""]",UBAINS,com.ubains.local.gviewer,False,1,1,698M/1957M,9793269760,11075297280,30.00%,True,en,"[""Accelerometer sensor""]","{""FLAVOR_APP_TYPE"": ""rksystem"", ""BUILD_TYPE"": ""release"", ""FLAVOR_FEATURE"": ""doorscreen"", ""DEBUG"": false, ""FLAVOR"": ""rksystemDoorscreen""}",arcfacepro4x
Mqtt_Universal_Tool/TestData/ReservationSystem_DoorScreen/README_设备信息上报.md
0 → 100644
浏览文件 @
96a6f57e
# MQTT设备信息上报测试数据说明
## 📋 概述
本目录包含用于模拟Android门口屏设备信息上报的MQTT测试数据,完全基于JavaScript代码
`getDeviceInfoMessage()`
方法的结构生成。
## 📁 文件说明
### 1. CSV数据文件
#### MQTT设备信息上报_100条.csv
-
**用途**
: 包含100条设备信息上报的测试数据
-
**字段**
: 35个字段,涵盖设备所有关键信息
-
**生成方式**
: 通过
`generate_device_info_csv.py`
脚本生成
#### 其他CSV文件
-
`MQTT心跳上报_100条.csv`
: 心跳数据
-
`MQTT信息上报_100条.csv`
: 旧版信息上报数据
### 2. Python脚本
#### generate_device_info_csv.py
-
**功能**
: 生成设备信息上报CSV测试数据
-
**运行方式**
:
```
bash
python generate_device_info_csv.py
```
-
**
输出
**
: 生成100条符合真实设备格式的测试数据
#### test_device_info_message.py
-
**
功能
**
: 验证消息构建是否符合JavaScript代码规范
-
**
运行方式
**
:
```
bash
python test_device_info_message.py
```
-
**
验证内容
**
:
- 外层消息结构(method, clientId, result)
- 内层result对象的所有字段
- 数据类型正确性(布尔值、整数、浮点数、数组等)
- JSON双重序列化格式
#### Android_Information .py
-
**
功能
**
: MQTT消息发送主程序
-
**
配置
**
: 已自动添加
`
MQTT设备信息上报_100条.csv
`
到CSV_FILES列表
-
**
运行方式
**
:
```
bash
python
"Android_Information .py"
```
## 🔧 消息结构
### 外层结构
```
json
{
"method": "/system/readSystemInfo",
"clientId": "设备ID",
"result": "{内层JSON字符串}"
}
```
**注意**: `result`字段是JSON字符串(双重序列化),不是对象。
### 内层结构(result.result)
```
json
{
"result": {
"buildInfo": {
"appToken": "授权码",
"companyNumber": "公司编号",
"cnum": "会议室绑定ID",
"conferenceName": "会议室名称",
"conferenceId": 3,
"defaultQrCodeUrl": null,
"aliasName": "会议室别名",
"serverBaseUrl": "https://192.168.9.86/exapi/",
"localBindTime": "2026-04-22 11:19:55",
"generalField": "{...}" // JSON字符串
},
"faceVersion": "4.2.12021020201.1",
"wgtVersion": "0.2.134",
"deviceModel": "Pad10-Pro",
"abiList":
[
"arm64-v8a", "armeabi-v7a", "armeabi"
]
,
"androidId": "79f18c1a9a3bcfb1",
"appName": "UBAINS",
"appPackageName": "com.ubains.local.gviewer",
"appVersion": 351,
"appVersionName": "1.3.351",
"battery": 0.5,
"bluetoothEnabled": false,
"camerasCount": 1,
"charging": true,
"density": 1,
"freeAndTotalMemory": "698M/1957M",
"internalAvailableSize": 9793269760,
"internalTotalSize": 11075297280,
"ipAddress": "192.168.1.142",
"macAddress": "28:52:F9:1B:99:52",
"networkType": "NETWORK_WIFI",
"processCpuUsage": "28.73%",
"resolution": "1920x1200",
"romName": "yuxian",
"rooted": true,
"sdkVersionCode": 30,
"sdkVersionName": "11",
"sysDate": "Wed Apr 22 11:19:55 GMT+08:00 2026",
"sysDateStr": "2026-04-22 11:19:55",
"sysElapsedRealtime": "83:19:56",
"sysLanguage": "en",
"sysSupportedSensors":
[
"Accelerometer sensor"
]
,
"buildConfig": {
"FLAVOR_APP_TYPE": "rksystem",
"BUILD_TYPE": "release",
"FLAVOR_FEATURE": "doorscreen",
"DEBUG": false,
"FLAVOR": "rksystemDoorscreen"
},
"faceBuildInfo": "arcfacepro4x",
"authCode": "AND-KH4-0011",
"conferenceName": "PGY-TestRoom"
}
}
```
## 📊 CSV字段说明
| 字段名 | 类型 | 说明 | 示例 |
|--------|------|------|------|
| topic | String | MQTT主题 | rebootResponseTopic |
| clientId | String | Android设备唯一标识 | 79f18c1a9a3bcfb1 |
| appToken | String | 授权码 | AND-KH4-0011 |
| companyNumber | String | 公司编号 | CN-KH4-UBAINS |
| cnum | String | 会议室绑定ID | w7k1allc7gqkmk8igrae9qgnliwhxyhy |
| conferenceId | Integer | 会议室ID | 3 |
| conferenceName | String | 会议室名称 | PGY-TestRoom |
| macAddress | String | MAC地址 | 28:52:F9:1B:99:52 |
| ipAddress | String | IP地址 | 192.168.1.142 |
| deviceModel | String | 设备型号 | Pad10-Pro |
| networkType | String | 网络类型 | NETWORK_WIFI |
| battery | Float | 电池电量(0-1) | 0.5 |
| charging | Boolean | 充电状态 | true/false |
| resolution | String | 分辨率 | 1920x1200 |
| romName | String | ROM名称 | yuxian |
| sdkVersionCode | Integer | SDK版本代码 | 30 |
| sdkVersionName | String | SDK版本名称 | 11 |
| appVersion | Integer | 应用版本号 | 351 |
| appVersionName | String | 应用版本名称 | 1.3.351 |
| faceVersion | String | 人脸模块版本 | 4.2.12021020201.1 |
| wgtVersion | String | Widget版本 | 0.2.134 |
| abiList | JSON String | CPU架构列表 | ["arm64-v8a",...] |
| appName | String | 应用名称 | UBAINS |
| appPackageName | String | 应用包名 | com.ubains.local.gviewer |
| bluetoothEnabled | Boolean | 蓝牙启用状态 | true/false |
| camerasCount | Integer | 摄像头数量 | 1 |
| density | Integer | 屏幕密度 | 1 |
| freeAndTotalMemory | String | 内存使用情况 | 698M/1957M |
| internalAvailableSize | Integer | 内部存储可用大小 | 9793269760 |
| internalTotalSize | Integer | 内部存储总大小 | 11075297280 |
| processCpuUsage | String | CPU使用率 | 28.73% |
| rooted | Boolean | 是否Root | true/false |
| sysLanguage | String | 系统语言 | en |
| sysSupportedSensors | JSON String | 支持的传感器列表 | ["Accelerometer sensor"] |
| buildConfig | JSON String | 构建配置 | {...} |
| faceBuildInfo | String | 人脸构建信息 | arcfacepro4x |
## 🚀 使用步骤
### 1. 生成测试数据(可选)
```
bash
cd E:
\u
bains-module-test
\u
bains-module-test
\M
qtt_Universal_Tool
\T
estData
\R
eservationSystem_DoorScreen
python generate_device_info_csv.py
```
### 2. 验证消息格式
```
bash
python test_device_info_message.py
```
### 3. 运行MQTT发送程序
```
bash
cd E:
\u
bains-module-test
\u
bains-module-test
\M
qtt_Universal_Tool
\R
eservationSystem_DoorScreen
python "Android_Information .py"
```
## ⚙️ 配置说明
在`Android_Information .py`中修改以下配置:
```
python
# CSV文件列表
CSV_FILES =
[
'../TestData/ReservationSystem_DoorScreen/MQTT设备信息上报_100条.csv',
]
# MQTT服务器配置
MQTT_CONFIG = {
'broker_address': '192.168.5.50',
'port': 1883,
'username': 'mqtt@cmdb',
'password': 'mqtt@webpassw0RD',
}
# 线程配置
THREAD_CONFIG = {
'max_threads': 100,
'send_interval': 1,
'startup_delay': 0.05,
}
```
## 🔍 验证要点
### 与JavaScript代码的一致性
1.
✅ 外层消息结构完全一致
2.
✅ result字段为JSON字符串(双重序列化)
3.
✅ buildInfo包含完整的会议室绑定信息
4.
✅ 所有字段名称与JavaScript代码一致
5.
✅ 数据类型正确(布尔值、整数、浮点数、数组)
6.
✅ 数组字段保持数组格式(abiList, sysSupportedSensors)
7.
✅ generalField为JSON字符串
### 真实日志对比
参考日志中的关键字段:
-
method:
`/system/readSystemInfo`
-
clientId:
`79f18c1a9a3bcfb1`
-
deviceModel:
`Pad10-Pro`
-
faceVersion:
`4.2.12021020201.1`
-
wgtVersion:
`0.2.134`
-
appVersionName:
`1.3.351`
-
resolution:
`1920x1200`
-
networkType:
`NETWORK_WIFI`
## 📝 注意事项
1.
**双重序列化**
: result字段必须是JSON字符串,不是对象
2.
**布尔值**
: 使用true/false,不是字符串"true"/"false"
3.
**数组字段**
: abiList和sysSupportedSensors必须保持数组格式
4.
**数值类型**
: battery是浮点数,conferenceId是整数
5.
**时间格式**
: sysDateStr使用"YYYY-MM-DD HH:mm:ss"格式
6.
**运行时长**
: sysElapsedRealtime格式为"H:MM:SS"
## 🐛 故障排查
### 问题1: 消息格式不正确
-
运行
`test_device_info_message.py`
验证
-
检查CSV字段名称是否正确
-
确认JSON字符串字段是否正确转义
### 问题2: 数据类型错误
-
检查CSV中的布尔值是否为true/false(不是字符串)
-
确认数值字段没有引号
-
验证JSON字符串字段是否用引号包裹
### 问题3: 模块导入失败
-
确保在项目根目录下运行
-
检查Python路径是否正确设置
-
验证
`预定系统/Base/Mqtt_Send.py`
文件存在
## 📅 更新记录
-
**2026-04-22**
: 初始版本,基于JavaScript getDeviceInfoMessage()方法生成
-
创建CSV生成脚本
-
更新Mqtt_Send.py消息构建逻辑
-
添加测试验证脚本
-
编写本文档
预定系统/Base/Mqtt_Send.py
浏览文件 @
96a6f57e
...
...
@@ -321,63 +321,143 @@ class Mqtt:
:param current_time: 当前时间
:return: 消息字典
"""
#安卓信息设备上报
#安卓信息设备上报
(根据JavaScript getDeviceInfoMessage方法)
if
topic
==
"rebootResponseTopic"
:
return
{
"method"
:
"/system/readSystemInfo"
,
"clientId"
:
config
[
'clientId'
],
"result"
:
json
.
dumps
({
"result"
:
{
"buildInfo"
:
{
"appToken"
:
config
[
'appToken'
],
"companyNumber"
:
config
[
'companyNumber'
],
"cnum"
:
config
[
'cnum'
],
"conferenceName"
:
"测试会议室"
,
"conferenceId"
:
int
(
config
[
'conferenceId'
]),
"defaultQrCodeUrl"
:
"http://192.168.5.218:8888/group1/M00/00/21/wKgFyGNBWZmADtnNAAAwrxR0X8s016.png"
,
"aliasName"
:
"zt"
,
"serverBaseUrl"
:
"https://192.168.5.218/exapi"
,
# 构建会议室绑定信息(buildInfo)
build_info
=
{
"appToken"
:
config
.
get
(
'appToken'
,
''
),
"companyNumber"
:
config
.
get
(
'companyNumber'
,
''
),
"cnum"
:
config
.
get
(
'cnum'
,
''
),
"conferenceName"
:
config
.
get
(
'conferenceName'
,
''
),
"conferenceId"
:
int
(
config
.
get
(
'conferenceId'
,
0
)),
"defaultQrCodeUrl"
:
None
,
"aliasName"
:
config
.
get
(
'conferenceName'
,
''
),
"serverBaseUrl"
:
"https://192.168.9.86/exapi/"
,
"localBindTime"
:
current_time
,
"generalField"
:
"{
\"
conferencePhone
\"
:
\"\"
,
\"
chooseTimeType
\"
:1,
\"
meetingTopicSwitch
\"
:
\"
1
\"
,
\"
meetingContentSwitch
\"
:
\"
1
\"
,
\"
meetingReverseTypeSwitch
\"
:
\"
1
\"
,
\"
seatArrangeSwitch
\"
:
\"
1
\"
,
\"
meetingVoteSwitch
\"
:
\"
1
\"
,
\"
floorPlanPath
\"
:
\"\"
,
\"
jumpToPaperless
\"
:2,
\"
approvalList
\"
:[],
\"
isLeaderJoin
\"
:false,
\"
meetingPublishScreenSwitch
\"
:
\"
1
\"
}"
},
"faceVersion"
:
"4.2.12021020201.1"
,
"wgtVersion"
:
"0.0.81"
,
"deviceModel"
:
"yx_rk3288"
,
"abiList"
:
[
"armeabi-v7a"
,
"armeabi"
],
"androidId"
:
"48134e6047a19aaf"
,
"appName"
:
"UBAINS"
,
"appPackageName"
:
"com.ubains.local.gviewer"
,
"appVersion"
:
78
,
"appVersionName"
:
"1.1.78"
,
"battery"
:
0
,
"bluetoothEnabled"
:
False
,
"camerasCount"
:
1
,
"charging"
:
True
,
"density"
:
1
,
"freeAndTotalMemory"
:
"1176M/1997M"
,
"internalAvailableSize"
:
4306395136
,
"internalTotalSize"
:
4877451264
,
"ipAddress"
:
"192.168.5.111"
,
"macAddress"
:
config
[
'macAddress'
],
"networkType"
:
"NETWORK_ETHERNET"
,
"processCpuUsage"
:
"0.82
%
"
,
"resolution"
:
"1280x800"
,
"romName"
:
"rockchip"
,
"rooted"
:
True
,
"sdkVersionCode"
:
25
,
"sdkVersionName"
:
"7.1.2"
,
"sysDate"
:
"Tue Oct 22 18:24:52 GMT+08:00 2024"
,
"sysDatestr"
:
current_time
,
"sysElapsedRealtime"
:
"342:26:11"
,
"sysLanguage"
:
"zh"
,
"sysSupportedSensors"
:
[
"Accelerometer sensor"
,
"Gyroscope sensor"
,
"Game Rotation Vector Sensor"
,
"Gravity Sensor"
],
"authCode"
:
config
[
'authCode'
],
"conferenceName"
:
"测试会议室"
}
"generalField"
:
json
.
dumps
({
"floorPlanPath"
:
""
,
"conferencePhone"
:
""
,
"chooseTimeType"
:
1
,
"meetingTopicSwitch"
:
"1"
,
"meetingContentSwitch"
:
"1"
,
"meetingReverseTypeSwitch"
:
"1"
,
"seatArrangeSwitch"
:
"0"
,
"meetingVoteSwitch"
:
"1"
,
"jumpToPaperless"
:
2
,
"meetingPublishScreenSwitch"
:
"1"
,
"isLeaderJoin"
:
False
,
"approvalList"
:
[]
})
}
# 解析JSON字符串字段
try
:
abi_list
=
json
.
loads
(
config
.
get
(
'abiList'
,
'[]'
))
if
isinstance
(
config
.
get
(
'abiList'
),
str
)
else
config
.
get
(
'abiList'
,
[])
except
:
abi_list
=
[
"arm64-v8a"
,
"armeabi-v7a"
,
"armeabi"
]
try
:
sys_supported_sensors
=
json
.
loads
(
config
.
get
(
'sysSupportedSensors'
,
'[]'
))
if
isinstance
(
config
.
get
(
'sysSupportedSensors'
),
str
)
else
config
.
get
(
'sysSupportedSensors'
,
[])
except
:
sys_supported_sensors
=
[
"Accelerometer sensor"
]
try
:
build_config
=
json
.
loads
(
config
.
get
(
'buildConfig'
,
'{}'
))
if
isinstance
(
config
.
get
(
'buildConfig'
),
str
)
else
config
.
get
(
'buildConfig'
,
{})
except
:
build_config
=
{
"FLAVOR_APP_TYPE"
:
"rksystem"
,
"BUILD_TYPE"
:
"release"
,
"FLAVOR_FEATURE"
:
"doorscreen"
,
"DEBUG"
:
False
,
"FLAVOR"
:
"rksystemDoorscreen"
}
# 处理布尔值
charging
=
config
.
get
(
'charging'
,
'true'
)
if
isinstance
(
charging
,
str
):
charging
=
charging
.
lower
()
==
'true'
bluetooth_enabled
=
config
.
get
(
'bluetoothEnabled'
,
'false'
)
if
isinstance
(
bluetooth_enabled
,
str
):
bluetooth_enabled
=
bluetooth_enabled
.
lower
()
==
'true'
rooted
=
config
.
get
(
'rooted'
,
'true'
)
if
isinstance
(
rooted
,
str
):
rooted
=
rooted
.
lower
()
==
'true'
# 处理数值类型
battery
=
float
(
config
.
get
(
'battery'
,
0
))
cameras_count
=
int
(
config
.
get
(
'camerasCount'
,
1
))
density
=
int
(
config
.
get
(
'density'
,
1
))
internal_available_size
=
int
(
config
.
get
(
'internalAvailableSize'
,
0
))
internal_total_size
=
int
(
config
.
get
(
'internalTotalSize'
,
0
))
sdk_version_code
=
int
(
config
.
get
(
'sdkVersionCode'
,
30
))
app_version
=
int
(
config
.
get
(
'appVersion'
,
351
))
# 生成系统日期字符串
from
datetime
import
datetime
sys_date_obj
=
datetime
.
now
()
sys_date
=
sys_date_obj
.
strftime
(
"
%
a
%
b
%
d
%
H:
%
M:
%
S GMT+08:00
%
Y"
)
sys_date_str
=
sys_date_obj
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
# 计算运行时长(模拟)
seed
=
hash
(
config
.
get
(
'clientId'
,
''
))
%
86400
# 一天内的秒数
hours
=
seed
//
3600
minutes
=
(
seed
%
3600
)
//
60
seconds
=
seed
%
60
sys_elapsed_realtime
=
f
"{hours}:{minutes:02d}:{seconds:02d}"
# 构建完整的result对象
result_data
=
{
"result"
:
{
"buildInfo"
:
build_info
,
"faceVersion"
:
config
.
get
(
'faceVersion'
,
'4.2.12021020201.1'
),
"wgtVersion"
:
config
.
get
(
'wgtVersion'
,
'0.2.134'
),
"deviceModel"
:
config
.
get
(
'deviceModel'
,
'Pad10-Pro'
),
"abiList"
:
abi_list
,
"androidId"
:
config
.
get
(
'clientId'
,
''
),
"appName"
:
config
.
get
(
'appName'
,
'UBAINS'
),
"appPackageName"
:
config
.
get
(
'appPackageName'
,
'com.ubains.local.gviewer'
),
"appVersion"
:
app_version
,
"appVersionName"
:
config
.
get
(
'appVersionName'
,
'1.3.351'
),
"battery"
:
battery
,
"bluetoothEnabled"
:
bluetooth_enabled
,
"camerasCount"
:
cameras_count
,
"charging"
:
charging
,
"density"
:
density
,
"freeAndTotalMemory"
:
config
.
get
(
'freeAndTotalMemory'
,
'698M/1957M'
),
"internalAvailableSize"
:
internal_available_size
,
"internalTotalSize"
:
internal_total_size
,
"ipAddress"
:
config
.
get
(
'ipAddress'
,
'192.168.1.142'
),
"macAddress"
:
config
.
get
(
'macAddress'
,
''
),
"networkType"
:
config
.
get
(
'networkType'
,
'NETWORK_WIFI'
),
"processCpuUsage"
:
config
.
get
(
'processCpuUsage'
,
'28.73
%
'
),
"resolution"
:
config
.
get
(
'resolution'
,
'1920x1200'
),
"romName"
:
config
.
get
(
'romName'
,
'yuxian'
),
"rooted"
:
rooted
,
"sdkVersionCode"
:
sdk_version_code
,
"sdkVersionName"
:
config
.
get
(
'sdkVersionName'
,
'11'
),
"sysDate"
:
sys_date
,
"sysDateStr"
:
sys_date_str
,
"sysElapsedRealtime"
:
sys_elapsed_realtime
,
"sysLanguage"
:
config
.
get
(
'sysLanguage'
,
'en'
),
"sysSupportedSensors"
:
sys_supported_sensors
,
"buildConfig"
:
build_config
,
"faceBuildInfo"
:
config
.
get
(
'faceBuildInfo'
,
'arcfacepro4x'
),
"authCode"
:
config
.
get
(
'appToken'
,
''
),
"conferenceName"
:
config
.
get
(
'conferenceName'
,
''
)
}
}
# 外层消息结构
message
=
{
"method"
:
"/system/readSystemInfo"
,
"clientId"
:
config
.
get
(
'clientId'
,
''
),
"result"
:
json
.
dumps
(
result_data
,
ensure_ascii
=
False
)
}
return
message
#安卓信息心跳上报
elif
topic
==
"/uams/android/broadcast"
:
return
json
.
dumps
({
...
...
预定系统/Base/__init__.py
0 → 100644
浏览文件 @
96a6f57e
# 预定系统 Base 模块初始化文件
预定系统/__init__.py
0 → 100644
浏览文件 @
96a6f57e
# 预定系统模块初始化文件
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论