Ejemplo n.º 1
0
 def stop(self):
     if self.slave_server is not None:
         self.slave_server.close()
         # self.server_sock = None
         self.connection_status = False
         self.handshake_done = False
         operate_gpio_digital(STATUS_LED_GPIO, 1)
Ejemplo n.º 2
0
 def blink(self, closing_value):
     global blink_level
     print "blinking... LEVEL" + str(blink_level)
     while self.sts_blink is True:
         self.StatusLED.off()
         time.sleep(self.blink_pause)
         self.StatusLED.on()
         time.sleep(self.blink_pause)
     operate_gpio_digital(STATUS_LED_GPIO, closing_value)
     print "blink end. LEVEL" + str(blink_level)
Ejemplo n.º 3
0
 def operate(self):
     for i in range(0, 3, 1):
         operate_gpio_digital(self.gpio, 1)
         time.sleep(self.led_retention_sec)
         operate_gpio_digital(self.gpio, 0)
         time.sleep(self.blinking_delay_sec)
         pass
     operate_gpio_digital(self.gpio, self.closing_value)
Ejemplo n.º 4
0
    def _communicate(self, in_server_conn, server_data):
        # read data from server
        log("RX: {}".format(server_data))
        # if data available
        if server_data is not "" and server_data is not None:
            try:
                iotp_response = IOTPTransactionResponse(
                    400, IOTP_SLAVE_CONF[KEY_SLAVE_ID])
                iotp_request = IOTPTransactionData(
                    server_data, IOTP_SLAVE_CONF[KEY_SLAVE_ID])

                # command request
                if iotp_request.get_trans_type_id(
                ) is IOTPTransactionData.RequestType.COMMAND:
                    # process server data C 0001 0014 1 D 2 0001
                    r = IOTPTransactionTypeCommand(iotp_request)
                    while r.has_next():
                        inf = r.next_operand_info()

                        operand_type = inf[INDEX_OPERAND_TYPE]
                        operand_id = inf[INDEX_OPERAND_ID]
                        operation = inf[INDEX_OPERATION]

                        try:
                            """ Search PIN """
                            HWConf = None
                            for k in range(0, len(HARDWARE_CONF)):
                                hw_c = HARDWARE_CONF[k]
                                if hw_c is not None and hw_c[
                                        INDEX_OPERAND_ID] is operand_id:
                                    """ PIN Found """
                                    HWConf = hw_c
                                    self.save_to_database(
                                        operand_id, operation)
                                    break
                            if HWConf is None:
                                iotp_response.set_status(405)
                                break
                            else:
                                pin_type = HWConf[INDEX_OPERAND_TYPE]
                                if pin_type == operand_type:
                                    pin = HWConf[INDEX_GPIO]
                                    if pin_type == DIGITAL_OPERAND_TYPE:
                                        # Change the operation value as the relays are active low
                                        if operation is 0:
                                            operation = 1
                                        else:
                                            operation = 0

                                        # Perform Digital Operation
                                        operate_gpio_digital(pin, operation)
                                        iotp_response.set_status(200)
                                        pass
                                    elif pin_type == ANALOG_OPERAND_TYPE:
                                        # Perform Analog Operation
                                        operate_gpio_analog(pin, operation)
                                        iotp_response.set_status(200)
                                        pass
                        except RuntimeError, e:
                            print e
                            log_error(e)
                            iotp_response.set_status(500)
                            iotp_response.set_message(e.message)
                            break
                # interrogation request
                elif iotp_request.get_trans_type_id(
                ) is IOTPTransactionData.RequestType.INTERROGATION:
                    # process server data D 0001 0014 D
                    # process server data D 0001 0014 C
                    intr = IOTPTransactionTypeInterrogation(iotp_request)
                    if intr.is_connection_check():
                        iotp_response.set_status(200)
                        pass
                    elif intr.is_status_check():
                        status = []
                        for k in range(0, len(HARDWARE_CONF)):
                            hw_c = HARDWARE_CONF[k]
                            if hw_c is not None:
                                sts = get_gpio_status(hw_c[INDEX_GPIO])
                                if sts is 0:
                                    sts = 1
                                else:
                                    sts = 0
                                status.append({
                                    "id": hw_c[INDEX_OPERAND_ID],
                                    "type": hw_c[INDEX_OPERAND_TYPE],
                                    "state": sts
                                })
                        iotp_response.set_status(200)
                        iotp_response.set_message(status)
                        pass
                    pass
                log("TX: {}\\n".format(iotp_response.get_json()))
                in_server_conn.sendall(iotp_response.get_json() + "\n")
Ejemplo n.º 5
0
 def off(self):
     operate_gpio_digital(self.gpio, 0)
     pass
Ejemplo n.º 6
0
 def on(self):
     operate_gpio_digital(self.gpio, 1)
     pass