From befe00d0cf0ef63ef1463fa02874a4d3870d0850 Mon Sep 17 00:00:00 2001 From: fxxian Date: Tue, 26 Mar 2024 21:04:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8C=BA=E5=88=86=E4=B8=80=E4=BA=8C?= =?UTF-8?q?=E4=BB=A3=EF=BC=8Csignal/energy/status?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/counter/api/serializers.py | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/apps/counter/api/serializers.py b/apps/counter/api/serializers.py index d511f01..8cc1217 100644 --- a/apps/counter/api/serializers.py +++ b/apps/counter/api/serializers.py @@ -194,6 +194,9 @@ class DeviceCountWithInfoSerializer(DeviceCountSerializer): return online +device_status_map = {'ON': 1, 'OFF': 0} + + class DeviceInfoSerializer(serializers.ModelSerializer): device_name = serializers.SerializerMethodField() status = serializers.SerializerMethodField() @@ -221,6 +224,7 @@ class DeviceInfoSerializer(serializers.ModelSerializer): super().__init__(*args, **kwargs) self.latest = None self.cur_device = None + self.mosq_device_info = None def get_device_name(self, obj): qs = MosquitoDeviceInfo.objects.filter(device_id=obj.device_id) @@ -230,8 +234,14 @@ class DeviceInfoSerializer(serializers.ModelSerializer): return device.device_name return None - @staticmethod - def get_status(obj): + def get_status(self, obj): + # 区分一代和二代设备 + if obj.chip_type == 'AIR-V2': + mosq_device_info = MosquitoDeviceInfo.objects.filter(device_id=obj.device_id).first() + if mosq_device_info and mosq_device_info.led_status: + self.mosq_device_info = mosq_device_info + return device_status_map[mosq_device_info.led_status] + return obj.online def get_count(self, obj) -> str: @@ -239,20 +249,29 @@ class DeviceInfoSerializer(serializers.ModelSerializer): # 区分一代和二代设备 if obj.chip_type == 'AIR-V2': - mosq_device_info = MosquitoDeviceInfo.objects.filter(device_id=obj.device_id).first() - if mosq_device_info and mosq_device_info.count: - return mosq_device_info.count + if self.mosq_device_info and self.mosq_device_info.count: + return self.mosq_device_info.count if self.latest: return self.latest['count'] return '0' def get_signal(self, obj) -> str: + # 区分一代和二代设备 + if obj.chip_type == 'AIR-V2': + if self.mosq_device_info and self.mosq_device_info.signal: + return self.mosq_device_info.signal + if self.latest: return self.latest['csq'] return '0' def get_energy(self, obj) -> str: + # 区分一代和二代设备 + if obj.chip_type == 'AIR-V2': + if self.mosq_device_info and self.mosq_device_info.energy: + return self.mosq_device_info.energy + if self.latest: if float(self.latest['vol']) <= 100: return '{}{}'.format(round(float(self.latest['vol']), 1), '%')