Skip to content

Commit

Permalink
Add COM port API & List COM ports for adalight
Browse files Browse the repository at this point in the history
  • Loading branch information
shauneccles committed Mar 18, 2021
1 parent 36954be commit 16dd429
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 3 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.rst
Expand Up @@ -2,6 +2,13 @@
Changelog
=========

Version 0.10.4
==============

- Fix Device Add bug on FireFox - Thanks again @MPM1107
- List COM Ports instead of free text entry for Adalight devices.
- This list is populated on launch.

Version 0.10.3
==============

Expand Down
24 changes: 24 additions & 0 deletions ledfx/api/com_ports.py
@@ -0,0 +1,24 @@
import logging

import serial.tools.list_ports
from aiohttp import web

from ledfx.api import RestEndpoint

_LOGGER = logging.getLogger(__name__)


class InfoEndpoint(RestEndpoint):

ENDPOINT_PATH = "/api/comports"

async def get(self) -> web.Response:

ports = serial.tools.list_ports.comports()

available_ports = []

for p in ports:
available_ports.append(p.device)

return web.json_response(data=available_ports, status=200)
14 changes: 12 additions & 2 deletions ledfx/devices/adalight.py
Expand Up @@ -3,6 +3,7 @@

import numpy as np
import serial
import serial.tools.list_ports
import voluptuous as vol

from ledfx.devices import Device
Expand All @@ -29,15 +30,24 @@ class ColorOrder(Enum):
}


class AvailableCOMPorts:
ports = serial.tools.list_ports.comports()

available_ports = []

for p in ports:
available_ports.append(p.device)


class AdalightDevice(Device):
"""Adalight device support"""

CONFIG_SCHEMA = vol.Schema(
{
vol.Required(
"com_port",
description="COM port",
): str,
description="COM port for Adalight compatible device",
): vol.In(list(AvailableCOMPorts.available_ports)),
vol.Required(
"baudrate", description="baudrate", default=500000
): vol.All(vol.Coerce(int), vol.Range(min=115200)),
Expand Down
2 changes: 1 addition & 1 deletion win.spec
Expand Up @@ -13,7 +13,7 @@ a = Analysis([f'{spec_root}\\ledfx\\__main__.py'],
hiddenimports=['sacn', 'pyaudio', 'aubio', 'numpy', 'math', 'voluptuous', 'numpy', 'aiohttp', 'aiohttp_jinja2',
'sentry_sdk', 'sentry_sdk.integrations.django','sentry_sdk.integrations.flask','sentry_sdk.integrations.bottle','sentry_sdk.integrations.falcon','sentry_sdk.integrations.sanic',
'sentry_sdk.integrations.celery','sentry_sdk.integrations.aiohttp','sentry_sdk.integrations.rq','sentry_sdk.integrations.tornado','sentry_sdk.integrations.sqlalchemy',
'sentry_sdk.integrations.boto3','_cffi_backend','serial'],
'sentry_sdk.integrations.boto3','_cffi_backend','serial','serial.tools.list_ports'],
hookspath=[f'{venv_root}\\lib\\site-packages\\pyupdater\\hooks'],
runtime_hooks=[],
excludes=[],
Expand Down

0 comments on commit 16dd429

Please sign in to comment.