feat: 补充mqtt其余字段

This commit is contained in:
fxxian 2024-03-26 16:34:02 +08:00
parent e773252d17
commit 6f4bff7e7e
3 changed files with 67 additions and 5 deletions

View File

@ -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='灭蚊数量'),
),
]

View File

@ -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='电池电压电流功率')

View File

@ -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,