瀏覽代碼

优化插座功率计算

zhangdongming 2 年之前
父節點
當前提交
47e5c99dfe
共有 2 個文件被更改,包括 9 次插入15 次删除
  1. 5 10
      Controller/SensorGateway/SmartSocketController.py
  2. 4 5
      Model/models.py

+ 5 - 10
Controller/SensorGateway/SmartSocketController.py

@@ -10,7 +10,6 @@ import calendar
 import datetime
 import logging
 import time
-from decimal import Decimal
 
 from dateutil.parser import parse
 from django.db import transaction
@@ -150,20 +149,16 @@ class SmartSocketView(View):
                 data['serial_number'] = serial_number
                 data['electricity'] = cls.calculated_power(watt, accumulated_time)
                 data['accumulated_time'] = accumulated_time
-                data['load_time'] = accumulated_time if watt > 0.1 else 0
                 SocketPowerStatistics.objects.create(**data)
                 return response.json(0)
             power_vo = power_qs.first()
             # 累加在线时间目前是以分钟为单位
             data['accumulated_time'] = power_vo.accumulated_time + accumulated_time
-            load_time = power_vo.load_time
-            if watt > 0.1:
-                load_time = power_vo.load_time + accumulated_time
             # kwh 千瓦时
-            data['electricity'] = cls.calculated_power((float(power_vo.watt) + watt), load_time)
-            # 当前时段统计的w值
+            kilowatt_hour = cls.calculated_power(watt, accumulated_time)
+            data['electricity'] = kilowatt_hour + float(power_vo.electricity)
+            # 所消耗累计功率
             data['watt'] = float(power_vo.watt) + watt
-            data['load_time'] = load_time
             # 更新当天电量统计
             power_qs.update(**data)
             return response.json(0)
@@ -174,13 +169,13 @@ class SmartSocketView(View):
     @staticmethod
     def calculated_power(watt, minute):
         """
-        计算电功率
+        通过每分钟所消耗的功率(瓦)得到千瓦时kwh
         """
         if watt == 0 or watt < 0.1 or minute == 0:
             return 0.00
         hours = minute / 60
         kilowatt_hour = watt * hours / 1000
-        LOGGER.info('计算结果{}'.format(kilowatt_hour))
+        LOGGER.info('计算得到千瓦时结果{}'.format(kilowatt_hour))
         return kilowatt_hour
 
     @staticmethod

+ 4 - 5
Model/models.py

@@ -3390,12 +3390,11 @@ class SocketPowerStatistics(models.Model):
     device_id = models.CharField(max_length=32, default='', verbose_name='设备id')
     serial_number = models.CharField(db_index=True, max_length=20, default='',
                                      verbose_name='序列号')
-    electricity = models.DecimalField(default=0, max_digits=10, decimal_places=2, verbose_name='设备当日用电KWh')
+    electricity = models.DecimalField(default=0, max_digits=10, decimal_places=6, verbose_name='设备当日用电KWh')
     # 设备根据策略上报的w值,然后当日存在数据则累加
-    watt = models.DecimalField(default=0, max_digits=10, decimal_places=2,  verbose_name='电量瓦')
-    power = models.DecimalField(default=0, max_digits=10, decimal_places=2, verbose_name='功率w')
-    accumulated_time = models.SmallIntegerField(default=0, verbose_name='当天累计时长(分)')
-    load_time = models.SmallIntegerField(default=0, verbose_name='当天负载累计时长(分)')
+    watt = models.DecimalField(default=0, max_digits=10, decimal_places=2,  verbose_name='每分钟消耗功率(瓦)')
+    power = models.DecimalField(default=0, max_digits=10, decimal_places=2, verbose_name='负载功率w')
+    accumulated_time = models.SmallIntegerField(default=0, verbose_name='当天累计时长(分钟)')
     created_time = models.IntegerField(default=0, verbose_name='创建时间')
     updated_time = models.IntegerField(default=0, verbose_name='创建时间')