SmartSwitchController.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. # -*- coding: utf-8 -*-
  2. """
  3. # @Author : cheng
  4. # @Time : 2023/7/10 11:20
  5. # @File: SmartSwitchController.py
  6. """
  7. from django.views import View
  8. from Model.models import SwitchInfo, SwitchDimmingSettings, SwitchChronopher
  9. from Object.ResponseObject import ResponseObject
  10. from Service.CommonService import CommonService
  11. class SmartSwitchView(View):
  12. def get(self, request, *args, **kwargs):
  13. request.encoding = 'utf-8'
  14. operation = kwargs.get('operation')
  15. return self.validation(request.GET, request, operation)
  16. def post(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. operation = kwargs.get('operation')
  19. return self.validation(request.POST, request, operation)
  20. def validation(self, request_dict, request, operation):
  21. token_code, user_id, response = CommonService.verify_token_get_user_id(request_dict, request)
  22. if token_code != 0:
  23. return response.json(token_code)
  24. if operation == 'get-switch': # 设备获取智能开关数据
  25. return self.get_switch_data(request_dict, response)
  26. else:
  27. return response.json(414)
  28. @staticmethod
  29. def get_switch_info(request_dict, response):
  30. """
  31. 获取智能开关设备信息
  32. @request_dict deviceId: 设备id
  33. @param request_dict: 请求参数
  34. @param response: 响应对象
  35. @return: response
  36. """
  37. device_id = request_dict.get('deviceId', None)
  38. if not device_id:
  39. return response.json(444)
  40. try:
  41. switch_info_qs = SwitchInfo.objects.fileter(device_id=device_id)
  42. if not switch_info_qs.exists():
  43. return response.json(173)
  44. res = {
  45. 'model': switch_info_qs[0]['model'],
  46. 'hardware_version': switch_info_qs[0]['hardware_version'],
  47. 'firmware_version': switch_info_qs[0]['firmware_version'],
  48. 'mac': switch_info_qs[0]['mac'],
  49. }
  50. return response.json(0, res)
  51. except Exception as e:
  52. print(e)
  53. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  54. @staticmethod
  55. def get_switch_setting(request_dict, response):
  56. """
  57. 获取智能开关设备设置信息
  58. @request_dict deviceId: 设备id
  59. @param request_dict: 请求参数
  60. @param response: 响应对象
  61. @return: response
  62. """
  63. device_id = request_dict.get('deviceId', None)
  64. if not device_id:
  65. return response.json(444)
  66. try:
  67. switch_setting_info_qs = SwitchDimmingSettings.objects.fileter(device_id=device_id)
  68. if switch_setting_info_qs.exists():
  69. res = {
  70. 'click_turn_on_speed': switch_setting_info_qs[0]['click_turn_on_speed'],
  71. 'click_turn_off_speed': switch_setting_info_qs[0]['click_turn_off_speed'],
  72. 'double_click': switch_setting_info_qs[0]['double_click'],
  73. 'press': switch_setting_info_qs[0]['press'],
  74. 'double_press_click_turn_on_speed': switch_setting_info_qs[0]['double_press_click_turn_on_speed'],
  75. 'double_press_click_turn_off_speed': switch_setting_info_qs[0]['double_press_click_turn_off_speed'],
  76. 'led': switch_setting_info_qs[0]['led'],
  77. 'dimming_correction': switch_setting_info_qs[0]['dimming_correction'],
  78. }
  79. return response.json(0, res)
  80. return response.json(173)
  81. except Exception as e:
  82. print(e)
  83. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  84. @staticmethod
  85. def get_chronopher_setting(request_dict, response):
  86. """
  87. 获取定时设置
  88. @request_dict deviceId: 设备id
  89. @param request_dict: 请求参数
  90. @param response: 响应对象
  91. @return: response
  92. """
  93. device_id = request_dict.get('deviceId', None)
  94. if not device_id:
  95. return response.json(444)
  96. try:
  97. switch_chronopher_qs = SwitchChronopher.objects.fileter(device_id=device_id)
  98. if not switch_chronopher_qs:
  99. return response.json(173)
  100. switch_chronopher_list = []
  101. for item in switch_chronopher_qs:
  102. switch_chronopher_list.append({
  103. 'id': item['id'],
  104. 'time_type_radio': item['time_type_radio'],
  105. 'time_point': item['time_point'],
  106. 'time_quantum_start_time': item['time_quantum_start_time'],
  107. 'time_quantum_end_time': item['time_quantum_end_time'],
  108. 'time_point_device_will_doing': item['time_point_device_will_doing'],
  109. 'time_quantum_device_will_doing': item['time_quantum_device_will_doing'],
  110. 'slow_open_or_close_speed': item['slow_open_or_close_speed'],
  111. 'repeat': item['repeat'],
  112. })
  113. return response.json(0, {'list': switch_chronopher_list})
  114. except Exception as e:
  115. print(e)
  116. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))