from django.db import models from django.utils.timezone import datetime from django.contrib.contenttypes.fields import GenericRelation from smart.models import SmartModule, SmartPush class Mosquito(models.Model): name = models.CharField(max_length=100, verbose_name='设备名称') device_id = models.CharField(max_length=100, verbose_name='设备ID') region = models.CharField(max_length=50, verbose_name='区域') smart_module = GenericRelation(SmartModule) class Meta: verbose_name = '灭蚊灯' verbose_name_plural = verbose_name def __str__(self): return self.name def get_absolute_url(self): pass def get_api_url(self): pass class MosqPost(models.Model): smart_push = models.ForeignKey(SmartPush, on_delete='PROTECT') mosq = models.ForeignKey(Mosquito, verbose_name='灭蚊灯', on_delete='PROTECT') led = models.PositiveIntegerField(verbose_name='灭蚊数') energy = models.PositiveIntegerField(verbose_name='电量') # signal = models.IntegerField(verbose_name='信号') # coordinate = models.CharField(max_length=100, verbose_name='坐标') time = models.DateTimeField(auto_now=False, auto_now_add=True) class Meta: verbose_name = '灭蚊数据' verbose_name_plural = verbose_name def __str__(self): return '{0}: {1}'.format(self.mosq.name, self.led) def get_api_url(self): pass class MosqPostStatistic(models.Model): total = models.PositiveIntegerField(verbose_name='总数') increment = models.IntegerField(verbose_name='增量') date = models.DateField(auto_now_add=False, verbose_name='日期', unique=True) class Meta: verbose_name = '统计报表' verbose_name_plural = verbose_name def __str__(self): return '{0}: {1}'.format(self.date, self.increment) class DevicePostStatistic(models.Model): device_id = models.CharField(max_length=100, verbose_name='设备ID') org = models.ForeignKey('Org', verbose_name='所在组织', on_delete='PROTECT') total = models.PositiveIntegerField(verbose_name='总数') date = models.DateField(auto_now_add=False, verbose_name='日期', unique=False) create_time = models.DateTimeField(auto_now_add=True, blank=True, null=True, verbose_name='创建时间') update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name='更新时间') class Meta: verbose_name = '设备日志统计表' verbose_name_plural = verbose_name def __str__(self): return '{0}: {1}'.format(self.device_id, self.total) class Org(models.Model): name = models.CharField(max_length=100, verbose_name='组织名称') code = models.CharField(max_length=10, verbose_name='组织代码') desc = models.CharField(max_length=100, blank='True', verbose_name='描述') class Meta: verbose_name = '客户组织' verbose_name_plural = verbose_name def __str__(self): return self.name class DeviceInfo(models.Model): device_id = models.CharField(max_length=100, unique=True, verbose_name='设备ID') device_name = models.CharField(max_length=100, blank=True, null=True, verbose_name='设备名称') org = models.ForeignKey(Org, verbose_name='所在组织', on_delete='PROTECT') class Meta: verbose_name = '灭蚊灯设备' verbose_name_plural = verbose_name def __str__(self): return self.device_id class DeviceTempLog(models.Model): device_id = models.CharField(max_length=100, verbose_name='设备ID') temperature = models.DecimalField(max_digits=6, decimal_places=2, verbose_name='温度') humidity = models.DecimalField(max_digits=6, decimal_places=2, verbose_name='湿度') last_time = models.DateTimeField(null=True, blank=True, db_index=True, verbose_name='日志时间') create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') class Meta: verbose_name = '设备温度湿度日志' verbose_name_plural = verbose_name def __str__(self): return self.device_id