From 78749dffa63740916362b3aefb998e62619f04b5 Mon Sep 17 00:00:00 2001 From: fxxian Date: Wed, 27 Mar 2024 23:31:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E8=AE=BE=E5=A4=87=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=88=9B=E5=BB=BA=E8=AE=BE=E5=A4=87=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mosquito/mqtt_task.py | 47 ++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/apps/mosquito/mqtt_task.py b/apps/mosquito/mqtt_task.py index 1013ccc..9bf5227 100644 --- a/apps/mosquito/mqtt_task.py +++ b/apps/mosquito/mqtt_task.py @@ -58,16 +58,43 @@ def on_message(client, userdata, message): def update_device_info(device_id: str, post_data: Dict): device = DeviceInfo.objects.filter(device_id=device_id).first() - if device: - device.load = to_string(post_data, power_type=PowerType.Load) - device.storage_battery = to_string(post_data, power_type=PowerType.StorageBattery) - device.solar_panels = to_string(post_data, power_type=PowerType.SolarPanels) - device.ac_power = to_string(post_data, power_type=PowerType.ACPower) - device.dc_power = to_string(post_data, power_type=PowerType.DCPower) - device.count = post_data['count'] - device.signal = post_data['signal'] - device.led_status = post_data['RemoteLEDlightingFixtures']['LED'] - device.energy = post_data['quantityofelectricity'] + latitude, longitude = post_data['positioning'].split(',') + latitude = float(latitude.replace('N ', '')) + longitude = float(longitude.replace('E ', '')) + + count = post_data['count'] + signal = post_data['signal'] + led_status = post_data['RemoteLEDlightingFixtures']['LED'] + energy = post_data['quantityofelectricity'] + load = to_string(post_data, power_type=PowerType.Load) + storage_battery = to_string(post_data, power_type=PowerType.StorageBattery) + solar_panels = to_string(post_data, power_type=PowerType.SolarPanels) + ac_power = to_string(post_data, power_type=PowerType.ACPower) + dc_power = to_string(post_data, power_type=PowerType.DCPower) + if device is None: + DeviceInfo.objects.create(device_id=device_id, + longitude=longitude, + latitude=latitude, + count=count, + signal=signal, + led_status=led_status, + energy=energy, + load=load, + storage_battery=storage_battery, + solar_panels=solar_panels, + ac_power=ac_power, + dc_power=dc_power, + org_id=1,) + else: + device.load = load + device.storage_battery = storage_battery + device.solar_panels = solar_panels + device.ac_power = ac_power + device.dc_power = dc_power + device.count = count + device.signal = signal + device.led_status = led_status + device.energy = energy device.save()