|
@@ -14,7 +14,7 @@ from django.db import transaction
|
|
from django.db.models import Q
|
|
from django.db.models import Q
|
|
from django.views.generic.base import View
|
|
from django.views.generic.base import View
|
|
|
|
|
|
-from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC
|
|
|
|
|
|
+from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC, SCENE_EVENT_DELETE
|
|
from Ansjer.config import CONFIG_INFO, AWS_IOT_SES_ACCESS_CHINA_ID, AWS_IOT_SES_ACCESS_CHINA_SECRET, \
|
|
from Ansjer.config import CONFIG_INFO, AWS_IOT_SES_ACCESS_CHINA_ID, AWS_IOT_SES_ACCESS_CHINA_SECRET, \
|
|
AWS_IOT_SES_ACCESS_CHINA_REGION, AWS_IOT_SES_ACCESS_FOREIGN_ID, AWS_IOT_SES_ACCESS_FOREIGN_SECRET, \
|
|
AWS_IOT_SES_ACCESS_CHINA_REGION, AWS_IOT_SES_ACCESS_FOREIGN_ID, AWS_IOT_SES_ACCESS_FOREIGN_SECRET, \
|
|
AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA
|
|
AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA
|
|
@@ -216,7 +216,8 @@ class GatewayDeviceView(View):
|
|
topic_name = SMART_SCENE_TOPIC.format(serial_number)
|
|
topic_name = SMART_SCENE_TOPIC.format(serial_number)
|
|
for smart_scene in smart_scene_info:
|
|
for smart_scene in smart_scene_info:
|
|
msg = {
|
|
msg = {
|
|
- 'smart_scene_delete': int(smart_scene['id'])
|
|
|
|
|
|
+ 'scene_event': SCENE_EVENT_DELETE,
|
|
|
|
+ 'scene_id': int(smart_scene['id'])
|
|
}
|
|
}
|
|
success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
try:
|
|
try:
|
|
@@ -232,38 +233,30 @@ class GatewayDeviceView(View):
|
|
device_qs.delete()
|
|
device_qs.delete()
|
|
elif sub_ids:
|
|
elif sub_ids:
|
|
sub_ids = sub_ids.split(',')
|
|
sub_ids = sub_ids.split(',')
|
|
- ids = []
|
|
|
|
- for item in sub_ids:
|
|
|
|
- sub_id = int(item)
|
|
|
|
- ids.append(sub_id)
|
|
|
|
- sub_device_qs = GatewaySubDevice.objects.filter(id=sub_id).values('device_type', 'src_addr',
|
|
|
|
- 'device__serial_number')
|
|
|
|
- serial_number = sub_device_qs[0]['device__serial_number']
|
|
|
|
- topic_name = SMART_SCENE_TOPIC.format(serial_number)
|
|
|
|
- device_type = sub_device_qs[0]['device_type']
|
|
|
|
- if device_type == 216: # 删除智能按钮通知设备
|
|
|
|
- msg = {
|
|
|
|
- 'sos_delete': int(sub_device_qs[0]['src_addr'], 16)
|
|
|
|
- }
|
|
|
|
- success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
|
|
- try:
|
|
|
|
- assert success
|
|
|
|
- except AssertionError:
|
|
|
|
- return response.json(10044)
|
|
|
|
- time.sleep(0.3)
|
|
|
|
- family_device_qs = FamilyRoomDevice.objects.filter(sub_device__in=ids)
|
|
|
|
|
|
+ sub_id_list = []
|
|
|
|
+ for sub_id in sub_ids:
|
|
|
|
+ sub_id_list.append(int(sub_id))
|
|
|
|
+
|
|
|
|
+ family_device_qs = FamilyRoomDevice.objects.filter(sub_device__in=sub_id_list)
|
|
if family_device_qs.exists():
|
|
if family_device_qs.exists():
|
|
family_device_qs.delete()
|
|
family_device_qs.delete()
|
|
- gateway_sub_qs = GatewaySubDevice.objects.filter(id__in=ids)
|
|
|
|
|
|
+ gateway_sub_qs = GatewaySubDevice.objects.filter(id__in=sub_id_list)
|
|
if gateway_sub_qs.exists():
|
|
if gateway_sub_qs.exists():
|
|
gateway_sub_qs.delete()
|
|
gateway_sub_qs.delete()
|
|
- smart_scene_qs = SmartScene.objects.filter(sub_device_id__in=ids)
|
|
|
|
|
|
+ smart_scene_qs = SmartScene.objects.filter(sub_device_id__in=sub_id_list)
|
|
if smart_scene_qs.exists():
|
|
if smart_scene_qs.exists():
|
|
|
|
+ # 查询网关序列号,确定MQTT主题
|
|
|
|
+ sub_device_qs = GatewaySubDevice.objects.filter(id=sub_id_list[0]).\
|
|
|
|
+ values('device__serial_number')
|
|
|
|
+ serial_number = sub_device_qs[0]['device__serial_number']
|
|
|
|
+ topic_name = SMART_SCENE_TOPIC.format(serial_number)
|
|
|
|
+
|
|
smart_scene_info = smart_scene_qs.values('id')
|
|
smart_scene_info = smart_scene_qs.values('id')
|
|
for smart_scene in smart_scene_info:
|
|
for smart_scene in smart_scene_info:
|
|
# 通知设备删除场景id
|
|
# 通知设备删除场景id
|
|
msg = {
|
|
msg = {
|
|
- 'smart_scene_delete': int(smart_scene['id'])
|
|
|
|
|
|
+ 'scene_event': SCENE_EVENT_DELETE,
|
|
|
|
+ 'scene_id': int(smart_scene['id'])
|
|
}
|
|
}
|
|
success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
try:
|
|
try:
|
|
@@ -272,7 +265,7 @@ class GatewayDeviceView(View):
|
|
return response.json(10044)
|
|
return response.json(10044)
|
|
time.sleep(0.3)
|
|
time.sleep(0.3)
|
|
smart_scene_qs.delete()
|
|
smart_scene_qs.delete()
|
|
- scene_log_qs = SceneLog.objects.filter(sub_device_id__in=ids)
|
|
|
|
|
|
+ scene_log_qs = SceneLog.objects.filter(sub_device_id__in=sub_id_list)
|
|
if scene_log_qs.exists():
|
|
if scene_log_qs.exists():
|
|
scene_log_qs.delete()
|
|
scene_log_qs.delete()
|
|
return response.json(0)
|
|
return response.json(0)
|
|
@@ -388,10 +381,7 @@ class GatewayDeviceView(View):
|
|
sub_id = item['sub_device']
|
|
sub_id = item['sub_device']
|
|
sub_id_list.append(sub_id)
|
|
sub_id_list.append(sub_id)
|
|
gateway_sub_qs = GatewaySubDevice.objects.filter(device_id=device_id, id=sub_id).values(
|
|
gateway_sub_qs = GatewaySubDevice.objects.filter(device_id=device_id, id=sub_id).values(
|
|
- 'id', 'device_type',
|
|
|
|
- 'nickname',
|
|
|
|
- 'src_addr', 'status',
|
|
|
|
- 'created_time', 'ieee_addr')
|
|
|
|
|
|
+ 'id', 'device_type', 'nickname', 'status', 'created_time', 'ieee_addr')
|
|
if not gateway_sub_qs.exists():
|
|
if not gateway_sub_qs.exists():
|
|
continue
|
|
continue
|
|
room_id = item['room_id']
|
|
room_id = item['room_id']
|
|
@@ -402,7 +392,6 @@ class GatewayDeviceView(View):
|
|
'gatewaySubId': gateway_sub_qs['id'],
|
|
'gatewaySubId': gateway_sub_qs['id'],
|
|
'nickName': gateway_sub_qs['nickname'],
|
|
'nickName': gateway_sub_qs['nickname'],
|
|
'deviceType': gateway_sub_qs['device_type'],
|
|
'deviceType': gateway_sub_qs['device_type'],
|
|
- 'srcAddr': gateway_sub_qs['src_addr'],
|
|
|
|
'status': gateway_sub_qs['status'],
|
|
'status': gateway_sub_qs['status'],
|
|
'createdTime': gateway_sub_qs['created_time'],
|
|
'createdTime': gateway_sub_qs['created_time'],
|
|
'roomName': gateway_room_name,
|
|
'roomName': gateway_room_name,
|