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