mirror of
https://gitee.com/qpy-solutions/tracker-v2.git
synced 2025-05-18 18:48:25 +08:00
update: optimization
This commit is contained in:
parent
e39ff5814d
commit
27ba3a5b9e
@ -289,8 +289,8 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"identifier": "sw_sim_out_alert",
|
||||
"name": "拔卡报警功能开关",
|
||||
"identifier": "sw_sim_abnormal_alert",
|
||||
"name": "SIM卡异常报警功能开关",
|
||||
"accessMode": "rw",
|
||||
"required": false,
|
||||
"dataType": {
|
||||
@ -382,7 +382,9 @@
|
||||
"20001": "net_error",
|
||||
"20002": "gps_error",
|
||||
"20003": "temp_sensor_error",
|
||||
"20004": "light_sensor_error"
|
||||
"20004": "light_sensor_error",
|
||||
"20005": "move_sensor_error",
|
||||
"20006": "mike_error"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -690,8 +692,8 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"identifier": "sw_sim_out_alert",
|
||||
"name": "拔卡报警功能开关",
|
||||
"identifier": "sw_sim_abnormal_alert",
|
||||
"name": "SIM卡异常报警功能开关",
|
||||
"dataType": {
|
||||
"type": "bool",
|
||||
"specs": {
|
||||
@ -769,7 +771,9 @@
|
||||
"20001": "net_error",
|
||||
"20002": "gps_error",
|
||||
"20003": "temp_sensor_error",
|
||||
"20004": "light_sensor_error"
|
||||
"20004": "light_sensor_error",
|
||||
"20005": "move_sensor_error",
|
||||
"20006": "mike_error"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -831,14 +835,12 @@
|
||||
"identifier": "fault_code",
|
||||
"name": "故障代码",
|
||||
"dataType": {
|
||||
"type": "enum",
|
||||
"type": "array",
|
||||
"specs": {
|
||||
"20001": "net_error",
|
||||
"20002": "gps_error",
|
||||
"20003": "temp_sensor_error",
|
||||
"20004": "light_sensor_error",
|
||||
"20005": "move_sensor_error",
|
||||
"20006": "mike_error"
|
||||
"size": "10",
|
||||
"item": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -868,11 +870,11 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"identifier": "sim_out_alert",
|
||||
"name": "拔卡报警",
|
||||
"identifier": "sim_abnormal_alert",
|
||||
"name": "SIM卡异常报警",
|
||||
"type": "alert",
|
||||
"required": false,
|
||||
"method": "thing.event.sim_out_alert.post",
|
||||
"method": "thing.event.sim_abnormal_alert.post",
|
||||
"outputData": []
|
||||
},
|
||||
{
|
||||
@ -1085,8 +1087,8 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"identifier": "sw_sim_out_alert",
|
||||
"name": "拔卡报警功能开关",
|
||||
"identifier": "sw_sim_abnormal_alert",
|
||||
"name": "SIM卡异常报警功能开关",
|
||||
"dataType": {
|
||||
"type": "bool",
|
||||
"specs": {
|
||||
@ -1181,7 +1183,7 @@
|
||||
"sw_fault_alert",
|
||||
"sw_low_power_alert",
|
||||
"sw_over_speed_alert",
|
||||
"sw_sim_out_alert",
|
||||
"sw_sim_abnormal_alert",
|
||||
"sw_disassemble_alert",
|
||||
"sw_drive_behavior_alert",
|
||||
"drive_behavior_code",
|
||||
@ -1443,8 +1445,8 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"identifier": "sw_sim_out_alert",
|
||||
"name": "拔卡报警功能开关",
|
||||
"identifier": "sw_sim_abnormal_alert",
|
||||
"name": "SIM卡异常报警功能开关",
|
||||
"dataType": {
|
||||
"type": "bool",
|
||||
"specs": {
|
||||
@ -1522,7 +1524,9 @@
|
||||
"20001": "net_error",
|
||||
"20002": "gps_error",
|
||||
"20003": "temp_sensor_error",
|
||||
"20004": "light_sensor_error"
|
||||
"20004": "light_sensor_error",
|
||||
"20005": "move_sensor_error",
|
||||
"20006": "mike_error"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -36,7 +36,7 @@ object_model = {
|
||||
'sos_alert',
|
||||
'fault_alert',
|
||||
'low_power_alert',
|
||||
'sim_out_alert',
|
||||
'sim_abnormal_alert',
|
||||
'disassemble_alert',
|
||||
'drive_behavior_alert',
|
||||
'over_speed_alert',
|
||||
@ -58,7 +58,7 @@ object_model = {
|
||||
'sw_fault_alert',
|
||||
'sw_low_power_alert',
|
||||
'sw_over_speed_alert',
|
||||
'sw_sim_out_alert',
|
||||
'sw_sim_abnormal_alert',
|
||||
'sw_disassemble_alert',
|
||||
'sw_drive_behavior_alert',
|
||||
'drive_behavior_code',
|
||||
|
@ -84,25 +84,27 @@ class GPS(Singleton):
|
||||
|
||||
def uart_read(self):
|
||||
global gps_data_retrieve_queue
|
||||
|
||||
while self.break_flag == 0:
|
||||
self.gps_timer.start(200, 1, self.gps_timer_callback)
|
||||
self.gps_timer.start(50, 1, self.gps_timer_callback)
|
||||
nread = gps_data_retrieve_queue.get()
|
||||
data = self.uart_obj.read(nread).decode()
|
||||
self.gps_timer.stop()
|
||||
|
||||
data = ''
|
||||
rmc_data = ''
|
||||
gga_data = ''
|
||||
vtg_data = ''
|
||||
while True:
|
||||
nread = gps_data_retrieve_queue.get()
|
||||
data = self.uart_obj.read(nread).decode()
|
||||
rmc_data = self.read_location_GxRMC(data)
|
||||
if not rmc_data:
|
||||
continue
|
||||
gga_data = self.read_location_GxGGA(data)
|
||||
if not gga_data:
|
||||
continue
|
||||
vtg_data = self.read_location_GxVTG(data)
|
||||
if not vtg_data:
|
||||
continue
|
||||
break
|
||||
udata = self.uart_obj.read(nread).decode()
|
||||
rmc_data = self.read_location_GxRMC(udata)
|
||||
gga_data = self.read_location_GxGGA(udata)
|
||||
vtg_data = self.read_location_GxVTG(udata)
|
||||
if rmc_data or gga_data or vtg_data:
|
||||
data += udata
|
||||
if rmc_data and gga_data and vtg_data:
|
||||
break
|
||||
|
||||
self.break_flag = 0
|
||||
return data
|
||||
@ -112,23 +114,24 @@ class GPS(Singleton):
|
||||
quecgnss.gnssEnable(1)
|
||||
|
||||
while self.break_flag == 0:
|
||||
self.gps_timer.start(200, 1, self.gps_timer_callback)
|
||||
self.gps_timer.start(50, 1, self.gps_timer_callback)
|
||||
data = quecgnss.read(4096)
|
||||
self.gps_timer.stop()
|
||||
|
||||
data = ''
|
||||
rmc_data = ''
|
||||
gga_data = ''
|
||||
vtg_data = ''
|
||||
while True:
|
||||
gnss_data = quecgnss.read(4096)
|
||||
data = gnss_data[1].decode()
|
||||
rmc_data = self.read_location_GxRMC(data)
|
||||
if not rmc_data:
|
||||
continue
|
||||
gga_data = self.read_location_GxGGA(data)
|
||||
if not gga_data:
|
||||
continue
|
||||
vtg_data = self.read_location_GxVTG(data)
|
||||
if not vtg_data:
|
||||
continue
|
||||
break
|
||||
udata = gnss_data[1].decode() if len(gnss_data) > 1 and gnss_data[1] else ''
|
||||
rmc_data = self.read_location_GxRMC(udata)
|
||||
gga_data = self.read_location_GxGGA(udata)
|
||||
vtg_data = self.read_location_GxVTG(udata)
|
||||
if rmc_data or gga_data or vtg_data:
|
||||
data += udata
|
||||
if rmc_data and gga_data and vtg_data:
|
||||
break
|
||||
|
||||
self.break_flag = 0
|
||||
return data
|
||||
|
@ -24,7 +24,6 @@ from usr.common import Singleton
|
||||
from usr.logging import getLogger
|
||||
from usr.settings import settings
|
||||
from usr.settings import LOWENERGYMAP
|
||||
from usr.settings import SettingsError
|
||||
from usr.settings import default_values_app
|
||||
|
||||
try:
|
||||
@ -80,50 +79,51 @@ class PowerManage(Singleton):
|
||||
if self.low_energy_method == 'PM':
|
||||
self.low_energy_queue.put('wakelock_unlock')
|
||||
elif self.low_energy_method == 'PSM':
|
||||
pass
|
||||
self.low_energy_queue.put('psm')
|
||||
elif self.low_energy_method == 'POWERDOWN':
|
||||
self.low_energy_queue.put('power_dwon')
|
||||
elif self.low_energy_method is None:
|
||||
self.low_energy_queue.put('cycle_report')
|
||||
|
||||
def get_low_energy_method(self):
|
||||
current_settings = settings.get()
|
||||
device_model = modem.getDevModel()
|
||||
support_methds = LOWENERGYMAP.get(device_model)
|
||||
if not support_methds:
|
||||
raise SettingsError('This Model %s Not Set LOWENERGYMAP.' % device_model)
|
||||
|
||||
if self.period >= current_settings['sys']['work_mode_timeline']:
|
||||
if "PSM" in support_methds:
|
||||
self.low_energy_method = "PSM"
|
||||
elif "POWERDOWN" in support_methds:
|
||||
self.low_energy_method = "POWERDOWN"
|
||||
elif "PM" in support_methds:
|
||||
self.low_energy_method = "PM"
|
||||
self.low_energy_method = "PM"
|
||||
else:
|
||||
if "PM" in support_methds:
|
||||
self.low_energy_method = "PM"
|
||||
support_methds = LOWENERGYMAP.get(device_model, [])
|
||||
if support_methds:
|
||||
if self.period >= current_settings['sys']['work_mode_timeline']:
|
||||
if "PSM" in support_methds:
|
||||
self.low_energy_method = "PSM"
|
||||
elif "POWERDOWN" in support_methds:
|
||||
self.low_energy_method = "POWERDOWN"
|
||||
elif "PM" in support_methds:
|
||||
self.low_energy_method = "PM"
|
||||
else:
|
||||
if "PM" in support_methds:
|
||||
self.low_energy_method = "PM"
|
||||
|
||||
return self.low_energy_method
|
||||
|
||||
def low_energy_init(self):
|
||||
if self.low_energy_method == 'POWERDOWN':
|
||||
pass
|
||||
elif self.low_energy_method == 'PM':
|
||||
_thread.start_new_thread(self.low_energy_work, ())
|
||||
self.lpm_fd = pm.create_wakelock("tracker_lock", len("tracker_lock"))
|
||||
if self.low_energy_method == 'PM':
|
||||
_thread.start_new_thread(self.low_energy_work, (True,))
|
||||
self.lpm_fd = pm.create_wakelock("lowenergy_lock", len("lowenergy_lock"))
|
||||
pm.autosleep(1)
|
||||
elif self.low_energy_method == 'PSM':
|
||||
# TODO: PSM LOW ENERGY
|
||||
pass
|
||||
elif self.low_energy_method == 'POWERDOWN':
|
||||
pass
|
||||
elif self.low_energy_method is None:
|
||||
_thread.start_new_thread(self.low_energy_work, (False,))
|
||||
|
||||
def low_energy_work(self):
|
||||
def low_energy_work(self, lowenergy_tag):
|
||||
while True:
|
||||
data = self.low_energy_queue.get()
|
||||
if data:
|
||||
if self.lpm_fd is None:
|
||||
self.lpm_fd = pm.create_wakelock("tracker_lock", len("tracker_lock"))
|
||||
pm.autosleep(1)
|
||||
pm.wakelock_lock(self.lpm_fd)
|
||||
if lowenergy_tag:
|
||||
if self.lpm_fd is None:
|
||||
self.lpm_fd = pm.create_wakelock("lowenergy_lock", len("lowenergy_lock"))
|
||||
pm.autosleep(1)
|
||||
pm.wakelock_lock(self.lpm_fd)
|
||||
|
||||
over_speed_check_res = self.tracker.get_over_speed_check()
|
||||
self.tracker.device_data_report(event_data=over_speed_check_res, msg=data)
|
||||
|
@ -41,7 +41,7 @@ object_model = [
|
||||
(27, ('sw_fault_alert', 'rw')),
|
||||
(28, ('sw_low_power_alert', 'rw')),
|
||||
(29, ('sw_over_speed_alert', 'rw')),
|
||||
(30, ('sw_sim_out_alert', 'rw')),
|
||||
(30, ('sw_sim_abnormal_alert', 'rw')),
|
||||
(31, ('sw_disassemble_alert', 'rw')),
|
||||
(32, ('sw_drive_behavior_alert', 'rw')),
|
||||
(21, ('drive_behavior_code', 'r')),
|
||||
@ -56,7 +56,7 @@ object_model = [
|
||||
(6, ('sos_alert', 'r')),
|
||||
(14, ('fault_alert', 'r')),
|
||||
(17, ('low_power_alert', 'r')),
|
||||
(18, ('sim_out_alert', 'r')),
|
||||
(18, ('sim_abnormal_alert', 'r')),
|
||||
(20, ('disassemble_alert', 'r')),
|
||||
(22, ('drive_behavior_alert', 'r')),
|
||||
(35, ('over_speed_alert', 'r')),
|
||||
|
@ -249,7 +249,7 @@ class Remote(Singleton):
|
||||
def read_history(self):
|
||||
'''
|
||||
{
|
||||
"non_loca": [
|
||||
"hist_data": [
|
||||
{
|
||||
'switch': True,
|
||||
'energy': 100
|
||||
@ -257,18 +257,10 @@ class Remote(Singleton):
|
||||
{
|
||||
'switch': True,
|
||||
'energy': 100
|
||||
}
|
||||
},
|
||||
'gps': ['$GPRMCx,x,x,x', '$GPGGAx,x,x,x'],
|
||||
'non_gps': ['LBS'],
|
||||
],
|
||||
|
||||
"loca_non_gps": [
|
||||
(117.1138, 31.82279, 550),
|
||||
(117.1138, 31.82279, 550)
|
||||
],
|
||||
|
||||
"loca_gps": [
|
||||
['$GPRMCx,x,x,x', '$GPGGAx,x,x,x'],
|
||||
['$GPRMCx,x,x,x', '$GPGGAx,x,x,x']
|
||||
]
|
||||
}
|
||||
'''
|
||||
if ql_fs.path_exists(self._history):
|
||||
|
@ -33,7 +33,7 @@ ALERTCODE = {
|
||||
20000: 'fault_alert',
|
||||
30002: 'low_power_alert',
|
||||
30003: 'over_speed_alert',
|
||||
30004: 'sim_out_alert',
|
||||
30004: 'sim_abnormal_alert',
|
||||
30005: 'disassemble_alert',
|
||||
40000: 'drive_behavior_alert',
|
||||
50001: 'sos_alert',
|
||||
@ -157,7 +157,7 @@ class default_values_app(object):
|
||||
|
||||
sw_over_speed_alert = True
|
||||
|
||||
sw_sim_out_alert = True
|
||||
sw_sim_abnormal_alert = True
|
||||
|
||||
sw_disassemble_alert = True
|
||||
|
||||
@ -379,7 +379,7 @@ class Settings(Singleton):
|
||||
elif opt in (
|
||||
'sw_ota', 'sw_ota_auto_upgrade', 'sw_voice_listen', 'sw_voice_record',
|
||||
'sw_fault_alert', 'sw_low_power_alert', 'sw_over_speed_alert',
|
||||
'sw_sim_out_alert', 'sw_disassemble_alert', 'sw_drive_behavior_alert'):
|
||||
'sw_sim_abnormal_alert', 'sw_disassemble_alert', 'sw_drive_behavior_alert'):
|
||||
if not isinstance(val, bool):
|
||||
return False
|
||||
self.current_settings['app'][opt] = val
|
||||
|
@ -110,10 +110,12 @@ class Tracker(Singleton):
|
||||
'ota_status': current_settings['sys']['ota_status'],
|
||||
})
|
||||
device_data.update(current_settings['app'])
|
||||
|
||||
return device_data
|
||||
|
||||
def get_device_check(self):
|
||||
alert_data = []
|
||||
alert_data = {}
|
||||
fault_code = []
|
||||
alert_code = 20000
|
||||
|
||||
net_check_res = self.check.net_check()
|
||||
@ -127,21 +129,17 @@ class Tracker(Singleton):
|
||||
self.running_led.period = 0.5
|
||||
if net_check_res != (3, 1):
|
||||
self.net_enable = False
|
||||
fault_code = 20001
|
||||
alert_info = {'fault_code': fault_code, 'local_time': utime.mktime(utime.localtime())}
|
||||
alert_data_res = self.get_alert_data(alert_code, alert_info)
|
||||
if alert_data_res:
|
||||
alert_data.append(alert_data_res)
|
||||
fault_code.append(20001)
|
||||
if not gps_check_res:
|
||||
fault_code = 20002
|
||||
alert_info = {'fault_code': fault_code, 'local_time': utime.mktime(utime.localtime())}
|
||||
alert_data_res = self.get_alert_data(alert_code, alert_info)
|
||||
if alert_data_res:
|
||||
alert_data.append(alert_data_res)
|
||||
fault_code.append(20002)
|
||||
if not sensor_check_res:
|
||||
# TODO: Need To Check What Sensor Error To Report.
|
||||
pass
|
||||
|
||||
if fault_code:
|
||||
alert_info = {'fault_code': fault_code, 'local_time': utime.mktime(utime.localtime())}
|
||||
alert_data = self.get_alert_data(alert_code, alert_info)
|
||||
|
||||
return alert_data
|
||||
|
||||
def get_over_speed_check(self):
|
||||
@ -193,12 +191,15 @@ class Tracker(Singleton):
|
||||
sys_bus.subscribe(topic, self.data_report_cb)
|
||||
self.remote.post_data(topic, device_data)
|
||||
|
||||
# OTA Status RST
|
||||
current_settings = settings.settings.get()
|
||||
if current_settings['sys']['ota_status'] in (3, 4):
|
||||
settings.settings.set('ota_status', 0)
|
||||
settings.settings.save()
|
||||
|
||||
def device_check(self):
|
||||
device_check_res = self.get_device_check()
|
||||
if device_check_res:
|
||||
[self.device_data_report(event_data=device_check) for device_check in device_check_res]
|
||||
else:
|
||||
self.device_data_report()
|
||||
self.device_data_report(event_data=device_check_res)
|
||||
|
||||
def energy_led_show(self, energy):
|
||||
current_settings = settings.settings.get()
|
||||
@ -234,7 +235,7 @@ class Tracker(Singleton):
|
||||
net_check_res = self.check.net_check()
|
||||
if args[1] != 1:
|
||||
self.net_enable = False
|
||||
if net_check_res == (1, 0):
|
||||
if net_check_res != (1, 1):
|
||||
alert_code = 30004
|
||||
alert_info = {'local_time': utime.mktime(utime.localtime())}
|
||||
alert_data = self.get_alert_data(alert_code, alert_info)
|
||||
|
@ -51,9 +51,10 @@
|
||||
|
||||
- 上报设备定位信息,电量,开关机状态,定位方式,电话号码等信息;
|
||||
- 默认上报设备信息的场景:
|
||||
1. 报警发生时
|
||||
2. 语音监听时
|
||||
3. 录音时
|
||||
1. 周期性定时
|
||||
2. 报警发生时
|
||||
3. 语音监听时
|
||||
4. 录音时
|
||||
- 根据不同的应用场景,上报工作模式分别有以下三种:
|
||||
1. 周期性模式 -- 周期性上报设备信息,上报完成后进入低功耗模式
|
||||
2. 智能模式 -- 开启GPS定位时,运动上报,上报完成后进入低功耗模式,静止不上报直接进入低功耗模式
|
||||
@ -71,7 +72,7 @@
|
||||
- 功能开启的状态下,可由云端或手机APP配置是否自动升级。默认开启自动升级。
|
||||
|
||||
#### 远程配置或控制
|
||||
- 远程配置:电话号码、远程配置定位器工作模式、定位使用的技术手段、语音监听、自动录音上报、固件升级及自动升级、故障报警、低电报警、超速报警、拔卡报警、拆卸报警、振动报警和驾驶行为监测功能的开关。
|
||||
- 远程配置:电话号码、远程配置定位器工作模式、定位使用的技术手段、语音监听、自动录音上报、固件升级及自动升级、故障报警、低电报警、超速报警、SIM卡异常报警、拆卸报警、振动报警和驾驶行为监测功能的开关。
|
||||
- 远程控制:远程控制固件升级的流程。
|
||||
|
||||
### 设备报警功能
|
||||
@ -95,7 +96,7 @@
|
||||
- 功能的开启,超速阈值,可由云端或手机APP控制。默认关闭该功能。
|
||||
- 报警代码:30003
|
||||
|
||||
#### 拔卡报警
|
||||
#### SIM卡异常报警
|
||||
|
||||
- SIM卡拔出时报警,此时网络不通,按照网络不通的逻辑处理。
|
||||
- 功能的开启,可由云端或手机APP控制。默认开启该功能。
|
||||
@ -250,7 +251,7 @@ tracker.remote.post_data(topic, data)
|
||||
|故障报警功能开关|`sw_fault_alert`|`bool`|`True`:开启,`False`:关闭||读写|
|
||||
|低电报警功能开关|`sw_low_power_alert`|`bool`|`True`:开启,`False`:关闭||读写|
|
||||
|超速报警功能开关|`sw_over_speed_alert`|`bool`|`True`:开启,`False`:关闭||读写|
|
||||
|拔卡报警功能开关|`sw_sim_out_alert`|`bool`|`True`:开启,`False`:关闭||读写|
|
||||
|SIM卡异常报警功能开关|`sw_sim_abnormal_alert`|`bool`|`True`:开启,`False`:关闭||读写|
|
||||
|拆卸报警功能开关|`sw_disassemble_alert`|`bool`|`True`:开启,`False`:关闭||读写|
|
||||
|驾驶行为报警功能开关|`sw_drive_behavior_alert`|`bool`|`True`:开启,`False`:关闭||读写|
|
||||
|驾驶行为代码|`drive_behavior_code`|`int`|取值范围:40001 ~ 40004|40001: quick_start;40002: quick_stop;40003: quick_turn_left;40004: quick_turn_right|只读|
|
||||
@ -268,7 +269,7 @@ tracker.remote.post_data(topic, data)
|
||||
|SOS报警|`sos_alert`|`{'local_time': xxx}`|
|
||||
|故障报警|`fault_alert`|`{'local_time': xxx, 'fault_code': 20001}`|
|
||||
|低电报警|`low_power_alert`|`{'local_time': xxx, 'energy': 20}`|
|
||||
|拔卡报警|`sim_out_alert`|`{'local_time': xxx}`|
|
||||
|SIM卡异常报警|`sim_abnormal_alert`|`{'local_time': xxx}`|
|
||||
|驾驶行为报警|`drive_behavior_alert`|`{'local_time': xxx, 'drive_behavior_code': 40001}`|
|
||||
|拆卸报警|`disassemble_alert`|`{'local_time': xxx}`|
|
||||
|超速报警|`over_speed_alert`|`{'local_time': xxx}`|
|
||||
@ -319,7 +320,7 @@ res = tracker.get_alert_data(alert_code, alert_info)
|
||||
|-|20006|`mike_error`|麦克风异常|
|
||||
|30002|-|`low_power_alert`|低电量报警|
|
||||
|30003|-|`over_speed_alert`|超速报警|
|
||||
|30004|-|`sim_out_alert`|拔卡报警|
|
||||
|30004|-|`sim_abnormal_alert`|SIM卡异常报警|
|
||||
|30005|-|`disassemble_alert`|拆卸报警|
|
||||
|40000|-|`drive_behavior_alert`|驾驶行为监测报警|
|
||||
|-|40001|`quick_start`|急起|
|
||||
@ -460,7 +461,7 @@ current_settings = settings.get()
|
||||
"sw_low_power_alert": true,
|
||||
"sw_voice_record": false,
|
||||
"sw_voice_listen": false,
|
||||
"sw_sim_out_alert": true,
|
||||
"sw_sim_abnormal_alert": true,
|
||||
"gps_mode": 2,
|
||||
"sw_drive_behavior_alert": true,
|
||||
"sw_ota": true,
|
||||
|
@ -2,7 +2,7 @@
|
||||
"profile":{
|
||||
"tslVersion":"1.1.0",
|
||||
"productKey":"p11275",
|
||||
"version":"20220324132257527"
|
||||
"version":"20220325114956585"
|
||||
},
|
||||
"properties":[
|
||||
{
|
||||
@ -319,9 +319,9 @@
|
||||
"value":"false"
|
||||
}
|
||||
],
|
||||
"code":"sw_sim_out_alert",
|
||||
"code":"sw_sim_abnormal_alert",
|
||||
"dataType":"BOOL",
|
||||
"name":"拔卡报警功能开关",
|
||||
"name":"SIM卡异常报警功能开关",
|
||||
"subType":"RW",
|
||||
"id":30,
|
||||
"sort":16,
|
||||
@ -428,13 +428,11 @@
|
||||
},
|
||||
{
|
||||
"specs":{
|
||||
"unit":"",
|
||||
"min":"20001",
|
||||
"max":"29999",
|
||||
"step":"1"
|
||||
"size":"10",
|
||||
"dataType":"INT"
|
||||
},
|
||||
"code":"fault_code",
|
||||
"dataType":"INT",
|
||||
"dataType":"ARRAY",
|
||||
"name":"故障代码",
|
||||
"subType":"R",
|
||||
"id":36,
|
||||
@ -555,8 +553,8 @@
|
||||
"$ref":"#/properties/id/19"
|
||||
}
|
||||
],
|
||||
"code":"sim_out_alert",
|
||||
"name":"拔卡报警",
|
||||
"code":"sim_abnormal_alert",
|
||||
"name":"SIM卡异常报警",
|
||||
"subType":"WARN",
|
||||
"id":18,
|
||||
"sort":23,
|
||||
|
Loading…
x
Reference in New Issue
Block a user