|
@@ -10,6 +10,7 @@ import time
|
|
|
import datetime
|
|
|
import logging
|
|
|
|
|
|
+import requests
|
|
|
from django.db import transaction
|
|
|
from django.db.models import Q
|
|
|
from django.views.generic.base import View
|
|
@@ -17,13 +18,16 @@ from decimal import Decimal
|
|
|
|
|
|
from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC
|
|
|
from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
|
|
|
+from Controller.SensorGateway.SmartSocketController import SmartSocketView
|
|
|
from Model.models import FamilyRoomDevice, FamilyRoom, GatewaySubDevice, Device_Info, UserFamily, FamilyMember, \
|
|
|
- UidSetModel, iotdeviceInfoModel, SmartScene, SceneLog, SocketInfo, SocketPowerStatistics, SocketSchedule
|
|
|
+ UidSetModel, iotdeviceInfoModel, SmartScene, SceneLog, SocketInfo, SocketPowerStatistics, SocketSchedule, \
|
|
|
+ CountryModel
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
from Service.CommonService import CommonService
|
|
|
from Object.RedisObject import RedisObject
|
|
|
|
|
|
+
|
|
|
class GatewayDeviceView(View):
|
|
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
@@ -121,6 +125,11 @@ class GatewayDeviceView(View):
|
|
|
uid_set_qs = UidSetModel.objects.filter(uid=device_info_qs[0].UID)
|
|
|
if uid_set_qs.exists():
|
|
|
uid_set_qs.update(nickname=device_name)
|
|
|
+ if device_info_qs[0].Type == 201:
|
|
|
+ device_info_qs = device_info_qs.values('userID__region_country')
|
|
|
+ region = device_info_qs[0]['userID__region_country']
|
|
|
+ cls.update_socket(serial_number=device_info_qs[0].serial_number, device_name=device_name,
|
|
|
+ user_id=user_id, region=region)
|
|
|
return response.json(0)
|
|
|
|
|
|
@classmethod
|
|
@@ -185,6 +194,7 @@ class GatewayDeviceView(View):
|
|
|
scene_log_qs = SceneLog.objects.filter(device_id=serial_number)
|
|
|
if scene_log_qs.exists():
|
|
|
scene_log_qs.delete()
|
|
|
+ SmartSocketView.delete_alexa_socket(serial_number)
|
|
|
|
|
|
# 如果有子设备,删除子设备和关联的场景数据
|
|
|
gateway_qs = GatewaySubDevice.objects.filter(device_id=device_id)
|
|
@@ -337,7 +347,7 @@ class GatewayDeviceView(View):
|
|
|
if not socket_info_qs.exists():
|
|
|
return response.json(173)
|
|
|
socket_data = cls.smart_socket(device_id, socket_info_qs)
|
|
|
- gateway = {key:socket_data.get(key, gateway[key]) for key in gateway.keys()}
|
|
|
+ gateway = {key: socket_data.get(key, gateway[key]) for key in gateway.keys()}
|
|
|
family_device_qs = FamilyRoomDevice.objects.filter(device_id=device_id)
|
|
|
family_device_qs = family_device_qs.filter(~Q(sub_device=0)).order_by('-created_time')
|
|
|
|
|
@@ -468,6 +478,20 @@ class GatewayDeviceView(View):
|
|
|
print(e)
|
|
|
return response.json(177, repr(e))
|
|
|
|
|
|
+ @classmethod
|
|
|
+ def update_socket(cls, serial_number, device_name, user_id, region):
|
|
|
+ url = 'https://www.zositech.xyz/deviceStatus/addOrUpdateSwitch'
|
|
|
+ try:
|
|
|
+ country_qs = CountryModel.objects.filter(id=region).values('region__continent_code')
|
|
|
+ data = {
|
|
|
+ 'nick_name': device_name,
|
|
|
+ 'serial_number': serial_number,
|
|
|
+ 'user_id': user_id,
|
|
|
+ 'region': country_qs[0]['region__continent_code'] if country_qs.exists() else 'EN'
|
|
|
+ }
|
|
|
+ requests.post(url=url, data=data, timeout=5)
|
|
|
+ except Exception as e:
|
|
|
+ print(repr(e))
|
|
|
#
|
|
|
# ___====-_ _-====___
|
|
|
# _--^^^#####// \\#####^^^--_
|