فهرست منبع

获取插座状态

peng 2 سال پیش
والد
کامیت
c31c4221c8
1فایلهای تغییر یافته به همراه34 افزوده شده و 1 حذف شده
  1. 34 1
      Controller/SensorGateway/SmartSocketController.py

+ 34 - 1
Controller/SensorGateway/SmartSocketController.py

@@ -18,7 +18,8 @@ from django.db.models import Sum, Count
 from django.http import QueryDict
 from django.views import View
 
-from Model.models import SocketInfo, SocketSchedule, Device_Info, SocketPowerStatistics, SceneLog, FamilyRoomDevice
+from Model.models import SocketInfo, SocketSchedule, Device_Info, SocketPowerStatistics, SceneLog, FamilyRoomDevice, \
+    CountryModel
 from Object.ResponseObject import ResponseObject
 from Object.utils import LocalDateTimeUtil
 from Service.CommonService import CommonService
@@ -60,6 +61,8 @@ class SmartSocketView(View):
             return self.socket_reset(request_dict, ResponseObject('cn'))
         elif operation == 'alexa-socket-switch':  # 新增alexa智能开关
             return self.alexa_socket_switch(request_dict, ResponseObject('cn'))
+        elif operation == 'getSocketState':  # 获取alexa智能开关状态
+            return self.get_socket_state(request_dict, ResponseObject('cn'))
         token_code, user_id, response = CommonService \
             .verify_token_get_user_id(request_dict, request)
         if token_code != 0:
@@ -842,3 +845,33 @@ class SmartSocketView(View):
         except Exception as e:
             print(e)
             return response.json(500, repr(e))
+
+    @classmethod
+    def get_socket_state(cls, request_dict, response):
+        """
+        获取alexa智能开关状态
+        @request_dict serialNumber: 设备序列号
+        @request_dict status: 开关状态
+        @param request_dict: 请求参数
+        @param response: 响应对象
+        @return: response
+        """
+        serial_number = request_dict.get('serial_number', None)
+        if not all([serial_number]):
+            return response.json(444)
+        # 同步数据库并下发MQTT消息到插座设备
+        try:
+            socket_info_qs = SocketInfo.objects.get(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 = {
+                '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']
+            }
+            return response.json(0, res)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))