Эх сурвалжийг харах

查询/修改温湿度传感器单位

locky 11 сар өмнө
parent
commit
602244114a

+ 61 - 4
Controller/SensorGateway/SubDeviceController.py

@@ -12,7 +12,8 @@ from django.db.models import Count, Q
 from django.views import View
 
 from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC, SENSOR_TYPE, EVENT_TYPE, SCENE_EVENT_SOS
-from Model.models import Device_Info, GatewaySubDevice, FamilyRoomDevice, SensorRecord, SmartScene, SceneLog, FamilyRoom
+from Model.models import Device_Info, GatewaySubDevice, FamilyRoomDevice, SensorRecord, SmartScene, SceneLog, \
+    FamilyRoom, DeviceTemperatureUnit
 from Service.CommonService import CommonService
 from Object.ResponseObject import ResponseObject
 
@@ -60,6 +61,10 @@ class GatewaySubDeviceView(View):
             return self.records_date(request_dict, response)
         elif operation == 'update-emergency-status':  # 更新智能按钮紧急开关状态
             return self.update_emergency_status(request_dict, response)
+        elif operation == 'get-temperature-unit':  # 查询温湿度传感器单位
+            return self.get_temperature_unit(request_dict, response)
+        elif operation == 'update-temperature-unit':  # 修改温湿度传感器单位
+            return self.update_temperature_unit(request_dict, response)
         else:
             return response.json(414)
 
@@ -125,18 +130,21 @@ class GatewaySubDeviceView(View):
                                                              firmware_version=firmware_version,
                                                              hardware_version=hardware_version,
                                                              created_time=now_time, updated_time=now_time)
-
+                sub_device_id = sub_device.id
                 family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, category=0).values(
                     'category_sort')
                 if family_room_device_qs.exists():
                     FamilyRoomDevice.objects.create(family_id=family_id, room_id=room_id, device_id=device_id,
-                                                    sub_device=sub_device.id, created_time=now_time,
+                                                    sub_device=sub_device_id, created_time=now_time,
                                                     updated_time=now_time,
                                                     category_sort=family_room_device_qs[0]['category_sort'])
                 else:
                     FamilyRoomDevice.objects.create(family_id=family_id, room_id=room_id, device_id=device_id,
-                                                    sub_device=sub_device.id, created_time=now_time,
+                                                    sub_device=sub_device_id, created_time=now_time,
                                                     updated_time=now_time)
+                # 温湿度传感器,设备温度单位表创建数据
+                if device_type == SENSOR_TYPE['tem_hum_sensor']:
+                    DeviceTemperatureUnit.objects.create(sub_device_id=sub_device_id)
 
             return response.json(0)
         except Exception as e:
@@ -648,6 +656,55 @@ class GatewaySubDeviceView(View):
         except Exception as e:
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
+    @staticmethod
+    def get_temperature_unit(request_dict, response):
+        """
+        查询温湿度传感器单位
+        @param request_dict: 请求参数
+        @request_dict gatewaySubId: 子设备id
+        @param response: 响应对象
+        @return: response
+        """
+        sub_device_id = request_dict.get('gatewaySubId', None)
+
+        if not all([sub_device_id]):
+            return response.json(444)
+
+        try:
+            device_temperature_unit_qs = DeviceTemperatureUnit.objects.filter(sub_device_id=sub_device_id).\
+                values('temperature_unit')
+            if not device_temperature_unit_qs.exists():
+                return response.json(173)
+            temperature_unit = device_temperature_unit_qs[0]['temperature_unit']
+            res = {
+                'temperature_unit': temperature_unit
+            }
+            return response.json(0, res)
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    @staticmethod
+    def update_temperature_unit(request_dict, response):
+        """
+        修改温湿度传感器单位
+        @param request_dict: 请求参数
+        @request_dict gatewaySubId: 子设备id
+        @param response: 响应对象
+        @return: response
+        """
+        sub_device_id = request_dict.get('gatewaySubId', None)
+        temperature_unit = request_dict.get('temperatureUnit', None)
+
+        if not all([sub_device_id, temperature_unit]):
+            return response.json(444)
+
+        try:
+            temperature_unit = int(temperature_unit)
+            device_temperature_unit_qs = DeviceTemperatureUnit.objects.filter(sub_device_id=sub_device_id).\
+                update(temperature_unit=temperature_unit)
+            return response.json(0)
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
 #
 #                   ___====-_  _-====___