diff --git a/ESP32/main.py b/ESP32/main.py index 1433e87..e6a418e 100644 --- a/ESP32/main.py +++ b/ESP32/main.py @@ -1,5 +1,6 @@ from microdot import Microdot, send_file import machine, sys, neopixel, time +import asyncio app = Microdot() @@ -8,46 +9,65 @@ nbPixels = 12*2 pinPixelStrip = 16 # ESP32 D1 Mini neoPixelStrip = neopixel.NeoPixel(machine.Pin(pinPixelStrip), nbPixels) -# Define status colors -statusColors = { - 'BUSY': (255,0,0), # red - 'AVAILABLE': (0,255,0), # green - 'AWAY': (246,190,0), # cyan - 'OFF': (0, 0, 0), # off - 'ON': (255, 255, 255) # white - } +# Define BusyLight status +statusDef = { + 'off': {'name': 'off', 'code': 0, 'color': (0, 0, 0)}, # OFF + 'on': {'name': 'on', 'code': 1, 'color': (255, 255, 255)}, # White + 'busy': {'name': 'busy', 'code': 2, 'color': (255, 0, 0)}, # Red + 'available': {'name': 'available', 'code': 3, 'color': (0, 255, 0)}, # Green + 'away': {'name': 'away', 'code': 4, 'color': (246, 190, 0)}, # Yellow + 'blinking': {'name': 'blinking', 'code': 5}, # No defined color + 'colored': {'name': 'colored', 'code': 6} # No defined color +} # Store BusyLight default global status -blColor = statusColors.get('OFF') -blStatus = 'off' -blPreviousStatus='off' +blColor = statusDef.get('off').get('color') +blPreviousColor = statusDef.get('off').get('color') +blStatus = statusDef.get('off') +blPreviousStatus = statusDef.get('off') blBrightness = 0.1 # Adjust the brightness (0.0 - 1.0) +blBlinkingTask = None -def __setColor(color): +def __setDimmedColor(color): r, g , b = color r = int(r * blBrightness) g = int(g * blBrightness) b = int(b * blBrightness) return (r, g, b) -def __setBusyLightColor(color, brightness): +def __setBusyLightColorAndBrigthness(color, brightness): global blBrightness blBrightness = brightness + global blColor blColor = color - neoPixelStrip.fill(__setColor(color)) + dimmedColor = __setDimmedColor(color) + + neoPixelStrip.fill(dimmedColor) neoPixelStrip.write() +def __setBusyLightColored(color, brightness): + __setBusyLightColorAndBrigthness(color, brightness) global blStatus - blStatus = 'colored' + blStatus = statusDef.get('colored') -def __setBusyLightStatus(status): - status = status.upper() - color = statusColors.get(status) - __setBusyLightColor(color, blBrightness) +def __setBusyLightStatus(status = statusDef.get('off')): + if status == statusDef.get('colored'): + lColor = blColor + else: + lColor = status.get('color') + __setBusyLightColorAndBrigthness(lColor, blBrightness) global blStatus - blStatus = status.lower() + blStatus = status + +def __setBusyLightBlinking(time_ms=500): + return 0 + +def __setBusyLightStill(): + return 0 + + # Microdot APP routes @@ -80,17 +100,9 @@ async def setBrightness(request): else: return {'error': 'wrong brigthness type (float)'}, 400 - # Save blStatus - global blStatus - status = blStatus - # Apply new brightness to current color - color = blColor - __setBusyLightColor(color, brightness) - - # Restore global status - blStatus = status - + __setBusyLightColorAndBrigthness(blColor, brightness) + global blBrightness blBrightness = brightness @@ -121,32 +133,71 @@ async def setColor(request): brightness = request.json.get("brightness") - if not brightness is None: + if not bool(brightness is None): if type(brightness) is float \ or type(brightness) is int: if brightness < 0 or brightness > 1: return {'error': 'brightness out of bound (0.0 - 1.0)'}, 400 else: return {'error': 'wrong brightness type (float)'}, 400 - __setBusyLightColor(color, brightness) + __setBusyLightColored(color, brightness) - __setBusyLightColor(color, blBrightness) + __setBusyLightColored(color, blBrightness) return {'status': blStatus} +@app.post('/api/blink') +async def setBlink(request): + time_ms = request.json.get("time_ms") + blinking = request.json.get("blinking") + + if not bool(time_ms is None): + if type(time_ms) is int: + if time_ms < 100 or time_ms > 5000: + return {'error': 'parameter "time_ms" out of bound (100 - 5000)'}, 400 + else: + return {'error': 'wrong parameter "time_ms" type (int)'}, 400 + + if bool(blinking is None): + return {'error': 'missing blinking parameter'}, 400 + else: + if type(blinking) is bool: + if blinking: + if time_ms is None: + __setBusyLightBlinking() + else: + __setBusyLightBlinking(time_ms) + else: + __setBusyLightStill() + else: + return {'error': 'wrong blinking type (bool)'}, 400 + + return {'status': 'to be implemented'} + + @app.route('/api/status/', methods=['GET', 'POST']) -async def setStatus(request, status): +async def setStatus(request, status): lStatus = status.lower() if lStatus == 'on': - __setBusyLightStatus('ON') + status = statusDef.get('on') + __setBusyLightStatus(status) + elif lStatus == 'off': - __setBusyLightStatus('OFF') + status = statusDef.get('off') + __setBusyLightStatus(status) + elif lStatus == 'available': - __setBusyLightStatus('AVAILABLE') + status = statusDef.get('available') + __setBusyLightStatus(status) + elif lStatus == 'away': - __setBusyLightStatus('AWAY') + status = statusDef.get('away') + __setBusyLightStatus(status) + elif lStatus == 'busy': - __setBusyLightStatus('BUSY') + status = statusDef.get('busy') + __setBusyLightStatus(status) + else: return {'error': 'unknown /api/status/' + lStatus + ' route'}, 404 @@ -183,11 +234,11 @@ async def mutedeckWebhook(request): isVideoOn = False if isMuted: - __setBusyLightStatus('away') + __setBusyLightStatus(statusDef.get('away')) else: - __setBusyLightStatus('busy') + __setBusyLightStatus(statusDef.get('busy')) else: - __setBusyLightStatus('available') + __setBusyLightStatus(statusDef.get('available')) return {'status': blStatus} @@ -199,18 +250,17 @@ async def shutdown(request): # Startup effect def startUpSeq(): - print('Start seq begins') - __setBusyLightStatus('OFF') + print('Start seq is started') + __setBusyLightStatus(statusDef.get('off')) time.sleep_ms(100) - __setBusyLightStatus('BUSY') + __setBusyLightStatus(statusDef.get('busy')) time.sleep_ms(200) - __setBusyLightStatus('AWAY') + __setBusyLightStatus(statusDef.get('away')) time.sleep_ms(300) - __setBusyLightStatus('AVAILABLE') + __setBusyLightStatus(statusDef.get('available')) time.sleep_ms(500) - __setBusyLightStatus('OFF') + __setBusyLightStatus(statusDef.get('off')) print('Start seq is ended') - __setBusyLightColor(statusColors.get('OFF'), 0.1) startUpSeq() diff --git a/ESP32/static/index.html b/ESP32/static/index.html index 3234a9d..9945a6b 100644 --- a/ESP32/static/index.html +++ b/ESP32/static/index.html @@ -4,194 +4,38 @@ BusyLight - +

Status

-

BusyLight Status

+
+
+
+
+
- +
+
@@ -204,6 +48,7 @@ alphaChannel: false }; + //var colorPicker = new JSColor("colorPicker", "{preset:'default', onChange: 'putColor(this)'}") var colorPickerOpts = {}; colorPickerOpts["preset"] = "rgb"; colorPickerOpts["format"] = "rgb"; @@ -257,6 +102,7 @@ statusRadio.checked = true; } + async function putStatus(status) { var s = await setStatus(status); setColorPickerColor(status); @@ -285,5 +131,6 @@ var b = await setBrightness(brightness); } + - + \ No newline at end of file diff --git a/README.md b/README.md index 15ee8e6..2449780 100644 --- a/README.md +++ b/README.md @@ -16,33 +16,28 @@ **Let people know if they can bother you with light signals!** -A cheap, simple to build, nice looking and portable DIY **Busy Light**. +A simple to build, nice looking, portable DIY **Busy Light**. -It comes with a with a simplistic but neat **Web UI** and a simple (but hopefully convenient) **Rest API**. +It comes with a with a rudimentary (and ugly) **Web UI** and a simple (but hopefully convenient) **Rest API**. | Controlled by Stream Deck with REST API | Light roll | |-------------------------------------------------|---------------------------------------| | ![busylight and stream deck](img/busylight.jpg) | ![busylight roll](img/busylight.gif) | -![showoff video](img/busylight-showoff.mp4) - # Web UI -A very simplistic but neat UI is available on port `80` (thanks @nicolaeser). \ +A very simplistic (and ugly) UI is available on port `80`. \ Default hostname is `igox-busylight`. -You can try to reach the web UI @ [http://igox-busylight.local](http://igox-busylight.local). +You can try to reach the web UI @ `http://igox-busylight.local`. -| What an neat UI ! :smile: | +| What an ugly UI ! :smile: | |---------------------------| | ![Web UI](img/web-ui.png) | # Stream Deck plug-in -You can download a Stream Deck plugin to control your BusyLight: +You can download a Stream Deck plugin to control your BusyLight [here](streamdeck-plugin/README.md). -[![get it on marketplace](img/elgato-marketplace.png "Get iGoX BusyLight on Marketplace")](https://marketplace.elgato.com/product/igox-busylight-7448a0be-6dd6-4711-ba0d-86c52b9075b9) - - -Or directly from [here](streamdeck-plugin/README.md). +I will (hopefully) publish it to the [Elgato Market Place](https://marketplace.elgato.com/stream-deck/plugins) soon. # BusyLight API ## End points @@ -159,4 +154,4 @@ https://micropython.org https://microdot.readthedocs.io/en/latest/index.html ## JSColor -https://jscolor.com +https://jscolor.com \ No newline at end of file diff --git a/img/busylight-showoff.mp4 b/img/busylight-showoff.mp4 deleted file mode 100644 index 3e45dee..0000000 Binary files a/img/busylight-showoff.mp4 and /dev/null differ diff --git a/img/elgato-marketplace.png b/img/elgato-marketplace.png deleted file mode 100644 index 60b0a12..0000000 Binary files a/img/elgato-marketplace.png and /dev/null differ diff --git a/img/web-ui.png b/img/web-ui.png index e610198..e5193f0 100644 Binary files a/img/web-ui.png and b/img/web-ui.png differ diff --git a/streamdeck-plugin/README.md b/streamdeck-plugin/README.md index b594c6d..134a97d 100644 --- a/streamdeck-plugin/README.md +++ b/streamdeck-plugin/README.md @@ -1,59 +1,4 @@ -# BusyLight Stream Deck plugin - Release notes - -## Version 0.3.1.0 (2024-01-06) - -### Download - -[org.igox.busylight.v0.3.1.0.streamDeckPlugin](download/org.igox.busylight.v0.3.1.0.streamDeckPlugin) - -### Features - -- None added - -### Enhancements - -- Add colored button for "Set color" action. -- Add colored button for "Set brightness" action. -- Update plugin and plugin category icons - -### Fixes - -- None. - -### Bugs & known limitations - -- None known at publication time. - -### Screenshot - -![v0.3.1.0 screenshot](img/v0.3.1.0.png) - -## Version 0.3.0.0 (2024-01-06) - -### Download - -[org.igox.busylight.v0.3.0.0.streamDeckPlugin](download/org.igox.busylight.v0.3.0.0.streamDeckPlugin) - -### Features - -- None added - -### Enhancements - -- Rework icons to comply with plugin guidelines for Elgato Marketplace -- Combine the 3 "status" actions into a single action and having the status be selected with a dropdown - -### Fixes - -- None. - -### Bugs & known limitations - -- None known at publication time. - -### Screenshot - -![v0.3.0.0 screenshot](img/v0.3.0.0.png) +# Release notes ## Version 0.2.0.0 (2024-12-28) diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/brightness/brightness.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/brightness/brightness.png new file mode 100644 index 0000000..c1f28b5 Binary files /dev/null and b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/brightness/brightness.png differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/brightness/brightness@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/brightness/brightness@2x.png new file mode 100644 index 0000000..c1f28b5 Binary files /dev/null and b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/brightness/brightness@2x.png differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/brigthness/brigthness.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/brigthness/brigthness.png deleted file mode 100644 index 1a58795..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/brigthness/brigthness.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/brigthness/brigthness@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/brigthness/brigthness@2x.png deleted file mode 100644 index 1a58795..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/brigthness/brigthness@2x.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/colored/colored.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/colored/colored.png deleted file mode 100644 index 280270d..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/colored/colored.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/colored/colored@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/colored/colored@2x.png deleted file mode 100644 index 280270d..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/colored/colored@2x.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/on/on.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/on/on.png deleted file mode 100644 index 6b4ea24..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/on/on.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/on/on@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/on/on@2x.png deleted file mode 100644 index 6b4ea24..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/on/on@2x.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/color/color.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/color/color.png new file mode 100644 index 0000000..82d3f44 Binary files /dev/null and b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/color/color.png differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/color/color@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/color/color@2x.png new file mode 100644 index 0000000..82d3f44 Binary files /dev/null and b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/color/color@2x.png differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/brightness/brightness.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/brightness/brightness.png deleted file mode 100644 index ecadc7b..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/brightness/brightness.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/brightness/brightness@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/brightness/brightness@2x.png deleted file mode 100644 index e49f4aa..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/brightness/brightness@2x.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/color/color.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/color/color.png deleted file mode 100644 index 5f6bfb8..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/color/color.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/color/color@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/color/color@2x.png deleted file mode 100644 index 5f6bfb8..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/color/color@2x.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/status/status.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/status/status.png deleted file mode 100644 index 37e4696..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/status/status.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/status/status@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/status/status@2x.png deleted file mode 100644 index 37e4696..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/icons/status/status@2x.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/available/available.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/available/available.png similarity index 100% rename from streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/available/available.png rename to streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/available/available.png diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/available/available@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/available/available@2x.png similarity index 100% rename from streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/available/available@2x.png rename to streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/available/available@2x.png diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/away/away.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/away/away.png similarity index 100% rename from streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/away/away.png rename to streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/away/away.png diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/away/away@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/away/away@2x.png similarity index 100% rename from streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/away/away@2x.png rename to streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/away/away@2x.png diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/busy/busy.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/busy/busy.png similarity index 100% rename from streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/busy/busy.png rename to streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/busy/busy.png diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/busy/busy@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/busy/busy@2x.png similarity index 100% rename from streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/busy/busy@2x.png rename to streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/busy/busy@2x.png diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/colored/colored.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/colored/colored.png new file mode 100644 index 0000000..82d3f44 Binary files /dev/null and b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/colored/colored.png differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/colored/colored@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/colored/colored@2x.png new file mode 100644 index 0000000..82d3f44 Binary files /dev/null and b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/colored/colored@2x.png differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/off/off.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/off/off.png similarity index 100% rename from streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/off/off.png rename to streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/off/off.png diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/off/off@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/off/off@2x.png similarity index 100% rename from streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/buttons/off/off@2x.png rename to streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/actions/status/off/off@2x.png diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/category-icon.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/category-icon.png index 0a7bfdc..c9faaa2 100644 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/category-icon.png and b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/category-icon.png differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/category-icon@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/category-icon@2x.png index 9b95bb0..cae11dc 100644 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/category-icon@2x.png and b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/category-icon@2x.png differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/icon.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/icon.png deleted file mode 100644 index e3811f7..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/icon.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/icon@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/icon@2x.png deleted file mode 100644 index e3811f7..0000000 Binary files a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/icon@2x.png and /dev/null differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/marketplace.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/marketplace.png new file mode 100644 index 0000000..ca6226c Binary files /dev/null and b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/marketplace.png differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/marketplace@2x.png b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/marketplace@2x.png new file mode 100644 index 0000000..e1ce3bf Binary files /dev/null and b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/imgs/plugin/marketplace@2x.png differ diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/manifest.json b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/manifest.json index 673f234..854197d 100644 --- a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/manifest.json +++ b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/manifest.json @@ -1,21 +1,69 @@ { "Name": "iGoX BusyLight", - "Version": "0.3.1.0", + "Version": "0.2.0.0", "Author": "iGoX", "$schema": "https://schemas.elgato.com/streamdeck/plugins/manifest.json", "Actions": [ { - "Name": "Set BusyLight status", - "UUID": "org.igox.busylight.status.set", - "Icon": "imgs/actions/icons/status/status", - "Tooltip": "Set BusyLight status", + "Name": "Set status as 'Available'", + "UUID": "org.igox.busylight.status.available", + "Icon": "imgs/actions/status/available/available", + "Tooltip": "Set status as 'Available'", "PropertyInspectorPath": "ui/status-config.html", "Controllers": [ "Keypad" ], "States": [ { - "Image": "imgs/actions/icons/status/status", + "Image": "imgs/actions/status/available/available", + "TitleAlignment": "bottom" + } + ] + }, + { + "Name": "Set status as 'Away'", + "UUID": "org.igox.busylight.status.away", + "Icon": "imgs/actions/status/away/away", + "Tooltip": "Set status as 'Away'", + "PropertyInspectorPath": "ui/status-config.html", + "Controllers": [ + "Keypad" + ], + "States": [ + { + "Image": "imgs/actions/status/away/away", + "TitleAlignment": "bottom" + } + ] + }, + { + "Name": "Set status as 'Busy'", + "UUID": "org.igox.busylight.status.busy", + "Icon": "imgs/actions/status/busy/busy", + "Tooltip": "Set status as 'Busy'", + "PropertyInspectorPath": "ui/status-config.html", + "Controllers": [ + "Keypad" + ], + "States": [ + { + "Image": "imgs/actions/status/busy/busy", + "TitleAlignment": "bottom" + } + ] + }, + { + "Name": "Turn off the BusyLight", + "UUID": "org.igox.busylight.status.off", + "Icon": "imgs/actions/status/off/off", + "Tooltip": "Turn off the BusyLight", + "PropertyInspectorPath": "ui/status-config.html", + "Controllers": [ + "Keypad" + ], + "States": [ + { + "Image": "imgs/actions/status/off/off", "TitleAlignment": "bottom" } ] @@ -23,7 +71,7 @@ { "Name": "Set brightness", "UUID": "org.igox.busylight.brigthness.set", - "Icon": "imgs/actions/icons/brightness/brightness", + "Icon": "imgs/actions/brightness/brightness", "Tooltip": "Set LED brightness", "PropertyInspectorPath": "ui/brightness-config.html", "Controllers": [ @@ -31,7 +79,7 @@ ], "States": [ { - "Image": "imgs/actions/icons/brightness/brightness", + "Image": "imgs/actions/brightness/brightness", "TitleAlignment": "bottom" } ] @@ -39,7 +87,7 @@ { "Name": "Set color", "UUID": "org.igox.busylight.color.set", - "Icon": "imgs/actions/icons/color/color", + "Icon": "imgs/actions/color/color", "Tooltip": "Set BusyLight displayed color", "PropertyInspectorPath": "ui/color-config.html", "Controllers": [ @@ -47,17 +95,17 @@ ], "States": [ { - "Image": "imgs/actions/icons/color/color", + "Image": "imgs/actions/color/color", "TitleAlignment": "bottom" } ] } ], "Category": "iGoX BusyLight", - "CategoryIcon": "imgs/plugin/category-icon", + "CategoryIcon": "imgs/plugin/marketplace", "CodePath": "bin/plugin.js", "Description": "Control your DIY BusyLight (https://github.com/igox/busylight) from your Stream Deck", - "Icon": "imgs/plugin/icon", + "Icon": "imgs/plugin/marketplace", "SDKVersion": 2, "Software": { "MinimumVersion": "6.4" diff --git a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/ui/status-config.html b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/ui/status-config.html index cc2cfb2..409695d 100644 --- a/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/ui/status-config.html +++ b/streamdeck-plugin/busylight/org.igox.busylight.sdPlugin/ui/status-config.html @@ -25,14 +25,5 @@ value="getGlobalSettings()"> - - - - - - - - - \ No newline at end of file diff --git a/streamdeck-plugin/busylight/src/actions/set-brightness.ts b/streamdeck-plugin/busylight/src/actions/set-brightness.ts index 4821fc7..115026c 100644 --- a/streamdeck-plugin/busylight/src/actions/set-brightness.ts +++ b/streamdeck-plugin/busylight/src/actions/set-brightness.ts @@ -1,4 +1,4 @@ -import streamDeck, { action, DidReceiveSettingsEvent, WillAppearEvent, KeyDownEvent, PropertyInspectorDidAppearEvent, SingletonAction } from "@elgato/streamdeck"; +import streamDeck, { action, DidReceiveSettingsEvent, WillAppearEvent, KeyDownEvent, SingletonAction } from "@elgato/streamdeck"; @action({ UUID: "org.igox.busylight.brigthness.set" }) export class SetBrightness extends SingletonAction { @@ -25,13 +25,7 @@ export class SetBrightness extends SingletonAction { const { settings } = ev.payload; await ev.action.setSettings(settings); - await ev.action.setTitle(`${settings.brightness}%`); - } - - override async onPropertyInspectorDidAppear(ev: PropertyInspectorDidAppearEvent): Promise { - streamDeck.logger.debug(`>>> Received onPropertyInspectorDidAppear. Setting action icon <<<`); - - await ev.action.setImage(`imgs/actions/buttons/brigthness/brigthness.png`); + await ev.action.setTitle(`${settings.brightness} %`); } } diff --git a/streamdeck-plugin/busylight/src/actions/set-color.ts b/streamdeck-plugin/busylight/src/actions/set-color.ts index b1839c7..6e6d19f 100644 --- a/streamdeck-plugin/busylight/src/actions/set-color.ts +++ b/streamdeck-plugin/busylight/src/actions/set-color.ts @@ -1,4 +1,4 @@ -import streamDeck, { action, JsonObject, KeyDownEvent, DidReceiveSettingsEvent, PropertyInspectorDidAppearEvent, SingletonAction } from "@elgato/streamdeck"; +import streamDeck, { action, JsonObject, KeyDownEvent, DidReceiveSettingsEvent, SingletonAction } from "@elgato/streamdeck"; @action({ UUID: "org.igox.busylight.color.set" }) export class SetColor extends SingletonAction { @@ -18,12 +18,6 @@ export class SetColor extends SingletonAction { const { settings } = ev.payload; await ev.action.setSettings(settings); } - - override async onPropertyInspectorDidAppear(ev: PropertyInspectorDidAppearEvent): Promise { - streamDeck.logger.debug(`>>> Color button property inspector diplayed! <<<`); - - await ev.action.setImage(`imgs/actions/buttons/colored/colored.png`); - } } function hexToRgb(hex: string): { r: number, g: number, b: number } { diff --git a/streamdeck-plugin/busylight/src/actions/set-status.ts b/streamdeck-plugin/busylight/src/actions/set-status.ts index 59bd9d7..bf90212 100644 --- a/streamdeck-plugin/busylight/src/actions/set-status.ts +++ b/streamdeck-plugin/busylight/src/actions/set-status.ts @@ -1,21 +1,31 @@ -import streamDeck, { action, KeyDownEvent, SingletonAction, DidReceiveSettingsEvent } from "@elgato/streamdeck"; +import streamDeck, { action, KeyDownEvent, SingletonAction } from "@elgato/streamdeck"; -@action({ UUID: "org.igox.busylight.status.set" }) -export class SetStatus extends SingletonAction { - override async onKeyDown(ev: KeyDownEvent): Promise { - const { settings } = ev.payload; - settings.status ??= 'available'; - setStatus(settings.status); +@action({ UUID: "org.igox.busylight.status.available" }) +export class SetStatusAvailable extends SingletonAction { + override async onKeyDown(ev: KeyDownEvent): Promise { + setStatus('available'); } +} - override async onDidReceiveSettings(ev: DidReceiveSettingsEvent): Promise { - const { settings } = ev.payload; - let status = settings.status; - streamDeck.logger.debug(`>>> Config status changed to: ${status} <<<`); - - await ev.action.setImage(`imgs/actions/buttons/${status}/${status}.png`); +@action({ UUID: "org.igox.busylight.status.busy" }) +export class SetStatusBusy extends SingletonAction { + override async onKeyDown(ev: KeyDownEvent): Promise { + setStatus('busy'); + } +} - } +@action({ UUID: "org.igox.busylight.status.away" }) +export class SetStatusAway extends SingletonAction { + override async onKeyDown(ev: KeyDownEvent): Promise { + setStatus('away'); + } +} + +@action({ UUID: "org.igox.busylight.status.off" }) +export class SetStatusOff extends SingletonAction { + override async onKeyDown(ev: KeyDownEvent): Promise { + setStatus('off'); + } } async function setStatus(status: string) { @@ -33,8 +43,4 @@ async function setStatus(status: string) { }) .then(response => response.json()) .then(data => streamDeck.logger.debug(data)); -} - -type statusSettings = { - status?: string; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/streamdeck-plugin/busylight/src/plugin.ts b/streamdeck-plugin/busylight/src/plugin.ts index 98e70d5..a59808e 100644 --- a/streamdeck-plugin/busylight/src/plugin.ts +++ b/streamdeck-plugin/busylight/src/plugin.ts @@ -1,6 +1,7 @@ import streamDeck, { LogLevel, SingletonAction, action, type DidReceiveSettingsEvent } from "@elgato/streamdeck"; -import { SetStatus} from "./actions/set-status"; +//import { IncrementCounter } from "./actions/increment-counter"; +import { SetStatusAvailable, SetStatusBusy, SetStatusAway, SetStatusOff } from "./actions/set-status"; import { SetBrightness } from "./actions/set-brightness"; import { SetColor } from "./actions/set-color"; @@ -8,7 +9,10 @@ import { SetColor } from "./actions/set-color"; streamDeck.logger.setLevel(LogLevel.INFO); // Register the actions. -streamDeck.actions.registerAction(new SetStatus()); +streamDeck.actions.registerAction(new SetStatusAvailable()); +streamDeck.actions.registerAction(new SetStatusBusy()); +streamDeck.actions.registerAction(new SetStatusAway()); +streamDeck.actions.registerAction(new SetStatusOff()); streamDeck.actions.registerAction(new SetBrightness()); streamDeck.actions.registerAction(new SetColor()); diff --git a/streamdeck-plugin/download/org.igox.busylight.v0.3.0.0.streamDeckPlugin b/streamdeck-plugin/download/org.igox.busylight.v0.3.0.0.streamDeckPlugin deleted file mode 100644 index 8ce2639..0000000 Binary files a/streamdeck-plugin/download/org.igox.busylight.v0.3.0.0.streamDeckPlugin and /dev/null differ diff --git a/streamdeck-plugin/download/org.igox.busylight.v0.3.1.0.streamDeckPlugin b/streamdeck-plugin/download/org.igox.busylight.v0.3.1.0.streamDeckPlugin deleted file mode 100644 index 88571e2..0000000 Binary files a/streamdeck-plugin/download/org.igox.busylight.v0.3.1.0.streamDeckPlugin and /dev/null differ diff --git a/streamdeck-plugin/img/v0.1.0.0.png b/streamdeck-plugin/img/v0.1.0.0.png index 434937b..dea12bc 100644 Binary files a/streamdeck-plugin/img/v0.1.0.0.png and b/streamdeck-plugin/img/v0.1.0.0.png differ diff --git a/streamdeck-plugin/img/v0.2.0.0.png b/streamdeck-plugin/img/v0.2.0.0.png index 3bda0c7..6cca3df 100644 Binary files a/streamdeck-plugin/img/v0.2.0.0.png and b/streamdeck-plugin/img/v0.2.0.0.png differ diff --git a/streamdeck-plugin/img/v0.3.0.0.png b/streamdeck-plugin/img/v0.3.0.0.png deleted file mode 100644 index 249e53e..0000000 Binary files a/streamdeck-plugin/img/v0.3.0.0.png and /dev/null differ diff --git a/streamdeck-plugin/img/v0.3.1.0.png b/streamdeck-plugin/img/v0.3.1.0.png deleted file mode 100644 index 9d5e673..0000000 Binary files a/streamdeck-plugin/img/v0.3.1.0.png and /dev/null differ