|
@@ -12,7 +12,8 @@ import pytz
|
|
|
import requests
|
|
|
from django.views.generic.base import View
|
|
|
|
|
|
-from AnsjerPush.Config.gatewaySensorConfig import SENSOR_TYPE, EVENT_TYPE, DEVICE_TYPE, SMART_SOCKET_TOPIC
|
|
|
+from AnsjerPush.Config.gatewaySensorConfig import SENSOR_TYPE, EVENT_TYPE, DEVICE_TYPE, SMART_SOCKET_TOPIC, \
|
|
|
+ ANSJER_GENERIC_TOPIC
|
|
|
from AnsjerPush.config import LOGGER, XM_PUSH_CHANNEL_ID
|
|
|
from Model.models import SensorRecord, GatewaySubDevice, GatewayPush, Device_Info, SceneLog, SmartScene, CountryModel, \
|
|
|
EffectiveTime
|
|
@@ -532,6 +533,7 @@ class GatewayView(View):
|
|
|
if index == task_list_len - 1:
|
|
|
scene_id = smart_scene['id']
|
|
|
kwargs = {
|
|
|
+ 'sensor_event_type': event_type,
|
|
|
'device_type': task['device_type'],
|
|
|
'event_type': task['event_type'],
|
|
|
'serial_number': task['serial_number'],
|
|
@@ -647,9 +649,10 @@ class GatewayView(View):
|
|
|
return time_frame_dict, time_frame_next_day_dict
|
|
|
|
|
|
@staticmethod
|
|
|
- def pub_mqtt(device_type, event_type, serial_number, delay_time, scene_id=0):
|
|
|
+ def pub_mqtt(sensor_event_type, device_type, event_type, serial_number, delay_time, scene_id=0):
|
|
|
"""
|
|
|
发布mqtt消息
|
|
|
+ @param sensor_event_type: 传感器事件类型
|
|
|
@param device_type: 设备类型
|
|
|
@param event_type: 事件类型
|
|
|
@param serial_number: 序列号
|
|
@@ -657,16 +660,44 @@ class GatewayView(View):
|
|
|
@param scene_id: 场景id
|
|
|
@return:
|
|
|
"""
|
|
|
+ msg = {}
|
|
|
+ # 插座
|
|
|
if device_type == DEVICE_TYPE['socket']:
|
|
|
topic_name = SMART_SOCKET_TOPIC.format(serial_number)
|
|
|
status = 1 if event_type == EVENT_TYPE['socket_power_on'] else 0
|
|
|
- msg = {
|
|
|
- 'type': 1,
|
|
|
- 'data': {'deviceSwitch': status}
|
|
|
+ msg['type'] = 1
|
|
|
+ msg['data'] = {
|
|
|
+ 'deviceSwitch': status
|
|
|
}
|
|
|
- if delay_time:
|
|
|
- time.sleep(delay_time)
|
|
|
- CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
|
+
|
|
|
+ # 摄像头
|
|
|
+ elif device_type == DEVICE_TYPE['C516']:
|
|
|
+ topic_name = ANSJER_GENERIC_TOPIC.format(serial_number)
|
|
|
+ if event_type == EVENT_TYPE['detection_reminder_on']:
|
|
|
+ msg['commandType'] = 'detection_reminder'
|
|
|
+ msg['enable'] = 1
|
|
|
+ elif event_type == EVENT_TYPE['detection_reminder_off']:
|
|
|
+ msg['commandType'] = 'detection_reminder'
|
|
|
+ msg['enable'] = 0
|
|
|
+ elif event_type == EVENT_TYPE['snapshot']:
|
|
|
+ msg['commandType'] = 'snapshot'
|
|
|
+ msg['eventType'] = sensor_event_type
|
|
|
+ elif event_type == EVENT_TYPE['record_video']:
|
|
|
+ msg['commandType'] = 'record_video'
|
|
|
+ elif event_type == EVENT_TYPE['human_tracking_on']:
|
|
|
+ msg['commandType'] = 'human_tracking'
|
|
|
+ msg['enable'] = 1
|
|
|
+ elif event_type == EVENT_TYPE['human_tracking_off']:
|
|
|
+ msg['commandType'] = 'human_tracking'
|
|
|
+ msg['enable'] = 0
|
|
|
+ else:
|
|
|
+ return
|
|
|
+ else:
|
|
|
+ return
|
|
|
+
|
|
|
+ if delay_time:
|
|
|
+ time.sleep(delay_time)
|
|
|
+ CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
|
|
|
|
# 没有设备任务时,最后一个任务上报场景日志
|
|
|
if scene_id:
|