from django.db import models 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(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='太阳能电压电流功率') ac_power = models.CharField(max_length=100, blank=True, null=True, verbose_name='AC电压电流功率') dc_power = models.CharField(max_length=100, blank=True, null=True, verbose_name='DC电压电流功率') device_temp = models.FloatField(blank=True, null=True, verbose_name='设备温度') 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: unique_together = ( ('device_id', 'create_time'), ) verbose_name = '灭蚊灯数据' verbose_name_plural = verbose_name 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='总数') increment = models.IntegerField(blank=True, null=True, 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: unique_together = ('device_id', 'date') 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 LED_CHOICE = ( ('ON', 'ON'), ('OFF', 'OFF') ) 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='设备名称') longitude = models.FloatField(blank=True, null=True, verbose_name='经度') latitude = models.FloatField(blank=True, null=True, verbose_name='维度') location = models.CharField(max_length=100, blank=True, null=True, verbose_name='地理位置') led_lifetime = models.PositiveIntegerField(default=30000, verbose_name='LED 寿命') launch_time = models.DateTimeField(blank=True, null=True, verbose_name='第一次启动时间') last_connect = models.DateTimeField(blank=True, null=True, verbose_name='最近连接时间') # 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='电池电压电流功率') solar_panels = models.CharField(max_length=100, blank=True, null=True, verbose_name='太阳能电压电流功率') ac_power = models.CharField(max_length=100, blank=True, null=True, verbose_name='AC电压电流功率') dc_power = models.CharField(max_length=100, blank=True, null=True, verbose_name='DC电压电流功率') device_temp = models.FloatField(blank=True, null=True, verbose_name='设备温度') ambient_temp = models.FloatField(blank=True, null=True, verbose_name='环境温度') daily_charge_capacity = models.FloatField(blank=True, null=True, verbose_name='日充电量') daily_discharge_capacity = models.FloatField(blank=True, null=True, verbose_name='日放电量') org = models.ForeignKey(Org, verbose_name='所在组织', on_delete='PROTECT') weather_device_id = models.CharField(max_length=100, blank=True, null=True, verbose_name='气象台ID') weather_code = models.CharField(max_length=100, blank=True, null=True, verbose_name='气象台Code') # 岭大专用字段 location_id = models.CharField(max_length=100, blank=True, null=True, verbose_name='地理位置ID(LU)') point_x = models.FloatField(blank=True, null=True, verbose_name='POINT_X(LU)') point_y = models.FloatField(blank=True, null=True, verbose_name='POINT_Y(LU)') 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 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 class WeatherStationInfo(models.Model): device_id = models.CharField(unique=True, max_length=100, verbose_name='气象台ID') device_name = models.CharField(max_length=100, blank=True, null=True, verbose_name='气象台名称') longitude = models.FloatField(blank=True, null=True, verbose_name='经度') latitude = models.FloatField(blank=True, null=True, verbose_name='维度') org = models.ForeignKey(Org, verbose_name='所在组织', on_delete='PROTECT') location_id = models.CharField(max_length=100, blank=True, null=True, verbose_name='地理位置ID(LU)') point_x = models.FloatField(blank=True, null=True, verbose_name='POINT_X(LU)') point_y = models.FloatField(blank=True, null=True, verbose_name='POINT_Y(LU)') class Meta: verbose_name = '气象台设备' verbose_name_plural = verbose_name def __str__(self): return self.device_id class WeatherLog(models.Model): data_time = models.DateTimeField(blank=True, null=True, verbose_name='时间') device_id = models.CharField(max_length=100, verbose_name='台站编号') device_name = models.CharField(max_length=255, blank=True, null=True, verbose_name='台站名称') env_temp = models.CharField(max_length=255, blank=True, null=True, verbose_name='环温') temperature1 = models.CharField(max_length=255, blank=True, null=True, verbose_name='温度1') temperature2 = models.CharField(max_length=255, blank=True, null=True, verbose_name='温度2') temperature3 = models.CharField(max_length=255, blank=True, null=True, verbose_name='温度3') temperature4 = models.CharField(max_length=255, blank=True, null=True, verbose_name='温度4') temperature5 = models.CharField(max_length=255, blank=True, null=True, verbose_name='温度5') dew_point_temp = models.CharField(max_length=255, blank=True, null=True, verbose_name='露点温度') env_humi = models.CharField(max_length=255, blank=True, null=True, verbose_name='环湿') soil_humi1 = models.CharField(max_length=255, blank=True, null=True, verbose_name='土湿1') soil_humi2 = models.CharField(max_length=255, blank=True, null=True, verbose_name='土湿2') soil_humi3 = models.CharField(max_length=255, blank=True, null=True, verbose_name='土湿3') co2 = models.CharField(max_length=255, blank=True, null=True, verbose_name='CO2') evaporation = models.CharField(max_length=255, blank=True, null=True, verbose_name='蒸发') air_pressure = models.CharField(max_length=255, blank=True, null=True, verbose_name='气压') total_radiation_1_ins = models.CharField(max_length=255, blank=True, null=True, verbose_name='总辐射1瞬时') scat_radiation_ins = models.CharField(max_length=255, blank=True, null=True, verbose_name='散辐射瞬时') direct_radiation_ins = models.CharField(max_length=255, blank=True, null=True, verbose_name='直接辐射瞬时') total_radiation_2_ins = models.CharField(max_length=255, blank=True, null=True, verbose_name='总辐射2瞬时') net_radiation_ins = models.CharField(max_length=255, blank=True, null=True, verbose_name='净辐射瞬时') pho_radiation_ins = models.CharField(max_length=255, blank=True, null=True, verbose_name='光合辐射瞬时') uv_radiation_ins = models.CharField(max_length=255, blank=True, null=True, verbose_name='紫外辐射瞬时') wind_direction = models.CharField(max_length=255, blank=True, null=True, verbose_name='风向') wind_speed_ins = models.CharField(max_length=255, blank=True, null=True, verbose_name='瞬时风速') wind_speed_2mins = models.CharField(max_length=255, blank=True, null=True, verbose_name='2分钟风速') wind_speed_10mins = models.CharField(max_length=255, blank=True, null=True, verbose_name='10分钟风速') rainfall_interval_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='雨量间隔累计') sunshine_time_interval_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='日照时间隔累计') total_radiation_1_interval_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='总辐射1间隔累计') scat_radiation_interval_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='散辐射间隔累计') direct_radiation_interval_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='直接辐射间隔累计') total_radiation_2_interval_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='总辐射2间隔累计') net_radiation_interval_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='净辐射间隔累计') pho_radiation_interval_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='光合辐射间隔累计') uv_radiation_interval_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='紫外辐射间隔累计') rainfall_daily_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='雨量日累计') sunshine_time_daily_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='日照时日累计') total_radiation_1_daily_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='总辐射1日累计') scat_radiation_daily_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='散辐射日累计') direct_radiation_daily_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='直接辐射日累计') total_radiation_2_daily_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='总辐射2日累计') net_radiation_daily_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='净辐射日累计') pho_radiation_daily_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='光合辐射日累计') uv_radiation_daily_cum = models.CharField(max_length=255, blank=True, null=True, verbose_name='紫外辐射日累计') light_intensity = models.CharField(max_length=255, blank=True, null=True, verbose_name='光照度') power = models.CharField(max_length=255, blank=True, null=True, verbose_name='电量') pm25 = models.CharField(max_length=255, blank=True, null=True, verbose_name='PM2.5') create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') class Meta: managed = False db_table = 'weather_log' verbose_name = '气象台数据日志' verbose_name_plural = verbose_name def __str__(self): return self.device_id