hologram-io / hologram-python

Hologram device-side Python SDK - Send messages to the cloud in just 3 lines of code!
https://hologram.io/
MIT License
88 stars 46 forks source link

Intermittent TypeError when receiving #106

Open HologramInterview opened 1 year ago

HologramInterview commented 1 year ago

Describe the problem

The following error occurs from time to time when receiving a message from the Hologram dashboard. It seems to occur after successfully receiving a message or two.

pi@raspberrypi:~$ sudo hologram receive
Ready to receive data on port 4010
Received message: Thu Sep 15 2:26:02pm
Received message: Thu Sep 15 3;21:17pm
ERROR: AttributeError("'list' object has no attribute 'startswith'")
Traceback (most recent call last):
  File "/usr/local/bin/hologram", line 181, in <module>
    if __name__ == '__main__': main()
  File "/usr/local/bin/hologram", line 177, in main
    _command_handlers[command_selected_prefix](args)
  File "/usr/local/lib/python3.7/dist-packages/scripts/hologram_receive.py", line 63, in run_hologram_receive
    run_hologram_receive_data(args)
  File "/usr/local/lib/python3.7/dist-packages/scripts/hologram_receive.py", line 85, in run_hologram_receive_data
    handle_polling(args['timeout'], popReceivedMessage, 1)
  File "/usr/local/lib/python3.7/dist-packages/scripts/hologram_util.py", line 37, in handle_polling
    fx()
  File "/usr/local/lib/python3.7/dist-packages/scripts/hologram_receive.py", line 25, in popReceivedMessage
    recv = hologram.popReceivedMessage()
  File "/usr/local/lib/python3.7/dist-packages/Hologram/CustomCloud.py", line 357, in popReceivedMessage
    return self.network.pop_received_message()
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Cellular.py", line 141, in pop_received_message
    return self.modem.pop_received_message()
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 269, in pop_received_message
    self.checkURC()
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 391, in checkURC
    self.handleURC(urc)
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Nova_U201.py", line 104, in handleURC
    super().handleURC(urc)
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 415, in handleURC
    self._read_and_append_message_receive_buffer(socket_identifier, payload_length)
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 281, in _read_and_append_message_receive_buffer
    msg = self.read_socket(socket_identifier=socket_identifier, payload_length=payload_length)
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 337, in read_socket
    self.enable_hex_mode()
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 825, in enable_hex_mode
    self.__set_hex_mode(1)
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 831, in __set_hex_mode
    self.command('+UDCONF', '1,%d' % enable_hex_mode)
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 776, in command
    retries, seteq, read, prompt, data, hide)
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 526, in __command_helper
    self.result = self.process_response(cmd, timeout, hide=hide)
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 475, in process_response
    self.handleURC(response)
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Nova_U201.py", line 104, in handleURC
    super().handleURC(urc)
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 415, in handleURC
    self._read_and_append_message_receive_buffer(socket_identifier, payload_length)
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 281, in _read_and_append_message_receive_buffer
    msg = self.read_socket(socket_identifier=socket_identifier, payload_length=payload_length)
  File "/usr/local/lib/python3.7/dist-packages/Hologram/Network/Modem/Modem.py", line 342, in read_socket
    bytedata = binascii.unhexlify(resp)
TypeError: argument should be bytes, buffer or ASCII string, not 'NoneType'

Expected behavior

Multiple messages should be able to be received without error

Actual behavior

See above

Steps to reproduce the behavior

See above

System information

Pi 400

pi@raspberrypi:~$ uname -a
Linux raspberrypi 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/Linux
pi@raspberrypi:~$ python3 --version
Python 3.7.3
pi@raspberrypi:~$ hologram version
0.9.1