Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ec53e627db | |||
| 34c9942bca |
4
hush.py
4
hush.py
@@ -21,7 +21,7 @@ from src.gui import AppGui
|
||||
|
||||
_pymodule = os.path.basename(__file__)
|
||||
_appname, _appext = _pymodule.split(".")
|
||||
_appversion = "2.0.0"
|
||||
_appversion = "1.8.1"
|
||||
# _title = """Power Usage & Saving Hierarchy""" #, HUSH!"""
|
||||
_title = """HUSH!"""
|
||||
|
||||
@@ -207,7 +207,7 @@ class StartMain(BaseWindow):
|
||||
#########################################################################
|
||||
if __name__ == "__main__":
|
||||
|
||||
delay = 25 if "_" in _pymodule else 40
|
||||
delay = 8 if "_" in _pymodule else 15
|
||||
app = QApplication(sys.argv)
|
||||
splash = BaseWindow.initialize_application(
|
||||
app, appname=_appname, delay=delay, facility=Facility.PROSCAN)
|
||||
|
||||
2
hush.sh
2
hush.sh
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
cd /proscan/bd/applications/hush/hla/1.8.0
|
||||
cd /proscan/bd/applications/hush/hla/1.8.2
|
||||
|
||||
# For use if script is sourced rather than executed
|
||||
appNameDefault="hush.sh"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
cd /proscan/bd/applications/hush/hla/1.8.0
|
||||
cd /proscan/bd/applications/hush/hla/1.8.2
|
||||
|
||||
# For use if script is sourced rather than executed
|
||||
appNameDefault="hush_g1.sh"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
cd /proscan/bd/applications/hush/hla/1.8.0
|
||||
cd /proscan/bd/applications/hush/hla/1.8.2
|
||||
|
||||
# For use if script is sourced rather than executed
|
||||
appNameDefault="hush_g2.sh"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
cd /proscan/bd/applications/hush/hla/1.8.0
|
||||
cd /proscan/bd/applications/hush/hla/1.8.2
|
||||
|
||||
# For use if script is sourced rather than executed
|
||||
appNameDefault="hush_g3.sh"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
cd /proscan/bd/applications/hush/hla/1.8.0
|
||||
cd /proscan/bd/applications/hush/hla/1.8.2
|
||||
|
||||
# For use if script is sourced rather than executed
|
||||
appNameDefault="hush_o2.sh"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
cd /proscan/bd/applications/hush/hla/1.8.0
|
||||
cd /proscan/bd/applications/hush/hla/1.8.2
|
||||
|
||||
# For use if script is sourced rather than executed
|
||||
appNameDefault="hush_pif.sh"
|
||||
|
||||
370
src/gui.py
370
src/gui.py
@@ -95,7 +95,8 @@ class AppGui(QWidget):
|
||||
self.no_alarm_sss = ('QLabel {color:#000000; font-weight: bold; ' +
|
||||
no_alarm_color_str + '}')
|
||||
|
||||
|
||||
self.status_dict = {}
|
||||
|
||||
self.font_gui = self.parent.gui_frame.font_gui
|
||||
self.input_parameters = self.parent.input_parameters
|
||||
self.input_labels = self.parent.input_labels
|
||||
@@ -115,14 +116,41 @@ class AppGui(QWidget):
|
||||
self.timer_blink = QTimer()
|
||||
self.timer_blink.setSingleShot(True)
|
||||
self.timer_blink.count = 0
|
||||
|
||||
|
||||
|
||||
self.sec_state_list = ["PG1-HUSH:STATE", "PSH-HUSH:STATE",
|
||||
"PG2-HUSH:STATE", "PO2-HUSH:STATE",
|
||||
"PPIF-HUSH:STATE", "PG3-HUSH:STATE"]
|
||||
|
||||
self.sector_list_all = self.settings.data["headerMagnetSector"]
|
||||
|
||||
self.pv_mastership_status = "mastershipStatus"
|
||||
|
||||
self.sector_list = []
|
||||
#Take out B1B2 and SH
|
||||
for sector in self.sector_list_all:
|
||||
if self.pv_mastership_status in self.settings.data[sector]:
|
||||
self.sector_list.append(sector)
|
||||
|
||||
print(self.sector_list, flush=True)
|
||||
#Keep SH
|
||||
self.simple_sector_list = self.settings.data["headerMagnetSector"][
|
||||
1:] if "Controlroom" in self.assigned_master else self.sector_list
|
||||
|
||||
self.simple_t0 = [None] * len(self.simple_sector_list)
|
||||
self.simple_tdiff = [None] * len(self.simple_sector_list)
|
||||
self.simple_tlast_asleep = [None] * len(self.simple_sector_list)
|
||||
|
||||
|
||||
for i, sector in enumerate(self.simple_sector_list):
|
||||
pvdata = self.cafe.getPVCache(self.settings.data[sector]['status'])
|
||||
tz = pvdata.tsDate
|
||||
self.simple_t0[i] = datetime(
|
||||
tz[0], tz[1], tz[2], tz[3], tz[4], tz[5])
|
||||
self.simple_tdiff[i] = self.time_difference(self.simple_t0[i])
|
||||
print('sector, time difference = ', sector, self.simple_tdiff[i])
|
||||
self.simple_tlast_asleep[i] = self.simple_t0[i]
|
||||
|
||||
|
||||
|
||||
# Overwrite default
|
||||
|
||||
@@ -181,7 +209,7 @@ class AppGui(QWidget):
|
||||
self.table_pwr_dict = {}
|
||||
self.offtime_dict = {}
|
||||
|
||||
self.pv_mastership_status = "mastershipStatus"
|
||||
|
||||
|
||||
local_sector_list = ["G1", "SH", "G2", "O2", "PIF", "G3"]
|
||||
# Overload from guiheader.py
|
||||
@@ -210,30 +238,7 @@ class AppGui(QWidget):
|
||||
if key in self.settings.data["headerMagnetSector"]:
|
||||
pv_list.append(self.settings.data[key]["status"])
|
||||
|
||||
|
||||
|
||||
self.sector_list = []
|
||||
#Take out B1B2 and SH
|
||||
for sector in self.sector_list_all:
|
||||
if self.pv_mastership_status in self.settings.data[sector]:
|
||||
self.sector_list.append(sector)
|
||||
|
||||
print(self.sector_list, flush=True)
|
||||
#Keep SH
|
||||
self.simple_sector_list = self.settings.data["headerMagnetSector"][
|
||||
1:] if "Controlroom" in self.assigned_master else self.sector_list
|
||||
|
||||
self.simple_t0 = [None] * len(self.simple_sector_list)
|
||||
self.simple_tdiff = [None] * len(self.simple_sector_list)
|
||||
|
||||
for i, sector in enumerate(self.simple_sector_list):
|
||||
pvdata = self.cafe.getPVCache(self.settings.data[sector]['status'])
|
||||
tz = pvdata.tsDate
|
||||
self.simple_t0[i] = datetime(tz[0], tz[1], tz[2], tz[3], tz[4], tz[5])
|
||||
self.simple_tdiff[i] = self.time_difference(self.simple_t0[i])
|
||||
print('sector, time difference = ', sector, self.simple_tdiff[i])
|
||||
|
||||
|
||||
|
||||
self.pv_name_in_sector_list = [None] * len(self.sector_list)
|
||||
for i, sector in enumerate(self.sector_list):
|
||||
print(i, sector, flush=True)
|
||||
@@ -246,13 +251,15 @@ class AppGui(QWidget):
|
||||
|
||||
|
||||
hush_list = ["PRO-HUSH:LASTPWR", "PRO-HUSH:TOTPWR",
|
||||
"PRO:LASTSAVE", "PPO-HUSH:TOTSAVE"]
|
||||
"PRO-HUSH:LASTSAVE", "PRO-HUSH:TOTSAVE"]
|
||||
open_list = (hush_list + self.sec_state_list + pv_list +
|
||||
self.pv_name_in_sector_list)
|
||||
self.cafe.openPrepare()
|
||||
self.cafe.open(open_list)
|
||||
self.cafe.openNowAndWait(1.5)
|
||||
|
||||
self.cafe.openNowAndWait(1.0)
|
||||
|
||||
self.cafe.printDisconnected()
|
||||
|
||||
self.submastership_dict = {
|
||||
"G1": "UNDEF", "G2": "UNDEF", "O2": "UNDEF", "PIF": "UNDEF",
|
||||
"G3": "UNDEF"}
|
||||
@@ -270,6 +277,22 @@ class AppGui(QWidget):
|
||||
self.gui_frame.measurement_layout.addWidget(
|
||||
self.magnet_tab_wgt, 0, 2, 3, 2, alignment=Qt.AlignTop)
|
||||
|
||||
|
||||
status_wgt = self.group_sector_status()
|
||||
status_wgt.setFixedHeight(340)
|
||||
|
||||
#qf = QLabel('HELP')
|
||||
#qf.setFixedHeight(25)
|
||||
#self.gui_frame.measurement_layout.addWidget(qf, 1, 0, 1, 1)
|
||||
|
||||
self.gui_frame.measurement_layout.addWidget(
|
||||
status_wgt, 1, 0, 4, 1, alignment=Qt.AlignTop)
|
||||
|
||||
self.gui_frame.measurement_layout.setRowStretch(6, 90)
|
||||
self.gui_frame.measurement_layout.setColumnStretch(10, 90)
|
||||
#self.gui_frame.measurement_layout.setVerticalSpacing(10)
|
||||
|
||||
|
||||
_row = self.gui_frame.measurement_layout.rowCount()
|
||||
_column = self.gui_frame.measurement_layout.columnCount()-2
|
||||
|
||||
@@ -309,19 +332,6 @@ class AppGui(QWidget):
|
||||
self.magnet_tab_wgt.setCurrentIndex(self.sh_idx)
|
||||
self.gui_frame.central_tab_widget.setCurrentIndex(0)
|
||||
|
||||
status_wgt = self.group_sector_status()
|
||||
status_wgt.setFixedHeight(340)
|
||||
|
||||
#qf = QLabel('HELP')
|
||||
#qf.setFixedHeight(25)
|
||||
#self.gui_frame.measurement_layout.addWidget(qf, 1, 0, 1, 1)
|
||||
|
||||
self.gui_frame.measurement_layout.addWidget(
|
||||
status_wgt, 1, 0, 4, 1, alignment=Qt.AlignTop)
|
||||
|
||||
self.gui_frame.measurement_layout.setRowStretch(6, 90)
|
||||
self.gui_frame.measurement_layout.setColumnStretch(10, 90)
|
||||
self.gui_frame.measurement_layout.setVerticalSpacing(10)
|
||||
|
||||
|
||||
if "Controlroom" in self.assigned_master:
|
||||
@@ -340,9 +350,7 @@ class AppGui(QWidget):
|
||||
self.gui_frame.simulation_checkbox.stateChanged.connect(
|
||||
self.simulation_update)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
for key in self.sector_disruptor_dict:
|
||||
if key in self.settings.data["headerMagnetSector"]:
|
||||
print(key, flush=True)
|
||||
@@ -356,21 +364,31 @@ class AppGui(QWidget):
|
||||
key].trigger_monitor_str.connect(self.receive_g1_update)
|
||||
elif "SH" in key:
|
||||
self.gui_header.beam_current_wgt_dict[
|
||||
"BMA1"].trigger_monitor_str.connect(self.receive_sh_update)
|
||||
"BMA1"].trigger_monitor_str.connect(self.receive_sh_update)
|
||||
|
||||
elif "G2" in key:
|
||||
self.gui_header.beam_current_wgt_dict[
|
||||
key].trigger_monitor_str.connect(self.receive_g2_update)
|
||||
elif "O2" in key:
|
||||
self.gui_header.beam_current_wgt_dict[
|
||||
key].trigger_monitor_str.connect(self.receive_o2_update)
|
||||
|
||||
elif "PIF" in key:
|
||||
self.gui_header.beam_current_wgt_dict[
|
||||
key].trigger_monitor_str.connect(self.receive_pif_update)
|
||||
elif "G3" in key:
|
||||
self.gui_header.beam_current_wgt_dict[
|
||||
key].trigger_monitor_str.connect(self.receive_g3_update)
|
||||
|
||||
|
||||
|
||||
if "SH" in key:
|
||||
self.gui_header.beam_current_wgt_dict[
|
||||
"BMA1"].trigger_monitor_str.emit(
|
||||
pvd.value[0], pvd.status, pvd.alarmSeverity)
|
||||
else:
|
||||
self.gui_header.beam_current_wgt_dict[
|
||||
key].trigger_monitor_str.emit(
|
||||
pvd.value[0], pvd.status, pvd.alarmSeverity)
|
||||
|
||||
|
||||
#Trigger group_submaster_wgt
|
||||
for wgt in self.submaster_wgt:
|
||||
@@ -397,62 +415,161 @@ class AppGui(QWidget):
|
||||
|
||||
#print("gw emit done")
|
||||
|
||||
#self.update_awake_alarm_message()
|
||||
|
||||
#for sect in self.simple_sector_list:
|
||||
# self.is_sector_standby(sect)
|
||||
|
||||
self.timer_awake = QTimer()
|
||||
self.timer_awake.timeout.connect(self.update_awake_alarm_message)
|
||||
self.timer_awake.start(60000)
|
||||
self.timer_awake.start(10000)
|
||||
|
||||
|
||||
|
||||
def update_awake_alarm_message(self):
|
||||
for sect in self.simple_sector_list:
|
||||
idx = self.simple_sector_list.index(sect)
|
||||
#print(" update_awake_alarm_message -------------- ",
|
||||
# sect, self.sector_disruptor_dict[sect])
|
||||
if "Geschlossen" not in self.sector_disruptor_dict[sect]:
|
||||
self.simple_alarm[idx].setStyleSheet(self.no_alarm_sss)
|
||||
self.simple_alarm[idx].setText(' Active ')
|
||||
|
||||
#No alarm in day shift
|
||||
def in_operation_range():
|
||||
current_time = datetime.now().time()
|
||||
#given_time_start = datetime.strptime("07:00AM", "I:%M%p").time()
|
||||
#given_time_stop = datetime.strptime("05:30PM", "I:%M%p").time()
|
||||
given_time_start = datetime.strptime("07:00", "%H:%M").time()
|
||||
given_time_stop = datetime.strptime("17:00", "%H:%M").time()
|
||||
|
||||
if given_time_start <= current_time <= given_time_stop:
|
||||
return True
|
||||
else:
|
||||
pvdata = self.cafe.getPVCache(self.settings.data[sect]['status'])
|
||||
tz = pvdata.tsDate
|
||||
|
||||
return False
|
||||
|
||||
def what_alarm(sect, plot_only=False):
|
||||
alarm_val = 0
|
||||
pvdata = self.cafe.getPVCache(
|
||||
self.settings.data[sect]['status'])
|
||||
tz = pvdata.tsDate
|
||||
idx = self.simple_sector_list.index(sect)
|
||||
|
||||
|
||||
if not plot_only:
|
||||
|
||||
self.simple_t0[idx] = datetime(
|
||||
tz[0], tz[1], tz[2], tz[3], tz[4], tz[5])
|
||||
self.simple_tdiff[idx] = self.time_difference(self.simple_t0[idx])
|
||||
if self.simple_tdiff[idx][0] > int(self.input_parameters['alarmMajor']):
|
||||
self.simple_alarm[idx].setStyleSheet(self.alarm_major_sss)
|
||||
elif self.simple_tdiff[idx][0] > int(self.input_parameters['alarmMinor']):
|
||||
self.simple_alarm[idx].setStyleSheet(self.alarm_minor_sss)
|
||||
else:
|
||||
self.simple_alarm[idx].setStyleSheet(self.no_alarm_sss)
|
||||
#self.simple_tlast_asleep[idx])
|
||||
date1 = self.simple_t0[idx]
|
||||
date2 = self.simple_tlast_asleep[idx]
|
||||
|
||||
datet = date2 if date1 < date2 else date1
|
||||
|
||||
self.simple_tdiff[idx] = self.time_difference(datet)
|
||||
|
||||
if in_operation_range():
|
||||
self.simple_alarm[idx].setStyleSheet(self.no_alarm_sss)
|
||||
alarm_val = 0
|
||||
|
||||
elif self.simple_tdiff[idx][0] > int(
|
||||
self.input_parameters['alarmMajor']):
|
||||
self.simple_alarm[idx].setStyleSheet(self.alarm_major_sss)
|
||||
alarm_val = 2
|
||||
elif self.simple_tdiff[idx][0] > int(
|
||||
self.input_parameters['alarmMinor']):
|
||||
self.simple_alarm[idx].setStyleSheet(self.alarm_minor_sss)
|
||||
alarm_val = 1
|
||||
else:
|
||||
self.simple_alarm[idx].setStyleSheet(self.no_alarm_sss)
|
||||
alarm_val = 0
|
||||
|
||||
self.simple_alarm[idx].setText(
|
||||
self.alarm_text + str(
|
||||
int(self.simple_tdiff[idx][0])) + ' min ')
|
||||
|
||||
return alarm_val
|
||||
|
||||
self.simple_alarm[idx].setText(
|
||||
self.alarm_text + str(int(self.simple_tdiff[idx][0])) + ' min ')
|
||||
for sect in self.simple_sector_list:
|
||||
idx = self.simple_sector_list.index(sect)
|
||||
pv = self.settings.data[sect]['alarm']
|
||||
alarm_val = 0
|
||||
#print(" update_awake_alarm_message -------------- ",
|
||||
# sect, self.sector_disruptor_dict[sect])
|
||||
|
||||
if 'Controlroom' in self.assigned_master:
|
||||
if 'Geschlossen' not in self.sector_disruptor_dict['SH']:
|
||||
if self.is_sector_standby(sect):
|
||||
self.simple_alarm[idx].setStyleSheet(self.no_alarm_sss)
|
||||
self.simple_alarm[idx].setText(' Active ')
|
||||
alarm_val = 0
|
||||
|
||||
|
||||
elif "Geschlossen" not in self.sector_disruptor_dict[sect]:
|
||||
self.simple_alarm[idx].setStyleSheet(self.no_alarm_sss)
|
||||
self.simple_alarm[idx].setText(' Active ')
|
||||
alarm_val = 0
|
||||
|
||||
disruptor_list = [self.sector_disruptor_dict['G3'],
|
||||
self.sector_disruptor_dict['PIF'],
|
||||
self.sector_disruptor_dict['O2'],
|
||||
self.sector_disruptor_dict['G2']]
|
||||
|
||||
else:
|
||||
alarm_val = what_alarm(sect)
|
||||
|
||||
#if in_operation_range():
|
||||
# alarm_val = 0
|
||||
# self.simple_alarm[idx].setStyleSheet(self.no_alarm_sss)
|
||||
|
||||
pv = self.settings.data[sect]['alarm']
|
||||
if not self.input_parameters["simulation"]:
|
||||
if 'Controlroom' in self.assigned_master:
|
||||
stat = self.cafe.set(pv, alarm_val)
|
||||
if stat != self.cyca.ECAFE_NOWTACCESS:
|
||||
self.check_status(_pymodule, 'set', pv, stat, _line())
|
||||
#print(pv, sect, alarm_val)
|
||||
|
||||
#must take on value *Geschlossen"
|
||||
if disruptor_list[1:] == disruptor_list[:-1]:
|
||||
|
||||
idx_start = self.simple_sector_list.index('G2')
|
||||
idx_end = self.simple_sector_list.index('G3')
|
||||
tdiff_list =[]
|
||||
tmin = 2000
|
||||
idx_min = 0
|
||||
for i in range (idx_start, idx_end):
|
||||
if self.simple_tdiff[i][0] < tmin:
|
||||
idx_min = i
|
||||
|
||||
idx = self.simple_sector_list.index('SH')
|
||||
self.simple_tdiff[idx] = self.simple_tdiff[idx_min]
|
||||
self.simple_alarm[idx].setText(self.alarm_text + str(
|
||||
int(self.simple_tdiff[idx][0])) + ' min ')
|
||||
|
||||
date1 = self.simple_t0[idx]
|
||||
date2 = self.simple_tlast_asleep[idx]
|
||||
|
||||
datet = date2 if date1 < date2 else date1
|
||||
|
||||
self.simple_tdiff[idx] = self.time_difference(datet)
|
||||
#print(sect, idx, date1, date2, self.simple_tdiff[idx])
|
||||
|
||||
|
||||
if 'Controlroom' in self.assigned_master and \
|
||||
not self.is_sector_standby('SH'):
|
||||
#print('SH--')
|
||||
disruptor_list = [self.sector_disruptor_dict['G3'],
|
||||
self.sector_disruptor_dict['PIF'],
|
||||
self.sector_disruptor_dict['O2'],
|
||||
self.sector_disruptor_dict['G2']]
|
||||
|
||||
#must take on value *Geschlossen"
|
||||
if disruptor_list[1:] == disruptor_list[:-1]:
|
||||
idx_start = self.simple_sector_list.index('G2')
|
||||
idx_end = self.simple_sector_list.index('G3')
|
||||
tdiff_list =[]
|
||||
tmin = 999
|
||||
idx_min = 0
|
||||
|
||||
for i in range (idx_start, idx_end):
|
||||
if self.simple_tdiff[i][0] < tmin and self.simple_tdiff[i][0] !=0 :
|
||||
idx_min = i
|
||||
tmin = self.simple_tdiff[i][0]
|
||||
if tmin == 999:
|
||||
idx_min = 0
|
||||
|
||||
|
||||
idx = self.simple_sector_list.index('SH')
|
||||
|
||||
self.simple_tdiff[idx] = self.simple_tdiff[idx_min]
|
||||
|
||||
self.simple_alarm[idx].setText(self.alarm_text + str(
|
||||
int(self.simple_tdiff[idx][0])) + ' min ')
|
||||
|
||||
|
||||
alarm_val = what_alarm('SH', plot_only=True)
|
||||
#if in_operation_range():
|
||||
# alarm_val = 0
|
||||
|
||||
pv = self.settings.data['SH']['alarm']
|
||||
if not self.input_parameters["simulation"]:
|
||||
stat = self.cafe.set(pv, alarm_val)
|
||||
if stat != self.cyca.ECAFE_NOWTACCESS:
|
||||
self.check_status(_pymodule, 'set', pv, stat, _line())
|
||||
|
||||
|
||||
|
||||
def enable_disable_beamline(self, sect, sector_line, value):
|
||||
def is_submaster(local_sector, local_sector_line):
|
||||
@@ -549,7 +666,7 @@ class AppGui(QWidget):
|
||||
'''
|
||||
@Slot(str, int, int)
|
||||
def receive_sh_update(self, value, status, alarm_severity):
|
||||
print("receive_sh_update===>", value, flush=True)
|
||||
#print("receive_sh_update===>", value, flush=True)
|
||||
if status == self.cyca.ICAFE_CA_OP_CONN_DOWN:
|
||||
return
|
||||
self.enable_disable_beamline("SH", self.gui_header.sh_line, value)
|
||||
@@ -913,17 +1030,23 @@ class AppGui(QWidget):
|
||||
qtotsav.setFont(f)
|
||||
qtotsav.setAlignment(Qt.AlignCenter)
|
||||
|
||||
qalarm = QLabel("Awake \nAlarm")
|
||||
f = qalarm.font()
|
||||
f.setPixelSize(13)
|
||||
qalarm.setFont(f)
|
||||
qalarm.setAlignment(Qt.AlignCenter)
|
||||
|
||||
qgrid.addWidget(qlp, 0, 2, 1, 1)
|
||||
qgrid.addWidget(qsa, 0, 3, 1, 1)
|
||||
qgrid.addWidget(qstat, 0, 4, 1, 1)
|
||||
qgrid.addWidget(qti, 0, 5, 1, 1)
|
||||
qgrid.addWidget(qtotsav, 0, 6, 1, 1)
|
||||
|
||||
self.status_dict = {}
|
||||
qgrid.addWidget(qalarm, 0, 7, 1, 1)
|
||||
|
||||
|
||||
|
||||
|
||||
for i, sector in enumerate(self.settings.data["header"][idx:idx_last]):
|
||||
a, b, c, d, e, f = self.sector_status(sector)
|
||||
a, b, c, d, e, f, g = self.sector_status(sector)
|
||||
|
||||
self.status_dict[sector] = QLabel('')
|
||||
|
||||
@@ -934,13 +1057,15 @@ class AppGui(QWidget):
|
||||
qgrid.addWidget(self.status_dict[sector], i + 1, 4, 1, 1)
|
||||
qgrid.addWidget(e, i + 1, 5, 1, 1)
|
||||
qgrid.addWidget(f, i + 1, 6, 1, 1)
|
||||
if sector in self.sector_list or \
|
||||
'Controlroom' in self.assigned_master:
|
||||
qgrid.addWidget(g, i + 1, 7, 1, 1)
|
||||
|
||||
line = QHLine()
|
||||
line.setFixedHeight(10)
|
||||
row = qgrid.rowCount()
|
||||
qgrid.addWidget(line, row, 1, 1, 7)
|
||||
|
||||
|
||||
qtot = QLabel("Total:")
|
||||
fnt = qtot.font()
|
||||
fnt.setPixelSize(13)
|
||||
@@ -948,8 +1073,7 @@ class AppGui(QWidget):
|
||||
|
||||
qgrid.addWidget(qtot, row + 1, 0, 1, 1)
|
||||
qgrid.addWidget(
|
||||
CAQLineEdit(self, pv_name="PRO-HUSH:LASTPWR",
|
||||
show_units=True),
|
||||
CAQLineEdit(self, pv_name="PRO-HUSH:LASTPWR", show_units=True),
|
||||
row + 1, 1, 1, 1)
|
||||
qgrid.addWidget(
|
||||
CAQLineEdit(self, pv_name="PRO-HUSH:TOTPWR", show_units=True),
|
||||
@@ -967,7 +1091,7 @@ class AppGui(QWidget):
|
||||
qw.setContentsMargins(9, 9, 9, 9)
|
||||
qw.setObjectName("OUTER")
|
||||
qw.setLayout(qgrid)
|
||||
qw.setFixedWidth(596) # 480
|
||||
qw.setFixedWidth(626) # 596
|
||||
|
||||
return qw
|
||||
|
||||
@@ -998,9 +1122,11 @@ class AppGui(QWidget):
|
||||
pv_pwr_saved = device + ":LASTSAVE"
|
||||
pv_pwr_timeout = device + ":OFFTIME"
|
||||
pv_pwr_totsave = device + ":TOTSAVE"
|
||||
pv_awake_alarm = device + ":ALARM"
|
||||
|
||||
self.cafe.openPrepare()
|
||||
self.cafe.open([pv_pwr_tot, pv_pwr_last, pv_pwr_saved, pv_pwr_timeout])
|
||||
self.cafe.open([pv_pwr_tot, pv_pwr_last, pv_pwr_saved, pv_pwr_timeout,
|
||||
pv_awake_alarm])
|
||||
self.cafe.openNowAndWait(2.0)
|
||||
time.sleep(0.1)
|
||||
|
||||
@@ -1033,6 +1159,11 @@ class AppGui(QWidget):
|
||||
qptotsave = CAQLineEdit(self, pv_name=pv_pwr_totsave, show_units=False)
|
||||
qptime = CAQLineEdit(self, pv_name=pv_pwr_timeout,
|
||||
monitor_callback=cb_outtime, show_units=True)
|
||||
|
||||
qawakealarm = CAQLabel(self, pv_name=pv_awake_alarm, color_mode='alarm')
|
||||
|
||||
qawakealarm.setAlignment(Qt.AlignCenter)
|
||||
|
||||
self.offtime_dict[pv_pwr_timeout] = qptime
|
||||
|
||||
# Time to allow cb_outtime to fire
|
||||
@@ -1040,7 +1171,7 @@ class AppGui(QWidget):
|
||||
|
||||
qptime.setFixedWidth(104)
|
||||
|
||||
return qsector, qpinit, qpnow, qpsave, qptime, qptotsave
|
||||
return qsector, qpinit, qpnow, qpsave, qptime, qptotsave, qawakealarm
|
||||
|
||||
def group_sector_qtabwidget(self):
|
||||
|
||||
@@ -1205,6 +1336,7 @@ class AppGui(QWidget):
|
||||
self.status_dict[sector].setText(self.awake_text)
|
||||
|
||||
self.simple_alarm[idx].setVisible(True)
|
||||
|
||||
|
||||
|
||||
def paint_asleep():
|
||||
@@ -1220,6 +1352,21 @@ class AppGui(QWidget):
|
||||
self.status_dict[sector].setStyleSheet(self.label_standby_sss)
|
||||
self.status_dict[sector].setText(self.standby_text)
|
||||
self.simple_alarm[idx].setVisible(False)
|
||||
|
||||
|
||||
#print(" update_awake_alarm_message -------------- ",
|
||||
# sect, self.sector_disruptor_dict[sect])
|
||||
|
||||
#if self.is_sector_standby(sect):
|
||||
# self.simple_alarm[idx].setStyleSheet(self.no_alarm_sss)
|
||||
# self.simple_alarm[idx].setText(' Active ')
|
||||
# alarm_val = 0
|
||||
pv = self.settings.data[sector]['alarm']
|
||||
if not self.input_parameters["simulation"]:
|
||||
stat = self.cafe.set(pv, 0)
|
||||
if stat != self.cyca.ECAFE_NOWTACCESS:
|
||||
self.check_status(_pymodule, 'set', pv, stat, _line())
|
||||
|
||||
|
||||
if value is not None and pv_name is not None:
|
||||
self.sector_designated_magnet_values_dict[sector][pv_name] = value
|
||||
@@ -1258,10 +1405,15 @@ class AppGui(QWidget):
|
||||
if self.table_pwr_dict[sector].init_value_button.isEnabled():
|
||||
self.table_pwr_dict[sector].init_value_button.setEnabled(
|
||||
False)
|
||||
if self.simple_standby:
|
||||
if self.simple_standby:
|
||||
paint_asleep()
|
||||
#print("is standby true so paint standby ", is_standby)
|
||||
|
||||
tn = datetime.now()
|
||||
self.simple_tlast_asleep[idx] = datetime(
|
||||
tn.year, tn.month, tn.day, tn.hour, tn.minute, tn.second)
|
||||
#print("is standby true so paint standby ",
|
||||
# sector, idx, self.simple_tlast_asleep[idx])
|
||||
|
||||
|
||||
return is_standby
|
||||
|
||||
|
||||
@@ -1908,9 +2060,9 @@ class AppGui(QWidget):
|
||||
#message += "go to Experiment Mode" if \
|
||||
# "Controlroom" not in self.assigned_master else "ramp magnets"
|
||||
if "Controlroom" in self.assigned_master:
|
||||
message = ""
|
||||
message = "Request Mastership to ramp magnets"
|
||||
else:
|
||||
message = "Request Mastership to go to Experiment Mode"
|
||||
message = "Request Mastership to go to Experiment Mode"
|
||||
|
||||
ql = QLabel(message)
|
||||
ql.setStyleSheet('QLabel {color:black;}')
|
||||
@@ -1928,7 +2080,7 @@ class AppGui(QWidget):
|
||||
qwo.setLayout(qgrido)
|
||||
wlength = len(self.simple_sector_list) if irow == 0 else int(hlength)
|
||||
qwo.setFixedWidth(310 * wlength)
|
||||
qwo.setFixedHeight(240 * (irow+1) - 80*irow)
|
||||
qwo.setFixedHeight(250 * (irow+1) - 80*irow)
|
||||
|
||||
|
||||
return qwo
|
||||
|
||||
24
src/t.py
Normal file
24
src/t.py
Normal file
@@ -0,0 +1,24 @@
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
def in_range():
|
||||
current_time = datetime.now().time()
|
||||
#given_time_start = datetime.strptime("07:00AM", "I:%M%p").time()
|
||||
#given_time_stop = datetime.strptime("05:30PM", "I:%M%p").time()
|
||||
given_time_start = datetime.strptime("07:00", "%H:%M").time()
|
||||
given_time_stop = datetime.strptime("17:00", "%H:%M").time()
|
||||
|
||||
if given_time_start <= current_time <= given_time_stop:
|
||||
print("in range")
|
||||
return True
|
||||
else:
|
||||
print(current_time)
|
||||
print(given_time_stop)
|
||||
|
||||
|
||||
|
||||
if in_range():
|
||||
print("in range")
|
||||
else:
|
||||
print("not in range")
|
||||
|
||||
Reference in New Issue
Block a user