mirror of
https://gitee.com/qpy-solutions/tracker-v2.git
synced 2025-05-19 11:08:26 +08:00
update: tracker ostime to rtc
This commit is contained in:
parent
3eee47be2b
commit
90a79fd0dc
1569
ali_cloud_module.json
Normal file
1569
ali_cloud_module.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
import ure
|
import ure
|
||||||
# import _thread
|
|
||||||
import osTimer
|
import osTimer
|
||||||
import cellLocator
|
import cellLocator
|
||||||
import usr.settings as settings
|
import usr.settings as settings
|
||||||
@ -36,38 +35,17 @@ def gps_data_retrieve_cb(para_list):
|
|||||||
'''
|
'''
|
||||||
global gps_data_retrieve_queue
|
global gps_data_retrieve_queue
|
||||||
toRead = para_list[2]
|
toRead = para_list[2]
|
||||||
log.debug('gps_data_retrieve_cb para_list: %s' % str(para_list))
|
|
||||||
if toRead:
|
if toRead:
|
||||||
if gps_data_retrieve_queue.size() >= 8:
|
if gps_data_retrieve_queue.size() >= 8:
|
||||||
gps_data_retrieve_queue.get()
|
gps_data_retrieve_queue.get()
|
||||||
gps_data_retrieve_queue.put(toRead)
|
gps_data_retrieve_queue.put(toRead)
|
||||||
|
|
||||||
|
|
||||||
def gps_data_retrieve_thread(argv):
|
|
||||||
'''
|
|
||||||
GPS data retrieve thread
|
|
||||||
Receive a message from queue of data length.
|
|
||||||
Then read the corresponding length of data from UART into self.gps_data.
|
|
||||||
So self.gps_data will be updated immediately once the data comes to UART that
|
|
||||||
the self.gps_data could keep the latest data.
|
|
||||||
'''
|
|
||||||
global gps_data_retrieve_queue
|
|
||||||
self = argv
|
|
||||||
|
|
||||||
while True:
|
|
||||||
current_settings = settings.settings.get()
|
|
||||||
if current_settings['sys']['gps_mode'] & settings.default_values_sys._gps_mode.external:
|
|
||||||
self.gps_data = self.uart_read().decode()
|
|
||||||
elif current_settings['sys']['gps_mode'] & settings.default_values_sys._gps_mode.internal:
|
|
||||||
self.gps_data = self.quecgnss_read()
|
|
||||||
|
|
||||||
|
|
||||||
class GPS(Singleton):
|
class GPS(Singleton):
|
||||||
def __init__(self, gps_cfg):
|
def __init__(self, gps_cfg):
|
||||||
self.gps_data = ''
|
self.gps_data = ''
|
||||||
self.gps_cfg = gps_cfg
|
self.gps_cfg = gps_cfg
|
||||||
self.gps_timer = osTimer()
|
self.gps_timer = osTimer()
|
||||||
self.gps_over_timer = osTimer()
|
|
||||||
self.break_flag = 0
|
self.break_flag = 0
|
||||||
current_settings = settings.settings.get()
|
current_settings = settings.settings.get()
|
||||||
if current_settings['sys']['gps_mode'] & settings.default_values_sys._gps_mode.external:
|
if current_settings['sys']['gps_mode'] & settings.default_values_sys._gps_mode.external:
|
||||||
@ -87,43 +65,45 @@ class GPS(Singleton):
|
|||||||
)
|
)
|
||||||
self.uart_obj.set_callback(gps_data_retrieve_cb)
|
self.uart_obj.set_callback(gps_data_retrieve_cb)
|
||||||
gps_data_retrieve_queue = Queue(maxsize=8)
|
gps_data_retrieve_queue = Queue(maxsize=8)
|
||||||
# _thread.start_new_thread(gps_data_retrieve_thread, (self,))
|
|
||||||
|
|
||||||
def gps_timer_callback(self, args):
|
def gps_timer_callback(self, args):
|
||||||
self.break_flag = 1
|
self.break_flag = 1
|
||||||
|
|
||||||
def gps_over_timer_cb(self, args):
|
|
||||||
global gps_data_retrieve_queue
|
|
||||||
gps_data_retrieve_queue.put(0)
|
|
||||||
|
|
||||||
def uart_read(self):
|
def uart_read(self):
|
||||||
log.debug('start uart_read')
|
|
||||||
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(200, 1, self.gps_timer_callback)
|
||||||
self.gps_over_timer.start(20000, 1, self.gps_over_timer_cb)
|
|
||||||
nread = gps_data_retrieve_queue.get()
|
nread = gps_data_retrieve_queue.get()
|
||||||
|
data = self.uart_obj.read(nread).decode()
|
||||||
self.gps_timer.stop()
|
self.gps_timer.stop()
|
||||||
self.gps_over_timer.stop()
|
|
||||||
|
|
||||||
log.debug('uart_read nread')
|
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
|
||||||
|
|
||||||
self.break_flag = 0
|
self.break_flag = 0
|
||||||
return self.uart_obj.read(nread).decode()
|
return data
|
||||||
|
|
||||||
def quecgnss_read(self):
|
def quecgnss_read(self):
|
||||||
if quecgnss.get_state() == 0:
|
if quecgnss.get_state() == 0:
|
||||||
quecgnss.gnssEnable(1)
|
quecgnss.gnssEnable(1)
|
||||||
|
|
||||||
while self.break_flag == 0:
|
while self.break_flag == 0:
|
||||||
self.gps_timer.start(500, 1, self.gps_timer_callback)
|
self.gps_timer.start(200, 1, self.gps_timer_callback)
|
||||||
quecgnss.read(4096)
|
data = quecgnss.read(4096)
|
||||||
self.gps_timer.stop()
|
self.gps_timer.stop()
|
||||||
|
|
||||||
self.break_flag = 0
|
self.break_flag = 0
|
||||||
data = None
|
|
||||||
while not data:
|
|
||||||
data = quecgnss.read(4096)
|
|
||||||
|
|
||||||
return data[1].decode()
|
return data[1].decode()
|
||||||
|
|
||||||
def read(self):
|
def read(self):
|
||||||
@ -168,7 +148,6 @@ class GPS(Singleton):
|
|||||||
def read_quecIot(self):
|
def read_quecIot(self):
|
||||||
data = []
|
data = []
|
||||||
gps_data = self.read()
|
gps_data = self.read()
|
||||||
log.debug('read_quecIot gps_data: %s' % gps_data)
|
|
||||||
r = self.read_location_GxRMC(gps_data)
|
r = self.read_location_GxRMC(gps_data)
|
||||||
if r:
|
if r:
|
||||||
data.append(r)
|
data.append(r)
|
||||||
|
@ -15,15 +15,20 @@ def main():
|
|||||||
log.info('PROJECT_NAME: %s' % PROJECT_NAME)
|
log.info('PROJECT_NAME: %s' % PROJECT_NAME)
|
||||||
log.info('PROJECT_VERSION: %s' % PROJECT_VERSION)
|
log.info('PROJECT_VERSION: %s' % PROJECT_VERSION)
|
||||||
current_settings = settings.get()
|
current_settings = settings.get()
|
||||||
|
|
||||||
tracker = Tracker()
|
tracker = Tracker()
|
||||||
# Start Device Check
|
# Start Device Check
|
||||||
tracker.device_check()
|
tracker.device_check()
|
||||||
|
|
||||||
# Start OTA Check
|
# Start OTA Check
|
||||||
if current_settings['sys']['cloud'] == default_values_sys._cloud.quecIot and \
|
if current_settings['sys']['cloud'] == default_values_sys._cloud.quecIot and \
|
||||||
current_settings['app']['sw_ota'] is True:
|
current_settings['app']['sw_ota'] is True:
|
||||||
tracker.remote.check_ota()
|
tracker.remote.check_ota()
|
||||||
|
|
||||||
# Start PowerManage
|
# Start PowerManage
|
||||||
|
# Init Low Energy Work Mode
|
||||||
|
tracker.power_manage.low_energy_init()
|
||||||
|
# Start RTC
|
||||||
tracker.power_manage.start_rtc()
|
tracker.power_manage.start_rtc()
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,7 +34,6 @@ class PowerManage(Singleton):
|
|||||||
self.low_energy_method = None
|
self.low_energy_method = None
|
||||||
self.set_period()
|
self.set_period()
|
||||||
self.get_low_energy_method()
|
self.get_low_energy_method()
|
||||||
self.low_energy_init()
|
|
||||||
|
|
||||||
self.rtc = RTC()
|
self.rtc = RTC()
|
||||||
self.rtc.register_callback(self.rtc_callback)
|
self.rtc.register_callback(self.rtc_callback)
|
||||||
@ -46,7 +45,6 @@ class PowerManage(Singleton):
|
|||||||
self.period = seconds
|
self.period = seconds
|
||||||
|
|
||||||
def start_rtc(self):
|
def start_rtc(self):
|
||||||
log.debug('start PowerManage start_rtc')
|
|
||||||
current_settings = settings.get()
|
current_settings = settings.get()
|
||||||
if current_settings['app']['work_mode'] == default_values_app._work_mode.intelligent:
|
if current_settings['app']['work_mode'] == default_values_app._work_mode.intelligent:
|
||||||
if self.tracker.locator.gps:
|
if self.tracker.locator.gps:
|
||||||
@ -61,11 +59,9 @@ class PowerManage(Singleton):
|
|||||||
atime = utime.localtime(utime.mktime(utime.localtime()) + self.period)
|
atime = utime.localtime(utime.mktime(utime.localtime()) + self.period)
|
||||||
alarm_time = [atime[0], atime[1], atime[2], atime[6], atime[3], atime[4], atime[5], 0]
|
alarm_time = [atime[0], atime[1], atime[2], atime[6], atime[3], atime[4], atime[5], 0]
|
||||||
self.rtc.set_alarm(alarm_time)
|
self.rtc.set_alarm(alarm_time)
|
||||||
log.debug('rtc set_alarm')
|
|
||||||
self.rtc.enable_alarm(1)
|
self.rtc.enable_alarm(1)
|
||||||
|
|
||||||
def rtc_callback(self, args):
|
def rtc_callback(self, args):
|
||||||
log.debug('start rtc_callback')
|
|
||||||
self.rtc.enable_alarm(0)
|
self.rtc.enable_alarm(0)
|
||||||
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')
|
||||||
|
@ -113,7 +113,6 @@ class QuecThing(object):
|
|||||||
break
|
break
|
||||||
|
|
||||||
self.rm_empty_data(data)
|
self.rm_empty_data(data)
|
||||||
log.info('post_data res: %s' % res)
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def eventCB(self, data):
|
def eventCB(self, data):
|
||||||
|
@ -128,7 +128,6 @@ def downlink_process(argv):
|
|||||||
('query', ['phone_num',...])
|
('query', ['phone_num',...])
|
||||||
'''
|
'''
|
||||||
data = self.downlink_queue.get()
|
data = self.downlink_queue.get()
|
||||||
log.debug('downlink_queue data:', data)
|
|
||||||
|
|
||||||
DownLinkOptionObj = DownLinkOption(tracker=self.tracker)
|
DownLinkOptionObj = DownLinkOption(tracker=self.tracker)
|
||||||
option_attr = data[0]
|
option_attr = data[0]
|
||||||
|
@ -103,7 +103,6 @@ class default_values_app(object):
|
|||||||
all = 0x7
|
all = 0x7
|
||||||
|
|
||||||
class _work_mode(object):
|
class _work_mode(object):
|
||||||
none = 0x0
|
|
||||||
cycle = 0x1
|
cycle = 0x1
|
||||||
intelligent = 0x2
|
intelligent = 0x2
|
||||||
|
|
||||||
|
@ -104,14 +104,16 @@ def test_tracker():
|
|||||||
log.info('[.] sleep 3')
|
log.info('[.] sleep 3')
|
||||||
utime.sleep(3)
|
utime.sleep(3)
|
||||||
|
|
||||||
# log.info('[.] test tracker.device_data_report()')
|
log.info('[.] tracker.device_data_report()')
|
||||||
# device_data_report_res = tracker.device_data_report()
|
device_data_report_res = tracker.device_data_report()
|
||||||
# log.info('[.] device_data_report_res:', device_data_report_res)
|
log.info('[.] device_data_report_res:', device_data_report_res)
|
||||||
|
|
||||||
# log.info('[.] sleep 3')
|
log.info('[.] sleep 3')
|
||||||
# utime.sleep(3)
|
utime.sleep(3)
|
||||||
|
|
||||||
log.info('[.] test tracker.power_manage.start_rtc()')
|
log.info('[.] tracker.power_manage.low_energy_init()')
|
||||||
|
tracker.power_manage.low_energy_init()
|
||||||
|
log.info('[.] tracker.power_manage.start_rtc()')
|
||||||
tracker.power_manage.start_rtc()
|
tracker.power_manage.start_rtc()
|
||||||
log.info('[.] end tracker.power_manage.start_rtc()')
|
log.info('[.] end tracker.power_manage.start_rtc()')
|
||||||
|
|
||||||
@ -207,12 +209,9 @@ def test_pm():
|
|||||||
|
|
||||||
|
|
||||||
def test_rtc():
|
def test_rtc():
|
||||||
rtc_queue = Queue(maxsize=8)
|
|
||||||
|
|
||||||
def rtc_cb(df):
|
def rtc_cb(df):
|
||||||
global rtc_queue
|
|
||||||
print('rtc call back test. [%s]' % df)
|
print('rtc call back test. [%s]' % df)
|
||||||
rtc_queue.put('rtc')
|
|
||||||
|
|
||||||
rtc = RTC()
|
rtc = RTC()
|
||||||
log.debug('rtc.datatime: %s' % str(rtc.datetime()))
|
log.debug('rtc.datatime: %s' % str(rtc.datetime()))
|
||||||
@ -224,11 +223,35 @@ def test_rtc():
|
|||||||
rtc.set_alarm(alarm_time)
|
rtc.set_alarm(alarm_time)
|
||||||
log.debug('rtc.enable_alarm')
|
log.debug('rtc.enable_alarm')
|
||||||
rtc.enable_alarm(1)
|
rtc.enable_alarm(1)
|
||||||
rtc_data = rtc_queue.get()
|
|
||||||
log.debug('rtc_data: %s' % rtc_data)
|
|
||||||
|
|
||||||
# log.debug('Power.powerDown')
|
|
||||||
# Power.powerDown()
|
gps_uart_queue = Queue(maxsize=64)
|
||||||
|
|
||||||
|
|
||||||
|
def test_gps_uart_cb(args):
|
||||||
|
global gps_uart_queue
|
||||||
|
log.debug('[test_gps_uart_cb] args: %s' % str(args))
|
||||||
|
if args:
|
||||||
|
if gps_uart_queue.size() >= 64:
|
||||||
|
gps_uart_queue.get()
|
||||||
|
gps_uart_queue.put(args)
|
||||||
|
|
||||||
|
|
||||||
|
def test_gps_uart():
|
||||||
|
global gps_uart_queue
|
||||||
|
|
||||||
|
gps_cfg = settings.default_values_sys._gps_cfg
|
||||||
|
uart_obj = UART(
|
||||||
|
gps_cfg['UARTn'], gps_cfg['buadrate'], gps_cfg['databits'],
|
||||||
|
gps_cfg['parity'], gps_cfg['stopbits'], gps_cfg['flowctl']
|
||||||
|
)
|
||||||
|
uart_obj.set_callback(test_gps_uart_cb)
|
||||||
|
while True:
|
||||||
|
log.debug('[test_gps_uart] gps_uart_queue get')
|
||||||
|
gps_uart_data = gps_uart_queue.get()
|
||||||
|
log.debug('[test_gps_uart] gps_uart_data: %s' % str(gps_uart_data))
|
||||||
|
gps_info = uart_obj.read(gps_uart_data[2]).decode()
|
||||||
|
log.debug('[test_gps_uart] gps_info size: %s' % len(gps_info))
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@ -242,6 +265,8 @@ def main():
|
|||||||
test_tracker()
|
test_tracker()
|
||||||
# test_pm()
|
# test_pm()
|
||||||
# test_rtc()
|
# test_rtc()
|
||||||
|
# test_gps_uart()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import utime
|
|
||||||
import osTimer
|
import osTimer
|
||||||
|
|
||||||
import usr.settings as settings
|
|
||||||
from usr.common import Singleton
|
from usr.common import Singleton
|
||||||
from usr.logging import getLogger
|
from usr.logging import getLogger
|
||||||
|
|
||||||
@ -13,71 +11,6 @@ except ImportError:
|
|||||||
log = getLogger(__name__)
|
log = getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class TrackerTimer(Singleton):
|
|
||||||
|
|
||||||
def __init__(self, tracker):
|
|
||||||
self.tracker = tracker
|
|
||||||
self.tracker_timer = osTimer()
|
|
||||||
self.tracker_timer.start(1000, 1, self.timer_callback)
|
|
||||||
self.loc_count = 0
|
|
||||||
self.battery_count = 0
|
|
||||||
self.gnss_count = 0
|
|
||||||
self.quec_ota = 0
|
|
||||||
|
|
||||||
def timer_callback(self, args):
|
|
||||||
current_settings = settings.settings.get()
|
|
||||||
|
|
||||||
self.loc_count += 1
|
|
||||||
self.battery_count += 1
|
|
||||||
self.gnss_count += 1
|
|
||||||
self.quec_ota += 1
|
|
||||||
|
|
||||||
if (current_settings['app']['work_mode'] != settings.default_values_app._work_mode.none) \
|
|
||||||
and current_settings['app']['work_cycle_period'] \
|
|
||||||
and self.loc_count >= current_settings['app']['work_cycle_period']:
|
|
||||||
self.loc_count = 0
|
|
||||||
self.loc_timer()
|
|
||||||
|
|
||||||
if self.battery_count >= 60:
|
|
||||||
self.battery_count = 0
|
|
||||||
self.battery_timer()
|
|
||||||
|
|
||||||
if current_settings['app']['loc_method'] & settings.default_values_app._loc_method.gps and \
|
|
||||||
current_settings['sys']['gps_mode'] & settings.default_values_sys._gps_mode.internal:
|
|
||||||
self.gnss_count = 0
|
|
||||||
self.gnss_timer()
|
|
||||||
|
|
||||||
def loc_timer(self):
|
|
||||||
current_settings = settings.settings.get()
|
|
||||||
if current_settings['app']['work_mode'] == settings.default_values_app._work_mode.intelligent:
|
|
||||||
if self.tracker.locator.gps:
|
|
||||||
if not self.tracker.locator.gps.read_location_GxVTG_speed():
|
|
||||||
return
|
|
||||||
elif float(self.tracker.locator.gps.read_location_GxVTG_speed()) <= 0:
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
return
|
|
||||||
self.tracker.low_energy_queue.put(True)
|
|
||||||
|
|
||||||
def battery_timer(self):
|
|
||||||
current_settings = settings.settings.get()
|
|
||||||
energy = self.tracker.battery.energy()
|
|
||||||
is_charge = USB().getStatus() if USB is not None else 1
|
|
||||||
if is_charge == 0:
|
|
||||||
self.tracker.energy_led_show(energy)
|
|
||||||
if current_settings['app']['sw_low_power_alert']:
|
|
||||||
if energy <= current_settings['app']['low_power_alert_threshold']:
|
|
||||||
alert_data = self.tracker.get_alert_data(30002, {'local_time': utime.mktime(utime.localtime())})
|
|
||||||
self.tracker.device_data_report(event_data=alert_data)
|
|
||||||
if energy <= current_settings['app']['low_power_shutdown_threshold']:
|
|
||||||
self.tracker.device_data_report(power_switch=False, msg='power_down')
|
|
||||||
elif is_charge == 1:
|
|
||||||
self.tracker.energy_led_show(energy)
|
|
||||||
|
|
||||||
def gnss_timer(self):
|
|
||||||
self.tracker.locator.gps.quecgnss_read()
|
|
||||||
|
|
||||||
|
|
||||||
class LEDTimer(Singleton):
|
class LEDTimer(Singleton):
|
||||||
def __init__(self, tracker):
|
def __init__(self, tracker):
|
||||||
self.period = 500
|
self.period = 500
|
||||||
|
@ -17,8 +17,8 @@ from usr.common import numiter
|
|||||||
from usr.common import Singleton
|
from usr.common import Singleton
|
||||||
from usr.mpower import PowerManage
|
from usr.mpower import PowerManage
|
||||||
from usr.logging import getLogger
|
from usr.logging import getLogger
|
||||||
from usr.location import Location, GPS
|
from usr.location import GPS
|
||||||
# from usr.timer import TrackerTimer
|
from usr.location import Location
|
||||||
from usr.timer import LEDTimer
|
from usr.timer import LEDTimer
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -45,7 +45,6 @@ class Tracker(Singleton):
|
|||||||
self.remote = Remote(self)
|
self.remote = Remote(self)
|
||||||
self.power_manage = PowerManage(self)
|
self.power_manage = PowerManage(self)
|
||||||
|
|
||||||
# self.tracker_timer = TrackerTimer(self)
|
|
||||||
self.led_timer = LEDTimer(self)
|
self.led_timer = LEDTimer(self)
|
||||||
|
|
||||||
self.num_iter = numiter()
|
self.num_iter = numiter()
|
||||||
@ -74,11 +73,9 @@ class Tracker(Singleton):
|
|||||||
return alert_data
|
return alert_data
|
||||||
|
|
||||||
def get_device_data(self, power_switch=True):
|
def get_device_data(self, power_switch=True):
|
||||||
log.debug('start get_device_data')
|
|
||||||
device_data = {}
|
device_data = {}
|
||||||
|
|
||||||
loc_info = self.locator.read()
|
loc_info = self.locator.read()
|
||||||
log.debug('loc_info: %s' % str(loc_info))
|
|
||||||
if loc_info:
|
if loc_info:
|
||||||
device_data.update(loc_info[1])
|
device_data.update(loc_info[1])
|
||||||
|
|
||||||
@ -169,7 +166,6 @@ class Tracker(Singleton):
|
|||||||
self.power_manage.start_rtc()
|
self.power_manage.start_rtc()
|
||||||
|
|
||||||
def device_data_report(self, power_switch=True, event_data={}, msg=''):
|
def device_data_report(self, power_switch=True, event_data={}, msg=''):
|
||||||
log.debug('start device_data_report')
|
|
||||||
device_data = self.get_device_data(power_switch)
|
device_data = self.get_device_data(power_switch)
|
||||||
if event_data:
|
if event_data:
|
||||||
device_data.update(event_data)
|
device_data.update(event_data)
|
||||||
@ -177,7 +173,6 @@ class Tracker(Singleton):
|
|||||||
num = self.get_num()
|
num = self.get_num()
|
||||||
topic = num + '/' + msg if msg else num
|
topic = num + '/' + msg if msg else num
|
||||||
sys_bus.subscribe(topic, self.data_report_cb)
|
sys_bus.subscribe(topic, self.data_report_cb)
|
||||||
log.debug("topic: %s, device_data: %s" % (topic, device_data))
|
|
||||||
self.remote.post_data(topic, device_data)
|
self.remote.post_data(topic, device_data)
|
||||||
|
|
||||||
def device_check(self):
|
def device_check(self):
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"profile":{
|
"profile":{
|
||||||
"tslVersion":"1.1.0",
|
"tslVersion":"1.1.0",
|
||||||
"productKey":"p11275",
|
"productKey":"p11275",
|
||||||
"version":"20220316114050639"
|
"version":"20220324132257527"
|
||||||
},
|
},
|
||||||
"properties":[
|
"properties":[
|
||||||
{
|
{
|
||||||
@ -75,34 +75,34 @@
|
|||||||
{
|
{
|
||||||
"specs":{
|
"specs":{
|
||||||
"unit":"",
|
"unit":"",
|
||||||
"min":"0",
|
"min":"1",
|
||||||
"max":"15",
|
"max":"2",
|
||||||
"step":"1"
|
"step":"1"
|
||||||
},
|
},
|
||||||
"code":"work_mode",
|
"code":"work_mode",
|
||||||
"dataType":"INT",
|
"dataType":"INT",
|
||||||
"name":"定位工作模式",
|
"name":"工作模式",
|
||||||
"subType":"RW",
|
"subType":"RW",
|
||||||
"id":25,
|
"id":25,
|
||||||
"sort":4,
|
"sort":4,
|
||||||
"type":"PROPERTY",
|
"type":"PROPERTY",
|
||||||
"desc":"0: 无\n1: 循环\n2: 报警时\n4: 电话呼入\n8: 开启录音时\n15: 全部"
|
"desc":"1: 周期性模式\n2: 智能模式"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"specs":{
|
"specs":{
|
||||||
"unit":"",
|
"unit":"s",
|
||||||
"min":"",
|
"min":"5",
|
||||||
"max":"",
|
"max":"2147483647",
|
||||||
"step":""
|
"step":"1"
|
||||||
},
|
},
|
||||||
"code":"work_cycle_period",
|
"code":"work_cycle_period",
|
||||||
"dataType":"INT",
|
"dataType":"INT",
|
||||||
"name":"工作循环周期",
|
"name":"工作模式循环周期",
|
||||||
"subType":"RW",
|
"subType":"RW",
|
||||||
"id":26,
|
"id":26,
|
||||||
"sort":5,
|
"sort":5,
|
||||||
"type":"PROPERTY",
|
"type":"PROPERTY",
|
||||||
"desc":"单位s"
|
"desc":""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"specs":{
|
"specs":{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user