コード例 #1
0
ファイル: gui_2.py プロジェクト: aignacio/prog_lightdna
 def __init__(self, parent=None):
     QtGui.QWidget.__init__(self, parent)
     self.ui = Ui_Dialog()
     self.ui.setupUi(self)
     slider=self.ui.verticalSlider
     slider.valueChanged[int].connect(self.print_value)
     slider.sliderReleased.connect(self.dimmer)
     lb= self.ui.label
     lb.setText("0%")
     info_lb= self.ui.info
     info_lb.setText("%s being tested" %dev_ID)
     #loading initial values
     if (dev_ID =='00000000'):
         info_lb.setText("%s is not a device" %dev_ID)
     else:
         self.setValue('current', 'R0001')
         self.setValue('temperature', 'R0004')
         self.setValue('ldr', 'R0003')
         self.setValue('rssi', 'R0254')
         self.setValue('dimmer', 'R0005')
         self.setValue('pir', 'R0002')
         
     self.ui.current_button.clicked.connect(lambda: self.setValue('current', 'R0001'))
     self.ui.temp_button.clicked.connect(lambda: self.setValue('temperature', 'R0004'))
     self.ui.ldr_button.clicked.connect(lambda: self.setValue('ldr', 'R0003'))
     self.ui.rssi_button.clicked.connect(lambda: self.setValue('rssi', 'R0254'))
     self.ui.dimmer_button.clicked.connect(lambda: self.setValue('dimmer', 'R0005'))
     self.ui.pir_button.clicked.connect(lambda: self.setValue('pir', 'R0002'))        
     self.ui.fw_button.clicked.connect(self.get_fw)        
コード例 #2
0
ファイル: gui_2.py プロジェクト: aignacio/prog_lightdna
class MyDialog(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        slider=self.ui.verticalSlider
        slider.valueChanged[int].connect(self.print_value)
        slider.sliderReleased.connect(self.dimmer)
        lb= self.ui.label
        lb.setText("0%")
        info_lb= self.ui.info
        info_lb.setText("%s being tested" %dev_ID)
        #loading initial values
        if (dev_ID =='00000000'):
            info_lb.setText("%s is not a device" %dev_ID)
        else:
            self.setValue('current', 'R0001')
            self.setValue('temperature', 'R0004')
            self.setValue('ldr', 'R0003')
            self.setValue('rssi', 'R0254')
            self.setValue('dimmer', 'R0005')
            self.setValue('pir', 'R0002')
            
        self.ui.current_button.clicked.connect(lambda: self.setValue('current', 'R0001'))
        self.ui.temp_button.clicked.connect(lambda: self.setValue('temperature', 'R0004'))
        self.ui.ldr_button.clicked.connect(lambda: self.setValue('ldr', 'R0003'))
        self.ui.rssi_button.clicked.connect(lambda: self.setValue('rssi', 'R0254'))
        self.ui.dimmer_button.clicked.connect(lambda: self.setValue('dimmer', 'R0005'))
        self.ui.pir_button.clicked.connect(lambda: self.setValue('pir', 'R0002'))        
        self.ui.fw_button.clicked.connect(self.get_fw)        
    

    def print_value(self, value):
        self.ui.label.setText("%d %%" %value)

    # gets the dimmer value from slider and publish it on device topic     
    def dimmer(self):
        value = self.ui.verticalSlider.value()
        if (dev_ID =='00000000'):       
            info_lb.setText("%s is not a device" %dev_ID)
        else:
            client.connect("192.168.0.100", 1883, 60)
            #client.on_connect = on_connect
            if value < 10:
                client.publish("lights/%s" %dev_ID, "W0001-00%s" %value)
            else:
                client.publish("lights/%s" %dev_ID, "W0001-0%s" %value)
        client.disconnect()

    # Connect the client, subscribe in a given topic, publish the message and shows the feedback on gui     
    def setValue(self, topic, signal):

        def setDisplay(client, userdata, msg):
            data= msg.payload
            if topic == 'current':
                self.ui.current_display.setText(data)
            elif topic == 'temperature':
                self.ui.temp_display.setText(data)
            elif topic == 'ldr':
                self.ui.ldr_display.setText(data)
            elif topic == 'rssi':
                self.ui.rssi_display.setText("%s dBm" %data)
            elif topic == 'dimmer':
                self.ui.dimmer_display.setText("%s%%" %data)
            elif topic == 'pir':
                self.ui.pir_display.setText(data)
            client.disconnect()

        client.connect("192.168.0.100", 1883, 60)
        client.subscribe("lights/%s/%s" %(dev_ID,topic))
        client.on_message = setDisplay
        client.publish("lights/%s" %dev_ID, "%s" %signal )
        client.loop_forever()
        time.sleep(0.3)
    
    def get_fw(self):

        def set_fwDisplay(client, userdata, msg):
            data= msg.payload
            self.ui.fw_display.setText(data)
            client.disconnect()

        client.connect("192.168.0.100", 1883, 60)
        client.subscribe("lights/%s/status" %dev_ID)
        client.on_message = set_fwDisplay
        client.publish("lights/%s" %dev_ID, "R0255")
        client.loop_forever()
        time.sleep(0.3)