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