|
@@ -1113,7 +1113,6 @@ class SmartSceneView(View):
|
|
cls.del_aps_job(scene_data_dict)
|
|
cls.del_aps_job(scene_data_dict)
|
|
task_list = []
|
|
task_list = []
|
|
scene_task_list = []
|
|
scene_task_list = []
|
|
- total_delay_time = 0
|
|
|
|
# 不需要设备触发的任务
|
|
# 不需要设备触发的任务
|
|
no_device_task = True if is_set_time else False
|
|
no_device_task = True if is_set_time else False
|
|
is_last_task = False
|
|
is_last_task = False
|
|
@@ -1128,7 +1127,6 @@ class SmartSceneView(View):
|
|
is_last_task = True
|
|
is_last_task = True
|
|
|
|
|
|
sensor_type = int(task['device_type'])
|
|
sensor_type = int(task['device_type'])
|
|
- total_delay_time += task['delay_time']
|
|
|
|
# 处理插座数据
|
|
# 处理插座数据
|
|
# 不用添加到设备的任务列表,添加到mqtt任务列表
|
|
# 不用添加到设备的任务列表,添加到mqtt任务列表
|
|
if sensor_type == DEVICE_TYPE['socket']:
|
|
if sensor_type == DEVICE_TYPE['socket']:
|
|
@@ -1149,7 +1147,7 @@ class SmartSceneView(View):
|
|
if no_device_task and is_last_task:
|
|
if no_device_task and is_last_task:
|
|
smart_scene_id = scene_id
|
|
smart_scene_id = scene_id
|
|
task_temp['task_id'] = cls.create_aps_job(
|
|
task_temp['task_id'] = cls.create_aps_job(
|
|
- condition, minutes, total_delay_time, tz, repeat, sensor_type, event_type, serial_number,
|
|
|
|
|
|
+ condition, minutes, delay_time, tz, repeat, sensor_type, event_type, serial_number,
|
|
smart_scene_id)
|
|
smart_scene_id)
|
|
scene_task_list.append(task_temp)
|
|
scene_task_list.append(task_temp)
|
|
else:
|
|
else:
|
|
@@ -1301,13 +1299,13 @@ class SmartSceneView(View):
|
|
|
|
|
|
@classmethod
|
|
@classmethod
|
|
def create_aps_job(
|
|
def create_aps_job(
|
|
- cls, condition, minutes, total_delay_time, tz, repeat, device_type, event_type, serial_number, scene_id):
|
|
|
|
|
|
+ cls, condition, minutes, delay_time, tz, repeat, device_type, event_type, serial_number, scene_id):
|
|
"""
|
|
"""
|
|
创建定时任务
|
|
创建定时任务
|
|
返回任务id和时间
|
|
返回任务id和时间
|
|
@param condition: 条件数据
|
|
@param condition: 条件数据
|
|
@param minutes: 分钟时间
|
|
@param minutes: 分钟时间
|
|
- @param total_delay_time: 总延迟时间
|
|
|
|
|
|
+ @param delay_time: 延迟时间
|
|
@param tz: 时区
|
|
@param tz: 时区
|
|
@param repeat: 星期周期的十进制数
|
|
@param repeat: 星期周期的十进制数
|
|
@param device_type: 设备类型
|
|
@param device_type: 设备类型
|
|
@@ -1320,13 +1318,13 @@ class SmartSceneView(View):
|
|
apscheduler_obj = ApschedulerObject(tz)
|
|
apscheduler_obj = ApschedulerObject(tz)
|
|
# 一次性任务
|
|
# 一次性任务
|
|
if repeat == 0:
|
|
if repeat == 0:
|
|
- time_stamp = condition['time_dict']['time_stamp'] + total_delay_time
|
|
|
|
|
|
+ time_stamp = condition['time_dict']['time_stamp'] + delay_time
|
|
task_id += str(time_stamp)
|
|
task_id += str(time_stamp)
|
|
apscheduler_obj.create_date_job(func=cls.pub_mqtt, task_id=task_id, time_stamp=time_stamp,
|
|
apscheduler_obj.create_date_job(func=cls.pub_mqtt, task_id=task_id, time_stamp=time_stamp,
|
|
args=(device_type, event_type, serial_number, scene_id))
|
|
args=(device_type, event_type, serial_number, scene_id))
|
|
# 周期任务
|
|
# 周期任务
|
|
else:
|
|
else:
|
|
- hour, minute, second, is_next_day = cls.handle_delay_time(minutes, total_delay_time)
|
|
|
|
|
|
+ hour, minute, second, is_next_day = cls.handle_delay_time(minutes, delay_time)
|
|
# 加上延时,如果执行时间超过23:59,隔天执行
|
|
# 加上延时,如果执行时间超过23:59,隔天执行
|
|
weeks = cls.int_to_weeks(repeat, is_next_day)
|
|
weeks = cls.int_to_weeks(repeat, is_next_day)
|
|
time_str = weeks + '_{:02d}{:02d}{:02d}'.format(hour, minute, second)
|
|
time_str = weeks + '_{:02d}{:02d}{:02d}'.format(hour, minute, second)
|