from django.db import models from datetime import datetime, timedelta # select UNIX_TIMESTAMP(datetime), level_percentage, radar_low_reg, status_reg from tcs class MbTankRecord(models.Model): dt = models.DateTimeField(verbose_name="Время записи", default=datetime.now) radar_raw = models.PositiveIntegerField(verbose_name="Уровень воды по радару радара") level = models.PositiveSmallIntegerField(verbose_name="Уровень воды в % (пересчитан ПЛК)") status = models.PositiveSmallIntegerField(verbose_name="Регистр статуса") def __str__(self): return f"({self.id}) {self.dt}: radar={self.radar_raw}, level={self.level}" @staticmethod def load_stats(): result = { 'last_update': None, # последнее обновление, unix time 'level': None, # текущее показание, пересчитанное в % 'radar': None, # текущее показание с радара 'status': None, # статусный регистр 'last_radar_values': [] # последние показания за 15 минут } last_save = MbTankRecord.objects.order_by('-dt').first() if last_save is not None: result['last_update'] = last_save.dt.timestamp() result['level'] = last_save.level result['radar'] = last_save.radar_raw / 10000 result['status'] = last_save.status query = MbTankRecord.objects.filter(dt__gt=(datetime.now() - timedelta(minutes=15))).order_by('dt') result['last_radar_values'] = [(int(item.dt.timestamp()), item.radar_raw) for item in query] return result