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()