Эх сурвалжийг харах

alexa删除和更新插座上报

peng 2 жил өмнө
parent
commit
0f357f764f

+ 26 - 2
Controller/SensorGateway/GatewayDeviceController.py

@@ -10,6 +10,7 @@ import time
 import datetime
 import datetime
 import logging
 import logging
 
 
+import requests
 from django.db import transaction
 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
@@ -17,13 +18,16 @@ from decimal import Decimal
 
 
 from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC
 from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
+from Controller.SensorGateway.SmartSocketController import SmartSocketView
 from Model.models import FamilyRoomDevice, FamilyRoom, GatewaySubDevice, Device_Info, UserFamily, FamilyMember, \
 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.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Object.RedisObject import RedisObject
 from Object.RedisObject import RedisObject
 
 
+
 class GatewayDeviceView(View):
 class GatewayDeviceView(View):
 
 
     def get(self, request, *args, **kwargs):
     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)
             uid_set_qs = UidSetModel.objects.filter(uid=device_info_qs[0].UID)
             if uid_set_qs.exists():
             if uid_set_qs.exists():
                 uid_set_qs.update(nickname=device_name)
                 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)
         return response.json(0)
 
 
     @classmethod
     @classmethod
@@ -185,6 +194,7 @@ class GatewayDeviceView(View):
                             scene_log_qs = SceneLog.objects.filter(device_id=serial_number)
                             scene_log_qs = SceneLog.objects.filter(device_id=serial_number)
                             if scene_log_qs.exists():
                             if scene_log_qs.exists():
                                 scene_log_qs.delete()
                                 scene_log_qs.delete()
+                            SmartSocketView.delete_alexa_socket(serial_number)
 
 
                         # 如果有子设备,删除子设备和关联的场景数据
                         # 如果有子设备,删除子设备和关联的场景数据
                         gateway_qs = GatewaySubDevice.objects.filter(device_id=device_id)
                         gateway_qs = GatewaySubDevice.objects.filter(device_id=device_id)
@@ -337,7 +347,7 @@ class GatewayDeviceView(View):
                 if not socket_info_qs.exists():
                 if not socket_info_qs.exists():
                     return response.json(173)
                     return response.json(173)
                 socket_data = cls.smart_socket(device_id, socket_info_qs)
                 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 = FamilyRoomDevice.objects.filter(device_id=device_id)
             family_device_qs = family_device_qs.filter(~Q(sub_device=0)).order_by('-created_time')
             family_device_qs = family_device_qs.filter(~Q(sub_device=0)).order_by('-created_time')
 
 
@@ -468,6 +478,20 @@ class GatewayDeviceView(View):
             print(e)
             print(e)
             return response.json(177, repr(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))
 #
 #
 #                   ___====-_  _-====___
 #                   ___====-_  _-====___
 #             _--^^^#####//      \\#####^^^--_
 #             _--^^^#####//      \\#####^^^--_

+ 14 - 6
Controller/SensorGateway/SmartSocketController.py

@@ -12,6 +12,7 @@ import logging
 import time
 import time
 from decimal import Decimal
 from decimal import Decimal
 
 
+import requests
 from dateutil.parser import parse
 from dateutil.parser import parse
 from django.db import transaction
 from django.db import transaction
 from django.db.models import Sum, Count
 from django.db.models import Sum, Count
@@ -115,6 +116,8 @@ class SmartSocketView(View):
                 FamilyRoomDevice.objects.filter(device_id=device_id).delete()
                 FamilyRoomDevice.objects.filter(device_id=device_id).delete()
                 # 删除设备
                 # 删除设备
                 Device_Info.objects.filter(id=device_id).delete()
                 Device_Info.objects.filter(id=device_id).delete()
+                # alexa删除插座
+                cls.delete_alexa_socket(serial_number)
                 LOGGER.info('智能插座{}设备已复位'.format(serial_number))
                 LOGGER.info('智能插座{}设备已复位'.format(serial_number))
                 return response.json(0)
                 return response.json(0)
         except Exception as e:
         except Exception as e:
@@ -861,16 +864,21 @@ class SmartSocketView(View):
         # 同步数据库并下发MQTT消息到插座设备
         # 同步数据库并下发MQTT消息到插座设备
         try:
         try:
             socket_info_qs = SocketInfo.objects.filter(serial_number=serial_number).values('status')
             socket_info_qs = SocketInfo.objects.filter(serial_number=serial_number).values('status')
-            device_info_qs = Device_Info.objects.filter(serial_number=serial_number).values('userID__region_country',
-                                                                                            'NickName')
-            country_qs = CountryModel.objects.filter(id=device_info_qs[0]['userID__region_country']).values(
-                'region__continent_code')
             res = {
             res = {
-                'nick_name': device_info_qs[0]['NickName'],
-                'region': country_qs[0]['region__continent_code'] if country_qs.exists() else 'EN',
                 'power_state': socket_info_qs[0]['status']
                 'power_state': socket_info_qs[0]['status']
             }
             }
             return response.json(0, res)
             return response.json(0, res)
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)
             return response.json(500, repr(e))
             return response.json(500, repr(e))
+
+    @classmethod
+    def delete_alexa_socket(cls, serial_number):
+        url = 'https://www.zositech.xyz/deviceStatus/deleteSwitch'
+        data = {
+            'serial_number': serial_number
+        }
+        try:
+            requests.post(url=url, data=data, timeout=5)
+        except Exception as e:
+            print(repr(e))