guanhailong 2 жил өмнө
parent
commit
1f6492b20d

+ 31 - 2
Controller/SensorGateway/SmartSocketController.py

@@ -58,6 +58,8 @@ class SmartSocketView(View):
             return self.save_power_statistics(request_dict, ResponseObject('cn'))
         elif operation == 'reset':  # 设备复位
             return self.socket_reset(request_dict, ResponseObject('cn'))
+        elif operation == 'alexa-socket-switch':  # 新增alexa智能开关
+            return self.alexa_socket_switch(request_dict, ResponseObject('cn'))
         token_code, user_id, response = CommonService \
             .verify_token_get_user_id(request_dict, request)
         if token_code != 0:
@@ -468,7 +470,8 @@ class SmartSocketView(View):
                                                                                                 'power',
                                                                                                 'created_time')
             # 当天使用电量
-            data['electricityToday'] = round(today_socket_power_qs[0]['electricity'], 1) if today_socket_power_qs.exists() else 0
+            data['electricityToday'] = round(today_socket_power_qs[0]['electricity'],
+                                             1) if today_socket_power_qs.exists() else 0
             # 当天累计时长
             data['accumulated_time'] = today_socket_power_qs[0][
                 'accumulated_time'] if today_socket_power_qs.exists() else 0
@@ -812,4 +815,30 @@ class SmartSocketView(View):
                 })
             return response.json(0, schedule_date_list)
         except Exception as e:
-            return response.json(500, repr(e))
+            return response.json(500, repr(e))
+
+    @classmethod
+    def alexa_socket_switch(cls, request_dict, response):
+        """
+        alexa智能开关
+        @request_dict serialNumber: 设备序列号
+        @request_dict status: 开关状态
+        @param request_dict: 请求参数
+        @param response: 响应对象
+        @return: response
+        """
+        serialNumber = request_dict.get('serial_number', None)
+        status = request_dict.get('power_controller', None)
+        if not all([serialNumber, status]):
+            return response.json(444)
+        # 同步数据库并下发MQTT消息到插座设备
+        try:
+            socket_info_qs = SocketInfo.objects.get(serial_number=serialNumber)
+            device_id = socket_info_qs.device_id
+            result = cls.save_socket_switch(device_id, serialNumber, int(status))
+            if not result:
+                return response.json(177)
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))