Beispiel #1
0
 def start(self):
     self.tx_counter = 0
     BOARD.led_on()
     self.write_payload([0x0f])
     self.set_mode(MODE.TX)
     while True:
         sleep(1)
Beispiel #2
0
 def on_rx_done(self):
     BOARD.led_on()
     print("\nRxDone")
     print(datetime.now())
     #print(self.get_irq_flags())
     #print(self.spi.xfer([0x1C, 0])[1]) # REG.LORA.MODEM_CONFIG_2
     if not self.get_hop_channel()['crc_on_payload']:
         print("No CRC in payload!")
     if not self.get_irq_flags()['valid_header']:
         print("Invalid header in payload!")
     if self.get_irq_flags()['rx_timeout']:
         print("rx timeout!")
     if self.get_irq_flags()['crc_error']:
         print("crc_error!")
     self.clear_irq_flags(RxDone=1, ValidHeader=1)
     payload = self.read_payload(nocheck=False)
     print("pkt_rssi: ", self.get_pkt_rssi_value())
     print("pkt_snr: ", self.get_pkt_snr_value())
     print("Receive: ")
     print(payload)
     if (payload):
         print("counter:", payload[0])
         (t, h) = struct.unpack('<hh', bytearray(payload[1:5]))
         print(t / 10.0, "  C")
         print(h / 10.0, "%rh")
     global c
     c = 60
     time.sleep(2)
     self.reset_ptr_rx()
     self.set_mode(MODE.RXCONT)
    def on_rx_done(self):
        BOARD.led_on()
        print("\nRxDone")
        print(self.get_irq_flags())
        #print(map(hex, self.read_payload(nocheck=True)))
        _buff = self.read_payload(nocheck=True)
        print("received:")
        self.print_buffer(_buff)

        # send pOnG + 2 bytes 
        t = ord(self.get_rpi_temp())
        _reply = [112, 79, 110, 71, 0, t]
        #_buff = [0x70, 73]
        print("to be replied:")
        self.print_buffer(_reply)

        self.set_mode(MODE.SLEEP)
        self.set_dio_mapping([1,0,0,0,0,0])
        
        self.set_payload_length(6)
        ret = self.write_payload(_reply)
        print ("returned by SPI:")
        self.print_buffer(ret)
       
        self.set_mode(MODE.TX)
        print("reply sent")
Beispiel #4
0
    def on_rx_done(self):
        BOARD.led_on()
        print("\nRxDone")
        self.clear_irq_flags(RxDone=1)
        payload = self.read_payload(nocheck=True)
        print("bytesmessage:")
        print(bytes(payload).decode("utf-8", 'ignore'))
        print(payload)
        message = []
        for i in payload[4:13]:
            message.append(chr(i))
        print message
        temp = message[0] + message[1]
        hum = message[3] + message[4]
        intens = message[6] + message[7] + message[8]
        print temp
        print hum
        print intens

        # print(int.from_bytes(payload, byteorder='little'))
        # print(chr(int.from_bytes(b'\xf3\x25', byteorder='little')))
        # .decode("utf-8", 'ignore')
        self.set_mode(MODE.SLEEP)
        self.reset_ptr_rx()
        self.set_mode(MODE.RXCONT)
Beispiel #5
0
 def on_rx_done(self):
     BOARD.led_on()
     wrkdir = '/home/pi/Desktop/'
     # print("\nRxDone")
     self.clear_irq_flags(RxDone=1)
     payload = self.read_payload(nocheck=True)
     print("Receive: ")
     dataRaw = bytes(payload).decode("utf-8", 'ignore')
     dataRec = dataRaw[2:-1].split(",")
     print(dataRec)  # Receive DATA
    # print(argLen)
     if argLen is 2:
         filename = sensorName + ".csv"
         filename = join('/home/pi/Desktop/',filename)
         with open(filename, "a+") as csvfile:
             wr = csv.writer(csvfile, quoting = csv.QUOTE_ALL)
             wr.writerow(dataRec)
         csvfile.closed
     BOARD.led_off()
     time.sleep(2)  # Wait for the client be ready
     print("Send: ACK")
     self.write_payload([255, 255, 0, 0, 65, 67, 75, 0])  # Send ACK
     self.set_mode(MODE.TX)
     self.var = 1
     time.sleep(.5)  # a tad to complete
     print("Data Sent")
     sys.stdout.flush()
     lora.set_mode(MODE.SLEEP)
     BOARD.teardown()
     sys.exit()
Beispiel #6
0
    def on_rx_done(self):
        BOARD.led_on()
        #print("\nRxDone")
        self.clear_irq_flags(RxDone=1)
        payload = self.read_payload(nocheck=True)
        mens = payload[4:-1]  #to discard \xff\xff\x00\x00 and \x00 at the end
        mens = bytes(mens).decode("utf-8", 'ignore')
        cipher = AES.new(self.key)
        decodemens = base64.b64decode(mens)
        decoded = cipher.decrypt(decodemens)
        decoded = bytes(decoded).decode("utf-8", 'ignore')
        print("== RECEIVE: ", mens, "  |  Decoded: ", decoded)

        BOARD.led_off()
        time.sleep(2)  # Wait for the client be ready

        msg_text = 'ACK             '  # 16 char
        cipher = AES.new(self.key)
        encoded = base64.b64encode(cipher.encrypt(msg_text))
        lista = list(encoded)
        lista.insert(0, 0)
        lista.insert(0, 0)
        lista.insert(0, 255)
        lista.insert(0, 255)
        lista.append(0)
        self.write_payload(lista)
        #self.write_payload([255, 255, 0, 0, 65, 67, 75, 0]) # Send ACK
        self.set_mode(MODE.TX)
        print("== SEND: ", msg_text, "  |  Encoded: ",
              encoded.decode("utf-8", 'ignore'))
        print("\n")
        self.var = 1
Beispiel #7
0
 def start(self):
     global args
     self.set_freq(433)
     sys.stdout.write("\rstart")
     BOARD.led_on()
     while True:
         sleep(1)
    def start(self):
        global send_receive_flag
        global lora_send_msg

        send_receive_flag = "receive"
        while True:

            if send_receive_flag == "receive":
                self.set_mode(MODE.SLEEP)
                self.set_dio_mapping([0] * 6)

                self.reset_ptr_rx()
                self.set_mode(MODE.RXCONT)
                sleep(.5)
                rssi_value = self.get_rssi_value()
            else:
                print("send_receive_flag == send : {0}".format(lora_send_msg))
                self.set_mode(MODE.SLEEP)
                self.set_dio_mapping([1, 0, 0, 0, 0, 0])
                self.tx_counter = 0
                BOARD.led_on()
                self.write_payload([0x0f])
                #self.write_payload([0x0f, 0x65, 0x6c, 0x70])
                self.set_mode(MODE.TX)
            '''
Beispiel #9
0
    def on_rx_done(self):
        BOARD.led_on()
        #print("\nRxDone")
        self.clear_irq_flags(RxDone=1)
        payload = self.read_payload(nocheck=True)
        print("Receive: ")
        print(bytes(payload).decode("utf-8", 'ignore'))  # Receive DATA
        BOARD.led_off()

        #time.sleep(2) # Wait for the client be ready
        #print ("Send: ACK")
        data_str = "ACK"
        print("Send: ", data_str)
        data_bytes = list(bytes(data_str, encoding='utf-8'))

        LOCAL_ADDR = 255
        RECIEVER_ADDR = 0
        DUMP = 0
        message = [RECIEVER_ADDR, LOCAL_ADDR, DUMP]
        message.append(len(data_bytes))

        for i in range(len(data_bytes)):
            message.append(data_bytes[i])
        self.write_payload(message)
        print(message)

        # self.write_payload([0, 255, 0, 3, 0, 1, 0]) # Send ACK
        self.set_mode(MODE.TX)
        self.var = 1
Beispiel #10
0
 def start(self):
     global args
     sys.stdout.write("\rstart")
     self.tx_counter = 0
     BOARD.led_on()
     self.write_payload(payload)
     self.set_mode(MODE.TX)
     while True:
         sleep(1)
Beispiel #11
0
 def start(self, payload):
     global args
     print(self.get_freq())
     print("Starting Transmission")
     BOARD.led_on()
     self.write_payload(payload)
     self.set_mode(MODE.TX)
     while True:
         sleep(1)
Beispiel #12
0
 def on_rx_done(self):
     BOARD.led_on()
     print("\nRxDone")
     #print(self.get_irq_flags())
     print(map(hex, self.read_payload(nocheck=True)))
     self.set_mode(MODE.SLEEP)
     self.reset_ptr_rx()
     BOARD.led_off()
     self.set_mode(MODE.RXCONT)
 def start(self):
     global args
     sys.stdout.write("\rstart")
     self.tx_counter = 0
     BOARD.led_on()
     self.write_payload([0x0f])
     self.set_mode(MODE.TX)
     while True:
         sleep(1)
Beispiel #14
0
 def on_rx_done(self):
     BOARD.led_on()
     print("\nRxDone")
     self.clear_irq_flags(RxDone=1)
     payload = self.read_payload(nocheck=True)
     print(bytes(payload).decode())
     self.set_mode(MODE.SLEEP)
     self.reset_ptr_rx()
     BOARD.led_off()
     self.set_mode(MODE.RXCONT)
Beispiel #15
0
 def on_rx_done(self):
     BOARD.led_on()
     print("\nRxDone")
     self.clear_irq_flags(RxDone=1)
     payload = self.read_payload(nocheck=True)
     print(bytes(payload).decode("utf-8",'ignore'))
     self.set_mode(MODE.SLEEP)
     self.reset_ptr_rx()
     BOARD.led_off()
     self.set_mode(MODE.RXCONT)
Beispiel #16
0
def RX():
    BOARD.led_on()
    print("\nDados recebidos")
    lora.clear_irq_flags(RxDone=1)
    payload = lora.read_payload(nocheck=True)
    print(bytes(payload).decode("utf-8", 'ignore'))
    lora.set_mode(MODE.SLEEP)
    lora.reset_ptr_rx()
    BOARD.led_off()
    lora.set_mode(MODE.RXCONT)
Beispiel #17
0
    def send_image(self):

        if self.sending == 1:

            # Normal packet
            if self.iteration < self.number_packets:

                # Appending packet number, 1 byte
                Z = bytearray([self.iteration, 0])

                # Appending bytearray from picture, 253 bytes
                Z[1:] = self.image_buffer[self.iteration *
                                          self.step:self.iteration *
                                          self.step + self.step]
                print "I'm on %d" % self.iteration

                # Casting to List (needed)
                E = list(Z)

                # Increment Packet number
                self.iteration += 1

                # Init SPI transmission to radio
                self.write_payload(E)
                BOARD.led_on()
                self.set_mode(MODE.TX)

            # Last packet
            elif self.iteration == self.number_packets:

                print "Sending remaining bytes....."
                # Appending packet number, 1 byte
                Z = bytearray([self.iteration, 0])
                print "Packet: %d" % self.iteration

                # Appending bytearray from picture, X remaining bytes
                Z[1:] = self.image_buffer[self.iteration * self.step:]

                # Casting to List (needed)
                E = list(Z)

                # Init SPI transmission do radio
                self.write_payload(E)
                BOARD.led_on()
                self.set_mode(MODE.TX)

                # Reset global variables
                if self.first_time == 0:
                    self.re_init()
                    print "Waiting for new pic..."
                else:
                    self.semi_re_init()
                    print "Sending picture second time..."
                    self.first_time = 0
Beispiel #18
0
 def on_rx_done(self):
     BOARD.led_on()
     print("\nRxDone")
     self.clear_irq_flags(RxDone=1)
     payload = self.read_payload(nocheck=True)
     data = ''.join([chr(c) for c in payload])
     print data
     #print(bytes(payload).decode())
     self.set_mode(MODE.SLEEP)
     self.reset_ptr_rx()
     BOARD.led_off()
     self.set_mode(MODE.RXCONT)
Beispiel #19
0
 def on_tx_done(self):
     self.set_mode(MODE.STDBY)
     self.clear_irq_flags(TxDone=1)
     sys.stdout.flush()
     self.tx_counter += 1
     sys.stdout.write("\rtx #%d" % self.tx_counter)
     sleep(0.01)
     rawinput = "che khabar?\r\n"
     data = [int(hex(ord(c)), 0) for c in rawinput]
     self.write_payload(data)
     BOARD.led_on()
     self.set_mode(MODE.TX)
    def on_rx_done(self):
        BOARD.led_on()
        print("\nRxDone")
        print(self.get_irq_flags())
#	self.get_payload_length
	self.set_payload_length(8)
	self.get_rx_nb_bytes
        print(''.join(map(hex, self.read_payload(nocheck=True))).replace('0x', '').decode("hex"))
        self.set_mode(MODE.SLEEP)
        self.reset_ptr_rx()
        BOARD.led_off()
        self.set_mode(MODE.RXCONT)
Beispiel #21
0
 def on_rx_done(self):
     BOARD.led_on()
     #print("\nRxDone")
     self.clear_irq_flags(RxDone=1)
     payload = self.read_payload(nocheck=True)
     print ("Receive: ")
     print(bytes(payload).decode("utf-8",'ignore')) # Receive DATA
     BOARD.led_off()
     time.sleep(2) # Wait for the client be ready
     print ("Send: ACK")
     self.write_payload([255, 255, 0, 0, 65, 67, 75, 0]) # Send ACK
     self.set_mode(MODE.TX)
     self.var=1
Beispiel #22
0
 def start(self):
     global args
     sys.stdout.write("\rstart")
     self.tx_counter = 0
     BOARD.led_on()
     self.set_payload_length(8)
     self.set_max_payload_length(100)
     my_message = raw_input('Enter a message: ')
     self.write_payload(toHex(my_message))
     self.get_payload_length
     self.set_mode(MODE.TX)
     while True:
         sleep(1)
Beispiel #23
0
 def start(self):
     global args
     sys.stdout.write("\rstart")
     self.tx_counter = 0
     BOARD.led_on()
     self.set_payload_length(8)
     self.set_max_payload_length(100)
     my_message = raw_input('Enter a message: ')
     self.write_payload(toHex(my_message))
     self.get_payload_length
     self.set_mode(MODE.TX)
     while True:
         sleep(1)
Beispiel #24
0
 def start(self):
     global args
     sys.stdout.write("\rStart")
     self.tx_counter = 1
     BOARD.led_on()
     sys.stdout.write("\rtx #%d" % self.tx_counter)
     message = "Hello > %d" % self.tx_counter
     sys.stdout.write(", %s" % message)
     payload = array('b', message)
     self.write_payload(list(payload))
     self.set_mode(MODE.TX)
     while True:
         sleep(1)
Beispiel #25
0
 def on_rx_done(self):
     BOARD.led_on()
     print("\nRxDone")
     print(self.get_irq_flags())
     #	self.get_payload_length
     self.set_payload_length(8)
     self.get_rx_nb_bytes
     print(''.join(map(hex, self.read_payload(nocheck=True))).replace(
         '0x', '').decode("hex"))
     self.set_mode(MODE.SLEEP)
     self.reset_ptr_rx()
     BOARD.led_off()
     self.set_mode(MODE.RXCONT)
Beispiel #26
0
 def on_rx_done(self):
     global send_receive_flag
     global lora_receive_msg
     BOARD.led_on()
     print("\nRxDone")
     self.clear_irq_flags(RxDone=1)
     payload = self.read_payload(nocheck=True)
     lora_receive_msg = ''.join([chr(c) for c in payload])
     print("Receive lora_receive_msg: {0}".format(lora_receive_msg))
     #print(bytes(payload).decode())
     self.set_mode(MODE.SLEEP)
     self.reset_ptr_rx()
     BOARD.led_off()
     self.set_mode(MODE.RXCONT)
Beispiel #27
0
 def on_tx_done(self):
     global args
     self.set_mode(MODE.STDBY)
     self.clear_irq_flags(TxDone=1)
     sys.stdout.flush()
     self.tx_counter += 1
     sys.stdout.write("\rtx #%d" % self.tx_counter)
     BOARD.led_off()
     sleep(1)
     #self.write_payload([0x0e])
     self.write_payload([0x0e, 0x00, 0x00, 0x00, 0x00, 0x00])
     BOARD.led_on()
     self.set_mode(MODE.TX)
     sys.stdout.write("on_tx_done end")
Beispiel #28
0
    def send_image(self):

        if self.sending == 1:

            # Normal packet
            if self.i < self.n:

                # Appending packet number, 1 byte
                Z = bytearray([self.i, 0])

                # Appending bytearray from picture, 253 bytes
                Z[1:] = self.b[self.i * self.step:self.i * self.step +
                               self.step]
                print "I'm on %d" % self.i

                # Casting to List (needed)
                E = list(Z)

                # Increment Packet number
                self.i += 1

                # Init SPI transmission to radio
                self.write_payload(E)
                BOARD.led_on()
                self.set_mode(MODE.TX)

            # Last packet
            elif self.i == self.n:

                print "Sending remaining bytes....."
                # Appending packet number, 1 byte
                Z = bytearray([self.i, 0])
                print "Packet: %d" % self.i

                # Appending bytearray from picture, X remaining bytes
                Z[1:] = self.b[self.i * self.step:]

                # Casting to List (needed)
                E = list(Z)

                # Init SPI transmission do radio
                self.write_payload(E)
                BOARD.led_on()
                self.set_mode(MODE.TX)

                # Reset global variables
                self.re_init()

                print "Waiting for new pic..."
 def on_tx_done(self):
     global args
     self.set_mode(MODE.STDBY)
     self.clear_irq_flags()
     sys.stdout.flush()
     self.tx_counter += 1
     sys.stdout.write("\rtx #%d" % self.tx_counter)
     if args.single:
         print
         sys.exit(0)
     BOARD.led_off()
     sleep(args.wait)
     self.write_payload([0x0f])
     BOARD.led_on()
     self.set_mode(MODE.TX)
Beispiel #30
0
 def on_tx_done(self):
     global args
     self.set_mode(MODE.STDBY)
     self.clear_irq_flags(TxDone=1)
     sys.stdout.flush()
     self.tx_counter += 1
     sys.stdout.write("\rtx #%d" % self.tx_counter)
     if args.single:
         print
         sys.exit(0)
     BOARD.led_off()
     sleep(args.wait)
     self.write_payload([0x57,0x68,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x66,0x75,0x63,0x6B,0x21])
     BOARD.led_on()
     self.set_mode(MODE.TX)
Beispiel #31
0
 def on_tx_done(self):
     global args
     self.set_mode(MODE.STDBY)
     self.clear_irq_flags()
     sys.stdout.flush()
     self.tx_counter += 1
     sys.stdout.write("\rtx #%d" % self.tx_counter)
     if args.single:
         print
         sys.exit(0)
     BOARD.led_off()
     sleep(args.wait)
     self.write_payload(payload)
     BOARD.led_on()
     self.set_mode(MODE.TX)
Beispiel #32
0
 def on_rx_done(self):
     BOARD.led_on()
     print("\nRxDone")
     self.clear_irq_flags(RxDone=1)
     rssi_value = self.get_rssi_value()
     status = self.get_modem_status()
     print("\n [in on_rx_done] %d %d %d" %
           (rssi_value, status['rx_ongoing'], status['modem_clear']))
     payload = self.read_payload(nocheck=True)
     data = ''.join([chr(c) for c in payload])
     print 'data = ' + data
     #print(bytes(payload).decode())
     self.set_mode(MODE.SLEEP)
     self.reset_ptr_rx()
     BOARD.led_off()
     self.set_mode(MODE.RXCONT)
Beispiel #33
0
    def on_rx_done(self):
        BOARD.led_on()

        self.clear_irq_flags(RxDone=1)
        reader.read_package(self.read_payload(nocheck=True), True)

        self.set_mode(MODE.SLEEP)

        self.reset_ptr_rx()
        BOARD.led_off()
        self.set_mode(MODE.RXCONT)

        if (reader.is_accepted):
            self.db.connect()
            self.db.publish_sensor_data(reader.data_pack, True)
            self.db.disconnect()
Beispiel #34
0
 def on_tx_done(self):
     global send_receive_flag
     global lora_send_msg
     if send_receive_flag == "send":
         send_msg = lora_send_msg
         send_receive_flag = "receive"
         self.set_mode(MODE.STDBY)
         self.clear_irq_flags(TxDone=1)
         sys.stdout.flush()
         self.tx_counter += 1
         BOARD.led_off()
         data = [int(hex(ord(c)), 0) for c in send_msg]
         #self.write_payload([0x0f])
         self.write_payload(data)
         BOARD.led_on()
         self.set_mode(MODE.TX)
Beispiel #35
0
    def on_rx_done(self):
        BOARD.led_on()

        # Listen for requests from server
        self.clear_irq_flags(RxDone=1)
        payload = self.read_payload(nocheck=True)  # Receive INF

        # Converts payload to readable string
        mens = bytes(payload).decode("utf-8", 'ignore')

        # Print RX data
        print("RX: " + mens)

        BOARD.led_off()

        # Reply the TH data if "ENVI" is received
        if mens == "ENVI":
            time.sleep(2)

            # Get TH data from BME280
            t = bme280.temperature
            h = bme280.humidity
            t = round(t, 2)
            h = round(h, 2)
            t = str(t)
            h = str(h)

            # Create TX message with ";" as delimiter
            TX_message = str(node) + ";" + t + ";" + h + ";"
            print("TX: " + TX_message)

            # Convert TX message to bytes
            b = list()
            b.extend(TX_message.encode())

            # Send TX message to server
            self.write_payload(b)
            self.set_mode(MODE.TX)

        if mens == "ACK":
            print("The server received the last message you sent.")

        # Set back client to receiver mode
        time.sleep(2)
        self.reset_ptr_rx()
        self.set_mode(MODE.RXCONT)
Beispiel #36
0
 def on_tx_done(self):
     global args
     self.set_mode(MODE.STDBY)
     self.clear_irq_flags(TxDone=1)
     sys.stdout.flush()
     self.tx_counter += 1
     sys.stdout.write("\rtx #%d" % self.tx_counter)
     if args.single:
         print
         sys.exit(0)
     BOARD.led_off()
     sleep(args.wait)
     rawinput = input(">>> ")
     data = [int(hex(ord(c)), 0) for c in rawinput]
     #self.write_payload([0x0f])
     self.write_payload(data)
     BOARD.led_on()
     self.set_mode(MODE.TX)