added class variables for radio parameters (frequency, spreading factor, ...) and nice output for recv() function

This commit is contained in:
Simon Pirkelmann 2019-11-21 16:38:49 +01:00
parent 23a63cac12
commit 88c6d94a78

View File

@ -20,30 +20,35 @@ class LoRaTransceiver:
""" set spreading factor """ set spreading factor
possible values are 7-12 possible values are 7-12
""" """
self.spreadingfactor = spreadingfactor
self.lora.setSpreadingFactor(spreadingfactor) self.lora.setSpreadingFactor(spreadingfactor)
def setFrequency(self, frequency): def setFrequency(self, frequency):
""" set frequency (= channel used) """ set frequency (= channel used)
for now only 868 Mhz and 868.1 MHz are supported for now only 868 Mhz and 868.1 MHz are supported
""" """
self.frequency = frequency
self.lora.setFrequency(frequency) self.lora.setFrequency(frequency)
def setSignalBandwidth(self, bandwidth): def setSignalBandwidth(self, bandwidth):
""" set the bandwidth """ set the bandwidth
possible values should be 125 kHz or 250 kHz according to EU 868 frequency plan possible values should be 125 kHz or 250 kHz according to EU 868 frequency plan
""" """
self.bandwidth = bandwidth
self.lora.setSignalBandwidth(bandwidth) self.lora.setSignalBandwidth(bandwidth)
def setSyncWord(self, syncword): def setSyncWord(self, syncword):
""" set the sync word """ set the sync word
should be 0x12 for plain LoRa and 0x34 for LoRaWAN should be 0x12 for plain LoRa and 0x34 for LoRaWAN
""" """
self.syncword = syncword
self.lora.setSyncWord(syncword) self.lora.setSyncWord(syncword)
def send(self, data): def send(self, data):
""" send raw data """ send raw data
""" """
print("Sending {}".format(data)) data_hex = " ".join(list(map(lambda x: "{0:02x}".format(x), data))).upper()
print("Sending data {}".format(data_hex))
self.lora.println_raw(data) self.lora.println_raw(data)
if self.display is not None: if self.display is not None:
@ -53,7 +58,7 @@ class LoRaTransceiver:
""" send a message """ send a message
message should be a string message should be a string
""" """
print("Sending {}".format(message)) print("Sending string {}".format(message))
self.lora.println(message) self.lora.println(message)
if self.display is not None: if self.display is not None:
@ -61,18 +66,26 @@ class LoRaTransceiver:
def recv(self): def recv(self):
""" start listening for messages and output them on the console """ """ start listening for messages and output them on the console """
print("Receiving at frequency {} with spreading factor {} ...".format(self.frequency, self.spreadingfactor))
if self.display is not None: if self.display is not None:
self.display.show_text_wrap("Receiving ...") self.display.show_text_wrap("Receiving at frequency {} with spreading factor {} ...".format(self.frequency, self.spreadingfactor))
while True: while True:
# check for new message # check for new message
if self.lora.receivedPacket(): if self.lora.receivedPacket():
self.lora.blink_led() self.lora.blink_led()
print(" got packet: ")
try: try:
payload = self.lora.read_payload() payload_bytes = bytes(self.lora.read_payload_raw())
payload_hex = " ".join(list(map(lambda x: "{0:02x}".format(x), payload_bytes))).upper()
payload_string = self.lora.read_payload_raw()
print(" length : {0}".format(len(payload_bytes)))
print(" hex : {0}".format(payload_hex))
print(" bytes : {0}".format(payload_bytes))
print(" RSSI : {0}\n".format(self.lora.packetRssi()))
if self.display is not None: if self.display is not None:
self.display.show_text_wrap("Received: {0} RSSI: {1}".format(payload.decode(), lora.packetRssi())) self.display.show_text_wrap("Received: {0} RSSI: {1}".format(payload_bytes, self.lora.packetRssi()))
except Exception as e: except Exception as e:
print(e) print(e)