Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6d7e06e9ec | |||
| ec53e627db |
@@ -1,5 +1,4 @@
|
||||
{
|
||||
|
||||
"Parameters":{
|
||||
|
||||
"drawLine" : {"flag" : 0, "data":{ "widget": "QHLine", "text" : "None", "value" : "None"}},
|
||||
@@ -10,10 +9,6 @@
|
||||
|
||||
},
|
||||
"Expert":{
|
||||
"alarmMinor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Minor Alarm:",
|
||||
"value" : " 90"}},
|
||||
"alarmMajor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Major Alarm:",
|
||||
"value" : "180"}},
|
||||
"debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}},
|
||||
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}}
|
||||
},
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
|
||||
},
|
||||
"Expert":{
|
||||
"alarmMinor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Minor Alarm:",
|
||||
"value" : " 90"}},
|
||||
"alarmMajor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Major Alarm:",
|
||||
"value" : "180"}},
|
||||
"debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}},
|
||||
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}}
|
||||
},
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
|
||||
},
|
||||
"Expert":{
|
||||
"alarmMinor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Minor Alarm:",
|
||||
"value" : " 90"}},
|
||||
"alarmMajor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Major Alarm:",
|
||||
"value" : "180"}},
|
||||
"debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}},
|
||||
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}}
|
||||
},
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
|
||||
},
|
||||
"Expert":{
|
||||
"alarmMinor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Minor Alarm:",
|
||||
"value" : " 90"}},
|
||||
"alarmMajor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Major Alarm:",
|
||||
"value" : "180"}},
|
||||
"debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}},
|
||||
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}}
|
||||
},
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
|
||||
},
|
||||
"Expert":{
|
||||
"alarmMinor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Minor Alarm:",
|
||||
"value" : " 90"}},
|
||||
"alarmMajor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Major Alarm:",
|
||||
"value" : "180"}},
|
||||
"debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}},
|
||||
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}}
|
||||
},
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
|
||||
},
|
||||
"Expert":{
|
||||
"alarmMinor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Minor Alarm:",
|
||||
"value" : " 90"}},
|
||||
"alarmMajor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Major Alarm:",
|
||||
"value" : "180"}},
|
||||
"debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}},
|
||||
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}}
|
||||
},
|
||||
|
||||
2
hush.sh
2
hush.sh
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
cd /proscan/bd/applications/hush/hla/1.8.1
|
||||
cd /proscan/bd/applications/hush/hla/1.8.3
|
||||
|
||||
# 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.1
|
||||
cd /proscan/bd/applications/hush/hla/1.8.3
|
||||
|
||||
# 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.1
|
||||
cd /proscan/bd/applications/hush/hla/1.8.3
|
||||
|
||||
# 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.1
|
||||
cd /proscan/bd/applications/hush/hla/1.8.3
|
||||
|
||||
# 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.1
|
||||
cd /proscan/bd/applications/hush/hla/1.8.3
|
||||
|
||||
# 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.1
|
||||
cd /proscan/bd/applications/hush/hla/1.8.3
|
||||
|
||||
# For use if script is sourced rather than executed
|
||||
appNameDefault="hush_pif.sh"
|
||||
|
||||
159
src/gui.py
159
src/gui.py
@@ -94,7 +94,44 @@ class AppGui(QWidget):
|
||||
no_alarm_color_str = f'background-color: {no_alarm_color};'
|
||||
self.no_alarm_sss = ('QLabel {color:#000000; font-weight: bold; ' +
|
||||
no_alarm_color_str + '}')
|
||||
|
||||
|
||||
|
||||
self.pv_alarm_warn = self.settings.data['alarmPV']['warn']
|
||||
self.pv_alarm_error = self.settings.data['alarmPV']['error']
|
||||
self.pv_user_start_time = self.settings.data['alarmPV']['startTime']
|
||||
self.pv_user_end_time = self.settings.data['alarmPV']['endTime']
|
||||
|
||||
|
||||
self.alarm_warn = 90
|
||||
self.alarm_error = 180
|
||||
self.user_start_time = "07:00"
|
||||
self.user_end_time = "17:00"
|
||||
|
||||
def cb_alarm_warn(pv, handle, pvdata):
|
||||
if pvdata.value[0] is not None:
|
||||
self.alarm_warn = pvdata.value[0]
|
||||
|
||||
def cb_alarm_error(pv, handle, pvdata):
|
||||
if pvdata.value[0] is not None:
|
||||
self.alarm_error = pvdata.value[0]
|
||||
|
||||
def cb_user_start(pv, handle, pvdata):
|
||||
if pvdata.value[0] is not None:
|
||||
self.user_start_time = pvdata.value[0]
|
||||
|
||||
def cb_user_end(pv, handle, pvdata):
|
||||
if pvdata.value[0] is not None:
|
||||
self.user_end_time = pvdata.value[0]
|
||||
|
||||
self.cafe.openMonitorPrepare()
|
||||
self.cafe.monitorStart(self.pv_alarm_warn, cb=cb_alarm_warn)
|
||||
self.cafe.monitorStart(self.pv_alarm_error, cb=cb_alarm_error)
|
||||
self.cafe.monitorStart(self.pv_user_start_time, cb=cb_user_start)
|
||||
self.cafe.monitorStart(self.pv_user_end_time, cb=cb_user_end)
|
||||
self.cafe.openMonitorNow()
|
||||
|
||||
|
||||
|
||||
self.status_dict = {}
|
||||
|
||||
self.font_gui = self.parent.gui_frame.font_gui
|
||||
@@ -102,7 +139,7 @@ class AppGui(QWidget):
|
||||
self.input_labels = self.parent.input_labels
|
||||
self.expert_parameters = self.parent.expert_parameters
|
||||
self.gui_frame.expert_parameters_group.setFixedWidth(260) #260
|
||||
self.gui_frame.expert_parameters_group.setFixedHeight(180) #130
|
||||
self.gui_frame.expert_parameters_group.setFixedHeight(130) #130
|
||||
self.gui_frame.operator_parameters_group.setFixedWidth(260)
|
||||
self.gui_frame.operator_parameters_group.setFixedHeight(130)
|
||||
self.gui_frame.measurement_tab_wgt.setFixedWidth(440)
|
||||
@@ -158,8 +195,11 @@ class AppGui(QWidget):
|
||||
self.gui_frame.central_tab_widget.tabBar().setTabText(0, "Control")
|
||||
#self.gui_frame.central_tab_widget.tabBar().setTabText(1, "IOC")
|
||||
print("====================================")
|
||||
|
||||
|
||||
|
||||
if "Controlroom" in self.assigned_master:
|
||||
|
||||
|
||||
shift_type = CAQMenu(self, pv_name="PRO-HUSH:SHIFT-TYPE")
|
||||
self.gui_frame.operator_parameters_group.layout().insertWidget(
|
||||
0, QLabel(" Shift Type:"))
|
||||
@@ -199,7 +239,8 @@ class AppGui(QWidget):
|
||||
self.gui_frame.results_layout.addWidget(
|
||||
self.reset_lastpwr(), 1, 0, 1, 1,
|
||||
Qt.AlignmentFlag(Qt.AlignTop|Qt.AlignCenter))
|
||||
|
||||
|
||||
|
||||
self.expert_labels = self.parent.expert_labels
|
||||
self.settings = self.parent.settings
|
||||
|
||||
@@ -255,9 +296,14 @@ class AppGui(QWidget):
|
||||
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.0)
|
||||
|
||||
self.cafe.open(open_list)
|
||||
self.cafe.open(self.pv_alarm_warn)
|
||||
self.cafe.open(self.pv_alarm_error)
|
||||
self.cafe.open(self.pv_user_start_time)
|
||||
self.cafe.open(self.pv_user_end_time)
|
||||
self.cafe.openNowAndWait(0.4)
|
||||
time.sleep(0.1)
|
||||
|
||||
self.cafe.printDisconnected()
|
||||
|
||||
self.submastership_dict = {
|
||||
@@ -347,6 +393,13 @@ class AppGui(QWidget):
|
||||
except Exception as ex:
|
||||
print("EMIT FAILED", str(ex))
|
||||
|
||||
#Alarm handling
|
||||
self.gui_frame.results_layout.addWidget(
|
||||
self.group_alarm(), 1, 1, 1, 1,
|
||||
Qt.AlignmentFlag(Qt.AlignTop|Qt.AlignCenter))
|
||||
|
||||
|
||||
|
||||
self.gui_frame.simulation_checkbox.stateChanged.connect(
|
||||
self.simulation_update)
|
||||
|
||||
@@ -419,7 +472,7 @@ class AppGui(QWidget):
|
||||
|
||||
#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(10000)
|
||||
@@ -428,6 +481,22 @@ class AppGui(QWidget):
|
||||
|
||||
def update_awake_alarm_message(self):
|
||||
|
||||
#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(self.user_start_time, "%H:%M").time()
|
||||
given_time_stop = datetime.strptime(self.user_end_time, "%H:%M").time()
|
||||
|
||||
#print(given_time_start, given_time_stop)
|
||||
|
||||
if given_time_start <= current_time <= given_time_stop:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def what_alarm(sect, plot_only=False):
|
||||
alarm_val = 0
|
||||
pvdata = self.cafe.getPVCache(
|
||||
@@ -447,13 +516,17 @@ class AppGui(QWidget):
|
||||
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
|
||||
|
||||
if self.simple_tdiff[idx][0] > int(
|
||||
self.input_parameters['alarmMajor']):
|
||||
elif self.simple_tdiff[idx][0] > int(self.alarm_error):
|
||||
#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']):
|
||||
elif self.simple_tdiff[idx][0] > int(self.alarm_warn):
|
||||
#self.input_parameters['alarmMinor']):
|
||||
self.simple_alarm[idx].setStyleSheet(self.alarm_minor_sss)
|
||||
alarm_val = 1
|
||||
else:
|
||||
@@ -465,7 +538,8 @@ class AppGui(QWidget):
|
||||
int(self.simple_tdiff[idx][0])) + ' min ')
|
||||
|
||||
return alarm_val
|
||||
|
||||
|
||||
|
||||
for sect in self.simple_sector_list:
|
||||
idx = self.simple_sector_list.index(sect)
|
||||
pv = self.settings.data[sect]['alarm']
|
||||
@@ -484,18 +558,21 @@ class AppGui(QWidget):
|
||||
self.simple_alarm[idx].setText(' Active ')
|
||||
alarm_val = 0
|
||||
|
||||
#elif 'SH' in sect:
|
||||
# continue
|
||||
|
||||
|
||||
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"]:
|
||||
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)
|
||||
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)
|
||||
|
||||
|
||||
date1 = self.simple_t0[idx]
|
||||
@@ -537,8 +614,12 @@ class AppGui(QWidget):
|
||||
|
||||
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)
|
||||
@@ -1149,6 +1230,40 @@ class AppGui(QWidget):
|
||||
|
||||
return qsector, qpinit, qpnow, qpsave, qptime, qptotsave, qawakealarm
|
||||
|
||||
|
||||
def group_alarm(self):
|
||||
qgrid = QGridLayout()
|
||||
|
||||
qwarn = CAQTextEntry(self, pv_name=self.pv_alarm_warn)
|
||||
qerror = CAQTextEntry(self, pv_name=self.pv_alarm_error)
|
||||
qstarttime = CAQTextEntry(self, pv_name=self.pv_user_start_time)
|
||||
qendtime = CAQTextEntry(self, pv_name=self.pv_user_end_time)
|
||||
qlwarn = QLabel("Minutes to Minor Alarm:")
|
||||
qlerror = QLabel(" Major Alarm:")
|
||||
qlstarttime = QLabel("User Operation Start Time:")
|
||||
#qlstarttime.setToolTip("Format HH::MM")
|
||||
|
||||
qlendtime = QLabel(" End Time:")
|
||||
#qlendtime.setToolTip("Format HH::MM")
|
||||
|
||||
qgrid.addWidget(qlwarn, 0, 0, 1, 2)
|
||||
qgrid.addWidget(qlerror, 0, 3, 1, 1)
|
||||
qgrid.addWidget(qlstarttime, 1, 0, 1, 2)
|
||||
qgrid.addWidget(qlendtime, 1, 3, 1, 1)
|
||||
qgrid.addWidget(qwarn, 0, 2, 1, 1)
|
||||
qgrid.addWidget(qerror, 0, 4, 1, 1)
|
||||
qgrid.addWidget(qstarttime, 1, 2, 1, 1)
|
||||
qgrid.addWidget(qendtime, 1, 4, 1, 1)
|
||||
|
||||
qw = QGroupBox("Alarm Settings")
|
||||
qw.setContentsMargins(9, 9, 9, 9)
|
||||
qw.setObjectName("OUTER")
|
||||
qw.setLayout(qgrid)
|
||||
qw.setFixedWidth(410) # 596
|
||||
qw.setFixedHeight(150)
|
||||
|
||||
return qw
|
||||
|
||||
def group_sector_qtabwidget(self):
|
||||
|
||||
#idx_last = self.settings.data["header"].index("MASTER")
|
||||
|
||||
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", current_time)
|
||||
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