Skip to content

AttributeError: 'H180Motor' object has no attribute 'serial' #21

@AlexKurek

Description

@AlexKurek

We have H180 and whether it is connected or not we are getting:

Traceback (most recent call last):
  File "/home/kurek/miniconda3/envs/srtpy/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/home/kurek/miniconda3/envs/srtpy/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/kurek/./miniconda3/envs/srtpy/bin/srt_runner.py", line 19, in run_srt_daemon
    daemon = srt_d.SmallRadioTelescopeDaemon(configuration_dir, configuration_dict)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kurek/miniconda3/envs/srtpy/lib/python3.11/site-packages/srt/daemon/daemon.py", line 115, in __init__
    self.rotor = Rotor(
                 ^^^^^^
  File "/home/kurek/miniconda3/envs/srtpy/lib/python3.11/site-packages/srt/daemon/rotor_control/rotors.py", line 58, in __init__
    self.motor = H180Motor(port, baudrate, az_limits, el_limits)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kurek/miniconda3/envs/srtpy/lib/python3.11/site-packages/srt/daemon/rotor_control/motors.py", line 352, in __init__
    Motor.__init__(self, port, az_limits, el_limits)
TypeError: Motor.__init__() missing 1 required positional argument: 'el_limits'
Exception ignored in: <function Motor.__del__ at 0x7f68a291dee0>
Traceback (most recent call last):
  File "/home/kurek/miniconda3/envs/srtpy/lib/python3.11/site-packages/srt/daemon/rotor_control/motors.py", line 88, in __del__
    if self.serial is not None and self.serial.is_open:
       ^^^^^^^^^^^
AttributeError: 'H180Motor' object has no attribute 'serial'

I modified https://github.com/MITHaystack/srt-py/blob/master/srt/daemon/rotor_control/motors.py#L352 to:
Motor.__init__(self, port, az_limits=(-0.7,359), el_limits=(8.4,80), baudrate=2400),
and the error is gone. Also (89df766):
Motor.__init__(self, port, az_limits=az_limits, el_limits=el_limits, baudrate=baudrate),
is working. I got :

Traceback (most recent call last):
  File "/home/alex/miniconda3/envs/srtpy/lib/python3.11/site-packages/serial/serialposix.py", line 322, in open
    self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/dev/ttyUSB0'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/alex/miniconda3/envs/srtpy/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/home/alex/miniconda3/envs/srtpy/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/alex/miniconda3/envs/srtpy/bin/srt_runner.py", line 19, in run_srt_daemon
    daemon = srt_d.SmallRadioTelescopeDaemon(configuration_dir, configuration_dict)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/alex/miniconda3/envs/srtpy/lib/python3.11/site-packages/srt/daemon/daemon.py", line 115, in __init__
    self.rotor = Rotor(
                 ^^^^^^
  File "/home/alex/miniconda3/envs/srtpy/lib/python3.11/site-packages/srt/daemon/rotor_control/rotors.py", line 58, in __init__
    self.motor = H180Motor(port, baudrate, az_limits, el_limits)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/alex/miniconda3/envs/srtpy/lib/python3.11/site-packages/srt/daemon/rotor_control/motors.py", line 353, in __init__
    self.serial = serial.Serial(
                  ^^^^^^^^^^^^^^
  File "/home/alex/miniconda3/envs/srtpy/lib/python3.11/site-packages/serial/serialutil.py", line 244, in __init__
    self.open()
  File "/home/alex/miniconda3/envs/srtpy/lib/python3.11/site-packages/serial/serialposix.py", line 325, in open
    raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg))
serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyUSB0: [Errno 13] Permission denied: '/dev/ttyUSB0'

Doing (esp8266/source-code-examples#26 (comment)):
sudo usermod -a -G tty,dialout $USER
fixed it and now its working.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions