diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..676c03aa51bc648ca7c79e5d9e18215a6fc41e20
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,18 @@
+NAME = laser-feedbacks-gui
+MAIN = laser-feedbacks.py
+
+DIRNAME = $(NAME:-gui=)
+PY_FILES += $(wildcard src/*.py)
+
+default: bin ${PY_FILES}
+	@cp ${PY_FILES} bin/${DIRNAME}
+	@echo "#!/bin/bash\nexec ${DIRNAME}/${MAIN}" > bin/${NAME}
+	@chmod +x bin/${NAME} bin/${DIRNAME}/${MAIN}
+
+bin:
+	@test -d $@ || mkdir -p $@/${DIRNAME}
+
+clean:
+	@rm -fr bin/ src/*~
+
+.PHONY: clean
diff --git a/src/laser-feedbacks.py b/src/laser-feedbacks.py
new file mode 100755
index 0000000000000000000000000000000000000000..74b10e41ea6eaa93fd147ae849d8d728a6ae2669
--- /dev/null
+++ b/src/laser-feedbacks.py
@@ -0,0 +1,697 @@
+#!/usr/bin/python 
+
+##################### python3 errors ################################
+#Traceback (most recent call last):
+#  File "fermilaserfeedbacks_V2.py", line 580, in <module>
+#    window = MainWindow()
+#  File "fermilaserfeedbacks_V2.py", line 186, in __init__
+#    mappa = devpil.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+#TypeError: 'dict_items' object does not support indexing
+#Exception ignored in: <bound method MainWindow.__del__ of <__main__.MainWindow object at 0x7f89caa05288>>
+#Traceback (most recent call last):
+#  File "fermilaserfeedbacks_V2.py", line 426, in __del__
+#    self.timer.stop()
+#AttributeError: 'MainWindow' object has no attribute 'timer'
+
+
+
+import os
+import PyTango
+from PyQt4.QtCore import *
+from PyQt4.QtGui import *
+import csv
+
+sogliauno = 70
+sogliadue = 90
+
+dev = {}
+dev['calendario_sl'] = PyTango.DeviceProxy('sl/laser/calendar_sl.01')
+dev['calendario_slu'] = PyTango.DeviceProxy('slu/laser/calendar_slu.01')
+selettore_sl = dev['calendario_sl'].activityNum
+selettore_slu = dev['calendario_slu'].activityNum
+
+devpil = {}
+devpil['pillegendtiming'] = PyTango.DeviceProxy('pil/feedback/fbdelay_pil.01')
+devpil['pilrienergy'] = PyTango.DeviceProxy('pil/feedback/fb_energy_ir_pil.01')
+devpil['feedbackcarica'] = PyTango.DeviceProxy('f/feedback/charge_fb.01')
+
+devlh = {}
+devlh['lhpointing'] = PyTango.DeviceProxy('lhl/feedback/rtltf_lhl.01')
+devlh['lhtransport'] = PyTango.DeviceProxy('lhl/feedback/rtltf_transport_lhl.01')
+
+devsl = {}
+if selettore_sl == 1: #ELITE1_OPA_FEL1
+    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+    devsl['fel1energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel01.01')
+    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+elif selettore_sl == 2: #ELITE1_OPA_FEL1_ELITE2_SLU
+    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+    devsl['fel1energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel01.01')
+    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+elif selettore_sl == 3: #ELITE1_THG_FEL1
+    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+elif selettore_sl == 4: #ELITE1_THG_FEL1_ELITE2_SLU
+    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+elif selettore_sl == 5: #ELITE1_THGOPA_FEL1
+    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    #feedback pointing thg
+elif selettore_sl == 6: #ELITE1_THGOPA_FEL1_ELITE2_SLU 
+    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    #feedback pointing thg
+elif selettore_sl == 7: #ELITE2_THG_FEL2
+    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+    devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+elif selettore_sl == 8: #ELITE2_THG_FEL2_ELITE1_SLU
+    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+    devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+elif selettore_sl == 9: #ELITE2_OPA_FEL2
+    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+    devsl['fel2energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel02.01')
+    devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+elif selettore_sl == 10: #ELITE2_OPA_FEL2_ELITE1_SLU
+    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+    devsl['fel2energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel02.01')
+    devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+elif selettore_sl == 11: #ELITE2_THG_FEL2_ELITE1_EEHG
+    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+    devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+    #feedback eehg
+elif selettore_sl == 0: #SHUTDOWN
+    devsl = {}
+else:
+    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+    devsl['fel1energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel01.01')
+    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    devsl['fel2energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel02.01')
+    devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+######################## FAST FEEDBACK
+#devslu = {}
+#devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/rtltf_totem_slu.01')
+#if selettore_slu == 1: #ELITE2_TIMER
+#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
+#    devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/rtltf_timer_slu.01')
+#elif selettore_slu == 2: #ELITE2_TIMEX
+#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
+#    devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/rtltf_timex_slu.01')
+#elif selettore_slu == 3: #ELITE2_DIPRI
+#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
+#    devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/rtltf_diproi_slu.01')
+#elif selettore_slu == 4: #ELITE2_LDM
+#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
+#    devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/rtltf_ldm_slu.01')
+#elif selettore_slu == 5: #ELITE2_TOTEM
+#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
+#    devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/rtltf_totem_slu.01')
+#elif selettore_slu == 6: #ELITE2_MAGNEDYN
+#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
+#    devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/rtltf_mag_slu.01')
+#elif selettore_slu == 7: #ELITE1_TIMER
+#    devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/rtltf_timer_slu.01')
+#elif selettore_slu == 8: #ELITE1_TIMEX
+#    devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/rtltf_timex_slu.01')
+#elif selettore_slu == 9: #ELITE1_DIPRI
+#    devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/rtltf_diproi_slu.01')
+#elif selettore_slu == 10: #ELITE1_LDM
+#    devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/rtltf_ldm_slu.01')
+#elif selettore_slu == 11: #ELITE1_TOTEM
+#    devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/rtltf_totem_slu.01')
+#elif selettore_slu == 12: #ELITE1_MAGNEDYN
+#    devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/rtltf_mag_slu.01')
+#elif selettore_slu == 0: #SHUTDOWN
+#    devslu = {}
+#else:
+#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
+#    devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/rtltf_totem_slu.01')
+#    devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/rtltf_timer_slu.01')
+#    devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/rtltf_timex_slu.01')
+#    devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/rtltf_diproi_slu.01')
+#    devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/rtltf_ldm_slu.01')
+#    devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/rtltf_mag_slu.01')
+
+###################### MIMO FEEDBACK
+devslu = {}
+if selettore_slu == 1: #ELITE2_TIMER
+    devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmr_slu.01')
+elif selettore_slu == 2: #ELITE2_TIMEX
+    devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmx_slu.01')
+elif selettore_slu == 3: #ELITE2_DIPRI
+    devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/mimofb_diproi_slu.01')
+elif selettore_slu == 4: #ELITE2_LDM
+    devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/mimofb_ldm_slu.01')
+elif selettore_slu == 5: #ELITE2_TOTEM
+    devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/mimofb_totem_slu.01')
+elif selettore_slu == 6: #ELITE2_MAGNEDYN
+    devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/mimofb_mag_slu.01')
+elif selettore_slu == 7: #ELITE1_TIMER
+    devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmr_slu.01')
+elif selettore_slu == 8: #ELITE1_TIMEX
+    devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmx_slu.01')
+elif selettore_slu == 9: #ELITE1_DIPRI
+    devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/mimofb_diproi_slu.01')
+elif selettore_slu == 10: #ELITE1_LDM
+    devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/mimofb_ldm_slu.01')
+elif selettore_slu == 11: #ELITE1_TOTEM
+    devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/mimofb_totem_slu.01')
+elif selettore_slu == 12: #ELITE1_MAGNEDYN
+    devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/mimofb_mag_slu.01')
+elif selettore_slu == 0: #SHUTDOWN
+    devslu = {}
+else:
+    devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmr_slu.01')
+    devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmx_slu.01')
+    devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/mimofb_diproi_slu.01')
+    devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/mimofb_ldm_slu.01')
+    devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/mimofb_mag_slu.01')
+
+
+
+
+
+#slu - esterni
+#devslu['timer'] = PyTango.DeviceProxy('srv-tmr-srf:20000/tmr/slu/rtltf_tmr.01')
+#devslu['timex'] = PyTango.DeviceProxy('srv-tmx-srf:20000/timex/slu/rtltf_timex.01')
+#devslu['diproi'] = PyTango.DeviceProxy('srv-dpi-srf:20000/diproi/slu/rtltf_diproi.01')
+#devslu['ldmthg'] = PyTango.DeviceProxy('srv-ldm-srf:20000/ldm/feedback/rtltf_ldm.01')
+#devslu['ldmfund'] = PyTango.DeviceProxy('srv-ldm-srf:20000/ldm/feedback/rtltf_ldm.02')
+
+
+
+class MainWindow(QDialog):
+    def __init__(self, parent = None):
+        super(MainWindow, self).__init__(parent)
+        self.riquadrodiselezione = QGroupBox()
+        self.selezionetutti = QRadioButton("ALL")
+        self.selezionestandard = QRadioButton("Standard")
+        loselezione = QHBoxLayout()
+        loselezione.addWidget(self.selezionetutti)
+        loselezione.addWidget(self.selezionestandard)
+        self.riquadrodiselezione.setLayout(loselezione)
+        self.riquadrodipil = QGroupBox('PIL')
+        self.riquadrodipil.setStyleSheet("background-color: rgb(255, 255, 200)")
+        lopil = QGridLayout()
+        #print(len(devpil))
+        for indice in range(len(devpil)):
+            mappa = devpil.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+            if mappa[1] == 'rtltf-srv':
+                tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster' + devpil.items()[indice][1].name() + ' --laser &"))') #creo comando apri pannello
+                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            #elif mappa[1] == 'dcf-srv':
+                #tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device
+                #nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                #exec('self.' + nomedicomodoperpannello + '_state = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                #exec('self.' + nomedicomodoperpannello + '_state.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + devpil.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_state, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'mimofb-srv':
+                tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + devpil.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'sequencerconf-srv':
+                tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + devpil.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            #elif mappa[1] == 'lefb-srv':
+                #tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device
+                #nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                #exec('self.' + nomedicomodoperpannello + '_state = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                #exec('self.' + nomedicomodoperpannello + '_state.clicked.connect(lambda: os.system("/runtime/bin/lef ' + devpil.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_state, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+        self.riquadrodipil.setLayout(lopil)
+        self.riquadrodilhl = QGroupBox('LHL')
+        self.riquadrodilhl.setStyleSheet("background-color: rgb(255, 200, 200)")
+        lolh = QGridLayout()
+        #print(len(devlh))
+        for indice in range(len(devlh)):
+            mappa = devlh.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+            if mappa[1] == 'rtltf-srv':
+                tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster ' + devlh.items()[indice][1].name() +' --laser &"))') #creo comando apri pannello
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'dcf-srv':
+                tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + devlh.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'mimofb-srv':
+                tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + devlh.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'sequencerconf-srv':
+                tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + devlh.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                #exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'lefb-srv':
+                tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/lef ' + devlh.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+        self.riquadrodilhl.setLayout(lolh)
+        self.riquadrodisl = QGroupBox('SEED')
+        self.riquadrodisl.setStyleSheet("background-color: rgb(200, 255, 255)")
+        losl = QGridLayout()
+        #print(len(devsl))
+        for indice in range(len(devsl)):
+            mappa = devsl.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+            if mappa[1] == 'rtltf-srv':
+                tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster ' + devsl.items()[indice][1].name() + ' --laser &"))') #creo comando apri pannello
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'dcf-srv':
+                tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + devsl.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'mimofb-srv':
+                tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + devsl.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'sequencerconf-srv':
+                tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + devsl.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                #exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'lefb-srv':
+                tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/lef ' + devsl.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+        self.riquadrodisl.setLayout(losl)
+        self.riquadrodislu = QGroupBox('SLU')
+        self.riquadrodislu.setStyleSheet("background-color: rgb(200, 255, 200)")
+        loslu = QGridLayout()
+        #print(len(devslu))
+        for indice in range(len(devslu)):
+            mappa = devslu.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+            #print(mappa) ######## DA SISTEMARE
+            if mappa[1] == 'rtltf-srv':
+                tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster ' + devslu.items()[indice][1].name() + ' --laser &"))') #creo comando apri pannello
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'dcf-srv':
+                tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + devslu.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'mimofb-srv':
+                tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + devslu.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'sequencerconf-srv':
+                tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + devslu.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                #exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+            elif mappa[1] == 'lefb-srv':
+                tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device
+                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/lef ' + devslu.items()[indice][1].name() +' &"))') #creo comando apri pannello
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+        self.riquadrodislu.setLayout(loslu)
+        loglobale = QGridLayout()
+        #loglobale.addWidget(self.riquadrodiselezione, 0, 0, 1, 2)
+        loglobale.addWidget(self.riquadrodipil, 1, 0, 1, 1)
+        loglobale.addWidget(self.riquadrodilhl, 2, 0, 1, 1)
+        loglobale.addWidget(self.riquadrodisl, 1, 1, 3, 1)
+        loglobale.addWidget(self.riquadrodislu, 3, 0, 1, 1)
+        self.setLayout(loglobale)
+        #self.setMaximumWidth(750)
+        self.setWindowTitle("LASER FEEDBACKs")
+        self.show()
+        self.timer = QBasicTimer()
+        self.timer.start(2000, self)
+
+    def timerEvent(self, event):
+        self.update()
+        pass
+    
+    #/runtime/bin/ftfmaster sl/feedback/rtltf_osc.02 -title Elite1_INPUT_pointing_Feedback_(rtltf_osc.02) --laser
+
+    def __del__(self):
+        self.timer.stop()
+        pass
+
+    def update(self):
+        #print('pil: ' + str(len(devpil)) + ', lhl: ' + str(len(devlh)) + ', sl: ' + str(len(devsl)) + ', slu: ' + str(len(devslu)))
+        chiavipil = devpil.keys()
+        for indice in range(len(chiavipil)):
+            if str(devpil[chiavipil[indice]]).split('(')[0] == 'MIMOFB':
+                percentuale = round(devpil[chiavipil[indice]].ActuatorMaxPercentage, 0)
+                exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                if percentuale <= sogliauno:
+                    exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                elif percentuale > sogliauno and percentuale < sogliadue:
+                    exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                elif percentuale >= sogliadue:
+                    exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+            elif str(devpil[chiavipil[indice]]).split('(')[0] == 'RTLTF':
+                percentuale = round(max(devpil[chiavipil[indice]].CorHorMax, devpil[chiavipil[indice]].CorVerMax), 0)
+                exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                if percentuale <= sogliauno:
+                    exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                elif percentuale > sogliauno and percentuale < sogliadue:
+                    exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                elif percentuale >= sogliadue:
+                    exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+            stato = str(devpil[chiavipil[indice]].state())
+            exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")')
+            if stato == 'ON' or stato == 'RUNNING':
+                exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")')
+            elif stato == 'STANDBY' or stato == 'MOVING' or stato == 'WAITING':
+                exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")')
+            elif stato == 'OFF':
+                exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")')
+            else:
+                exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")')
+        
+        chiavilhl = devlh.keys()
+        for indice in range(len(chiavilhl)):
+            if str(devlh[chiavilhl[indice]]).split('(')[0] == 'MIMOFB':
+                percentuale = round(devlh[chiavilhl[indice]].ActuatorMaxPercentage, 0)
+                exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                if percentuale <= sogliauno:
+                    exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                elif percentuale > sogliauno and percentuale < sogliadue:
+                    exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                elif percentuale >= sogliadue:
+                    exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+            elif str(devlh[chiavilhl[indice]]).split('(')[0] == 'RTLTF':
+                percentuale = round(max(devlh[chiavilhl[indice]].CorHorMax, devlh[chiavilhl[indice]].CorVerMax), 0)
+                exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                if percentuale <= sogliauno:
+                    exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                elif percentuale > sogliauno and percentuale < sogliadue:
+                    exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                elif percentuale >= sogliadue:
+                    exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+            stato = str(devlh[chiavilhl[indice]].state())
+            exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")')
+            if stato == 'ON' or stato == 'RUNNING':
+                exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")')
+            elif stato == 'STANDBY' or stato == 'MOVING' or stato == 'WAITING':
+                exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")')
+            elif stato == 'OFF':
+                exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")')
+            else:
+                exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")')
+        
+        chiavisl = devsl.keys()
+        for indice in range(len(chiavisl)):
+            if str(devsl[chiavisl[indice]]).split('(')[0] == 'MIMOFB':
+                percentuale = round(devsl[chiavisl[indice]].ActuatorMaxPercentage, 0)
+                exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                if percentuale <= sogliauno:
+                    exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                elif percentuale > sogliauno and percentuale < sogliadue:
+                    exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                elif percentuale >= sogliadue:
+                    exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+            elif str(devsl[chiavisl[indice]]).split('(')[0] == 'RTLTF':
+                percentuale = round(max(devsl[chiavisl[indice]].CorHorMax, devsl[chiavisl[indice]].CorVerMax), 0)
+                exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                if percentuale <= sogliauno:
+                    exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                elif percentuale > sogliauno and percentuale < sogliadue:
+                    exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                elif percentuale >= sogliadue:
+                    exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+            stato = str(devsl[chiavisl[indice]].state())
+            exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")')
+            if stato == 'ON' or stato == 'RUNNING':
+                exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")')
+            elif stato == 'STANDBY' or stato == 'MOVING' or stato == 'WAITING':
+                exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")')
+            elif stato == 'OFF':
+                exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")')
+            else:
+                exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")')
+################################## DA QUI
+        chiavislu = devslu.keys()
+        for indice in range(len(chiavislu)):
+            if str(devslu[chiavislu[indice]]).split('(')[0] == 'MIMOFB':
+                percentuale = round(devslu[chiavislu[indice]].ActuatorMaxPercentage, 0)
+                exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                if percentuale <= 60:
+                    exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                elif percentuale > 60 and percentuale < 80:
+                    exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                elif percentuale >= 80:
+                    exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+            elif str(devslu[chiavislu[indice]]).split('(')[0] == 'RTLTF':
+                percentuale = round(max(devslu[chiavislu[indice]].CorHorMax, devslu[chiavislu[indice]].CorVerMax), 0)
+                exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                if percentuale <= 60:
+                    exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                elif percentuale > 60 and percentuale < 80:
+                    exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                elif percentuale >= 80:
+                    exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+            stato = str(devslu[chiavislu[indice]].state())
+            exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")')
+            if stato == 'ON' or stato == 'RUNNING':
+                exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")')
+            elif stato == 'STANDBY' or stato == 'MOVING' or stato == 'WAITING':
+                exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")')
+            elif stato == 'OFF':
+                exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")')
+            else:
+                exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")')
+
+############################ manca hide/show
+
+if __name__ == '__main__':
+    app = QApplication([])
+    try:
+        tmpdim = sys.argv[1]
+        tmpdim = tmpdim.split('x')
+        dimensione = [float(tmpdim[0]), float(tmpdim[1])]
+    except:
+        screen = QDesktopWidget().screenGeometry()
+        larghezzaaltezza = [screen.width(), screen.height()]
+        print(larghezzaaltezza)
+        if max(larghezzaaltezza) > 3000:
+            dimensione = max(larghezzaaltezza)*0.38
+        elif max(larghezzaaltezza) > 2000:
+            dimensione = max(larghezzaaltezza)*0.6
+        elif max(larghezzaaltezza) > 1000:
+            dimensione = max(larghezzaaltezza)*0.7
+        else:
+            dimensione = max(larghezzaaltezza)*2
+    font_grande = QFont("Arial", round(dimensione/60.0), -1, False)
+    font_medio = QFont("Arial", round(dimensione/120.0), -1, False)
+    font_importante = QFont("Arial", round(dimensione/120.0), 1, True)
+    font_pannello = QFont("Arial", round(dimensione/140.0), -1, False)
+    app.setFont(font_pannello)
+    window = MainWindow()
+    window.resize(larghezzaaltezza[0]/3, larghezzaaltezza[1]/6)
+    window.show()
+    app.exec_()
+
+
+#/runtime/bin/fbdelay pil/feedback/fbdelay_pil.01 -title Legend-MIRA_Delay_Feedback_(fbdelay_pil.01)
+#/runtime/bin/lef pil/feedback/lef_ir.01 -title PIL_IR_Enegy_feedback_(lef_ir.01)
+#/usr/local/tango-8.1.2.c/bin/atkpanel pil/sequence/seq_check_link_pil.01
+#/runtime/bin/mimofb f/feedback/charge_fb.01 -title "Charge feedback"
+
+#/runtime/bin/ftfmaster  lhl/feedback/rtltf_lhl.01 -title LHL_Pointing_feedback_(rtltf_lhl.01) --laser
+#/runtime/bin/ftfmaster  lhl/feedback/rtltf_transport_lhl.01 -title LHL_Transport_feedback_(rtltf_transport_lhl.01) --laser
+
+#/runtime/bin/ftfmaster sl/feedback/rtltf_osc.01 -title Elite2_INPUT_pointing_Feedback_(rtltf_osc.01)
+#/runtime/bin/ftfmaster sl/feedback/rtltf_osc.02 -title Elite1_INPUT_pointing_Feedback_(rtltf_osc.02) --laser
+#/runtime/bin/ftfmaster sl/feedback/rtltf_elite.01  -title Elite1_pointing_feedback_(rtltf_elite.01) --laser
+#/runtime/bin/ftfmaster sl/feedback/rtltf_elite.02  -title Elite2_pointing_feedback_(rtltf_elite.02) --laser
+#/runtime/bin/ftfmaster sl/feedback/rtltf_fel01.01  -title FEL01_pointing_feedback_(rtltf_fel01.01) --laser
+#/runtime/bin/ftfmaster sl/feedback/rtltf_fel02.01 -title FEL02_pointing_feedback_(rtltf_fel02.01) --laser
+#/runtime/bin/ftfmaster sl/feedback/rtltf_th_sl.01 -title THG_T1_pointing_feedback_(rtltf_th_sl.01) --laser
+#/runtime/bin/ftfmaster sl/feedback/rtltf_th_single_sl.01 -title THG_T1_single_pointing_feedback_(rtltf_th_single_sl.01) --laser
+#/runtime/bin/ftfmaster sl/feedback/rtltf_opa_sl.01 -title OPA1_pointing_feedback_(rtltf_opa_sl.01) --laser
+#/runtime/bin/fbdelay sl/feedback/fbdelay_sl.01 -title Elite1_Delay_Feedback_(fbdelay_sl.01)
+#/runtime/bin/fbdelay sl/feedback/fbdelay_sl.02 -title Elite2_Timing_Feedback_(fbdelay_sl.02)
+#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_recover_rtltf_fel01.01
+#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_recover_rtltf_fel02.01
+#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_link_sl.01
+#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_opa_fel01.01
+#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_opa_fel02.01
+#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_recover_rtltf_fel01.01
+#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_recover_rtltf_fel02.01
+#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_relax_rtltf_fel01.01
+#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_relax_rtltf_fel02.01
+#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_rtltf_elite.01
+#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_rtltf_fel01.01
+#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_rtltf_fel02.01
+#/runtime/bin/mimofb sl/feedback/fb_coarse_align_fel01.01
+#/runtime/bin/mimofb sl/feedback/fb_coarse_align_fel01.02
+#/runtime/bin/mimofb sl/feedback/fb_coarse_align_fel02.01
+#/runtime/bin/mimofb sl/feedback/fb_coarse_align_fel02.02
+#/runtime/bin/mimofb sl/feedback/fb_opa_energy_fel01.01
+#/runtime/bin/mimofb sl/feedback/fb_opa_energy_fel02.01
+#/runtime/bin/mimofb sl/feedback/fb_recover_rtltf_fel02.01 -title FEL02_coarse_alignment_tool_(fb_recover_rtltf_fel02.01)/runtime/bin/mimofb 
+#/runtime/bin/mimofb sl/feedback/fb_recover_rtltf_fel01.01 -title FEL01_coarse_alignment_tool_(fb_recover_rtltf_fel01.01)
+#/runtime/bin/mimofb sl/feedback/fb_relax_rtltf_fel01.01 -title Relax FEL01_transverse_feedback_(fb_relax_rtltf_fel01.01)
+#/runtime/bin/mimofb sl/feedback/fb_relax_rtltf_fel02.01 -title Relax FEL02_transverse_feedback_(fb_relax_rtltf_fel02.01)
+#/runtime/bin/mimofb sl/feedback/fb_thg_energy_fel01.01
+#/runtime/bin/mimofb sl/feedback/fb_thg_energy_fel02.01
+
+#/runtime/bin/ftfmaster slu/feedback/rtltf_slr_slu.01 -title ELITE2_for_SLU_traj_feedback_(rtltf_slr_slu.01) --laser
+#/runtime/bin/ftfmaster slu/feedback/rtltf_totem_slu.01 -title TOTEM_traj_feedback_(rtltf_totem_slu.01) --laser
+#/runtime/bin/ftfmaster slu/feedback/rtltf_ldm_slu.01 -title LDM_slu_feedback_(rtltf_ldm_slu.01) --laser
+#/runtime/bin/ftfmaster slu/feedback/rtltf_diproi_slu.01 -title DIPROI_slu_feedback_(rtltf_diproi_slu.01) --laser
+#/runtime/bin/ftfmaster slu/feedback/rtltf_timex_slu.01 -title TIMEX_slu_feedback_(rtltf_timex_slu.01) --laser
+#/runtime/bin/ftfmaster slu/feedback/rtltf_timer_slu.01 -title TIMER_slu_feedback_(rtltf_timer_slu.01) --laser
+#/runtime/bin/ftfmaster srv-tmr-srf:20000/tmr/slu/rtltf_tmr.01
+#/runtime/bin/ftfmaster srv-tmx-srf:20000/timex/slu/rtltf_timex.01
+#/runtime/bin/ftfmaster srv-dpi-srf:20000/diproi/slu/rtltf_diproi.01
+#/runtime/bin/ftfmaster srv-ldm-srf:20000/ldm/feedback/rtltf_ldm.01
+#/runtime/bin/ftfmaster srv-ldm-srf:20000/ldm/feedback/rtltf_ldm.02