anetczuk / LinakDeskApp

Desktop application that allows control of Linak office desk under Linux
MIT License
143 stars 13 forks source link

ValueError in case of initialize start of application #4

Closed monofox closed 3 years ago

monofox commented 3 years ago

Considering, #3 is fixed, if the application was never started yet, following error appears (in CLI/log):

2020-11-28 21:53:13,278 DEBUG    MainThread linakdeskapp.main:main [main.py:108] Starting the application
2020-11-28 21:53:13,280 DEBUG    MainThread linakdeskapp.main:main [main.py:109] Logger log file: /home/mono/.projects/LinakDeskApp/src/log.txt
2020-11-28 21:53:13,774 DEBUG    MainThread linakdeskapp.gui.suspenddetector.QSuspendTimer:start [suspenddetector.py:49] starting suspension detector
2020-11-28 21:53:13,781 DEBUG    MainThread linakdeskapp.gui.main_window.MainWindow:setIconTheme [main_window.py:102] setting tray theme: <TrayIconTheme.WHITE: ('office-chair-gray.png', 'office-chair-white.png', 'office-chair-red.png')>
2020-11-28 21:53:13,785 DEBUG    MainThread linakdeskapp.gui.main_window.MainWindow:_updateTrayIcon [main_window.py:125] setting tray icon office-chair-gray.png <PyQt5.QtGui.QIcon object at 0x7f3b783779d0>
2020-11-28 21:53:13,788 DEBUG    MainThread linakdeskapp.gui.main_window.MainWindow:loadSettings [main_window.py:145] loading app state from /home/mono/.config/arnet/LinakDeskApp.ini
2020-11-28 21:53:13,788 DEBUG    MainThread linakdeskapp.gui.app_settings_widget.AppSettingsWidget:_toggleAutoReconnectTime [app_settings_widget.py:182] setting auto reconnect timer to 60
2020-11-28 21:53:13,788 WARNING  MainThread linakdeskapp.gui.app_settings_widget.AppSettingsWidget:_setCurrentTrayTheme [app_settings_widget.py:319] could not find index for theme: ''
2020-11-28 21:53:13,790 DEBUG    MainThread linakdeskapp.gui.main_window.MainWindow:_updateTrayIcon [main_window.py:125] setting tray icon office-chair-gray.png <PyQt5.QtGui.QIcon object at 0x7f3b783779d0>
2020-11-28 21:53:13,794 DEBUG    MainThread linakdeskapp.gui.main_window.MainWindow:_tryReconnectOnStartup [main_window.py:98] trying reconnect on startup
2020-11-28 21:53:13,795 DEBUG    MainThread linakdeskapp.bt_device_connector.BTDeviceConnector:_changeConnectionStatus [bt_device_connector.py:150] changing connection state to ConnectionState.CONN_IN_PROGRESS
2020-11-28 21:53:13,795 DEBUG    MainThread linakdeskapp.gui.main_window.MainWindow:_updateTrayIcon [main_window.py:125] setting tray icon office-chair-gray.png <PyQt5.QtGui.QIcon object at 0x7f3b783779d0>
2020-11-28 21:53:13,798 DEBUG    MainThread linakdeskapp.gui.main_window.MainWindow:_updateTrayIcon [main_window.py:125] setting tray icon office-chair-gray.png <PyQt5.QtGui.QIcon object at 0x7f3b783779d0>
2020-11-28 21:53:13,816 DEBUG    Connect-1 linakdeskapp.bt_device_connector.ThreadWorker:run [bt_device_connector.py:288] Worker start
2020-11-28 21:53:13,822 DEBUG    Connect-1 linak_dpg_bt.connection.BTLEConnection:__init__ [connection.py:62] Constructed BTLEConnection object: <linak_dpg_bt.connection.BTLEConnection object at 0x7f3b78380d90>
2020-11-28 21:53:13,823 DEBUG    Connect-1 linak_dpg_bt.linak_device.LinakDesk:__init__ [linak_device.py:109] Constructed LinakDesk object: <linak_dpg_bt.linak_device.LinakDesk object at 0x7f3b78380af0>
2020-11-28 21:53:13,823 DEBUG    Connect-1 linak_dpg_bt.linak_device.LinakDesk:_connect [linak_device.py:347] Initializing the device
2020-11-28 21:53:13,823 DEBUG    Connect-1 linak_dpg_bt.connection.BTLEConnection:connect [connection.py:95] Trying to connect to
2020-11-28 21:53:13,823 ERROR    Connect-1 linak_dpg_bt.linak_device.LinakDesk:initialize [linak_device.py:343] Initialization failed: <class 'ValueError'> Expected MAC address, got ''
Traceback (most recent call last):
  File "/home/mono/.projects/LinakDeskApp/lib/linak_bt_desk/linak_dpg_bt/linak_device.py", line 340, in initialize
    self._connect()
  File "/home/mono/.projects/LinakDeskApp/lib/linak_bt_desk/linak_dpg_bt/linak_device.py", line 348, in _connect
    with self._conn as conn:
  File "/home/mono/.projects/LinakDeskApp/lib/linak_bt_desk/linak_dpg_bt/synchronized.py", line 80, in decorator
    return func(self, *args, **kws)
  File "/home/mono/.projects/LinakDeskApp/lib/linak_bt_desk/linak_dpg_bt/connection.py", line 75, in __enter__
    self.connect()
  File "/home/mono/.projects/LinakDeskApp/lib/linak_bt_desk/linak_dpg_bt/synchronized.py", line 80, in decorator
    return func(self, *args, **kws)
  File "/home/mono/.projects/LinakDeskApp/lib/linak_bt_desk/linak_dpg_bt/connection.py", line 37, in wrapper
    return func(*args)
  File "/home/mono/.projects/LinakDeskApp/lib/linak_bt_desk/linak_dpg_bt/connection.py", line 101, in connect
    self._conn.connect(self._mac, addrType='random')
  File "/home/mono/.local/lib/python3.8/site-packages/bluepy/btle.py", line 445, in connect
    self._connect(addr, addrType, iface)
  File "/home/mono/.local/lib/python3.8/site-packages/bluepy/btle.py", line 423, in _connect
    raise ValueError("Expected MAC address, got %s" % repr(addr))
ValueError: Expected MAC address, got ''
2020-11-28 21:53:13,825 DEBUG    Connect-1 linakdeskapp.bt_device_connector.BTDeviceConnector:_initializeDevice [bt_device_connector.py:119] Could not connect to to device: <linak_dpg_bt.linak_device.LinakDesk object at 0x7f3b78380af0>
2020-11-28 21:53:13,826 DEBUG    Connect-1 linakdeskapp.bt_device_connector.BTDeviceConnector:_changeConnectionStatus [bt_device_connector.py:150] changing connection state to ConnectionState.DISCONNECTED
2020-11-28 21:53:13,826 DEBUG    Connect-1 linakdeskapp.bt_device_connector.ThreadWorker:run [bt_device_connector.py:290] Worker complete
2020-11-28 21:53:13,830 DEBUG    MainThread linakdeskapp.gui.main_window.MainWindow:_updateTrayIcon [main_window.py:125] setting tray icon office-chair-gray.png <PyQt5.QtGui.QIcon object at 0x7f3b783779d0>
2020-11-28 21:53:13,850 DEBUG    MainThread linakdeskapp.gui.main_window.MainWindow:_updateTrayIcon [main_window.py:125] setting tray icon office-chair-gray.png <PyQt5.QtGui.QIcon object at 0x7f3b783779d0>

Obviously its trying to connect to an empty MAC address which will not work.

stefank17 commented 3 years ago

same issue here, no luck with hardcoding the self._mac as a string of the actual mac, I get: connection to "mac" failed

anetczuk commented 3 years ago

It is no an issue (during startup of the app) as long as GUI is displayed. From menu Connection->Connect To... You can scan for nearby devices and select desired one.

monofox commented 3 years ago

@anetczuk I agree that user is currently able to fix it through gui and disagree at the same time. Exceptions shall be handled. Otherwise the application may get out of control (non deterministic behaviour).

monofox commented 3 years ago

Edit: ok, i see, that you intend to catch all issues through decorator and proper handle it.