diff --git a/apps/mosquito/migrations/0031_auto_20240326_1106.py b/apps/mosquito/migrations/0031_auto_20240326_1106.py new file mode 100644 index 0000000..1a1da53 --- /dev/null +++ b/apps/mosquito/migrations/0031_auto_20240326_1106.py @@ -0,0 +1,48 @@ +# Generated by Django 2.2.4 on 2024-03-26 03:06 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mosquito', '0030_auto_20240325_1452'), + ] + + operations = [ + migrations.AddField( + model_name='deviceinfo', + name='energy', + field=models.FloatField(blank=True, null=True, verbose_name='电量'), + ), + migrations.AddField( + model_name='deviceinfo', + name='signal', + field=models.PositiveIntegerField(blank=True, null=True, verbose_name='信号'), + ), + migrations.AddField( + model_name='mosqpost', + name='energy', + field=models.FloatField(blank=True, null=True, verbose_name='电量'), + ), + migrations.AddField( + model_name='mosqpost', + name='led_status', + field=models.CharField(default='OFF', max_length=10, verbose_name='LED 状态'), + ), + migrations.AddField( + model_name='mosqpost', + name='signal', + field=models.PositiveIntegerField(blank=True, null=True, verbose_name='信号'), + ), + migrations.AlterField( + model_name='deviceinfo', + name='led_status', + field=models.CharField(choices=[('ON', 'ON'), ('OFF', 'OFF')], default='OFF', max_length=10, verbose_name='LED 状态'), + ), + migrations.AlterField( + model_name='mosqpost', + name='count', + field=models.PositiveIntegerField(blank=True, null=True, verbose_name='灭蚊数量'), + ), + ] diff --git a/apps/mosquito/models.py b/apps/mosquito/models.py index 0483399..ff503eb 100644 --- a/apps/mosquito/models.py +++ b/apps/mosquito/models.py @@ -4,7 +4,10 @@ from smart.models import SmartModule, SmartPush class MosqPost(models.Model): device_id = models.CharField(db_index=True, max_length=100, verbose_name='设备ID') - count = models.PositiveIntegerField(verbose_name="灭蚊数量") + count = models.PositiveIntegerField(blank=True, null=True, verbose_name="灭蚊数量") + signal = models.PositiveIntegerField(blank=True, null=True, verbose_name="信号") + energy = models.FloatField(blank=True, null=True, verbose_name='电量') + led_status = models.CharField(max_length=10, default='OFF', verbose_name='LED 状态') load = models.CharField(max_length=100, blank=True, null=True, verbose_name='负载电压电流功率') storage_battery = models.CharField(max_length=100, blank=True, null=True, verbose_name='电池电压电流功率') solar_panels = models.CharField(max_length=100, blank=True, null=True, verbose_name='太阳能电压电流功率') @@ -67,8 +70,8 @@ class Org(models.Model): LED_CHOICE = ( - ('on', 'on'), - ('off', 'off') + ('ON', 'ON'), + ('OFF', 'OFF') ) @@ -83,6 +86,8 @@ class DeviceInfo(models.Model): # mqtt 数据 count = models.PositiveIntegerField(blank=True, null=True, verbose_name='蚊子计数') + signal = models.PositiveIntegerField(blank=True, null=True, verbose_name="信号") + energy = models.FloatField(blank=True, null=True, verbose_name='电量') led_status = models.CharField(max_length=10, choices=LED_CHOICE, default='OFF', verbose_name='LED 状态') load = models.CharField(max_length=100, blank=True, null=True, verbose_name='负载电压电流功率') storage_battery = models.CharField(max_length=100, blank=True, null=True, verbose_name='电池电压电流功率') diff --git a/apps/mosquito/mqtt_task.py b/apps/mosquito/mqtt_task.py index ad5d0b5..1013ccc 100644 --- a/apps/mosquito/mqtt_task.py +++ b/apps/mosquito/mqtt_task.py @@ -51,9 +51,9 @@ def on_message(client, userdata, message): update_device_info(device_id, post_data=post_data) create_mosq_post(device_id, post_data=post_data) print(f"Device: {device_id} update & create post success") - except KeyError: + except KeyError as e: print(f"Device: {device_id} update & create post failed") - print(payload) + print(f"key: {e} is not existed") def update_device_info(device_id: str, post_data: Dict): @@ -65,6 +65,9 @@ def update_device_info(device_id: str, post_data: Dict): 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'] device.save() @@ -75,9 +78,15 @@ def create_mosq_post(device_id: str, post_data: Dict): ac_power = to_string(post_data, power_type=PowerType.ACPower) dc_power = to_string(post_data, power_type=PowerType.DCPower) count = post_data['count'] + led_status = post_data['RemoteLEDlightingFixtures']['LED'] + signal = post_data['signal'] + energy = post_data['quantityofelectricity'] MosqPost.objects.create(device_id=device_id, count=count, + led_status=led_status, load=load, + signal=signal, + energy=energy, storage_battery=storage_battery, solar_panels=solar_panels, ac_power=ac_power,