рефакторинг кода обновления параметров, изменения в логике работы получения статуса насосной

This commit is contained in:
2024-01-23 19:06:52 +03:00
parent 250a4361ee
commit 5dde84ce0a
5 changed files with 240 additions and 117 deletions

View File

@@ -19,14 +19,15 @@ class LogsServiceConfig(AppConfig):
# защита от двойного запуска
if os.environ.get('RUN_MAIN', None) == 'true':
return
print(f"Running logger service in process with pid={os.getpid()}")
from .services import MbTankService, MbPumpService
# включение/выключение сервисов
mb_tank_service_enable = os.getenv('ENABLE_MB_TANK_SERVICE', '1')
LogsServiceConfig.mb_tank_service_enable = int(mb_tank_service_enable)
LogsServiceConfig.mb_tank_service_enable = int(mb_tank_service_enable) != 0
mb_pump_service_enable = os.getenv('ENABLE_MB_PUMP_SERVICE', '1')
LogsServiceConfig.mb_pump_service_enable = int(mb_pump_service_enable)
LogsServiceConfig.mb_pump_service_enable = int(mb_pump_service_enable) != 0
save_days = int(os.getenv('LOGGER_SAVE_DAYS'))

View File

@@ -21,7 +21,7 @@ class MbClearHistoryService(Thread):
class MbService(Thread):
def __init__(self, ip_addr, port, scan_rate, poll_time_ms=60000, save_days=60):
super().__init__()
super().__init__(daemon=True)
self._poll_time_ms = poll_time_ms
self._scan_rate = scan_rate
@@ -107,6 +107,8 @@ class MbTankService(MbService):
# D1: radar_high_reg
# D2: radar_low_reg
values = self.mb.read_holding_registers(0, 6)
if values is None:
return
self._curr_state = {
"level": values[0],
"status": values[5],
@@ -148,10 +150,12 @@ class MbPumpService(MbService):
# D26: vfd_current
# D27: vfd_error
off = 16
values = self.mb.read_holding_registers(16, 35 - off)
values = self.mb.read_holding_registers(16, 36 - off)
if values is None:
return
with self._lock:
# определение запущенного насоса
pr = None
pr = -1
if values[33 - off] & (1 << 14):
pr = 1
elif values[33 - off] & (1 << 15):
@@ -159,15 +163,15 @@ class MbPumpService(MbService):
self._curr_state = {
'alarms': values[35 - off],
'flow_meter': values[16 - off],
'flow_meter': values[16 - off] / 100,
'last_update': int(datetime.now().timestamp()),
'pump_stage': values[28 - off],
'vfd_curr': values[26 - off],
'vfd_curr': values[26 - off] / 100,
'vfd_err': values[27 - off],
'vfd_freq': values[25 - off],
'vfd_freq': values[25 - off] / 100,
'pump_running': pr,
'pump_moto_watch_1': values[31 - off],
'pump_moto_watch_2': values[32 - off],
'moto_watch_1': values[31 - off],
'moto_watch_2': values[32 - off],
'half_auto_control': values[30 - off]
}
@@ -186,8 +190,8 @@ class MbPumpService(MbService):
'vfd_err': None,
'vfd_freq': None,
'pump_running': None,
'pump_moto_watch_1': None,
'pump_moto_watch_2': None,
'moto_watch_1': None,
'moto_watch_2': None,
'half_auto_control': None
}

View File

@@ -1,4 +1,5 @@
import json
import os
from datetime import datetime, timedelta
from django.http import HttpResponse, HttpResponseBadRequest
from django.contrib.auth.decorators import permission_required
@@ -8,11 +9,12 @@ from .apps import LogsServiceConfig
@permission_required(perm='logs_service.view_mbtankrecord', raise_exception=True)
def view_stats(request):
print(f"Executing view_stats in process with pid={os.getpid()}")
tank = MbTankRecord.load_stats()
pump = None
pump = {}
if request.user.has_perm('logs_service.view_pump_stats'):
if LogsServiceConfig.mb_tank_service is not None and LogsServiceConfig.mb_tank_service_enable:
pump = LogsServiceConfig.mb_tank_service.get_stats()
if LogsServiceConfig.mb_pump_service is not None and LogsServiceConfig.mb_pump_service_enable:
pump = LogsServiceConfig.mb_pump_service.get_stats()
out = {
'stats': {