Forráskód Böngészése

更新设备影子增加国外客户端

zhangdongming 2 éve
szülő
commit
d30c3f7276
1 módosított fájl, 29 hozzáadás és 24 törlés
  1. 29 24
      Controller/SensorGateway/GatewayDeviceController.py

+ 29 - 24
Controller/SensorGateway/GatewayDeviceController.py

@@ -16,7 +16,8 @@ from django.views.generic.base import View
 
 from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC
 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_CHINA_REGION, AWS_IOT_SES_ACCESS_FOREIGN_ID, AWS_IOT_SES_ACCESS_FOREIGN_SECRET, \
+    AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA
 from Ansjer.config import LOGGER
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
 from Controller.SensorGateway.SmartSocketController import SmartSocketView
@@ -45,6 +46,10 @@ class GatewayDeviceView(View):
 
     def validation(self, request_dict, request, operation):
 
+        if operation == 'bind-serial-user':
+            response = ResponseObject()
+            return self.bind_serial_user(request_dict, response)
+
         token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
         lang = request_dict.get('lang', None)
         response = ResponseObject(lang) if lang else ResponseObject(token.lang)
@@ -63,8 +68,6 @@ class GatewayDeviceView(View):
             return self.my_family_list(user_id, response)
         elif operation == 'location-setting':
             return self.device_location_setting(user_id, request_dict, response)
-        elif operation == 'bind-serial-user':
-            return self.bind_serial_user(user_id, request_dict, response)
         elif operation == 'get-serial-user':
             return self.get_serial_user(user_id, request_dict, response)
 
@@ -283,20 +286,22 @@ class GatewayDeviceView(View):
         下发消息到设备
         """
         try:
+            # 更新影子为离线状态
+            data = {
+                "state": {"reported": {"online": 0}}
+            }
+            iot_data_plane = None
             thing_name = 'LC_' + serial_number
             if 'test' == CONFIG_INFO or CONFIG_INFO == 'cn':
-                # 创建IoT客户端
                 iot_data_plane = AWSIoTDataPlaneService(AWS_IOT_SES_ACCESS_CHINA_ID,
                                                         AWS_IOT_SES_ACCESS_CHINA_SECRET,
                                                         AWS_IOT_SES_ACCESS_CHINA_REGION)
-                # 更新影子为离线状态
-                data = {
-                    "state": {
-                        "reported": {
-                            "online": 0
-                        }
-                    }
-                }
+
+            elif 'us' == CONFIG_INFO:
+                iot_data_plane = AWSIoTDataPlaneService(AWS_IOT_SES_ACCESS_FOREIGN_ID,
+                                                        AWS_IOT_SES_ACCESS_FOREIGN_SECRET,
+                                                        AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA)
+            if iot_data_plane:
                 res = iot_data_plane.update_thing_shadow(thing_name, data)
                 LOGGER.info('删除插座更新设备影子状态{}'.format(res))
             #  下发设备进行重置
@@ -461,17 +466,19 @@ class GatewayDeviceView(View):
         data['accumulatedTime'] = socket_power_qs[0]['accumulated_time']
         return data
 
-    @classmethod
-    def bind_serial_user(cls, user_id, request_dict, response):
+    @staticmethod
+    def bind_serial_user(request_dict, response):
         """
-        绑定网关序列号和用户id
-        @param user_id: 用户id
+        绑定序列号和用户id
         @param request_dict: 请求参数字典
+        @request_dict user_id: 用户id
+        @request_dict serial_number: 序列号
         @param response: 响应对象
         @return:
         """
-        serial_number = request_dict.get('serialNumber')
-        if not serial_number:
+        user_id = request_dict.get('user_id')
+        serial_number = request_dict.get('serial_number')
+        if not all([user_id, serial_number]):
             return response.json(444)
         try:
             redis_obj = RedisObject()
@@ -480,11 +487,10 @@ class GatewayDeviceView(View):
                 return response.json(178)
             return response.json(0)
         except Exception as e:
-            print(e)
-            return response.json(177, repr(e))
+            return response.json(500, repr(e))
 
-    @classmethod
-    def get_serial_user(cls, user_id, request_dict, response):
+    @staticmethod
+    def get_serial_user(user_id, request_dict, response):
         """
         获取用户id绑定网关序列号
         @param user_id: 用户id
@@ -499,8 +505,7 @@ class GatewayDeviceView(View):
                 return response.json(173)
             return response.json(0, {'serialNumber': serial_number})
         except Exception as e:
-            print(e)
-            return response.json(177, repr(e))
+            return response.json(500, repr(e))
 
     @classmethod
     def update_socket(cls, serial_number, device_name, user_id, region):