123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- """
- @Date :2021/6/16/14:47
- @Author:zz
- @Desc :投喂数据统计
- """
- import time
- import json
- import threading
- import traceback
- from event_storage import EventStorage
- from utility import Utility
- from log import OutPutLog
- from apis.get_feeding_advise import GetFeedingAdvise
- class FeedingStatistics:
- def __init__(self):
- self._storage = EventStorage()
- self._log = OutPutLog()
- self._run_time = None
- self._feed_id = None
- def str_to_flaot(self, str):
- if str != None:
- return float(str)
- else:
- return 'null'
- # 历史存储主函数
- def run(self):
- self._log.info('[AutoFeeding] - FeedingStatistics module is running!')
- # 风向:c1,风速:c2,流速:c7,流向:c8
- # P01罗茨风机频率:c651
- # P02罗茨风机频率:c659
- # GLQ01供料器频率:c653
- # GLQ02供料器频率:c661
- # 风向:c1,风速:c2,流速:c7,流向:c8
- list = ["c1", "c2", "c7", "c8", "c651", "c653", "c659", "c661"]
- # 获取配置信息
- while 1:
- time.sleep(2)
- real_data_dict = self._storage.get_real_data(list)
- # 记录投喂过程
- try:
- feeder_frequency_1 = 0
- feeder_frequency_2 = 0
- fan_frequency_1 = 0
- fan_frequency_2 = 0
- feeder_frequency = 0
- for k, v in real_data_dict.items():
- if v is None:
- real_data_dict[k] = -9999
- # 判断供料器1
- if float(real_data_dict['c653']) > 0:
- feeder_frequency_1 = float(real_data_dict['c653'])
- # 判断供料器2
- if float(real_data_dict['c661']) > 0:
- feeder_frequency_2 = float(real_data_dict['c661'])
- # 判断风机1
- if float(real_data_dict['c651']) > 0:
- fan_frequency_1 = float(real_data_dict['c651'])
- # 判断风机2
- if float(real_data_dict['c659']) > 0:
- fan_frequency_2 = float(real_data_dict['c659'])
- feeder_frequency = feeder_frequency_1 + feeder_frequency_2
- if feeder_frequency > -1:
- now_time = time.time()
- if self._feed_id == None:
- self._feed_id = 1
- feed_id = int(now_time)
- if self._run_time == None:
- self._run_time = int(now_time)
- save_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(now_time))
- wind_speed = self.str_to_flaot(real_data_dict['c2'])
- wind_direction = self.str_to_flaot(real_data_dict['c1'])
- flow_speed = self.str_to_flaot(real_data_dict['c7'])
- flow_direction = self.str_to_flaot(real_data_dict['c8'])
- sql_get_task_info = "SELECT * FROM touer_set;"
- task_info = self._storage.execute_sql(sql_get_task_info)
- task_info = task_info[0]
- if task_info['feed_mode'] == 1:
- feeding_mode = "自动"
- elif task_info['feed_mode'] == 0:
- feeding_mode = "手动"
- else:
- feeding_mode = None
- breed = task_info['feed_kind']
- tank1_number_info = eval(task_info["tank1"])
- tank2_number_info = eval(task_info["tank2"])
- #1号罐
- bait_name_1 = tank1_number_info['name']
- feed_weight_1 = float(tank1_number_info['weight'])
- feed_diameter_1 = int(tank1_number_info['diameter'])
- shelf_life_1 = tank1_number_info['shelf_life']
- #2号罐
- bait_name_2 = tank2_number_info['name']
- feed_weight_2 = float(tank2_number_info['weight'])
- feed_diameter_2 = int(tank2_number_info['diameter'])
- shelf_life_2 = tank2_number_info['shelf_life']
- feeding_speed_1 = 1440 / 67 * feeder_frequency_1 / 50 * (8 - 0.5 * feed_diameter_1) * 1 / 60
- feeding_speed_2 = 1440 / 67 * feeder_frequency_2 / 50 * (8 - 0.5 * feed_diameter_2) * 1 / 60
-
- now_time = int(time.time())
- feeding_amount_1 = round(feeding_speed_1 * (now_time - self._run_time), 2)
- feeding_amount_2 = round(feeding_speed_2 * (now_time - self._run_time), 2)
- self._run_time = now_time
-
- sql = "INSERT INTO fishery_data(feed_id, times, wind_speed, wind_direction," \
- "flow_speed, flow_direction, feeder_frequency_1, fan_frequency_1, feeding_amount_1," \
- "feeder_frequency_2, fan_frequency_2, feeding_amount_2, feeding_mode, breed, bait_name_1, bait_name_2," \
- "feed_weight_1, feed_weight_2,feed_diameter_1, feed_diameter_2, shelf_life_1, shelf_life_2) VALUES (%s,'%s',%s,%s,%s,%s," \
- "%s,%s,%s,%s,%s,%s," \
- "'%s','%s','%s','%s',%s,%s,%s,%s,'%s','%s')" % \
- (feed_id, save_time, wind_speed, wind_direction,
- flow_speed, flow_direction, feeder_frequency_1, fan_frequency_1, feeding_amount_1,
- feeder_frequency_2, fan_frequency_2, feeding_amount_2, feeding_mode, breed, bait_name_1, bait_name_2,
- feed_weight_1, feed_weight_2, feed_diameter_1, feed_diameter_2, shelf_life_1, shelf_life_2)
-
- #print(sql)
- self._storage.execute_sql(sql)
- else:
- self._run_time = None
- self._feed_id = None
- except Exception as e:
- print('行号', e.__traceback__.tb_lineno)
- print("get fishery_data [ERROR]:" + str(e))
- self._log.error("get fishery_data [ERROR]:" + str(e))
|